summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cvsignore29
-rw-r--r--.gitattributes1
-rw-r--r--.gitignore39
-rw-r--r--CONFORMANCE30
-rw-r--r--ChangeLog4566
-rw-r--r--FAQ2
-rw-r--r--FAQ.in1
-rw-r--r--Makeconfig32
-rw-r--r--Makefile80
-rw-r--r--Makerules3
-rw-r--r--NEWS112
-rw-r--r--README5
-rw-r--r--README.template93
-rw-r--r--Versions.def5
-rw-r--r--aclocal.m42
-rw-r--r--argp/argp.h6
-rw-r--r--assert/.cvsignore6
-rw-r--r--assert/assert-perr.c10
-rw-r--r--assert/assert.c11
-rw-r--r--bits/confname.h81
-rw-r--r--bits/environments.h28
-rw-r--r--bits/poll.h6
-rw-r--r--bits/resource.h3
-rw-r--r--bits/termios.h4
-rw-r--r--catgets/gencat.c4
-rw-r--r--config.h.in12
-rw-r--r--config.make.in11
-rwxr-xr-xconfigure5945
-rw-r--r--configure.in174
-rw-r--r--conform/conformtest.pl62
-rw-r--r--conform/data/complex.h-data2
-rw-r--r--conform/data/ctype.h-data22
-rw-r--r--conform/data/dirent.h-data13
-rw-r--r--conform/data/errno.h-data5
-rw-r--r--conform/data/fcntl.h-data31
-rw-r--r--conform/data/fmtmsg.h-data2
-rw-r--r--conform/data/fnmatch.h-data2
-rw-r--r--conform/data/ftw.h-data2
-rw-r--r--conform/data/glob.h-data2
-rw-r--r--conform/data/grp.h-data5
-rw-r--r--conform/data/iconv.h-data3
-rw-r--r--conform/data/inttypes.h-data4
-rw-r--r--conform/data/langinfo.h-data8
-rw-r--r--conform/data/libgen.h-data2
-rw-r--r--conform/data/limits.h-data8
-rw-r--r--conform/data/locale.h-data25
-rw-r--r--conform/data/math.h-data33
-rw-r--r--conform/data/monetary.h-data6
-rw-r--r--conform/data/mqueue.h-data10
-rw-r--r--conform/data/ndbm.h-data2
-rw-r--r--conform/data/netdb.h-data2
-rw-r--r--conform/data/pthread.h-data15
-rw-r--r--conform/data/pwd.h-data5
-rw-r--r--conform/data/regex.h-data2
-rw-r--r--conform/data/sched.h-data6
-rw-r--r--conform/data/search.h-data2
-rw-r--r--conform/data/semaphore.h-data2
-rw-r--r--conform/data/setjmp.h-data4
-rw-r--r--conform/data/signal.h-data43
-rw-r--r--conform/data/spawn.h-data6
-rw-r--r--conform/data/stdio.h-data45
-rw-r--r--conform/data/stdlib.h-data49
-rw-r--r--conform/data/string.h-data28
-rw-r--r--conform/data/strings.h-data13
-rw-r--r--conform/data/sys/ipc.h-data2
-rw-r--r--conform/data/sys/msg.h-data2
-rw-r--r--conform/data/sys/resource.h-data2
-rw-r--r--conform/data/sys/select.h-data12
-rw-r--r--conform/data/sys/sem.h-data2
-rw-r--r--conform/data/sys/shm.h-data2
-rw-r--r--conform/data/sys/socket.h-data8
-rw-r--r--conform/data/sys/stat.h-data44
-rw-r--r--conform/data/sys/time.h-data2
-rw-r--r--conform/data/sys/types.h-data9
-rw-r--r--conform/data/sys/uio.h-data2
-rw-r--r--conform/data/sys/wait.h-data8
-rw-r--r--conform/data/syslog.h-data2
-rw-r--r--conform/data/tar.h-data4
-rw-r--r--conform/data/termios.h-data15
-rw-r--r--conform/data/tgmath.h-data33
-rw-r--r--conform/data/time.h-data20
-rw-r--r--conform/data/ulimit.h-data2
-rw-r--r--conform/data/unistd.h-data134
-rw-r--r--conform/data/utmpx.h-data2
-rw-r--r--conform/data/wchar.h-data58
-rw-r--r--conform/data/wctype.h-data22
-rw-r--r--conform/data/wordexp.h-data2
-rw-r--r--crypt/Makefile19
-rw-r--r--crypt/md5-crypt.c138
-rw-r--r--crypt/sha256-crypt.c149
-rw-r--r--crypt/sha256test.c12
-rw-r--r--crypt/sha512-crypt.c149
-rw-r--r--csu/.cvsignore7
-rw-r--r--csu/.gitignore1
-rw-r--r--csu/elf-init.c47
-rw-r--r--csu/libc-start.c10
-rw-r--r--csu/libc-tls.c9
-rw-r--r--csu/version.c4
-rw-r--r--ctype/.cvsignore6
-rw-r--r--ctype/ctype.h10
-rw-r--r--debug/Makefile12
-rw-r--r--debug/Versions3
-rwxr-xr-xdebug/catchsegv.sh4
-rw-r--r--debug/longjmp_chk.c (renamed from sysdeps/alpha/fpu/s_fabsf.c)23
-rw-r--r--debug/pcprofiledump.c19
-rw-r--r--debug/tst-longjmp_chk.c86
-rw-r--r--debug/tst-longjmp_chk2.c114
-rw-r--r--debug/vasprintf_chk.c6
-rw-r--r--debug/vsnprintf_chk.c6
-rw-r--r--debug/vsprintf_chk.c6
-rwxr-xr-xdebug/xtrace.sh10
-rw-r--r--dirent/.cvsignore6
-rw-r--r--dirent/alphasort.c7
-rw-r--r--dirent/alphasort64.c7
-rw-r--r--dirent/dirent.h85
-rw-r--r--dirent/scandir.c7
-rw-r--r--dirent/scandir64.c5
-rw-r--r--dirent/versionsort.c7
-rw-r--r--dirent/versionsort64.c7
-rw-r--r--dlfcn/dlfcn.h5
-rw-r--r--elf/.cvsignore6
-rw-r--r--elf/Makefile245
-rw-r--r--elf/check-execstack.c158
-rw-r--r--elf/dl-addr.c4
-rw-r--r--elf/dl-caller.c4
-rw-r--r--elf/dl-close.c16
-rw-r--r--elf/dl-fini.c4
-rw-r--r--elf/dl-iteratephdr.c4
-rw-r--r--elf/dl-libc.c4
-rw-r--r--elf/dl-load.c31
-rw-r--r--elf/dl-lookup.c417
-rw-r--r--elf/dl-minimal.c14
-rw-r--r--elf/dl-misc.c78
-rw-r--r--elf/dl-object.c8
-rw-r--r--elf/dl-open.c103
-rw-r--r--elf/dl-profile.c53
-rw-r--r--elf/dl-reloc.c22
-rw-r--r--elf/dl-runtime.c43
-rw-r--r--elf/dl-scope.c (renamed from sysdeps/unix/sysv/linux/paccept.c)66
-rw-r--r--elf/dl-support.c9
-rw-r--r--elf/dl-sym.c14
-rw-r--r--elf/dl-sysdep.c79
-rw-r--r--elf/do-lookup.h269
-rw-r--r--elf/dynamic-link.h15
-rw-r--r--elf/elf.h132
-rw-r--r--elf/ifuncdep1.c3
-rw-r--r--elf/ifuncdep1pic.c3
-rw-r--r--elf/ifuncdep2.c50
-rw-r--r--elf/ifuncdep2pic.c3
-rw-r--r--elf/ifuncdep5.c3
-rw-r--r--elf/ifuncdep5pic.c3
-rw-r--r--elf/ifuncmain1.c64
-rw-r--r--elf/ifuncmain1pic.c3
-rw-r--r--elf/ifuncmain1picstatic.c3
-rw-r--r--elf/ifuncmain1pie.c3
-rw-r--r--elf/ifuncmain1static.c3
-rw-r--r--elf/ifuncmain1staticpic.c3
-rw-r--r--elf/ifuncmain1staticpie.c3
-rw-r--r--elf/ifuncmain1vis.c87
-rw-r--r--elf/ifuncmain1vispic.c3
-rw-r--r--elf/ifuncmain1vispie.c3
-rw-r--r--elf/ifuncmain2.c14
-rw-r--r--elf/ifuncmain2pic.c3
-rw-r--r--elf/ifuncmain2picstatic.c3
-rw-r--r--elf/ifuncmain2static.c3
-rw-r--r--elf/ifuncmain3.c129
-rw-r--r--elf/ifuncmain4.c4
-rw-r--r--elf/ifuncmain4picstatic.c3
-rw-r--r--elf/ifuncmain4static.c3
-rw-r--r--elf/ifuncmain5.c38
-rw-r--r--elf/ifuncmain5pic.c3
-rw-r--r--elf/ifuncmain5picstatic.c3
-rw-r--r--elf/ifuncmain5pie.c3
-rw-r--r--elf/ifuncmain5static.c3
-rw-r--r--elf/ifuncmain5staticpic.c3
-rw-r--r--elf/ifuncmain6pie.c64
-rw-r--r--elf/ifuncmain7.c71
-rw-r--r--elf/ifuncmain7pic.c7
-rw-r--r--elf/ifuncmain7picstatic.c7
-rw-r--r--elf/ifuncmain7pie.c7
-rw-r--r--elf/ifuncmain7static.c7
-rw-r--r--elf/ifuncmod1.c91
-rw-r--r--elf/ifuncmod3.c7
-rw-r--r--elf/ifuncmod5.c55
-rw-r--r--elf/ifuncmod6.c19
-rw-r--r--elf/ldconfig.c26
-rw-r--r--elf/ldd.bash.in10
-rw-r--r--elf/rtld.c104
-rw-r--r--elf/sln.c52
-rw-r--r--elf/sprof.c99
-rw-r--r--elf/tst-audit3.c20
-rw-r--r--elf/tst-audit4.c35
-rw-r--r--elf/tst-audit5.c21
-rw-r--r--elf/tst-audit6.c28
-rw-r--r--elf/tst-audit7.c1
-rw-r--r--elf/tst-auditmod3a.c24
-rw-r--r--elf/tst-auditmod3b.c156
-rw-r--r--elf/tst-auditmod4a.c48
-rw-r--r--elf/tst-auditmod4b.c206
-rw-r--r--elf/tst-auditmod5a.c46
-rw-r--r--elf/tst-auditmod5b.c178
-rw-r--r--elf/tst-auditmod6a.c46
-rw-r--r--elf/tst-auditmod6b.c220
-rw-r--r--elf/tst-auditmod6c.c225
-rw-r--r--elf/tst-auditmod7a.c1
-rw-r--r--elf/tst-auditmod7b.c218
-rw-r--r--elf/tst-execstack.c2
-rw-r--r--elf/tst-unique1.c76
-rw-r--r--elf/tst-unique1mod1.c21
-rw-r--r--elf/tst-unique1mod2.c20
-rw-r--r--elf/tst-unique2.c32
-rw-r--r--elf/tst-unique2mod1.c13
-rw-r--r--elf/tst-unique2mod2.c20
-rw-r--r--gmon/.cvsignore6
-rw-r--r--gmon/gmon.c52
-rw-r--r--gnulib/.cvsignore6
-rw-r--r--grp/.cvsignore6
-rw-r--r--grp/compat-initgroups.c33
-rw-r--r--grp/grp.h6
-rw-r--r--gshadow/Makefile (renamed from nptl/sysdeps/alpha/Makefile)31
-rw-r--r--gshadow/Versions21
-rw-r--r--gshadow/fgetsgent.c88
-rw-r--r--gshadow/fgetsgent_r.c76
-rw-r--r--gshadow/getsgent.c (renamed from sysdeps/alpha/dl-tls.h)19
-rw-r--r--gshadow/getsgent_r.c (renamed from sysdeps/alpha/fpu/fegetexcept.c)22
-rw-r--r--gshadow/getsgnam.c (renamed from sysdeps/alpha/fpu/fegetround.c)21
-rw-r--r--gshadow/getsgnam_r.c (renamed from sysdeps/alpha/alphaev6/fpu/e_sqrtf.S)36
-rw-r--r--gshadow/gshadow.h131
-rw-r--r--gshadow/putsgent.c71
-rw-r--r--gshadow/sgetsgent.c78
-rw-r--r--gshadow/sgetsgent_r.c75
-rw-r--r--gshadow/tst-gshadow.c141
-rw-r--r--hesiod/nss_hesiod/hesiod-grp.c8
-rw-r--r--hurd/.cvsignore6
-rw-r--r--hurd/hurdioctl.c24
-rw-r--r--hurd/hurdsig.c1
-rw-r--r--hurd/report-wait.c4
-rw-r--r--iconv/Makefile5
-rw-r--r--iconv/gconv_simple.c6
-rw-r--r--iconv/gconv_trans.c7
-rw-r--r--iconv/iconv_prog.c4
-rw-r--r--iconv/iconvconfig.c4
-rw-r--r--iconv/tst-iconv4.c65
-rw-r--r--iconvdata/Makefile1
-rw-r--r--iconvdata/iso646.c2
-rw-r--r--iconvdata/sjis.c28
-rw-r--r--include/alloca.h13
-rw-r--r--include/atomic.h69
-rw-r--r--include/bits/setjmp2.h1
-rw-r--r--include/dirent.h8
-rw-r--r--include/features.h46
-rw-r--r--include/gshadow.h15
-rw-r--r--include/inline-hashtab.h72
-rw-r--r--include/libc-symbols.h42
-rw-r--r--include/link.h8
-rw-r--r--include/malloc.h13
-rw-r--r--include/math.h3
-rw-r--r--include/rpc/auth.h2
-rw-r--r--include/stdio.h8
-rw-r--r--include/stdlib.h10
-rw-r--r--include/unistd.h6
-rw-r--r--inet/.cvsignore6
-rw-r--r--inet/Makefile5
-rw-r--r--inet/getnameinfo.c3
-rw-r--r--inet/inet6_option.c5
-rw-r--r--inet/inet6_rth.c9
-rw-r--r--inet/netinet/icmp6.h4
-rw-r--r--inet/rcmd.c21
-rw-r--r--inet/rexec.c13
-rw-r--r--inet/tst-getni1.c36
-rw-r--r--inet/tst-getni2.c41
-rw-r--r--inet/tst-inet6_rth.c188
-rw-r--r--intl/.cvsignore6
-rw-r--r--intl/dcigettext.c15
-rw-r--r--io/.cvsignore6
-rw-r--r--io/fcntl.h83
-rw-r--r--io/sys/stat.h22
-rw-r--r--libio/.cvsignore8
-rw-r--r--libio/Makefile5
-rw-r--r--libio/bug-wsetpos.c75
-rw-r--r--libio/fileops.c6
-rw-r--r--libio/fmemopen.c4
-rw-r--r--libio/iofflush.c1
-rw-r--r--libio/ioputs.c5
-rw-r--r--libio/iovsprintf.c8
-rw-r--r--libio/iovsscanf.c6
-rw-r--r--libio/libio.h14
-rw-r--r--libio/oldtmpfile.c4
-rw-r--r--libio/stdio.h30
-rw-r--r--libio/strfile.h4
-rw-r--r--libio/tst-fgetwc.c52
-rw-r--r--libio/tst-fgetwc.input2
-rw-r--r--libio/tst-widetext.input41
-rw-r--r--libio/vasprintf.c7
-rw-r--r--libio/vsnprintf.c6
-rw-r--r--libio/wfileops.c167
-rw-r--r--locale/.cvsignore6
-rw-r--r--locale/C-address.c4
-rw-r--r--locale/C-collate.c4
-rw-r--r--locale/C-ctype.c8
-rw-r--r--locale/C-identification.c4
-rw-r--r--locale/C-measurement.c4
-rw-r--r--locale/C-messages.c4
-rw-r--r--locale/C-monetary.c4
-rw-r--r--locale/C-name.c4
-rw-r--r--locale/C-numeric.c4
-rw-r--r--locale/C-paper.c4
-rw-r--r--locale/C-telephone.c4
-rw-r--r--locale/C-time.c8
-rw-r--r--locale/Makefile6
-rw-r--r--locale/duplocale.c6
-rw-r--r--locale/findlocale.c33
-rw-r--r--locale/global-locale.c4
-rw-r--r--locale/iso-639.def6
-rw-r--r--locale/langinfo.h10
-rw-r--r--locale/loadarchive.c6
-rw-r--r--locale/loadlocale.c12
-rw-r--r--locale/locale.h6
-rw-r--r--locale/localeinfo.h56
-rw-r--r--locale/locarchive.h5
-rw-r--r--locale/nl_langinfo_l.c4
-rw-r--r--locale/programs/ld-address.c4
-rw-r--r--locale/programs/ld-collate.c59
-rw-r--r--locale/programs/ld-ctype.c27
-rw-r--r--locale/programs/locale-spec.c7
-rw-r--r--locale/programs/locale.c30
-rw-r--r--locale/programs/localedef.c4
-rw-r--r--locale/programs/locarchive.c180
-rw-r--r--locale/setlocale.c14
-rw-r--r--locale/tst-duplocale.c14
-rw-r--r--locale/tst-locname.c20
-rw-r--r--locale/xlocale.c4
-rw-r--r--locale/xlocale.h7
-rw-r--r--localedata/ChangeLog242
-rw-r--r--localedata/Makefile4
-rw-r--r--localedata/SUPPORTED6
-rw-r--r--localedata/charmaps/UTF-870
-rw-r--r--localedata/locales/POSIX4
-rw-r--r--localedata/locales/as_IN6
-rw-r--r--localedata/locales/ast_ES1
-rw-r--r--localedata/locales/bn_BD18
-rw-r--r--localedata/locales/crh_UA37
-rw-r--r--localedata/locales/cs_CZ6
-rw-r--r--localedata/locales/csb_PL2
-rw-r--r--localedata/locales/da_DK6
-rw-r--r--localedata/locales/de_AT3
-rw-r--r--localedata/locales/de_DE6
-rw-r--r--localedata/locales/dv_MV180
-rw-r--r--localedata/locales/el_CY8
-rw-r--r--localedata/locales/el_GR4
-rw-r--r--localedata/locales/en_DK53
-rw-r--r--localedata/locales/en_GB2
-rw-r--r--localedata/locales/en_PH6
-rw-r--r--localedata/locales/en_US2
-rw-r--r--localedata/locales/es_CL6
-rw-r--r--localedata/locales/es_CO13
-rw-r--r--localedata/locales/es_MX6
-rw-r--r--localedata/locales/es_US3
-rw-r--r--localedata/locales/es_VE6
-rw-r--r--localedata/locales/et_EE2
-rw-r--r--localedata/locales/fil_PH3
-rw-r--r--localedata/locales/fr_FR6
-rw-r--r--localedata/locales/fur_IT6
-rw-r--r--localedata/locales/fy_DE6
-rw-r--r--localedata/locales/gu_IN17
-rw-r--r--localedata/locales/hi_IN17
-rw-r--r--localedata/locales/hne_IN180
-rw-r--r--localedata/locales/hsb_DE24
-rw-r--r--localedata/locales/ht_HT6
-rw-r--r--localedata/locales/hu_HU6
-rw-r--r--localedata/locales/i18n80
-rw-r--r--localedata/locales/ik_CA4
-rw-r--r--localedata/locales/iso14651_t1_common3864
-rw-r--r--localedata/locales/it_CH56
-rw-r--r--localedata/locales/it_IT56
-rw-r--r--localedata/locales/iu_CA4
-rw-r--r--localedata/locales/kn_IN17
-rw-r--r--localedata/locales/ko_KR4
-rw-r--r--localedata/locales/ks_IN211
-rw-r--r--localedata/locales/ks_IN@devanagari50
-rw-r--r--localedata/locales/li_BE6
-rw-r--r--localedata/locales/li_NL6
-rw-r--r--localedata/locales/mk_MK6
-rw-r--r--localedata/locales/ml_IN18
-rw-r--r--localedata/locales/mr_IN6
-rw-r--r--localedata/locales/mt_MT12
-rw-r--r--localedata/locales/my_MM319
-rw-r--r--localedata/locales/nan_TW@latin205
-rw-r--r--localedata/locales/nb_NO6
-rw-r--r--localedata/locales/nds_DE6
-rw-r--r--localedata/locales/nds_NL6
-rw-r--r--localedata/locales/nl_NL52
-rw-r--r--localedata/locales/nn_NO6
-rw-r--r--localedata/locales/or_IN17
-rw-r--r--localedata/locales/pa_IN23
-rw-r--r--localedata/locales/pl_PL6
-rw-r--r--localedata/locales/ps_AF282
-rw-r--r--localedata/locales/sc_IT6
-rw-r--r--localedata/locales/sd_IN2
-rw-r--r--localedata/locales/sd_IN@devanagari2
-rw-r--r--localedata/locales/shs_CA56
-rw-r--r--localedata/locales/sk_SK10
-rw-r--r--localedata/locales/sr_ME2
-rw-r--r--localedata/locales/sr_RS2
-rw-r--r--localedata/locales/sr_RS@latin2
-rw-r--r--localedata/locales/sv_FI12
-rw-r--r--localedata/locales/ta_IN17
-rw-r--r--localedata/locales/te_IN17
-rw-r--r--localedata/locales/tl_PH4
-rw-r--r--localedata/locales/uk_UA8
-rw-r--r--localedata/locales/ur_IN184
-rw-r--r--localedata/tests-mbwc/tst_types.h2
-rw-r--r--login/Makefile20
-rw-r--r--login/programs/pt_chown.c51
-rw-r--r--login/utmp_file.c64
-rw-r--r--mach/.cvsignore6
-rw-r--r--malloc/Makefile6
-rw-r--r--malloc/Versions3
-rw-r--r--malloc/arena.c210
-rw-r--r--malloc/hooks.c95
-rw-r--r--malloc/malloc.c1574
-rw-r--r--malloc/malloc.h8
-rw-r--r--malloc/memusage.c15
-rwxr-xr-xmalloc/memusage.sh10
-rw-r--r--malloc/memusagestat.c56
-rw-r--r--malloc/mtrace.pl4
-rw-r--r--malloc/obstack.h4
-rw-r--r--manual/.cvsignore14
-rw-r--r--manual/.gitignore29
-rw-r--r--manual/charset.texi2
-rw-r--r--manual/errno.texi6
-rw-r--r--manual/install.texi11
-rw-r--r--math/.cvsignore6
-rw-r--r--math/libm-test.inc52
-rw-r--r--math/math.h11
-rw-r--r--math/math_private.h19
-rw-r--r--math/s_fdim.c12
-rw-r--r--math/s_fdimf.c12
-rw-r--r--math/s_fdiml.c12
-rw-r--r--math/s_fma.c4
-rw-r--r--math/s_fmaf.c4
-rw-r--r--math/w_coshl.c4
-rw-r--r--math/w_fmod.c5
-rw-r--r--math/w_fmodf.c8
-rw-r--r--math/w_fmodl.c5
-rw-r--r--misc/.cvsignore6
-rw-r--r--misc/Makefile8
-rw-r--r--misc/Versions6
-rw-r--r--misc/bug-hsearch1.c31
-rw-r--r--misc/hsearch_r.c8
-rw-r--r--misc/mkdtemp.c4
-rw-r--r--misc/mkostemp.c4
-rw-r--r--misc/mkostemp64.c4
-rw-r--r--misc/mkostemps.c44
-rw-r--r--misc/mkostemps64.c41
-rw-r--r--misc/mkstemp.c4
-rw-r--r--misc/mkstemp64.c4
-rw-r--r--misc/mkstemps.c43
-rw-r--r--misc/mkstemps64.c40
-rw-r--r--misc/mktemp.c4
-rw-r--r--misc/preadv.c41
-rw-r--r--misc/preadv64.c41
-rw-r--r--misc/pwritev.c41
-rw-r--r--misc/pwritev64.c41
-rw-r--r--misc/sbrk.c10
-rw-r--r--misc/sys/cdefs.h9
-rw-r--r--misc/sys/select.h4
-rw-r--r--misc/sys/uio.h83
-rw-r--r--nis/nss_compat/compat-initgroups.c200
-rw-r--r--nis/nss_nis/nis-grp.c21
-rw-r--r--nis/nss_nis/nis-hosts.c104
-rw-r--r--nis/nss_nis/nis-network.c2
-rw-r--r--nis/nss_nis/nis-pwd.c4
-rw-r--r--nis/nss_nisplus/nisplus-hosts.c58
-rw-r--r--nis/nss_nisplus/nisplus-network.c2
-rw-r--r--nis/rpcsvc/nislib.h173
-rw-r--r--nptl/ChangeLog565
-rw-r--r--nptl/Makefile18
-rw-r--r--nptl/Versions9
-rw-r--r--nptl/allocatestack.c232
-rw-r--r--nptl/cancellation.c20
-rw-r--r--nptl/descr.h18
-rw-r--r--nptl/libc-cancellation.c99
-rw-r--r--nptl/libc-cleanup.c (renamed from sysdeps/alpha/stackinfo.h)18
-rw-r--r--nptl/nptl-init.c (renamed from nptl/init.c)70
-rw-r--r--nptl/pthreadP.h7
-rw-r--r--nptl/pthread_attr_setschedparam.c8
-rw-r--r--nptl/pthread_cancel.c8
-rw-r--r--nptl/pthread_create.c19
-rw-r--r--nptl/pthread_mutex_consistent.c5
-rw-r--r--nptl/pthread_mutex_lock.c99
-rw-r--r--nptl/pthread_mutex_unlock.c70
-rw-r--r--nptl/pthread_mutexattr_getrobust.c5
-rw-r--r--nptl/pthread_mutexattr_setrobust.c5
-rw-r--r--nptl/pthread_rwlock_init.c17
-rw-r--r--nptl/sem_open.c19
-rw-r--r--nptl/sysdeps/alpha/elf/pt-initfini.c89
-rw-r--r--nptl/sysdeps/alpha/pthread_spin_lock.S45
-rw-r--r--nptl/sysdeps/alpha/pthread_spin_trylock.S46
-rw-r--r--nptl/sysdeps/alpha/pthreaddef.h38
-rw-r--r--nptl/sysdeps/alpha/tcb-offsets.sym14
-rw-r--r--nptl/sysdeps/alpha/tls.h149
-rw-r--r--nptl/sysdeps/i386/tls.h17
-rw-r--r--nptl/sysdeps/pthread/bits/libc-lock.h2
-rw-r--r--nptl/sysdeps/pthread/bits/sigthread.h8
-rw-r--r--[-rwxr-xr-x]nptl/sysdeps/pthread/configure68
-rw-r--r--nptl/sysdeps/pthread/librt-cancellation.c91
-rw-r--r--nptl/sysdeps/pthread/list.h15
-rw-r--r--nptl/sysdeps/pthread/pthread.h54
-rw-r--r--nptl/sysdeps/pthread/unwind-forcedunwind.c66
-rw-r--r--nptl/sysdeps/pthread/unwind-resume.c5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/Makefile2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/Versions13
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/aio_cancel.c33
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h100
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h168
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/clone.S9
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/createthread.c23
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h280
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S43
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c96
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/sem_post.c5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h177
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/timer_create.c1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/timer_delete.c1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/timer_getoverr.c1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/timer_gettime.c1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/timer_settime.c1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/vfork.S46
-rw-r--r--nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h80
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h55
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S98
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S84
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S58
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S321
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S294
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S18
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h11
-rw-r--r--nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h9
-rw-r--r--nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c8
-rw-r--r--nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h13
-rw-r--r--nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.sym1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c83
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h9
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c10
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c8
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S117
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h8
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c21
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h8
-rw-r--r--nptl/sysdeps/unix/sysv/linux/timer_create.c3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S116
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S (renamed from sysdeps/alpha/gccframe.h)10
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S22
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S58
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h13
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S78
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S28
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S49
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S775
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S448
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S128
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S73
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S73
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S366
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S185
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h55
-rw-r--r--nptl/sysdeps/x86_64/configure36
-rw-r--r--nptl/sysdeps/x86_64/configure.in23
-rw-r--r--nptl/sysdeps/x86_64/tcb-offsets.sym11
-rw-r--r--nptl/sysdeps/x86_64/tls.h99
-rw-r--r--nptl/tst-cond11.c16
-rw-r--r--nptl/tst-sem11.c18
-rw-r--r--nptl/tst-sem13.c46
-rw-r--r--nptl/tst-sem5.c16
-rw-r--r--nptl_db/ChangeLog33
-rw-r--r--nptl_db/Makefile12
-rw-r--r--nptl_db/db-symbols.awk45
-rw-r--r--nptl_db/db-symbols.h56
-rw-r--r--nptl_db/td_symbol_list.c36
-rw-r--r--nptl_db/td_ta_map_lwp2thr.c14
-rw-r--r--nptl_db/td_thr_get_info.c3
-rw-r--r--nscd/Makefile11
-rw-r--r--nscd/aicache.c53
-rw-r--r--nscd/cache.c16
-rw-r--r--nscd/connections.c107
-rw-r--r--nscd/dbg_log.c17
-rw-r--r--nscd/grpcache.c32
-rw-r--r--nscd/hstcache.c29
-rw-r--r--nscd/initgrcache.c33
-rw-r--r--nscd/mem.c65
-rw-r--r--nscd/nscd-client.h7
-rw-r--r--nscd/nscd.c35
-rw-r--r--nscd/nscd.h31
-rw-r--r--nscd/nscd_getai.c19
-rw-r--r--nscd/nscd_getgr_r.c5
-rw-r--r--nscd/nscd_gethst_r.c19
-rw-r--r--nscd/nscd_getpw_r.c5
-rw-r--r--nscd/nscd_getserv_r.c5
-rw-r--r--nscd/nscd_helper.c49
-rw-r--r--nscd/nscd_initgroups.c5
-rw-r--r--nscd/pwdcache.c44
-rw-r--r--nscd/selinux.c13
-rw-r--r--nscd/selinux.h5
-rw-r--r--nscd/servicescache.c27
-rw-r--r--nss/Makefile4
-rw-r--r--nss/Versions7
-rw-r--r--nss/getXXbyYY_r.c6
-rw-r--r--nss/getXXent_r.c20
-rw-r--r--nss/getent.c84
-rw-r--r--nss/nss_files/files-hosts.c12
-rw-r--r--nss/nss_files/files-network.c5
-rw-r--r--nss/nss_files/files-parse.c108
-rw-r--r--nss/nss_files/files-sgrp.c (renamed from nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h)38
-rw-r--r--nss/nsswitch.c10
-rw-r--r--nss/nsswitch.conf1
-rw-r--r--nss/sgrp-lookup.c (renamed from sysdeps/alpha/memusage.h)9
-rw-r--r--po/.gitignore (renamed from po/.cvsignore)0
-rw-r--r--po/Makefile3
-rw-r--r--po/bg.po4159
-rw-r--r--po/ca.po1457
-rw-r--r--po/cs.po1673
-rw-r--r--po/da.po8636
-rw-r--r--po/fi.po9002
-rw-r--r--po/fr.po1433
-rw-r--r--po/hu.po9295
-rw-r--r--po/id.po1592
-rw-r--r--po/ko.po1616
-rw-r--r--po/libc.pot1160
-rw-r--r--po/lt.po63
-rw-r--r--po/nl.po1537
-rw-r--r--po/pl.po1654
-rw-r--r--po/ru.po5258
-rw-r--r--po/sv.po1480
-rw-r--r--po/vi.po1459
-rw-r--r--posix/.cvsignore6
-rw-r--r--posix/Makefile12
-rw-r--r--posix/Versions6
-rw-r--r--posix/bits/posix1_lim.h12
-rw-r--r--posix/bug-regex17.c31
-rw-r--r--posix/bug-regex29.c23
-rw-r--r--posix/bug-regex30.c103
-rw-r--r--posix/confstr.c266
-rw-r--r--posix/execvp.c192
-rw-r--r--posix/execvpe.c221
-rw-r--r--posix/getconf.c216
-rw-r--r--posix/getopt.c30
-rw-r--r--posix/getopt.h18
-rw-r--r--posix/getopt1.c11
-rw-r--r--posix/getopt_int.h7
-rw-r--r--posix/glob.h5
-rwxr-xr-xposix/globtest.sh9
-rw-r--r--posix/regcomp.c203
-rw-r--r--posix/regex_internal.c124
-rw-r--r--posix/regex_internal.h6
-rw-r--r--posix/regexec.c161
-rw-r--r--posix/rxspencer/tests4
-rw-r--r--posix/sched.h10
-rw-r--r--posix/spawn.h8
-rw-r--r--posix/sys/types.h11
-rw-r--r--posix/sys/wait.h34
-rw-r--r--posix/sysconf.c12
-rw-r--r--posix/tst-cpucount.c3
-rw-r--r--posix/tst-rfc3484-2.c2
-rw-r--r--posix/tst-rfc3484-3.c2
-rw-r--r--posix/tst-rfc3484.c2
-rw-r--r--posix/tst-sysconf.c2
-rw-r--r--posix/unistd.h111
-rw-r--r--pwd/.cvsignore6
-rw-r--r--resolv/.cvsignore6
-rw-r--r--resolv/arpa/nameser.h2
-rw-r--r--resolv/mapv4v6hostent.h12
-rw-r--r--resolv/netdb.h18
-rw-r--r--resolv/nss_dns/dns-host.c43
-rw-r--r--resolv/res_debug.c2
-rw-r--r--resolv/res_hconf.c2
-rw-r--r--resolv/res_init.c17
-rw-r--r--resolv/res_libc.c5
-rw-r--r--resolv/res_mkquery.c12
-rw-r--r--resolv/res_query.c15
-rw-r--r--resolv/res_send.c243
-rw-r--r--resolv/resolv.h38
-rw-r--r--resource/.cvsignore6
-rwxr-xr-xscripts/check-local-headers.sh5
-rw-r--r--scripts/firstversions.awk31
-rw-r--r--scripts/gen-as-const.awk3
-rw-r--r--scripts/versions.awk8
-rw-r--r--setjmp/.cvsignore6
-rw-r--r--setjmp/Makefile4
-rw-r--r--setjmp/bits/setjmp2.h41
-rw-r--r--setjmp/longjmp.c5
-rw-r--r--setjmp/setjmp.h8
-rw-r--r--shadow/Makefile4
-rw-r--r--shadow/lckpwdf.c5
-rw-r--r--shadow/sgetspent_r.c10
-rw-r--r--shadow/tst-shadow.c84
-rw-r--r--signal/.cvsignore6
-rw-r--r--signal/signal.h34
-rw-r--r--socket/.cvsignore6
-rw-r--r--socket/Makefile2
-rw-r--r--socket/Versions3
-rw-r--r--socket/accept4.c (renamed from socket/paccept.c)11
-rw-r--r--socket/sys/socket.h9
-rw-r--r--soft-fp/double.h7
-rw-r--r--stdio-common/.cvsignore8
-rw-r--r--stdio-common/Makefile6
-rw-r--r--stdio-common/Versions4
-rw-r--r--stdio-common/isoc99_vsscanf.c6
-rw-r--r--stdio-common/printf-parse.h23
-rw-r--r--stdio-common/printf-parsemb.c123
-rw-r--r--stdio-common/printf-prs.c7
-rw-r--r--stdio-common/printf.h49
-rw-r--r--stdio-common/printf_fp.c20
-rw-r--r--stdio-common/printf_fphex.c4
-rw-r--r--stdio-common/psiginfo-data.h50
-rw-r--r--stdio-common/psiginfo-define.h15
-rw-r--r--stdio-common/psiginfo.c184
-rw-r--r--stdio-common/psignal.c4
-rw-r--r--stdio-common/reg-modifier.c202
-rw-r--r--stdio-common/reg-printf.c46
-rw-r--r--stdio-common/reg-type.c62
-rw-r--r--stdio-common/scanf13.c1
-rw-r--r--stdio-common/scanf15.c1
-rw-r--r--stdio-common/scanf17.c1
-rw-r--r--stdio-common/stdio_lim.h.in6
-rw-r--r--stdio-common/tempnam.c4
-rw-r--r--stdio-common/tempname.c5
-rw-r--r--stdio-common/tmpfile.c4
-rw-r--r--stdio-common/tmpnam.c4
-rw-r--r--stdio-common/tmpnam_r.c4
-rw-r--r--stdio-common/tstdiomisc.c132
-rw-r--r--stdio-common/vfprintf.c157
-rw-r--r--stdio-common/vfscanf.c22
-rw-r--r--stdlib/.cvsignore8
-rw-r--r--stdlib/Makefile8
-rw-r--r--stdlib/Versions5
-rw-r--r--stdlib/abort.c6
-rw-r--r--stdlib/at_quick_exit.c (renamed from sysdeps/alpha/elf/start.S)62
-rw-r--r--stdlib/cxa_at_quick_exit.c (renamed from sysdeps/alpha/fpu/ftestexcept.c)21
-rw-r--r--stdlib/cxa_atexit.c30
-rw-r--r--stdlib/cxa_finalize.c12
-rw-r--r--stdlib/exit.c32
-rw-r--r--stdlib/exit.h16
-rw-r--r--stdlib/longlong.h7
-rw-r--r--stdlib/monetary.h6
-rw-r--r--stdlib/on_exit.c4
-rw-r--r--stdlib/quick_exit.c (renamed from sysdeps/unix/sysv/linux/alpha/sizes.h)16
-rw-r--r--stdlib/rand_r.c4
-rw-r--r--stdlib/random_r.c14
-rw-r--r--stdlib/setenv.c29
-rw-r--r--stdlib/stdlib.h129
-rw-r--r--stdlib/strfmon_l.c40
-rw-r--r--stdlib/strtod_l.c55
-rw-r--r--stdlib/strtol_l.c4
-rw-r--r--stdlib/tst-makecontext3.c217
-rw-r--r--stdlib/tst-setcontext.c2
-rw-r--r--stdlib/tst-strtod.c6
-rw-r--r--stdlib/tst-strtol.c438
-rw-r--r--stdlib/tst-strtoll.c225
-rw-r--r--stdlib/tst-unsetenv1.c12
-rw-r--r--string/.cvsignore6
-rw-r--r--string/Makefile6
-rw-r--r--string/bits/string3.h5
-rw-r--r--string/stpncpy.c15
-rw-r--r--string/stratcliff.c68
-rw-r--r--string/strcasestr.c10
-rw-r--r--string/strcoll_l.c4
-rw-r--r--string/string.h236
-rw-r--r--string/strings.h91
-rw-r--r--string/strlen.c52
-rw-r--r--string/strncmp.c12
-rw-r--r--string/strncpy.c9
-rw-r--r--string/strstr.c9
-rw-r--r--string/strverscmp.c63
-rw-r--r--string/strxfrm_l.c7
-rw-r--r--string/test-memchr.c9
-rw-r--r--string/tst-svc.expect2
-rw-r--r--string/tst-svc.input2
-rw-r--r--string/tst-svc2.c62
-rw-r--r--sunrpc/.cvsignore8
-rw-r--r--sunrpc/auth_des.c51
-rw-r--r--sunrpc/auth_none.c51
-rw-r--r--sunrpc/auth_unix.c51
-rw-r--r--sunrpc/authdes_prot.c51
-rw-r--r--sunrpc/authuxprot.c51
-rw-r--r--sunrpc/bindrsvprt.c51
-rw-r--r--sunrpc/clnt_gen.c51
-rw-r--r--sunrpc/clnt_perr.c59
-rw-r--r--sunrpc/clnt_raw.c74
-rw-r--r--sunrpc/clnt_simp.c60
-rw-r--r--sunrpc/clnt_tcp.c58
-rw-r--r--sunrpc/clnt_udp.c58
-rw-r--r--sunrpc/clnt_unix.c54
-rw-r--r--sunrpc/create_xid.c12
-rw-r--r--sunrpc/des_crypt.c60
-rw-r--r--sunrpc/des_soft.c48
-rw-r--r--sunrpc/get_myaddr.c60
-rw-r--r--sunrpc/getrpcport.c56
-rw-r--r--sunrpc/key_call.c51
-rw-r--r--sunrpc/key_prot.c54
-rw-r--r--sunrpc/openchild.c52
-rw-r--r--sunrpc/pm_getmaps.c60
-rw-r--r--sunrpc/pm_getport.c60
-rw-r--r--sunrpc/pmap_clnt.c51
-rw-r--r--sunrpc/pmap_prot.c60
-rw-r--r--sunrpc/pmap_prot2.c60
-rw-r--r--sunrpc/pmap_rmt.c60
-rw-r--r--sunrpc/rpc/auth.h55
-rw-r--r--sunrpc/rpc/auth_unix.h56
-rw-r--r--sunrpc/rpc/clnt.h57
-rw-r--r--sunrpc/rpc/des_crypt.h49
-rw-r--r--sunrpc/rpc/key_prot.h143
-rw-r--r--sunrpc/rpc/netdb.h48
-rw-r--r--sunrpc/rpc/pmap_clnt.h59
-rw-r--r--sunrpc/rpc/pmap_prot.h57
-rw-r--r--sunrpc/rpc/pmap_rmt.h57
-rw-r--r--sunrpc/rpc/rpc.h57
-rw-r--r--sunrpc/rpc/rpc_des.h55
-rw-r--r--sunrpc/rpc/rpc_msg.h58
-rw-r--r--sunrpc/rpc/svc.h60
-rw-r--r--sunrpc/rpc/svc_auth.h56
-rw-r--r--sunrpc/rpc/types.h48
-rw-r--r--sunrpc/rpc/xdr.h56
-rw-r--r--sunrpc/rpc_clntout.c59
-rw-r--r--sunrpc/rpc_cmsg.c59
-rw-r--r--sunrpc/rpc_common.c54
-rw-r--r--sunrpc/rpc_cout.c53
-rw-r--r--sunrpc/rpc_dtable.c51
-rw-r--r--sunrpc/rpc_hout.c53
-rw-r--r--sunrpc/rpc_main.c149
-rw-r--r--sunrpc/rpc_parse.c53
-rw-r--r--sunrpc/rpc_parse.h55
-rw-r--r--sunrpc/rpc_prot.c58
-rw-r--r--sunrpc/rpc_sample.c53
-rw-r--r--sunrpc/rpc_scan.c53
-rw-r--r--sunrpc/rpc_scan.h64
-rw-r--r--sunrpc/rpc_svcout.c53
-rw-r--r--sunrpc/rpc_tblout.c53
-rw-r--r--sunrpc/rpc_util.c53
-rw-r--r--sunrpc/rpc_util.h55
-rw-r--r--sunrpc/rpcinfo.c121
-rw-r--r--sunrpc/rpcsvc/bootparam_prot.x54
-rw-r--r--sunrpc/rpcsvc/key_prot.x115
-rw-r--r--sunrpc/rpcsvc/klm_prot.x57
-rw-r--r--sunrpc/rpcsvc/mount.x48
-rw-r--r--sunrpc/rpcsvc/nfs_prot.x54
-rw-r--r--sunrpc/rpcsvc/rex.x48
-rw-r--r--sunrpc/rpcsvc/rstat.x52
-rw-r--r--sunrpc/rpcsvc/rusers.x49
-rw-r--r--sunrpc/rpcsvc/sm_inter.x58
-rw-r--r--sunrpc/rpcsvc/spray.x56
-rw-r--r--sunrpc/rpcsvc/yppasswd.x56
-rw-r--r--sunrpc/rtime.c55
-rw-r--r--sunrpc/svc.c55
-rw-r--r--sunrpc/svc_auth.c58
-rw-r--r--sunrpc/svc_authux.c56
-rw-r--r--sunrpc/svc_raw.c60
-rw-r--r--sunrpc/svc_run.c49
-rw-r--r--sunrpc/svc_simple.c60
-rw-r--r--sunrpc/svc_tcp.c58
-rw-r--r--sunrpc/svc_udp.c60
-rw-r--r--sunrpc/svc_unix.c54
-rw-r--r--sunrpc/svcauth_des.c52
-rw-r--r--sunrpc/xcrypt.c52
-rw-r--r--sunrpc/xdr.c58
-rw-r--r--sunrpc/xdr_array.c62
-rw-r--r--sunrpc/xdr_float.c58
-rw-r--r--sunrpc/xdr_mem.c55
-rw-r--r--sunrpc/xdr_rec.c56
-rw-r--r--sunrpc/xdr_ref.c62
-rw-r--r--sunrpc/xdr_sizeof.c53
-rw-r--r--sunrpc/xdr_stdio.c54
-rw-r--r--sysdeps/alpha/Implies6
-rw-r--r--sysdeps/alpha/Makefile48
-rw-r--r--sysdeps/alpha/Subdirs1
-rw-r--r--sysdeps/alpha/Versions13
-rw-r--r--sysdeps/alpha/__longjmp.S64
-rw-r--r--sysdeps/alpha/_mcount.S107
-rw-r--r--sysdeps/alpha/add_n.s120
-rw-r--r--sysdeps/alpha/addmul_1.s92
-rw-r--r--sysdeps/alpha/alphaev5/add_n.s148
-rw-r--r--sysdeps/alpha/alphaev5/lshift.s174
-rw-r--r--sysdeps/alpha/alphaev5/rshift.s172
-rw-r--r--sysdeps/alpha/alphaev5/sub_n.s149
-rw-r--r--sysdeps/alpha/alphaev6/Implies1
-rw-r--r--sysdeps/alpha/alphaev6/addmul_1.s479
-rw-r--r--sysdeps/alpha/alphaev6/memchr.S193
-rw-r--r--sysdeps/alpha/alphaev6/memcpy.S256
-rw-r--r--sysdeps/alpha/alphaev6/memset.S224
-rw-r--r--sysdeps/alpha/alphaev6/stxcpy.S328
-rw-r--r--sysdeps/alpha/alphaev6/stxncpy.S403
-rw-r--r--sysdeps/alpha/alphaev67/Implies1
-rw-r--r--sysdeps/alpha/alphaev67/fpu/Implies1
-rw-r--r--sysdeps/alpha/alphaev67/rawmemchr.S93
-rw-r--r--sysdeps/alpha/alphaev67/stpcpy.S54
-rw-r--r--sysdeps/alpha/alphaev67/stpncpy.S116
-rw-r--r--sysdeps/alpha/alphaev67/strcat.S62
-rw-r--r--sysdeps/alpha/alphaev67/strchr.S101
-rw-r--r--sysdeps/alpha/alphaev67/strlen.S61
-rw-r--r--sysdeps/alpha/alphaev67/strncat.S88
-rw-r--r--sysdeps/alpha/alphaev67/strrchr.S117
-rw-r--r--sysdeps/alpha/backtrace.c1
-rw-r--r--sysdeps/alpha/bb_init_func.S87
-rw-r--r--sysdeps/alpha/bits/atomic.h369
-rw-r--r--sysdeps/alpha/bits/endian.h7
-rw-r--r--sysdeps/alpha/bits/link.h69
-rw-r--r--sysdeps/alpha/bits/mathdef.h80
-rw-r--r--sysdeps/alpha/bits/setjmp.h62
-rw-r--r--sysdeps/alpha/bsd-_setjmp.S1
-rw-r--r--sysdeps/alpha/bsd-setjmp.S1
-rw-r--r--sysdeps/alpha/bzero.S120
-rw-r--r--sysdeps/alpha/div.S88
-rw-r--r--sysdeps/alpha/div_libc.h164
-rw-r--r--sysdeps/alpha/divl.S84
-rw-r--r--sysdeps/alpha/divlu.S4
-rw-r--r--sysdeps/alpha/divq.S274
-rw-r--r--sysdeps/alpha/divqu.S257
-rw-r--r--sysdeps/alpha/dl-dtprocnum.h3
-rw-r--r--sysdeps/alpha/dl-machine.h522
-rw-r--r--sysdeps/alpha/dl-sysdep.h24
-rw-r--r--sysdeps/alpha/dl-trampoline.S541
-rwxr-xr-xsysdeps/alpha/elf/configure106
-rw-r--r--sysdeps/alpha/elf/configure.in78
-rw-r--r--sysdeps/alpha/elf/initfini.c110
-rw-r--r--sysdeps/alpha/ffs.S91
-rw-r--r--sysdeps/alpha/ffsll.S1
-rw-r--r--sysdeps/alpha/fpu/Versions23
-rw-r--r--sysdeps/alpha/fpu/bits/fenv.h123
-rw-r--r--sysdeps/alpha/fpu/bits/mathinline.h150
-rw-r--r--sysdeps/alpha/fpu/cabsf.c42
-rw-r--r--sysdeps/alpha/fpu/cargf.c42
-rw-r--r--sysdeps/alpha/fpu/cfloat-compat.h74
-rw-r--r--sysdeps/alpha/fpu/cimagf.c41
-rw-r--r--sysdeps/alpha/fpu/conjf.c43
-rw-r--r--sysdeps/alpha/fpu/crealf.c41
-rw-r--r--sysdeps/alpha/fpu/e_sqrt.c165
-rw-r--r--sysdeps/alpha/fpu/fclrexcpt.c47
-rw-r--r--sysdeps/alpha/fpu/fedisblxcpt.c36
-rw-r--r--sysdeps/alpha/fpu/feenablxcpt.c36
-rw-r--r--sysdeps/alpha/fpu/fegetenv.c47
-rw-r--r--sysdeps/alpha/fpu/feholdexcpt.c34
-rw-r--r--sysdeps/alpha/fpu/fenv_libc.h36
-rw-r--r--sysdeps/alpha/fpu/fesetenv.c57
-rw-r--r--sysdeps/alpha/fpu/feupdateenv.c49
-rw-r--r--sysdeps/alpha/fpu/fgetexcptflg.c44
-rw-r--r--sysdeps/alpha/fpu/fpu_control.h106
-rw-r--r--sysdeps/alpha/fpu/fsetexcptflg.c47
-rw-r--r--sysdeps/alpha/fpu/libm-test-ulps1245
-rw-r--r--sysdeps/alpha/fpu/s_cacosf.c51
-rw-r--r--sysdeps/alpha/fpu/s_cacoshf.c51
-rw-r--r--sysdeps/alpha/fpu/s_casinf.c51
-rw-r--r--sysdeps/alpha/fpu/s_casinhf.c51
-rw-r--r--sysdeps/alpha/fpu/s_catanf.c51
-rw-r--r--sysdeps/alpha/fpu/s_catanhf.c51
-rw-r--r--sysdeps/alpha/fpu/s_ccosf.c51
-rw-r--r--sysdeps/alpha/fpu/s_ccoshf.c51
-rw-r--r--sysdeps/alpha/fpu/s_ceil.c53
-rw-r--r--sysdeps/alpha/fpu/s_ceilf.c45
-rw-r--r--sysdeps/alpha/fpu/s_cexpf.c51
-rw-r--r--sysdeps/alpha/fpu/s_clog10f.c61
-rw-r--r--sysdeps/alpha/fpu/s_clogf.c51
-rw-r--r--sysdeps/alpha/fpu/s_cpowf.c51
-rw-r--r--sysdeps/alpha/fpu/s_cprojf.c51
-rw-r--r--sysdeps/alpha/fpu/s_csinf.c51
-rw-r--r--sysdeps/alpha/fpu/s_csinhf.c51
-rw-r--r--sysdeps/alpha/fpu/s_csqrtf.c51
-rw-r--r--sysdeps/alpha/fpu/s_ctanf.c51
-rw-r--r--sysdeps/alpha/fpu/s_ctanhf.c51
-rw-r--r--sysdeps/alpha/fpu/s_floor.c53
-rw-r--r--sysdeps/alpha/fpu/s_floorf.c45
-rw-r--r--sysdeps/alpha/fpu/s_fmax.S58
-rw-r--r--sysdeps/alpha/fpu/s_fmaxf.S1
-rw-r--r--sysdeps/alpha/fpu/s_fmin.S58
-rw-r--r--sysdeps/alpha/fpu/s_fminf.S1
-rw-r--r--sysdeps/alpha/fpu/s_isnan.c59
-rw-r--r--sysdeps/alpha/fpu/s_isnanf.c1
-rw-r--r--sysdeps/alpha/fpu/s_llrint.c1
-rw-r--r--sysdeps/alpha/fpu/s_llrintf.c1
-rw-r--r--sysdeps/alpha/fpu/s_llround.c1
-rw-r--r--sysdeps/alpha/fpu/s_llroundf.c1
-rw-r--r--sysdeps/alpha/fpu/s_lrint.c48
-rw-r--r--sysdeps/alpha/fpu/s_lround.c48
-rw-r--r--sysdeps/alpha/fpu/s_lroundf.c38
-rw-r--r--sysdeps/alpha/fpu/s_nearbyint.c48
-rw-r--r--sysdeps/alpha/fpu/s_rint.c45
-rw-r--r--sysdeps/alpha/fpu/s_rintf.c37
-rw-r--r--sysdeps/alpha/fpu/s_round.c49
-rw-r--r--sysdeps/alpha/fpu/s_roundf.c44
-rw-r--r--sysdeps/alpha/fpu/s_truncf.c45
-rw-r--r--sysdeps/alpha/hp-timing.h118
-rw-r--r--sysdeps/alpha/htonl.S44
-rw-r--r--sysdeps/alpha/jmpbuf-offsets.h36
-rw-r--r--sysdeps/alpha/jmpbuf-unwind.h48
-rw-r--r--sysdeps/alpha/ldiv.S218
-rw-r--r--sysdeps/alpha/lldiv.S1
-rw-r--r--sysdeps/alpha/lshift.s109
-rw-r--r--sysdeps/alpha/machine-gmon.h26
-rw-r--r--sysdeps/alpha/memchr.S176
-rw-r--r--sysdeps/alpha/memset.S137
-rw-r--r--sysdeps/alpha/mul_1.s85
-rw-r--r--sysdeps/alpha/rawmemchr.S90
-rw-r--r--sysdeps/alpha/reml.S87
-rw-r--r--sysdeps/alpha/remlu.S4
-rw-r--r--sysdeps/alpha/remq.S269
-rw-r--r--sysdeps/alpha/remqu.S272
-rw-r--r--sysdeps/alpha/rshift.s107
-rw-r--r--sysdeps/alpha/setjmp.S120
-rw-r--r--sysdeps/alpha/soft-fp/Makefile10
-rw-r--r--sysdeps/alpha/soft-fp/Versions8
-rw-r--r--sysdeps/alpha/soft-fp/e_sqrtl.c40
-rw-r--r--sysdeps/alpha/soft-fp/local-soft-fp.h44
-rw-r--r--sysdeps/alpha/soft-fp/ots_add.c39
-rw-r--r--sysdeps/alpha/soft-fp/ots_cmp.c64
-rw-r--r--sysdeps/alpha/soft-fp/ots_cmpe.c83
-rw-r--r--sysdeps/alpha/soft-fp/ots_cvtqux.c40
-rw-r--r--sysdeps/alpha/soft-fp/ots_cvtqx.c39
-rw-r--r--sysdeps/alpha/soft-fp/ots_cvttx.c48
-rw-r--r--sysdeps/alpha/soft-fp/ots_cvtxq.c44
-rw-r--r--sysdeps/alpha/soft-fp/ots_cvtxt.c44
-rw-r--r--sysdeps/alpha/soft-fp/ots_div.c39
-rw-r--r--sysdeps/alpha/soft-fp/ots_mul.c39
-rw-r--r--sysdeps/alpha/soft-fp/ots_nintxq.c52
-rw-r--r--sysdeps/alpha/soft-fp/ots_sub.c39
-rw-r--r--sysdeps/alpha/soft-fp/sfp-machine.h94
-rw-r--r--sysdeps/alpha/stpcpy.S56
-rw-r--r--sysdeps/alpha/stpncpy.S107
-rw-r--r--sysdeps/alpha/strcat.S72
-rw-r--r--sysdeps/alpha/strchr.S95
-rw-r--r--sysdeps/alpha/strcmp.S195
-rw-r--r--sysdeps/alpha/strlen.S77
-rw-r--r--sysdeps/alpha/strncat.S95
-rw-r--r--sysdeps/alpha/strncmp.S247
-rw-r--r--sysdeps/alpha/strncpy.S88
-rw-r--r--sysdeps/alpha/strrchr.S111
-rw-r--r--sysdeps/alpha/stxcpy.S307
-rw-r--r--sysdeps/alpha/stxncpy.S363
-rw-r--r--sysdeps/alpha/sub_n.s120
-rw-r--r--sysdeps/alpha/submul_1.s92
-rw-r--r--sysdeps/alpha/udiv_qrnnd.S161
-rw-r--r--sysdeps/generic/dl-irel.h (renamed from sysdeps/alpha/nscd-types.h)9
-rw-r--r--sysdeps/generic/dl-osinfo.h48
-rw-r--r--sysdeps/generic/elf/backtracesyms.c71
-rw-r--r--sysdeps/generic/elf/backtracesymsfd.c58
-rw-r--r--sysdeps/generic/elf/ifunc-sel.h26
-rw-r--r--sysdeps/generic/framestate.c3
-rw-r--r--sysdeps/generic/ldsodefs.h38
-rw-r--r--sysdeps/generic/libgcc_s.h2
-rw-r--r--sysdeps/generic/netinet/ip.h81
-rw-r--r--sysdeps/generic/paths.h1
-rw-r--r--sysdeps/generic/pty-private.h5
-rw-r--r--sysdeps/generic/sysdep.h43
-rw-r--r--sysdeps/gnu/errlist.c8
-rw-r--r--sysdeps/gnu/getutmp.c10
-rw-r--r--sysdeps/gnu/netinet/udp.h12
-rw-r--r--sysdeps/i386/____longjmp_chk.S1
-rw-r--r--sysdeps/i386/__longjmp.S27
-rw-r--r--sysdeps/i386/bits/link.h4
-rw-r--r--[-rwxr-xr-x]sysdeps/i386/configure599
-rw-r--r--sysdeps/i386/configure.in14
-rw-r--r--sysdeps/i386/dl-irel.h (renamed from sysdeps/alpha/fpu/fesetround.c)46
-rw-r--r--sysdeps/i386/dl-machine.h138
-rw-r--r--sysdeps/i386/dl-tlsdesc.S3
-rw-r--r--[-rwxr-xr-x]sysdeps/i386/elf/configure12
-rw-r--r--sysdeps/i386/fpu/bits/mathinline.h6
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps7
-rw-r--r--sysdeps/i386/fpu/s_cos.S27
-rw-r--r--sysdeps/i386/fpu/s_cosf.S27
-rw-r--r--sysdeps/i386/fpu/s_cosl.S29
-rw-r--r--sysdeps/i386/fpu/s_expm1.S6
-rw-r--r--sysdeps/i386/fpu/s_expm1f.S6
-rw-r--r--sysdeps/i386/fpu/s_expm1l.S3
-rw-r--r--sysdeps/i386/fpu/s_sin.S27
-rw-r--r--sysdeps/i386/fpu/s_sinf.S27
-rw-r--r--sysdeps/i386/fpu/s_sinl.S29
-rw-r--r--sysdeps/i386/fpu/s_tan.S27
-rw-r--r--sysdeps/i386/fpu/s_tanf.S27
-rw-r--r--sysdeps/i386/fpu/s_tanl.S29
-rw-r--r--sysdeps/i386/i486/bits/atomic.h31
-rw-r--r--sysdeps/i386/i686/Makefile4
-rw-r--r--sysdeps/i386/i686/bcopy.S3
-rw-r--r--sysdeps/i386/i686/cacheinfo.c9
-rw-r--r--sysdeps/i386/i686/memcpy.S4
-rw-r--r--sysdeps/i386/i686/memmove.S27
-rw-r--r--sysdeps/i386/i686/mempcpy.S4
-rw-r--r--sysdeps/i386/i686/memset.S4
-rw-r--r--sysdeps/i386/i686/multiarch/Makefile19
-rw-r--r--sysdeps/i386/i686/multiarch/bcopy-ssse3-rep.S4
-rw-r--r--sysdeps/i386/i686/multiarch/bcopy-ssse3.S4
-rw-r--r--sysdeps/i386/i686/multiarch/bcopy.S89
-rw-r--r--sysdeps/i386/i686/multiarch/bzero-sse2-rep.S3
-rw-r--r--sysdeps/i386/i686/multiarch/bzero-sse2.S3
-rw-r--r--sysdeps/i386/i686/multiarch/bzero.S97
-rw-r--r--sysdeps/i386/i686/multiarch/ifunc-defines.sym20
-rw-r--r--sysdeps/i386/i686/multiarch/init-arch.c1
-rw-r--r--sysdeps/i386/i686/multiarch/init-arch.h1
-rw-r--r--sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S1785
-rw-r--r--sysdeps/i386/i686/multiarch/memcpy-ssse3.S1737
-rw-r--r--sysdeps/i386/i686/multiarch/memcpy.S90
-rw-r--r--sysdeps/i386/i686/multiarch/memcpy_chk.S64
-rw-r--r--sysdeps/i386/i686/multiarch/memmove-ssse3-rep.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memmove-ssse3.S4
-rw-r--r--sysdeps/i386/i686/multiarch/memmove.S114
-rw-r--r--sysdeps/i386/i686/multiarch/memmove_chk.S112
-rw-r--r--sysdeps/i386/i686/multiarch/mempcpy-ssse3-rep.S4
-rw-r--r--sysdeps/i386/i686/multiarch/mempcpy-ssse3.S4
-rw-r--r--sysdeps/i386/i686/multiarch/mempcpy.S93
-rw-r--r--sysdeps/i386/i686/multiarch/mempcpy_chk.S64
-rw-r--r--sysdeps/i386/i686/multiarch/memset-sse2-rep.S821
-rw-r--r--sysdeps/i386/i686/multiarch/memset-sse2.S867
-rw-r--r--sysdeps/i386/i686/multiarch/memset.S112
-rw-r--r--sysdeps/i386/i686/multiarch/memset_chk.S116
-rw-r--r--sysdeps/i386/i686/multiarch/sched_cpucount.c1
-rw-r--r--sysdeps/i386/i686/multiarch/strcasestr-c.c2
-rw-r--r--sysdeps/i386/i686/multiarch/strcasestr.c1
-rw-r--r--sysdeps/i386/i686/multiarch/strcspn-c.c2
-rw-r--r--sysdeps/i386/i686/multiarch/strcspn.S114
-rw-r--r--sysdeps/i386/i686/multiarch/strlen.S154
-rw-r--r--sysdeps/i386/i686/multiarch/strpbrk-c.c2
-rw-r--r--sysdeps/i386/i686/multiarch/strpbrk.S3
-rw-r--r--sysdeps/i386/i686/multiarch/strspn-c.c2
-rw-r--r--sysdeps/i386/i686/multiarch/strspn.S95
-rw-r--r--sysdeps/i386/i686/multiarch/strstr-c.c13
-rw-r--r--sysdeps/i386/i686/multiarch/strstr.c1
-rw-r--r--sysdeps/i386/stackinfo.h12
-rw-r--r--sysdeps/i386/sysdep.h3
-rw-r--r--sysdeps/ia64/backtrace.c10
-rw-r--r--sysdeps/ia64/bits/link.h4
-rw-r--r--sysdeps/ia64/configure54
-rw-r--r--sysdeps/ia64/configure.in35
-rw-r--r--sysdeps/ia64/elf/configure12
-rw-r--r--sysdeps/ia64/memchr.S26
-rw-r--r--sysdeps/ieee754/dbl-64/s_expm1.c6
-rw-r--r--sysdeps/ieee754/dbl-64/s_sin.c15
-rw-r--r--sysdeps/ieee754/dbl-64/s_tan.c31
-rw-r--r--sysdeps/ieee754/dbl-64/w_exp.c1
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_ceil.c67
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c30
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c39
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_llround.c1
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_lround.c80
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c86
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_rint.c79
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_round.c77
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c68
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c (renamed from sysdeps/alpha/fpu/s_trunc.c)49
-rw-r--r--sysdeps/ieee754/flt-32/s_cosf.c9
-rw-r--r--sysdeps/ieee754/flt-32/s_expm1f.c6
-rw-r--r--sysdeps/ieee754/flt-32/s_sinf.c9
-rw-r--r--sysdeps/ieee754/flt-32/s_tanf.c9
-rw-r--r--sysdeps/ieee754/flt-32/w_expf.c1
-rw-r--r--sysdeps/ieee754/k_standard.c10
-rw-r--r--sysdeps/ieee754/ldbl-128/s_ceill.c4
-rw-r--r--sysdeps/ieee754/ldbl-128/s_cosl.c10
-rw-r--r--sysdeps/ieee754/ldbl-128/s_expm1l.c8
-rw-r--r--sysdeps/ieee754/ldbl-128/s_floorl.c4
-rw-r--r--sysdeps/ieee754/ldbl-128/s_log1pl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128/s_nexttowardf.c17
-rw-r--r--sysdeps/ieee754/ldbl-128/s_sinl.c10
-rw-r--r--sysdeps/ieee754/ldbl-128/s_tanl.c10
-rw-r--r--sysdeps/ieee754/ldbl-128/w_expl.c1
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_cosl.c7
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_expm1l.c6
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_sinl.c8
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_tanl.c8
-rw-r--r--sysdeps/ieee754/ldbl-96/s_cosl.c7
-rw-r--r--sysdeps/ieee754/ldbl-96/s_sinl.c7
-rw-r--r--sysdeps/ieee754/ldbl-96/w_expl.c1
-rw-r--r--[-rwxr-xr-x]sysdeps/ieee754/ldbl-opt/configure51
-rw-r--r--sysdeps/mach/alpha/machine-lock.h80
-rw-r--r--sysdeps/mach/alpha/machine-sp.h36
-rw-r--r--sysdeps/mach/alpha/setfpucw.c69
-rw-r--r--sysdeps/mach/alpha/syscall.S37
-rw-r--r--sysdeps/mach/alpha/sysdep.h59
-rw-r--r--sysdeps/mach/alpha/thread_state.h39
-rw-r--r--sysdeps/mach/configure612
-rw-r--r--sysdeps/mach/hurd/.cvsignore4
-rw-r--r--sysdeps/mach/hurd/Makefile7
-rw-r--r--sysdeps/mach/hurd/alpha/bits/sigcontext.h73
-rw-r--r--sysdeps/mach/hurd/alpha/exc2signal.c75
-rw-r--r--sysdeps/mach/hurd/alpha/init-first.c302
-rw-r--r--sysdeps/mach/hurd/alpha/intr-msg.h100
-rw-r--r--sysdeps/mach/hurd/alpha/longjmp-ts.c49
-rw-r--r--sysdeps/mach/hurd/alpha/sigreturn.c211
-rw-r--r--sysdeps/mach/hurd/alpha/trampoline.c249
-rw-r--r--sysdeps/mach/hurd/bits/libc-lock.h3
-rw-r--r--sysdeps/mach/hurd/bits/posix_opt.h22
-rw-r--r--sysdeps/mach/hurd/bits/stat.h12
-rw-r--r--[-rwxr-xr-x]sysdeps/mach/hurd/configure55
-rw-r--r--sysdeps/mach/hurd/getcwd.c4
-rw-r--r--sysdeps/mach/hurd/mkdirat.c3
-rw-r--r--sysdeps/mach/strerror_l.c102
-rw-r--r--sysdeps/posix/getaddrinfo.c17
-rw-r--r--sysdeps/posix/libc_fatal.c17
-rw-r--r--sysdeps/posix/preadv.c108
-rw-r--r--sysdeps/posix/preadv64.c9
-rw-r--r--sysdeps/posix/pwritev.c96
-rw-r--r--sysdeps/posix/pwritev64.c9
-rw-r--r--sysdeps/posix/readv.c42
-rw-r--r--sysdeps/posix/sysconf.c41
-rw-r--r--sysdeps/posix/tempname.c14
-rw-r--r--sysdeps/posix/writev.c42
-rw-r--r--sysdeps/powerpc/bits/link.h6
-rw-r--r--[-rwxr-xr-x]sysdeps/powerpc/configure16
-rw-r--r--sysdeps/powerpc/elf/ifunc-sel.h46
-rw-r--r--sysdeps/powerpc/fpu/e_sqrt.c6
-rw-r--r--sysdeps/powerpc/fpu/e_sqrtf.c6
-rw-r--r--sysdeps/powerpc/fpu/fenv_libc.h12
-rw-r--r--sysdeps/powerpc/fpu/tst-setcontext-fpscr.c16
-rw-r--r--sysdeps/powerpc/powerpc32/__longjmp-common.S13
-rw-r--r--sysdeps/powerpc/powerpc32/cell/memcpy.S245
-rw-r--r--sysdeps/powerpc/powerpc32/configure24
-rw-r--r--sysdeps/powerpc/powerpc32/dl-irel.h (renamed from sysdeps/alpha/fpu/s_copysign.c)44
-rw-r--r--sysdeps/powerpc/powerpc32/dl-machine.c6
-rw-r--r--sysdeps/powerpc/powerpc32/dl-machine.h8
-rw-r--r--[-rwxr-xr-x]sysdeps/powerpc/powerpc32/elf/configure12
-rw-r--r--sysdeps/powerpc/powerpc32/elf/start.S4
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S17
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.S4
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S4
-rw-r--r--sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt.S4
-rw-r--r--sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf.S4
-rw-r--r--sysdeps/powerpc/powerpc32/power6/memcpy.S58
-rw-r--r--sysdeps/powerpc/powerpc32/power6/memset.S6
-rw-r--r--sysdeps/powerpc/powerpc32/power7/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power7/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/__longjmp-common.S21
-rw-r--r--sysdeps/powerpc/powerpc64/cell/memcpy.S245
-rw-r--r--sysdeps/powerpc/powerpc64/configure24
-rw-r--r--sysdeps/powerpc/powerpc64/dl-irel.h58
-rw-r--r--sysdeps/powerpc/powerpc64/dl-machine.h41
-rw-r--r--sysdeps/powerpc/powerpc64/elf/configure12
-rw-r--r--sysdeps/powerpc/powerpc64/elf/start.S4
-rw-r--r--sysdeps/powerpc/powerpc64/power7/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power7/fpu/Implies1
-rw-r--r--sysdeps/powerpc/sysdep.h4
-rw-r--r--sysdeps/pthread/aio_misc.c26
-rw-r--r--sysdeps/s390/bits/link.h4
-rw-r--r--sysdeps/s390/dl-procinfo.c10
-rw-r--r--sysdeps/s390/dl-procinfo.h9
-rw-r--r--sysdeps/s390/s390-32/__longjmp.c7
-rw-r--r--sysdeps/s390/s390-32/dl-machine.h12
-rw-r--r--sysdeps/s390/s390-32/dl-trampoline.S6
-rw-r--r--sysdeps/s390/s390-32/elf/configure12
-rw-r--r--sysdeps/s390/s390-32/elf/start.S82
-rw-r--r--sysdeps/s390/s390-32/s390-mcount.S6
-rw-r--r--sysdeps/s390/s390-64/Makefile67
-rw-r--r--sysdeps/s390/s390-64/__longjmp.c7
-rw-r--r--sysdeps/s390/s390-64/dl-machine.h2
-rw-r--r--sysdeps/s390/s390-64/dl-trampoline.S8
-rw-r--r--sysdeps/s390/s390-64/elf/configure12
-rw-r--r--sysdeps/s390/s390-64/iso-8859-1_cp037_z900.c238
-rw-r--r--sysdeps/s390/s390-64/s390x-mcount.S6
-rw-r--r--sysdeps/s390/s390-64/utf16-utf32-z9.c325
-rw-r--r--sysdeps/s390/s390-64/utf8-utf16-z9.c463
-rw-r--r--sysdeps/s390/s390-64/utf8-utf32-z9.c508
-rw-r--r--sysdeps/sh/____longjmp_chk.S70
-rw-r--r--sysdeps/sh/bits/link.h4
-rw-r--r--sysdeps/sh/bits/setjmp.h4
-rw-r--r--sysdeps/sh/elf/configure12
-rw-r--r--sysdeps/sh/elf/initfini.c110
-rw-r--r--sysdeps/sh/libc-tls.c (renamed from sysdeps/alpha/libc-tls.c)6
-rw-r--r--sysdeps/sh/sh3/__longjmp.S9
-rw-r--r--sysdeps/sh/sh4/__longjmp.S14
-rw-r--r--sysdeps/sh/sh4/dl-trampoline.S4
-rw-r--r--sysdeps/sh/sh4/fpu/fpu_control.h4
-rw-r--r--sysdeps/sh/sh4/setjmp.S6
-rw-r--r--sysdeps/sparc/bits/link.h6
-rw-r--r--sysdeps/sparc/sparc32/elf/configure24
-rw-r--r--sysdeps/sparc/sparc32/elf/start.S4
-rw-r--r--sysdeps/sparc/sparc64/elf/configure24
-rw-r--r--sysdeps/sparc/sparc64/elf/start.S4
-rw-r--r--sysdeps/unix/Makefile18
-rw-r--r--sysdeps/unix/alpha/Makefile3
-rw-r--r--sysdeps/unix/alpha/pipe.S32
-rw-r--r--sysdeps/unix/alpha/rt-sysdep.S1
-rw-r--r--sysdeps/unix/alpha/sysdep.S135
-rw-r--r--sysdeps/unix/alpha/sysdep.h438
-rw-r--r--sysdeps/unix/bsd/bits/stat.h9
-rw-r--r--sysdeps/unix/common/.cvsignore4
-rw-r--r--sysdeps/unix/grantpt.c81
-rw-r--r--sysdeps/unix/make-syscalls.sh34
-rw-r--r--sysdeps/unix/opendir.c40
-rw-r--r--sysdeps/unix/syscall-template.S88
-rw-r--r--sysdeps/unix/sysv/bits/stat.h9
-rw-r--r--sysdeps/unix/sysv/linux/Makefile12
-rw-r--r--sysdeps/unix/sysv/linux/Versions11
-rw-r--r--sysdeps/unix/sysv/linux/accept4.c97
-rw-r--r--sysdeps/unix/sysv/linux/alpha/Implies4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/Makefile38
-rw-r--r--sysdeps/unix/sysv/linux/alpha/Versions94
-rw-r--r--sysdeps/unix/sysv/linux/alpha/a.out.h197
-rw-r--r--sysdeps/unix/sysv/linux/alpha/adjtime.c220
-rw-r--r--sysdeps/unix/sysv/linux/alpha/alpha/ptrace.h18
-rw-r--r--sysdeps/unix/sysv/linux/alpha/alpha/regdef.h44
-rw-r--r--sysdeps/unix/sysv/linux/alpha/alphaev6/fpu/Implies2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/alphaev67/fpu/Implies2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/a.out.h9
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/dirent.h55
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/elfclass.h14
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/errno.h58
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/fcntl.h232
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/ioctls.h37
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/ipc.h55
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/mman.h118
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/msq.h74
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/netdb.h35
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/resource.h233
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/sem.h85
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/shm.h101
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/sigaction.h74
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/siginfo.h303
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/signum.h82
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/sigstack.h55
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/stat.h157
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/statfs.h67
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/termios.h226
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/typesizes.h66
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/wordsize.h30
-rw-r--r--sysdeps/unix/sysv/linux/alpha/brk.S81
-rw-r--r--sysdeps/unix/sysv/linux/alpha/clone.S149
-rw-r--r--sysdeps/unix/sysv/linux/alpha/dl-auxv.h36
-rw-r--r--sysdeps/unix/sysv/linux/alpha/dl-brk.S1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/dl-support.c2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/dl-sysdep.c2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/fpu/Implies2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/fraiseexcpt.c92
-rw-r--r--sysdeps/unix/sysv/linux/alpha/fxstat.c64
-rw-r--r--sysdeps/unix/sysv/linux/alpha/fxstatat.c99
-rw-r--r--sysdeps/unix/sysv/linux/alpha/getclktck.c2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/getcontext.S188
-rw-r--r--sysdeps/unix/sysv/linux/alpha/getdents.c3
-rw-r--r--sysdeps/unix/sysv/linux/alpha/getdents64.c1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/getitimer.S113
-rw-r--r--sysdeps/unix/sysv/linux/alpha/getrusage.S149
-rw-r--r--sysdeps/unix/sysv/linux/alpha/getsysstats.c57
-rw-r--r--sysdeps/unix/sysv/linux/alpha/gettimeofday.S120
-rw-r--r--sysdeps/unix/sysv/linux/alpha/glob.c52
-rw-r--r--sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S61
-rw-r--r--sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S61
-rw-r--r--sysdeps/unix/sysv/linux/alpha/ioperm.c883
-rw-r--r--sysdeps/unix/sysv/linux/alpha/ipc_priv.h47
-rw-r--r--sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h15
-rw-r--r--sysdeps/unix/sysv/linux/alpha/kernel_stat.h88
-rw-r--r--sysdeps/unix/sysv/linux/alpha/kernel_sysinfo.h6
-rw-r--r--sysdeps/unix/sysv/linux/alpha/kernel_termios.h44
-rw-r--r--sysdeps/unix/sysv/linux/alpha/lxstat.c64
-rw-r--r--sysdeps/unix/sysv/linux/alpha/makecontext.S164
-rw-r--r--sysdeps/unix/sysv/linux/alpha/msgctl.c121
-rw-r--r--sysdeps/unix/sysv/linux/alpha/nldbl-abi.h8
-rw-r--r--sysdeps/unix/sysv/linux/alpha/oldglob.c100
-rw-r--r--sysdeps/unix/sysv/linux/alpha/pipe.S1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/register-dump.h157
-rw-r--r--sysdeps/unix/sysv/linux/alpha/rt_sigaction.S120
-rw-r--r--sysdeps/unix/sysv/linux/alpha/select.S241
-rw-r--r--sysdeps/unix/sysv/linux/alpha/semctl.c136
-rw-r--r--sysdeps/unix/sysv/linux/alpha/setcontext.S35
-rw-r--r--sysdeps/unix/sysv/linux/alpha/setfpucw.c80
-rw-r--r--sysdeps/unix/sysv/linux/alpha/setitimer.S137
-rw-r--r--sysdeps/unix/sysv/linux/alpha/setreuid.c31
-rw-r--r--sysdeps/unix/sysv/linux/alpha/settimeofday.S118
-rw-r--r--sysdeps/unix/sysv/linux/alpha/shmctl.c135
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sigaction.c39
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h25
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sigprocmask.c58
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sigsuspend.S46
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/acct.h66
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/epoll.h143
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/eventfd.h52
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/inotify.h105
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/io.h95
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/procfs.h115
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/signalfd.h66
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/timerfd.h60
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/ucontext.h61
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/user.h50
-rw-r--r--sysdeps/unix/sysv/linux/alpha/syscall.S77
-rw-r--r--sysdeps/unix/sysv/linux/alpha/syscalls.list55
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sysconf.c152
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sysdep.h101
-rw-r--r--sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym18
-rw-r--r--sysdeps/unix/sysv/linux/alpha/utimes.S123
-rw-r--r--sysdeps/unix/sysv/linux/alpha/wait4.S156
-rw-r--r--sysdeps/unix/sysv/linux/alpha/wordexp.c60
-rw-r--r--sysdeps/unix/sysv/linux/alpha/xstat.c64
-rw-r--r--sysdeps/unix/sysv/linux/alpha/xstatconv.c123
-rw-r--r--sysdeps/unix/sysv/linux/bits/errno.h6
-rw-r--r--sysdeps/unix/sysv/linux/bits/poll.h4
-rw-r--r--sysdeps/unix/sysv/linux/bits/posix_opt.h24
-rw-r--r--sysdeps/unix/sysv/linux/bits/resource.h5
-rw-r--r--sysdeps/unix/sysv/linux/bits/sched.h40
-rw-r--r--sysdeps/unix/sysv/linux/bits/shm.h3
-rw-r--r--sysdeps/unix/sysv/linux/bits/sigaction.h4
-rw-r--r--sysdeps/unix/sysv/linux/bits/socket.h45
-rw-r--r--sysdeps/unix/sysv/linux/bits/stat.h20
-rw-r--r--sysdeps/unix/sysv/linux/configure161
-rw-r--r--sysdeps/unix/sysv/linux/configure.in13
-rw-r--r--sysdeps/unix/sysv/linux/dl-osinfo.h58
-rw-r--r--sysdeps/unix/sysv/linux/eventfd.c15
-rw-r--r--sysdeps/unix/sysv/linux/faccessat.c8
-rw-r--r--sysdeps/unix/sysv/linux/fallocate.c (renamed from sysdeps/unix/sysv/linux/alpha/setresgid.c)23
-rw-r--r--sysdeps/unix/sysv/linux/fallocate64.c (renamed from sysdeps/unix/sysv/linux/alpha/setresuid.c)25
-rw-r--r--sysdeps/unix/sysv/linux/fchmodat.c8
-rw-r--r--sysdeps/unix/sysv/linux/fchownat.c8
-rw-r--r--sysdeps/unix/sysv/linux/fcntl.c42
-rw-r--r--sysdeps/unix/sysv/linux/futimens.c5
-rw-r--r--sysdeps/unix/sysv/linux/futimesat.c8
-rw-r--r--sysdeps/unix/sysv/linux/fxstatat.c8
-rw-r--r--sysdeps/unix/sysv/linux/fxstatat64.c8
-rw-r--r--sysdeps/unix/sysv/linux/getpt.c7
-rw-r--r--sysdeps/unix/sysv/linux/getsysstats.c119
-rw-r--r--sysdeps/unix/sysv/linux/grantpt.c99
-rw-r--r--sysdeps/unix/sysv/linux/i386/Versions4
-rw-r--r--sysdeps/unix/sysv/linux/i386/____longjmp_chk.S106
-rw-r--r--sysdeps/unix/sysv/linux/i386/accept4.S (renamed from sysdeps/unix/sysv/linux/i386/paccept.S)160
-rw-r--r--sysdeps/unix/sysv/linux/i386/alphasort64.c16
-rw-r--r--sysdeps/unix/sysv/linux/i386/bits/environments.h24
-rw-r--r--sysdeps/unix/sysv/linux/i386/bits/fcntl.h63
-rw-r--r--sysdeps/unix/sysv/linux/i386/bits/mman.h21
-rw-r--r--sysdeps/unix/sysv/linux/i386/fallocate.c (renamed from sysdeps/alpha/alphaev67/ffs.S)43
-rw-r--r--sysdeps/unix/sysv/linux/i386/fallocate64.c (renamed from sysdeps/alpha/alphaev6/fpu/e_sqrt.S)37
-rw-r--r--sysdeps/unix/sysv/linux/i386/fchownat.c8
-rw-r--r--sysdeps/unix/sysv/linux/i386/fcntl.c29
-rw-r--r--sysdeps/unix/sysv/linux/i386/fxstatat.c8
-rw-r--r--sysdeps/unix/sysv/linux/i386/i686/sysconf.c1
-rw-r--r--sysdeps/unix/sysv/linux/i386/internal_accept4.S1
-rw-r--r--sysdeps/unix/sysv/linux/i386/makecontext.S10
-rw-r--r--sysdeps/unix/sysv/linux/i386/olddirent.h5
-rw-r--r--sysdeps/unix/sysv/linux/i386/socket.S4
-rw-r--r--sysdeps/unix/sysv/linux/i386/sys/io.h90
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysconf.c144
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.h4
-rw-r--r--sysdeps/unix/sysv/linux/i386/versionsort64.c16
-rw-r--r--sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S (renamed from sysdeps/unix/sysv/linux/alpha/swapcontext.S)51
-rw-r--r--sysdeps/unix/sysv/linux/ia64/__longjmp.S10
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/fcntl.h64
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/mman.h22
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/shm.h3
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/sigaction.h4
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/siginfo.h6
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/stat.h12
-rw-r--r--sysdeps/unix/sysv/linux/ia64/wordexp.c61
-rw-r--r--sysdeps/unix/sysv/linux/ifaddrs.c4
-rw-r--r--sysdeps/unix/sysv/linux/internal_accept4.S14
-rw-r--r--sysdeps/unix/sysv/linux/kernel-features.h42
-rw-r--r--sysdeps/unix/sysv/linux/lddlibc4.c20
-rw-r--r--sysdeps/unix/sysv/linux/ldsodefs.h22
-rw-r--r--sysdeps/unix/sysv/linux/libc_fatal.c18
-rw-r--r--sysdeps/unix/sysv/linux/linkat.c8
-rw-r--r--sysdeps/unix/sysv/linux/mkdirat.c8
-rw-r--r--sysdeps/unix/sysv/linux/net/if_arp.h4
-rw-r--r--sysdeps/unix/sysv/linux/ntp_gettime.c9
-rw-r--r--sysdeps/unix/sysv/linux/ntp_gettimex.c (renamed from sysdeps/alpha/fpu/s_lrintf.c)43
-rw-r--r--sysdeps/unix/sysv/linux/openat.c8
-rw-r--r--sysdeps/unix/sysv/linux/paths.h1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/environments.h28
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h63
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/mman.h22
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/shm.h9
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/stat.h60
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/configure98
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/fchownat.c8
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/ipc_priv.h48
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S85
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/cell/fpu/Implies3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/setcontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/swapcontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/fpu/Implies3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S13
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S29
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S69
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/fpu/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/setcontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/swapcontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/fpu/Implies3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S9
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S9
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c (renamed from sysdeps/alpha/htons.S)42
-rw-r--r--sysdeps/unix/sysv/linux/preadv.c95
-rw-r--r--sysdeps/unix/sysv/linux/preadv64.c6
-rw-r--r--sysdeps/unix/sysv/linux/ptsname.c37
-rw-r--r--sysdeps/unix/sysv/linux/pwritev.c95
-rw-r--r--sysdeps/unix/sysv/linux/pwritev64.c6
-rw-r--r--sysdeps/unix/sysv/linux/readlinkat.c8
-rw-r--r--sysdeps/unix/sysv/linux/readv.c48
-rw-r--r--sysdeps/unix/sysv/linux/renameat.c14
-rw-r--r--sysdeps/unix/sysv/linux/s390/Makefile4
-rw-r--r--sysdeps/unix/sysv/linux/s390/Versions6
-rw-r--r--sysdeps/unix/sysv/linux/s390/bits/environments.h28
-rw-r--r--sysdeps/unix/sysv/linux/s390/bits/fcntl.h64
-rw-r--r--sysdeps/unix/sysv/linux/s390/bits/libc-vdso.h (renamed from sysdeps/unix/sysv/linux/alpha/xstatconv.h)21
-rw-r--r--sysdeps/unix/sysv/linux/s390/bits/mman.h21
-rw-r--r--sysdeps/unix/sysv/linux/s390/bits/shm.h3
-rw-r--r--sysdeps/unix/sysv/linux/s390/bits/sigaction.h4
-rw-r--r--sysdeps/unix/sysv/linux/s390/bits/siginfo.h10
-rw-r--r--sysdeps/unix/sysv/linux/s390/bits/stat.h50
-rw-r--r--sysdeps/unix/sysv/linux/s390/gettimeofday.c (renamed from sysdeps/unix/sysv/linux/alpha/gethostname.c)41
-rw-r--r--sysdeps/unix/sysv/linux/s390/init-first.c50
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c55
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h101
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c55
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h102
-rw-r--r--sysdeps/unix/sysv/linux/sh/Makefile5
-rw-r--r--sysdeps/unix/sysv/linux/sh/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/sh/bits/fcntl.h64
-rw-r--r--sysdeps/unix/sysv/linux/sh/bits/mman.h22
-rw-r--r--sysdeps/unix/sysv/linux/sh/bits/shm.h3
-rw-r--r--sysdeps/unix/sysv/linux/sh/sh4/getcontext.S6
-rw-r--r--sysdeps/unix/sysv/linux/sh/sh4/register-dump.h20
-rw-r--r--sysdeps/unix/sysv/linux/sh/sh4/setcontext.S6
-rw-r--r--sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S12
-rw-r--r--sysdeps/unix/sysv/linux/sh/sys/procfs.h6
-rw-r--r--sysdeps/unix/sysv/linux/sh/sys/user.h48
-rw-r--r--sysdeps/unix/sysv/linux/sh/sysdep.h6
-rw-r--r--sysdeps/unix/sysv/linux/signalfd.c15
-rw-r--r--sysdeps/unix/sysv/linux/socketcall.h4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/environments.h28
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/errno.h6
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/fcntl.h69
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/mman.h24
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/poll.h4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/resource.h5
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/shm.h3
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/sigaction.h4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/siginfo.h4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/socket.h16
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/stat.h31
-rw-r--r--sysdeps/unix/sysv/linux/sparc/getsysstats.c9
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S113
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S71
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/wordexp.c2
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sys/eventfd.h4
-rw-r--r--sysdeps/unix/sysv/linux/symlinkat.c8
-rw-r--r--sysdeps/unix/sysv/linux/sync_file_range.c10
-rw-r--r--sysdeps/unix/sysv/linux/sys/epoll.h4
-rw-r--r--sysdeps/unix/sysv/linux/sys/eventfd.h6
-rw-r--r--sysdeps/unix/sysv/linux/sys/inotify.h4
-rw-r--r--sysdeps/unix/sysv/linux/sys/mount.h6
-rw-r--r--sysdeps/unix/sysv/linux/sys/personality.h2
-rw-r--r--sysdeps/unix/sysv/linux/sys/timex.h36
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list1
-rw-r--r--sysdeps/unix/sysv/linux/sysconf.c15
-rw-r--r--sysdeps/unix/sysv/linux/tst-clone.c6
-rw-r--r--sysdeps/unix/sysv/linux/ttyname.c7
-rw-r--r--sysdeps/unix/sysv/linux/unlinkat.c8
-rw-r--r--sysdeps/unix/sysv/linux/wordsize-64/Versions5
-rw-r--r--sysdeps/unix/sysv/linux/wordsize-64/fallocate.c (renamed from sysdeps/unix/sysv/linux/alpha/setregid.c)20
-rw-r--r--sysdeps/unix/sysv/linux/wordsize-64/fallocate64.c1
-rw-r--r--sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c8
-rw-r--r--sysdeps/unix/sysv/linux/wordsize-64/preadv64.c1
-rw-r--r--sysdeps/unix/sysv/linux/wordsize-64/pwritev64.c1
-rw-r--r--sysdeps/unix/sysv/linux/writev.c47
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S109
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/bits/environments.h28
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h63
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/bits/mman.h21
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/bits/shm.h3
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/bits/stat.h44
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/sys/io.h92
-rw-r--r--sysdeps/unix/sysv/linux/xmknodat.c8
-rw-r--r--sysdeps/wordsize-64/alphasort.c4
-rw-r--r--sysdeps/wordsize-64/versionsort.c4
-rw-r--r--sysdeps/x86_64/Makefile6
-rw-r--r--sysdeps/x86_64/____longjmp_chk.S1
-rw-r--r--sysdeps/x86_64/__longjmp.S6
-rw-r--r--sysdeps/x86_64/add_n.S42
-rw-r--r--sysdeps/x86_64/addmul_1.S46
-rw-r--r--sysdeps/x86_64/bits/atomic.h36
-rw-r--r--sysdeps/x86_64/bits/link.h16
-rw-r--r--sysdeps/x86_64/bits/select.h62
-rw-r--r--sysdeps/x86_64/cacheinfo.c331
-rw-r--r--sysdeps/x86_64/dl-irel.h45
-rw-r--r--sysdeps/x86_64/dl-machine.h128
-rw-r--r--sysdeps/x86_64/dl-runtime.c9
-rw-r--r--sysdeps/x86_64/dl-trampoline.S308
-rw-r--r--sysdeps/x86_64/dl-trampoline.h269
-rw-r--r--[-rwxr-xr-x]sysdeps/x86_64/elf/configure37
-rw-r--r--sysdeps/x86_64/elf/configure.in11
-rw-r--r--sysdeps/x86_64/fpu/bits/mathinline.h16
-rw-r--r--sysdeps/x86_64/fpu/math_private.h37
-rw-r--r--sysdeps/x86_64/fpu/s_cosl.S16
-rw-r--r--sysdeps/x86_64/fpu/s_expm1l.S6
-rw-r--r--sysdeps/x86_64/fpu/s_scalbln.c2
-rw-r--r--sysdeps/x86_64/fpu/s_scalbn.c9
-rw-r--r--sysdeps/x86_64/fpu/s_signbit.S (renamed from sysdeps/alpha/fpu/s_copysignf.c)20
-rw-r--r--sysdeps/x86_64/fpu/s_signbitf.S (renamed from sysdeps/mach/hurd/alpha/static-start.S)19
-rw-r--r--sysdeps/x86_64/fpu/s_sinl.S14
-rw-r--r--sysdeps/x86_64/fpu/s_tanl.S14
-rw-r--r--sysdeps/x86_64/link-defines.sym28
-rw-r--r--sysdeps/x86_64/lshift.S60
-rw-r--r--sysdeps/x86_64/memchr.S68
-rw-r--r--sysdeps/x86_64/memcmp.S359
-rw-r--r--sysdeps/x86_64/mp_clz_tab.c1
-rw-r--r--sysdeps/x86_64/mul_1.S42
-rw-r--r--sysdeps/x86_64/multiarch/Makefile17
-rw-r--r--sysdeps/x86_64/multiarch/Versions5
-rw-r--r--sysdeps/x86_64/multiarch/ifunc-defines.sym20
-rw-r--r--sysdeps/x86_64/multiarch/init-arch.c105
-rw-r--r--sysdeps/x86_64/multiarch/init-arch.h103
-rw-r--r--sysdeps/x86_64/multiarch/rawmemchr.S95
-rw-r--r--sysdeps/x86_64/multiarch/rtld-strlen.S1
-rw-r--r--sysdeps/x86_64/multiarch/s_fma.c (renamed from sysdeps/alpha/fpu/s_nearbyintf.c)39
-rw-r--r--sysdeps/x86_64/multiarch/s_fmaf.c (renamed from sysdeps/alpha/fpu/s_fabs.c)39
-rw-r--r--sysdeps/x86_64/multiarch/sched_cpucount.c (renamed from nptl/sysdeps/unix/sysv/linux/alpha/fork.c)25
-rw-r--r--sysdeps/x86_64/multiarch/stpcpy.S7
-rw-r--r--sysdeps/x86_64/multiarch/stpncpy-c.c8
-rw-r--r--sysdeps/x86_64/multiarch/stpncpy.S6
-rw-r--r--sysdeps/x86_64/multiarch/strcasestr-c.c16
-rw-r--r--sysdeps/x86_64/multiarch/strcasestr.c3
-rw-r--r--sysdeps/x86_64/multiarch/strchr.S177
-rw-r--r--sysdeps/x86_64/multiarch/strcmp-ssse3.S3
-rw-r--r--sysdeps/x86_64/multiarch/strcmp.S1539
-rw-r--r--sysdeps/x86_64/multiarch/strcpy.S1911
-rw-r--r--sysdeps/x86_64/multiarch/strcspn-c.c314
-rw-r--r--sysdeps/x86_64/multiarch/strcspn.S82
-rw-r--r--sysdeps/x86_64/multiarch/strend-sse4.S (renamed from sysdeps/alpha/alphaev67/ffsll.S)52
-rw-r--r--sysdeps/x86_64/multiarch/strlen.S125
-rw-r--r--sysdeps/x86_64/multiarch/strncmp-ssse3.S4
-rw-r--r--sysdeps/x86_64/multiarch/strncmp.S3
-rw-r--r--sysdeps/x86_64/multiarch/strncpy-c.c8
-rw-r--r--sysdeps/x86_64/multiarch/strncpy.S3
-rw-r--r--sysdeps/x86_64/multiarch/strpbrk-c.c4
-rw-r--r--sysdeps/x86_64/multiarch/strpbrk.S3
-rw-r--r--sysdeps/x86_64/multiarch/strrchr.S278
-rw-r--r--sysdeps/x86_64/multiarch/strspn-c.c284
-rw-r--r--sysdeps/x86_64/multiarch/strspn.S63
-rw-r--r--sysdeps/x86_64/multiarch/strstr-c.c15
-rw-r--r--sysdeps/x86_64/multiarch/strstr.c464
-rw-r--r--sysdeps/x86_64/rawmemchr.S (renamed from sysdeps/alpha/strcpy.S)55
-rw-r--r--sysdeps/x86_64/rshift.S62
-rw-r--r--sysdeps/x86_64/rtld-memcmp.c1
-rw-r--r--sysdeps/x86_64/rtld-strchr.S291
-rw-r--r--sysdeps/x86_64/rtld-strlen.S139
-rw-r--r--sysdeps/x86_64/stackinfo.h12
-rw-r--r--sysdeps/x86_64/strchr.S313
-rw-r--r--sysdeps/x86_64/strchrnul.S63
-rw-r--r--sysdeps/x86_64/strcmp.S2080
-rw-r--r--sysdeps/x86_64/strlen.S142
-rw-r--r--sysdeps/x86_64/strncmp.S3
-rw-r--r--sysdeps/x86_64/strrchr.S81
-rw-r--r--sysdeps/x86_64/sub_n.S42
-rw-r--r--sysdeps/x86_64/submul_1.S46
-rwxr-xr-xsysdeps/x86_64/tst-xmmymm.sh80
-rw-r--r--sysvipc/.cvsignore6
-rw-r--r--termios/.cvsignore6
-rw-r--r--termios/termios.h4
-rw-r--r--test-skeleton.c15
-rw-r--r--time/.cvsignore6
-rw-r--r--time/alt_digit.c10
-rw-r--r--time/asctime.c6
-rw-r--r--time/era.c10
-rw-r--r--time/lc-time-cleanup.c4
-rw-r--r--time/strftime_l.c6
-rw-r--r--time/strptime_l.c6
-rw-r--r--time/sys/time.h4
-rw-r--r--time/time.h7
-rw-r--r--time/tst-posixtz.c30
-rw-r--r--time/tzfile.c13
-rw-r--r--time/tzset.c137
-rw-r--r--timezone/africa140
-rw-r--r--timezone/antarctica4
-rw-r--r--timezone/asia184
-rw-r--r--timezone/australasia25
-rw-r--r--timezone/backward6
-rw-r--r--timezone/etcetera5
-rw-r--r--timezone/europe65
-rw-r--r--timezone/factory5
-rw-r--r--timezone/iso3166.tab6
-rw-r--r--timezone/leapseconds39
-rw-r--r--timezone/northamerica43
-rw-r--r--timezone/pacificnew5
-rw-r--r--timezone/solar875
-rw-r--r--timezone/solar885
-rw-r--r--timezone/solar895
-rw-r--r--timezone/southamerica160
-rw-r--r--timezone/systemv5
-rw-r--r--timezone/tzselect.ksh17
-rwxr-xr-xtimezone/yearistype5
-rw-r--r--timezone/zdump.c31
-rw-r--r--timezone/zic.c26
-rw-r--r--timezone/zone.tab28
-rw-r--r--version.h4
-rw-r--r--wcsmbs/.cvsignore6
-rw-r--r--wcsmbs/mbsnrtowcs.c6
-rw-r--r--wcsmbs/wchar.h71
-rw-r--r--wcsmbs/wcsatcliff.c1
-rw-r--r--wcsmbs/wcsmbsload.c6
-rw-r--r--wcsmbs/wcsmbsload.h10
-rw-r--r--wcsmbs/wcsnrtombs.c4
-rw-r--r--wctype/.cvsignore6
-rw-r--r--wctype/Makefile4
-rw-r--r--wctype/bug-wctypeh.c10
-rw-r--r--wctype/wctype.h10
1700 files changed, 91791 insertions, 67607 deletions
diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index 213609fcc7..0000000000
--- a/.cvsignore
+++ /dev/null
@@ -1,29 +0,0 @@
-*.d *.o *.so *.po *.go *.bo stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz *.bz2
-=*
-TODO AUTHORS copyr-* copying.*
-glibc-*
-
-configparms
-
-sun[43]* i[345]86* hp300*
-
-ieeetest hppa-sysdeps regex
-
-gpl2lgpl.sed
-distinfo
-distinfo
-
-test-include
-analysis
-docs
-releases
-
-libc.prj .libc.prcs_aux
-libc.proj .snprj
-
-TODO.html
-
-autom4te*.cache
-
-rtkaio
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000..8947e726a2
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+timezone/* -whitespace
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000..fbdcf54506
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,39 @@
+*~
+*.gz
+*.Z
+*.tar
+*.tgz
+*.bz2
+*.rej
+*.orig
+=*
+TAGS
+TODO
+AUTHORS
+copyr-*
+copying.*
+glibc-*
+
+configparms
+
+ieeetest
+regex
+
+gpl2lgpl.sed
+distinfo
+
+test-include
+analysis
+docs
+releases
+
+libc.prj
+.libc.prcs_aux
+libc.proj
+.snprj
+
+TODO.html
+
+autom4te*.cache
+
+rtkaio
diff --git a/CONFORMANCE b/CONFORMANCE
index 68723086cc..8275aba26c 100644
--- a/CONFORMANCE
+++ b/CONFORMANCE
@@ -125,7 +125,9 @@ C99 added %a as another scanf format specifier for floating point
values. This conflicts with the glibc extension where %as, %a[ and
%aS mean to allocate the string for the data read. A strictly
conforming C99 program using %as, %a[ or %aS in a scanf format string
-will misbehave under glibc.
+will misbehave under glibc if it does not include <stdio.h> and
+instead declares scanf itself; if it gets the declaration of scanf
+from <stdio.h>, it will use a C99-conforming version.
Compiler limitations
@@ -144,29 +146,21 @@ GCC doesn't support the optional imaginary types. Nor does it
understand the keyword _Complex before GCC 3.0. This has the
corresponding impact on the relevant headers.
-glibc's use of extern inline conflicts with C99: in C99, extern inline
-means that an external definition is generated as well as possibly an
-inline definition, but in GCC it means that no external definition is
-generated. When GCC's C99 mode implements C99 inline semantics, this
-will break the uses of extern inline in glibc's headers. (Actually,
-glibc uses `extern __inline', which is beyond the scope of the
-standard, but it would clearly be very confusing for `__inline' and
-plain `inline' to have different meanings in C99 mode.)
-
glibc's <tgmath.h> implementation is arcane but thought to work
correctly; a clean and comprehensible version requires compiler
builtins.
For most of the headers required of freestanding implementations,
glibc relies on GCC to provide correct versions. (At present, glibc
-provides <stdint.h>, and GCC doesn't.)
-
-Implementing MATH_ERRNO, MATH_ERREXCEPT and math_errhandling in
-<math.h> needs compiler support: see
-
-http://sources.redhat.com/ml/libc-hacker/2000-06/msg00008.html
-http://sources.redhat.com/ml/libc-hacker/2000-06/msg00014.html
-http://sources.redhat.com/ml/libc-hacker/2000-06/msg00015.html
+provides <stdint.h>, and GCC doesn't before version 4.5.)
+
+The definition of math_errhandling conforms so long as no translation
+unit using math_errhandling is compiled with -fno-math-errno,
+-fno-trapping-math or options such as -ffast-math that imply these
+options. math_errhandling is only conditionally defined depending on
+__FAST_MATH__; the compiler does not provide the information needed
+for more exact definitions based on settings of -fno-math-errno and
+-fno-trapping-math, possibly for only some source files in a program.
Issues with headers
diff --git a/ChangeLog b/ChangeLog
index 3f23946db9..a895a00734 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4557 @@
+2010-01-17 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/mach/hurd/bits/libc-lock.h
+ (__rtld_lock_recursive_t): New type.
+ (__rtld_lock_initialize): New macro.
+
+2010-01-14 Ryan S. Arnold <rsa@us.ibm.com>
+
+ * sysdeps/powerpc/powerpc32/cell/memcpy.S: New file.
+ * sysdeps/powerpc/powerpc64/cell/memcpy.S: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/cell/fpu/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/fpu/Implies: New file.
+
+2010-01-18 Andreas Schwab <schwab@redhat.com>
+
+ * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Remove duplicate
+ definitions of O_DSYNC and O_RSYNC.
+
+ * elf/dynamic-link.h (elf_get_dynamic_info): Use correct type when
+ casting d_tag.
+
+ * elf/dynamic-link.h (elf_get_dynamic_info): Ignore negative
+ dynamic entry types.
+
+2010-01-16 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/ieee754/ldbl-128/s_ceill.c (huge): Add L suffix to the
+ constant.
+ * sysdeps/ieee754/ldbl-128/s_floorl.c (huge): Likewise.
+ * sysdeps/ieee754/ldbl-128/s_expm1l.c (big): Decrease to avoid
+ overflow.
+ * sysdeps/ieee754/ldbl-128/s_log1pl.c (big): Remove unused variable.
+
+ * sysdeps/ieee754/ldbl-128/s_nexttowardf.c (__nexttowardf): Use
+ math_opt_barrier and math_force_eval macros.
+
+2010-01-15 Ulrich Drepper <drepper@redhat.com>
+
+ * posix/regcomp.c: Fix a few more cases of ignored return values.
+ * posix/regex_internal.c: Likewise.
+ * posix/regexec.c: Likewise.
+
+ * include/features.h: _XOPEN_SOURCE_EXTENDED is not defined to be
+ used without _XOPEN_SOURCE. Don't base any decisions on this macro
+ if _XOPEN_SOURCE is not defined as well.
+
+2010-01-15 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * sysdeps/s390/s390-32/elf/start.S (_start): Added check for the
+ high gprs kernel facility.
+ * sysdeps/s390/s390-32/dl-machine.h (elf_machine_matches_host):
+ Added high gprs check for DSOs.
+ * elf/elf.h (EF_S390_HIGH_GPRS): Added macro definition for the
+ new elf header flag.
+
+2010-01-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * elf/dl-sysdep.c (_dl_sysdep_start): Added the auxv parameter to
+ dl_main.
+ * elf/dl-open.c (_dl_sysdep_start): Likewise..
+ * sysdeps/generic/ldsodefs.h (_dl_sysdep_start): Likewise.
+ * elf/rtld.c (dl_main): Added new parameter auxv. Adjust the
+ AT_PHDR, AT_PHNUM and AT_ENTRY fields if the ld.so is directly
+ started.
+
+2010-01-14 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #11027]
+ * sysdeps/generic/netinet/ip.h: Define IPTOS_CLASS_* macros according
+ to RFC 2474.
+ Patch by Philip Prindeville <philipp@redfish-solutions.com>.
+
+ [BZ #11141]
+ * resolv/res_send.c (reopen): Don't use IPv6 sockets for IPv4
+ addresses.
+
+ [BZ #11127]
+ * posix/regcomp.c (alc_eclosure_iter): Do not ignore
+ re_node_set_insert failure; return REG_ESPACE.
+ Patch by Paul Eggert.
+
+ * bits/confname.h: Make pre-C99-safe.
+
+2010-01-14 Ryan S. Arnold <rsa@us.ibm.com>
+
+ * Makeconfig (+prector, +postctor, +prectorS, +postctorS): Add
+ $(sysdep-LDFLAGS) to pre and post ctors so that the proper .o
+ files are found by GCC.
+
+2010-01-14 Ulrich Drepper <drepper@redhat.com>
+
+ * posix/unistd.h: Relax conditions for ualarm, usleep, getwd, vfork,
+ brk, and sbrk.
+
+ * string/strings.h: Relax condition for bcmp, bcopy, bzero, ffs,
+ index, and rindex.
+
+ * stdlib/stdlib.h: Relax conditions for *cvt functions and valloc.
+
+ * Versions.def: Add GLIBC_2.12 for libpthread.
+
+ [BZ #11126]
+ * malloc/malloc.c (malloc_info): Initialize malloc if not already
+ done. Handle empty bin lists.
+
+ * posix/unistd.h: Change getpagesize and getdtablesize declaration
+ visibility some more.
+
+ * resolv/netdb.h: Relax condition to elide obsolete resolver constants.
+
+ * posix/unistd.h: Declare getpagesize in _GNU_SOURCE mode.
+
+ [BZ #11120]
+ * sysdeps/x86_64/strcmp.S: Prevent silent errors should strncmp be
+ needed outside libc.
+
+2010-01-13 Ulrich Drepper <drepper@redhat.com>
+
+ * stdlib/stdlib.h: Parameter of unsetenv must not be NULL.
+
+2010-01-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/x86_64/multiarch/strlen.S: Unroll the loop.
+
+2010-01-13 Ulrich Drepper <drepper@redhat.com>
+
+ * stdlib/stdlib.h: Be a bit more relaxed about obsoleted mktemp symbol.
+
+2010-01-12 Ulrich Drepper <drepper@redhat.com>
+
+ * conform/data/complex.h-data: Test for POSIX2008.
+
+ * conform/data/ctype.h-data: Fix POSIX testing.
+
+ * conform/data/dirent.h-data: ino_t only needed for XSI.
+
+ * grp/grp.h: Declare getgrent and endgrent for XPG7.
+
+ * conform/data/inttypes.h-data: Use same types as the headers.
+
+ * resolv/netdb.h: Don't define old resolver macros for XPG7.
+
+ * conform/data/sys/uio.h-data: Don't exclude POSIX2008.
+
+ * conform/conformtest.pl: Implement tag for allow-header.
+ Fix newline handling in allow-header implementation.
+
+ * conform/data/time.h-data: Use allow-header instead of duplicating
+ information.
+
+ * conform/data/time.h-data: Allow sigevent tag.
+
+ * posix/sched.h: Define time_t and pid_t for XPG7.
+
+2010-01-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/i386/i686/bcopy.S: New file.
+
+ * sysdeps/i386/i686/cacheinfo.c (__x86_64_data_cache_size): Define.
+
+ * sysdeps/i386/i686/memcpy.S (__memcpy_chk): Use ENTRY_CHK
+ and END_CHK.
+ * sysdeps/i386/i686/memmove.S (__memmove_chk): Likewise.
+ * sysdeps/i386/i686/mempcpy.S (__mempcpy_chk): Likewise.
+ * sysdeps/i386/i686/memset.S (__memset_chk): Likewise.
+
+ * sysdeps/i386/i686/memmove.S: Support USE_AS_BCOPY.
+
+ * sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add
+ bzero-sse2 memset-sse2 memcpy-ssse3 mempcpy-ssse3 memmove-ssse3
+ memcpy-ssse3-rep mempcpy-ssse3-rep memmove-ssse3-rep
+ bcopy-ssse3 bcopy-ssse3-rep memset-sse2-rep bzero-sse2-rep
+ * sysdeps/i386/i686/multiarch/bcopy-ssse3-rep.S: New file.
+ * sysdeps/i386/i686/multiarch/bcopy-ssse3.S: New file.
+ * sysdeps/i386/i686/multiarch/bcopy.S: New file.
+ * sysdeps/i386/i686/multiarch/bzero-sse2-rep.S: New file.
+ * sysdeps/i386/i686/multiarch/bzero-sse2.S: New file.
+ * sysdeps/i386/i686/multiarch/bzero.S: New file.
+ * sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S: New file.
+ * sysdeps/i386/i686/multiarch/memcpy-ssse3.S: New file.
+ * sysdeps/i386/i686/multiarch/memcpy.S: New file.
+ * sysdeps/i386/i686/multiarch/memcpy_chk.S: New file.
+ * sysdeps/i386/i686/multiarch/memmove-ssse3-rep.S: New file.
+ * sysdeps/i386/i686/multiarch/memmove-ssse3.S: New file.
+ * sysdeps/i386/i686/multiarch/memmove.S: New file.
+ * sysdeps/i386/i686/multiarch/memmove_chk.S: New file.
+ * sysdeps/i386/i686/multiarch/mempcpy-ssse3-rep.S: New file.
+ * sysdeps/i386/i686/multiarch/mempcpy-ssse3.S: New file.
+ * sysdeps/i386/i686/multiarch/mempcpy.S: New file.
+ * sysdeps/i386/i686/multiarch/mempcpy_chk.S: New file.
+ * sysdeps/i386/i686/multiarch/memset-sse2-rep.S: New file.
+ * sysdeps/i386/i686/multiarch/memset-sse2.S: New file.
+ * sysdeps/i386/i686/multiarch/memset.S: New file.
+ * sysdeps/i386/i686/multiarch/memset_chk.S: New file.
+
+ * sysdeps/i386/sysdep.h (ENTRY_CHK): New.
+ (END_CHK): Likewise.
+
+ * sysdeps/i386/i686/multiarch/ifunc-defines.sym: Add
+ FEATURE_OFFSET, FEATURE_SIZE and FEATURE_INDEX_1.
+ * sysdeps/x86_64/multiarch/ifunc-defines.sym: Likewise.
+
+ * sysdeps/x86_64/cacheinfo.c (intel_02_cache_info): Add entries
+ for 0x0e and 0x80.
+ (__x86_64_data_cache_size): New.
+ (init_cacheinfo): Set __x86_64_data_cache_size.
+
+ * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): Turn
+ on bit_Fast_Rep_String for Intel Core i7.
+
+ * sysdeps/x86_64/multiarch/init-arch.h (bit_Fast_Rep_String): New.
+ (index_Fast_Rep_String): Likewise.
+ (FEATURE_INDEX_1): Likewise.
+ (FEATURE_INDEX_MAX): Likewise.
+ (cpu_features): Add feature.
+
+2010-01-12 Ulrich Drepper <drepper@redhat.com>
+
+ * conform/data/sys/select.h-data: Fix up for XPG7.
+
+2010-01-12 Jakub Jelinek <jakub@redhat.com>
+
+ * posix/sys/wait.h: Don't define W* macros etc. if
+ stdlib.h has been included with _POSIX_C_SOURCE >= 200809L.
+
+2010-01-11 Ulrich Drepper <drepper@redhat.com>
+
+ * io/sys/stat.h: Declare fchmod for XPG7.
+ * conform/data/sys/stat.h-data: Fix up for XPG7.
+
+ * termios/termios.h: Define pid_t for XPG7.
+
+ * conform/data/math.h-data: Fix up for XPG6 and XPG7.
+ * conform/data/tgmath.h-data: Likewise.
+
+ * conform/data/time.h-data: Fix POSIX tests.
+
+ * conform/data/wchar.h-data: Fix up XPG7 tests.
+
+ * include/features.h: Fix __USE_ISOC95 handling.
+
+ * conform/data/wordexp.h-data: Fix typo in last change.
+
+ * conform/data/unistd.h-data: Fix up older POSIX tests.
+
+ * stdlib/stdlib.h: Fix handling symbols removed in XPG7.
+ * posix/unistd.h: Likewise.
+
+ * posix/unistd.h: Include environments.h also for XPG6 and up.
+ Define intptr_t for XPG6 and up.
+ Fix up for XPG7.
+ * conform/data/unistd.h-data: Fix up for XPG6 and XPG7.
+
+ * conform/data/sys/types.h-data: Fix up for XPG7.
+
+ * sysdeps/unix/bsd/bits/stat.h: Fix double-inclusion problem.
+ * sysdeps/unix/sysv/linux/powerpc/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/bits/stat.h: Likewise.
+ * sysdeps/mach/hurd/bits/stat.h: Likewise.
+
+ * bits/confname.h: Fix typo in last change.
+
+ * conform/data/unistd.h-data: lockf-constants Not needed for POSIX.
+
+2010-01-10 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/bits/sigaction.h: SA_RESTART, SA_NODEFER,
+ and SA_RESETHAND now available in Base.
+ * sysdeps/unix/sysv/linux/ia64/bits/sigaction.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/sigaction.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/sigaction.h: Likewise.
+ * conform/data/signal.h-data: Update for XPG7.
+
+ * posix/sys/types.h: Define id_t, clock_t, blksize_t for XPG7.
+
+ * string/strings.h: Don't declare obsolete functions for XPG7.
+ Declare ffs only for XSI.
+ * conform/data/strings.h-data: Update for XPG7.
+
+2010-01-10 Jakub Jelinek <jakub@redhat.com>
+
+ [BZ #11125]
+ * libio/stdio.h: Define va_list, off_t, and ssize_t.
+
+ * posix/glob.h: Define size_t.
+
+ * posix/sys/wait.h: Define idtype_t and declare waitid for XPG7.
+
+ * signal/signal.h: Define size_t, mcontext_t, and ucontext_t for XPG7.
+
+2010-01-10 Ulrich Drepper <drepper@redhat.com>
+
+ * conform/conformtest.pl: For XPG7 testing the headers are supposed to
+ be self-contained.
+
+ * conform/data/stdio.h-data: Expect off_t and ssize_t.
+
+2010-01-09 Ulrich Drepper <drepper@redhat.com>
+
+ * libio/stdio.h: Define va_list also for XPG7.
+
+ * conform/conformtest.pl: Update for XPG7 and some bug fixes.
+ * conform/data/ctype.h-data: Likewise.
+ * conform/data/dirent.h-data: Likewise.
+ * conform/data/errno.h-data: Likewise.
+ * conform/data/fcntl.h-data: Likewise.
+ * conform/data/fmtmsg.h-data: Likewise.
+ * conform/data/fnmatch.h-data: Likewise.
+ * conform/data/ftw.h-data: Likewise.
+ * conform/data/glob.h-data: Likewise.
+ * conform/data/grp.h-data: Likewise.
+ * conform/data/iconv.h-data: Likewise.
+ * conform/data/langinfo.h-data: Likewise.
+ * conform/data/libgen.h-data: Likewise.
+ * conform/data/limits.h-data: Likewise.
+ * conform/data/locale.h-data: Likewise.
+ * conform/data/math.h-data: Likewise.
+ * conform/data/monetary.h-data: Likewise.
+ * conform/data/mqueue.h-data: Likewise.
+ * conform/data/ndbm.h-data: Likewise.
+ * conform/data/netdb.h-data: Likewise.
+ * conform/data/pthread.h-data: Likewise.
+ * conform/data/pwd.h-data: Likewise.
+ * conform/data/regex.h-data: Likewise.
+ * conform/data/sched.h-data: Likewise.
+ * conform/data/search.h-data: Likewise.
+ * conform/data/semaphore.h-data: Likewise.
+ * conform/data/setjmp.h-data: Likewise.
+ * conform/data/signal.h-data: Likewise.
+ * conform/data/spawn.h-data: Likewise.
+ * conform/data/stdio.h-data: Likewise.
+ * conform/data/stdlib.h-data: Likewise.
+ * conform/data/string.h-data: Likewise.
+ * conform/data/strings.h-data: Likewise.
+ * conform/data/sys/ipc.h-data: Likewise.
+ * conform/data/sys/msg.h-data: Likewise.
+ * conform/data/sys/resource.h-data: Likewise.
+ * conform/data/sys/sem.h-data: Likewise.
+ * conform/data/sys/shm.h-data: Likewise.
+ * conform/data/sys/socket.h-data: Likewise.
+ * conform/data/sys/stat.h-data: Likewise.
+ * conform/data/sys/time.h-data: Likewise.
+ * conform/data/sys/types.h-data: Likewise.
+ * conform/data/sys/uio.h-data: Likewise.
+ * conform/data/sys/wait.h-data: Likewise.
+ * conform/data/syslog.h-data: Likewise.
+ * conform/data/tar.h-data: Likewise.
+ * conform/data/termios.h-data: Likewise.
+ * conform/data/time.h-data: Likewise.
+ * conform/data/ulimit.h-data: Likewise.
+ * conform/data/unistd.h-data: Likewise.
+ * conform/data/utmpx.h-data: Likewise.
+ * conform/data/wchar.h-data: Likewise.
+ * conform/data/wctype.h-data: Likewise.
+ * conform/data/wordexp.h-data: Likewise.
+
+ * io/fcntl.h: Define mode_t macros instead of including sys/stat.h.
+ * sysdeps/unix/bsd/bits/stat.h: Enable using from fcntl.h.
+ * sysdeps/unix/sysv/linux/powerpc/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/bits/stat.h: Likewise.
+ * sysdeps/mach/hurd/bits/stat.h: Likewise.
+
+ * stdlib/stdlib.h: Define wait-related bits for XPG7.
+ Don't declare valloc, mktemp, ecvt, fcvt, gcvt for XPG6 and up.
+ Declare mkstemp and getsubopt for XPG7.
+ Declare posix_openpt for XPG6 XSI.
+
+ * include/features.h: Define __USE_XOPEN2KXSI for _XOPEN_SOURCE >= 600
+ and __USE_XOPEN2K8XSI for _XOPEN_SOURCE >= 700.
+
+ * string/string.h: Declare strdup for XPG7.
+
+2010-01-08 Ulrich Drepper <drepper@redhat.com>
+
+ * bits/confname.h: Define _CS_V6_ENV and _CS_V7_ENV.
+ * posix/confstr.c: Implement _CS_V6_ENV and _CS_V7_ENV.
+
+ * dirent/dirent.h: Really fix feature selection.
+
+ * locale/localeinfo.h: Rename struct locale_data to __locale_data.
+ Fix all users.
+ * locale/C-address.c: Fix all users.
+ * locale/C-collate.c: Likewise.
+ * locale/C-ctype.c: Likewise.
+ * locale/C-identification.c: Likewise.
+ * locale/C-measurement.c: Likewise.
+ * locale/C-messages.c: Likewise.
+ * locale/C-monetary.c: Likewise.
+ * locale/C-name.c: Likewise.
+ * locale/C-numeric.c: Likewise.
+ * locale/C-paper.c: Likewise.
+ * locale/C-telephone.c: Likewise.
+ * locale/C-time.c: Likewise.
+ * locale/findlocale.c: Likewise.
+ * locale/global-locale.c: Likewise.
+ * locale/loadarchive.c: Likewise.
+ * locale/loadlocale.c: Likewise.
+ * locale/nl_langinfo_l.c: Likewise.
+ * locale/setlocale.c: Likewise.
+ * locale/xlocale.c: Likewise.
+ * locale/xlocale.h: Likewise.
+ * stdio-common/vfscanf.c: Likewise.
+ * stdlib/strfmon_l.c: Likewise.
+ * stdlib/strtod_l.c: Likewise.
+ * stdlib/strtol_l.c: Likewise.
+ * string/strcoll_l.c: Likewise.
+ * string/strxfrm_l.c: Likewise.
+ * time/alt_digit.c: Likewise.
+ * time/asctime.c: Likewise.
+ * time/era.c: Likewise.
+ * time/lc-time-cleanup.c: Likewise.
+ * time/strftime_l.c: Likewise.
+ * time/strptime_l.c: Likewise.
+ * wcsmbs/wcsmbsload.c: Likewise.
+ * wcsmbs/wcsmbsload.h: Likewise.
+
+ * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: Define O_DIRECTORY,
+ O_NOFOLLOW, O_CLOEXEC, F_DUPFD_CLOEXEC, F_SETOWN, and F_GETOWN
+ for XPG7.
+ * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise.
+
+2010-01-07 Roland McGrath <roland@redhat.com>
+
+ * elf/elf.h (PN_XNUM): New macro.
+
+ * elf/dl-sysdep.c (_dl_important_hwcaps): Use NT_GNU_HWCAP instead of
+ literal 2.
+
+2010-01-06 Ulrich Drepper <drepper@redhat.com>
+
+ * dirent/dirent.h: Fix typo in feature selection macro use.
+
+2009-12-15 Maciej W. Rozycki <macro@codesourcery.com>
+
+ [BZ #11115]
+ * stdlib/tst-makecontext3.c: New file.
+ * stdlib/Makefile (tests): Add new test.
+
+ * stdlib/tst-setcontext.c (check_called): Fix a typo.
+
+2009-12-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ * configure.in: Enable multi-arch by default if the assembler
+ supports gnu_indirect_function symbol type and the architecture
+ supports it.
+
+2009-12-23 Ulrich Drepper <drepper@redhat.com>
+
+ * include/stdlib.h: Exclude some includes and prototypes if _ISOMAC
+ is defined.
+
+2009-12-22 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * hurd/hurdioctl.c (_hurd_locked_install_cttyid): Set newctty to
+ MACH_PORT_NULL when id != cttyid.
+
+2009-12-20 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/mach/hurd/getcwd.c (cleanup): Do not call
+ __mach_port_deallocate on rootdevid.
+
+2009-12-17 Martin Schwidefsky <schwidefsky@de.ibm.com>
+
+ * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): Handle
+ R_390_PC32DBL. Remove unneeded R_390_PLT16DBL.
+ * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): Remove
+ unneeded R_390_PLT16DBL and R_390_PLT32DBL.
+
+2009-12-21 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10992]
+ * sysdeps/unix/sysv/linux/futimens.c: Handle AT_FDCWD.
+ Patch by Eric Blake <ebb9@byu.net>.
+
+2009-12-15 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #11093]
+ * bits/poll.h: Define POLLRDNORM, POLLRDBAND, POLLWRNORM, and
+ POLLWRBAND also for POSIX 2008.
+ * sysdeps/unix/sysv/linux/bits/poll.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/poll.h: Likewise.
+
+ * include/link.h (struct link_map): Move l_used into its own word.
+ * elf/dl-lookup.c (_dl_lookup_symbol_x): Only update l_used when it is
+ still zero.
+ * elf/dl-object.c (_dl_new_object): Set dl_used if we know it is
+ never really used.
+
+2009-12-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/i386/i686/multiarch/strcspn.S Include <init-arch.h>
+ instead of <ifunc-defines.h>. Use bit_XXX and index_XXX to
+ check processor feature.
+ * sysdeps/i386/i686/multiarch/strlen.S: Likewise.
+ * sysdeps/i386/i686/multiarch/strspn.S: Likewise.
+ * sysdeps/x86_64/multiarch/init-arch.h (bit_SSE2): New definition.
+ (index_SSE2): Likewise.
+
+2009-12-09 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/x86_64/multiarch/init-arch.h: Include <ifunc-defines.h>
+ if __ASSEMBLER__ is defined.
+ (bit_SSSE3): New. Defined for __ASSEMBLER__.
+ (bit_SSE4_2): Likewise.
+ (index_SSSE3): Likewise.
+ (index_SSE4_2): Likewise.
+ * sysdeps/x86_64/multiarch/rawmemchr.S: Include <init-arch.h>
+ instead of <ifunc-defines.h>. Use bit_XXX and index_XXX to
+ check processor feature.
+ * sysdeps/x86_64/multiarch/strchr.S: Likewise.
+ * sysdeps/x86_64/multiarch/strcmp.S: Likewise.
+ * sysdeps/x86_64/multiarch/strcpy.S: Likewise.
+ * sysdeps/x86_64/multiarch/strcspn.S: Likewise.
+ * sysdeps/x86_64/multiarch/strlen.S: Likewise.
+ * sysdeps/x86_64/multiarch/strrchr.S: Likewise.
+ * sysdeps/x86_64/multiarch/strspn.S: Likewise.
+
+2009-12-08 Kaz Kojima <kkojima@rr.iij4u.or.jp>
+
+ * sysdeps/sh/elf/initfini.c: Update according to generic/initfini.c.
+
+2009-12-01 Mike Frysinger <vapier@gentoo.org>
+
+ * sysdeps/sh/sh4/fpu/fpu_control.h (__set_fpscr): New prototype.
+
+2009-12-11 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: Redefine O_SYNC and
+ O_DSYNC to match 2.6.33+ kernels.
+ * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise.
+
+2009-12-10 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #11000]
+ * nis/nss_nis/nis-hosts.c (_nss_nis_gethostbyname4_r): Always set
+ *herrnop before returning.
+ * nis/nss_nisplus/nisplus-hosts.c (internal_gethostbyname2_r):
+ Likewise.
+ * nss/nss_files/files-hosts.c (_nss_files_gethostbyname4_r): Handle
+ TRYAGAIN errors separately.
+ * sysdeps/posix/getaddrinfo.c (gaih_inet): Fix error handling of
+ *name4_r after functions.
+
+2009-12-09 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #11046]
+ * sysdeps/unix/sysv/linux/ptsname.c (__ptsname_internal): Fix kernel
+ version check.
+
+2009-11-05 Bruno Haible <bruno@clisp.org>
+
+ [BZ #11056]
+ * posix/unistd.h (execve, fexecve, execv, execvp, execvpe): Mark the
+ argv argument as non-NULL.
+ (execle, execl, execlp): Mark the first ARG argument as non-NULL.
+
+-2009-12-08 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/bits/socket.h: Define mmsghdr and declare
+ recvmmsg.
+ * sysdeps/unix/sysv/linux/syscalls.list: Add entry for recvmmsg.
+ * sysdeps/unix/sysv/linux/Versions: Add recvmmsg for GLIBC_2.12.
+
+2009-12-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * sysdeps/s390/s390-64/dl-trampoline.S: Add CFI for the call saved
+ registers.
+ * sysdeps/s390/s390-32/dl-trampoline.S: Likewise.
+ * sysdeps/s390/s390-32/s390-mcount.S: Add CFI.
+ * sysdeps/s390/s390-64/s390x-mcount.S: Add CFI.
+
+2009-11-30 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/bits/sched.h: Define SCHED_IDLE and
+ SCHED_RESET_ON_FORK.
+
+2009-11-26 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/ptsname.c (__ptsname_internal): Avoid code
+ only used on truly ancient kernel if configuration requires a more
+ recent kernel.
+
+2009-11-24 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #3662]
+ * stdlib/random_r.c: Fix comments for __initstate_r and __setstate_r.
+ Patch by Christopher Neufeld <glibcbugs0000@cneufeld.ca>.
+
+ * sysdeps/unix/grantpt.c (pts_name): Take additional parameter,
+ pass it on to __ptsname_internal.
+ (grantpt): Pass stat64 pointer to pts_name. Remove stat call here.
+ * sysdeps/unix/sysv/linux/ptsname.c (__ptsname_internal): New function.
+ All the code from __ptsname_r but take additional parameter. Use that
+ instead of pointer to local stat64 variable.
+ (__ptsname_r): Call __ptsname_internal with pointer to local stat64
+ variable.
+ * include/stdlib.h: Declare __ptsname_internal.
+
+ * sysdeps/unix/grantpt.c (grantpt): Use CLOSE_ALL_FDS is available
+ before the exec.
+ * sysdeps/unix/sysv/linux/grantpt.c: New file.
+ * login/programs/pt_chown.c (main): Don't print message on errors
+ when doing real work.
+
+ * sysdeps/unix/grantpt.c (grantpt): Only get tty group information
+ once.
+
+ * csu/elf-init.c (__libc_csu_irel): New function. Code to perform
+ irel relocations split out from...
+ (__libc_csu_init): ...here.
+ * csu/libc-start.c [!SHARED]: Call __libc_csu_irel early.
+
+2009-11-23 Andreas Schwab <schwab@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/bits/stat.h: Use struct timespec
+ for timestamps also if __USE_XOPEN2K8.
+ * sysdeps/unix/sysv/linux/sparc/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/bits/stat.h: Likewise.
+
+2009-11-22 Ulrich Drepper <drepper@redhat.com>
+
+ * nscd/connections.c (restart): Try harder to re-exec.
+
+ * sunrpc/create_xid.c (_create_xid): Reinitialize state after fork.
+
+ * sysdeps/unix/sysv/linux/ntp_gettimex.c: New file.
+ * sysdeps/unix/sysv/linux/Makefile: Add rules to build ntp_gettimex.
+ * sysdeps/unix/sysv/linux/Versions: Export ntp_gettimex for GLIBC_2.12.
+ * sysdeps/unix/sysv/linux/sys/timex.h (ntptimeval): Add tai member and
+ some placeholders. Redirect ntp_gettime to ntp_gettimex.
+ * sysdeps/unix/sysv/linux/ntp_gettime.c: Adjust for header change.
+
+ * sysdeps/unix/sysv/linux/sys/timex.h (MOD_TAI, MOD_MICRO, MOD_NANO):
+ Define.
+ (STA_RONLY): Add STA_NANO, STA_MODE, and STA_CLK.
+
+2009-11-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ [BZ #10162]
+ * sysdeps/ia64/memchr.S: Don't use a simple loop on data shorter
+ than software pipeline. Properly recover from shorter read.
+
+2009-11-19 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10958]
+ * libio/libio.h (_IO_getwc_unlocked): Check for _wide_data being
+ initialized before using it.
+ (_IO_putwc_unlocked): Likewise.
+
+ [BZ #10918]
+ * sysdeps/unix/sysv/linux/bits/sched.h (__CPU_ISSET_S): Use __const
+ in cast to not throw away const-ness of parameters.
+ (__CPU_EQUAL_S): Likewise.
+ (__CPU_OP_S): Likewise.
+
+ * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: Introduce new symbol
+ F_OWNER_PGRP and mark F_OWNER_GID obsolete. The kernel people made
+ this gratuitous change and we have to keep compatibility.
+ * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise.
+
+2009-11-17 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: Change misleading names
+ of parameters of sync_file_range.
+ * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise.
+
+2009-11-16 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/unix/sysv/linux/sync_file_range.c (sync_file_range):
+ Implement using sync_file_range2 syscall if __NR_sync_file_range2
+ is defined.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c: New
+ file.
+
+2009-11-17 Paolo Bonzini <bonzini@gnu.org>
+
+ * posix/bug-regex30.c: New file.
+ * posix/Makefile: Add rules to build and run bug-regex30.
+ * posix/regcomp.c (re_compile_fastmap_iter): Add all multibyte
+ character lead bytes when there is a range in a COMPLEX_BRACKET.
+ Reported by Oleg Bylatov.
+
+2009-11-17 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10969]
+ * locale/duplocale.c (__duplocale): Handle LC_GLOBAL_LOCALE special.
+ * locale/tst-duplocale.c: New file.
+ * locale/Makefile (tests): Add tst-duplocale.
+
+ [BZ #10968]
+ * locale/langinfo.h (_NL_LOCALE_NAME): Correct definition.
+ Patch by Bruno Haible <bruno@clisp.org>.
+ * locale/tst-locname.c: New file.
+ * locale/Makefile (tests): Add tst-locname.
+
+ [BZ #10972]
+ * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Add new MADV_*
+ constants from recent kernels.
+ * sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/mman.h: Likewise.
+ * sysdeps/unix/sysv/linux/sh/bits/mman.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/mman.h: Likewise.
+
+2009-11-09 H.J. Lu <hongjiu.lu@intel.com>
+
+ [BZ #10162]
+ * sysdeps/ia64/memchr.S: Use a simple loop on data shorter than
+ software pipeline.
+
+2009-11-09 Mike Frysinger <vapier@gentoo.org>
+
+ * sysdeps/unix/sysv/linux/i386/fallocate.c: Include errno.h.
+ (fallocate): Return ENOSYS if __NR_fallocate is not defined.
+ * sysdeps/unix/sysv/linux/i386/fallocate64.c: Likewise.
+
+2009-11-06 Mike Frysinger <vapier@gentoo.org>
+
+ * posix/bug-regex29.c: Include stdio.h.
+
+2009-11-14 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10939]
+ * Versions.def: Define GLIBC_2.12 for libc.
+ * manual/errno.texi: Add ERFKILL entry.
+ * sysdeps/unix/sysv/linux/Versions: Add new errlist compat entries
+ for 2.12.
+ * sysdeps/unix/sysv/linux/bits/errno.h: Define ERFKILL is not done.
+ * sysdeps/unix/sysv/linux/sparc/bits/errno.h: Likewise.
+
+ * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: Update F_SETOWN_EX and
+ F_GETOWN_EX definitions according to corrected kernel definitions.
+ * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise.
+
+2009-11-12 Ulrich Drepper <drepper@redhat.com>
+
+ * version.h: Bump for 2.12 development.
+
+2009-11-10 Andreas Schwab <schwab@redhat.com>
+
+ * resolv/mapv4v6hostent.h (map_v4v6_hostent): Return non-zero if
+ out of buffer space.
+ * resolv/nss_dns/dns-host.c (getanswer_r): Check for
+ map_v4v6_hostent running out of space.
+
+2009-11-10 Ulrich Drepper <drepper@redhat.com>
+
+ * string/bits/string3.h (memset): If the second parameter is constant
+ and zero there is likely no transposition.
+ Patch by Caolan McNamara <caolanm@redhat.com.
+
+2009-11-04 Philippe De Muyter <phdm@macqel.be>
+
+ * sysdeps/powerpc/fpu/e_sqrt.c: Fix spelling of (Newton-)Raphson.
+ * sysdeps/powerpc/fpu/e_sqrtf.c: Likewise.
+
+2009-10-30 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ * malloc/memusagestat.c (main): Fix spelling in an error message.
+
+2009-11-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elf/dl-sym.c (do_sym): Properly handle STT_GNU_IFUNC symbols.
+ * elf/ifuncmain3.c (main): Test dlopen STT_GNU_IFUNC symbol.
+
+2009-11-03 Andreas Schwab <schwab@redhat.com>
+
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: Add
+ readahead.
+
+2009-11-03 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/powerpc/powerpc64/dl-machine.h (resolve_ifunc): Don't
+ relocate opd entry when resolving prelink conflicts.
+
+2009-11-04 Jakub Jelinek <jakub@redhat.com>
+
+ * misc/sys/uio.h (preadv, pwritev): Fix type of last argument
+ when -D_FILE_OFFSET_BITS=64.
+
+ * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h (fallocate): Fix types
+ of last two arguments when -D_FILE_OFFSET_BITS=64.
+ * sysdeps/unix/sysv/linux/i386/bits/fcntl.h (fallocate): Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/fcntl.h (fallocate): Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h (fallocate): Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h (fallocate): Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h (fallocate): Likewise.
+ * sysdeps/unix/sysv/linux/sh/bits/fcntl.h (fallocate): Likewise.
+
+2009-11-03 Andreas Schwab <schwab@linux-m68k.org>
+
+ [BZ #4457]
+ * sysdeps/generic/libgcc_s.h: New file.
+ * sysdeps/generic/framestate.c: Include it and use LIBGCC_S_SO.
+
+2009-11-01 Ulrich Drepper <drepper@redhat.com>
+
+ * malloc/hooks.c (free_check): Restore locking and call _int_free
+ appropriately.
+
+2009-10-30 Ulrich Drepper <drepper@redhat.com>
+
+ * version.h (VERSION): Bump for 2.11 release.
+ * include/features.h (__GLIBC_MINOR__): Bump to 11.
+
+ * elf/tst-execstack.c (do_test): Add cast to avoid warning.
+
+ * stdio-common/scanf13.c (main): Remove unused variable wbuf.
+
+ * stdlib/tst-strtol.c (tests): Mark one more constant as unsigned
+ to avoid warning.
+ * stdlib/tst-strtoll.c (tests): Likewise.
+
+ [BZ #9986]
+ * time/strftime_l.c (__strftime_internal): Allow %OC.
+
+ * misc/mkostemps.c: New file.
+ * misc/mkostemps64.c: New file.
+
+2009-10-30 Andreas Schwab <schwab@redhat.com>
+
+ * locale/programs/locale-spec.c: Include <error.h> and
+ <libintl.h>.
+
+ * sysdeps/unix/sysv/linux/readlinkat.c: Fix last change.
+
+2009-10-28 Roland McGrath <roland@redhat.com>
+
+ * Makefile (dist-prepare): New target.
+ (tag-for-dist): Target removed.
+ (glibc-%.tar): Pattern rule removed.
+ (%.tar): New pattern rule, does simple use of git archive.
+ (dist-version): Remove variable definition.
+ (dist): Just depend on that. Add .tar.xz dependency.
+ If dist-version variable not set on command line, depend on
+ dist-prepare, re-invoke with dist-version set via git describe.
+
+ * Makerules (%.xz): New pattern rule.
+
+2009-10-28 Alan Modra <amodra@bigpond.net.au>
+
+ * elf/ifuncdep2.c: Include ifunc-sel.h.
+ (global): Delete.
+ (foo1_ifunc, foo2_ifunc, foo3_ifunc): Use ifunc_sel.
+ * elf/ifuncmain1.c (global): Delete.
+ * elf/ifuncmain1vis.c: Likewise.
+ * elf/ifuncmain2.c: Likewise.
+ * elf/ifuncmain5.c: Likewise.
+ * elf/ifuncmod3.c: Likewise.
+ * elf/ifuncmain6pie.c: Include ifunc-sel.h.
+ (foo_ifunc): Use ifunc_one.
+ * elf/ifuncmain7.c: Likewise.
+ * elf/ifuncmod1.c: Include ifunc-sel.h.
+ (global): Define protected var.
+ (foo_ifunc, foo_hidden_ifunc, foo_protected_ifunc): Use ifunc_sel.
+ * elf/ifuncmod5.c: Likewise.
+ * sysdeps/generic/elf/ifunc-sel.h: New file.
+ * sysdeps/powerpc/elf/ifunc-sel.h: New file.
+
+2009-07-30 Alan Modra <amodra@bigpond.net.au>
+
+ * elf/elf.h (R_PPC_NUM, R_PPC64_NUM): Delete unused and incorrect.
+ (R_PPC_REL16*): Correct comments.
+ (R_PPC_IRELATIVE, R_PPC64_IRELATIVE, R_PPC64_JMP_IREL): Define.
+ (R_PPC64_REL16, R_PPC64_REL16_LO, R_PPC64_REL16_HI,
+ R_PPC64_REL16_HA): Define.
+ * sysdeps/powerpc/powerpc32/dl-irel.h: New file.
+ * sysdeps/powerpc/powerpc64/dl-irel.h: New file.
+ * sysdeps/powerpc/powerpc32/dl-machine.c (__elf_machine_fixup_plt):
+ Delete unused "reloc" param.
+ (__process_machine_rela): Handle R_PPC_IRELATIVE.
+ * sysdeps/powerpc/powerpc32/dl-machine.h (__elf_machine_fixup_plt):
+ Delete "reloc" param.
+ (elf_machine_rela): Handle STT_GNU_IFUNC functions and
+ R_PPC_IRELATIVE.
+ * sysdeps/powerpc/powerpc64/dl-machine.h (resolve_ifunc): New function.
+ (elf_machine_rela): Handle STT_GNU_IFUNC functions and new ifunc
+ relocations.
+
+d2009-10-30 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10315]
+ * sysdeps/gnu/netinet/udp.h: Define UDP_CORK, UDP_ENCAP,
+ UDP_ENCAP_ESPINUDP_NON_IKE, UDP_ENCAP_ESPINUDP, and
+ UDP_ENCAP_L2TPINUDP.
+
+ [BZ #10349]
+ * sysdeps/posix/tempname.c (__gen_tempname): Take new second
+ parameter, specifying length of prefix.
+ * stdio-common/tempname.c: Likewise.
+ * include/stdio.h: Adjust prototypes.
+ * libio/oldtmpfile.c: Adjust caller.
+ * misc/mkdtemp.c: Likewise.
+ * misc/mkostemp.c: Likewise.
+ * misc/mkostemp64.c: Likewise.
+ * misc/mkstemp.c: Likewise.
+ * misc/mkstemp64.c: Likewise.
+ * misc/mktemp.c: Likewise.
+ * stdio-common/tempnam.c: Likewise.
+ * stdio-common/tmpfile.c: Likewise.
+ * stdio-common/tmpnam.c: Likewise.
+ * stdio-common/tmpnam_r.c: Likewise.
+ * misc/mkstemps.c: New file.
+ * misc/mkstemps64.c: New file.
+ * stdlib/stdlib.h: Add prototypes.
+ * misc/Makefile (routines): Add mkstemps and mkstemps64.
+ * misc/Versions: Export mkstemps and mkstemps64 for GLIBC_2.11.
+
+2009-10-29 Ulrich Drepper <drepper@redhat.com>
+
+ * locale/iso-639.def: Add sml entry.
+
+ [BZ #10391]
+ * resolv/res_send.c (send_dg): Initialize resplen.
+
+ [BZ #10446]
+ * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Match sigevent
+ definition to the kernel's.
+ * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise.
+
+2009-08-18 Anders Johansson <ajohansson@novell.com>
+
+ * nscd/aicache.c: Fix mixing up dataset and dataset->resp
+ offsets and record sizes in assert()s and response sending.
+ * nscd/grpcache.c: Likewise.
+ * nscd/hstcache.c: Likewise.
+ * nscd/initgrcache.c: Likewise.
+ * nscd/pwdcache.c: Likewise.
+
+2009-10-29 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10540]
+ * nss/nss_files/files-hosts.c (_nss_files_gethostbyname4_r): If
+ /etc/hosts does not exist set errnop and herrnop appropriately.
+ Patch by Steve Langasek <vorlon@debian.org>.
+
+ [BZ #10553]
+ * malloc/malloc.c (malloc_info): Fix typos in format strings.
+ Patch by John Sullivan <jsrhbz@kanargh.force9.co.uk>.
+
+ [BZ #10564]
+ * login/utmp_file.c (TIMEOUT): Increase to 10.
+
+ [BZ #10609]
+ * sysdeps/unix/sysv/linux/faccessat.c: Fix handling of empty parameters
+ for file names in case the syscall is not available.
+ * sysdeps/unix/sysv/linux/fchmodat.c: Likewise.
+ * sysdeps/unix/sysv/linux/fchownat.c: Likewise.
+ * sysdeps/unix/sysv/linux/futimesat.c: Likewise.
+ * sysdeps/unix/sysv/linux/fxstatat.c: Likewise.
+ * sysdeps/unix/sysv/linux/fxstatat64.c: Likewise.
+ * sysdeps/unix/sysv/linux/i386/fchownat.c: Likewise.
+ * sysdeps/unix/sysv/linux/i386/fxstatat.c: Likewise.
+ * sysdeps/unix/sysv/linux/linkat.c: Likewise.
+ * sysdeps/unix/sysv/linux/mkdirat.c: Likewise.
+ * sysdeps/unix/sysv/linux/openat.c: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/fchownat.c: Likewise.
+ * sysdeps/unix/sysv/linux/readlinkat.c: Likewise.
+ * sysdeps/unix/sysv/linux/renameat.c: Likewise.
+ * sysdeps/unix/sysv/linux/symlinkat.c: Likewise.
+ * sysdeps/unix/sysv/linux/unlinkat.c: Likewise.
+ * sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c: Likewise.
+ * sysdeps/unix/sysv/linux/xmknodat.c: Likewise.
+
+ [BZ #10643]
+ * sysdeps/pthread/aio_misc.c (__aio_enqueue_request): If thread
+ creation filed, remove the request from the 'requests' list and signal
+ the caller that the request is finished.
+
+ [BZ #10692]
+ * nis/nss_nis/nis-grp.c (internal_nis_getgrent_r): Don't free buffer
+ in error if batch_read. Patch by Joe Landers <jlanders@vmware.com>.
+
+ [BZ #10713]
+ * nis/nss_nis/nis-grp.c (internal_nis_endgrent): Start freeing blocks
+ from intern.start. Patch by Joe Landers <jlanders@vmware.com>.
+
+ [BZ #10780]
+ * libio/ioputs.c (_IO_puts): Make sure to not return a number which
+ overflows the int return type.
+
+ [BZ #10717]
+ * malloc/memusagestat.c (main): Fix repairing of trace files. We also
+ have to compute maxsize_total, we have to update the variables, and
+ the also_total handling must happen after the repair.
+
+ [BZ #10742]
+ * nscd/dbg_log.c (dbg_log): Print timestamp before the message text.
+ Based on patch by Jeffrey Bastian <jbastian@redhat.com>.
+
+2009-10-27 Andreas Schwab <schwab@redhat.com>
+
+ * sysdeps/unix/sysv/linux/getpt.c (__posix_openpt): Make sure
+ errno is always set when returning unsuccessfully.
+
+2009-10-29 Andreas Schwab <schwab@redhat.com>
+
+ * malloc/memusage.c (update_data): Fix index wraparound handling
+ so that buffer_cnt is actually reset.
+
+2009-10-29 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10784]
+ * sysdeps/unix/sysv/linux/ttyname.c (getttyname): Always copy name
+ of the directory we look at into the static buffer if there is one
+ at the start of the loop.
+
+ [BZ #10789]
+ * sysdeps/generic/netinet/ip.h: Define IPTOS_ENC* and IPTOS_DSCP*
+ macros. Patch by Philip Prindeville <philipp@redfish-solutions.com>.
+
+ [BZ #10840]
+ * sysdeps/unix/sysv/linux/kernel-features.h: Define
+ __ASSUME_F_GETOWN_EX.
+ * sysdeps/unix/sysv/linux/fcntl.c: Implement F_GETOWN using F_GETOWN_EX
+ if possible.
+ * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
+
+ * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: Define F_OWNER_*
+ and f_owner_ex.
+ * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise.
+
+ [BZ #10847]
+ * sysdeps/gnu/getutmp.c: Allow compatibility code to play around with
+ getutmpx symbol.
+
+ [BZ #10823]
+ * resolv/res_send.c (__libc_res_nsend): Fix copying of IPv4 server
+ addresses. Patch by Petar Bogdanovic <petar@smokva.net>.
+
+2009-10-24 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/ieee754/ldbl-128/w_expl.c: Add hidden_def (__expl).
+
+2009-10-27 Jakub Jelinek <jakub@redhat.com>
+
+ [BZ #10817]
+ * math/w_coshl.c (__coshl): Use __finitel instead of __finite.
+ Reported by Ray Chason.
+
+2009-10-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
+ strend-sse4.
+ * sysdeps/x86_64/multiarch/strchr.S: New file.
+ * sysdeps/x86_64/multiarch/strend-sse4.S: New file.
+ * sysdeps/x86_64/multiarch/strrchr.S: New file.
+
+2009-10-21 Andreas Schwab <schwab@redhat.com>
+
+ * elf/dl-sym.c (do_sym): Resolve STT_GNU_IFUNC symbols.
+
+2009-10-19 Andreas Schwab <schwab@redhat.com>
+
+ * include/math.h: Add hidden protos for __exp/__expf/__expl.
+ * sysdeps/ieee754/dbl-64/w_exp.c: Add hidden alias.
+ * sysdeps/ieee754/flt-32/w_expf.c: Likewise.
+ * sysdeps/ieee754/ldbl-96/w_expl.c: Likewise.
+ * sysdeps/i386/fpu/s_expm1.S: Call __exp to handle overflow.
+ * sysdeps/i386/fpu/s_expm1f.S: Call __expf to handle overflow.
+ * sysdeps/i386/fpu/s_expm1l.S: Call __expl instead of
+ __ieee751_expl to handle overflow.
+
+2009-10-14 David S. Miller <davem@davemloft.net>
+
+ * sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S: New file.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S: New file.
+
+2009-10-13 Andreas Schwab <schwab@redhat.com>
+
+ * csu/elf-init.c (__libc_csu_init): Run preinit array even if
+ !USE_MULTIARCH.
+
+2009-10-08 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10730]
+ * stdlib/random_r.c (__initstate_r): Remove duplicate __set-errno.
+ Patch in part by Steve Ward <planet36@gmail.com>.
+
+ [BZ #10731]
+ * stdlib/rand_r.c: Fix typo.
+
+ * po/cs.po: Update from translation team.
+
+2009-10-06 Andreas Schwab <schwab@redhat.com>
+
+ * elf/dl-load.c (_dl_map_object_from_fd): Close fd before
+ returning if RTLD_NOLOAD.
+
+2009-10-06 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/x86_64/multiarch/strstr-c.c
+ [! SHARED]: Omit libc_hidden_builtin_def fiddling.
+
+ * sysdeps/x86_64/multiarch/strcasestr-c.c: Remove
+ libc_hidden_builtin_def fiddling, does not apply to strcasestr at all.
+
+ * sysdeps/x86_64/multiarch/init-arch.h
+ [NOT_IN_libc] (__get_cpu_features): Define it as a macro.
+ (HAS_CPU_FEATURE): New macro.
+ (HAS_SSE2, HAS_POPCOUNT, HAS_SSE4_2, HAS_FMA): Use it.
+ * sysdeps/x86_64/multiarch/init-arch.c
+ (__get_cpu_features): #undef it before definition.
+
+2009-10-05 Andreas Schwab <schwab@redhat.com>
+
+ * locale/C-time.c: Revert week-1stday back to 19971130 and set
+ first_weekday to 1 and first_workday to 2.
+
+2009-10-01 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: Define F_SETOWN_EX and
+ F_GETOWN_EX.
+ * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise.
+
+2009-09-28 Andreas Schwab <schwab@redhat.com>
+
+ * stdio-common/printf_fp.c: Check for and avoid integer overflows.
+ * stdio-common/vfprintf.c: Likewise.
+
+2009-09-27 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/mach/hurd/mkdirat.c: Include <hurd/fd.h>.
+ (mkdirat): Call __directory_name_split_at instead of
+ __directory_name_split.
+
+2009-09-28 Ulrich Drepper <drepper@redhat.com>
+
+ * locale/programs/locale-spec.c (locale_special): If nothing matches
+ fail with an appropriate message.
+
+2009-09-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ * configure.in: Exclude binutils 2.X. Support binutils 2.100
+ and XX.
+
+2009-09-25 Andreas Schwab <schwab@redhat.com>
+
+ * elf/dl-reloc.c (RESOLVE_MAP): Always pass
+ DL_LOOKUP_ADD_DEPENDENCY to _dl_lookup_symbol_x.
+
+2009-09-28 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * bits/termios.h [__USE_UNIX98] (IXANY): Define macro.
+
+2009-09-20 Andreas Schwab <schwab@linux-m68k.org>
+
+ * iconvdata/iso646.c (gconv_init): Correctly initialize the
+ character size elements in step data.
+
+2009-09-20 Ulrich Drepper <drepper@redhat.com>
+
+ * po/hu.po: Update from translation team.
+ * po/vi.po: Likewise.
+
+2009-09-19 Roland McGrath <roland@redhat.com>
+
+ * libio/wfileops.c (_IO_wfile_seekoff): Remove unused variables.
+
+2009-09-15 Roland McGrath <roland@redhat.com>
+
+ * aclocal.m4 (GLIBC_PROVIDES): Add _AS_ECHO_PREPARE.
+ * nptl/sysdeps/pthread/configure: Regenerated.
+ * nptl/sysdeps/x86_64/configure: Regenerated.
+ * sysdeps/unix/sysv/linux/configure: Regenerated.
+ * sysdeps/x86_64/elf/configure: Regenerated.
+
+ * Makefile (autoconf-it): Set execute bit only on top-level configure.
+
+ * configure.in: Let add-ons set $libc_add_on_config_subdirs to have
+ the effect of AC_CONFIG_SUBDIRS relative to the add-on directory.
+ * aclocal.m4 (GLIBC_PROVIDES): Add AC_CONFIG_SUBDIRS.
+ * configure: Regenerated.
+
+2009-09-09 Ulrich Drepper <drepper@redhat.com>
+
+ * posix/getconf.c (main): Handle -- on command line.
+
+2009-09-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ * configure.in: Support binutils 2.100 and 3.0.
+
+2009-09-08 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/s390/s390-32/____longjmp_chk.c: Removed.
+ * sysdeps/s390/s390-64/____longjmp_chk.c: Removed.
+ * sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c: New file.
+
+2009-09-07 Ulrich Drepper <drepper@redhat.com>
+
+ * locale/programs/ld-collate.c (struct locale_collate_t): Add
+ unnamed_section_defined field.
+ (collate_read): Test and set unnamed_section_defined.
+
+ * posix/getconf.c (vars): Handle POSIX2_LINE_MAX in addition to
+ _POSIX2_LINE_MAX.
+
+2009-09-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ * configure.in: Support binutils 2.20.
+
+2009-09-03 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/i386/i686/multiarch/strstr-c.c (__strstr_sse42,
+ __strstr_ia32): Add attribute_hidden.
+
+2009-09-01 Andreas Schwab <schwab@redhat.com>
+
+ * hesiod/nss_hesiod/hesiod-grp.c (internal_gid_from_group): Fix
+ parsing of group entry.
+
+2009-09-02 Andreas Schwab <schwab@redhat.com>
+
+ * libio/wfileops.c (_IO_wfile_seekoff): Account for readahead in
+ external buffer. Always discard readahead in internal buffer.
+ * libio/Makefile (tests): Add bug-wsetpos.
+ * libio/bug-wsetpos.c: New file.
+
+2009-09-02 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/x86_64/multiarch/strstr-c.c (__strstr_sse42, __strstr_sse2):
+ Add attribute_hidden.
+ * sysdeps/x86_64/multiarch/strcasestr-c.c (__strcasestr_sse42,
+ __strcasestr_sse2): Likewise.
+ * sysdeps/x86_64/multiarch/s_fma.c (__fma_sse2): Add attribute_hidden.
+ (__fma_fma): Make static.
+ * sysdeps/x86_64/multiarch/s_fmaf.c (__fmaf_sse2): Add attribute_hidden.
+ (__fmaf_fma): Make static.
+
+2009-08-31 Andreas Schwab <schwab@redhat.com>
+
+ * libio/wfileops.c (_IO_wfile_seekoff): Remove dead code and
+ reformulate in-buffer optimisation check to match code in
+ _IO_new_file_seekoff.
+
+2009-08-31 Joshua W. Boyer <jwboyer@linux.vnet.ibm.com>
+
+ * sysdeps/powerpc/powerpc32/power6/memcpy.S: Change srdi instruction
+ to srwi in 32-bit memcpy for power6.
+
+2009-09-01 Andreas Schwab <schwab@redhat.com>
+
+ * include/stdio.h: Declare hidden proto for fflush.
+ * libio/iofflush.c: Add hidden weak alias for fflush.
+
+2009-09-01 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/x86_64/fpu/bits/mathinline.h: Include bits/wordsize.h.
+ (__signbitf, __signbit): Only use SSE inline asm for 64-bit.
+
+2009-08-31 Andreas Schwab <schwab@redhat.com>
+
+ * sysdeps/x86_64/fpu/bits/mathinline.h: Use __asm instead of asm.
+
+2009-08-31 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10560]
+ * malloc/malloc.c: Add local assert definition to avoid problems with
+ memory allocation in the real one.
+
+2009-08-27 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/i386/i686/multiarch/init-arch.c (ENABLE_SSSE3_ON_ATOM):
+ Removed.
+ * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): Don't
+ turn off SSSE3 on Atom.
+
+2009-08-28 Ulrich Drepper <drepper@redhat.com>
+
+ * stdlib/tst-strtol.c (tests): More tests.
+ * stdlib/tst-strtoll.c (tests): Likewise.
+
+2009-08-26 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c: New file.
+
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c: New file.
+
+2009-08-25 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_lround.c: Add llround aliases.
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_llround.c: New file.
+
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c: New file
+
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_rint.c: New file.
+
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_round.c: New file.
+
+2009-08-25 Joseph Myers <joseph@codesourcery.com>
+
+ * math/s_fdiml.c (__fdiml): Use fpclassify instead of fpclassifyl.
+
+2009-08-25 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/fpu/s_scalbln.c: New file.
+ * sysdeps/x86_64/fpu/s_scalbn.c: New file.
+
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c: New file.
+
+ * sysdeps/x86_64/fpu/s_signbit.S: New file.
+ * sysdeps/x86_64/fpu/s_signbitf.S: New file.
+
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_lround.c: New file.
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c: New file.
+
+ * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Remove
+ leftover YMM_SIZE definition.
+
+2009-08-24 Ulrich Drepper <drepper@redhat.com>
+
+ * math/math_private.h (ieee_double_shape_type): Add uint64_t word to
+ union.
+ (EXTRACT_WORDS64, INSERT_WORDS64): Define.
+ * sysdeps/x86_64/fpu/math_private.h (EXTRACT_WORDS64, INSERT_WORDS64):
+ Redefine.
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_ceil.c: New file.
+
+ * sysdeps/x86_64/fpu/math_private.h: Add specialized GET_FLOAT_WORD
+ and SET_FLOAT_WORD definitions.
+
+2009-08-24 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/unix/syscall-template.S: New file.
+ * sysdeps/unix/make-syscalls.sh: Generate rules to use it.
+ * sysdeps/unix/Makefile (omit-deps): Do not omit syscall stubs' deps.
+ (compile-syscall): Pass mkdep and -g options as normal.
+ (s-proto.d, s-proto-cancel.d): Don't "-include" these.
+ (common-generated): Don't add them here.
+
+2009-08-24 Ulrich Drepper <drepper@redhat.com>
+
+ * math/s_fdim.c: In case of overflows set errno.
+ * math/s_fdimf.c: Likewise.
+ * math/s_fdiml.c: Likewise.
+
+ * math/math.h: Define math_errhandling of __FAST_MATH__ is not defined.
+ * sysdeps/i386/fpu/bits/mathinline.h: Undefine math_errhandling if we
+ are using the inline optimizations.
+
+ * sysdeps/x86_64/fpu/bits/mathinline.h (__signbit): Optimize.
+ (__signbitf): Likewise.
+
+2009-08-23 Ulrich Drepper <drepper@redhat.com>
+
+ * posix/regcomp.c (parse_dup_op): Verify the expression is correctly
+ terminated.
+ * posix/Makefile (tests): Add bug-regex29.
+ * posix/bug-regex29.c: New file.
+
+ * posix/unistd.h: Define _POSIX_VERSION and _POSIX2_* correctly if
+ older POSIX versions are selected.
+
+ * stdio-common/printf_fp.c: ISO C expects to print the sign of NaN
+ as well.
+ * stdio-common/printf_fphex.c: Likewise.
+ * stdio-common/tstdiomisc.c: Add more tests.
+
+ * locale/locale.h: Include xlocale.h and the thread-local locale
+ declarations for XPG7, not XPG6.
+
+2009-08-21 Andreas Schwab <schwab@redhat.com>
+
+ * sysdeps/powerpc/powerpc32/____longjmp_chk.S: Removed.
+ * sysdeps/powerpc/powerpc64/____longjmp_chk.S: Removed.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S: New file.
+ * sysdeps/powerpc/powerpc32/__longjmp-common.S: Move CHECK_SP earlier.
+ * sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Likewise.
+
+2009-08-20 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols):
+ Use l_addr instead of l_map_start (dli_fbase).
+ Print "FILE([+-]OFFSET) [ADDRESS]" with the file-relative
+ address when there is no proximate symbol.
+ * sysdeps/generic/elf/backtracesymsfd.c (__backtrace_symbols_fd):
+ Likewise.
+
+2009-08-16 Ulrich Drepper <drepper@redhat.com>
+
+ * scripts/gen-as-const.awk: Fix test for 64-bit platform.
+
+2009-08-14 Ulrich Drepper <drepper@redhat.com>
+
+ * test-skeleton.c (signal_handler): Renamed from timeout_handler.
+ Also handle SIGINT. In that case only do the cleanup and then
+ re-raise the signal.
+ (main): Install handler for SIGINT.
+
+2009-08-10 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
+
+ * stdlib/longlong.h [__sh__] (udiv_qrnnd, sub_ddmmss): Add "t" to
+ clobber list.
+
+2009-08-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elf/Makefile (distribute): Add tst-audit6.c tst-auditmod6a.c
+ tst-auditmod6b.c tst-auditmod6c.c tst-audit7.c tst-auditmod7a.c
+ tst-auditmod7b.c.
+ (tests): Add tst-audit6 tst-audit7.
+ (modules-names): Add st-auditmod6a tst-auditmod6b tst-auditmod6c
+ tst-auditmod7a tst-auditmod7b.
+ ($(objpfx)tst-audit6): New.
+ ($(objpfx)tst-audit6.out): Likewise.
+ ($(objpfx)tst-audit7): Likewise.
+ ($(objpfx)tst-audit7.out): Likewise.
+ (tst-audit6-ENV): Likewise.
+ (tst-audit7-ENV): Likewise.
+ (CFLAGS-tst-auditmod6b.c): Likewise.
+ (CFLAGS-tst-auditmod6c.c): Likewise.
+ (CFLAGS-tst-auditmod7b.c): Likewise.
+ * elf/tst-audit6.c: New file.
+ * elf/tst-audit7.c: New file.
+ * elf/tst-auditmod6a.c: New file.
+ * elf/tst-auditmod6b.c: New file.
+ * elf/tst-auditmod6c.c: New file.
+ * elf/tst-auditmod7a.c: New file.
+ * elf/tst-auditmod7b.c: New file.
+ * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Move
+ saving and restoring SSE/AVX registers to ...
+ * sysdeps/x86_64/dl-trampoline.h: This. New file.
+
+2009-08-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/i386/i686/multiarch/strcspn.S (STRCSPN): Use PIC
+ only if SHARED is defined.
+ * sysdeps/i386/i686/multiarch/strspn.S (strspn): Likewise.
+
+2009-08-03 Jim Meyering <meyering@redhat.com>
+
+ * sysdeps/i386/configure.in: Use AC_HEADER_CHECK.
+
+2009-08-08 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/multiarch/strlen.S: Move SSE4.2 version into the same
+ section as the other functions for this architecture.
+ * sysdeps/x86_64/multiarch/rawmemchr.S: Likewise.
+
+2009-08-07 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/strcmp.S: Add support to compile with
+ USE_SSSE3. In this case palignr is used.
+ * sysdeps/x86_64/multiarch/strcmp.S (strcmp): If SSE4.2 is not
+ available but SSSE3 is, pick __str{,n}cmp_ssse3.
+ * sysdeps/x86_64/multiarch/Makefile [subdir=string] (sysdep_routines):
+ Add strcmp-ssse3 and strncmp-ssse3.
+ * sysdeps/x86_64/multiarch/strcmp-ssse3.S: New file.
+ * sysdeps/x86_64/multiarch/strncmp-ssse3.S: New file.
+
+ * sysdeps/x86_64/multiarch/strcspn-c.c (STRCSPN_SSE42): Avoid
+ warning through fake initialization.
+
+2009-08-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/i386/i686/multiarch/strlen.S (ENTRY): Add the missing "; \".
+
+2009-08-07 Andreas Schwab <schwab@redhat.com>
+
+ * elf/dl-lookup.c (do_lookup_x): Enter correct name into table of
+ unique symbols.
+
+2009-08-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): Properly use
+ EBX from EAX = 1. Handle EAX = 11.
+
+2009-08-07 Andreas Schwab <schwab@redhat.com>
+
+ * Makefile (TAGS): Use separate sed -e expressions to avoid \
+ inside ''.
+
+2009-08-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/i386/i686/multiarch/strcspn.S: Add comments for no
+ hidden IFUNC functions.
+ * sysdeps/i386/i686/multiarch/strspn.S: Likewise.
+
+ * sysdeps/i386/i686/multiarch/strlen.S: New file.
+
+ * sysdeps/i386/i686/multiarch/Makefile [subdir=string]
+ (sysdep_routines): Add strcspn-c, strpbrk-c, strspn-c, strstr-c, and
+ strcasestr-c.
+ (CFLAGS-strcspn-c.c): Define.
+ (CFLAGS-strpbrk-c.c): Define.
+ (CFLAGS-strspn-c.c): Define.
+ (CFLAGS-strstr.c): Define.
+ (CFLAGS-strcasestr.c): Define.
+ * sysdeps/i386/i686/multiarch/strcspn-c.c: New file.
+ * sysdeps/i386/i686/multiarch/strcspn.S: New file.
+ * sysdeps/i386/i686/multiarch/strpbrk-c.c: New file.
+ * sysdeps/i386/i686/multiarch/strpbrk.S: New file.
+ * sysdeps/i386/i686/multiarch/strspn-c.c: New file.
+ * sysdeps/i386/i686/multiarch/strspn.S: New file.
+ * sysdeps/i386/i686/multiarch/strstr-c.c: New file.
+ * sysdeps/i386/i686/multiarch/strstr.c: New file.
+ * sysdeps/i386/i686/multiarch/strcasestr-c.c: New file.
+ * sysdeps/i386/i686/multiarch/strcasestr.c: New file.
+ * sysdeps/x86_64/multiarch/strcspn-c.c (STRCSPN_SSE42): Use
+ -16L instead of 0xfffffffffffffff0L.
+ * sysdeps/x86_64/multiarch/strspn-c.c (__strspn_sse42): Likewise.
+
+2009-08-02 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/i386/configure.in: Add test for <cpuid.h>.
+
+2009-07-31 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S (longjmp_msg): Yet
+ another rewrite. Much smaller and faster.
+ * sysdeps/unix/sysv/linux/i386/____longjmp_chk.S: Likewise.
+
+ * sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S (longjmp_msg): Get
+ ss_flags from the correct location.
+
+2009-07-31 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/i386/i686/Makefile (sysdep_routines): Add cacheinfo.
+ * sysdeps/i386/i686/cacheinfo.c: New file.
+ * sysdeps/i386/i686/multiarch/Makefile: New file.
+ * sysdeps/i386/i686/multiarch/ifunc-defines.sym: New file.
+ * sysdeps/i386/i686/multiarch/init-arch.c: New file.
+ * sysdeps/i386/i686/multiarch/init-arch.h: New file.
+ * sysdeps/i386/i686/multiarch/sched_cpucount.c: New file.
+ * sysdeps/unix/sysv/linux/i386/i686/sysconf.c: New file.
+ * sysdeps/x86_64/cacheinfo.c: Include <cpuid.h>.
+ (__cpuid_count): New. Provide the default.
+ (__x86_64_prefetchw): Define only if DISABLE_PREFETCHW is not defined.
+ (__x86_64_preferred_memory_instruction): Define only if
+ DISABLE_PREFERRED_MEMORY_INSTRUCTION is not defined.
+ (intel_check_word): Use __cpuid.
+ (handle_intel): Likewise.
+ (handle_amd): Likewise.
+ (__cache_sysconf): Likewise.
+ (init_cacheinfo): Updated. Use __cpuid and __cpuid_count.
+ (__cache_sysconf): Likewise.
+ (init_cacheinfo): Updated. Use __cpuid and __cpuid_count.
+ * sysdeps/x86_64/multiarch/init-arch.c: Include <cpuid.h>.
+ (get_common_indeces): Use __cpuid.
+ (__init_cpu_features): Likewise. Disable SSSE3 on Atom only
+ if ENABLE_SSSE3_ON_ATOM is not defined.
+ * sysdeps/x86_64/multiarch/init-arch.h (HAS_SSE2): Define.
+ * sysdeps/x86_64/multiarch/sched_cpucount.c (POPCNT): Use
+ popcnt instead of popcntq.
+
+2009-07-31 Jakub Jelinek <jakub@redhat.com>
+
+ * malloc/Makefile (CFLAGS-obstack.c): Add $(uses-callbacks).
+
+2009-07-30 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/____longjmp_chk.S: New file.
+ * sysdeps/i386/____longjmp_chk.S: Remove all code. This is now a file
+ which always causes a compile error.
+
+ * sysdeps/i386/__longjmp.S: Remove bound-checking pointer support.
+
+ * sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S: New file. Content
+ comes from...
+ * sysdeps/x86_64/____longjmp_chk.S: ...here. This is now a file
+ which always causes a compile error.
+
+ * debug/Makefile (tests): Add tst-longjmp_chk2.
+ * debug/tst-longjmp_chk2.c: New file.
+
+ * sysdeps/x86_64/__longjmp.S: Remove CHECK_RSP handling. Fix CFI.
+ Remove incorrect use of BP_SYM.
+ * sysdeps/x86_64/____longjmp_chk.S: Rewrite. Complete implementation
+ here now since it is more complex than just a simple check.
+
+ * sysdeps/ia64/backtrace.c (backtrace_helper): Stop backtrace when
+ we make no more progress.
+
+2009-07-29 Ulrich Drepper <drepper@redhat.com>
+
+ * math/s_fma.c: Don't define alias if __fma is a macro.
+ * math/s_fmaf.c: Likewise.
+ * sysdeps/x86_64/multiarch/s_fma.c: New file.
+ * sysdeps/x86_64/multiarch/s_fmaf.c: New file.
+ Partially based on a patch by H.J. Lu <hongjiu.lu@intel.com>.
+
+ * sysdeps/x86_64/multiarch/init-arch.h (__get_cpu_features): Declare.
+ (HAS_POPCOUNT, HAS_SSE4_2): Add variants which work outside libc.
+ New macro HAS_FMA.
+ * sysdeps/x86_64/multiarch/init-arch.c (__get_cpu_features): New
+ function.
+ * include/libc-symbols.h (libm_ifunc): Define.
+ * sysdeps/x86_64/multiarch/Versions: New file.
+
+ * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Improve CFI.
+
+2009-07-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/x86_64/dl-trampoline.S: Properly restore AVX registers.
+
+2009-07-29 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/dl-runtime.c (_dl_fixup): Indicate before _dl_lookup_symbol_x
+ call that registers used in calling conventions need to be preserved.
+ * elf/dl-lookup.c (do_lookup_x): Use RTLD_*_FOREIGN_CALL macros
+ to preserve register content if necessary.
+ * sysdeps/x86_64/dl-trampoline.S (_dl_x86_64_save_sse): New function.
+ (_dl_x86_64_restore_sse): New function.
+ * sysdeps/x86_64/tst-xmmymm.sh: There is now one more function that
+ is allowed to modify xmm/ymm registers.
+
+ * stdio-common/scanf15.c: Undefine _LIBC. We want to test from an
+ application's perspective.
+ * stdio-common/scanf17.c: Likewise.
+
+2009-07-28 Ulrich Drepper <drepper@redhat.com>
+
+ * csu/libc-tls.c (__libc_setup_tls) [TLS_TCB_AT_TP]: Don't add TCB
+ size to memsz.
+ (init_static_tls) [TLS_TCB_AT_TP]: Add it to GL(dl_tls_static_size)
+ here.
+ * elf/dl-reloc.c (_dl_try_allocate_static_tls): Compute freebytes in
+ two steps to catch bugs.
+
+2009-07-27 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/tst-xmmymm.sh: Refine testing. The script now
+ determines which files are used in runtime lookups and only checks
+ those for SSE use.
+ * sysdeps/x86_64/rtld-memchr.c: Removed. Not needed with refined
+ testing.
+ * sysdeps/x86_64/rtld-rawmemchr.c: Removed.
+ * sysdeps/x86_64/multiarch/rtld-rawmemchr.c: Removed
+ * sysdeps/x86_64/Makefile: Emit warning that tst-xmmymm.sh might
+ take a while.
+
+ * elf/dl-open.c: Move _dl_scope_free to...
+ * elf/dl-scope.c: ...here. New file.
+ * elf/Makefile (dl-routines): Add scope.
+
+ * resolv/resolv.h (RES_USE_DNSSEC): Define.
+ * resolv/res_debug.c (p_option): Handle RES_USE_EDNS0 and
+ RES_USE_DNSSEC.
+ * resolv/res_mkquery.c (__res_nopt): Set flags for RES_USE_DNSSEC.
+ * resolv/res_query.c (__libc_res_nquery): Handle RES_USE_DNSSEC in
+ all the places we handled RES_USE_EDNS0 only before.
+ Patch by Adam Tkac <atkac@redhat.com>.
+
+2009-07-27 Jakub Jelinek <jakub@redhat.com>
+
+ * elf/dl-lookup.c (do_lookup_x): Fix check for table more than
+ 3/4 full. Pass size + 1 rather than size to _dl_higher_prime_number.
+ Update size when reallocating.
+
+2009-07-26 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/tst-xmmymm.sh: New file. Check whether any of the
+ functions used in ld.so modify xmm/ymm registers.
+ * sysdeps/x86_64/Makefile: Hook new test up.
+ * sysdeps/x86_64/rtld-memchr.c: New file.
+ * sysdeps/x86_64/rtld-memcmp.c: New file.
+ * sysdeps/x86_64/rtld-rawmemchr.c: New file.
+ * sysdeps/x86_64/rtld-strchr.S: New file.
+ * sysdeps/x86_64/rtld-strlen.S: New file.
+ * sysdeps/x86_64/multiarch/rtld-rawmemchr.c: New file.
+ * sysdeps/x86_64/multiarch/rtld-strlen.S: New file.
+
+2009-07-26 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Remove
+ strncmp-c.
+ * sysdeps/x86_64/multiarch/strcmp.S (aftertail): Removed.
+ (exit): Likewise.
+ (Byte1): Likewise.
+ (Byte2): Likewise.
+ (Byte3): Likewise.
+ (Byte4): Likewise.
+ (Byte5): Likewise.
+ (Byte6): Likewise.
+ (next_8_bytes): Likewise.
+ (Byte0): Remove commented out codes.
+ (unaligned_table): Align jump table at 8 bytes.
+ Add _sse4_2 to all labels. Always include "../strcmp.S".
+ * sysdeps/x86_64/multiarch/strncmp-c.c: Removed.
+ * sysdeps/x86_64/strcmp.S: Add SSE2 support.
+ * sysdeps/x86_64/strncmp.S: New file.
+
+2009-07-26 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10422]
+ * sysdeps/unix/sysv/linux/eventfd.c: Add compatibility for old
+ kernels, dropped when eventfd2 support was added.
+ * sysdeps/unix/sysv/linux/signalfd.c: Add compatibility for old
+ kernels, dropped when signalfd4 support was added.
+ * sysdeps/unix/sysv/linux/kernel-features.h: More CLOEXEC syscalls
+ added, name them.
+
+ [BZ #10452]
+ * resolv/res_send.c (send_dg): Pass full SERVFAIL, NOTIMP, REFUSED
+ replies up.
+
+ * elf/elf.h: Define NT_GNU_GOLD_VERSION.
+
+2009-07-25 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/multiarch/strcmp.S: Some more optimizations for
+ modern processor versions. Patch by H.J. Lu <hongjiu.lu@intel.com>.
+
+ [BZ #10448]
+ * sysdeps/posix/getaddrinfo.c (gaih_inet): If NSS module contains no
+ callback we must touch the status to avoid using stale value.
+
+ * sysdeps/x86_64/multiarch/strcmp.S: Exclude unused code from being
+ compiled in.
+
+2009-07-24 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/configure.in: Don't automatically include
+ /lib/modules/* headers anymore. We have sane headers in the standard
+ place now.
+
+2009-06-16 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * sysdeps/s390/dl-procinfo.c (_dl_s390_cap_flags): "hpage",
+ "etf3enh" and "highgprs" added.
+ (_dl_s390_platforms): "z10" added.
+ * sysdeps/s390/dl-procinfo.h (_DL_HWCAP_COUNT, _DL_PLATFORMS_COUNT):
+ Increased for the new entries.
+ (HWCAP enum): HWCAP_S390_HPAGE, HWCAP_S390_ETF3EH and
+ HWCAP_S390_HIGH_GPRS added.
+
+ * sysdeps/s390/s390-64/Makefile: Adjusted to build the new modules.
+ * sysdeps/s390/s390-64/iso-8859-1_cp037_z900.c: New file.
+ * sysdeps/s390/s390-64/utf16-utf32-z9.c: New file.
+ * sysdeps/s390/s390-64/utf8-utf16-z9.c: New file.
+ * sysdeps/s390/s390-64/utf8-utf32-z9.c: New file.
+
+2009-07-23 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/cacheinfo.c [USE_MULTIARCH]: Rearrange code to
+ avoid additional cpuid instructions. Most of the information is
+ stored somewhere.
+
+ * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_02_known): Add more
+ cache descriptors.
+ * sysdeps/x86_64/cacheinfo.c (intel_02_known): Likewise.
+
+ * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): Reset
+ SSSE3 bit for Atoms.
+ * sysdeps/x86_64/multiarch/strcpy.S: New need to perform Atom test
+ here anymore.
+
+ * posix/tst-rfc3484.c (do_test): Initialize entire sockaddr_in
+ structure before copying it to avoid warning.
+ * posix/tst-rfc3484-2.c (do_test): Likewise.
+ * posix/tst-rfc3484-3.c (do_test): Likewise.
+
+ [BZ #10416]
+ * include/unistd.h: Make header file suitable for C++ test cases.
+ Patch by Duncan Simpson <dps@simpson.demon.co.uk>.
+
+ * sysdeps/unix/sysv/linux/i386/makecontext.S: Ensure we preserve the
+ stack alignment in the exit code.
+
+ * elf/dl-lookup.c (dl_lookup_x): The hashval for unique symbol can
+ potentially be zero.
+
+ * elf/tst-unique1.c: Extend test to check for unloading DSO with
+ unique symbol definition.
+ Patch by Jakub Jelinek.
+ * elf/dl-lookup.c (do_lookup_x): When entering a new unique symbol,
+ make sure the object with the definition cannot be unloaded. Adjust
+ a few types.
+ * sysdeps/generic/ldsodefs.h (struct rtld_global): The map element in
+ the unique symbol hash table should not be const.
+
+2009-07-21 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/multiarch/strstr.c: Minor cleanups. Remove
+ unnecesary variables. Comment fixes.
+
+2009-07-20 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/multiarch/strstr.c [USE_AS_STRCASESTR] (STRSTR_SSE42):
+ Use NONASCII_CASE information provided by the locale to determine
+ whether optimized string load function can be used. Minor cleanups.
+
+2009-07-20 H.J. Lu <hongjiu.lu@intel.com>
+
+ * string/strcasestr.c (STRCASESTR): New macro.
+ (__strcasestr): Renamed to ..
+ (STRCASESTR): ...this.
+ * string/strstr.c (STRSTR): New macro.
+ (strstr): Renamed to ..
+ (STRSTR): ...this.
+ * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
+ strstr-c strcasestr-c
+ (CFLAGS-strstr.c): New.
+ (CFLAGS-strcasestr.c): Likewise.
+ * sysdeps/x86_64/multiarch/strcasestr-c.c: New file.
+ * sysdeps/x86_64/multiarch/strcasestr.c: New file.
+ * sysdeps/x86_64/multiarch/strstr-c.c: New file.
+ * sysdeps/x86_64/multiarch/strstr.c: New file.
+
+2009-07-20 Ulrich Drepper <drepper@redhat.com>
+
+ * locale/localeinfo.h (LIMAGIC): Update value for LC_CTYPE.
+ * locale/langinfo.h: Define _NL_CTYPE_NONASCII_CASE.
+ * locale/C-ctype.c (_nl_C_LC_CTYPE): Add initializer for
+ _NL_CTYPE_NONASCII_CASE.
+ * locale/programs/ld-ctype.c (locale_ctype_t): Add nonascii_case
+ field.
+ (ctype_finish): Check whether there are any 8-bit characters outside
+ the range ASCII has or whether the mapping isn't the same as for
+ ASCII (±0x20). Set nonascii_case appropriately.
+ (ctype_output): Add output handler for nonascii_case.
+
+2009-07-17 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/generic/sysdep.h: Define cfi_personality, cfi_lsda,
+ CFI_PERSONALITY, CFI_LSDA, and DW_EH_PE_* constants.
+
+2009-07-16 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10360]
+ * resolv/res-mkquery.c (__res_nopt): If anslen is > 0xffff store
+ 0xffff in the EDNS0 record.
+
+2009-07-16 Ulrich Drepper <drepper@redhat.com>
+
+ * nscd/cache.c (cache_add): Use atomic_compare_and_exchange_bool_rel
+ instead of atomic_compare_and_exchange_bool_acq to ensure pointer
+ is written before the list head update.
+ Patch by Andreas Schwab <aschwab@redhat.com>.
+
+2009-07-16 Ulrich Drepper <drepper@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ * malloc/malloc.c [ATOMIC_FASTBINS] (_int_free): Make check for
+ corruption thread-safe.
+
+2009-07-13 Jakub Jelinek <jakub@redhat.com>
+
+ * include/atomic.h (catomic_compare_and_exchange_val_rel): If arch
+ overrides atomic_compare_and_exchange_val_rel, define to
+ atomic_compare_and_exchange_val_rel by default, otherwise default
+ to catomic_compare_and_exchange_val_acq.
+ (catomic_compare_and_exchange_bool_rel): If arch overrides
+ atomic_compare_and_exchange_bool_rel, define to
+ atomic_compare_and_exchange_bool_rel by default.
+ * malloc/malloc.c (_int_free): Revert 2009-07-02 change.
+ Use catomic_compare_and_exchange_val_rel instead of
+ catomic_compare_and_exchange_val_acq.
+
+2009-07-16 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/generic/ldsodefs.h: Add prototype for
+ _dl_higher_prime_number.
+ * elf/dl-misc.c (_dl_higher_prime_number): Mark with internal_function.
+
+ * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Optimize
+ restoring of ymm registers a bit.
+
+2009-07-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/x86_64/memcmp.S: New file.
+
+2009-07-15 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86-64/dl-trampoline.h: Remove after integrating code into...
+ * sysdeps/x86-64/dl-trampoline.S: ...here. Rewrite to avoid function
+ pointers in writable memory.
+
+2009-07-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config.h.in: Add HAVE_AVX_SUPPORT entry.
+ * config.make.in: Add config-cflags-avx entry.
+ * configure.in: Substitute libc_cv_cc_avx.
+ * elf/Makefile: Add rules to build and run tst-audit4 and tst-audit5.
+ * elf/tst-audit4.c: New file.
+ * elf/tst-audit5.c: New file.
+ * elf/tst-auditmod4a.c: New file.
+ * elf/tst-auditmod4b.c: New file.
+ * elf/tst-auditmod5a.c: New file.
+ * elf/tst-auditmod5b.c: New file.
+ * sysdeps/x86_64/Makefile (gen-as-const-headers): Add
+ link-defines.sym.
+ * sysdeps/x86_64/bits/link.h (La_x86_64_ymm): New.
+ (La_x86_64_vector): Likewise.
+ (La_x86_64_regs): Append lr_vector.
+ (La_x86_64_retval): Append lr_vector0/lrv_vector1.
+ * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Move
+ saving and restoring SSE registers to ...
+ * sysdeps/x86_64/dl-trampoline.h: This. New file.
+ * sysdeps/x86_64/dl-trampoline.S: Include <config.h> and
+ <link-defines.h>.
+ (_dl_runtime_profile): Use LR_SIZE to allocate space for
+ La_x86_64_regs. Allocate extra space and jump to memory at
+ save_and_restore_vector if HAVE_AVX_SUPPORT is defined.
+ (save_and_restore_vector_sse): New.
+ (save_and_restore_vector_avx): Likewise.
+ (check_avx): Likewise.
+ (save_and_restore_vector): Likewise.
+ * sysdeps/x86_64/elf/configure.in: Set libc_cv_cc_avx and
+ HAVE_AVX_SUPPORT.
+ * sysdeps/x86_64/link-defines.sym: New file.
+
+2009-07-10 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/do-lookup.h: Removed after folding content into...
+ * elf/dl-lookup.c: ...here.
+
+ * sysdeps/unix/sysv/linux/sys/epoll.h: Fix comment.
+
+2009-07-09 Ulrich Drepper <drepper@redhat.com>
+
+ * configure.in: Check for gnu_unique_symbol symbol type.
+ * config.h.in: Add HAVE_ASM_UNIQUE_OBJECT entry.
+ * elf/do-lookup.h (do_lookup_x): Take new parameter with link map of
+ the undefined symbol. Handle STB_GNU_UNIQUE binding of found symbol.
+ * elf/dl-lookup.c (_dl_lookup_symbol_x): Adjust callers for do_lookup_x
+ change.
+ * sysdeps/generic/ldsodefs.h (struct rtld_global): Add definitions for
+ unique symbol table.
+ * elf/rtld.c (rtld_global): Initialize lock of unique symbol hash table
+ for first namespace.
+ * elf/dl-open.c (_dl_open): For new namespace, initialize lock for
+ unique symbol hash table.
+ * elf/Makefile: Add rules to build and run tst-unique1 and tst-unique2.
+ * elf/tst-unique1.c: New file.
+ * elf/tst-unique1mod1.c: New file.
+ * elf/tst-unique1mod2.c: New file.
+ * elf/tst-unique2.c: New file.
+ * elf/tst-unique2mod1.c: New file.
+ * elf/tst-unique2mod2.c: New file.
+
+2009-07-07 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/elf.h (STB_GNU_UNIQUE): Define.
+
+ * elf/dl-misc.c (_dl_higher_prime_number): New function. Moved here
+ from...
+ * include/inline-hashtab.h: ...here.
+ (htab_expand): Adjust for renamed function. Correct memory handling.
+
+2009-07-06 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/do-lookup.h (do_lookup_x): Optimize test for valid symbol types.
+
+2009-07-03 Andreas Schwab <aschwab@redhat.com>
+
+ * sysdeps/powerpc/sysdep.h (PPC_FEATURE_ARCH_2_06): Fix value.
+ (PPC_FEATURE_HAS_VSX): Likewise.
+
+2009-07-03 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/multiarch/strcspn-c.c: Minor cleanups.
+ * sysdeps/x86_64/multiarch/strspn-c.c: Likewise.
+
+ * sysdeps/x86_64/multiarch/strcmp.S: Make sure functions are all
+ aligned to 16 byte boundaries.
+ * sysdeps/x86_64/multiarch/strcpy.S: Likewise.
+ * sysdeps/x86_64/multiarch/strlen.S: Likewise.
+ * sysdeps/x86_64/multiarch/rawmemchr.S: Likewise.
+
+2009-07-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config.h.in (HAVE_SSE4_SUPPORT): New macro.
+ * config.make.in (config-cflags-sse4): New variable.
+ * configure.in: Substitute libc_cv_cc_sse4.
+ * sysdeps/i386/configure.in: Set libc_cv_cc_sse4 and
+ HAVE_SSE4_SUPPORT.
+ * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
+ strcspn-c, strpbrk-c, strspn-c for string if gcc supports SSE4.
+ * sysdeps/x86_64/multiarch/strcspn-c.c: New file.
+ * sysdeps/x86_64/multiarch/strcspn.S: New file.
+ * sysdeps/x86_64/multiarch/strpbrk-c.c: New file.
+ * sysdeps/x86_64/multiarch/strpbrk.S: New file.
+ * sysdeps/x86_64/multiarch/strspn-c.c: New file.
+ * sysdeps/x86_64/multiarch/strspn.S: New file.
+
+2009-06-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elf/Makefile (distribute): Remove tst-audit.sh. Add
+ tst-audit2.c, tst-audit3.c, tst-auditmod3a.c, tst-auditmod3b.c.
+ (tests): Add tst-audit3 for x86_64.
+ (modules-names): Add tst-auditmod3a, tst-auditmod3b.
+ ($(objpfx)tst-audit3): Define.
+ ($(objpfx)tst-audit3.out): Define.
+ (tst-audit3-ENV): Define.
+ * elf/tst-audit3.c: New file.
+ * elf/tst-auditmod3a.c: New file.
+ * elf/tst-auditmod3b.c: New file.
+ * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Save
+ and restore xmm6.
+
+ * string/stpncpy.c (STPNCPY): New. Defined if not defined.
+ (__stpncpy): Renamed to ...
+ (STPNCPY): This.
+ (stpncpy): Create alias only if STPNCPY is not defined.
+ * string/strncpy.c (STRNCPY): New. Defined to strncpy if not
+ defined.
+ (strncpy): Renamed to ...
+ (STRNCPY): This.
+ * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
+ stpncpy-c strncpy-c for string.
+ * sysdeps/x86_64/multiarch/stpcpy.S: New file.
+ * sysdeps/x86_64/multiarch/stpncpy-c.c: New file.
+ * sysdeps/x86_64/multiarch/stpncpy.S: New file.
+ * sysdeps/x86_64/multiarch/strcpy.S: New file.
+ * sysdeps/x86_64/multiarch/strncpy-c.c: New file.
+ * sysdeps/x86_64/multiarch/strncpy.S: New file.
+
+2009-07-02 Ulrich Drepper <drepper@redhat.com>
+
+ * malloc/malloc.c [ATOMIC_FASTBINS] (_int_free): Add full barrier when
+ adding to fast bin list.
+
+2009-07-01 Ulrich Drepper <drepper@redhat.com>
+
+ * nis/nss_nis/nis-network.c (_nss_nis_getnetbyaddr_r): Don't use
+ inet_makeaddr. This worked only with class-based networks.
+ * nis/nss_nisplus/nisplus-network.c (_nss_nisplus_getnetbyaddr_r):
+ Likewise.
+
+ * nss/nss_files/files-network.c (netbyaddr): If type is AF_UNSPEC,
+ recognize all types.
+ * nss/getent.c (networks_keys): Pass AF_UNSPEC instead of AF_UNIX
+ to getnetbyaddr. Fix network parameter to getnetbyaddr. It must
+ be in host byte order.
+
+2009-06-26 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/x86_64/multiarch/ifunc-defines.sym (FAMILIY_OFFSET): Define.
+ (MODEL_OFFSET): Define.
+ * sysdeps/x86_64/multiarch/init-arch.h (cpu_features): Add
+ family and model.
+ * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): Break
+ out common code into new function get_common_indeces. Determine
+ extended family and model for Intel processors.
+
+2009-06-26 Ulrich Drepper <drepper@redhat.com>
+
+ * resolv/resolv.h: Define RES_SNGLKUPREOP.
+ * resolv/res_init.c (res_setoptions): Recognize single-request-reopen
+ option.
+ * resolv/res_send.c (reopen): New function. Broken out of...
+ (send_dg): ... here. Recognize RES_SNGLKUPREOP. Implement second
+ fallback mechanism. If single-request fails switch to
+ single-request-reopen mode which opens a new socket for the second
+ request.
+
+2009-06-25 Andreas Schwab <aschwab@redhat.com>
+
+ * sysdeps/powerpc/powerpc32/____longjmp_chk.S (LOAD_ARG): Define.
+ (CHECK_SP): Use it.
+
+2009-06-24 Andreas Schwab <aschwab@redhat.com>
+
+ * sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S: Fix cfa offset
+ for saved registers.
+ * sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.S: Likewise.
+ * sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf.S: Likewise.
+ * sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt.S: Likewise.
+
+2009-06-23 Andreas Schwab <aschwab@redhat.com>
+
+ * time/tzfile.c (__tzfile_read): Don't use an empty TZ string.
+
+2009-06-22 Ulrich Drepper <drepper@redhat.com>
+
+ * po/id.po: Update from translation team.
+
+ * po/bg.po: Update from translation team.
+
+2009-06-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ * string/strncmp.c (STRNCMP): New. Defined to strncmp if not
+ defined.
+ (strncmp): Renamed to STRNCMP.
+ * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
+ strncmp-c for string.
+ * sysdeps/x86_64/multiarch/init-arch.h (HAS_SSE4_2): Define.
+ * sysdeps/x86_64/multiarch/strcmp.S: New file.
+ * sysdeps/x86_64/multiarch/strncmp.S: New file.
+ * sysdeps/x86_64/multiarch/strncmp-c.c: New file.
+
+2009-06-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elf/Makefile (distribute): Add ifuncmain1staticpie.c,
+ ifuncmain5.c, ifuncmain5pic.c, ifuncmain5picstatic.c,
+ ifuncmain5pie.c, ifuncmain5static.c, ifuncmain5staticpic.c,
+ ifuncdep5.c, ifuncdep5pic.c, ifuncmod5.c, ifuncmain7.c,
+ ifuncmain7pic.c, ifuncmain7picstatic.c, ifuncmain7pie.c, and
+ ifuncmain7static.c.
+ (tests-static): Add ifuncmain5static, ifuncmain5picstatic,
+ ifuncmain7static, and ifuncmain7picstatic.
+ (tests): Also depend on $(objpfx)ifuncmain1staticpie.out,
+ $(objpfx)ifuncmain5pie.out, $(objpfx)ifuncmain6pie.out, and
+ $(objpfx)ifuncmain7pie.out.
+ (modules-names): Add ifuncmod5 ifuncmod6
+ (ifuncmod5.so-no-z-defs): Define.
+ (ifuncmod6.so-no-z-defs): Define.
+ (CFLAGS-ifuncmain5pic.c): Define.
+ (CFLAGS-ifuncmain5picstatic.c): Define.
+ (CFLAGS-ifuncmain5staticpic.c): Define.
+ (CFLAGS-ifuncdep5pic.c): Define.
+ (CFLAGS-ifuncmain7pic.c): Define.
+ (CFLAGS-ifuncmain7picstatic.c): Define.
+ (CFLAGS-ifuncmain1staticpie.c): Define.
+ (CFLAGS-ifuncmain5pie.c): Define.
+ (CFLAGS-ifuncmain6pie.c): Define.
+ (CFLAGS-ifuncmain7pie.c): Define.
+ ($(objpfx)ifuncmain1staticpie.out): Define.
+ ($(objpfx)ifuncmain1staticpie): Define.
+ ($(objpfx)ifuncmain5pie.out): Define.
+ ($(objpfx)ifuncmain5pie): Define.
+ ($(objpfx)ifuncmain6pie.out): Define.
+ ($(objpfx)ifuncmain6pie): Define.
+ ($(objpfx)ifuncmain5): Define.
+ ($(objpfx)ifuncmain5pic): Define.
+ ($(objpfx)ifuncmain5static): Define.
+ ($(objpfx)ifuncmain5staticpic): Define.
+ ($(objpfx)ifuncmain5picstatic): Define.
+ (generated): Add ifuncmain1staticpie, ifuncmain1staticpie.out,
+ ifuncmain5pie, ifuncmain5pie.out, ifuncmain6pie, and
+ ifuncmain6pie.out.
+ * elf/b/elf/ifuncmain1staticpie.c: New file.
+ * elf/ifuncdep5.c: New file.
+ * elf/ifuncdep5pic.c: New file.
+ * elf/ifuncmain5.c: New file.
+ * elf/ifuncmain5pic.c: New file.
+ * elf/ifuncmain5picstatic.c: New file.
+ * elf/ifuncmain5pie.c: New file.
+ * elf/ifuncmain5static.c: New file.
+ * elf/ifuncmain5staticpic.c: New file.
+ * elf/ifuncmain6pie.c: New file.
+ * elf/ifuncmain7.c: New file.
+ * elf/ifuncmain7pic.c: New file.
+ * elf/ifuncmain7picstatic.c: New file.
+ * elf/ifuncmain7pie.c: New file.
+ * elf/ifuncmain7static.c: New file.
+ * elf/ifuncmod5.c: New file.
+ * elf/ifuncmod6.c: New file.
+
+2009-06-20 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10085]
+ * nis/nss_compat/compat-initgroups.c (nss_setgrent): New variable.
+ (nss_endgrent): New variable.
+ (struct ent_t): Add need_endgrent and skip_initgroups_dyn
+ fields. Change type of files to bool and adjust all users.
+ (init_nss_interface): Initialize nss_setgrent and nss_endgrent.
+ (internal_endgrent): Call nss_endgrent if necessary.
+ (add_group): New function. Broken out of...
+ (check_and_add_group): ...here.
+ (getgrent_next_nss): Remove test that any callback is available.
+ Use skip_initgroups_dyn to determine whether to use initgroups_dyn
+ callback. If there is no blacklist we can trust the results returned
+ by the initgroups_dyn callback. In case there is a callback and we
+ find a group entry for the group ID but it doesn't contain the
+ correct member, switch to the slow mode and use getgrent_r.
+ (internal_getgrent_r): When we see a +: entry, determine whether
+ there is any callback and which we can use the initgroups_dyn
+ callback.
+
+2009-06-18 Ulrich Drepper <drepper@redhat.com>
+
+ * malloc/malloc.c (_int_malloc): Add some consistency checks.
+ (_int_free): Likewise.
+
+ * sysdeps/unix/sysv/linux/bits/socket.h: Define PF_IEEE802154 and
+ AF_IEEE802154.
+ * sysdeps/unix/sysv/linux/sparc/bits/socket.h: Likewise.
+ * sysdeps/unix/sysv/linux/net/if_arp.h: Define ARPHRD_IEEE802154
+ and ARPHRD_IEEE802154_PHY.
+
+ * sysdeps/unix/sysv/linux/sparc/bits/socket.h: Add missing definitions
+ relative to generic Linux version.
+
+2009-06-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elf/Makefile ($(objpfx)ifuncmain1pie): Use $(+link-pie).
+ ($(objpfx)ifuncmain1vispie): Likewise.
+
+2009-06-16 Ulrich Drepper <drepper@redhat.com>
+
+ * login/Makefile: Build pt_chown as PIE.
+
+2009-06-15 Andreas Schwab <aschwab@redhat.com>
+
+ * debug/xtrace.sh (do_help): Don't treat bug reporting message as
+ a format string.
+ * elf/sln.c (usage): Likewise.
+ * malloc/memusage.sh (do_help): Likewise.
+ * nss/getent.c (more_help): Likewise.
+ * posix/getconf.c (main): Likewise.
+ * sunrpc/rpcinfo.c (usage): Likewise.
+ * sysdeps/unix/sysv/linux/lddlibc4.c (main): Likewise.
+
+2009-06-16 Ulrich Drepper <drepper@redhat.com>
+
+ * login/programs/pt_chown.c: Use libcap to drop privileges other than
+ those needed.
+ * login/Makefile: If necessary link pt_chown with -lcap.
+ * sysdeps/generic/pty-private.h: Define FAIL_ENOMEM.
+ * sysdeps/unix/grantpt.c: Handle FAIL_ENOMEM.
+
+2009-06-16 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/x86_64/memchr.S (memchr): Use unsigned instead of signed
+ comparisons.
+ * string/test-memchr.c (do_random_tests): Test very large lengths
+ as well.
+
+2009-06-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makeconfig (+link-pie): Define.
+ (+prectorS): Define.
+ (+postctorS): Define.
+ * elf/Makefile ($(objpfx)tst-pie1): Use $(+link-pie).
+ * nscd/Makefile ($(objpfx)nscd): Likewise.
+
+2009-04-22 Ryan S. Arnold <rsa@us.ibm.com>
+
+ [BZ #10107]
+ * sysdeps/powerpc/powerpc32/power6/memcpy.S (memcpy): Replace cmpldi
+ with cmplwi.
+ * sysdeps/powerpc/powerpc32/power6/memset.S (memset): Likewise.
+
+2009-06-16 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/grantpt.c: Remove file after folding changes
+ into ...
+ * sysdeps/unix/grantpt.c: ...here.
+
+2009-06-15 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/grantpt.c (grantpt): Only call chown and
+ chmod if it is necessary.
+
+ [BZ #10166]
+ * sysdeps/unix/sysv/linux/grantpt.c: Remove shortcut which was used
+ when the slave device is in devpts or devfs.
+
+ [BZ #10183]
+ * posix/tst-cpucount.c: Don't try more than CPU_SETSIZE bits.
+
+ [BZ #10195]
+ * inet/netinet/icmp6.h (struct nd_opt_home_agent_info): Change type
+ of nd_opt_home_agent_info_preference to uint16_t.
+ Patch by Arnaud Ebalard <arno@natisbad.org>.
+
+ [BZ #10207]
+ * nss/getent.c: Add support for printing gshadow data.
+
+ [BZ #10203]
+ * nis/nss_nis/nis-pwd.c (internal_nis_endpwent): Free all buffers,
+ not just the currently used one and those which follow.
+ Patch by Joe Landers <jlanders@vmware.com>.
+
+ [BZ #10196]
+ * libio/tst-fgetwc.c (do_test): Use de_DE.UTF-8 as locale name.
+ * libio/Makefile: Run tst-fgetwc with necessary envvar.
+ Patch by Bruce Dubbs <bdubbs@linuxfromscratch.org>.
+
+ [BZ #10217]
+ * stdlib/abort.c: Define variable __abort_msg.
+ * stdlib/Versions: Export __abort_msg with GLIBC_PRIVATE version.
+ * include/stdlib.h: Declare __abort_msg.
+ * assert/assert-perr.c: Don't free buffer for message immediately.
+ Store atomically in __abort_msg and free old buffer if necessary.
+ * assert/assert.c: Likewise.
+ * sysdeps/posix/libc_fatal.c: Allocate buffer for message, copy it,
+ store pointer in __abort_msg, and possibly free old string.
+ * sysdeps/unix/sysv/linux/libc_fatal.c: Likewise.
+
+ * time/tzfile.c (__tzfile_read): Correct computation of tzspec_len.
+
+ [BZ #10211]
+ * time/tzfile.c (__tzfile_compute): If we use the envvar format still
+ handle leap seconds if they are available.
+ Patch by Akinori Hattori <hattya@gentoo.org>.
+
+ * timezone/tzselect.ksh: Update from tzcode2009i.
+ * timezone/zdump.c: Likewise.
+ * timezone/zic.c: Likewise.
+
+ * timezone/africa: Update from tzdata2009i.
+ * timezone/antarctica: Likewise.
+ * timezone/asia: Likewise.
+ * timezone/australasia: Likewise.
+ * timezone/backward: Likewise.
+ * timezone/etcetera: Likewise.
+ * timezone/europe: Likewise.
+ * timezone/factory: Likewise.
+ * timezone/iso3166.tab: Likewise.
+ * timezone/leapseconds: Likewise.
+ * timezone/northamerica: Likewise.
+ * timezone/pacificnew: Likewise.
+ * timezone/solar87: Likewise.
+ * timezone/solar88: Likewise.
+ * timezone/solar89: Likewise.
+ * timezone/southamerica: Likewise.
+ * timezone/systemv: Likewise.
+ * timezone/yearistype: Likewise.
+ * timezone/zone.tab: Likewise.
+
+2009-06-15 Jakub Jelinek <jakub@redhat.com>
+
+ * elf/dl-lookup.c (_dl_debug_bindings): When resolving to
+ STT_GNU_IFUNC symbol or in 8 into type_class.
+
+ * sysdeps/i386/dl-irel.h (elf_irel): Use Elf32_Addr type
+ instead of Elf64_Addr.
+
+2009-06-14 Ulrich Drepper <drepper@redhat.com>
+
+ * po/sv.po: Update from translation team.
+
+ [BZ #10229]
+ * misc/sys/select.h (__NFDBITS): Expression should have type int.
+ * sysdeps/x86_64/bits/select.h: Remove asm versions for __FD_SET,
+ __FD_CLR, and __FD_ISSET. gcc nowadays generates better code from
+ the C version.
+
+2009-06-12 Ulrich Drepper <drepper@redhat.com>
+
+ * Versions.def: Add GLIBC_2.11 for libpthread.
+
+2009-06-11 Ulrich Drepper <drepper@redhat.com>
+
+ * resolv/res_send.c (send_dg): Remember we switched to
+ single-request mode.
+
+2009-06-09 Ulrich Drepper <drepper@redhat.com>
+
+ * dlfcn/dlfcn.h: Remove comma at end of enum.
+ Patch by J.H.M. Dassen <rdassen@redhat.com>.
+
+ * libio/fileops.c (_IO_new_file_fopen): Don't prematurely stop
+ parsing mode string.
+
+2009-06-05 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/rawmemchr.S: Minor optimization.
+
+ * sysdeps/x86_64/multiarch/rawmemchr.S: New file.
+
+ * sysdeps/x86_64/multiarch/strlen.S: New file.
+ * sysdeps/x86_64/multiarch/ifunc-defines.sym: New file.
+ * sysdeps/x86_64/multiarch/Makefile: Add rule to build ifunc-defines.h.
+ * sysdeps/x86_64/multiarch/init-arch.h: Name structure with register
+ content.
+
+ * csu/elf-init.c: Only compile in IFUNC functionality if USE_MULTIARCH
+ is defined.
+
+2009-06-04 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/strlen.S: Minor optimizations.
+
+2009-06-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elf/Makefile (distribute): Add ifuncmain1.c, ifuncmain1pic.c,
+ ifuncmain1vis.c, ifuncmain1vispic.c, ifuncmain1static.c,
+ ifuncmain1staticpic.c, ifuncmain1picstatic.c, ifuncdep1.c,
+ ifuncdep1pic.c, ifuncmod1.c, ifuncmain1pie.c, ifuncmain1vispie.c,
+ ifuncmain2.c, ifuncmain2static.c, ifuncdep2.c,
+ funcmain2pic.c, ifuncmain2picstatic.c, ifuncdep2pic.c,
+ ifuncmain3.c, ifuncmod3.c,.
+ ifuncmain4.c, ifuncmain4static.c, ifuncmain4picstatic.c.
+ (tests-static): Add ifuncmain1static, ifuncmain1picstatic,
+ ifuncmain2static, ifuncmain2picstatic, ifuncmain4static,
+ ifuncmain4picstatic.
+ (tests): Add ifuncmain1, ifuncmain1pic, ifuncmain1vis,
+ ifuncmain1vispic, ifuncmain1staticpic, ifuncmain2, ifuncmain2pic,
+ ifuncmain3, ifuncmain4.
+ (tests): Depend on $(objpfx)ifuncmain1pie.out and
+ $(objpfx)ifuncmain1vispie.out.
+ (modules-names): Add ifuncmod1 ifuncmod3.
+ (generated): Add ifuncmain1pie ifuncmain1pie.out
+ ifuncmain1vispie ifuncmain1vispie.out.
+ Define rules to build and run the tests.
+ * elf/ifuncdep1.c: New file.
+ * elf/ifuncdep1pic.c: New file.
+ * elf/ifuncdep2.c: New file.
+ * elf/ifuncdep2pic.c: New file.
+ * elf/ifuncmain1.c: New file.
+ * elf/ifuncmain1pic.c: New file.
+ * elf/ifuncmain1picstatic.c: New file.
+ * elf/ifuncmain1pie.c: New file.
+ * elf/ifuncmain1static.c: New file.
+ * elf/ifuncmain1staticpic.c: New file.
+ * elf/ifuncmain1vis.c: New file..
+ * elf/ifuncmain1vispic.c: New file..
+ * elf/ifuncmain1vispie.c: New file.
+ * elf/ifuncmain2.c: New file.
+ * elf/ifuncmain2pic.c: New file.
+ * elf/ifuncmain2picstatic.c: New file.
+ * elf/ifuncmain2static.c: New file.
+ * elf/ifuncmain3.c: New file.
+ * elf/ifuncmain4.c: New file.
+ * elf/ifuncmain4picstatic.c: New file.
+ * elf/ifuncmain4static.c: New file.
+ * elf/ifuncmod1.c: New file.
+ * elf/ifuncmod3.c: New file.
+
+2009-06-03 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/dl-sysdep.c (_dl_show_auxv): Terminate correct string.
+
+2009-06-02 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10221]
+ * posix/Makefile (routines): Add execvpe.
+ * posix/Versions: Export execvpe for GLIBC_2.11.
+ * posix/execvp.c: Now only a wrapper. Move code to...
+ * posix/execvpe.c: ...here. New file.
+ * posix/unistd.h: Declare execvpe.
+
+2009-06-01 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/i386/dl-machine.h (elf_machine_rel): Reorder conditions
+ for STT_GNU_IFUNC handling for efficiency.
+ * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise.
+
+ * sysdeps/i386/dl-irel.h (elf_irel): Use __libc_fatal instead of just
+ _exit.
+ * sysdeps/x86_64/dl-irel.h (elf_irela): Likewise.
+
+2009-05-31 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/multiarch/sched_cpucount.c: Also use optimized code
+ for !SHARED.
+
+2009-05-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ * csu/elf-init.c: Include <link.h> and <dl-irel.h> if LIBC_NONSHARED
+ is not defined.
+ (__rela_iplt_start): New declaration.
+ (__rela_iplt_end): Likewise.
+ (__rel_iplt_start): Likewise.
+ (__rel_iplt_end): Likewise.
+ (__libc_csu_init): Process __rela_iplt_start and __rel_iplt_start.
+ * elf/elf.h (R_386_IRELATIVE): New macro.
+ (R_X86_64_IRELATIVE): New macro.
+ (R_386_NUM): Updated.
+ (R_X86_64_NUM): Likewise.
+ * include/libc-symbols.h (libc_ifunc_hidden_def1): New macro.
+ (libc_ifunc_hidden_def): New macro.
+ * sysdeps/generic/dl-irel.h: New file.
+ * sysdeps/i386/dl-irel.h: New file.
+ * sysdeps/x86_64/dl-irel.h: New file.
+ * sysdeps/i386/dl-machine.h (elf_machine_rel): Handle R_386_IRELATIVE.
+ (elf_machine_rela): Check SHN_UNDEF for STT_GNU_IFUNC symbol.
+ Handle R_386_IRELATIVE.
+ (elf_machine_lazy_rel): Handle R_386_IRELATIVE.
+ (elf_machine_lazy_rela): Likewise.
+ * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Handle
+ R_X86_64_IRELATIVE.
+ (elf_machine_lazy_rel): Handle R_X86_64_IRELATIVE.
+
+2009-05-31 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/multiarch/init-arch.h: Define COMMON_CPUID_INDEX_1
+ instead of INTEL_CPUID_INDEX_1 and AMD_CPUID_INDEX_1. So far there
+ are no differences. If an architecture has bits in CPUID index 1
+ meaning different things the values for the COMMON_CPUID_INDEX_1
+ index must not be set.
+ (INTEL_HAS_POPCOUNT, AMD_HAS_POPCOUNT): Removed in favor of...
+ (HAS_POPCOUNT): ...this. New macro.
+ * sysdeps/x86_64/multiarch/init-arch.c: Use COMMON_CPUID_INDEX_1
+ instead of INTEL_CPUID_INDEX_1 and AMD_CPUID_INDEX_1. Unify code
+ to set the value for Intel and AMD architectures.
+ * sysdeps/x86_64/cacheinfo.c: Use COMMON_CPUID_INDEX_1 instead of
+ INTEL_CPUID_INDEX_1.
+ * sysdeps/x86_64/multiarch/sched_cpucount.c: Adjust for HAS_POPCOUNT
+ change.
+
+2009-05-30 Andreas Schwab <schwab@linux-m68k.org>
+
+ * configure.in: Move AC_CANONICAL_HOST before first use of $host
+ and $build.
+
+2009-05-29 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/ieee754/ldbl-128/s_expm1l.c: Include <errno.h>.
+ (__expm1l): Set errno to ERANGE on overflow.
+ * sysdeps/ieee754/ldbl-128/s_tanl.c: Include <errno.h>.
+ (__tanl): Set errno to EDOM for ±Inf.
+ * sysdeps/ieee754/ldbl-128/s_cosl.c: Include <errno.h>.
+ (__cosl): Set errno to EDOM for ±Inf.
+ * sysdeps/ieee754/ldbl-128/s_sinl.c: Include <errno.h>.
+ (__sinl): Set errno to EDOM for ±Inf.
+
+ * sysdeps/s390/s390-32/__longjmp.c (__longjmp): If CHECK_SP is
+ defined, use it.
+ * sysdeps/s390/s390-64/__longjmp.c (__longjmp): Likewise.
+ * sysdeps/s390/s390-32/____longjmp_chk.c: New file.
+ * sysdeps/s390/s390-64/____longjmp_chk.c: New file.
+
+2009-05-29 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/cacheinfo.c: Compact intel_02_known array. Adjust
+ code accessing it.
+ * sysdeps/unix/sysv/linux/i386/sysconf.c: Likewise.
+
+2009-05-22 Andreas Schwab <schwab@linux-m68k.org>
+
+ * sysdeps/ieee754/ldbl-128ibm/s_sinl.c: Set errno for ±Inf.
+ * sysdeps/ieee754/ldbl-128ibm/s_cosl.c: Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/s_tanl.c: Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/s_expm1l.c: Set errno for overflow.
+
+ * sysdeps/powerpc/powerpc32/____longjmp_chk.S: New file.
+ * sysdeps/powerpc/powerpc64/____longjmp_chk.S: New file.
+ * sysdeps/powerpc/powerpc32/__longjmp-common.S: Use CHECK_SP if
+ defined.
+ * sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Likewise.
+ * sysdeps/powerpc/powerpc64/__longjmp-common.S: Likewise.
+
+2009-05-22 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/unix/sysv/linux/accept4.c: Include kernel-features.h.
+ (accept4): If __NR_accept4 is not defined, but __NR_socketcall
+ is, either do nothing at all if __ASSUME_ACCEPT4, or
+ call __internal_accept4 and handle EINVAL -> ENOSYS translation.
+ * sysdeps/unix/sysv/linux/internal_accept4.S: New file.
+ * sysdeps/unix/sysv/linux/i386/accept4.S (SOCKOP_accept4): Don't
+ define.
+ * sysdeps/unix/sysv/linux/i386/internal_accept4.S: New file.
+ * sysdeps/unix/sysv/linux/Makefile (sysdep-routines): Add
+ internal_accept4 in socket directory.
+
+2009-05-20 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/ia64/configure.in: New file.
+
+2009-05-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ [BZ #10162]
+ * sysdeps/ia64/memchr.S: Use speculative load.
+
+ * sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S: New file.
+ * sysdeps/unix/sysv/linux/ia64/__longjmp.S: If CHECK_RSP is defined,
+ use it.
+
+ * sysdeps/i386/__longjmp.S: Add .text.
+ * sysdeps/x86_64/__longjmp.S: Likewise.
+
+2009-05-21 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/kernel-features.h: Don't define
+ __ASSUME_ACCEPT4 for IA-64.
+
+2009-05-21 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/unix/sysv/linux/accept4.c (__NR_accept4): Don't define.
+
+ * sysdeps/unix/sysv/linux/socketcall.h (SOCKOP_paccept): Remove.
+ (SOCKOP_accept4): Define.
+
+2009-05-20 Ulrich Drepper <drepper@redhat.com>
+
+ Sun approved the change of the license.
+ * sunrpc/auth_des.c: Replace license text.
+ * sunrpc/auth_none.c: Likewise.
+ * sunrpc/auth_unix.c: Likewise.
+ * sunrpc/authdes_prot.c: Likewise.
+ * sunrpc/authuxprot.c: Likewise.
+ * sunrpc/bindrsvprt.c: Likewise.
+ * sunrpc/clnt_gen.c: Likewise.
+ * sunrpc/clnt_perr.c: Likewise.
+ * sunrpc/clnt_raw.c: Likewise.
+ * sunrpc/clnt_simp.c: Likewise.
+ * sunrpc/clnt_tcp.c: Likewise.
+ * sunrpc/clnt_udp.c: Likewise.
+ * sunrpc/clnt_unix.c: Likewise.
+ * sunrpc/des_crypt.c: Likewise.
+ * sunrpc/des_soft.c: Likewise.
+ * sunrpc/get_myaddr.c: Likewise.
+ * sunrpc/getrpcport.c: Likewise.
+ * sunrpc/key_call.c: Likewise.
+ * sunrpc/key_prot.c: Likewise.
+ * sunrpc/openchild.c: Likewise.
+ * sunrpc/pm_getmaps.c: Likewise.
+ * sunrpc/pm_getport.c: Likewise.
+ * sunrpc/pmap_clnt.c: Likewise.
+ * sunrpc/pmap_prot.c: Likewise.
+ * sunrpc/pmap_prot2.c: Likewise.
+ * sunrpc/pmap_rmt.c: Likewise.
+ * sunrpc/rpc/auth.h: Likewise.
+ * sunrpc/rpc/auth_unix.h: Likewise.
+ * sunrpc/rpc/clnt.h: Likewise.
+ * sunrpc/rpc/des_crypt.h: Likewise.
+ * sunrpc/rpc/key_prot.h: Likewise.
+ * sunrpc/rpc/netdb.h: Likewise.
+ * sunrpc/rpc/pmap_clnt.h: Likewise.
+ * sunrpc/rpc/pmap_prot.h: Likewise.
+ * sunrpc/rpc/pmap_rmt.h: Likewise.
+ * sunrpc/rpc/rpc.h: Likewise.
+ * sunrpc/rpc/rpc_des.h: Likewise.
+ * sunrpc/rpc/rpc_msg.h: Likewise.
+ * sunrpc/rpc/svc.h: Likewise.
+ * sunrpc/rpc/svc_auth.h: Likewise.
+ * sunrpc/rpc/types.h: Likewise.
+ * sunrpc/rpc/xdr.h: Likewise.
+ * sunrpc/rpc_clntout.c: Likewise.
+ * sunrpc/rpc_cmsg.c: Likewise.
+ * sunrpc/rpc_common.c: Likewise.
+ * sunrpc/rpc_cout.c: Likewise.
+ * sunrpc/rpc_dtable.c: Likewise.
+ * sunrpc/rpc_hout.c: Likewise.
+ * sunrpc/rpc_main.c: Likewise.
+ * sunrpc/rpc_parse.c: Likewise.
+ * sunrpc/rpc_parse.h: Likewise.
+ * sunrpc/rpc_prot.c: Likewise.
+ * sunrpc/rpc_sample.c: Likewise.
+ * sunrpc/rpc_scan.c: Likewise.
+ * sunrpc/rpc_scan.h: Likewise.
+ * sunrpc/rpc_svcout.c: Likewise.
+ * sunrpc/rpc_tblout.c: Likewise.
+ * sunrpc/rpc_util.c: Likewise.
+ * sunrpc/rpc_util.h: Likewise.
+ * sunrpc/rpcinfo.c: Likewise.
+ * sunrpc/rpcsvc/bootparam_prot.x: Likewise.
+ * sunrpc/rpcsvc/key_prot.x: Likewise.
+ * sunrpc/rpcsvc/klm_prot.x: Likewise.
+ * sunrpc/rpcsvc/mount.x: Likewise.
+ * sunrpc/rpcsvc/nfs_prot.x: Likewise.
+ * sunrpc/rpcsvc/rex.x: Likewise.
+ * sunrpc/rpcsvc/rstat.x: Likewise.
+ * sunrpc/rpcsvc/rusers.x: Likewise.
+ * sunrpc/rpcsvc/sm_inter.x: Likewise.
+ * sunrpc/rpcsvc/spray.x: Likewise.
+ * sunrpc/rpcsvc/yppasswd.x: Likewise.
+ * sunrpc/rtime.c: Likewise.
+ * sunrpc/svc.c: Likewise.
+ * sunrpc/svc_auth.c: Likewise.
+ * sunrpc/svc_authux.c: Likewise.
+ * sunrpc/svc_raw.c: Likewise.
+ * sunrpc/svc_run.c: Likewise.
+ * sunrpc/svc_simple.c: Likewise.
+ * sunrpc/svc_tcp.c: Likewise.
+ * sunrpc/svc_udp.c: Likewise.
+ * sunrpc/svc_unix.c: Likewise.
+ * sunrpc/svcauth_des.c: Likewise.
+ * sunrpc/xcrypt.c: Likewise.
+ * sunrpc/xdr.c: Likewise.
+ * sunrpc/xdr_array.c: Likewise.
+ * sunrpc/xdr_float.c: Likewise.
+ * sunrpc/xdr_mem.c: Likewise.
+ * sunrpc/xdr_rec.c: Likewise.
+ * sunrpc/xdr_ref.c: Likewise.
+ * sunrpc/xdr_sizeof.c: Likewise.
+ * sunrpc/xdr_stdio.c: Likewise.
+
+ * po/da.po: Update from translation team.
+
+2009-05-18 Kaz Kojima <kkojima@rr.iij4u.or.jp>
+
+ * sysdeps/sh/____longjmp_chk.S: New file.
+ * sysdeps/sh/sh3/__longjmp.S: If CHECK_SP is defined, use it.
+ * sysdeps/sh/sh4/__longjmp.S: Likewise.
+
+2009-05-18 Jakub Jelinek <jakub@redhat.com>
+ Ulrich Drepper <drepper@redhat.com>
+
+ * nscd/nscd_helper.c (MINIMUM_HASHENTRY_SIZE): Define.
+ (__nscd_cache_search): Assume each entry in the
+ hash chain needs one hashentry and half of datahead. Use
+ MINIMUM_HASHENTRY_SIZE instead of sizeof(hashentry).
+
+2009-05-16 Ulrich Drepper <drepper@redhat.com>
+
+ * posix/sys/wait.h: Fix typos. Pretty printing.
+ * stdlib/stdlib.h: Likewise. Correct comments.
+
+ [BZ #10159]
+ * stdlib/stdlib.h (__WAIT_INT): Match the definition in <sys/wait.h>.
+
+ * nscd/nscd_helper.c (__nscd_cache_search): Fix exit condition in last
+ patch.
+
+2009-05-15 Ulrich Drepper <drepper@redhat.com>
+
+ * nscd/nscd_helper.c (__nscd_cache_search): Introduce loop counter.
+ Use it if we absolutely cannot reach any more correct list elements
+ because that many do not fit into the currently mapped database.
+
+2009-05-14 Jakub Jelinek <jakub@redhat.com>
+
+ * nscd/nscd_helper.c: Include stddef.h.
+ (__nscd_cache_search): Add datalen argument. Use atomic_forced_read
+ in a couple of places. Return NULL if trail is not less than
+ datasize, don't consider dataheads with length smaller than
+ offsetof (struct datahead, data) + datalen.
+ * nscd/nscd_client.h (__nscd_cache_search): Adjust prototype.
+ * nscd/nscd_gethst_r.c (nscd_gethst_r): Adjust callers.
+ * nscd/nscd_getpw_r.c (nscd_getpw_r): Likewise.
+ * nscd/nscd_getgr_r.c (nscd_getgr_r): Likewise.
+ * nscd/nscd_getai.c (__nscd_getai): Likewise.
+ * nscd/nscd_initgroups.c (__nscd_getgrouplist): Likewise.
+ * nscd/nscd_getserv_r.c (nscd_getserv_r): Likewise.
+
+ * sysdeps/unix/sysv/linux/i386/fallocate64.c (__fallocate64_l64):
+ Rename ...
+ (fallocate64): ... to this.
+ * sysdeps/unix/sysv/linux/fallocate64.c (__fallocate64_l64):
+ Rename ...
+ (fallocate64): ... to this.
+ * sysdeps/unix/sysv/linux/Versions (libc): Remove fallocate64.
+ * sysdeps/unix/sysv/linux/wordsize-64/Versions (libc): Add
+ fallocate64@@GLIBC_2.10.
+ * sysdeps/unix/sysv/linux/i386/Versions (libc): Add
+ fallocate64@@GLIBC_2.11.
+ * sysdeps/unix/sysv/linux/s390/s390-32/Versions (libc): Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions (libc): Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/Versions (libc): Likewise.
+ * sysdeps/unix/sysv/linux/sh/Versions (libc): Likewise.
+
+ * nscd/selinux.c (nscd_avc_destroy): Removed.
+ * nscd/selinux.h (nscd_avc_destroy): Likewise.
+ * nscd/nscd.c (termination_handler): Don't call
+ nscd_avc_destroy.
+
+2009-05-12 Jakub Jelinek <jakub@redhat.com>
+
+ * include/atomic.h: Formatting.
+ (catomic_compare_and_exchange_val_acq): Don't define if already
+ defined by bits/atomic.h.
+
+2009-05-15 Ulrich Drepper <drepper@redhat.com>
+
+ * math/libm-test.inc (expm1_test): Add test for range error.
+
+ * Versions.def: Add GLIBC_2.11 for libc.
+ * debug/Makefile (routines): Add longjmp_chk.
+ Add rules to build and run tst-longjmp_chk.
+ * debug/Versions: Export __longjmp_chk for GLIBC_2.11.
+ * debug/longjmp_chk.c: New file.
+ * debug/tst-longjmp_chk.c: New file.
+ * include/bits/setjmp2.: New file.
+ * include/stdio.h: Mark __fortify_fail as internal_function.
+ * setjmp/Makefile (headers): Add bits/setjmp2.h.
+ * setjmp/bits/setjmp2.h: New file.
+ * setjmp/longjmp.c: If __libc_siglongjmp is defined, don't define any
+ of the aliases.
+ * setjmp/setjmp.h: Include <bits/setjmp2.h> if _FORTIFY_SOURCE is
+ defined.
+ * sysdeps/i386/____longjmp_chk.S: New file.
+ * sysdeps/x86_64/____longjmp_chk.S: New file.
+ * sysdeps/i386/__longjmp.S: If CHECK_ESP is defined, use it.
+ * sysdeps/x86_64/__longjmp.S: Likewise.
+
+ * version.h: Bump for 2.11 development.
+
+ * elf/check-execstack.c: New file.
+ * elf/Makefile: Add rules to build and run check-execstack.
+
+2009-05-10 Ulrich Drepper <drepper@redhat.com>
+
+ * version.h (VERSION): Bump to 2.10.1.
+
+ * nss/getXXbyYY_r.c: If NO_COMPAT_NEEDED is defined don't define any
+ compatibility functions.
+ * nss/getXXent_r.c: Likewise.
+ * gshadow/getsgent_r.c: Define NO_COMPAT_NEEDED.
+ * gshadow/getsgnam_r.c: Likewise.
+ * gshadow/Version: Remove duplicate entries.
+
+ * sysdeps/x86_64/cacheinfo.c (intel_02_cache_info): Add missing entries
+ for recent processor.
+ * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_02_cache_info):
+ Likewise.
+
+2009-05-09 Ulrich Drepper <drepper@redhat.com>
+
+ * version.h (VERSION): Bump for 2.10 release.
+ * include/features.h (__GLIBC_MINOR__): Bump to 10.
+
+ * Makeconfig: Undo last change. Add asflags-cpu to ASFLAGS in the
+ same place we add ASFLAGS-config.
+
+2009-05-05 Aurelien Jarno <aurelien@aurel32.net>
+
+ [BZ #10128]
+ * resolv/res_query.c (__libc_res_nquery): If one query returns NOTIMP
+ or FORMERR and the other NOERROR, don't raise an error.
+
+2009-05-06 Ryan S. Arnold <rsa@us.ibm.com>
+
+ [BZ #10118]
+ * Makeconfig (+asflags): New variable based upon ASFLAG or
+ asflags-cpu.
+ (ASFLAGS): Add override to set ASFLAGS to +asflags.
+ * config.make.in (asflags-cpu): Add variable based upon
+ @libc_cv_cc_submachine@ to propagate -mcpu=CPU from --with-cpu=CPU to
+ the assembler.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/setcontext.S:
+ Remove unneeded file now that the assembler emits _ARCH_PWR6 and
+ recognizes power6 instruction set due to passing -mcpu=power6 from
+ --with-cpu=power6 when compiling .S files.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/swapcontext.S:
+ Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/setcontext.S:
+ Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/swapcontext.S:
+ Likewise.
+
+2009-05-09 Jakub Jelinek <jakub@redhat.com>
+
+ * string/stratcliff.c (do_test): Test for zero length
+ STRNLEN, MEMCHR, STRNCPY, STPNCPY, MEMCPY, MEMPCPY and memccpy
+ at the end of the page.
+
+2009-05-08 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/kernel-features.h: Define __ASSUME_AT_RANDOM.
+
+ * sysdeps/x86_64/memchr.S: Handle invalid buffer pointers when
+ count is zero.
+
+ * po/da.po: Update from translation team.
+
+2009-05-05 Jakub Jelinek <jakub@redhat.com>
+
+ * io/sys/stat.h (fstatat64): Guard prototype with __USE_LARGEFILE64,
+ guard __extern_inline wrapper with __USE_ATFILE instead of __USE_GNU.
+
+2009-05-05 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/sys/personality.h: Add ADDR_COMPAT_LAYOUT
+ and READ_IMPLIES_EXEC.
+
+2009-05-04 Ulrich Drepper <drepper@redhat.com>
+
+ * po/da.po: Update from translation team.
+
+2009-04-29 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/unix/sysv/linux/ifaddrs.c: Revert unintended 2008-08-12
+ comment change.
+
+2009-04-27 Jakub Jelinek <jakub@redhat.com>
+
+ * locale/programs/locarchive.c (create_archive): Add MAP_PRIVATE
+ to MAP_ANON in PROT_NONE mmap64 call.
+ (open_archive): Likewise.
+ (file_data_available_p): Use mmap64 instead of mremap.
+ (enlarge_archive): Likewise. Update head if ah->addr changed.
+ Attempt to reserve address space after mmap64 region.
+
+2009-04-26 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/ieee754/dbl-64/s_expm1.c: Set errno for overflow.
+ * sysdeps/ieee754/flt-32/s_expm1f.c: Likewise.
+ * sysdeps/x86_64/fpu/s_expm1l.S: Likewise.
+
+ * sysdeps/ieee754/k_standard.c (__kernel_standard): Pole errors in
+ atanh should set ERANGE.
+
+ [BZ #10087]
+ * elf/dl-runtime.c (_dl_fixup): Use DL_FIXUP_VALUE_ADDR to access
+ result of lookup to make call to implement STT_GNU_IFUNC.
+ (_dl_profile_fixup): Likewise.
+ Patch by H.J. Lu <hjl.tools@gmail.com>.
+
+ * nscd/connections.c (send_ro_fd): Define temporary variable to avoid
+ warning.
+
+ * sysdeps/unix/sysv/linux/dl-osinfo.h (dl_fatal): Remove inline
+ from definition.
+
+ * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Don't define
+ label if it is not used.
+
+ * elf/dl-profile.c (_dl_start_profile): Define real-type variant
+ of gmon_hist_hdr and gmon_hdr structures and use them.
+ * elf/sprof.c: Likewise.
+
+ * elf/dl-load.c (open_verify): Add temporary variable to avoid
+ warning.
+
+ * nscd/nscd_helper.c (get_mapping): Avoid casts to avoid warnings.
+
+ * sunrpc/clnt_raw.c (clntraw_private_s): Use union in definition
+ to avoid cast.
+
+ * inet/rexec.c (rexec_af): Make sa2 a union to avoid warnings.
+ * inet/rcmd.c (rcmd_af): Make from a union of the various needed types
+ to avoid warnings.
+ (iruserok_af): Use ss_family instead of casts.
+
+ * gmon/gmon.c (write_hist): Define real-type variant of
+ gmon_hist_hdr structure and use it.
+ (write_gmon): Likewise for gmon_hdr.
+
+ * sysdeps/unix/sysv/linux/readv.c: Avoid declaration of replacement
+ function if we are not going to define it.
+ * sysdeps/unix/sysv/linux/writev.c: Likewise.
+
+ * inet/inet6_option.c (option_alloc): Add temporary variable to
+ avoid warning.
+
+ * libio/strfile.h (struct _IO_streambuf): Use correct type and
+ name of VTable element.
+ * libio/iovsprintf.c: Avoid casts to avoid warnings.
+ * libio/iovsscanf.c: Likewise.
+ * libio/vasprintf.c: Likewise.
+ * libio/vsnprintf.c: Likewise.
+ * stdio-common/isoc99_vsscanf.c: Likewise.
+ * stdlib/strfmon_l.c: Likewise.
+ * debug/vasprintf_chk.c: Likewise.
+ * debug/vsnprintf_chk.c: Likewise.
+ * debug/vsprintf_chk.c: Likewise.
+
+ * nss/nsswitch.c (__nss_lookup_function): En/Decrypt cached
+ function pointers.
+
+2009-04-26 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/ieee754/dbl-64/s_tan.c (tan): Fix -Wsequence-point warnings.
+
+2009-04-25 Ulrich Drepper <drepper@redhat.com>
+
+ * posix/bits/posix1_lim.h: Cleanup namespace a bit.
+
+ * sysdeps/i386/fpu/s_tan.S: Set errno for ±Inf.
+ * sysdeps/i386/fpu/s_tanf.S: Likewise.
+ * sysdeps/i386/fpu/s_tanl.S: Likewise.
+ * sysdeps/ieee754/dbl-64/s_tan.c: Likewise.
+ * sysdeps/ieee754/flt-32/s_tanf.c: Likewise.
+ * sysdeps/x86_64/fpu/s_tanl.S: Likewise.
+ * math/libm-test.inc: Add tests for errno after tan calls with
+ ±Inf.
+
+ * sysdeps/ieee754/k_standard.c (__kernel_standard): Use correct
+ errno value vor pow(+-0,neg).
+ * math/libm-test.inc (pow_test): Add tests for errno value for
+ pole errors.
+
+ * math/w_fmod.c: Also handle x=±Inf as error.
+ * math/w_fmodf.c: Likewise.
+ * math/w_fmodl.c: Likewise.
+ * math/libm-test.inc (fmod_test): Add tests for errno after calls for
+ x=±Inf or y=0.
+
+ * sysdeps/i386/fpu/s_cos.S: Set errno for ±Inf.
+ * sysdeps/i386/fpu/s_cosf.S: Likewise.
+ * sysdeps/i386/fpu/s_cosl.S: Likewise.
+ * sysdeps/i386/fpu/s_sin.S: Likewise.
+ * sysdeps/i386/fpu/s_sinf.S: Likewise.
+ * sysdeps/i386/fpu/s_sinl.S: Likewise.
+ * sysdeps/ieee754/dbl-64/s_sin.c: Likewise.
+ * sysdeps/ieee754/flt-32/s_cosf.c: Likewise.
+ * sysdeps/ieee754/flt-32/s_sinf.c: Likewise.
+ * sysdeps/ieee754/ldbl-96/s_cosl.c: Likewise.
+ * sysdeps/ieee754/ldbl-96/s_sinl.c: Likewise.
+ * sysdeps/x86_64/fpu/s_cosl.S: Likewise.
+ * sysdeps/x86_64/fpu/s_sinl.S: Likewise.
+ * math/libm-test.inc: Add tests for errno after sin/cos calls with
+ ±Inf.
+
+ * stdlib/strtod_l.c (round_and_return): We have to set errno to
+ ERANGE for underflows.
+ * stdlib/tst-strtod.c (tests): Two tests should set errno to ERANGE.
+
+ * stdio-common/stdio_lim.h.in (L_cuserid): Not part of POSIX since
+ the 2001 revision.
+
+ * libio/tst-widetext.input: Remove surrogates.
+
+ * include/features.h: _POSIX_C_SOURCE >= 200112L implies C99.
+
+ * sysdeps/ieee754/k_standard.c (__kernel_standard): Pole errors
+ for lgamma should set errno to ERANGE, not EDOM.
+ * math/libm-test.inc (lgamma_test): Check errno for pole errors.
+
+2009-04-24 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10093]
+ * iconv/gconv_simple.c (BODY for UTF-8 to INTERNAL): Don't accept
+ UTF-16 surrogates.
+
+ * locale/programs/locarchive.c (enlarge_archive): Conserve address
+ space when temporarily mapping the whole content of the old file.
+
+ [BZ #10100]
+ * misc/hsearch_r.c (hsearch_r): Add back ensurance that hval is
+ not zero.
+
+2009-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ * iconvdata/sjis.c (BODY): Don't advance inptr before
+ STANDARD_FROM_LOOP_ERR_HANDLER (2) for 2 byte invalid input.
+ Use STANDARD_FROM_LOOP_ERR_HANDLER with 2 instead of 1 for
+ two byte chars.
+
+2009-04-24 Ulrich Drepper <drepper@redhat.com>
+
+ * locale/locarchive.h (struct locarhandle): Rename len field to
+ mmaped and add new reserved field.
+ * locale/programs/locarchive.c (RESERVE_MMAP_SIZE): Define.
+ (create_archive): Reserve address space and then map file into it.
+ (open_archive): Likewise.
+ (file_data_available_p): New function.
+ (compare_from_file): New function.
+ (close_archive): Adjust to member name changes.
+ (add_locale): Before comparing locale data, check it is mapped.
+ Otherwise fall back to reading from the file.
+
+2009-04-23 H.J. Lu <hongjiu.lu@intel.com>
+
+ * stdio-common/psiginfo.c: Include <errno.h>.
+
+2009-04-23 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9920]
+ * stdlib/random_r.c (__srandom_r): Change type of word to int32_t
+ to get consistency between 32 and 64 bit architectures.
+
+ [BZ #10052]
+ * sysdeps/unix/make-syscalls.sh: Add rule to create target
+ directory for dummy syscall rules.
+ Patch by Chris Steinbroner <hesh@pobox.com>.
+
+2009-04-23 Aurelien Jarno <aurelien@aurel32.net>
+
+ [BZ #10092]
+ * sysdeps/unix/sysv/linux/sys/mount.h: Define MNT_DETACH and
+ MNT_EXPIRE.
+
+2009-04-23 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/preadv.c: The kernel API changed. Adjust.
+ * sysdeps/unix/sysv/linux/pwritev.c: Likewise.
+
+2009-04-23 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/posix/pwritev.c (PWRITEV): Fix up comment. Copy
+ data from vector to temporary buffer and call PWRITEV after it
+ instead of vice versa.
+ * sysdeps/posix/preadv.c: Fix up comment.
+ * misc/preadv.c: Likewise.
+ * misc/preadv64.c: Likewise.
+ * misc/pwritev.c: Likewise.
+ * misc/pwritev64.c: Likewise.
+ * misc/sys/uio.h (preadv, pwritev, preadv64, pwritev64): Likewise.
+
+2009-04-23 Ulrich Drepper <drepper@redhat.com>
+
+ * shadow/sgetspent_r.c (__sgetspent_r): Recognize too small buffers.
+
+ * shadow/Makefile (tests): Add tst-shadow.
+ * shadow/tst-shadow.c: New file.
+
+ [BZ #9955]
+ * gshadow/Makefile: New file.
+ * gshadow/Versions: New file.
+ * gshadow/fgetsgent.c: New file.
+ * gshadow/fgetsgent_r.c: New file.
+ * gshadow/getsgent.c: New file.
+ * gshadow/getsgent_r.c: New file.
+ * gshadow/getsgnam.c: New file.
+ * gshadow/getsgnam_r.c: New file.
+ * gshadow/gshadow.h: New file.
+ * gshadow/putsgent.c: New file.
+ * gshadow/sgetsgent.c: New file.
+ * gshadow/sgetsgent_r.c: New file.
+ * gshadow/tst-gshadow.c: New file.
+ * include/gshadow.h: New file.
+ * Makeconfig (all-subdirs): Add gshadow.
+ * Makefile (installed-headers): Add gshadow/gshadow.h.
+ * nss/Makefile (databases): Add sgrp.
+ * nss/Versions: Add gshadow functions as private exports.
+ * nss/nsswitch.conf: Add gshadow entry.
+ * nss/sgrp-lookup.c: New file.
+ * nss/nss_files/files-parse.c: Add STRING_LIST macro. Rewrite
+ parse_list to handle STRING_LIST and TRAILING_LIST_PARSER.
+ * nss/nss_files/files-sgrp.c: New file.
+ * sysdeps/generic/paths.h: Add _PATH_GSHADOW.
+ * sysdeps/unix/sysv/linux/paths.h: Likewise.
+
+2009-04-22 Ulrich Drepper <drepper@redhat.com>
+
+ * stdio-common/printf.h: Add missing const to register_printf_modifier.
+ * stdio-common/reg-modifier.c: Likewise.
+
+2009-04-22 Andrew Stubbs <ams@codesourcery.com>
+
+ * sysdeps/sh/sh4/setjmp.S (__sigsetjmp): Adjust JB_SIZE when there
+ is no FPU.
+
+2009-04-20 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10086]
+ * sysdeps/unix/sysv/linux/sys/timex.h: Add definitions from kernel
+ headers up to 2.6.30.
+
+ * po/ca.po: Update from translation team.
+
+2009-04-19 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10069]
+ * elf/dl-open.c (dl_open_worker): We cannot guarantee that we can load
+ an object that uses static TLS if the TLS modid is higher than the
+ reserve we always allocate. At least for multi-threaded code.
+
+2009-04-18 Ulrich Drepper <drepper@redhat.com>
+
+ * stdlib/strfmon_l.c (__vstrfmon_l): Don't wrap when computing width.
+ Numerically stable check for valid width.
+
+ * locale/programs/locarchive.c (open_archive): Map the entire file
+ and not just the administrative data.
+ (add_locale): When we find a hash sum match compare the content
+ to be sure.
+
+ * malloc/malloc.c (malloc_info): Output address space information.
+
+2009-04-17 Ulrich Drepper <drepper@redhat.com>
+
+ * malloc/malloc.c (malloc_info): Also output system memory information.
+
+ * sysdeps/unix/sysv/linux/kernel-features.h: All supported
+ architectures have preadv/pwritev in 2.6.30.
+
+ * sysdeps/posix/preadv.c: Reading of zero bytes is no error.
+ * sysdeps/posix/readv.c: Likewise.
+ Reported by Markus Armbruster <armbru@redhat.com>.
+
+ * malloc/hooks.c (top_check): Force hook value into register.
+
+2009-04-16 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * elf/rtld.c (dl_main): Really call _dl_sysdep_start_cleanup after all
+ calls to _dl_relocate_object.
+
+2009-04-16 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9957]
+ * malloc/malloc.c (force_reg): Define.
+ (sYSMALLOc): Load hook variable into variable
+ before test and force into register.
+ (sYSTRIm): Likewise.
+ (public_mALLOc): Force hook value into register.
+ (public_fREe): Likewise.
+ (public_rEALLOc): Likewise.
+ (public_mEMALIGn): Likewise.
+ (public_vALLOc): Likewise.
+ (public_pVALLOc): Likewise.
+ (public_cALLOc): Likewise.
+ (__posix_memalign): Likewise.
+ * malloc/arena.c (ptmalloc_init): Load hook variable into variable
+ before test and force into register.
+ * malloc/hooks.c (top_check): Likewise.
+ (public_sET_STATe): Pretty printing.
+
+ * resolv/res_send.c (send_dg): Don't just ignore the result we got
+ in case we only receive one reply in single-request mode.
+
+2009-04-16 Jakub Jelinek <jakub@redhat.com>
+
+ * elf/dl-open.c (_dl_open): Bump GL(dl_nns) to 1 if no libraries
+ are dlopened in statically linked program even for __LM_ID_CALLER.
+
+2009-04-16 Ulrich Drepper <drepper@redhat.com>
+
+ * resolv/res_send.c (send_dg): Don't switch into single-request
+ mode if we already are in it.
+
+2009-04-15 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/getsysstats.c (next_line): Make sure there
+ are always at least 4 bytes in the returned line.
+
+2009-04-15 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/unix/sysv/linux/getsysstats.c (__get_nprocs): Check
+ __libc_use_alloca (8192), if the stack is too small use 512 bytes
+ instead of 8K. Stop searching in /proc/stat after hitting first
+ line not starting with cpu.
+ (next_line): Truncate too long
+ lines at buffer size * 3/4 instead of pretending there were line
+ breaks inside of large lines.
+
+2009-04-14 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/mp_clz_tab.c: New file.
+
+2009-03-17 Ryan S. Arnold <rsa@us.ibm.com>
+ Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/fallocate.c: Handle old kernel headers.
+ * sysdeps/unix/sysv/linux/fallocate64.c: Likewise.
+ * sysdeps/unix/sysv/linux/wordsize-64/fallocate.c: Likewise.
+
+2009-03-25 Andrew Stubbs <ams@codesourcery.com>
+
+ * sysdeps/sh/libc-tls.c: New file.
+
+ * sysdeps/sh/bits/setjmp.h (__jmp_buf): Give name to structure type.
+
+2009-04-14 Roland McGrath <roland@redhat.com>
+
+ * elf/elf.h: Add various missing ARM constants, to match binutils.
+
+2009-04-14 Ulrich Drepper <drepper@redhat.com>
+
+ Optimizations from GMP.
+ * sysdeps/x86_64/add_n.S: New file.
+ * sysdeps/x86_64/addmul_1.S: New file.
+ * sysdeps/x86_64/lshift.S: New file.
+ * sysdeps/x86_64/mul_1.S: New file.
+ * sysdeps/x86_64/rshift.S: New file.
+ * sysdeps/x86_64/sub_n.S: New file.
+ * sysdeps/x86_64/submul_1.S: New file.
+
+2009-04-14 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/powerpc/powerpc32/elf/start.S: Ensure .data is non-empty.
+ * sysdeps/powerpc/powerpc64/elf/start.S: Likewise.
+ * sysdeps/sparc/sparc32/elf/start.S: Likewise.
+ * sysdeps/sparc/sparc64/elf/start.S: Likewise.
+
+2009-04-14 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/kernel-features.h: SH also has
+ preadv/pwritev.
+
+2009-04-13 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86-64/strrchr.S: New file.
+
+2009-04-10 Ulrich Drepper <drepper@redhat.com>
+
+ * stdio-common/printf.h (struct printf_info): Add user element.
+ New types printf_arginfo_size_function, printf_va_arg_function.
+ Declare register_printf_specifier, register_printf_modifier,
+ register_printf_type.
+ * stdio-common/printf-parse.h (struct printf_spec): Add size element.
+ (union printf_arg): Add pa_user element.
+ Adjust __printf_arginfo_table type.
+ Add __printf_va_arg_table, __printf_modifier_table,
+ __handle_registered_modifier_mb, and __handle_registered_modifier_wc
+ declarations.
+ * stdio-common/printf-parsemb.c: Recognize registered modifiers.
+ If registered arginfo call failed try normal specifier.
+ * stdio-common/printf-prs.c: Pass additional parameter to arginfo
+ function.
+ * stdio-common/Makefile (routines): Add reg-modifier and reg-type.
+ * stdio-common/Versions: Export register_printf_modifier,
+ register_printf_type, and register_printf_specifier for GLIBC_2.10.
+ * stdio-common/reg-modifier.c: New file.
+ * stdio-common/reg-type.c: New file.
+ * stdio-common/reg-printf.c (__register_printf_specifier): New
+ function. Mostly the old __register_printf_function function but
+ uses locking and type of third parameter changed.
+ (__register_printf_function): Implement using
+ __register_printf_specifier.
+ * stdio-common/vfprintf.c (vfprintf): Collect argument sizes in
+ calls to arginfo functions. Allocate enough memory for user-defined
+ types. Call new va_arg functions to get user-defined types.
+ Try installed handlers even for existing format specifiers first.
+
+2009-04-09 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/rawmemchr.S: New file.
+
+ * stdio-common/vfprintf.c (vfprintf): Slightly more compact code.
+ Simplified code and possible copy problem fixed.
+
+ * sysdeps/unix/sysv/linux/preadv.c: Avoid prototype for static
+ function if it is not defined. Add some necessary casts.
+ * sysdeps/unix/sysv/linux/pwritev.c: Likewise.
+
+ * sysdeps/unix/sysv/linux/kernel-features.h: SPARC and IA64 also
+ have preadv/pwritev in 2.6.30.
+
+2009-04-08 Ulrich Drepper <drepper@redhat.com>
+
+ * malloc/malloc.c (malloc_info): New function.
+ * malloc/malloc.h: Declare it.
+ * malloc/Versions: Export malloc_info for GLIBC_2.10.
+
+ * sysdeps/unix/sysv/linux/preadv64.c (PREAD): Use __libc_pread64
+ to avoid PLT slot.
+
+ * malloc/malloc.c (_int_realloc): Add parameter with old block
+ size. Remove duplicated test. Don't handle mmap'ed blocks here.
+ Adjust all callers.
+ * malloc/hooks.c (realloc_check): Adjust _int_realloc call.
+
+2009-04-07 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/strchrnul.S: New file.
+
+ * crypt/Makefile (LDLIBS-crypt.so): Use this variable instead of
+ depending libcrypt on -lfreebl3.
+
+ * sysdeps/unix/sysv/linux/kernel-features.h: Power also has
+ preadv/pwritev in 2.6.30.
+
+ * resolv/nss_dns/dns-host.c (getanswer_r): Use strcasecmp
+ instead of __strcasecmp.
+
+ * string/stratcliff.c (do_test): Add memchr tests..
+ * wcsmbs/wcsatcliff.c (MEMCHR): Define.
+ * sysdeps/x86_64/memchr.S: Fix handling of end of buffer after
+ first read quad word.
+
+2009-04-06 Ulrich Drepper <drepper@redhat.com>
+
+ * string/strverscmp.c (__strverscmp): Fix last cleanups.
+ * string/tst-svc.input: Add new test case.
+ * string/tst-svc.expect: Adjust.
+ * string/Makefile: Don't ignore tst-svc error.
+
+ * sysdeps/x86_64/memchr.S: New file.
+
+ * resolv/resolv.h (RES_SNGLKUP): Define.
+ * resolv/res_init.c (res_setoptions): Recognize single-request option.
+ * resolv/res_send.c (send_dg): If we sent two requests at once and
+ only get one reply before timeout switch to mode where we send the
+ second request only after the first answer has been received.
+
+2009-04-05 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/strlen.S: Optimize by using SSE2 instructions.
+ * sysdeps/x86_64/strchr.S: Likewise.
+
+2009-04-03 Ulrich Drepper <drepper@redhat.com>
+
+ * configure.in: We need to test for the compiler earlier.
+
+ * misc/Makefile (routines): Add preadv, preadv64, pwritev, pwritev64.
+ * misc/Versions: Export preadv, preadv64, pwritev, pwritev64 for
+ GLIBC_2.10.
+ * misc/sys/uio.h: Declare preadv, preadv64, pwritev, pwritev64.
+ * sysdeps/unix/sysv/linux/kernel-features.h: Add entries for preadv
+ and pwritev.
+ * misc/preadv.c: New file.
+ * misc/preadv64.c: New file.
+ * misc/pwritev.c: New file.
+ * misc/pwritev64.c: New file.
+ * sysdeps/posx/preadv.c: New file.
+ * sysdeps/posx/preadv64.c: New file.
+ * sysdeps/posx/pwritev.c: New file.
+ * sysdeps/posx/pwritev64.c: New file.
+ * sysdeps/unix/sysv/linux/preadv.c: New file.
+ * sysdeps/unix/sysv/linux/preadv64.c: New file.
+ * sysdeps/unix/sysv/linux/pwritev.c: New file.
+ * sysdeps/unix/sysv/linux/pwritev64.c: New file.
+ * sysdeps/unix/sysv/linux/wordsize-64/preadv64.c: New file.
+ * sysdeps/unix/sysv/linux/wordsize-64/pwritev64.c: New file.
+
+ * sysdeps/unix/sysv/linux/readv.c (__libc_readv): Fix calling of
+ compatibility code.
+ * sysdeps/unix/sysv/linux/writev.c (__libc_writev): Likewise.
+
+ * sysdeps/unix/sysv/linux/kernel-features.h: Define
+ __ASSUME_COMPLETE_READV_WRITEV.
+ * sysdeps/unix/sysv/linux/readv.c: No need for userlevel fallback
+ with modern kernels.
+ * sysdeps/unix/sysv/linux/writev.c: Likewise.
+
+ * sysdeps/posix/readv.c: Since read is a cancellation point we have
+ to free a possible malloced buffer in case of cancellation.
+ * sysdeps/posix/writev.c: Likewise for write.
+
+2009-04-02 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/bits/socket.h: Add missing protocol numbers.
+
+ * configure.in: Recognize --enable-nss-crypt.
+ * config.make.in: Add nss-crypt entry.
+ * crypt/Makefile: If nss-crypt==yes, don't build md5.c, sha256.c,
+ sha512.c. Don't run md5test, sha256test, sha512test. Pass -DUSE_NSS
+ and include path for NSS directory to compiler for md5-crypt,
+ sha256-crypt, sha512-crypt. Link libcrypt.so with -lfreebl3.
+ * crypt/md5-crypt.c: If USE_NSS is defined, don't use local hash
+ function implementation, use NSS. Introduce wrappers around the
+ hash function calls. Little code size optimization.
+ * crypt/sha256-crypt.c: Likewise.
+ * crypt/sha512-crypt.c: Likewise.
+ * scripts/check-local-headers.sh: Ignore nss3 directory.
+
+ * configure.in: Rename pic_default to libc_cv_pic_default.
+ * config.make.in: Likewise.
+
+2009-04-01 Roland McGrath <roland@redhat.com>
+
+ * elf/elf.h (R_SPARC_GLOB_JMP): New macro.
+ (R_SPARC_GOTDATA_HIX22, R_SPARC_GOTDATA_LOX10): New macros.
+ (R_SPARC_GOTDATA_OP_HIX22, R_SPARC_GOTDATA_OP_LOX10): Likewise.
+ (R_SPARC_GOTDATA_OP, R_SPARC_H34): Likewise.
+ (R_SPARC_SIZE32, R_SPARC_SIZE64): Likewise.
+ (R_SPARC_GNU_VTINHERIT, R_SPARC_GNU_VTENTRY, R_SPARC_REV32): Likewise.
+ (R_SPARC_NUM): Update.
+ From Dave Miller <davem@davemloft.net>.
+
+2009-04-01 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/sys/eventfd.h (EFD_SEMAPHORE): Define.
+
+2009-03-31 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/dl-open.c: Keep track of used name spaces and only iterate over
+ those which are used.
+ * elf/dl-addr.c: Likewise.
+ * elf/dl-caller.c: Likewise.
+ * elf/dl-fini.c: Likewise.
+ * elf/dl-iteratephdr.c: Likewise.
+ * elf/dl-libc.c: Likewise.
+ * elf/dl-load.c: Likewise.
+ * elf/dl-support.c: Likewise.
+ * elf/dl-sym.c: Likewise.
+ * elf/rtld.c: Likewise.
+ * sysdeps/generic/ldsodefs.h: Likewise.
+
+ * elf/dl-load.c: Remove support for systems without MAP_ANON.
+ * elf/dl-minimal.c: Likewise.
+ * elf/dl-misc.c: Likewise.
+ * elf/rtld.c: Likewise.
+ * sysdeps/generic/ldsodefs.h: Likewise.
+
+2009-03-30 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/do-lookup.h (do_lookup_x): Minor optimization and cleanup.
+ Avoid reuse of complex expression.
+
+ * po/fr.po: Update from translation team.
+
+2009-03-16 Ulrich Drepper <drepper@redhat.com>
+
+ * include/dirent.h: Yet more changes to match sort function type
+ change.
+ * sysdeps/unix/sysv/linux/i386/alphasort64.c: Likewise.
+ * sysdeps/unix/sysv/linux/i386/olddirent.h: Likewise.
+ * sysdeps/unix/sysv/linux/i386/versionsort64.c: Likewise.
+
+2009-03-16 Thomas Schwinge <tschwinge@gnu.org>
+
+ * dirent/scandir64.c (scandir64): Adjust declaration to type change.
+
+2009-03-16 Ulrich Drepper <drepper@redhat.com>
+
+ * nscd/connections.c (restart): Try to preserve the process name
+ by reading the /proc/self/exe symlink and using the return name.
+ Patch by Jeff Bastian <jbastian@redhat.com>.
+
+2009-03-15 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9733]
+ * elf/dl-load.c (_dl_map_object_from_fd): Only call audit hooks
+ if we are not loading a new audit library.
+ * elf/dl-reloc (_dl_relocate_object): Third parameter is now a bitmask.
+ Only use profiling trampoline for auditing if we are not relocating
+ an audit library.
+ * elf/dl-open.c (dl_open_worker): Adjust _dl_relocate_object call.
+ * elf/rtld.c: Likewise.
+ * sysdeps/generic/ldsodefs.h: Adjust _dl_relocate_object prototype.
+
+ * elf/rtld.c (dl_main): Extend help message for --audit option.
+
+ [BZ #9759]
+ * dirent/dirent.h: Adjust prototypes of scandir, scandir64, alphasort,
+ alphasort64, versionsort, and versionsort64 to POSIX 2008.
+ * dirent/alphasort.c: Adjust implementation to type change.
+ * dirent/alphasort64.c: Likewise.
+ * dirent/scandir.c: Likewise.
+ * dirent/versionsort.c: Likewise.
+ * dirent/versionsort64.c: Likewise.
+ * sysdeps/wordsize-64/alphasort.c: Add hack to hide alphasort64
+ declaration.
+ * sysdeps/wordsize-64/versionsort.c: Add hack to hide versionsort64
+ declaration.
+
+ [BZ #9880]
+ * inet/inet6_rth.c (inet6_rth_reverse): Compute number of segments
+ correctly. Set segleft member in output as required.
+ Patch partly by Yang Hongyang <yanghy@cn.fujitsu.com>.
+ * inet/tst-inet6_rth.c (do_test): Add tests for inet6_rth_reverse.
+
+ [BZ #9881]
+ * inet/inet6_rth.c (inet6_rth_add): Add some error checking.
+ Patch mostly by Yang Hongyang <yanghy@cn.fujitsu.com>.
+ * inet/Makefile (tests): Add tst-inet6_rth.
+ * inet/tst-inet6_rth.c: New file.
+
+ [BZ #5807]
+ * string/strlen.c (strlen): Fix omission in the expression to test
+ for NUL bytes.
+
+2009-03-14 Ulrich Drepper <drepper@redhat.com>
+
+ * crypt/sha256test.c (main): Perform 100,000 'a' test in a second way.
+
+ * elf/dl-runtime.c (reloc_offset): Define.
+ (reloc_index): Define.
+ (_dl_fixup): Rename reloc_offset parameter to reloc_arg.
+ (_dl_fixup_profile): Likewise. Use reloc_index instead of
+ computing index from reloc_offset.
+ (_dl_call_pltexit): Likewise.
+ * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_resolve): Just pass
+ the relocation index to _dl_fixup.
+ (_dl_runtime_profile): Likewise for _dl_fixup_profile and
+ _dl_call_pltexit.
+ * sysdeps/x86_64/dl-runtime.c: New file.
+
+ [BZ #9893]
+ * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix
+ alignment of La_x86_64_regs. Store xmm parameters.
+ Patch mostly by Jiri Olsa <olsajiri@gmail.com>.
+
+ [BZ #9913]
+ * string/strverscmp.c (__strverscmp): Fix case of different digits
+ in fractional part of string.
+ Patch by Jingyu Liu <jyliu@fortinet.com>.
+ * string/Makefile (tests): Add tst-svc2.
+ * string/tst-svc2.c: New file.
+
+ * string/strverscmp.c (__strverscmp): Optimize size of tables.
+
+ * locale/iso-639.def: Add Min Nan.
+
+2009-03-11 Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
+
+ [BZ #9948]
+ * elf/dl-sysdep.c (_dl_show_auxv): Add support for AT_BASE_PLATFORM.
+
+2009-03-14 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/dl-sysdep.c (auxvars): Compress data structure.
+
+ * sysdeps/i386/dl-machine.h (elf_machine_rel): Implement
+ STT_GNU_IFUNC handling.
+ (elf_machine_rela): Likewise.
+
+2009-03-13 Ulrich Drepper <drepper@redhat.com>
+
+ * config.h.in (USE_MULTIARCH): Define.
+ * configure.in: Handle --enable-multi-arch.
+ * elf/dl-runtime.c (_dl_fixup): Handle STT_GNU_IFUNC.
+ (_dl_fixup_profile): Likewise.
+ * elf/do-lookup.c (dl_lookup_x): Likewise.
+ * sysdeps/x86_64/dl-machine.h: Handle STT_GNU_IFUNC.
+ * elf/elf.h (STT_GNU_IFUNC): Define.
+ * include/libc-symbols.h (libc_ifunc): Define.
+ * sysdeps/x86_64/cacheinfo.c: If USE_MULTIARCH is defined, use the
+ framework in init-arch.h to get CPUID values.
+ * sysdeps/x86_64/multiarch/Makefile: New file.
+ * sysdeps/x86_64/multiarch/init-arch.c: New file.
+ * sysdeps/x86_64/multiarch/init-arch.h: New file.
+ * sysdeps/x86_64/multiarch/sched_cpucount.c: New file.
+
+ * config.make.in (experimental-malloc): Define.
+ * configure.in: Handle --enable-experimental-malloc.
+ * malloc/Makefile: Handle experimental-malloc flag.
+ * malloc/malloc.c: Implement PER_THREAD and ATOMIC_FASTBINS features.
+ * malloc/arena.c: Likewise.
+ * malloc/hooks.c: Likewise.
+ * malloc/malloc.h: Define M_ARENA_TEST and M_ARENA_MAX.
+
+2009-03-11 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Add branch
+ prediction. A few size optimizations.
+
+2009-03-10 Ulrich Drepper <drepper@redhat.com>
+
+ * time/tzset.c: Optimize a bit for size.
+
+2009-03-10 Jakub Jelinek <jakub@redhat.com>
+
+ * include/stdio.h (fmemopen): Add libc_hidden_proto.
+ * libio/fmemopen.c (fmemopen): Add libc_hidden_def.
+
+ * elf/sprof.c: Avoid warning about multi-line comment.
+
+2009-03-10 Ulrich Drepper <drepper@redhat.com>
+
+ * time/tzset.c (__tzset_parse_tz): Use correct string when parsing
+ DST name.
+ * time/tst-posixtz.c: Add tests for quoted timezone names.
+
+2009-03-10 Jakub Jelinek <jakub@redhat.com>
+
+ * posix/unistd.h (_POSIX_VERSION, _POSIX2_VERSION, _POSIX2_C_BIND,
+ _POSIX2_C_DEV, _POSIX2_SW_DEV, _POSIX2_LOCALEDEF): Define to
+ 200809L instead of 200112L.
+ (_XOPEN_VERSION): For __USE_XOPEN2K8 define to 700.
+ * posix/tst-sysconf.c (STDVER): Define to 200809L instead of 200112L.
+
+ * stdlib/quick_exit.c (quick_exit): Pass &__quick_exit_funcs
+ instead of __quick_exit_funcs to __run_exit_handlers.
+ * stdlib/at_quick_exit.c (at_quick_exit): Add attribute_hidden.
+ * stdlib/exit.h (__run_exit_handlers): Add noreturn attribute.
+ (__cxa_at_quick_exit): Remove attribute_hidden.
+ * stdlib/exit.c (exit): Pass &__exit_funcs instead of __exit_funcs
+ to __run_exit_handlers.
+ * stdlib/cxa_at_quick_exit.c (__cxa_at_quick_exit): Remove
+ attribute_hidden.
+
+2009-03-10 Ulrich Drepper <drepper@redhat.com>
+
+ * po/id.po: Update from translation team.
+
+2009-02-18 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S: Use
+ .machine push; .machine "power6" and .machine pop around mtfsf
+ insns outside of _ARCH_PWR6 define.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S:
+ Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S:
+ Likewise.
+ * sysdeps/powerpc/fpu/tst-setcontext-fpscr.c (_SET_DI_FPSCR): Likewise.
+ * sysdeps/powerpc/fpu/fenv_libc.h (fesetenv_register,
+ relax_fenv_state): Likewise.
+
+2009-03-08 Ulrich Drepper <drepper@redhat.com>
+
+ * stdlib/Makefile (routines): Add quick_exit, at_quick_exit, and
+ cxa_at_quick_exit.
+ (static-only-routines): Add at_quick_exit.
+ * stdlib/Versions: Export quick_exit and __cxa_at_quick_exit for
+ GLIBC_2.10.
+ * stdlib/quick_exit.c: New file.
+ * stdlib/at_quick_exit.c: New file.
+ * stdlib/cxa_at_quick_exit.c: New file.
+ * stdlib/cxa_atexit.c (__cxa_atexit): Move body to new function. Call
+ it appropriately.
+ (__internal_atexit): New function.
+ (__new_exitfn): Now takes parameter to point to the list to use.
+ * stdlib/cxa_finalize.c: Remove quick_exit handlers, don't call them.
+ * stdlib/exit.c (__run_exit_handlers): New function. Split from...
+ (exit): ...here. Just call __run_exit_handlers appropriately.
+ * stdlib/exit.h: Declare __quick_exit_funcs, __run_exit_handlers,
+ __internal_atexit, __cxa_at_quick_exit. Adjust __new_exitfn.
+ * stdlib/on_exit.c: Adjust call to __new_exitfn.
+ * stdlib/stdlib.h: Declare at_quick_exit and quick_exit.
+
+ * po/id.po: Update from translation team.
+
+2009-03-07 Ulrich Drepper <drepper@redhat.com>
+
+ * po/ru.po: Update from translation team.
+
+2009-03-04 Ulrich Drepper <drepper@redhat.com>
+
+ * po/nl.po: Update from translation team.
+
+2009-03-03 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: Declare fallocate{,64}.
+ * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise.
+ * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: Likewise.
+
+ * po/pl.po: Update from translation team.
+
+2009-03-02 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #7083]
+ * sysdeps/unix/sysv/linux/fallocate.c: New file.
+ * sysdeps/unix/sysv/linux/fallocate64.c: New file.
+ * sysdeps/unix/sysv/linux/wordsize-64/fallocate64.c: New file.
+ * sysdeps/unix/sysv/linux/wordsize-64/fallocate.c: New file.
+ * sysdeps/unix/sysv/linux/i386/fallocate64.c: New file.
+ * sysdeps/unix/sysv/linux/i386/fallocate.c: New file.
+ * sysdeps/unix/sysv/linux/Versions: Export fallocate and fallocate64
+ for GLIBC_2.10.
+ * sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines):
+ Add fallocate and fallocate64.
+
+ * io/fcntl.h: Pretty printing.
+
+2009-03-02 Richard Guenther <rguenther@suse.de>
+
+ * misc/sys/cdefs.h (__extern_always_inline): Add __artificial__
+ attribute also for non-C99 inline semantics variant.
+
+2009-02-12 Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
+
+ * sysdeps/powerpc/powerpc32/power7/fpu/Implies: New file.
+ * sysdeps/powerpc/powerpc32/power7/Implies: Likewise.
+ * sysdeps/powerpc/powerpc64/power7/fpu/Implies: Likewise.
+ * sysdeps/powerpc/powerpc64/power7/Implies: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/fpu/Implies:
+ Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/fpu/Implies:
+ Likewise.
+
+2009-03-02 Ulrich Drepper <drepper@redhat.com>
+
+ * po/cs.po: Update from translation team.
+
+2009-02-28 Ulrich Drepper <drepper@redhat.com>
+
+ * po/bg.po: Update from translation team.
+ * po/sv.po: Likewise.
+ * po/fi.po: Likewise.
+ * po/vi.po: Likewise.
+
+2009-02-27 Roland McGrath <roland@redhat.com>
+
+ * Makeconfig (%.v.i): Depend on Makeconfig.
+ Exclude % lines from initial #-comment removal.
+
+2009-02-27 Ulrich Drepper <drepper@redhat.com>
+
+ * po/ko.po: Update from translation team.
+
+2009-02-26 Roland McGrath <roland@redhat.com>
+
+ * shadow/lckpwdf.c (__lckpwdf): Move FLAGS inside block using it,
+ avoids unused warning.
+
+2009-02-26 Andrew Stubbs <ams@codesourcery.com>
+ SUGIOKA Toshinobu <sugioka@itonet.co.jp>
+
+ * sysdeps/unix/sysv/linux/sh/sys/procfs.h: Don't include signal.h,
+ sys/ucontext.h and asm/elf.h. Include sys/user.h.
+ * sysdeps/unix/sysv/linux/sh/sys/user.h: Don't include features.h
+ and asm/user.h. Include asm/ptrace.h.
+ (PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS,
+ PTRACE_SETFPREGS, PTRACE_GETFDPIC, PTRACE_GETFDPIC_EXEC,
+ PTRACE_GETFDPIC_INTERP, PTRACE_GETDSPREGS, PTRACE_SETDSPREGS):
+ Undefine.
+ (start_thread): Don't undefine.
+ (elf_greg_t, ELF_NGREG, elf_fpregset_t, user_fpu_struct, user):
+ Define.
+
+2009-02-26 Ulrich Drepper <drepper@redhat.com>
+
+ * wctype/wctype.h: The *_l functions are in POSIX 2008.
+ * wcsmbs/wchar.h: mbsnrtowcs, open_wmemstream, wcpcpy, wcpncpy,
+ wcscasecmp, wcsdup, wcsncasecmp, wcsnlen, wcsnrtombs,
+ wcscasecmp_l, wcsncasecmp_l, wcscoll_l, and wcsxfrm_l.
+ * sysdeps/mach/hurd/bits/posix_opt.h: Reset value of macros from
+ 200112L to 200809L.
+ * sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
+ * posix/getconf.c (vars): Add _SC_THREAD_ROBUST_PRIO_INHERIT and
+ _SC_THREAD_ROBUST_PRIO_PROTECT entries.
+ * bits/confname.h: Add _SC_THREAD_ROBUST_PRIO_INHERIT and
+ _SC_THREAD_ROBUST_PRIO_PROTECT.
+ * posix/unistd.h: fexecve is in POSIX 2008.
+ * time/time.h: strftime_l is in POSIX 2008.
+ * io/sys/stat.h: futimens is in POSIX 2008.
+ * string/strings.h: strcasecmp_l and strncasecmp_l are in POSIX 2008.
+ * string/string.h: stpcpy, stpncpy, strndup, strnlen, strsignal,
+ strcoll_l, strerror_l, and strxfrm_l are in POSIX 2008.
+ * stdlib/stdlib.h: mkdtemp is in POSIX 2008.
+ * libio/stdio.h: dprintf, fmemopen, getdelim, getline,
+ open_memstream, and vdprintf are in POSIX 2008.
+
+2009-02-25 Ulrich Drepper <drepper@redhat.com>
+
+ * include/features.h: Define macros for XPG7/POSIX 2008.
+ * ctype/ctype.h: The *_l functions are in POSIX 2008.
+ * dirent/dirent.h: alphasort, dirfd, scandir, and fdopendir are in
+ POSIX 2008.
+ * locale/langinfo.h: nl_langinfo_l is in POSIX 2008.
+ * locale/xlocale.h: Define locale_t type.
+ * locale/locale.h: duplocale, freelocale, newlocale, uselocale are
+ in POSIX 2008. Don't define locale_t here.
+ * stdlib/monetary.h: strfmon_l is in POSIX 2008.
+ * sysdeps/unix/sysv/linux/bits/stat.h: Protect UTIME_NOW and
+ UTIME_OMIT only with __USE_ATFILE.
+ * signal/signal.h: Declare psignal and psiginfo for POSIX 2008.
+ * stdio-common/psiginfo.c: New file.
+ * stdio-common/psiginfo-data.h: New file.
+ * stdio-common/psiginfo-define.h: New file.
+ * stdio-common/Makefile (routines): Add psiginfo.
+ * stdio-common/Versions: Export psiginfo for GLIBC_2.10.
+ * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/stat.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/stat.h: Likewise.
+ * io/sys/stat.h: Move mknodat definition into same conditional as
+ mknod.
+ * time/sys/time.h: futimesat is not among the functions accepted
+ into the POSIX standard.
+
+ * include/features.h: If no feature selection given and we select
+ by default a POSIX mode, also define __USE_POSIX_IMPLICITLY.
+ * posix/Versions: Export __posix_getopt.
+ * posix/getopt.c (_getopt_initialize): Take additional parameter.
+ Use it to alternatively initialize __posixly_correct.
+ (_getopt_internal_r): Take addition parameter. Pass on to
+ _getopt_initialize.
+ (_getopt_internal): Take addition parameter. Pass on to
+ _getopt_internal_r.
+ (getopt): Pass additional zero to _getopt_internal.
+ (__posix_getopt): New function.
+ * posix/getopt.h: Add redirection for getopt.
+ * posix/getopt1.c (getopt_long): Pass additional zero to
+ _getopt_internal.
+ (getopt_long_only): Likewise.
+ (_getopt_long_r): Pass additional zero to _getopt_internal_r.
+ (_getopt_long_only_r): Likewise.
+ * posix/getopt_int.h: Adjust declarations of _getopt_internal and
+ _getopt_internal_r.
+
+2009-02-24 Ulrich Drepper <drepper@redhat.com>
+
+ * bits/confname.h: Define _SC_TRACE_EVENT_NAME_MAX, _SC_TRACE_NAME_MAX,
+ _SC_TRACE_SYS_MAX, _SC_TRACE_USER_EVENT_MAX, _SC_XOPEN_STREAMS.
+ * sysdeps/posix/sysconf.c (__sysconf): Handle
+ _SC_TRACE_EVENT_NAME_MAX, _SC_TRACE_NAME_MAX, _SC_TRACE_SYS_MAX,
+ _SC_TRACE_USER_EVENT_MAX, _SC_XOPEN_STREAMS.
+
+2009-02-24 Roland McGrath <roland@redhat.com>
+
+ [BZ #9895]
+ * README.template: Reworded not to use substituted version number.
+ Renamed to ...
+ * README: ... here (no longer generated).
+ * Makefile (README): Target removed.
+
+2009-02-24 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/sysconf.c (__sysconf):
+ /proc/sys/kernel/rtsig_max doesn't exist anymore, use getrlimit
+ instead.
+
+ * io/sys/stat.h: The lstat functions have been mandatory since 2001.
+
+ * time/tzset.c (tzset_internal): Correct parsing of TZ envvar.
+
+2009-02-22 Ulrich Drepper <drepper@redhat.com>
+
+ * po/bg.po: Update from translation team.
+
+2009-02-16 Jakub Jelinek <jakub@redhat.com>
+
+ * stdlib/monetary.h: Uglify function parameter names.
+ * sunrpc/rpc/pmap_clnt.h: Likewise.
+ * sunrpc/rpc/svc.h: Likewise.
+ * sunrpc/rpc/xdr.h: Likewise.
+ * sunrpc/rpc/clnt.h: Likewise.
+ * resolv/netdb.h: Likewise.
+ * resolv/arpa/nameser.h: Likewise.
+ * resolv/resolv.h: Likewise.
+ * argp/argp.h: Likewise.
+ * locale/langinfo.h: Likewise.
+ * io/sys/stat.h: Likewise.
+ * posix/spawn.h: Likewise.
+ * nis/rpcsvc/nislib.h: Likewise.
+ * malloc/obstack.h: Likewise.
+ * sysdeps/ia64/bits/link.h: Likewise.
+ * sysdeps/i386/bits/link.h: Likewise.
+ * sysdeps/s390/bits/link.h: Likewise.
+ * sysdeps/powerpc/bits/link.h: Likewise.
+ * sysdeps/x86_64/bits/link.h: Likewise.
+ * sysdeps/sparc/bits/link.h: Likewise.
+ * sysdeps/sh/bits/link.h: Likewise.
+ * sysdeps/unix/sysv/linux/i386/sys/io.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/sys/io.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sys/eventfd.h: Likewise.
+ * sysdeps/unix/sysv/linux/sys/eventfd.h: Likewise.
+
+2008-12-01 Fredrik Unger <fred@tree.se>
+
+ * soft-fp/double.h [_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_SEMIRAW_D,
+ FP_UNPACK_SEMIRAW_DP): Use _FP_UNPACK_RAW_1 instead of
+ _FP_UNPACK_RAW_2, fix up first argument.
+
+2009-02-15 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/getsysstats.c (next_line): New function.
+ (GET_NPROCS_PARSER): Change parameters and use next_line.
+ (__get_nprocs): Rewrite to not use stdio routines.
+ * sysdeps/unix/sysv/linux/sparc/getsysstats.c (GET_NPROCS_PARSER):
+ Change parameters and use next_line.
+
+2009-02-13 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #5381]
+ * nscd/nscd.h: Remove definitions and declarations for mem_in_flight.
+ Change mempool_alloc prototype.
+ * nscd/mem.c (gc): Don't handle mem_in_flight.
+ (mempool_alloc): Third parameter now only indicates whether this is the
+ first call (to allocate data) or not. If it is, get db rdlock.
+ Release it on error. Don't handle mem_in_flight.
+ * nscd/aicache.c (addhstaiX): Mark he parameter as const.
+ Adjust third parameter of mempool_alloc calls.
+ Nothing to do here in case mempool_alloc fails.
+ Avoid local variable shadowing parameter. No need to get db rdlock
+ before calling cache_add.
+ * nscd/cache.c (cache_add): Adjust call to mempool_alloc. There is
+ no mem_in_flight array anymore.
+ * nscd/connections.c: Remove definition and handling of mem_in_flight.
+ * nscd/grpcache.c (cache_addgr): Adjust third parameter of
+ mempool_alloc calls. Mark he parameter as const. Nothing to do here
+ in case mempool_alloc fails. No need to get db rdlock before calling
+ cache_add.
+ * nscd/hstcache.c (cache_addhst): Likewise.
+ * nscd/initgrcache.c (addinitgroupsX): Likewise.
+ * nscd/servicescache.c (cache_addserv): Likewise.
+ * nscd/pwdcache.c (cache_addpw): Likewise. Remove some debugging code.
+
+2009-02-11 Ulrich Drepper <drepper@redhat.com>
+
+ * po/lt.po: Update from translation team.
+
+2009-02-10 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/dl-load.c (open_verify): In case VALID_ELF_HEADER is
+ defined, allow additional data to be added using the optional
+ MORE_ELF_HEADER_DATA macro.
+ * sysdeps/unix/sysv/linux/ldsodefs.h (VALID_ELF_HEADER,
+ VALID_ELF_OSABI, VALID_ELF_ABIVERSION, MORE_ELF_HEADER_DATA): Define.
+
+2009-02-08 Ulrich Drepper <drepper@redhat.com>
+
+ * include/atomic.h: Define catomic_and if not already defined.
+ * sysdeps/x86_64/bits/atomic.h: Define catomic_and.
+ * sysdeps/i386/i486/bits/atomic.h: Likewise.
+
+2009-02-07 Ulrich Drepper <drepper@redhat.com>
+
+ * malloc/malloc.c (_int_free): Second argument is now mchunkptr.
+ Change all callers.
+ (_int_realloc): Likewise. Third argument is now padded size
+ All _int_* functions are now static.
+
+ * malloc/hooks.c: Change all callers to _int_free and _int_realloc.
+ * malloc/arena.c: Likewise.
+ * include/malloc.h: Remove now unnecessary declarations of the _int_*
+ functions.
+
+ * sunrpc/rpc_common.c: We cannot move _null_auth into .rodata that
+ easily.
+
+ * malloc/malloc.c: Add branch prediction for use of the hooks.
+
+ * grp/compat-initgroups.c [NOT_IN_libc] (__libc_use_alloca): Define.
+
+2009-02-06 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #7095]
+ * bits/confname.h: Add SUSv7 macros for getconf environments.
+ * bits/environments.h: Likewise.
+ * sysdeps/unix/sysv/linux/i386/bits/environments.h: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/bits/environments.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/environments.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/environments.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/environments.h: Likewise.
+ * posix/confstr.c: Handle SUSv5 and SUSv7 environments.
+ * posix/getconf.c: Likewise.
+ * posix/sysconf.c: Likewise.
+ * sysdeps/posix/sysconf.c: Likewise.
+ * posix/Makefile (getconf.speclist): Also collect SUSv5 and SUSv7
+ environments.
+
+2009-01-16 Petr Baudis <pasky@suse.cz>
+
+ [BZ #9753]
+ * resolv/res_libc.c (__res_maybe_init): Call __res_vinit()
+ even if we currently have zero nscount.
+
+2009-02-06 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9781]
+ * grp/compat-initgroups.c (compat_call): Switch to use malloc when
+ the input line is too long.
+
+ * po/Makefile (libc.pot): Add f_print as function taking c-format
+ parameter.
+
+ * debug/xtrace.sh: Unify translatable messages.
+ * elf/ldd.bash.in: Likewise.
+ * elf/sprof.c: Likewise.
+ * locale/programs/locale.c: Likewise.
+ * malloc/memusage.sh: Likewise.
+ * nss/getent.c: Likewise.
+
+2009-02-06 Joseph Myers <joseph@codesourcery.com>
+
+ * debug/pcprofiledump.c (print_version,
+ argp_program_version_hook): New function.
+ * elf/ldconfig.c (more_help): New function.
+ (argp): Use it.
+ * elf/sln.c (usage): New function.
+ (main): Support --help and --version.
+ * malloc/memusagestat.c (print_version): New function.
+ (argp_program_version_hook): New variable.
+ * nscd/nscd.c (more_help): New function.
+ (argp): Use it.
+ * posix/getconf.c (main): Send --version output to stdout.
+ Support --help.
+ * sunrpc/rpc_main.c (usage, options_usage): Take STREAM and STATUS
+ arguments. All callers changed.
+ (print_version): New function.
+ (parseargs): Support --help and --version.
+ * sunrpc/rpcinfo.c (usage): Take STREAM argument. All callers
+ changed.
+ (print_version): New function.
+ (main): Use getopt_long. Support --help and --version.
+ * sysdeps/unix/sysv/linux/lddlibc4.c (main): Support --help and
+ --version.
+
+2009-02-06 Ulrich Drepper <drepper@redhat.com>
+
+ * malloc/memusage.c (DEFAULT_BUFFER_SIZE): Change to 32768.
+ (update_data): Fix handling of wrapping back
+ to the beginning of the buffer.
+
+ [BZ #9823]
+ * stdio-common/psignal.c (psignal): Fix test for empty string.
+
+2009-02-05 Ulrich Drepper <drepper@redhat.com>
+
+ * include/rpc/auth.h: Use libc_hidden_proto for _null_auth.
+ * sunrpc/rpc_common.c: Add libc_hidden_def for _null_auth. Also
+ move _null_auth to .rodata.
+
+ * time/tzset.c (__tzset_parse_tz): DST offset must also allow hour
+ value of 24.
+
+ * intl/dcigettext.c (DCIGETTEXT): Avoid some code duplication.
+
+ * sysdeps/unix/opendir.c (__alloc_dir): We have a lot more memory
+ today than when the original code was written. Use larger
+ buffers. This also makes it unnecessary to have stat information,
+ if this causes extra efforts.
+ (__opendir): In case O_DIRECTORY works, don't call fstat just for
+ __alloc_dir.
+
+2009-02-03 Andrew Stubbs <ams@codesourcery.com>
+
+ * sysdeps/sh/sh4/dl-trampoline.S: Only set HAVE_FPU if __SH_FPU_ANY__
+ is set.
+ * sysdeps/sh/sh4/setjmp.S: Support SH4-NOFPU.
+ * sysdeps/sh/sh4/__longjmp.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/sh4/getcontext.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/sh4/setcontext.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/sh4/register-dump.h: Likewise.
+
+2009-02-04 Ulrich Drepper <drepper@redhat.com>
+
+ * po/ru.po: Update from translation team.
+
+2008-11-17 Nathan Sidwell <nathan@codesourcery.com>
+
+ * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h (struct sigevent):
+ Add _tid slot to maintain consistency with kernel.
+
+2009-02-04 Ulrich Drepper <drepper@redhat.com>
+
+ * libio/wfileops.c (_IO_wfile_underflow): Fix handling of
+ incomplete characters at end of input buffer.
+ * libio/Makefile (tests): Add tst-fgetwc.
+ * libio/tst-fgetwc.c: New file.
+ * libio/tst-fgetwc.input: New file.
+
+2009-02-02 Andrew Stubbs <ams@codesourcery.com>
+
+ * sysdeps/unix/sysv/linux/sh/Makefile (libm.so-no-z-defs): Define.
+
+2009-02-02 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9793]
+ * iconv/gconv_trans.c (__gconv_transliterate): Don't change
+ *OUTBUFSTART unless the whole output fit into the buffer.
+ * iconv/Makefile (tests): Add tst-iconv4.
+ * iconv/tst-iconv4.c: New file.
+
+2009-02-01 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/cacheinfo.c (intel_02_known): Add new descriptors.
+ * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_02_known): Likewise.
+
+2009-01-29 Andrew Stubbs <ams@codesourcery.com>
+
+ * elf/Makefile (ld.so): Adjust the sed script to insert _begin in to
+ newer linker scripts.
+
+2009-01-30 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #7040]
+ * sysdeps/unix/sysv/linux/sys/inotify.h: Second parameter of
+ inotify_rm_watch should have type int.
+
+2009-01-06 Steven Munroe <sjmunroe@us.ibm.com>
+
+ * sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S (__longjmp):
+ Make aligned_restore_vmx a local symbol.
+ * sysdeps/powerpc/powerpc64/__longjmp-common.S (__longjmp):
+ Likewise.
+
+2009-01-30 Andreas Jaeger <aj@suse.de>
+
+ * sysdeps/unix/sysv/linux/bits/shm.h (SHM_EXEC): Define.
+ * sysdeps/unix/sysv/linux/ia64/bits/shm.h (SHM_EXEC): Define.
+ * sysdeps/unix/sysv/linux/powerpc/bits/shm.h (SHM_EXEC): Define.
+ * sysdeps/unix/sysv/linux/s390/bits/shm.h (SHM_EXEC): Define.
+ * sysdeps/unix/sysv/linux/sh/bits/shm.h (SHM_EXEC): Define.
+ * sysdeps/unix/sysv/linux/sparc/bits/shm.h (SHM_EXEC): Define.
+ * sysdeps/unix/sysv/linux/x86_64/bits/shm.h (SHM_EXEC): Define.
+
+2009-01-11 Ryan S. Arnold <rsa@us.ibm.com>
+
+ [BZ #9726]
+ * sysdeps/powerpc/fpu/tst-setcontext-fpscr.c (_SET_DI_FPSCR,
+ _SET_SI_FPSCR): Clobber fp0 to prevent erroneous test-case passes.
+
+2009-01-08 Ryan S. Arnold <rsa@us.ibm.com>
+
+ [BZ #9726]
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
+ (__CONTEXT_FUNC_NAME): Fix mtfsf to use fp31 instead of fp0.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
+ (__CONTEXT_FUNC_NAME): Fix mtfsf to use fp31 instead of fp0.
+
+2009-01-11 Thomas Schwinge <tschwinge@gnu.org>
+
+ * sysdeps/generic/dl-osinfo.h (_dl_setup_stack_chk_guard): Use
+ memcpy instead of memcmp.
+ (_dl_setup_pointer_guard): Likewise.
+
+2009-01-30 Ulrich Drepper <drepper@redhat.com>
+
+ * malloc/malloc.c (sYSMALLOc): Don't use assert when detecting
+ manipulated brk, use malloc_printerr.
+ * misc/sbrk.c (__sbrk): Better error handling for nonsense
+ requests.
+
+2009-01-30 Jakub Jelinek <jakub@redhat.com>
+
+ * string/string.h (memchr, strchr, strrchr, strpbrk, strstr, index,
+ rindex): For C++ add inlines so that they can be recognized as
+ builtins.
+ * string/strings.h: Define correct C++ prototypes for gcc 4.4.
+
+2009-01-29 Ulrich Drepper <drepper@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ * string/string.h: Define correct C++ prototypes for gcc 4.4.
+ * wcsmbs/wchar.h: Likewise.
+
+2009-01-29 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/i386/stackinfo.h (stackinfo_get_sp): Define.
+ (stackinfo_sub_sp): Define.
+
+2009-01-28 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9750]
+ * nscd/mem.c (gc): Use alloca_count to get the real stack usage.
+ * include/alloca.h (alloca_account): Define.
+ * sysdeps/x86_64/stackinfo.h (stackinfo_get_sp): Define.
+ (stackinfo_sub_sp): Define.
+
+ * nscd/connections.c (nscd_init): If database file access fails
+ check whether this is due to permission problems and bail in that
+ case.
+
+ [BZ #9741]
+ * nscd/mem.c (gc): Fix assignment of he_data in case malloc is used.
+ Reported by Jun'ichi Nomura <j-nomura@ce.jp.nec.com>.
+
+2009-01-14 Kaz Kojima <kkojima@rr.iij4u.or.jp>
+
+ * sysdeps/unix/sysv/linux/sh/sysdep.h (INTERNAL_SYSCALL):
+ Add "t" to clobber list.
+ (INTERNAL_SYSCALL_NCS): Likewise.
+
+2009-01-28 Ulrich Drepper <drepper@redhat.com>
+
+ * nss/getent.c (print_networks): Don't print comma between aliases.
+
+2009-01-23 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/tst-clone.c (do_test): Avoid warning.
+
+ * misc/hsearch_r.c (hcreate_r): We need at least three elements in
+ the hash table.
+ * misc/Makefile (tests): Add bug-hsearch1.
+ * misc/bug-hsearch1.c: New file.
+
+2009-01-22 Roland McGrath <roland@redhat.com>
+
+ * Makeconfig (%.v.i): Strip trailing # comments,
+ not only whole-line comments.
+
+2009-01-10 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/generic/dl-osinfo.h (_dl_setup_stack_chk_guard): Take
+ one parameter. If non-NULL use it to initialize return value.
+ (_dl_setup_pointer_guard): New function.
+ * sysdeps/unix/sysv/linux/dl-osinfo.h: Likewise.
+ * sysdeps/generic/ldsodefs.h: Declare _dl_random.
+ * elf/rtld.c (security_init): Pass _dl_random to
+ _dl_setup_stack_chk_guard. Call _dl_setup_pointer_guard to initialize
+ pointer_chk_guard.
+ * elf/dl-sysdep.c (_dl_random): New variable.
+ (_dl_sysdep_start): Handle AT_RANDOM.
+ (_dl_show_auxv): Likewise.
+ * elf/dl-support.c (_dl_random): New variable.
+ (_dl_aux_init): Handle AT_RANDOM.
+ * csu/libc-start.c [!SHARED] (libc_start_main): Pass _dl_random
+ to _dl_setup_stack_chk_guard.
+
+ * elf/elf.h (AT_RANDOM): Define AT_BASE_PLATFORM and AT_RANDOM.
+
+2009-01-10 Roland McGrath <roland@redhat.com>
+
+ * nscd/nscd.c (parse_opt): Use argp_error for bad -i argument.
+
+2009-01-08 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/i386/fpu/libm-test-ulps: Adjust expm1 errors.
+
+ [BZ #9706]
+ * nss/nss_files/files-parse.c (strtou32): New function.
+ (INT_FIELD): Use strotu32 instead of strtoul to unify behavior
+ across 32-bit and 64-bit platforms.
+ (INT_FIELD_MAYBE_NULL): Likewise.
+
+2009-01-08 Jakub Jelinek <jakub@redhat.com>
+
+ [BZ #9720]
+ * sysdeps/unix/sysv/linux/bits/resource.h (enum __rusage_who): Avoid
+ comma after RUSAGE_CHILDREN if not -D_GNU_SOURCE.
+ * sysdeps/unix/sysv/linux/sparc/bits/resource.h (enum __rusage_who):
+ Likewise.
+
+2009-01-05 Paolo Bonzini <bonzini@gnu.org>
+
+ [BZ #697]
+ * posix/regexec.c (prune_impossible_nodes): Handle sifted_states[0]
+ being NULL also if there are no backreferences.
+ * posix/rxspencer/tests: Add testcases.
+
+2009-01-04 Paolo Bonzini <bonzini@gnu.org>
+
+ [BZ #9697]
+ * posix/bug-regex17.c: Add testcases.
+ * posix/regcomp.c (re_compile_fastmap_iter): Rewrite COMPLEX_BRACKET
+ handling.
+
+2009-01-05 Martin Schwidefsky <schwidefsky@de.ibm.com>
+
+ * sysdeps/unix/sysv/linux/s390/bits/libc-vdso.h: New file.
+ * sysdeps/unix/sysv/linux/s390/gettimeofday.c: New file.
+ * sysdeps/unix/sysv/linux/s390/init-first.c: New file.
+ * sysdeps/unix/sysv/linux/s390/Makefile (sysdep_routines): Add dl-vdso
+ for elf subdir.
+ * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (INLINE_VSYSCALL,
+ INTERNAL_VSYSCALL, INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK,
+ INTERNAL_SYSCALL_NCS, HAVE_CLOCK_GETRES_VSYSCALL and
+ HAVE_CLOCK_GETTIME_VSYSCALL: Define.
+ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/Versions: New file.
+
+2008-12-31 Paolo Bonzini <bonzini@gnu.org>
+
+ * posix/regcomp.c (re_compile_fastmap_iter): Use __mbrtowc.
+ * posix/regex_internal.c (build_wcs_buffer, build_wcs_upper_buffer,
+ re_string_skip_chars, re_string_reconstruct): Likewise.
+ * posix/regex_internal.h [!_LIBC] (__mbrtowc): New #define.
+
+2008-12-31 Rafael Avila de Espindola <espindola@google.com>
+
+ * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr2_r): Check and
+ adjust the buffer alignment.
+
+2009-01-07 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/mach/hurd/Makefile (sysdep_headers) [subdir=socket]:
+ Add net/ethernet.h net/if_arp.h net/if_ether.h net/if_ppp.h
+ net/route.h.
+
+ * hurd/report-wait.c (describe_number): Use __stpcpy to prepend
+ flavor to description only when flavor is not NULL.
+
+ * hurd/hurdsig.c (signal_allowed): Unlock _hurd_dtable_lock
+ mutex after SIGIO/SIGURG lookup loop.
+
+2009-01-03 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * bits/resource.h (PRIO_PROCESS, PRIO_PGRP, PRIO_USER): Add macros.
+
+2009-01-03 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/sysdep.h: Describe 6th argument
+ handling.
+
+2009-01-02 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/kernel-features.h
+ (__ASSUME_FUTEX_CLOCK_REALTIME): Define.
+
+ * wcsmbs/wcsnrtombs.c (__wcsnrtombs): Create temporary state object
+ if no output is written.
+
+ * version.h: Bump to 2.10 development.
+
+ * posix/getconf.c: Update copyright year.
+ * nss/getent.c: Likewise.
+ * iconv/iconvconfig.c: Likewise.
+ * iconv/iconv_prog.c: Likewise.
+ * elf/ldconfig.c: Likewise.
+ * catgets/gencat.c: Likewise.
+ * csu/version.c: Likewise.
+ * elf/ldd.bash.in: Likewise.
+ * elf/sprof.c (print_version): Likewise.
+ * locale/programs/locale.c: Likewise.
+ * locale/programs/localedef.c: Likewise.
+ * nscd/nscd.c (print_version): Likewise.
+ * debug/xtrace.sh: Likewise.
+ * malloc/memusage.sh: Likewise.
+ * malloc/mtrace.pl: Likewise.
+ * debug/catchsegv.sh: Likewise.
+
+2008-12-29 Mike Frysinger <vapier@gentoo.org>
+
+ * iconvdata/Makefile (iconv-rules): Use LC_ALL=C when running awk
+ script.
+
+2008-12-29 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/posix/getaddrinfo.c (gaih_inet): When the
+ gethostbyname4_r function call succeeded, just leave the loop.
+
+ [BZ #9694]
+ * wcsmbs/wchar.h: Move undefs for local __need_* constants to the
+ very end.
+ * wctype/wctype.h: Get wint_t definition directly from <stddef.h>.
+ * wctype/Makefile (tests): Add bug-wctypeh.
+ * wctype/bug-wctypeh.c: New file.
+
+ * nscd/nscd_gethst_r.c (nscd_gethst_r): Don't use nscd if
+ LOCALDOMAIN is defined.
+ * nscd/nscd_getai.c (__nscd_getai): Likewise.
+
+ * sysdeps/x86_64/bits/select.h: New file.
+
+ * resolv/res_init.c (__res_vinit): Count all servers in statp->nscount.
+
+2008-12-21 Bruno Haible <bruno@clisp.org>
+
+ [BZ #9677]
+ * wcsmbs/mbsnrtowcs.c (__mbsnrtowcs): Create temporary state object
+ if no output is written.
+
+2008-12-13 Klaus Dittrich <kladit@arcor.de>
+
+ * login/utmp_file.c (pututline_file): Replace call to dup2 with
+ libc internal symbol __dup2 to avoid access through the PLT.
+
+2008-12-08 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #6545]
+ * sysdeps/unix/sysv/linux/bits/socket.h (SCM_CREDENTIALS): Make
+ available only for __USE_GNU.
+
+ * inet/Makefile (tests): Add tst-getni2.
+ * inet/tst-getni2.c: New file.
+
+ [BZ #7080]
+ * inet/getnameinfo.c (getnameinfo): Check for output buffers being
+ NULL when NI_NAMEREQD is set.
+ Patch mostly by Yang Hongyang <yanghy@cn.fujitsu.com>.
+ * inet/Makefile (tests): Add tst-getni1.
+ * inet/tst-getni1.c: New file.
+
+2008-12-03 Petr Baudis <pasky@suse.cz>
+
+ [BZ #7067]
+ * nscd/connections.c (invalidate_cache): Use prune_run_lock
+ instead of prune_lock.
+ (nscd_run_prune): Before calling prune_cache, take prune_run_lock.
+ * nscd/nscd.h (database_dyn): Add prune_run_cache.
+
+2008-12-07 Ulrich Drepper <drepper@redhat.com>
+
+ * resolv/res_send.c (send_dg): Use correct guards for SOCK_CLOEXEC
+ use.
+
+ * sysdeps/unix/sysv/linux/kernel-features.h: Fix typo in accept4
+ handling.
+
+ * resolv/res_init.c (__res_vinit): Always assign to statp->nscount
+ after reading name server list.
+
+ [BZ #7058]
+ * nis/nss_nis/nis-hosts.c (_nss_nis_gethostbyname4_r): Fix memory
+ handling for host name aliases.
+
+2008-11-24 Arkadiusz Miśkiewicz <arekm@maven.pl>
+
+ * sysdeps/i386/dl-tlsdesc.S (_dl_tlsdesc_dynamic): Use LOAD_PIC_REG
+ instead of doing things manually.
+
+2008-11-26 Chris Steel <chris.steel.lnx@googlemail.com>
+
+ * posix/regex_internal.h (build_wcs_upper_buffer):
+ Return type is reg_error_t.
+
+2008-12-05 Ulrich Drepper <drepper@redhat.com>
+
+ * posix/globtest.sh: Use mktemp to create temporary file and
+ directory.
+
+ * sysdeps/unix/sysv/linux/bits/sched.h (__CPU_SET_S): Handle large
+ sets correctly.
+ (__CPU_CLR_S): Likewise.
+ (__CPU_ISSET_S): Likewise.
+
+2008-12-05 Joseph Myers <joseph@codesourcery.com>
+ Ulrich Drepper <drepper@redhat.com>
+
+ * scripts/firstversion.awk: Use custom comparison function to compare
+ version numbers.
+ * scripts/versions.awk: Use sort invocation which can handle
+ multi-digit sub-version numbers.
+
+2008-12-04 Ulrich Drepper <drepper@redhat.com>
+
+ * locale/programs/ld-address.c (DEFINE_LANGUAGE_CODE2): Define.
+ * locale/iso-639.def: Add Chhattisgarhi entry.
+
+2008-12-02 Ulrich Drepper <drepper@redhat.com>
+
+ * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname3_r): Recognize
+ ESRCH return value.
+ (_nss_dns_gethostbyname4_r): Likewise.
+ * resolv/res_init.c (__res_vinit): Initialize nscount to zero.
+ * sysdeps/posix/getaddrinfo.c (gaih_inet): In case we use
+ gethostbyname4_r, we don't have a separate IPv6 status, so copy
+ the no_data variable.
+
+ * resolv/res_init.c (__res_vinit): Fill in IPv4 name server
+ information at the correct index.
+
+ * socket/sys/socket.h: Declare accept4.
+ * socket/accept4.c: New file.
+ * sysdeps/unix/sysv/linux/accept4.c: New file.
+ * sysdeps/unix/sysv/linux/i386/accept4.S: New file.
+ * socket/Makefile (routines): Add accept4.
+ * socket/Versions: Export accept4 with version GLIBC_2.10.
+ * socket/paccept.c: Removed.
+ * sysdeps/unix/sysv/linux/paccept.c: Removed.
+ * sysdeps/unix/sysv/linux/i386/paccept.S: Removed.
+ * Versions.def: Define GLIBC_2.10 for libc.
+ * sysdeps/unix/sysv/linux/kernel-features.h: Define __ASSUME_ACCEPT4.
+
+ * nscd/connections.c: Use accept4.
+
+ * sysdeps/unix/sysv/linux/i386/socket.S: Fix comment.
+
+2008-12-01 Ulrich Drepper <drepper@redhat.com>
+
+ * resolv/res_send.c (send_dg): Create sockets with non-blocking
+ flag already set.
+
+ * stdlib/setenv.c (unsetenv): Don't search environment if it does
+ not exist.
+ * stdlib/Makefile (tests): Add tst-unsetenv1.
+ * stdlib/tst-unsetenv1.c: New file.
+
+2008-11-29 Ulrich Drepper <drepper@redhat.com>
+
+ * login/utmp_file.c (file_writable): New variable.
+ (setutent_file): Don't try to open file for writing.
+ (pututline_file): Before writing, make descriptor writable if
+ necessary.
+
+2008-11-26 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/posix/getaddrinfo.c (getaddrinfo): Only restrict search
+ to IPv4 or IPv6 if an interface has been found.
+
+2008-11-26 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/unix/sysv/linux/alpha/ipc_priv.h: Renamed to ...
+ * sysdeps/unix/sysv/linux/powerpc/ipc_priv.h: ... here.
+
+ * sysdeps/unix/sysv/linux/alpha/wordexp.c: Renamed to ...
+ * sysdeps/unix/sysv/linux/ia64/wordexp.c: ... here.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/wordexp.c: Change #include.
+
+ * elf/elf.h (NT_386_IOPERM): New macro.
+ (NT_PPC_VSX): New macro.
+
+2008-11-25 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/alpha, sysdeps/unix/bsd/osf/alpha,
+ sysdeps/unix/bsd/Attic/osf1/alpha, sysdeps/unix/sysv/linux/alpha,
+ sysdeps/unix/sysv/linux/alpha/alpha, sysdeps/unix/alpha,
+ sysdeps/mach/alpha, sysdeps/mach/hurd/alpha:
+ Subdirectories moved to ports repository.
+ * configure.in (base_machine): Remove alpha case.
+
+2008-11-25 Thomas Schwinge <tschwinge@gnu.org>
+
+ * sysdeps/mach/strerror_l.c: New file.
+
2008-11-13 Ryan S. Arnold <rsa@us.ibm.com>
[BZ #6411]
@@ -255,7 +4809,7 @@
[BZ #6942]
* resolv/res_send.c (send_vc): Fix use of unaligned address.
- Properly handle partial reads.
+ Properly handle partial reads.
2008-10-01 Mark Shinwell <shinwell@codesourcery.com>
@@ -306,7 +4860,7 @@
Patch by Michael Solberg <msolberg@redhat.com>.
2008-09-12 Flavio Leitner <fleitner@redhat.com>
- Ulrich Drepper <drepper@redhat.com>
+ Ulrich Drepper <drepper@redhat.com>
* malloc/malloc.c (public_vALLOc): Try other arenas in case
_int_valloc fails.
@@ -3003,7 +7557,7 @@
* nscd/aicache.c (addhstaiX): Fix default TTL handling.
- * inet/getnetgrent.c (setup): Encrypt static pointer.
+ * inet/getnetgrent_r.c (setup): Encrypt static pointer.
2007-10-28 Ulrich Drepper <drepper@redhat.com>
@@ -4259,7 +8813,7 @@
2007-08-16 Andreas Jaeger <aj@suse.de>
* locale/localeinfo.h: Make _nl_category_name_idxs extern.
- Reported by Peter Festner <peter.festner@ewetel.net>.
+ Reported by Peter Festner <peter.festner@ewetel.net>.
2007-08-17 Jakub Jelinek <jakub@redhat.com>
@@ -5349,8 +9903,8 @@
* sysdeps/generic/ldsodefs.h (_dl_addr_inside_object): New prototype.
2007-06-18 Jakub Jelinek <jakub@redhat.com>
- Tomas Janousek <tjanouse@redhat.com>
- Ulrich Drepper <drepper@redhat.com>
+ Tomas Janousek <tjanouse@redhat.com>
+ Ulrich Drepper <drepper@redhat.com>
[BZ #4647]
* resolv/res_send.c (send_dg): Remove socket_pf. Use ipv6_unavail
diff --git a/FAQ b/FAQ
index 9b557dae17..54f422a09e 100644
--- a/FAQ
+++ b/FAQ
@@ -570,8 +570,6 @@ Please note that `make check' might fail for a number of the math tests
because of problems of the FPU emulation in the Linux kernel (the MIPS FPU
doesn't handle all cases and needs help from the kernel).
-For details check also my page <http://www.suse.de/~aj/glibc-mips.html>.
-
1.21. Which compiler should I use for powerpc64?
diff --git a/FAQ.in b/FAQ.in
index a5c7123ad6..0eb6bac154 100644
--- a/FAQ.in
+++ b/FAQ.in
@@ -367,7 +367,6 @@ Please note that `make check' might fail for a number of the math tests
because of problems of the FPU emulation in the Linux kernel (the MIPS FPU
doesn't handle all cases and needs help from the kernel).
-For details check also my page <http://www.suse.de/~aj/glibc-mips.html>.
??powerpc64 Which compiler should I use for powerpc64?
diff --git a/Makeconfig b/Makeconfig
index 83e14094c4..15cd4caad5 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2003,2004,2005,2006,2007,2008
+# Copyright (C) 1991-2003,2004,2005,2006,2007,2008,2009
# Free Software Foundation, Inc.
# This file is part of the GNU C Library.
@@ -434,6 +434,19 @@ ifndef +link
$(common-objpfx)libc% $(+postinit),$^) \
$(link-extra-libs) $(link-libc) $(+postctor) $(+postinit)
endif
+# Command for linking PIE programs with the C library.
+ifndef +link-pie
++link-pie = $(CC) -pie -Wl,-O1 -nostdlib -nostartfiles -o $@ \
+ $(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
+ $(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
+ $(addprefix $(csu-objpfx),S$(start-installed-name)) \
+ $(+preinit) $(+prectorS) \
+ $(filter-out $(addprefix $(csu-objpfx),start.o \
+ S$(start-installed-name))\
+ $(+preinit) $(link-extra-libs) \
+ $(common-objpfx)libc% $(+postinit),$^) \
+ $(link-extra-libs) $(link-libc) $(+postctorS) $(+postinit)
+endif
# Command for statically linking programs with the C library.
ifndef +link-static
+link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \
@@ -536,8 +549,11 @@ endif
ifeq ($(elf),yes)
+preinit = $(addprefix $(csu-objpfx),crti.o)
+postinit = $(addprefix $(csu-objpfx),crtn.o)
-+prector = `$(CC) --print-file-name=crtbegin.o`
-+postctor = `$(CC) --print-file-name=crtend.o`
++prector = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbegin.o`
++postctor = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o`
+# Variants of the two previous definitions for linking PIE programs.
++prectorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginS.o`
++postctorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtendS.o`
+interp = $(addprefix $(elf-objpfx),interp.os)
endif
csu-objpfx = $(common-objpfx)csu/
@@ -649,7 +665,6 @@ endif # $(+cflags) == ""
# Don't duplicate options if we inherited variables from the parent.
+cflags := $(sort $(+cflags))
-
# These are flags given to the C compiler to tell it to look for
# include files (including ones given in angle brackets) in the parent
# library source directory, in the include directory, and in the
@@ -770,7 +785,7 @@ else
ASFLAGS :=
endif
endif
-ASFLAGS += $(ASFLAGS-config)
+ASFLAGS += $(ASFLAGS-config) $(asflags-cpu)
ifndef BUILD_CC
BUILD_CC = $(CC)
@@ -793,8 +808,9 @@ ifeq (yes, $(build-shared))
# `FOO.v', and along with that `FOO.v.i' should be given dependencies
# listing both its input files, and any header files that it may reference
# (but no commands).
-%.v.i: $(common-objpfx)config.h
- sed '/^[ ]*#/d;s/^[ ]*%/#/' $(filter-out FORCE %.h,$^) \
+%.v.i: $(common-objpfx)config.h $(..)Makeconfig
+ sed '/^[ ]*%/!s/#.*$$//;/^[ ]*$$/d;s/^[ ]*%/#/' \
+ $(filter-out FORCE %.h $(..)Makeconfig,$^) \
| $(CC) -E -undef $(CPPFLAGS) -x assembler-with-cpp - \
> $@T
mv -f $@T $@
@@ -917,7 +933,7 @@ endif
all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
stdlib stdio-common libio malloc string wcsmbs time dirent \
grp pwd posix io termios resource misc socket sysvipc gmon \
- gnulib iconv iconvdata wctype manual shadow po argp \
+ gnulib iconv iconvdata wctype manual shadow gshadow po argp \
crypt nss localedata timezone rt conform debug \
$(add-on-subdirs) $(dlfcn) $(binfmt-subdir)
diff --git a/Makefile b/Makefile
index 8b405a4669..61cfa436c4 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2002,2003,2004,2005,2006,2008
+# Copyright (C) 1991-2002,2003,2004,2005,2006,2008,2009
# Free Software Foundation, Inc.
# This file is part of the GNU C Library.
@@ -44,7 +44,7 @@ endif
define autoconf-it
@-rm -f $@.new
$(AUTOCONF) $(ACFLAGS) $< > $@.new
-chmod a-w,a+x $@.new
+chmod a-w$(patsubst %,$(comma)a+x,$(filter .,$(@D))) $@.new
mv -f $@.new $@
$(autoconf-it-cvs)
endef
@@ -271,7 +271,7 @@ installed-headers = argp/argp.h assert/assert.h catgets/nl_types.h \
crypt/crypt.h ctype/ctype.h debug/execinfo.h \
dirent/dirent.h dlfcn/dlfcn.h elf/elf.h elf/link.h \
gmon/sys/gmon.h gmon/sys/gmon_out.h gmon/sys/profil.h \
- grp/grp.h iconv/iconv.h iconv/gconv.h \
+ grp/grp.h gshadow/gshadow.h iconv/iconv.h iconv/gconv.h \
$(wildcard inet/netinet/*.h) \
$(wildcard inet/arpa/*.h inet/protocols/*.h) \
inet/aliases.h inet/ifaddrs.h inet/netinet/ip6.h \
@@ -341,66 +341,44 @@ endif
.PHONY: TAGS
TAGS:
- scripts/list-sources.sh | sed -n '/Makefile/p;\
+ scripts/list-sources.sh | sed -n -e '/Makefile/p' \
$(foreach S,[chsSyl] cxx sh bash pl,\
- $(subst .,\.,/.$S\(.in\)*$$/p;))' \
+ $(subst .,\.,-e '/.$S\(.in\)*$$/p')) \
| $(ETAGS) -o $@ -
# Make the distribution tarfile.
-.PHONY: dist tag-for-dist
+.PHONY: dist dist-prepare
generated := $(generated) stubs.h
-README: README.template version.h
- -rm -f $@
- sed -e 's/RELEASE/$(release)/' -e 's/VERSION/$(version)/' < $< > $@
-# Make it unwritable so I won't change it by mistake.
- chmod 444 $@
-ifeq ($(with-cvs),yes)
- test ! -d CVS || cvs $(CVSOPTS) commit -m'Remade for $(release)-$(version)' $@
-endif
+files-for-dist := README FAQ INSTALL NOTES configure ChangeLog NEWS
-files-for-dist := README FAQ INSTALL NOTES configure
-
-tag-of-stem = glibc-$(subst .,_,$*)
-dist-selector = -r $(tag-of-stem)
-
-# Add-ons in the main repository but distributed in their own tar files.
-dist-separate = libidn
-
-glibc-%.tar $(dist-separate:%=glibc-%-%.tar): $(files-for-dist) \
- $(foreach D,$(dist-separate),\
- $D/configure)
- @rm -fr glibc-$*
- $(MAKE) -q `find sysdeps $(addsuffix /sysdeps,$(sysdeps-add-ons)) \
- -name configure`
- cvs $(CVSOPTS) -Q export -d glibc-$* $(dist-selector) libc
-# Touch all the configure scripts going into the tarball since cvs export
-# might have delivered configure.in newer than configure.
- find glibc-$* -name configure -print | xargs touch
- $(dist-do-separate-dirs)
- tar cf glibc-$*.tar glibc-$*
- rm -fr glibc-$*
-define dist-do-separate-dirs
-$(foreach dir,$(dist-separate),
- @rm -fr glibc-$(dir)-$*
- mv glibc-$*/$(dir) glibc-$(dir)-$*
- tar cf glibc-$(dir)-$*.tar glibc-$(dir)-$*
- rm -fr glibc-$(dir)-$*
-)
-endef
+# Regenerate stuff, then error if these things are not committed yet.
+dist-prepare: $(files-for-dist)
+ conf=`find sysdeps $(addsuffix /sysdeps,$(sysdeps-add-ons)) \
+ -name configure`; \
+ $(MAKE) $$conf && \
+ git diff --stat HEAD -- $^ $$conf \
+ | $(AWK) '{ print; rc=1 } END { exit rc }'
+
+%.tar: FORCE
+ git archive --prefix=$*/ $* > $@.new
+ mv -f $@.new $@
# Do `make dist dist-version=X.Y.Z' to make tar files of an older version.
-dist-version = $(version)
-dist: $(foreach Z,.bz2 .gz,glibc-$(dist-version).tar$Z \
- $(foreach D,$(dist-separate),\
- glibc-$D-$(dist-version).tar$Z))
+ifneq (,$(strip $(dist-version)))
+dist: $(foreach Z,.bz2 .gz .xz,$(dist-version).tar$Z)
md5sum $^
-
-tag-for-dist: tag-$(dist-version)
-tag-%: $(files-for-dist)
- cvs $(CVSOPTS) -Q tag -c $(tag-of-stem)
+else
+dist: dist-prepare
+ @if v=`git describe`; then \
+ echo Distribution version $$v; \
+ $(MAKE) dist dist-version=$$v; \
+ else \
+ false; \
+ fi
+endif
define format-me
@rm -f $@
diff --git a/Makerules b/Makerules
index ab36e2f178..43fa5a701b 100644
--- a/Makerules
+++ b/Makerules
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2006, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 1991-2006,2007,2008,2009 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
@@ -1335,6 +1335,7 @@ echo-headers:
%.bz2: %; bzip2 -9vk $<
%.gz: %; gzip -9vnc $< > $@.new && mv -f $@.new $@
+%.xz: %; xz -9evk $<
# Common cleaning targets.
diff --git a/NEWS b/NEWS
index f9c8b18f16..e1fb6a5766 100644
--- a/NEWS
+++ b/NEWS
@@ -1,12 +1,120 @@
-GNU C Library NEWS -- history of user-visible changes. 2008-11-17
-Copyright (C) 1992-2007, 2008 Free Software Foundation, Inc.
+GNU C Library NEWS -- history of user-visible changes. 2009-12-8
+Copyright (C) 1992-2008, 2009 Free Software Foundation, Inc.
See the end for copying conditions.
Please send GNU C library bug reports via <http://sources.redhat.com/bugzilla/>
using `glibc' in the "product" field.
+Version 2.12
+
+* New Linux interface: recvmmsg
+
+
+Version 2.11
+
+* New interfaces: execvpe, pthread_sigqueue, mkstemps, mkstemps64, mkostemps,
+ mkostemps64
+ Implemented by Ulrich Drepper.
+
+* Checking version of longjmp added that fails if an uninitialized stack
+ frame would be created. Implemented by Ulrich Drepper.
+
+* STT_GNU_IFUNC is now supported in static executables.
+ Implemented by H.J. Lu.
+
+* STT_GNU_IFUNC implemented for PPC by Alan Modra.
+
+* New optimized string functions for x86-64: strstr, strcasestr, memcmp,
+ strcspn, strpbrk, strspn, strcpy, stpcpy, strncpy, strcmp (SSE2, SSE4.2),
+ strncmp (SSE2, SSE4.2), strchr (SSE4.2), strrchr (SSE4.2).
+ Contributed by H.J. Lu.
+
+ strlen, rawmemchr, strcmp (SSSE3), strncmp (SSSE3).
+ Implemented by Ulrich Drepper.
+
+* New optimized string functions for x86: strlen, strcspn, strspn, strpbrk,
+ strstr, strcasestr.
+ Contributed by H.J. Lu.
+
+* Support for fma instruction in AVX on x86-64.
+ Implemented by H.J. Lu and Ulrich Drepper.
+
+* AVX support in x86-64 auditing support in ld.so.
+ Implemented by H.J. Lu.
+
+* STB_GNU_UNIQUE support added.
+ Implemented by Ulrich Drepper.
+
+* Implement second fallback mode for optimized DNS lookup for even more
+ broken environments. If two requests from the same port are not
+ handled correctly close the socket and open a new one before sending
+ the second request. The 'single-request-reopen' option in /etc/resolv.conf
+ can be used to select this mode right away, instead of rediscovering the
+ necessity is every process again.
+ Implemented by Ulrich Drepper.
+
+* New resolver flag RES_USE_DNSSEC to enable use of verified lookup.
+ Implemented by Adam Tkac.
+
+* Optimized iconv conversions for S390x.
+ Implemented by Andreas Krebbel.
+
+* Using condvars with PI mutexes is now more efficient due to kernel
+ support for requeueing to PI futexes. NPTL support added for x86-64.
+ Implemented by Ulrich Drepper.
+
+* New locales: ps_AF, my_MM
+
+
Version 2.10
+* New interfaces: preadv, preadv64, pwritev, pwritev64, malloc_info
+ Implemented by Ulrich Drepper.
+
+* New Linux interfaces: accept4, fallocate, fallocate64.
+ Implemented by Ulrich Drepper.
+
+* Correct declarations of string function when used in C++ code. This
+ could lead to compile errors for invalid C++ code.
+
+* XPG7/POSIX 2008 compilation environment. Many GNU-specific functions are
+ now in POSIX.
+
+* New POSIX 2008 interface: psiginfo
+ Implemented by Ulrich Drepper.
+
+* New ISO C++1x interfaces: quick_exit, at_quick_exit
+ Implemented by Ulrich Drepper.
+
+* Support for selecting between multiple function definitions at runtime
+ using STT_GNU_IFUNC symbols. Implemented by Ulrich Drepper.
+
+* The libcrypt library can now use the hash function implementations in
+ NSS. Implemented by Ulrich Drepper.
+
+* The malloc implementation can be compiled to be less memory efficient
+ but higher performing in multi-threaded programs.
+ Implemented by Ulrich Drepper.
+
+* New locales: nan_TW@latin, ks_IN
+
+* Faster strlen, strchr, strchrnul, strrchr, memchr, and rawmemchr for x86-64.
+ Implemented by Ulrich Drepper.
+
+* Extended printf hook support. It is possible to use user-defined types
+ and extend existing format specifiers.
+ Implemented by Ulrich Drepper.
+
+* Handling for group shadow files has been added.
+ Implemented by Ulrich Drepper.
+
+* DNS IPv4-IPv6 parallel lookup now deals better with broken DNS
+ servers (the case, e.g., for some people using the built-in DNS
+ server in ADSL modems/routers). There is a once-per-process timeout
+ in case of a broken server. To avoid it, users can run nscd or put
+ 'options single-request' in /etc/resolv.conf.
+ Implemented by Ulrich Drepper.
+
Version 2.9
diff --git a/README b/README
index a6374ca430..322b4dac4a 100644
--- a/README
+++ b/README
@@ -1,4 +1,5 @@
-This directory contains the version 2.7 release of the GNU C Library.
+This directory contains the sources of the GNU C Library.
+See the file "version.h" for what release version you have.
The GNU C Library is the standard system C library for all GNU systems,
and is an important part of what makes up a GNU system. It provides the
@@ -52,7 +53,7 @@ The GNU C Library supports these configurations for using Linux kernels:
The code for other CPU configurations supported by volunteers outside of
the core glibc maintenance effort is contained in the separate `ports'
-add-on. You can find glibc-ports-2.7 distributed separately in the
+add-on. You can find glibc-ports-VERSION distributed separately in the
same place where you got the main glibc distribution files.
Currently these configurations are known to work using the `ports' add-on:
diff --git a/README.template b/README.template
deleted file mode 100644
index 02ef86c594..0000000000
--- a/README.template
+++ /dev/null
@@ -1,93 +0,0 @@
-This directory contains the version VERSION release of the GNU C Library.
-
-The GNU C Library is the standard system C library for all GNU systems,
-and is an important part of what makes up a GNU system. It provides the
-system API for all programs written in C and C-compatible languages such
-as C++ and Objective C; the runtime facilities of other programming
-languages use the C library to access the underlying operating system.
-
-In GNU/Linux systems, the C library works with the Linux kernel to
-implement the operating system behavior seen by user applications.
-In GNU/Hurd systems, it works with a microkernel and Hurd servers.
-
-The GNU C Library implements much of the POSIX.1 functionality in the
-GNU/Hurd system, using configurations i[34567]86-*-gnu.
-
-When working with Linux kernels, the GNU C Library version 2.4 is
-intended primarily for use with Linux kernel version 2.6.0 and later.
-We only support using the NPTL implementation of pthreads, which is now
-the default configuration. Most of the C library will continue to work
-on older Linux kernels and many programs will not require a 2.6 kernel
-to run correctly. However, pthreads and related functionality will not
-work at all on old kernels and we do not recommend using glibc 2.4 with
-any Linux kernel prior to 2.6.
-
-All Linux kernel versions prior to 2.6.16 are known to have some bugs that
-may cause some of the tests related to pthreads in "make check" to fail.
-If you see such problems, please try the test suite on the most recent
-Linux kernel version that you can use, before pursuing those bugs further.
-
-The old LinuxThreads add-on implementation of pthreads for older Linux
-kernels is no longer supported, and we are not distributing it with this
-release. Someone has volunteered to revive its maintenance unofficially
-for at least a short time for the benefit of those using Linux kernels
-older than 2.6, but a working version is not presently available. When
-it is in working condition, we will make it available alongside future
-glibc releases. LinuxThreads will not be supported.
-
-The GNU C Library supports these configurations for using Linux kernels:
-
- i[34567]86-*-linux-gnu
- x86_64-*-linux-gnu
- powerpc-*-linux-gnu
- powerpc64-*-linux-gnu
- s390-*-linux-gnu
- s390x-*-linux-gnu
- ia64-*-linux-gnu
- sparc*-*-linux-gnu
- sparc64*-*-linux-gnu
-
- alpha*-*-linux-gnu Requires Linux 2.6.9 for NPTL
- sh[34]-*-linux-gnu Requires Linux 2.6.11
-
-The code for other CPU configurations supported by volunteers outside of
-the core glibc maintenance effort is contained in the separate `ports'
-add-on. You can find glibc-ports-VERSION distributed separately in the
-same place where you got the main glibc distribution files.
-Currently these configurations are known to work using the `ports' add-on:
-
- arm-*-linux-gnu Requires Linux 2.6.15 for NPTL, no SMP support
- arm-*-linux-gnueabi Requires Linux 2.6.16-rc1 for NPTL, no SMP
- mips-*-linux-gnu Requires Linux 2.6.12 for NPTL
- mips64-*-linux-gnu Requires Linux 2.6.12 for NPTL
-
-The ports distribution also contains code for other configurations that
-do not work or have not been maintained recently, but will be of use to
-anyone trying to make a new configuration work. If you are interested
-in doing a port, please contact the glibc maintainers; see
-http://www.gnu.org/software/libc/ for more information.
-
-See the file INSTALL to find out how to configure, build, and install
-the GNU C Library. You might also consider reading the WWW pages for
-the C library at http://www.gnu.org/software/libc/.
-
-The GNU C Library is (almost) completely documented by the Texinfo manual
-found in the `manual/' subdirectory. The manual is still being updated
-and contains some known errors and omissions; we regret that we do not
-have the resources to work on the manual as much as we would like. For
-corrections to the manual, please file a bug in the `manual' component,
-following the bug-reporting instructions below. Please be sure to check
-the manual in the current development sources to see if your problem has
-already been corrected.
-
-The file NOTES contains a description of the feature-test macros used
-in the GNU C library, explaining how you can tell the library what
-facilities you want it to make available.
-
-Please see http://www.gnu.org/software/libc/bugs.html for bug reporting
-information. We are now using the Bugzilla system to track all bug reports.
-This web page gives detailed information on how to report bugs properly.
-
-The GNU C Library is free software. See the file COPYING.LIB for copying
-conditions, and LICENSES for notices about a few contributions that require
-these additional notices to be distributed.
diff --git a/Versions.def b/Versions.def
index 856d878068..eab006b83f 100644
--- a/Versions.def
+++ b/Versions.def
@@ -26,6 +26,9 @@ libc {
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
+ GLIBC_2.10
+ GLIBC_2.11
+ GLIBC_2.12
%ifdef USE_IN_LIBIO
HURD_CTHREADS_0.3
%endif
@@ -87,6 +90,8 @@ libpthread {
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.6
+ GLIBC_2.11
+ GLIBC_2.12
GLIBC_PRIVATE
}
libresolv {
diff --git a/aclocal.m4 b/aclocal.m4
index 4efa41ee92..06adbaaae6 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -5,7 +5,9 @@ dnl AC_REQUIREs or AC_BEFOREs duplicating their code.
dnl
define([GLIBC_PROVIDES], [dnl
AC_PROVIDE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_PROVIDE([AC_CONFIG_SUBDIRS])dnl
AC_PROVIDE([_AS_ECHO_N_PREPARE])dnl
+AC_PROVIDE([_AS_ECHO_PREPARE])dnl
AC_PROVIDE([_AS_CR_PREPARE])dnl
AC_PROVIDE([_AS_TR_SH_PREPARE])dnl
AC_PROVIDE([AC_PROG_INSTALL])dnl
diff --git a/argp/argp.h b/argp/argp.h
index baf3afd826..97a954ea5d 100644
--- a/argp/argp.h
+++ b/argp/argp.h
@@ -1,5 +1,5 @@
/* Hierarchial argument parsing, layered over getopt.
- Copyright (C) 1995-1999, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 1995-1999, 2003, 2004, 2005, 2006, 2007, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Miles Bader <miles@gnu.ai.mit.edu>.
@@ -150,8 +150,8 @@ struct argp_state; /* " */
struct argp_child; /* " */
/* The type of a pointer to an argp parsing function. */
-typedef error_t (*argp_parser_t) (int key, char *arg,
- struct argp_state *state);
+typedef error_t (*argp_parser_t) (int __key, char *__arg,
+ struct argp_state *__state);
/* What to return for unrecognized keys. For special ARGP_KEY_ keys, such
returns will simply be ignored. For user keys, this error will be turned
diff --git a/assert/.cvsignore b/assert/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/assert/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/assert/assert-perr.c b/assert/assert-perr.c
index dd54246360..f239fab86b 100644
--- a/assert/assert-perr.c
+++ b/assert/assert-perr.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994-1998,2001,2002,2005 Free Software Foundation, Inc.
+/* Copyright (C) 1994-1998,2001,2002,2005,2009 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
@@ -17,6 +17,7 @@
02111-1307 USA. */
#include <assert.h>
+#include <atomic.h>
#include <libintl.h>
#include <stdio.h>
#include <stdlib.h>
@@ -64,9 +65,10 @@ __assert_perror_fail (int errnum,
(void) __fxprintf (NULL, "%s", buf);
(void) fflush (stderr);
- /* We have to free the buffer since the appplication might catch the
- SIGABRT. */
- free (buf);
+ /* We have to free the old buffer since the application might
+ catch the SIGABRT signal. */
+ char *old = atomic_exchange_acq (&__abort_msg, buf);
+ free (old);
}
else
{
diff --git a/assert/assert.c b/assert/assert.c
index 0ef4ca62e4..727fb1446c 100644
--- a/assert/assert.c
+++ b/assert/assert.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1994-1996,1998,2001,2002,2005
+/* Copyright (C) 1991,1994-1996,1998,2001,2002,2005,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -18,6 +18,7 @@
02111-1307 USA. */
#include <assert.h>
+#include <atomic.h>
#include <libintl.h>
#include <stdio.h>
#include <stdlib.h>
@@ -43,6 +44,7 @@ extern const char *__progname;
# include FATAL_PREPARE_INCLUDE
#endif
+
#undef __assert_fail
void
__assert_fail (const char *assertion, const char *file, unsigned int line,
@@ -64,9 +66,10 @@ __assert_fail (const char *assertion, const char *file, unsigned int line,
(void) __fxprintf (NULL, "%s", buf);
(void) fflush (stderr);
- /* We have to free the buffer since the application might catch the
- SIGABRT. */
- free (buf);
+ /* We have to free the old buffer since the application might
+ catch the SIGABRT signal. */
+ char *old = atomic_exchange_acq (&__abort_msg, buf);
+ free (old);
}
else
{
diff --git a/bits/confname.h b/bits/confname.h
index 80b51ac0b8..45fcafbff9 100644
--- a/bits/confname.h
+++ b/bits/confname.h
@@ -1,5 +1,5 @@
/* `sysconf', `pathconf', and `confstr' NAME values. Generic version.
- Copyright (C) 1993,1995-1998,2000,2001,2003,2004,2007
+ Copyright (C) 1993,1995-1998,2000,2001,2003,2004,2007,2009,2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -498,8 +498,37 @@ enum
_SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
#define _SC_IPV6 _SC_IPV6
- _SC_RAW_SOCKETS
+ _SC_RAW_SOCKETS,
#define _SC_RAW_SOCKETS _SC_RAW_SOCKETS
+
+ _SC_V7_ILP32_OFF32,
+#define _SC_V7_ILP32_OFF32 _SC_V7_ILP32_OFF32
+ _SC_V7_ILP32_OFFBIG,
+#define _SC_V7_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
+ _SC_V7_LP64_OFF64,
+#define _SC_V7_LP64_OFF64 _SC_V7_LP64_OFF64
+ _SC_V7_LPBIG_OFFBIG,
+#define _SC_V7_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG
+
+ _SC_SS_REPL_MAX,
+#define _SC_SS_REPL_MAX _SC_SS_REPL_MAX
+
+ _SC_TRACE_EVENT_NAME_MAX,
+#define _SC_TRACE_EVENT_NAME_MAX _SC_TRACE_EVENT_NAME_MAX
+ _SC_TRACE_NAME_MAX,
+#define _SC_TRACE_NAME_MAX _SC_TRACE_NAME_MAX
+ _SC_TRACE_SYS_MAX,
+#define _SC_TRACE_SYS_MAX _SC_TRACE_SYS_MAX
+ _SC_TRACE_USER_EVENT_MAX,
+#define _SC_TRACE_USER_EVENT_MAX _SC_TRACE_USER_EVENT_MAX
+
+ _SC_XOPEN_STREAMS,
+#define _SC_XOPEN_STREAMS _SC_XOPEN_STREAMS
+
+ _SC_THREAD_ROBUST_PRIO_INHERIT,
+#define _SC_THREAD_ROBUST_PRIO_INHERIT _SC_THREAD_ROBUST_PRIO_INHERIT
+ _SC_THREAD_ROBUST_PRIO_PROTECT
+#define _SC_THREAD_ROBUST_PRIO_PROTECT _SC_THREAD_ROBUST_PRIO_PROTECT
};
/* Values for the NAME argument to `confstr'. */
@@ -517,6 +546,14 @@ enum
_CS_GNU_LIBPTHREAD_VERSION,
#define _CS_GNU_LIBPTHREAD_VERSION _CS_GNU_LIBPTHREAD_VERSION
+ _CS_V5_WIDTH_RESTRICTED_ENVS,
+#define _CS_V5_WIDTH_RESTRICTED_ENVS _CS_V5_WIDTH_RESTRICTED_ENVS
+#define _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS _CS_V5_WIDTH_RESTRICTED_ENVS
+
+ _CS_V7_WIDTH_RESTRICTED_ENVS,
+#define _CS_V7_WIDTH_RESTRICTED_ENVS _CS_V7_WIDTH_RESTRICTED_ENVS
+#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS _CS_V7_WIDTH_RESTRICTED_ENVS
+
_CS_LFS_CFLAGS = 1000,
#define _CS_LFS_CFLAGS _CS_LFS_CFLAGS
_CS_LFS_LDFLAGS,
@@ -597,6 +634,44 @@ enum
#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
_CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
- _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
+ _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
#define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
+
+ _CS_POSIX_V7_ILP32_OFF32_CFLAGS,
+#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
+ _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
+#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
+ _CS_POSIX_V7_ILP32_OFF32_LIBS,
+#define _CS_POSIX_V7_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
+ _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
+#define _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS
+ _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
+#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
+ _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
+#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
+ _CS_POSIX_V7_ILP32_OFFBIG_LIBS,
+#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
+ _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
+#define _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS
+ _CS_POSIX_V7_LP64_OFF64_CFLAGS,
+#define _CS_POSIX_V7_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
+ _CS_POSIX_V7_LP64_OFF64_LDFLAGS,
+#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
+ _CS_POSIX_V7_LP64_OFF64_LIBS,
+#define _CS_POSIX_V7_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
+ _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
+#define _CS_POSIX_V7_LP64_OFF64_LINTFLAGS _CS_POSIX_V7_LP64_OFF64_LINTFLAGS
+ _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
+#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
+ _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
+ _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
+ _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS,
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
+
+ _CS_V6_ENV,
+#define _CS_V6_ENV _CS_V6_ENV
+ _CS_V7_ENV
+#define _CS_V7_ENV _CS_V7_ENV
};
diff --git a/bits/environments.h b/bits/environments.h
index 4617dc45f2..548ea7f847 100644
--- a/bits/environments.h
+++ b/bits/environments.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2004, 2009 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
@@ -27,30 +27,36 @@
`-1' means it is never supported. Undefined means it cannot be
statically decided.
- _POSIX_V6_ILP32_OFF32 32bit int, long, pointers, and off_t type
- _POSIX_V6_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
+ _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type
+ _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
- _POSIX_V6_LP64_OFF32 64bit long and pointers and 32bit off_t type
- _POSIX_V6_LPBIG_OFFBIG 64bit long and pointers and large off_t type
+ _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type
+ _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type
- The macros _XBS5_ILP32_OFF32, _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and
- _XBS5_LPBIG_OFFBIG were used in previous versions of the Unix standard
- and are available only for compatibility.
+ The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
+ _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
+ _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
+ used in previous versions of the Unix standard and are available
+ only for compatibility.
*/
#if __WORDSIZE == 64
/* We can never provide environments with 32-bit wide pointers. */
+# define _POSIX_V7_ILP32_OFF32 -1
+# define _POSIX_V7_ILP32_OFFBIG -1
# define _POSIX_V6_ILP32_OFF32 -1
# define _POSIX_V6_ILP32_OFFBIG -1
# define _XBS5_ILP32_OFF32 -1
# define _XBS5_ILP32_OFFBIG -1
/* We also have no use (for now) for an environment with bigger pointers
and offsets. */
+# define _POSIX_V7_LPBIG_OFFBIG -1
# define _POSIX_V6_LPBIG_OFFBIG -1
# define _XBS5_LPBIG_OFFBIG -1
/* By default we have 64-bit wide `long int', pointers and `off_t'. */
+# define _POSIX_V7_LP64_OFF64 1
# define _POSIX_V6_LP64_OFF64 1
# define _XBS5_LP64_OFF64 1
@@ -58,15 +64,19 @@
/* By default we have 32-bit wide `int', `long int', pointers and `off_t'
and all platforms support LFS. */
+# define _POSIX_V7_ILP32_OFF32 1
+# define _POSIX_V7_ILP32_OFFBIG 1
# define _POSIX_V6_ILP32_OFF32 1
# define _POSIX_V6_ILP32_OFFBIG 1
# define _XBS5_ILP32_OFF32 1
# define _XBS5_ILP32_OFFBIG 1
/* We optionally provide an environment with the above size but an 64-bit
- side `off_t'. Therefore we don't define _XBS5_ILP32_OFFBIG. */
+ side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. */
/* We can never provide environments with 64-bit wide pointers. */
+# define _POSIX_V7_LP64_OFF64 -1
+# define _POSIX_V7_LPBIG_OFFBIG -1
# define _POSIX_V6_LP64_OFF64 -1
# define _POSIX_V6_LPBIG_OFFBIG -1
# define _XBS5_LP64_OFF64 -1
diff --git a/bits/poll.h b/bits/poll.h
index 022a06cc1b..0ee9b00583 100644
--- a/bits/poll.h
+++ b/bits/poll.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2000, 2001, 2009 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
@@ -27,8 +27,8 @@
#define POLLPRI 02 /* There is urgent data to read. */
#define POLLOUT 04 /* Writing now will not block. */
-#ifdef __USE_XOPEN
-/* These values are defined in XPG4.2. */
+#if defined __USE_XOPEN || defined __USE_XOPEN2K8
+/* These values are defined in XPG4.2 and later. */
# define POLLRDNORM POLLIN /* Normal data may be read. */
# define POLLRDBAND POLLPRI /* Priority data may be read. */
# define POLLWRNORM POLLOUT /* Writing now will not block. */
diff --git a/bits/resource.h b/bits/resource.h
index 8057f5cc65..ef718db0bc 100644
--- a/bits/resource.h
+++ b/bits/resource.h
@@ -185,6 +185,9 @@ struct rusage
enum __priority_which
{
PRIO_PROCESS = 0, /* WHO is a process ID. */
+#define PRIO_PROCESS PRIO_PROCESS
PRIO_PGRP = 1, /* WHO is a process group ID. */
+#define PRIO_PGRP PRIO_PGRP
PRIO_USER = 2 /* WHO is a user ID. */
+#define PRIO_USER PRIO_USER
};
diff --git a/bits/termios.h b/bits/termios.h
index 293d0a6061..b697dd19a8 100644
--- a/bits/termios.h
+++ b/bits/termios.h
@@ -124,8 +124,10 @@ struct termios
#define ICRNL (1 << 8) /* Map CR to NL on input. */
#define IXON (1 << 9) /* Enable start/stop output control. */
#define IXOFF (1 << 10) /* Enable start/stop input control. */
-#ifdef __USE_BSD
+#if defined __USE_BSD || defined __USE_UNIX98
# define IXANY (1 << 11) /* Any character will restart after stop. */
+#endif
+#ifdef __USE_BSD
# define IMAXBEL (1 << 13) /* Ring bell when input queue is full. */
#endif
#ifdef __USE_GNU
diff --git a/catgets/gencat.c b/catgets/gencat.c
index d9d03fb6a2..e9a371fd5b 100644
--- a/catgets/gencat.c
+++ b/catgets/gencat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 1996.
@@ -247,7 +247,7 @@ print_version (FILE *stream, struct argp_state *state)
Copyright (C) %s Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2008");
+"), "2009");
fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
}
diff --git a/config.h.in b/config.h.in
index b5abb10187..18bf01a38c 100644
--- a/config.h.in
+++ b/config.h.in
@@ -59,6 +59,9 @@
assembler's `.type' directive, if it has one. */
#undef ASM_TYPE_DIRECTIVE_PREFIX
+/* Define if the assembler supports the gnu_unique_object symbol type. */
+#undef HAVE_ASM_UNIQUE_OBJECT
+
/* Define a symbol_name as a global .symbol_name for ld. */
#undef HAVE_ASM_GLOBAL_DOT_NAME
@@ -129,6 +132,12 @@
/* Define if binutils support TLS handling. */
#undef HAVE_TLS_SUPPORT
+/* Define if gcc supports SSE4. */
+#undef HAVE_SSE4_SUPPORT
+
+/* Define if gcc supports AVX. */
+#undef HAVE_AVX_SUPPORT
+
/* Define if the compiler's exception support is based on libunwind. */
#undef HAVE_CC_WITH_LIBUNWIND
@@ -189,6 +198,9 @@
/* Define if __stack_chk_guard canary should be randomized at program startup. */
#undef ENABLE_STACKGUARD_RANDOMIZE
+/* Define if multi-arch DSOs should be generated. */
+#undef USE_MULTIARCH
+
/*
*/
diff --git a/config.make.in b/config.make.in
index aa73466713..d65706ceac 100644
--- a/config.make.in
+++ b/config.make.in
@@ -32,6 +32,10 @@ config-vendor = @host_vendor@
config-os = @host_os@
config-sysdirs = @sysnames@
cflags-cpu = @libc_cv_cc_submachine@
+asflags-cpu = @libc_cv_cc_submachine@
+
+config-cflags-sse4 = @libc_cv_cc_sse4@
+config-cflags-avx = @libc_cv_cc_avx@
defines = @DEFINES@
sysincludes = @SYSINCLUDES@
@@ -70,6 +74,7 @@ versioning = @VERSIONING@
oldest-abi = @oldest_abi@
no-whole-archive = @no_whole_archive@
exceptions = @exceptions@
+multi-arch = @multi_arch@
mach-interface-list = @mach_interface_list@
@@ -78,10 +83,14 @@ have-ksh = @libc_cv_have_ksh@
sizeof-long-double = @sizeof_long_double@
+experimental-malloc = @experimental_malloc@
+
+nss-crypt = @libc_cv_nss_crypt@
+
# Configuration options.
build-static = @static@
build-shared = @shared@
-build-pic-default= @pic_default@
+build-pic-default= @libc_cv_pic_default@
build-profile = @profile@
build-omitfp = @omitfp@
build-bounded = @bounded@
diff --git a/configure b/configure
index a2a792c93f..49ac30db46 100755
--- a/configure
+++ b/configure
@@ -1,12 +1,12 @@
#! /bin/sh
# From configure.in CVSid.
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for GNU C Library (see version.h).
+# Generated by GNU Autoconf 2.63 for GNU C Library (see version.h).
#
# Report bugs to <glibc>.
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
## --------------------- ##
@@ -18,7 +18,7 @@ DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
@@ -40,17 +40,45 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
else
- PATH_SEPARATOR=:
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
fi
- rm -f conf$$.sh
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
fi
# Support unset when possible.
@@ -66,8 +94,6 @@ fi
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
-as_nl='
-'
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
@@ -90,7 +116,7 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
{ (exit 1); exit 1; }
fi
@@ -103,17 +129,10 @@ PS2='> '
PS4='+ '
# NLS nuisances.
-for as_var in \
- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
- LC_TELEPHONE LC_TIME
-do
- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
- else
- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
- fi
-done
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
# Required to use basename.
if expr a : '\(a\)' >/dev/null 2>&1 &&
@@ -135,7 +154,7 @@ as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
+$as_echo X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -161,7 +180,7 @@ else
as_have_required=no
fi
- if test $as_have_required = yes && (eval ":
+ if test $as_have_required = yes && (eval ":
(as_func_return () {
(exit \$1)
}
@@ -243,7 +262,7 @@ IFS=$as_save_IFS
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
@@ -264,7 +283,7 @@ _ASEOF
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
@@ -344,10 +363,10 @@ fi
if test "x$CONFIG_SHELL" != x; then
for as_var in BASH_ENV ENV
- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
- done
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ done
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
fi
@@ -416,9 +435,10 @@ fi
test \$exitcode = 0") || {
echo No shell found that supports shell functions.
- echo Please tell autoconf@gnu.org about your system,
- echo including any error possibly output before this
- echo message
+ echo Please tell bug-autoconf@gnu.org about your system,
+ echo including any error possibly output before this message.
+ echo This can help us improve future autoconf versions.
+ echo Configuration will now proceed without shell functions.
}
@@ -454,7 +474,7 @@ test \$exitcode = 0") || {
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
{ (exit 1); exit 1; }; }
# Don't try to exec as it changes $[0], causing all sort of problems
@@ -482,7 +502,6 @@ case `echo -n x` in
*)
ECHO_N='-n';;
esac
-
if expr a : '\(a\)' >/dev/null 2>&1 &&
test "X`expr 00001 : '.*\(...\)'`" = X001; then
as_expr=expr
@@ -495,19 +514,22 @@ if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
else
rm -f conf$$.dir
- mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
+ fi
else
as_ln_s='cp -p'
fi
@@ -532,10 +554,10 @@ else
as_test_x='
eval sh -c '\''
if test -d "$1"; then
- test -d "$1/.";
+ test -d "$1/.";
else
case $1 in
- -*)set "./$1";;
+ -*)set "./$1";;
esac;
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
???[sx]*):;;*)false;;esac;fi
@@ -580,6 +602,7 @@ PACKAGE_STRING='GNU C Library (see version.h)'
PACKAGE_BUGREPORT='glibc'
ac_unique_file="include/features.h"
+enable_option_checking=no
# Factoring default headers for most tests.
ac_includes_default="\
#include <stdio.h>
@@ -616,158 +639,198 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL
-PATH_SEPARATOR
-PACKAGE_NAME
-PACKAGE_TARNAME
-PACKAGE_VERSION
-PACKAGE_STRING
-PACKAGE_BUGREPORT
-exec_prefix
-prefix
-program_transform_name
-bindir
-sbindir
-libexecdir
-datarootdir
-datadir
-sysconfdir
-sharedstatedir
-localstatedir
-includedir
-oldincludedir
-docdir
-infodir
-htmldir
-dvidir
-pdfdir
-psdir
-libdir
-localedir
-mandir
-DEFS
-ECHO_C
-ECHO_N
-ECHO_T
-LIBS
-build_alias
-host_alias
-target_alias
-with_fp
-with_cvs
-enable_check_abi
-oldest_abi
-bindnow
-force_install
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+RELEASE
+VERSION
+mach_interface_list
+DEFINES
+nopic_initfini
+static_nss
+bounded
+omitfp
+profile
+libc_cv_pic_default
+shared
+static
+xcoff
+elf
+ldd_rewrite_script
+use_ldconfig
+libc_cv_cc_avx
+libc_cv_cc_sse4
+libc_cv_cpp_asm_debuginfo
+libc_cv_forced_unwind
+libc_cv_rootsbindir
+libc_cv_sysconfdir
+libc_cv_localedir
+libc_cv_slibdir
+old_glibc_headers
+uname_version
+uname_release
+uname_sysname
+libc_cv_gcc_unwind_find_fde
+sizeof_long_double
+EGREP
+GREP
+have_selinux
+have_libcap
+have_libaudit
+LIBGD
+libc_cv_cc_submachine
+exceptions
+no_whole_archive
+libc_cv_have_initfini
+libc_cv_gnu89_inline
+libc_cv_ssp
+fno_unit_at_a_time
+libc_cv_hashstyle
+libc_cv_fpie
+libc_cv_z_execstack
+libc_cv_z_combreloc
+ASFLAGS_config
+libc_cv_as_needed
+libc_cv_libgcc_s_suffix
+libc_cv_Bgroup
+libc_cv_cc_with_libunwind
+VERSIONING
+BISON
+INSTALL_INFO
+PERL
+AWK
+libc_cv_have_ksh
+KSH
+libc_cv_have_bash2
+BASH_SHELL
+libc_cv_gcc_static_libgcc
+CXX_SYSINCLUDES
+SYSINCLUDES
+AUTOCONF
+SED
+MAKEINFO
+MSGFMT
+MAKE
+PWD_P
+LD
+AS
+MIG
+RANLIB
+OBJDUMP
+AR
+LN_S
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+sysdeps_add_ons
+sysnames
+submachine
+multi_arch
+base_machine
+add_on_subdirs
+add_ons
+libc_cv_nss_crypt
+experimental_malloc
all_warnings
-build
-build_cpu
-build_vendor
-build_os
-host
-host_cpu
-host_vendor
+force_install
+bindnow
+oldest_abi
+enable_check_abi
+with_cvs
+with_fp
+ac_ct_CXX
+CXXFLAGS
+CXX
+CPP
+cross_compiling
+BUILD_CC
+OBJEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
subdirs
-add_ons
-add_on_subdirs
-base_machine
-submachine
-sysnames
-sysdeps_add_ons
-INSTALL_PROGRAM
-INSTALL_SCRIPT
-INSTALL_DATA
-LN_S
-CC
-CFLAGS
-LDFLAGS
-CPPFLAGS
-ac_ct_CC
-OBJEXT
-BUILD_CC
-cross_compiling
-CPP
-CXX
-CXXFLAGS
-ac_ct_CXX
-AR
-OBJDUMP
-RANLIB
-MIG
-AS
-LD
-PWD_P
-MAKE
-MSGFMT
-MAKEINFO
-SED
-AUTOCONF
-SYSINCLUDES
-CXX_SYSINCLUDES
-libc_cv_gcc_static_libgcc
-BASH_SHELL
-libc_cv_have_bash2
-KSH
-libc_cv_have_ksh
-AWK
-PERL
-INSTALL_INFO
-BISON
-VERSIONING
-libc_cv_cc_with_libunwind
-libc_cv_Bgroup
-libc_cv_libgcc_s_suffix
-libc_cv_as_needed
-ASFLAGS_config
-libc_cv_z_combreloc
-libc_cv_z_execstack
-libc_cv_fpie
-libc_cv_hashstyle
-fno_unit_at_a_time
-libc_cv_ssp
-libc_cv_gnu89_inline
-libc_cv_have_initfini
-no_whole_archive
-exceptions
-libc_cv_cc_submachine
-LIBGD
-have_libaudit
-have_libcap
-have_selinux
-GREP
-EGREP
-sizeof_long_double
-libc_cv_gcc_unwind_find_fde
-uname_sysname
-uname_release
-uname_version
-old_glibc_headers
-libc_cv_slibdir
-libc_cv_localedir
-libc_cv_sysconfdir
-libc_cv_rootsbindir
-libc_cv_forced_unwind
-libc_cv_cpp_asm_debuginfo
-use_ldconfig
-ldd_rewrite_script
-elf
-xcoff
-static
-shared
-pic_default
-profile
-omitfp
-bounded
-static_nss
-nopic_initfini
-DEFINES
-mach_interface_list
-VERSION
-RELEASE
-LIBOBJS
-LTLIBOBJS'
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_gd
+with_gd_include
+with_gd_lib
+with_fp
+with_binutils
+with_elf
+with_selinux
+with_xcoff
+with_cvs
+with_headers
+enable_sanity_checks
+enable_check_abi
+enable_shared
+enable_profile
+enable_omitfp
+enable_bounded
+enable_versioning
+enable_oldest_abi
+enable_stackguard_randomization
+enable_add_ons
+with_tls
+with___thread
+enable_hidden_plt
+enable_bind_now
+enable_static_nss
+enable_force_install
+enable_kernel
+enable_all_warnings
+enable_multi_arch
+enable_experimental_malloc
+enable_nss_crypt
+with_cpu
+'
ac_precious_vars='build_alias
host_alias
target_alias
@@ -780,11 +843,14 @@ CPP
CXX
CXXFLAGS
CCC'
-ac_subdirs_all=''
+ac_subdirs_all='
+'
# Initialize some variables set by options.
ac_init_help=
ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
# The variables have the same names as the options, with
# dashes changed to underlines.
cache_file=/dev/null
@@ -883,13 +949,21 @@ do
datarootdir=$ac_optarg ;;
-disable-* | --disable-*)
- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
{ (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
- eval enable_$ac_feature=no ;;
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
-docdir | --docdir | --docdi | --doc | --do)
ac_prev=docdir ;;
@@ -902,13 +976,21 @@ do
dvidir=$ac_optarg ;;
-enable-* | --enable-*)
- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
{ (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
- eval enable_$ac_feature=\$ac_optarg ;;
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
@@ -1099,22 +1181,38 @@ do
ac_init_version=: ;;
-with-* | --with-*)
- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
{ (exit 1); exit 1; }; }
- ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
- eval with_$ac_package=\$ac_optarg ;;
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
-without-* | --without-*)
- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
{ (exit 1); exit 1; }; }
- ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
- eval with_$ac_package=no ;;
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
--x)
# Obsolete; use --with-x.
@@ -1134,7 +1232,7 @@ do
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
x_libraries=$ac_optarg ;;
- -*) { echo "$as_me: error: unrecognized option: $ac_option
+ -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
Try \`$0 --help' for more information." >&2
{ (exit 1); exit 1; }; }
;;
@@ -1143,16 +1241,16 @@ Try \`$0 --help' for more information." >&2
ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
# Reject names that are not valid shell variable names.
expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
{ (exit 1); exit 1; }; }
eval $ac_envvar=\$ac_optarg
export $ac_envvar ;;
*)
# FIXME: should be removed in autoconf 3.0.
- echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
: ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
;;
@@ -1161,22 +1259,38 @@ done
if test -n "$ac_prev"; then
ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- { echo "$as_me: error: missing argument to $ac_option" >&2
+ { $as_echo "$as_me: error: missing argument to $ac_option" >&2
{ (exit 1); exit 1; }; }
fi
-# Be sure to have absolute directory names.
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
+ { (exit 1); exit 1; }; } ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir
do
eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
case $ac_val in
[\\/$]* | ?:[\\/]* ) continue;;
NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
esac
- { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
{ (exit 1); exit 1; }; }
done
@@ -1191,7 +1305,7 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used." >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
@@ -1207,10 +1321,10 @@ test "$silent" = yes && exec 6>/dev/null
ac_pwd=`pwd` && test -n "$ac_pwd" &&
ac_ls_di=`ls -di .` &&
ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- { echo "$as_me: error: Working directory cannot be determined" >&2
+ { $as_echo "$as_me: error: working directory cannot be determined" >&2
{ (exit 1); exit 1; }; }
test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- { echo "$as_me: error: pwd does not report name of working directory" >&2
+ { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
{ (exit 1); exit 1; }; }
@@ -1218,12 +1332,12 @@ test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
if test -z "$srcdir"; then
ac_srcdir_defaulted=yes
# Try the directory containing this script, then the parent directory.
- ac_confdir=`$as_dirname -- "$0" ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$0" : 'X\(//\)[^/]' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$0" |
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -1250,12 +1364,12 @@ else
fi
if test ! -r "$srcdir/$ac_unique_file"; then
test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
{ (exit 1); exit 1; }; }
fi
ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
+ cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
{ (exit 1); exit 1; }; }
pwd)`
# When building in place, set srcdir=.
@@ -1304,9 +1418,9 @@ Configuration:
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
+ [$ac_default_prefix]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
+ [PREFIX]
By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
@@ -1316,25 +1430,25 @@ for instance \`--prefix=\$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
- --infodir=DIR info documentation [DATAROOTDIR/info]
- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
- --mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/c-library]
- --htmldir=DIR html documentation [DOCDIR]
- --dvidir=DIR dvi documentation [DOCDIR]
- --pdfdir=DIR pdf documentation [DOCDIR]
- --psdir=DIR ps documentation [DOCDIR]
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/c-library]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
_ACEOF
cat <<\_ACEOF
@@ -1352,6 +1466,7 @@ if test -n "$ac_init_help"; then
cat <<\_ACEOF
Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-sanity-checks really do not use threads (should not be used except
@@ -1380,6 +1495,11 @@ Optional Features:
--enable-kernel=VERSION compile for compatibility with kernel not older than
VERSION
--enable-all-warnings enable all useful warnings gcc can issue
+ --enable-multi-arch enable single DSO with optimizations for multiple
+ architectures
+ --enable-experimental-malloc
+ enable experimental malloc features
+ --enable-nss-crypt enable libcrypt to use nss
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -1422,15 +1542,17 @@ fi
if test "$ac_init_help" = "recursive"; then
# If there are subdirs, report their specific --help.
for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
- test -d "$ac_dir" || continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
ac_builddir=.
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1466,7 +1588,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
echo &&
$SHELL "$ac_srcdir/configure" --help=recursive
else
- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi || ac_status=$?
cd "$ac_pwd" || { ac_status=$?; break; }
done
@@ -1476,10 +1598,10 @@ test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
GNU C Library configure (see version.h)
-generated by GNU Autoconf 2.61
+generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1490,7 +1612,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by GNU C Library $as_me (see version.h), which was
-generated by GNU Autoconf 2.61. Invocation command line was
+generated by GNU Autoconf 2.63. Invocation command line was
$ $0 $@
@@ -1526,7 +1648,7 @@ for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- echo "PATH: $as_dir"
+ $as_echo "PATH: $as_dir"
done
IFS=$as_save_IFS
@@ -1561,7 +1683,7 @@ do
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
@@ -1613,11 +1735,12 @@ _ASBOX
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
*) $as_unset $ac_var ;;
esac ;;
esac
@@ -1647,9 +1770,9 @@ _ASBOX
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- echo "$ac_var='\''$ac_val'\''"
+ $as_echo "$ac_var='\''$ac_val'\''"
done | sort
echo
@@ -1664,9 +1787,9 @@ _ASBOX
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- echo "$ac_var='\''$ac_val'\''"
+ $as_echo "$ac_var='\''$ac_val'\''"
done | sort
echo
fi
@@ -1682,8 +1805,8 @@ _ASBOX
echo
fi
test "$ac_signal" != 0 &&
- echo "$as_me: caught signal $ac_signal"
- echo "$as_me: exit $exit_status"
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
} >&5
rm -f core *.core core.conftest.* &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
@@ -1725,21 +1848,24 @@ _ACEOF
# Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
- set x "$CONFIG_SITE"
+ ac_site_file1=$CONFIG_SITE
elif test "x$prefix" != xNONE; then
- set x "$prefix/share/config.site" "$prefix/etc/config.site"
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
else
- set x "$ac_default_prefix/share/config.site" \
- "$ac_default_prefix/etc/config.site"
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
fi
-shift
-for ac_site_file
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
do
+ test "x$ac_site_file" = xNONE && continue
if test -r "$ac_site_file"; then
- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
+ { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
. "$ac_site_file"
fi
@@ -1749,16 +1875,16 @@ if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special
# files actually), so we avoid doing that.
if test -f "$cache_file"; then
- { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
+ { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . "$cache_file";;
*) . "./$cache_file";;
esac
fi
else
- { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
+ { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
@@ -1772,29 +1898,38 @@ for ac_var in $ac_precious_vars; do
eval ac_new_val=\$ac_env_${ac_var}_value
case $ac_old_set,$ac_new_set in
set,)
- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
- { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
-echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
-echo "$as_me: current value: $ac_new_val" >&2;}
- ac_cache_corrupted=:
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
fi;;
esac
# Pass precious variables to config.status.
if test "$ac_new_set" = set; then
case $ac_new_val in
- *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
*) ac_arg=$ac_var=$ac_new_val ;;
esac
case " $ac_configure_args " in
@@ -1804,10 +1939,12 @@ echo "$as_me: current value: $ac_new_val" >&2;}
fi
done
if $ac_cache_corrupted; then
- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1862,8 +1999,8 @@ for ac_dir in scripts "$srcdir"/scripts; do
fi
done
if test -z "$ac_aux_dir"; then
- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in scripts \"$srcdir\"/scripts" >&5
-echo "$as_me: error: cannot find install-sh or install.sh in scripts \"$srcdir\"/scripts" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in scripts \"$srcdir\"/scripts" >&5
+$as_echo "$as_me: error: cannot find install-sh or install.sh in scripts \"$srcdir\"/scripts" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1877,332 +2014,41 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
- { { echo "$as_me:$LINENO: error: you must configure in a separate build directory" >&5
-echo "$as_me: error: you must configure in a separate build directory" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-# This will get text that should go into config.make.
-config_vars=
-
-# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
-
-# Check whether --with-gd was given.
-if test "${with_gd+set}" = set; then
- withval=$with_gd; case "$with_gd" in
-yes|''|no) ;;
-*) libgd_include="-I$withval/include"
- libgd_ldflags="-L$withval/lib" ;;
-esac
-
-fi
-
-
-# Check whether --with-gd-include was given.
-if test "${with_gd_include+set}" = set; then
- withval=$with_gd_include; case "$with_gd_include" in
-''|no) ;;
-*) libgd_include="-I$withval" ;;
-esac
-
-fi
-
-
-# Check whether --with-gd-lib was given.
-if test "${with_gd_lib+set}" = set; then
- withval=$with_gd_lib; case "$with_gd_lib" in
-''|no) ;;
-*) libgd_ldflags="-L$withval" ;;
-esac
-
-fi
-
-
-if test -n "$libgd_include"; then
- config_vars="$config_vars
-CFLAGS-memusagestat.c = $libgd_include"
-fi
-if test -n "$libgd_ldflags"; then
- config_vars="$config_vars
-libgd-LDFLAGS = $libgd_ldflags"
-fi
-
-
-# Check whether --with-fp was given.
-if test "${with_fp+set}" = set; then
- withval=$with_fp; with_fp=$withval
-else
- with_fp=yes
-fi
-
-
-
-# Check whether --with-binutils was given.
-if test "${with_binutils+set}" = set; then
- withval=$with_binutils; path_binutils=$withval
-else
- path_binutils=''
-fi
-
-
-# Check whether --with-elf was given.
-if test "${with_elf+set}" = set; then
- withval=$with_elf; elf=$withval
-else
- elf=no
-fi
-
-
-# Check whether --with-selinux was given.
-if test "${with_selinux+set}" = set; then
- withval=$with_selinux; with_selinux=$withval
-else
- with_selinux=auto
-fi
-
-
-# Check whether --with-xcoff was given.
-if test "${with_xcoff+set}" = set; then
- withval=$with_xcoff; xcoff=$withval
-else
- xcoff=no
-fi
-
-
-# Check whether --with-cvs was given.
-if test "${with_cvs+set}" = set; then
- withval=$with_cvs; with_cvs=$withval
-else
- with_cvs=yes
-fi
-
-if test "$with_cvs" = yes; then
- if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
- then
- with_cvs=no
- fi
-fi
-
-
-
-# Check whether --with-headers was given.
-if test "${with_headers+set}" = set; then
- withval=$with_headers; sysheaders=$withval
-else
- sysheaders=''
-fi
-
-
-# Check whether --enable-sanity-checks was given.
-if test "${enable_sanity_checks+set}" = set; then
- enableval=$enable_sanity_checks; enable_sanity=$enableval
-else
- enable_sanity=yes
-fi
-
-
-
-# Check whether --enable-check-abi was given.
-if test "${enable_check_abi+set}" = set; then
- enableval=$enable_check_abi; enable_check_abi=$enableval
-else
- enable_check_abi=no
-fi
-
-
-static=yes
-# Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then
- enableval=$enable_shared; shared=$enableval
-else
- shared=default
-fi
-
-# Check whether --enable-profile was given.
-if test "${enable_profile+set}" = set; then
- enableval=$enable_profile; profile=$enableval
-else
- profile=no
-fi
-
-# Check whether --enable-omitfp was given.
-if test "${enable_omitfp+set}" = set; then
- enableval=$enable_omitfp; omitfp=$enableval
-else
- omitfp=no
-fi
-
-# Check whether --enable-bounded was given.
-if test "${enable_bounded+set}" = set; then
- enableval=$enable_bounded; bounded=$enableval
-else
- bounded=no
-fi
-
-# Check whether --enable-versioning was given.
-if test "${enable_versioning+set}" = set; then
- enableval=$enable_versioning; enable_versioning=$enableval
-else
- enable_versioning=yes
-fi
-
-
-# Check whether --enable-oldest-abi was given.
-if test "${enable_oldest_abi+set}" = set; then
- enableval=$enable_oldest_abi; oldest_abi=$enableval
-else
- oldest_abi=no
-fi
-
-if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
- oldest_abi=default
-else
- cat >>confdefs.h <<_ACEOF
-#define GLIBC_OLDEST_ABI "$oldest_abi"
-_ACEOF
-
-fi
-
-
-# Check whether --enable-stackguard-randomization was given.
-if test "${enable_stackguard_randomization+set}" = set; then
- enableval=$enable_stackguard_randomization; enable_stackguard_randomize=$enableval
-else
- enable_stackguard_randomize=no
-fi
-
-if test "$enable_stackguard_randomize" = yes; then
- cat >>confdefs.h <<\_ACEOF
-#define ENABLE_STACKGUARD_RANDOMIZE 1
-_ACEOF
-
-fi
-
-# Check whether --enable-add-ons was given.
-if test "${enable_add_ons+set}" = set; then
- enableval=$enable_add_ons;
-else
- enable_add_ons=yes
-fi
-
-# Check whether --with-tls was given.
-if test "${with_tls+set}" = set; then
- withval=$with_tls; usetls=$withval
-else
- usetls=yes
-fi
-
-
-
-# Check whether --with-__thread was given.
-if test "${with___thread+set}" = set; then
- withval=$with___thread; use__thread=$withval
-else
- use__thread=yes
-fi
-
-
-# Check whether --enable-hidden-plt was given.
-if test "${enable_hidden_plt+set}" = set; then
- enableval=$enable_hidden_plt; hidden=$enableval
-else
- hidden=yes
-fi
-
-if test "x$hidden" = xno; then
- cat >>confdefs.h <<\_ACEOF
-#define NO_HIDDEN 1
-_ACEOF
-
-fi
-
-# Check whether --enable-bind-now was given.
-if test "${enable_bind_now+set}" = set; then
- enableval=$enable_bind_now; bindnow=$enableval
-else
- bindnow=no
-fi
-
-
-
-# Check whether --enable-static-nss was given.
-if test "${enable_static_nss+set}" = set; then
- enableval=$enable_static_nss; static_nss=$enableval
-else
- static_nss=no
-fi
-
-if test x"$static_nss" = xyes || test x"$shared" = xno; then
- static_nss=yes
- cat >>confdefs.h <<\_ACEOF
-#define DO_STATIC_NSS 1
-_ACEOF
-
-fi
-
-# Check whether --enable-force-install was given.
-if test "${enable_force_install+set}" = set; then
- enableval=$enable_force_install; force_install=$enableval
-else
- force_install=yes
-fi
-
-
-
-# Check whether --enable-kernel was given.
-if test "${enable_kernel+set}" = set; then
- enableval=$enable_kernel; minimum_kernel=$enableval
-fi
-
-if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
- # Better nothing than this.
- minimum_kernel=""
-else
- if test "$minimum_kernel" = current; then
- minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
- fi
-fi
-
-# Check whether --enable-all-warnings was given.
-if test "${enable_all_warnings+set}" = set; then
- enableval=$enable_all_warnings; all_warnings=$enableval
-fi
-
+subdirs="$subdirs "
# Make sure we can run config.sub.
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
-echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
{ (exit 1); exit 1; }; }
-{ echo "$as_me:$LINENO: checking build system type" >&5
-echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
if test "${ac_cv_build+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
ac_build_alias=$build_alias
test "x$ac_build_alias" = x &&
ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
test "x$ac_build_alias" = x &&
- { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
{ (exit 1); exit 1; }; }
ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
{ (exit 1); exit 1; }; }
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
-*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
-echo "$as_me: error: invalid value of canonical build" >&2;}
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+$as_echo "$as_me: error: invalid value of canonical build" >&2;}
{ (exit 1); exit 1; }; };;
esac
build=$ac_cv_build
@@ -2219,27 +2065,27 @@ IFS=$ac_save_IFS
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-{ echo "$as_me:$LINENO: checking host system type" >&5
-echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
if test "${ac_cv_host+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test "x$host_alias" = x; then
ac_cv_host=$ac_cv_build
else
ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
{ (exit 1); exit 1; }; }
fi
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
-*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
-echo "$as_me: error: invalid value of canonical host" >&2;}
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+$as_echo "$as_me: error: invalid value of canonical host" >&2;}
{ (exit 1); exit 1; }; };;
esac
host=$ac_cv_host
@@ -2257,697 +2103,6 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-# The way shlib-versions is used to generate soversions.mk uses a
-# fairly simplistic model for name recognition that can't distinguish
-# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
-# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
-# tell. This doesn't get used much beyond that, so it's fairly safe.
-case "$host_os" in
-linux*)
- ;;
-gnu*)
- host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
- ;;
-esac
-
-# We keep the original values in `$config_*' and never modify them, so we
-# can write them unchanged into config.make. Everything else uses
-# $machine, $vendor, and $os, and changes them whenever convenient.
-config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
-
-# Don't allow vendor == "unknown"
-test "$config_vendor" = unknown && config_vendor=
-config_os="`echo $config_os | sed 's/^unknown-//'`"
-
-# Some configurations imply other options.
-case "$host_os" in
-# i586-linuxaout is mangled into i586-pc-linux-gnuaout
-linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
- ;;
-gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
- # These systems (almost) always use the ELF format.
- elf=yes
- ;;
-aix*)
- # These systems are always xcoff
- xcoff=yes
- elf=no
- ;;
-esac
-
-# The configure fragment of an add-on port can modify these to supplement
-# or override the table in the case statement below. No fragment should
-# ever change the config_* variables, however.
-machine=$config_machine
-vendor=$config_vendor
-os=$config_os
-base_os=''
-
-# config.guess on some IBM machines says `rs6000' instead of `powerpc'.
-# Unify this here.
-if test "$machine" = rs6000; then
- machine="powerpc"
-fi
-
-# Braindead PowerPC box with absolutely no FPU.
-case "$machine-$host_os" in
- powerpc*-*soft)
- with_fp=no
- ;;
-esac
-
-submachine=
-
-# Check whether --with-cpu was given.
-if test "${with_cpu+set}" = set; then
- withval=$with_cpu; case "$withval" in
- yes|'') { { echo "$as_me:$LINENO: error: --with-cpu requires an argument" >&5
-echo "$as_me: error: --with-cpu requires an argument" >&2;}
- { (exit 1); exit 1; }; } ;;
- no) ;;
- *) submachine="$withval" ;;
- esac
-
-fi
-
-
-# An add-on can set this when it wants to disable the sanity check below.
-libc_config_ok=no
-
-subdirs="$subdirs "
-
-
-case "$enable_add_ons" in
-''|no) add_ons= ;;
-yes|'*')
- add_ons=`cd $srcdir && ls -d 2> /dev/null */configure */sysdeps |
- sed 's@/[^/]*$@@' | sort | uniq`
- add_ons_automatic=yes
- ;;
-*) add_ons=`echo "$enable_add_ons" | sed 's/,/ /g'`
- add_ons_automatic=no ;;
-esac
-
-configured_add_ons=
-add_ons_sfx=
-add_ons_pfx=
-if test x"$add_ons" != x; then
- for f in $add_ons; do
- # Some sanity checks
- case "$f" in
- crypt)
- { { echo "$as_me:$LINENO: error:
-*** It seems that you're using an old \`crypt' add-on. crypt is now
-*** part of glibc and using the old add-on will not work with this
-*** release. Start again with fresh sources and without the old
-*** \`crypt' add-on." >&5
-echo "$as_me: error:
-*** It seems that you're using an old \`crypt' add-on. crypt is now
-*** part of glibc and using the old add-on will not work with this
-*** release. Start again with fresh sources and without the old
-*** \`crypt' add-on." >&2;}
- { (exit 1); exit 1; }; }
- ;;
- localedata)
- { { echo "$as_me:$LINENO: error:
-*** It seems that you're using an old \`localedata' add-on. localedata
-*** is now part of glibc and using the old add-on will not work with
-*** this release. Start again with fresh sources and without the old
-*** \`localedata' add-on." >&5
-echo "$as_me: error:
-*** It seems that you're using an old \`localedata' add-on. localedata
-*** is now part of glibc and using the old add-on will not work with
-*** this release. Start again with fresh sources and without the old
-*** \`localedata' add-on." >&2;}
- { (exit 1); exit 1; }; }
- ;;
- esac
- done
-
- # Now source each add-on's configure fragment.
- # The fragments can use $srcdir/$libc_add_on to find themselves,
- # and test $add_ons_automatic to see if they were explicitly requested.
- # A fragment can clear (or even change) $libc_add_on to affect
- # whether it goes into the list to be actually used in the build.
- use_add_ons=
- for libc_add_on in $add_ons; do
- # Test whether such a directory really exists.
- # It can be absolute, or relative to $srcdir, or relative to the build dir.
- case "$libc_add_on" in
- /*)
- libc_add_on_srcdir=$libc_add_on
- ;;
- *)
- test -d "$srcdir/$libc_add_on" || {
- if test -d "$libc_add_on"; then
- libc_add_on="`pwd`/$libc_add_on"
- else
- { { echo "$as_me:$LINENO: error: add-on directory \"$libc_add_on\" does not exist" >&5
-echo "$as_me: error: add-on directory \"$libc_add_on\" does not exist" >&2;}
- { (exit 1); exit 1; }; }
- fi
- }
- libc_add_on_srcdir=$srcdir/$libc_add_on
- ;;
- esac
-
- libc_add_on_frag=$libc_add_on_srcdir/configure
- libc_add_on_canonical=
- if test -r "$libc_add_on_frag"; then
- { echo "$as_me:$LINENO: running configure fragment for add-on $libc_add_on" >&5
-echo "$as_me: running configure fragment for add-on $libc_add_on" >&6;}
- libc_add_on_canonical=unknown
- libc_add_on_subdirs=
- . "$libc_add_on_frag"
- test -z "$libc_add_on" || {
- configured_add_ons="$configured_add_ons $libc_add_on"
- if test "x$libc_add_on_canonical" = xunknown; then
- { { echo "$as_me:$LINENO: error: fragment must set \$libc_add_on_canonical" >&5
-echo "$as_me: error: fragment must set \$libc_add_on_canonical" >&2;}
- { (exit 1); exit 1; }; }
- fi
- for d in $libc_add_on_subdirs; do
- case "$libc_add_on" in
- /*) subdir_srcdir="$libc_add_on" ;;
- *) subdir_srcdir="\$(..)$libc_add_on" ;;
- esac
- case "$d" in
- .)
- d="${libc_add_on_canonical:-$libc_add_on}"
- ;;
- /*)
- subdir_srcdir="$d"
- ;;
- *)
- subdir_srcdir="$subdir_srcdir/$d"
- ;;
- esac
- d=`echo "$d" | sed 's@/*$@@;s@^.*/@@'`
- add_on_subdirs="$add_on_subdirs $d"
- test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
-$d-srcdir = $subdir_srcdir"
- done
- }
- fi
- if test -n "$libc_add_on"; then
- if frags=`ls -d $libc_add_on_srcdir/sysdeps/*/preconfigure 2> /dev/null`
- then
- { echo "$as_me:$LINENO: checking add-on $libc_add_on for preconfigure fragments" >&5
-echo $ECHO_N "checking add-on $libc_add_on for preconfigure fragments... $ECHO_C" >&6; }
- for frag in $frags; do
- name=`echo "$frag" | sed 's@/[^/]*$@@;s@^.*/@@'`
- echo $ECHO_N "$name $ECHO_C" >&6
- . "$frag"
- done
- { echo "$as_me:$LINENO: result: " >&5
-echo "${ECHO_T}" >&6; }
- fi
- use_add_ons="$use_add_ons $libc_add_on"
- add_ons_pfx="$add_ons_pfx $libc_add_on/"
- test -z "$libc_add_on_canonical" ||
- add_ons_sfx="$add_ons_sfx /$libc_add_on_canonical"
- fi
- done
- # Use echo to strip excess whitespace.
- add_ons="`echo $use_add_ons`"
-fi
-
-
-
-
-###
-### I put this here to prevent those annoying emails from people who cannot
-### read and try to compile glibc on unsupported platforms. --drepper
-###
-### By using the undocumented --enable-hacker-mode option for configure
-### one can skip this test to make the configuration not fail for unsupported
-### platforms.
-###
-if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
- case "$machine-$host_os" in
- *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
- ;;
- *)
- echo "*** The GNU C library is currently not available for this platform."
- echo "*** So far nobody cared to port it and if there is no volunteer it"
- echo "*** might never happen. So, if you have interest to see glibc on"
- echo "*** this platform visit"
- echo "*** http://www.gnu.org/software/libc/porting.html"
- echo "*** and join the group of porters"
- exit 1
- ;;
- esac
-fi
-
-# Expand the configuration machine name into a subdirectory by architecture
-# type and particular chip. If an add-on configure fragment already set
-# base_machine, we don't change it.
-test -n "$base_machine" || case "$machine" in
-a29k | am29000) base_machine=a29k machine=a29k ;;
-alpha*) base_machine=alpha machine=alpha/$machine ;;
-c3[012]) base_machine=cx0 machine=cx0/c30 ;;
-c4[04]) base_machine=cx0 machine=cx0/c40 ;;
-i[34567]86) base_machine=i386 machine=i386/$machine ;;
-ia64) base_machine=ia64 machine=ia64 ;;
-m88???) base_machine=m88k machine=m88k/$machine ;;
-m88k) base_machine=m88k machine=m88k/m88100 ;;
-powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
-powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
-s390) base_machine=s390 machine=s390/s390-32 ;;
-s390x) base_machine=s390 machine=s390/s390-64 ;;
-sh3*) base_machine=sh machine=sh/sh3 ;;
-sh4*) base_machine=sh machine=sh/sh4 ;;
-sparc | sparcv[67])
- base_machine=sparc machine=sparc/sparc32 ;;
-sparcv8 | supersparc | hypersparc)
- base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
-sparcv8plus | sparcv8plusa | sparcv9)
- base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
-sparcv8plusb | sparcv9b)
- base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9b ;;
-sparcv9v)
- base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v ;;
-sparcv9v2)
- base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v2 ;;
-sparc64)
- base_machine=sparc machine=sparc/sparc64 ;;
-sparc64b)
- base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
-sparc64v)
- base_machine=sparc machine=sparc/sparc64/sparcv9v ;;
-sparc64v2)
- base_machine=sparc machine=sparc/sparc64/sparcv9v2 ;;
-*) base_machine=$machine ;;
-esac
-
-
-if test "$base_machine" = "i386"; then
- cat >>confdefs.h <<\_ACEOF
-#define USE_REGPARMS 1
-_ACEOF
-
-fi
-
-# Compute the list of sysdep directories for this configuration.
-# This can take a while to compute.
-sysdep_dir=$srcdir/sysdeps
-{ echo "$as_me:$LINENO: checking sysdep dirs" >&5
-echo $ECHO_N "checking sysdep dirs... $ECHO_C" >&6; }
-# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
-os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
-
-test "x$base_os" != x || case "$os" in
-gnu*)
- base_os=mach/hurd ;;
-netbsd* | 386bsd* | freebsd* | bsdi*)
- base_os=unix/bsd/bsd4.4 ;;
-osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
- base_os=unix/bsd ;;
-sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
- base_os=unix/sysv ;;
-irix6*)
- base_os=unix/sysv/irix6/$os ;;
-solaris[2-9]*)
- base_os=unix/sysv/sysv4 ;;
-hpux*)
- base_os=unix/sysv/hpux/$os ;;
-aix4.3*)
- base_os=unix/sysv/aix/aix4.3 ;;
-none)
- base_os=standalone ;;
-esac
-
-# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
-tail=$os
-ostry=$os
-while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
- ostry="$ostry /$o"
- tail=$o
-done
-o=`echo $tail | sed 's/[0-9]*$//'`
-if test $o != $tail; then
- ostry="$ostry /$o"
-fi
-# For linux-gnu, try linux-gnu, then linux.
-o=`echo $tail | sed 's/-.*$//'`
-if test $o != $tail; then
- ostry="$ostry /$o"
-fi
-
-# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
-base=
-tail=$base_os
-while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
- set $b
- base="$base /$1"
- tail="$2"
-done
-
-# For sparc/sparc32, try sparc/sparc32 and then sparc.
-mach=
-tail=$machine${submachine:+/$submachine}
-while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
- set $m
- # Prepend the machine's FPU directory unless --without-fp.
- if test "$with_fp" = yes; then
- mach="$mach /$1/fpu"
- else
- mach="$mach /$1/nofpu"
- fi
- mach="$mach /$1"
- tail="$2"
-done
-
-
-# Find what sysdep directories exist.
-sysnames_add_ons=
-sysnames=
-for b in $base ''; do
- for m0 in $mach ''; do
- for v in /$vendor ''; do
- test "$v" = / && continue
- for o in /$ostry ''; do
- test "$o" = / && continue
- for m in $mach ''; do
- for d in $add_ons_pfx ''; do
- for a in $add_ons_sfx ''; do
- if test -n "$m0$m0sub$b$v$o$m$msub"; then
- try_srcdir="${srcdir}/"
- case "$d" in
- /*) try_srcdir= ;;
- esac
- try="${d}sysdeps$m0$m0sub$b$v$o$m$msub$a"
- test -n "$enable_debug_configure" &&
- echo "$0 DEBUG: try $try" >&2
- if test -d "$try_srcdir$try"; then
- sysnames="$sysnames $try"
- { test -n "$o" || test -n "$b"; } && os_used=t
- { test -n "$m" || test -n "$m0"; } && machine_used=t
- case x${m0:-$m} in
- x*/$submachine) submachine_used=t ;;
- esac
- if test -n "$d"; then
- case "$sysnames_add_ons" in
- *" $d "*) ;;
- *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
- esac
- fi
- fi
- fi
- done
- done
- done
- done
- done
- done
-done
-
-if test -z "$os_used" && test "$os" != none; then
- { { echo "$as_me:$LINENO: error: Operating system $os is not supported." >&5
-echo "$as_me: error: Operating system $os is not supported." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "$machine_used" && test "$machine" != none; then
- { { echo "$as_me:$LINENO: error: The $machine is not supported." >&5
-echo "$as_me: error: The $machine is not supported." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "$submachine_used" && test -n "$submachine"; then
- { { echo "$as_me:$LINENO: error: The $submachine subspecies of $host_cpu is not supported." >&5
-echo "$as_me: error: The $submachine subspecies of $host_cpu is not supported." >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-
-# We have now validated the configuration.
-
-
-# If using ELF, look for an `elf' subdirectory of each machine directory.
-# We prepend these rather than inserting them whereever the machine appears
-# because things specified by the machine's ELF ABI should override
-# OS-specific things, and should always be the same for any OS on the
-# machine (otherwise what's the point of an ABI?).
-if test "$elf" = yes; then
- elf_dirs=
- for d in $add_ons_pfx ''; do
- for m in $mach; do
- if test -d $srcdir/${d}sysdeps$m/elf; then
- elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
- fi
- done
- done
- sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
-fi
-
-
-# Expand the list of system names into a full list of directories
-# from each element's parent name and Implies file (if present).
-set $sysnames
-names=
-while test $# -gt 0; do
- name=$1
- shift
-
- case " $names " in *" $name "*)
- # Already in the list.
- continue
- esac
-
- # Report each name as we discover it, so there is no long pause in output.
- echo $ECHO_N "$name $ECHO_C" >&6
-
- name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
-
- case $name in
- /*) xsrcdir= ;;
- *) xsrcdir=$srcdir/ ;;
- esac
- test -n "$enable_debug_configure" &&
- echo "DEBUG: name/Implies $xsrcdir$name/Implies" >&2
-
- if test -f $xsrcdir$name/Implies; then
- # Collect more names from the `Implies' file (removing comments).
- implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
- implied=
- for x in $implied_candidate; do
- found=no
- if test -d $xsrcdir$name_base/$x; then
- implied="$implied $name_base/$x";
- found=yes
- fi
- for d in $add_ons_pfx ''; do
- try="${d}sysdeps/$x"
- case $d in
- /*) try_srcdir= ;;
- *) try_srcdir=$srcdir/ ;;
- esac
- test -n "$enable_debug_configure" &&
- echo "DEBUG: $name implied $x try($d) {$try_srcdir}$try" >&2
- if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
- then
- implied="$implied $try"
- found=yes
- case "$sysnames_add_ons" in
- *" $d "*) ;;
- *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
- esac
- fi
- done
- if test $found = no; then
- { echo "$as_me:$LINENO: WARNING: $name/Implies specifies nonexistent $x" >&5
-echo "$as_me: WARNING: $name/Implies specifies nonexistent $x" >&2;}
- fi
- done
- else
- implied=
- fi
-
- # Add NAME to the list of names.
- names="$names $name"
-
- # Find the parent of NAME, using the empty string if it has none.
- parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
-
- # Add the names implied by NAME, and NAME's parent (if it has one), to
- # the list of names to be processed (the argument list). We prepend the
- # implied names to the list and append the parent. We want implied
- # directories to come before further directories inferred from the
- # configuration components; this ensures that for sysv4, unix/common
- # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
- # after sysv4).
- sysnames="`echo $implied $* $parent`"
- test -n "$sysnames" && set $sysnames
-done
-
-# Add the default directories.
-default_sysnames=sysdeps/generic
-if test "$elf" = yes; then
- default_sysnames="sysdeps/generic/elf $default_sysnames"
-fi
-sysnames="$names $default_sysnames"
-
-# The other names were emitted during the scan.
-{ echo "$as_me:$LINENO: result: $default_sysnames" >&5
-echo "${ECHO_T}$default_sysnames" >&6; }
-
-# Collect the list of add-ons that supply partial sysdeps trees.
-sysdeps_add_ons=
-for add_on in $add_ons; do
- case "$add_on" in
- /*) xsrcdir= ;;
- *) xsrcdir="$srcdir/" ;;
- esac
-
- test -d "$xsrcdir$add_on/sysdeps" || {
- case "$configured_add_ons " in
- *" $add_on "*) ;;
- *|'')
- { { echo "$as_me:$LINENO: error: add-on $add_on has no configure fragment or sysdeps tree" >&5
-echo "$as_me: error: add-on $add_on has no configure fragment or sysdeps tree" >&2;}
- { (exit 1); exit 1; }; }
- ;;
- esac
- continue
- }
-
- sysdeps_add_ons="$sysdeps_add_ons $add_on"
- case "$sysnames_add_ons" in
- *" $add_on/ "*) ;;
- *|'')
- { echo "$as_me:$LINENO: WARNING: add-on $add_on contributed no sysdeps directories" >&5
-echo "$as_me: WARNING: add-on $add_on contributed no sysdeps directories" >&2;}
- continue ;;
- esac
-
- found=no
- for d in $sysnames; do
- case "$d" in
- $add_on/sysdeps/*) ;;
- *) continue ;;
- esac
- (cd "$xsrcdir$d" && for f in *[!~]; do
- case "$f" in
- sys|bits)
- for ff in $f/*.h; do
- test -d "$ff" || { test -e "$ff" && exit 88; }
- done
- ;;
- *)
- test -d "$f" || { test -e "$f" && exit 88; }
- ;;
- esac
- done)
- if test $? -eq 88; then
- found=yes
- break
- fi
- done
- if test $found = no; then
- { echo "$as_me:$LINENO: WARNING: add-on $add_on contributed no useful sysdeps directories" >&5
-echo "$as_me: WARNING: add-on $add_on contributed no useful sysdeps directories" >&2;}
- fi
-done
-
-
-
-### Locate tools.
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
- ./ | .// | /cC/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- done
- done
- ;;
-esac
-done
-IFS=$as_save_IFS
-
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
-fi
-{ echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
- # The makefiles need to use a different form to find it in $srcdir.
- INSTALL='\$(..)./scripts/install-sh -c'
-fi
-{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
- { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-else
- { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
-echo "${ECHO_T}no, using $LN_S" >&6; }
-fi
-
-
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -2956,10 +2111,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2972,7 +2127,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2983,11 +2138,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -2996,10 +2151,10 @@ if test -z "$ac_cv_prog_CC"; then
ac_ct_CC=$CC
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -3012,7 +2167,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CC="gcc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3023,11 +2178,11 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
if test "x$ac_ct_CC" = x; then
@@ -3035,12 +2190,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -3053,10 +2204,10 @@ if test -z "$CC"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -3069,7 +2220,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3080,11 +2231,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -3093,10 +2244,10 @@ fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -3114,7 +2265,7 @@ do
continue
fi
ac_cv_prog_CC="cc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3137,11 +2288,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -3152,10 +2303,10 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -3168,7 +2319,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3179,11 +2330,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -3196,10 +2347,10 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -3212,7 +2363,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CC="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3223,11 +2374,11 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -3239,12 +2390,8 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -3254,51 +2401,57 @@ fi
fi
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
+ { (exit 1); exit 1; }; }; }
# Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
{ (ac_try="$ac_compiler --version >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compiler --version >&5") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
{ (ac_try="$ac_compiler -v >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compiler -v >&5") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
{ (ac_try="$ac_compiler -V >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compiler -V >&5") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
EXEEXT=
-{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
if test "${ac_cv_objext+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -3321,40 +2474,43 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
for ac_file in conftest.o conftest.obj conftest.*; do
test -f "$ac_file" || continue;
case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
*) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
break;;
esac
done
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of object files: cannot compile
+$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
+ { (exit 1); exit 1; }; }; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
if test "${ac_cv_c_compiler_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -3380,20 +2536,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_compiler_gnu=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_compiler_gnu=no
@@ -3403,15 +2560,19 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
-GCC=`test $ac_compiler_gnu = yes && echo yes`
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
ac_test_CFLAGS=${CFLAGS+set}
ac_save_CFLAGS=$CFLAGS
-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
if test "${ac_cv_prog_cc_g+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
@@ -3438,20 +2599,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_prog_cc_g=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
CFLAGS=""
@@ -3476,20 +2638,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
:
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_c_werror_flag=$ac_save_c_werror_flag
@@ -3515,20 +2678,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_prog_cc_g=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -3543,8 +2707,8 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
if test "$ac_test_CFLAGS" = set; then
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
@@ -3560,10 +2724,10 @@ else
CFLAGS=
fi
fi
-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
if test "${ac_cv_prog_cc_c89+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
ac_cv_prog_cc_c89=no
ac_save_CC=$CC
@@ -3634,20 +2798,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_prog_cc_c89=$ac_arg
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -3663,15 +2828,15 @@ fi
# AC_CACHE_VAL
case "x$ac_cv_prog_cc_c89" in
x)
- { echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6; } ;;
+ { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
xno)
- { echo "$as_me:$LINENO: result: unsupported" >&5
-echo "${ECHO_T}unsupported" >&6; } ;;
+ { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
*)
CC="$CC $ac_cv_prog_cc_c89"
- { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
esac
@@ -3686,10 +2851,10 @@ if test $host != $build; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_BUILD_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$BUILD_CC"; then
ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test.
@@ -3702,7 +2867,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_BUILD_CC="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3713,11 +2878,11 @@ fi
fi
BUILD_CC=$ac_cv_prog_BUILD_CC
if test -n "$BUILD_CC"; then
- { echo "$as_me:$LINENO: result: $BUILD_CC" >&5
-echo "${ECHO_T}$BUILD_CC" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $BUILD_CC" >&5
+$as_echo "$BUILD_CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -3731,15 +2896,15 @@ ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
if test "${ac_cv_prog_CPP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
# Double quotes because CPP needs to be expanded
for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
@@ -3771,20 +2936,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}; then
:
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
# Broken: fails on valid input.
@@ -3808,13 +2974,14 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
@@ -3822,7 +2989,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
# Broken: success on invalid input.
continue
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
# Passes both tests.
@@ -3847,8 +3014,8 @@ fi
else
ac_cv_prog_CPP=$CPP
fi
-{ echo "$as_me:$LINENO: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
@@ -3876,20 +3043,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}; then
:
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
# Broken: fails on valid input.
@@ -3913,13 +3081,14 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
@@ -3927,7 +3096,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
# Broken: success on invalid input.
continue
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
# Passes both tests.
@@ -3943,11 +3112,13 @@ rm -f conftest.err conftest.$ac_ext
if $ac_preproc_ok; then
:
else
- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
See \`config.log' for more details." >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
+ { (exit 1); exit 1; }; }; }
fi
ac_ext=c
@@ -3971,10 +3142,10 @@ if test -z "$CXX"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_CXX+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$CXX"; then
ac_cv_prog_CXX="$CXX" # Let the user override the test.
@@ -3987,7 +3158,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3998,11 +3169,11 @@ fi
fi
CXX=$ac_cv_prog_CXX
if test -n "$CXX"; then
- { echo "$as_me:$LINENO: result: $CXX" >&5
-echo "${ECHO_T}$CXX" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -4015,10 +3186,10 @@ if test -z "$CXX"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CXX"; then
ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
@@ -4031,7 +3202,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4042,11 +3213,11 @@ fi
fi
ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
if test -n "$ac_ct_CXX"; then
- { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-echo "${ECHO_T}$ac_ct_CXX" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -4058,12 +3229,8 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CXX=$ac_ct_CXX
@@ -4073,43 +3240,47 @@ fi
fi
fi
# Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C++ compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
+$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
{ (ac_try="$ac_compiler --version >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compiler --version >&5") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
{ (ac_try="$ac_compiler -v >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compiler -v >&5") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
{ (ac_try="$ac_compiler -V >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compiler -V >&5") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -4135,20 +3306,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_compiler_gnu=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_compiler_gnu=no
@@ -4158,15 +3330,19 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
-GXX=`test $ac_compiler_gnu = yes && echo yes`
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GXX=yes
+else
+ GXX=
+fi
ac_test_CXXFLAGS=${CXXFLAGS+set}
ac_save_CXXFLAGS=$CXXFLAGS
-{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
if test "${ac_cv_prog_cxx_g+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
ac_save_cxx_werror_flag=$ac_cxx_werror_flag
ac_cxx_werror_flag=yes
@@ -4193,20 +3369,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_prog_cxx_g=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
CXXFLAGS=""
@@ -4231,20 +3408,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
:
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
@@ -4270,20 +3448,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_prog_cxx_g=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -4298,8 +3477,8 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
if test "$ac_test_CXXFLAGS" = set; then
CXXFLAGS=$ac_save_CXXFLAGS
elif test $ac_cv_prog_cxx_g = yes; then
@@ -4321,6 +3500,1197 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
+ { { $as_echo "$as_me:$LINENO: error: you must configure in a separate build directory" >&5
+$as_echo "$as_me: error: you must configure in a separate build directory" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+# This will get text that should go into config.make.
+config_vars=
+
+# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
+
+# Check whether --with-gd was given.
+if test "${with_gd+set}" = set; then
+ withval=$with_gd; case "$with_gd" in
+yes|''|no) ;;
+*) libgd_include="-I$withval/include"
+ libgd_ldflags="-L$withval/lib" ;;
+esac
+
+fi
+
+
+# Check whether --with-gd-include was given.
+if test "${with_gd_include+set}" = set; then
+ withval=$with_gd_include; case "$with_gd_include" in
+''|no) ;;
+*) libgd_include="-I$withval" ;;
+esac
+
+fi
+
+
+# Check whether --with-gd-lib was given.
+if test "${with_gd_lib+set}" = set; then
+ withval=$with_gd_lib; case "$with_gd_lib" in
+''|no) ;;
+*) libgd_ldflags="-L$withval" ;;
+esac
+
+fi
+
+
+if test -n "$libgd_include"; then
+ config_vars="$config_vars
+CFLAGS-memusagestat.c = $libgd_include"
+fi
+if test -n "$libgd_ldflags"; then
+ config_vars="$config_vars
+libgd-LDFLAGS = $libgd_ldflags"
+fi
+
+
+# Check whether --with-fp was given.
+if test "${with_fp+set}" = set; then
+ withval=$with_fp; with_fp=$withval
+else
+ with_fp=yes
+fi
+
+
+
+# Check whether --with-binutils was given.
+if test "${with_binutils+set}" = set; then
+ withval=$with_binutils; path_binutils=$withval
+else
+ path_binutils=''
+fi
+
+
+# Check whether --with-elf was given.
+if test "${with_elf+set}" = set; then
+ withval=$with_elf; elf=$withval
+else
+ elf=no
+fi
+
+
+# Check whether --with-selinux was given.
+if test "${with_selinux+set}" = set; then
+ withval=$with_selinux; with_selinux=$withval
+else
+ with_selinux=auto
+fi
+
+
+# Check whether --with-xcoff was given.
+if test "${with_xcoff+set}" = set; then
+ withval=$with_xcoff; xcoff=$withval
+else
+ xcoff=no
+fi
+
+
+# Check whether --with-cvs was given.
+if test "${with_cvs+set}" = set; then
+ withval=$with_cvs; with_cvs=$withval
+else
+ with_cvs=yes
+fi
+
+if test "$with_cvs" = yes; then
+ if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
+ then
+ with_cvs=no
+ fi
+fi
+
+
+
+# Check whether --with-headers was given.
+if test "${with_headers+set}" = set; then
+ withval=$with_headers; sysheaders=$withval
+else
+ sysheaders=''
+fi
+
+
+# Check whether --enable-sanity-checks was given.
+if test "${enable_sanity_checks+set}" = set; then
+ enableval=$enable_sanity_checks; enable_sanity=$enableval
+else
+ enable_sanity=yes
+fi
+
+
+
+# Check whether --enable-check-abi was given.
+if test "${enable_check_abi+set}" = set; then
+ enableval=$enable_check_abi; enable_check_abi=$enableval
+else
+ enable_check_abi=no
+fi
+
+
+static=yes
+# Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then
+ enableval=$enable_shared; shared=$enableval
+else
+ shared=default
+fi
+
+# Check whether --enable-profile was given.
+if test "${enable_profile+set}" = set; then
+ enableval=$enable_profile; profile=$enableval
+else
+ profile=no
+fi
+
+# Check whether --enable-omitfp was given.
+if test "${enable_omitfp+set}" = set; then
+ enableval=$enable_omitfp; omitfp=$enableval
+else
+ omitfp=no
+fi
+
+# Check whether --enable-bounded was given.
+if test "${enable_bounded+set}" = set; then
+ enableval=$enable_bounded; bounded=$enableval
+else
+ bounded=no
+fi
+
+# Check whether --enable-versioning was given.
+if test "${enable_versioning+set}" = set; then
+ enableval=$enable_versioning; enable_versioning=$enableval
+else
+ enable_versioning=yes
+fi
+
+
+# Check whether --enable-oldest-abi was given.
+if test "${enable_oldest_abi+set}" = set; then
+ enableval=$enable_oldest_abi; oldest_abi=$enableval
+else
+ oldest_abi=no
+fi
+
+if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
+ oldest_abi=default
+else
+ cat >>confdefs.h <<_ACEOF
+#define GLIBC_OLDEST_ABI "$oldest_abi"
+_ACEOF
+
+fi
+
+
+# Check whether --enable-stackguard-randomization was given.
+if test "${enable_stackguard_randomization+set}" = set; then
+ enableval=$enable_stackguard_randomization; enable_stackguard_randomize=$enableval
+else
+ enable_stackguard_randomize=no
+fi
+
+if test "$enable_stackguard_randomize" = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define ENABLE_STACKGUARD_RANDOMIZE 1
+_ACEOF
+
+fi
+
+# Check whether --enable-add-ons was given.
+if test "${enable_add_ons+set}" = set; then
+ enableval=$enable_add_ons;
+else
+ enable_add_ons=yes
+fi
+
+
+
+# Check whether --with-tls was given.
+if test "${with_tls+set}" = set; then
+ withval=$with_tls; usetls=$withval
+else
+ usetls=yes
+fi
+
+
+
+# Check whether --with-__thread was given.
+if test "${with___thread+set}" = set; then
+ withval=$with___thread; use__thread=$withval
+else
+ use__thread=yes
+fi
+
+
+# Check whether --enable-hidden-plt was given.
+if test "${enable_hidden_plt+set}" = set; then
+ enableval=$enable_hidden_plt; hidden=$enableval
+else
+ hidden=yes
+fi
+
+if test "x$hidden" = xno; then
+ cat >>confdefs.h <<\_ACEOF
+#define NO_HIDDEN 1
+_ACEOF
+
+fi
+
+# Check whether --enable-bind-now was given.
+if test "${enable_bind_now+set}" = set; then
+ enableval=$enable_bind_now; bindnow=$enableval
+else
+ bindnow=no
+fi
+
+
+
+# Check whether --enable-static-nss was given.
+if test "${enable_static_nss+set}" = set; then
+ enableval=$enable_static_nss; static_nss=$enableval
+else
+ static_nss=no
+fi
+
+if test x"$static_nss" = xyes || test x"$shared" = xno; then
+ static_nss=yes
+ cat >>confdefs.h <<\_ACEOF
+#define DO_STATIC_NSS 1
+_ACEOF
+
+fi
+
+# Check whether --enable-force-install was given.
+if test "${enable_force_install+set}" = set; then
+ enableval=$enable_force_install; force_install=$enableval
+else
+ force_install=yes
+fi
+
+
+
+# Check whether --enable-kernel was given.
+if test "${enable_kernel+set}" = set; then
+ enableval=$enable_kernel; minimum_kernel=$enableval
+fi
+
+if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
+ # Better nothing than this.
+ minimum_kernel=""
+else
+ if test "$minimum_kernel" = current; then
+ minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
+ fi
+fi
+
+# Check whether --enable-all-warnings was given.
+if test "${enable_all_warnings+set}" = set; then
+ enableval=$enable_all_warnings; all_warnings=$enableval
+fi
+
+
+
+# Check whether --enable-multi-arch was given.
+if test "${enable_multi_arch+set}" = set; then
+ enableval=$enable_multi_arch; multi_arch=$enableval
+else
+ multi_arch=default
+fi
+
+if test x"$multi_arch" != xno; then
+ multi_arch_d=/multiarch
+fi
+
+# Check whether --enable-experimental-malloc was given.
+if test "${enable_experimental_malloc+set}" = set; then
+ enableval=$enable_experimental_malloc; experimental_malloc=$enableval
+fi
+
+
+
+# Check whether --enable-nss-crypt was given.
+if test "${enable_nss_crypt+set}" = set; then
+ enableval=$enable_nss_crypt; nss_crypt=$enableval
+else
+ nss_crypt=no
+fi
+
+if test x$nss_crypt = xyes; then
+ nss_includes=-I$(nss-config --includedir 2>/dev/null)
+ if test $? -ne 0; then
+ { { $as_echo "$as_me:$LINENO: error: cannot find include directory with nss-config" >&5
+$as_echo "$as_me: error: cannot find include directory with nss-config" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ old_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $nss_includes"
+
+cat >conftest.$ac_ext <<_ACEOF
+typedef int PRBool;
+#include <hasht.h>
+#include <nsslowhash.h>
+void f (void) { NSSLOW_Init (); }
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ libc_cv_nss_crypt=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ { { $as_echo "$as_me:$LINENO: error:
+cannot find NSS headers with lowlevel hash function interfaces" >&5
+$as_echo "$as_me: error:
+cannot find NSS headers with lowlevel hash function interfaces" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ old_LIBS="$LIBS"
+ LIBS="$LIBS -lfreebl3"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+typedef int PRBool;
+#include <hasht.h>
+#include <nsslowhash.h>
+int
+main ()
+{
+NSSLOW_Init();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
+ libc_cv_nss_crypt=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ { { $as_echo "$as_me:$LINENO: error:
+cannot link program using lowlevel NSS hash functions" >&5
+$as_echo "$as_me: error:
+cannot link program using lowlevel NSS hash functions" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$old_CFLAGS"
+ LIBS="$old_LIBS"
+else
+ libc_cv_nss_crypt=no
+fi
+
+
+# The way shlib-versions is used to generate soversions.mk uses a
+# fairly simplistic model for name recognition that can't distinguish
+# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
+# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
+# tell. This doesn't get used much beyond that, so it's fairly safe.
+case "$host_os" in
+linux*)
+ ;;
+gnu*)
+ host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
+ ;;
+esac
+
+# We keep the original values in `$config_*' and never modify them, so we
+# can write them unchanged into config.make. Everything else uses
+# $machine, $vendor, and $os, and changes them whenever convenient.
+config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
+
+# Don't allow vendor == "unknown"
+test "$config_vendor" = unknown && config_vendor=
+config_os="`echo $config_os | sed 's/^unknown-//'`"
+
+# Some configurations imply other options.
+case "$host_os" in
+# i586-linuxaout is mangled into i586-pc-linux-gnuaout
+linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
+ ;;
+gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
+ # These systems (almost) always use the ELF format.
+ elf=yes
+ ;;
+aix*)
+ # These systems are always xcoff
+ xcoff=yes
+ elf=no
+ ;;
+esac
+
+# The configure fragment of an add-on port can modify these to supplement
+# or override the table in the case statement below. No fragment should
+# ever change the config_* variables, however.
+machine=$config_machine
+vendor=$config_vendor
+os=$config_os
+base_os=''
+
+# config.guess on some IBM machines says `rs6000' instead of `powerpc'.
+# Unify this here.
+if test "$machine" = rs6000; then
+ machine="powerpc"
+fi
+
+# Braindead PowerPC box with absolutely no FPU.
+case "$machine-$host_os" in
+ powerpc*-*soft)
+ with_fp=no
+ ;;
+esac
+
+submachine=
+
+# Check whether --with-cpu was given.
+if test "${with_cpu+set}" = set; then
+ withval=$with_cpu; case "$withval" in
+ yes|'') { { $as_echo "$as_me:$LINENO: error: --with-cpu requires an argument" >&5
+$as_echo "$as_me: error: --with-cpu requires an argument" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ no) ;;
+ *) submachine="$withval" ;;
+ esac
+
+fi
+
+
+# An add-on can set this when it wants to disable the sanity check below.
+libc_config_ok=no
+
+subdirs="$subdirs "
+
+
+case "$enable_add_ons" in
+''|no) add_ons= ;;
+yes|'*')
+ add_ons=`cd $srcdir && ls -d 2> /dev/null */configure */sysdeps |
+ sed 's@/[^/]*$@@' | sort | uniq`
+ add_ons_automatic=yes
+ ;;
+*) add_ons=`echo "$enable_add_ons" | sed 's/,/ /g'`
+ add_ons_automatic=no ;;
+esac
+
+configured_add_ons=
+add_ons_sfx=
+add_ons_pfx=
+if test x"$add_ons" != x; then
+ for f in $add_ons; do
+ # Some sanity checks
+ case "$f" in
+ crypt)
+ { { $as_echo "$as_me:$LINENO: error:
+*** It seems that you're using an old \`crypt' add-on. crypt is now
+*** part of glibc and using the old add-on will not work with this
+*** release. Start again with fresh sources and without the old
+*** \`crypt' add-on." >&5
+$as_echo "$as_me: error:
+*** It seems that you're using an old \`crypt' add-on. crypt is now
+*** part of glibc and using the old add-on will not work with this
+*** release. Start again with fresh sources and without the old
+*** \`crypt' add-on." >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ localedata)
+ { { $as_echo "$as_me:$LINENO: error:
+*** It seems that you're using an old \`localedata' add-on. localedata
+*** is now part of glibc and using the old add-on will not work with
+*** this release. Start again with fresh sources and without the old
+*** \`localedata' add-on." >&5
+$as_echo "$as_me: error:
+*** It seems that you're using an old \`localedata' add-on. localedata
+*** is now part of glibc and using the old add-on will not work with
+*** this release. Start again with fresh sources and without the old
+*** \`localedata' add-on." >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+ done
+
+ # Now source each add-on's configure fragment.
+ # The fragments can use $srcdir/$libc_add_on to find themselves,
+ # and test $add_ons_automatic to see if they were explicitly requested.
+ # A fragment can clear (or even change) $libc_add_on to affect
+ # whether it goes into the list to be actually used in the build.
+ use_add_ons=
+ for libc_add_on in $add_ons; do
+ # Test whether such a directory really exists.
+ # It can be absolute, or relative to $srcdir, or relative to the build dir.
+ case "$libc_add_on" in
+ /*)
+ libc_add_on_srcdir=$libc_add_on
+ ;;
+ *)
+ test -d "$srcdir/$libc_add_on" || {
+ if test -d "$libc_add_on"; then
+ libc_add_on="`pwd`/$libc_add_on"
+ else
+ { { $as_echo "$as_me:$LINENO: error: add-on directory \"$libc_add_on\" does not exist" >&5
+$as_echo "$as_me: error: add-on directory \"$libc_add_on\" does not exist" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ }
+ libc_add_on_srcdir=$srcdir/$libc_add_on
+ ;;
+ esac
+
+ libc_add_on_frag=$libc_add_on_srcdir/configure
+ libc_add_on_canonical=
+ libc_add_on_config_subdirs=
+ if test -r "$libc_add_on_frag"; then
+ { $as_echo "$as_me:$LINENO: running configure fragment for add-on $libc_add_on" >&5
+$as_echo "$as_me: running configure fragment for add-on $libc_add_on" >&6;}
+ libc_add_on_canonical=unknown
+ libc_add_on_subdirs=
+ . "$libc_add_on_frag"
+ test -z "$libc_add_on" || {
+ configured_add_ons="$configured_add_ons $libc_add_on"
+ if test "x$libc_add_on_canonical" = xunknown; then
+ { { $as_echo "$as_me:$LINENO: error: fragment must set \$libc_add_on_canonical" >&5
+$as_echo "$as_me: error: fragment must set \$libc_add_on_canonical" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ for d in $libc_add_on_subdirs; do
+ case "$libc_add_on" in
+ /*) subdir_srcdir="$libc_add_on" ;;
+ *) subdir_srcdir="\$(..)$libc_add_on" ;;
+ esac
+ case "$d" in
+ .)
+ d="${libc_add_on_canonical:-$libc_add_on}"
+ ;;
+ /*)
+ subdir_srcdir="$d"
+ ;;
+ *)
+ subdir_srcdir="$subdir_srcdir/$d"
+ ;;
+ esac
+ d=`echo "$d" | sed 's@/*$@@;s@^.*/@@'`
+ add_on_subdirs="$add_on_subdirs $d"
+ test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
+$d-srcdir = $subdir_srcdir"
+ done
+ for d in $libc_add_on_config_subdirs; do
+ case "$d" in
+ /*) { { $as_echo "$as_me:$LINENO: error: fragment uses absolute path in \$libc_add_on_config_subdirs" >&5
+$as_echo "$as_me: error: fragment uses absolute path in \$libc_add_on_config_subdirs" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+ if test ! -d "$libc_add_on_srcdir/$d"; then
+ { { $as_echo "$as_me:$LINENO: error: fragment wants to configure missing directory $d" >&5
+$as_echo "$as_me: error: fragment wants to configure missing directory $d" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ case "$libc_add_on" in
+ /*) { { $as_echo "$as_me:$LINENO: error: relative path required for add-on using \$libc_add_on_config_subdirs" >&5
+$as_echo "$as_me: error: relative path required for add-on using \$libc_add_on_config_subdirs" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+ subdirs="$subdirs $libc_add_on/$d"
+ done
+ }
+ fi
+ if test -n "$libc_add_on"; then
+ if frags=`ls -d $libc_add_on_srcdir/sysdeps/*/preconfigure 2> /dev/null`
+ then
+ { $as_echo "$as_me:$LINENO: checking add-on $libc_add_on for preconfigure fragments" >&5
+$as_echo_n "checking add-on $libc_add_on for preconfigure fragments... " >&6; }
+ for frag in $frags; do
+ name=`echo "$frag" | sed 's@/[^/]*$@@;s@^.*/@@'`
+ echo $ECHO_N "$name $ECHO_C" >&6
+ . "$frag"
+ done
+ { $as_echo "$as_me:$LINENO: result: " >&5
+$as_echo "" >&6; }
+ fi
+ use_add_ons="$use_add_ons $libc_add_on"
+ add_ons_pfx="$add_ons_pfx $libc_add_on/"
+ test -z "$libc_add_on_canonical" ||
+ add_ons_sfx="$add_ons_sfx /$libc_add_on_canonical"
+ fi
+ done
+ # Use echo to strip excess whitespace.
+ add_ons="`echo $use_add_ons`"
+fi
+
+
+
+
+###
+### I put this here to prevent those annoying emails from people who cannot
+### read and try to compile glibc on unsupported platforms. --drepper
+###
+### By using the undocumented --enable-hacker-mode option for configure
+### one can skip this test to make the configuration not fail for unsupported
+### platforms.
+###
+if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
+ case "$machine-$host_os" in
+ *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
+ ;;
+ *)
+ echo "*** The GNU C library is currently not available for this platform."
+ echo "*** So far nobody cared to port it and if there is no volunteer it"
+ echo "*** might never happen. So, if you have interest to see glibc on"
+ echo "*** this platform visit"
+ echo "*** http://www.gnu.org/software/libc/porting.html"
+ echo "*** and join the group of porters"
+ exit 1
+ ;;
+ esac
+fi
+
+# Expand the configuration machine name into a subdirectory by architecture
+# type and particular chip. If an add-on configure fragment already set
+# base_machine, we don't change it.
+test -n "$base_machine" || case "$machine" in
+a29k | am29000) base_machine=a29k machine=a29k ;;
+c3[012]) base_machine=cx0 machine=cx0/c30 ;;
+c4[04]) base_machine=cx0 machine=cx0/c40 ;;
+i[34567]86) base_machine=i386 machine=i386/$machine ;;
+ia64) base_machine=ia64 machine=ia64 ;;
+m88???) base_machine=m88k machine=m88k/$machine ;;
+m88k) base_machine=m88k machine=m88k/m88100 ;;
+powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
+powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
+s390) base_machine=s390 machine=s390/s390-32 ;;
+s390x) base_machine=s390 machine=s390/s390-64 ;;
+sh3*) base_machine=sh machine=sh/sh3 ;;
+sh4*) base_machine=sh machine=sh/sh4 ;;
+sparc | sparcv[67])
+ base_machine=sparc machine=sparc/sparc32 ;;
+sparcv8 | supersparc | hypersparc)
+ base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
+sparcv8plus | sparcv8plusa | sparcv9)
+ base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
+sparcv8plusb | sparcv9b)
+ base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9b ;;
+sparcv9v)
+ base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v ;;
+sparcv9v2)
+ base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v2 ;;
+sparc64)
+ base_machine=sparc machine=sparc/sparc64 ;;
+sparc64b)
+ base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
+sparc64v)
+ base_machine=sparc machine=sparc/sparc64/sparcv9v ;;
+sparc64v2)
+ base_machine=sparc machine=sparc/sparc64/sparcv9v2 ;;
+*) base_machine=$machine ;;
+esac
+
+
+if test "$base_machine" = "i386"; then
+ cat >>confdefs.h <<\_ACEOF
+#define USE_REGPARMS 1
+_ACEOF
+
+fi
+
+# Compute the list of sysdep directories for this configuration.
+# This can take a while to compute.
+sysdep_dir=$srcdir/sysdeps
+{ $as_echo "$as_me:$LINENO: checking sysdep dirs" >&5
+$as_echo_n "checking sysdep dirs... " >&6; }
+# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
+os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
+
+test "x$base_os" != x || case "$os" in
+gnu*)
+ base_os=mach/hurd ;;
+netbsd* | 386bsd* | freebsd* | bsdi*)
+ base_os=unix/bsd/bsd4.4 ;;
+osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
+ base_os=unix/bsd ;;
+sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
+ base_os=unix/sysv ;;
+irix6*)
+ base_os=unix/sysv/irix6/$os ;;
+solaris[2-9]*)
+ base_os=unix/sysv/sysv4 ;;
+hpux*)
+ base_os=unix/sysv/hpux/$os ;;
+aix4.3*)
+ base_os=unix/sysv/aix/aix4.3 ;;
+none)
+ base_os=standalone ;;
+esac
+
+# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
+tail=$os
+ostry=$os
+while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
+ ostry="$ostry /$o"
+ tail=$o
+done
+o=`echo $tail | sed 's/[0-9]*$//'`
+if test $o != $tail; then
+ ostry="$ostry /$o"
+fi
+# For linux-gnu, try linux-gnu, then linux.
+o=`echo $tail | sed 's/-.*$//'`
+if test $o != $tail; then
+ ostry="$ostry /$o"
+fi
+
+# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
+base=
+tail=$base_os
+while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
+ set $b
+ base="$base /$1"
+ tail="$2"
+done
+
+# For sparc/sparc32, try sparc/sparc32 and then sparc.
+mach=
+tail=$machine${submachine:+/$submachine}
+while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
+ set $m
+ # Prepend the machine's FPU directory unless --without-fp.
+ if test "$with_fp" = yes; then
+ mach="$mach /$1/fpu"
+ else
+ mach="$mach /$1/nofpu"
+ fi
+ mach="$mach /$1"
+ tail="$2"
+done
+
+
+# Find what sysdep directories exist.
+sysnames_add_ons=
+sysnames=
+for b in $base ''; do
+ for m0 in $mach ''; do
+ for v in /$vendor ''; do
+ test "$v" = / && continue
+ for o in /$ostry ''; do
+ test "$o" = / && continue
+ for m in $multi_arch_d $mach ''; do
+ for d in $add_ons_pfx ''; do
+ for a in $add_ons_sfx ''; do
+ if test -n "$m0$m0sub$b$v$o$m$msub"; then
+ try_srcdir="${srcdir}/"
+ case "$d" in
+ /*) try_srcdir= ;;
+ esac
+ try="${d}sysdeps$m0$m0sub$b$v$o$m$msub$a"
+ test -n "$enable_debug_configure" &&
+ echo "$0 DEBUG: try $try" >&2
+ if test -d "$try_srcdir$try"; then
+ sysnames="$sysnames $try"
+ { test -n "$o" || test -n "$b"; } && os_used=t
+ { test -n "$m" || test -n "$m0"; } && machine_used=t
+ case x${m0:-$m} in
+ x*/$submachine) submachine_used=t ;;
+ esac
+ if test -n "$d"; then
+ case "$sysnames_add_ons" in
+ *" $d "*) ;;
+ *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
+ esac
+ fi
+ fi
+ fi
+ done
+ done
+ done
+ done
+ done
+ done
+done
+
+# If the assembler supports gnu_indirect_function symbol type and the
+# architecture supports multi-arch, we enable multi-arch by default.
+if test "$multi_arch" = default; then
+{ $as_echo "$as_me:$LINENO: checking for assembler gnu_indirect_function symbol type support" >&5
+$as_echo_n "checking for assembler gnu_indirect_function symbol type support... " >&6; }
+if test "${libc_cv_asm_gnu_indirect_function+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.s <<EOF
+.type foo,%gnu_indirect_function
+EOF
+if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5;
+then
+ libc_cv_asm_gnu_indirect_function=yes
+else
+ libc_cv_asm_gnu_indirect_function=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_gnu_indirect_function" >&5
+$as_echo "$libc_cv_asm_gnu_indirect_function" >&6; }
+ multi_arch=no
+ if test "$libc_cv_asm_gnu_indirect_function" = yes; then
+ case $sysnames_add_ons$sysnames in
+ *"$multi_arch_d"*)
+ multi_arch=yes
+ ;;
+ esac
+ fi
+fi
+if test x"$multi_arch" = xyes; then
+ cat >>confdefs.h <<\_ACEOF
+#define USE_MULTIARCH 1
+_ACEOF
+
+fi
+
+
+if test -z "$os_used" && test "$os" != none; then
+ { { $as_echo "$as_me:$LINENO: error: Operating system $os is not supported." >&5
+$as_echo "$as_me: error: Operating system $os is not supported." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "$machine_used" && test "$machine" != none; then
+ { { $as_echo "$as_me:$LINENO: error: The $machine is not supported." >&5
+$as_echo "$as_me: error: The $machine is not supported." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "$submachine_used" && test -n "$submachine"; then
+ { { $as_echo "$as_me:$LINENO: error: The $submachine subspecies of $host_cpu is not supported." >&5
+$as_echo "$as_me: error: The $submachine subspecies of $host_cpu is not supported." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+# We have now validated the configuration.
+
+
+# If using ELF, look for an `elf' subdirectory of each machine directory.
+# We prepend these rather than inserting them whereever the machine appears
+# because things specified by the machine's ELF ABI should override
+# OS-specific things, and should always be the same for any OS on the
+# machine (otherwise what's the point of an ABI?).
+if test "$elf" = yes; then
+ elf_dirs=
+ for d in $add_ons_pfx ''; do
+ for m in $mach; do
+ if test -d $srcdir/${d}sysdeps$m/elf; then
+ elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
+ fi
+ done
+ done
+ sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
+fi
+
+
+# Expand the list of system names into a full list of directories
+# from each element's parent name and Implies file (if present).
+set $sysnames
+names=
+while test $# -gt 0; do
+ name=$1
+ shift
+
+ case " $names " in *" $name "*)
+ # Already in the list.
+ continue
+ esac
+
+ # Report each name as we discover it, so there is no long pause in output.
+ echo $ECHO_N "$name $ECHO_C" >&6
+
+ name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
+
+ case $name in
+ /*) xsrcdir= ;;
+ *) xsrcdir=$srcdir/ ;;
+ esac
+ test -n "$enable_debug_configure" &&
+ echo "DEBUG: name/Implies $xsrcdir$name/Implies" >&2
+
+ if test -f $xsrcdir$name/Implies; then
+ # Collect more names from the `Implies' file (removing comments).
+ implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
+ implied=
+ for x in $implied_candidate; do
+ found=no
+ if test -d $xsrcdir$name_base/$x; then
+ implied="$implied $name_base/$x";
+ found=yes
+ fi
+ for d in $add_ons_pfx ''; do
+ try="${d}sysdeps/$x"
+ case $d in
+ /*) try_srcdir= ;;
+ *) try_srcdir=$srcdir/ ;;
+ esac
+ test -n "$enable_debug_configure" &&
+ echo "DEBUG: $name implied $x try($d) {$try_srcdir}$try" >&2
+ if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
+ then
+ implied="$implied $try"
+ found=yes
+ case "$sysnames_add_ons" in
+ *" $d "*) ;;
+ *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
+ esac
+ fi
+ done
+ if test $found = no; then
+ { $as_echo "$as_me:$LINENO: WARNING: $name/Implies specifies nonexistent $x" >&5
+$as_echo "$as_me: WARNING: $name/Implies specifies nonexistent $x" >&2;}
+ fi
+ done
+ else
+ implied=
+ fi
+
+ # Add NAME to the list of names.
+ names="$names $name"
+
+ # Find the parent of NAME, using the empty string if it has none.
+ parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
+
+ # Add the names implied by NAME, and NAME's parent (if it has one), to
+ # the list of names to be processed (the argument list). We prepend the
+ # implied names to the list and append the parent. We want implied
+ # directories to come before further directories inferred from the
+ # configuration components; this ensures that for sysv4, unix/common
+ # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
+ # after sysv4).
+ sysnames="`echo $implied $* $parent`"
+ test -n "$sysnames" && set $sysnames
+done
+
+# Add the default directories.
+default_sysnames=sysdeps/generic
+if test "$elf" = yes; then
+ default_sysnames="sysdeps/generic/elf $default_sysnames"
+fi
+sysnames="$names $default_sysnames"
+
+# The other names were emitted during the scan.
+{ $as_echo "$as_me:$LINENO: result: $default_sysnames" >&5
+$as_echo "$default_sysnames" >&6; }
+
+# Collect the list of add-ons that supply partial sysdeps trees.
+sysdeps_add_ons=
+for add_on in $add_ons; do
+ case "$add_on" in
+ /*) xsrcdir= ;;
+ *) xsrcdir="$srcdir/" ;;
+ esac
+
+ test -d "$xsrcdir$add_on/sysdeps" || {
+ case "$configured_add_ons " in
+ *" $add_on "*) ;;
+ *|'')
+ { { $as_echo "$as_me:$LINENO: error: add-on $add_on has no configure fragment or sysdeps tree" >&5
+$as_echo "$as_me: error: add-on $add_on has no configure fragment or sysdeps tree" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+ continue
+ }
+
+ sysdeps_add_ons="$sysdeps_add_ons $add_on"
+ case "$sysnames_add_ons" in
+ *" $add_on/ "*) ;;
+ *|'')
+ { $as_echo "$as_me:$LINENO: WARNING: add-on $add_on contributed no sysdeps directories" >&5
+$as_echo "$as_me: WARNING: add-on $add_on contributed no sysdeps directories" >&2;}
+ continue ;;
+ esac
+
+ found=no
+ for d in $sysnames; do
+ case "$d" in
+ $add_on/sysdeps/*) ;;
+ *) continue ;;
+ esac
+ (cd "$xsrcdir$d" && for f in *[!~]; do
+ case "$f" in
+ sys|bits)
+ for ff in $f/*.h; do
+ test -d "$ff" || { test -e "$ff" && exit 88; }
+ done
+ ;;
+ *)
+ test -d "$f" || { test -e "$f" && exit 88; }
+ ;;
+ esac
+ done)
+ if test $? -eq 88; then
+ found=yes
+ break
+ fi
+ done
+ if test $found = no; then
+ { $as_echo "$as_me:$LINENO: WARNING: add-on $add_on contributed no useful sysdeps directories" >&5
+$as_echo "$as_me: WARNING: add-on $add_on contributed no useful sysdeps directories" >&2;}
+ fi
+done
+
+
+
+### Locate tools.
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
+ # The makefiles need to use a different form to find it in $srcdir.
+ INSTALL='\$(..)./scripts/install-sh -c'
+fi
+{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+
# Was a --with-binutils option given?
if test -n "$path_binutils"; then
# Make absolute; ensure a single trailing slash.
@@ -4342,10 +4712,10 @@ if test "x$ac_ranlib" = xranlib; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_RANLIB+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -4358,7 +4728,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4369,11 +4739,11 @@ fi
fi
RANLIB=$ac_cv_prog_RANLIB
if test -n "$RANLIB"; then
- { echo "$as_me:$LINENO: result: $RANLIB" >&5
-echo "${ECHO_T}$RANLIB" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -4382,10 +4752,10 @@ if test -z "$ac_cv_prog_RANLIB"; then
ac_ct_RANLIB=$RANLIB
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_RANLIB"; then
ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
@@ -4398,7 +4768,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4409,11 +4779,11 @@ fi
fi
ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
if test -n "$ac_ct_RANLIB"; then
- { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
if test "x$ac_ct_RANLIB" = x; then
@@ -4421,12 +4791,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
RANLIB=$ac_ct_RANLIB
@@ -4441,10 +4807,10 @@ fi
# Determine whether we are using GNU binutils.
-{ echo "$as_me:$LINENO: checking whether $AS is GNU as" >&5
-echo $ECHO_N "checking whether $AS is GNU as... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether $AS is GNU as" >&5
+$as_echo_n "checking whether $AS is GNU as... " >&6; }
if test "${libc_cv_prog_as_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
# Most GNU programs take a -v and spit out some text including
# the word 'GNU'. Some try to read stdin, so give them /dev/null.
@@ -4455,15 +4821,15 @@ else
fi
rm -fr contest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_prog_as_gnu" >&5
-echo "${ECHO_T}$libc_cv_prog_as_gnu" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_prog_as_gnu" >&5
+$as_echo "$libc_cv_prog_as_gnu" >&6; }
rm -f a.out
gnu_as=$libc_cv_prog_as_gnu
-{ echo "$as_me:$LINENO: checking whether $LD is GNU ld" >&5
-echo $ECHO_N "checking whether $LD is GNU ld... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether $LD is GNU ld" >&5
+$as_echo_n "checking whether $LD is GNU ld... " >&6; }
if test "${libc_cv_prog_ld_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
# Most GNU programs take a -v and spit out some text including
# the word 'GNU'. Some try to read stdin, so give them /dev/null.
@@ -4474,8 +4840,8 @@ else
fi
rm -fr contest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_prog_ld_gnu" >&5
-echo "${ECHO_T}$libc_cv_prog_ld_gnu" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_prog_ld_gnu" >&5
+$as_echo "$libc_cv_prog_ld_gnu" >&6; }
gnu_ld=$libc_cv_prog_ld_gnu
@@ -4484,10 +4850,10 @@ for ac_prog in $AS
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_AS+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$AS"; then
ac_cv_prog_AS="$AS" # Let the user override the test.
@@ -4500,7 +4866,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_AS="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4511,11 +4877,11 @@ fi
fi
AS=$ac_cv_prog_AS
if test -n "$AS"; then
- { echo "$as_me:$LINENO: result: $AS" >&5
-echo "${ECHO_T}$AS" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $AS" >&5
+$as_echo "$AS" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -4526,18 +4892,18 @@ if test -z "$AS"; then
ac_verc_fail=yes
else
# Found it, now check the version.
- { echo "$as_me:$LINENO: checking version of $AS" >&5
-echo $ECHO_N "checking version of $AS... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking version of $AS" >&5
+$as_echo_n "checking version of $AS... " >&6; }
ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 2.1[3-9]*)
+ 2.1[3-9]*|2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
esac
- { echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-echo "${ECHO_T}$ac_prog_version" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
fi
if test $ac_verc_fail = yes; then
AS=: critic_missing="$critic_missing as"
@@ -4547,10 +4913,10 @@ for ac_prog in $LD
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_LD+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$LD"; then
ac_cv_prog_LD="$LD" # Let the user override the test.
@@ -4563,7 +4929,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_LD="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4574,11 +4940,11 @@ fi
fi
LD=$ac_cv_prog_LD
if test -n "$LD"; then
- { echo "$as_me:$LINENO: result: $LD" >&5
-echo "${ECHO_T}$LD" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $LD" >&5
+$as_echo "$LD" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -4589,18 +4955,18 @@ if test -z "$LD"; then
ac_verc_fail=yes
else
# Found it, now check the version.
- { echo "$as_me:$LINENO: checking version of $LD" >&5
-echo $ECHO_N "checking version of $LD... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking version of $LD" >&5
+$as_echo_n "checking version of $LD... " >&6; }
ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 2.1[3-9]*)
+ 2.1[3-9]*|2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
esac
- { echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-echo "${ECHO_T}$ac_prog_version" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
fi
if test $ac_verc_fail = yes; then
LD=: critic_missing="$critic_missing ld"
@@ -4614,10 +4980,10 @@ fi
# that.
# Extract the first word of "pwd", so it can be a program name with args.
set dummy pwd; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_path_PWD_P+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
case $PWD_P in
[\\/]* | ?:[\\/]*)
@@ -4632,7 +4998,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4645,17 +5011,17 @@ esac
fi
PWD_P=$ac_cv_path_PWD_P
if test -n "$PWD_P"; then
- { echo "$as_me:$LINENO: result: $PWD_P" >&5
-echo "${ECHO_T}$PWD_P" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $PWD_P" >&5
+$as_echo "$PWD_P" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
if test "$PWD_P" = no; then
- { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5
-echo "$as_me: error: *** A pwd binary could not be found." >&2;}
+ { { $as_echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5
+$as_echo "$as_me: error: *** A pwd binary could not be found." >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -4665,10 +5031,10 @@ for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -4681,7 +5047,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4692,11 +5058,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -4707,8 +5073,8 @@ if test -z "$CC"; then
ac_verc_fail=yes
else
# Found it, now check the version.
- { echo "$as_me:$LINENO: checking version of $CC" >&5
-echo $ECHO_N "checking version of $CC... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking version of $CC" >&5
+$as_echo_n "checking version of $CC... " >&6; }
ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -4717,8 +5083,8 @@ echo $ECHO_N "checking version of $CC... $ECHO_C" >&6; }
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
esac
- { echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-echo "${ECHO_T}$ac_prog_version" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
fi
if test $ac_verc_fail = yes; then
critic_missing="$critic_missing gcc"
@@ -4728,10 +5094,10 @@ for ac_prog in gnumake gmake make
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_MAKE+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$MAKE"; then
ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
@@ -4744,7 +5110,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_MAKE="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4755,11 +5121,11 @@ fi
fi
MAKE=$ac_cv_prog_MAKE
if test -n "$MAKE"; then
- { echo "$as_me:$LINENO: result: $MAKE" >&5
-echo "${ECHO_T}$MAKE" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $MAKE" >&5
+$as_echo "$MAKE" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -4770,8 +5136,8 @@ if test -z "$MAKE"; then
ac_verc_fail=yes
else
# Found it, now check the version.
- { echo "$as_me:$LINENO: checking version of $MAKE" >&5
-echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking version of $MAKE" >&5
+$as_echo_n "checking version of $MAKE... " >&6; }
ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -4780,8 +5146,8 @@ echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6; }
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
esac
- { echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-echo "${ECHO_T}$ac_prog_version" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
fi
if test $ac_verc_fail = yes; then
critic_missing="$critic_missing make"
@@ -4792,10 +5158,10 @@ for ac_prog in gnumsgfmt gmsgfmt msgfmt
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_MSGFMT+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$MSGFMT"; then
ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
@@ -4808,7 +5174,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_MSGFMT="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4819,11 +5185,11 @@ fi
fi
MSGFMT=$ac_cv_prog_MSGFMT
if test -n "$MSGFMT"; then
- { echo "$as_me:$LINENO: result: $MSGFMT" >&5
-echo "${ECHO_T}$MSGFMT" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -4834,8 +5200,8 @@ if test -z "$MSGFMT"; then
ac_verc_fail=yes
else
# Found it, now check the version.
- { echo "$as_me:$LINENO: checking version of $MSGFMT" >&5
-echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking version of $MSGFMT" >&5
+$as_echo_n "checking version of $MSGFMT... " >&6; }
ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -4844,8 +5210,8 @@ echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6; }
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
esac
- { echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-echo "${ECHO_T}$ac_prog_version" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
fi
if test $ac_verc_fail = yes; then
MSGFMT=: aux_missing="$aux_missing msgfmt"
@@ -4855,10 +5221,10 @@ for ac_prog in makeinfo
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_MAKEINFO+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$MAKEINFO"; then
ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
@@ -4871,7 +5237,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_MAKEINFO="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4882,11 +5248,11 @@ fi
fi
MAKEINFO=$ac_cv_prog_MAKEINFO
if test -n "$MAKEINFO"; then
- { echo "$as_me:$LINENO: result: $MAKEINFO" >&5
-echo "${ECHO_T}$MAKEINFO" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $MAKEINFO" >&5
+$as_echo "$MAKEINFO" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -4897,8 +5263,8 @@ if test -z "$MAKEINFO"; then
ac_verc_fail=yes
else
# Found it, now check the version.
- { echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5
-echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5
+$as_echo_n "checking version of $MAKEINFO... " >&6; }
ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -4907,8 +5273,8 @@ echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6; }
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
esac
- { echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-echo "${ECHO_T}$ac_prog_version" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
fi
if test $ac_verc_fail = yes; then
MAKEINFO=: aux_missing="$aux_missing makeinfo"
@@ -4918,10 +5284,10 @@ for ac_prog in sed
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_SED+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$SED"; then
ac_cv_prog_SED="$SED" # Let the user override the test.
@@ -4934,7 +5300,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_SED="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4945,11 +5311,11 @@ fi
fi
SED=$ac_cv_prog_SED
if test -n "$SED"; then
- { echo "$as_me:$LINENO: result: $SED" >&5
-echo "${ECHO_T}$SED" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $SED" >&5
+$as_echo "$SED" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -4960,8 +5326,8 @@ if test -z "$SED"; then
ac_verc_fail=yes
else
# Found it, now check the version.
- { echo "$as_me:$LINENO: checking version of $SED" >&5
-echo $ECHO_N "checking version of $SED... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking version of $SED" >&5
+$as_echo_n "checking version of $SED... " >&6; }
ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -4970,8 +5336,8 @@ echo $ECHO_N "checking version of $SED... $ECHO_C" >&6; }
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
esac
- { echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-echo "${ECHO_T}$ac_prog_version" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
fi
if test $ac_verc_fail = yes; then
SED=: aux_missing="$aux_missing sed"
@@ -4982,10 +5348,10 @@ for ac_prog in autoconf
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_AUTOCONF+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$AUTOCONF"; then
ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test.
@@ -4998,7 +5364,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_AUTOCONF="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5009,11 +5375,11 @@ fi
fi
AUTOCONF=$ac_cv_prog_AUTOCONF
if test -n "$AUTOCONF"; then
- { echo "$as_me:$LINENO: result: $AUTOCONF" >&5
-echo "${ECHO_T}$AUTOCONF" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $AUTOCONF" >&5
+$as_echo "$AUTOCONF" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -5024,10 +5390,10 @@ test -n "$AUTOCONF" || AUTOCONF="no"
case "x$AUTOCONF" in
xno|x|x:) AUTOCONF=no ;;
*)
- { echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5
-echo $ECHO_N "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5
+$as_echo_n "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... " >&6; }
if test "${libc_cv_autoconf_works+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
libc_cv_autoconf_works=yes
@@ -5035,8 +5401,8 @@ else
libc_cv_autoconf_works=no
fi
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5
-echo "${ECHO_T}$libc_cv_autoconf_works" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5
+$as_echo "$libc_cv_autoconf_works" >&6; }
test $libc_cv_autoconf_works = yes || AUTOCONF=no
;;
esac
@@ -5045,19 +5411,19 @@ if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then
aux_missing="$aux_missing autoconf"
fi
-test -n "$critic_missing" && { { echo "$as_me:$LINENO: error:
+test -n "$critic_missing" && { { $as_echo "$as_me:$LINENO: error:
*** These critical programs are missing or too old:$critic_missing
*** Check the INSTALL file for required versions." >&5
-echo "$as_me: error:
+$as_echo "$as_me: error:
*** These critical programs are missing or too old:$critic_missing
*** Check the INSTALL file for required versions." >&2;}
{ (exit 1); exit 1; }; }
-test -n "$aux_missing" && { echo "$as_me:$LINENO: WARNING:
+test -n "$aux_missing" && { $as_echo "$as_me:$LINENO: WARNING:
*** These auxiliary programs are missing or incompatible versions:$aux_missing
*** some features will be disabled.
*** Check the INSTALL file for required versions." >&5
-echo "$as_me: WARNING:
+$as_echo "$as_me: WARNING:
*** These auxiliary programs are missing or incompatible versions:$aux_missing
*** some features will be disabled.
*** Check the INSTALL file for required versions." >&2;}
@@ -5085,10 +5451,10 @@ fi
# check if ranlib is necessary
-{ echo "$as_me:$LINENO: checking whether ranlib is necessary" >&5
-echo $ECHO_N "checking whether ranlib is necessary... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether ranlib is necessary" >&5
+$as_echo_n "checking whether ranlib is necessary... " >&6; }
if test "${libc_cv_ranlib_necessary+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int a;
@@ -5106,8 +5472,8 @@ else
fi
rm -rf conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_ranlib_necessary" >&5
-echo "${ECHO_T}$libc_cv_ranlib_necessary" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_ranlib_necessary" >&5
+$as_echo "$libc_cv_ranlib_necessary" >&6; }
if test "$libc_cv_ranlib_necessary" = no; then
RANLIB=:
fi
@@ -5119,8 +5485,8 @@ fi
# - one of the terminals (":" and ";") is the first or last sign
# - two terminals occur directly after each other
# - the path contains an element with a dot in it
-{ echo "$as_me:$LINENO: checking LD_LIBRARY_PATH variable" >&5
-echo $ECHO_N "checking LD_LIBRARY_PATH variable... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking LD_LIBRARY_PATH variable" >&5
+$as_echo_n "checking LD_LIBRARY_PATH variable... " >&6; }
case ${LD_LIBRARY_PATH} in
[:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
ld_library_path_setting="contains current directory"
@@ -5129,24 +5495,24 @@ case ${LD_LIBRARY_PATH} in
ld_library_path_setting="ok"
;;
esac
-{ echo "$as_me:$LINENO: result: $ld_library_path_setting" >&5
-echo "${ECHO_T}$ld_library_path_setting" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ld_library_path_setting" >&5
+$as_echo "$ld_library_path_setting" >&6; }
if test "$ld_library_path_setting" != "ok"; then
-{ { echo "$as_me:$LINENO: error:
+{ { $as_echo "$as_me:$LINENO: error:
*** LD_LIBRARY_PATH shouldn't contain the current directory when
*** building glibc. Please change the environment variable
*** and run configure again." >&5
-echo "$as_me: error:
+$as_echo "$as_me: error:
*** LD_LIBRARY_PATH shouldn't contain the current directory when
*** building glibc. Please change the environment variable
*** and run configure again." >&2;}
{ (exit 1); exit 1; }; }
fi
-{ echo "$as_me:$LINENO: checking whether GCC supports -static-libgcc" >&5
-echo $ECHO_N "checking whether GCC supports -static-libgcc... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether GCC supports -static-libgcc" >&5
+$as_echo_n "checking whether GCC supports -static-libgcc... " >&6; }
if test "${libc_cv_gcc_static_libgcc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
libc_cv_gcc_static_libgcc=
@@ -5154,16 +5520,16 @@ else
libc_cv_gcc_static_libgcc=-static-libgcc
fi
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_gcc_static_libgcc" >&5
-echo "${ECHO_T}$libc_cv_gcc_static_libgcc" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_gcc_static_libgcc" >&5
+$as_echo "$libc_cv_gcc_static_libgcc" >&6; }
# Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_path_BASH_SHELL+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
case $BASH_SHELL in
[\\/]* | ?:[\\/]*)
@@ -5178,7 +5544,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_BASH_SHELL="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5191,11 +5557,11 @@ esac
fi
BASH_SHELL=$ac_cv_path_BASH_SHELL
if test -n "$BASH_SHELL"; then
- { echo "$as_me:$LINENO: result: $BASH_SHELL" >&5
-echo "${ECHO_T}$BASH_SHELL" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $BASH_SHELL" >&5
+$as_echo "$BASH_SHELL" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -5211,10 +5577,10 @@ fi
if test "$BASH_SHELL" = no; then
# Extract the first word of "ksh", so it can be a program name with args.
set dummy ksh; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_path_KSH+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
case $KSH in
[\\/]* | ?:[\\/]*)
@@ -5229,7 +5595,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_KSH="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5242,11 +5608,11 @@ esac
fi
KSH=$ac_cv_path_KSH
if test -n "$KSH"; then
- { echo "$as_me:$LINENO: result: $KSH" >&5
-echo "${ECHO_T}$KSH" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $KSH" >&5
+$as_echo "$KSH" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -5266,10 +5632,10 @@ for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_AWK+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$AWK"; then
ac_cv_prog_AWK="$AWK" # Let the user override the test.
@@ -5282,7 +5648,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_AWK="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5293,11 +5659,11 @@ fi
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
- { echo "$as_me:$LINENO: result: $AWK" >&5
-echo "${ECHO_T}$AWK" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -5306,10 +5672,10 @@ done
# Extract the first word of "perl", so it can be a program name with args.
set dummy perl; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_path_PERL+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
case $PERL in
[\\/]* | ?:[\\/]*)
@@ -5324,7 +5690,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5337,11 +5703,11 @@ esac
fi
PERL=$ac_cv_path_PERL
if test -n "$PERL"; then
- { echo "$as_me:$LINENO: result: $PERL" >&5
-echo "${ECHO_T}$PERL" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
@@ -5351,10 +5717,10 @@ if test "$PERL" != no &&
fi
# Extract the first word of "install-info", so it can be a program name with args.
set dummy install-info; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_path_INSTALL_INFO+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
case $INSTALL_INFO in
[\\/]* | ?:[\\/]*)
@@ -5370,7 +5736,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_INSTALL_INFO="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5383,20 +5749,20 @@ esac
fi
INSTALL_INFO=$ac_cv_path_INSTALL_INFO
if test -n "$INSTALL_INFO"; then
- { echo "$as_me:$LINENO: result: $INSTALL_INFO" >&5
-echo "${ECHO_T}$INSTALL_INFO" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $INSTALL_INFO" >&5
+$as_echo "$INSTALL_INFO" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
# Extract the first word of "bison", so it can be a program name with args.
set dummy bison; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_path_BISON+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
case $BISON in
[\\/]* | ?:[\\/]*)
@@ -5412,7 +5778,7 @@ do
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_BISON="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5425,19 +5791,19 @@ esac
fi
BISON=$ac_cv_path_BISON
if test -n "$BISON"; then
- { echo "$as_me:$LINENO: result: $BISON" >&5
-echo "${ECHO_T}$BISON" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $BISON" >&5
+$as_echo "$BISON" >&6; }
else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
-{ echo "$as_me:$LINENO: checking for signed size_t type" >&5
-echo $ECHO_N "checking for signed size_t type... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for signed size_t type" >&5
+$as_echo_n "checking for signed size_t type... " >&6; }
if test "${libc_cv_signed_size_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
echo '#include <stddef.h>
FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
@@ -5449,8 +5815,8 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_signed_size_t" >&5
-echo "${ECHO_T}$libc_cv_signed_size_t" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_signed_size_t" >&5
+$as_echo "$libc_cv_signed_size_t" >&6; }
if test $libc_cv_signed_size_t = yes; then
cat >> confdefs.h <<\EOF
#undef __SIZE_TYPE__
@@ -5458,11 +5824,10 @@ if test $libc_cv_signed_size_t = yes; then
EOF
fi
-
-{ echo "$as_me:$LINENO: checking for libc-friendly stddef.h" >&5
-echo $ECHO_N "checking for libc-friendly stddef.h... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for libc-friendly stddef.h" >&5
+$as_echo_n "checking for libc-friendly stddef.h... " >&6; }
if test "${libc_cv_friendly_stddef+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -5493,20 +5858,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
libc_cv_friendly_stddef=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
libc_cv_friendly_stddef=no
@@ -5514,17 +5880,17 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_friendly_stddef" >&5
-echo "${ECHO_T}$libc_cv_friendly_stddef" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_friendly_stddef" >&5
+$as_echo "$libc_cv_friendly_stddef" >&6; }
if test $libc_cv_friendly_stddef = yes; then
config_vars="$config_vars
override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
fi
-{ echo "$as_me:$LINENO: checking whether we need to use -P to assemble .S files" >&5
-echo $ECHO_N "checking whether we need to use -P to assemble .S files... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether we need to use -P to assemble .S files" >&5
+$as_echo_n "checking whether we need to use -P to assemble .S files... " >&6; }
if test "${libc_cv_need_minus_P+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.S <<EOF
#include "confdefs.h"
@@ -5534,7 +5900,7 @@ if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_need_minus_P=no
else
@@ -5542,17 +5908,17 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_need_minus_P" >&5
-echo "${ECHO_T}$libc_cv_need_minus_P" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_need_minus_P" >&5
+$as_echo "$libc_cv_need_minus_P" >&6; }
if test $libc_cv_need_minus_P = yes; then
config_vars="$config_vars
asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
fi
-{ echo "$as_me:$LINENO: checking whether .text pseudo-op must be used" >&5
-echo $ECHO_N "checking whether .text pseudo-op must be used... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether .text pseudo-op must be used" >&5
+$as_echo_n "checking whether .text pseudo-op must be used... " >&6; }
if test "${libc_cv_dot_text+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<EOF
.text
@@ -5562,7 +5928,7 @@ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_dot_text=.text
fi
@@ -5570,17 +5936,17 @@ rm -f conftest*
fi
if test -z "$libc_cv_dot_text"; then
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
else
- { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
fi
-{ echo "$as_me:$LINENO: checking for assembler global-symbol directive" >&5
-echo $ECHO_N "checking for assembler global-symbol directive... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for assembler global-symbol directive" >&5
+$as_echo_n "checking for assembler global-symbol directive... " >&6; }
if test "${libc_cv_asm_global_directive+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
libc_cv_asm_global_directive=UNKNOWN
for ac_globl in .globl .global .EXPORT; do
@@ -5593,7 +5959,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_asm_global_directive=${ac_globl}
fi
@@ -5601,11 +5967,11 @@ EOF
test $libc_cv_asm_global_directive != UNKNOWN && break
done
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_asm_global_directive" >&5
-echo "${ECHO_T}$libc_cv_asm_global_directive" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_global_directive" >&5
+$as_echo "$libc_cv_asm_global_directive" >&6; }
if test $libc_cv_asm_global_directive = UNKNOWN; then
- { { echo "$as_me:$LINENO: error: cannot determine asm global directive" >&5
-echo "$as_me: error: cannot determine asm global directive" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: cannot determine asm global directive" >&5
+$as_echo "$as_me: error: cannot determine asm global directive" >&2;}
{ (exit 1); exit 1; }; }
else
cat >>confdefs.h <<_ACEOF
@@ -5614,10 +5980,10 @@ _ACEOF
fi
-{ echo "$as_me:$LINENO: checking for .set assembler directive" >&5
-echo $ECHO_N "checking for .set assembler directive... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for .set assembler directive" >&5
+$as_echo_n "checking for .set assembler directive... " >&6; }
if test "${libc_cv_asm_set_directive+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<EOF
${libc_cv_dot_text}
@@ -5640,8 +6006,8 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_asm_set_directive" >&5
-echo "${ECHO_T}$libc_cv_asm_set_directive" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_set_directive" >&5
+$as_echo "$libc_cv_asm_set_directive" >&6; }
if test $libc_cv_asm_set_directive = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_ASM_SET_DIRECTIVE 1
@@ -5649,10 +6015,10 @@ _ACEOF
fi
-{ echo "$as_me:$LINENO: checking for assembler .type directive prefix" >&5
-echo $ECHO_N "checking for assembler .type directive prefix... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for assembler .type directive prefix" >&5
+$as_echo_n "checking for assembler .type directive prefix... " >&6; }
if test "${libc_cv_asm_type_prefix+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
libc_cv_asm_type_prefix=no
for ac_try_prefix in '@' '%' '#'; do
@@ -5668,7 +6034,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_asm_type_prefix=${ac_try_prefix}
fi
@@ -5676,8 +6042,8 @@ EOF
test "x$libc_cv_asm_type_prefix" != xno && break
done
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_asm_type_prefix" >&5
-echo "${ECHO_T}$libc_cv_asm_type_prefix" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_type_prefix" >&5
+$as_echo "$libc_cv_asm_type_prefix" >&6; }
if test "x$libc_cv_asm_type_prefix" != xno; then
cat >>confdefs.h <<_ACEOF
#define ASM_TYPE_DIRECTIVE_PREFIX ${libc_cv_asm_type_prefix}
@@ -5685,10 +6051,67 @@ _ACEOF
fi
-{ echo "$as_me:$LINENO: checking for .symver assembler directive" >&5
-echo $ECHO_N "checking for .symver assembler directive... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for assembler gnu_unique_object symbol type" >&5
+$as_echo_n "checking for assembler gnu_unique_object symbol type... " >&6; }
+if test "${libc_cv_asm_unique_object+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.s <<EOF
+${libc_cv_dot_text}
+_sym:
+.type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
+EOF
+if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5; then
+ libc_cv_asm_unique_object=yes
+else
+ libc_cv_asm_unique_object=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_unique_object" >&5
+$as_echo "$libc_cv_asm_unique_object" >&6; }
+if test $libc_cv_asm_unique_object = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_ASM_UNIQUE_OBJECT 1
+_ACEOF
+
+fi
+
+# For the multi-arch option we need support in the assembler.
+if test "$multi_arch" = yes; then
+ if test "x$libc_cv_asm_type_prefix" != xno; then
+{ $as_echo "$as_me:$LINENO: checking for assembler gnu_indirect_function symbol type support" >&5
+$as_echo_n "checking for assembler gnu_indirect_function symbol type support... " >&6; }
+if test "${libc_cv_asm_gnu_indirect_function+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.s <<EOF
+.type foo,%gnu_indirect_function
+EOF
+if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5;
+then
+ libc_cv_asm_gnu_indirect_function=yes
+else
+ libc_cv_asm_gnu_indirect_function=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_gnu_indirect_function" >&5
+$as_echo "$libc_cv_asm_gnu_indirect_function" >&6; }
+ else
+ libc_cv_asm_gnu_indirect_function=no
+ fi
+ if test x"$libc_cv_asm_gnu_indirect_function" != xyes; then
+ { { $as_echo "$as_me:$LINENO: error: --enable-multi-arch support requires assembler and linker support" >&5
+$as_echo "$as_me: error: --enable-multi-arch support requires assembler and linker support" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for .symver assembler directive" >&5
+$as_echo_n "checking for .symver assembler directive... " >&6; }
if test "${libc_cv_asm_symver_directive+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<EOF
${libc_cv_dot_text}
@@ -5702,12 +6125,12 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_asm_symver_directive" >&5
-echo "${ECHO_T}$libc_cv_asm_symver_directive" >&6; }
-{ echo "$as_me:$LINENO: checking for ld --version-script" >&5
-echo $ECHO_N "checking for ld --version-script... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_symver_directive" >&5
+$as_echo "$libc_cv_asm_symver_directive" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for ld --version-script" >&5
+$as_echo_n "checking for ld --version-script... " >&6; }
if test "${libc_cv_ld_version_script_option+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test $libc_cv_asm_symver_directive = yes; then
cat > conftest.s <<EOF
@@ -5733,7 +6156,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; };
then
libc_cv_ld_version_script_option=yes
@@ -5748,8 +6171,8 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_ld_version_script_option" >&5
-echo "${ECHO_T}$libc_cv_ld_version_script_option" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_ld_version_script_option" >&5
+$as_echo "$libc_cv_ld_version_script_option" >&6; }
if test $shared != no &&
test $libc_cv_asm_symver_directive = yes &&
test $libc_cv_ld_version_script_option = yes &&
@@ -5772,10 +6195,10 @@ if test $elf = yes && test $shared != no && test $VERSIONING = no; then
*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
fi
if test $elf = yes; then
- { echo "$as_me:$LINENO: checking for .previous assembler directive" >&5
-echo $ECHO_N "checking for .previous assembler directive... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for .previous assembler directive" >&5
+$as_echo_n "checking for .previous assembler directive... " >&6; }
if test "${libc_cv_asm_previous_directive+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<EOF
.section foo_section
@@ -5785,7 +6208,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_asm_previous_directive=yes
else
@@ -5793,18 +6216,18 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_asm_previous_directive" >&5
-echo "${ECHO_T}$libc_cv_asm_previous_directive" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_previous_directive" >&5
+$as_echo "$libc_cv_asm_previous_directive" >&6; }
if test $libc_cv_asm_previous_directive = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_ASM_PREVIOUS_DIRECTIVE 1
_ACEOF
else
- { echo "$as_me:$LINENO: checking for .popsection assembler directive" >&5
-echo $ECHO_N "checking for .popsection assembler directive... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for .popsection assembler directive" >&5
+$as_echo_n "checking for .popsection assembler directive... " >&6; }
if test "${libc_cv_asm_popsection_directive+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<EOF
.pushsection foo_section
@@ -5814,7 +6237,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_asm_popsection_directive=yes
else
@@ -5822,8 +6245,8 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_asm_popsection_directive" >&5
-echo "${ECHO_T}$libc_cv_asm_popsection_directive" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_popsection_directive" >&5
+$as_echo "$libc_cv_asm_popsection_directive" >&6; }
if test $libc_cv_asm_popsection_directive = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_ASM_POPSECTION_DIRECTIVE 1
@@ -5831,10 +6254,10 @@ _ACEOF
fi
fi
- { echo "$as_me:$LINENO: checking for .protected and .hidden assembler directive" >&5
-echo $ECHO_N "checking for .protected and .hidden assembler directive... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for .protected and .hidden assembler directive" >&5
+$as_echo_n "checking for .protected and .hidden assembler directive... " >&6; }
if test "${libc_cv_asm_protected_directive+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<EOF
.protected foo
@@ -5846,24 +6269,24 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_asm_protected_directive=yes
else
- { { echo "$as_me:$LINENO: error: assembler support for symbol visibility is required" >&5
-echo "$as_me: error: assembler support for symbol visibility is required" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: assembler support for symbol visibility is required" >&5
+$as_echo "$as_me: error: assembler support for symbol visibility is required" >&2;}
{ (exit 1); exit 1; }; }
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_asm_protected_directive" >&5
-echo "${ECHO_T}$libc_cv_asm_protected_directive" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_protected_directive" >&5
+$as_echo "$libc_cv_asm_protected_directive" >&6; }
if test $libc_cv_asm_protected_directive = yes; then
- { echo "$as_me:$LINENO: checking whether __attribute__((visibility())) is supported" >&5
-echo $ECHO_N "checking whether __attribute__((visibility())) is supported... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking whether __attribute__((visibility())) is supported" >&5
+$as_echo_n "checking whether __attribute__((visibility())) is supported... " >&6; }
if test "${libc_cv_visibility_attribute+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int foo __attribute__ ((visibility ("hidden"))) = 1;
@@ -5874,7 +6297,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
if grep '\.hidden.*foo' conftest.s >/dev/null; then
if grep '\.protected.*bar' conftest.s >/dev/null; then
@@ -5885,20 +6308,20 @@ EOF
rm -f conftest.cs
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_visibility_attribute" >&5
-echo "${ECHO_T}$libc_cv_visibility_attribute" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_visibility_attribute" >&5
+$as_echo "$libc_cv_visibility_attribute" >&6; }
if test $libc_cv_visibility_attribute != yes; then
- { { echo "$as_me:$LINENO: error: compiler support for visibility attribute is required" >&5
-echo "$as_me: error: compiler support for visibility attribute is required" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: compiler support for visibility attribute is required" >&5
+$as_echo "$as_me: error: compiler support for visibility attribute is required" >&2;}
{ (exit 1); exit 1; }; }
fi
fi
if test $libc_cv_visibility_attribute = yes; then
- { echo "$as_me:$LINENO: checking for broken __attribute__((visibility()))" >&5
-echo $ECHO_N "checking for broken __attribute__((visibility()))... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for broken __attribute__((visibility()))" >&5
+$as_echo_n "checking for broken __attribute__((visibility()))... " >&6; }
if test "${libc_cv_broken_visibility_attribute+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int foo (int x);
@@ -5910,7 +6333,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
libc_cv_broken_visibility_attribute=no
@@ -5919,19 +6342,19 @@ EOF
rm -f conftest.c conftest.s
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_broken_visibility_attribute" >&5
-echo "${ECHO_T}$libc_cv_broken_visibility_attribute" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_broken_visibility_attribute" >&5
+$as_echo "$libc_cv_broken_visibility_attribute" >&6; }
if test $libc_cv_broken_visibility_attribute = yes; then
- { { echo "$as_me:$LINENO: error: working compiler support for visibility attribute is required" >&5
-echo "$as_me: error: working compiler support for visibility attribute is required" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: working compiler support for visibility attribute is required" >&5
+$as_echo "$as_me: error: working compiler support for visibility attribute is required" >&2;}
{ (exit 1); exit 1; }; }
fi
fi
- { echo "$as_me:$LINENO: checking for broken __attribute__((alias()))" >&5
-echo $ECHO_N "checking for broken __attribute__((alias()))... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for broken __attribute__((alias()))" >&5
+$as_echo_n "checking for broken __attribute__((alias()))... " >&6; }
if test "${libc_cv_broken_alias_attribute+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
extern int foo (int x) __asm ("xyzzy");
@@ -5946,7 +6369,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
if grep 'xyzzy' conftest.s >/dev/null &&
grep 'abccb' conftest.s >/dev/null; then
@@ -5956,19 +6379,19 @@ EOF
rm -f conftest.c conftest.s
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_broken_alias_attribute" >&5
-echo "${ECHO_T}$libc_cv_broken_alias_attribute" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_broken_alias_attribute" >&5
+$as_echo "$libc_cv_broken_alias_attribute" >&6; }
if test $libc_cv_broken_alias_attribute = yes; then
- { { echo "$as_me:$LINENO: error: working alias attribute support required" >&5
-echo "$as_me: error: working alias attribute support required" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: working alias attribute support required" >&5
+$as_echo "$as_me: error: working alias attribute support required" >&2;}
{ (exit 1); exit 1; }; }
fi
if test $libc_cv_visibility_attribute = yes; then
- { echo "$as_me:$LINENO: checking whether to put _rtld_local into .sdata section" >&5
-echo $ECHO_N "checking whether to put _rtld_local into .sdata section... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking whether to put _rtld_local into .sdata section" >&5
+$as_echo_n "checking whether to put _rtld_local into .sdata section... " >&6; }
if test "${libc_cv_have_sdata_section+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
echo "int i;" > conftest.c
libc_cv_have_sdata_section=no
@@ -5979,8 +6402,8 @@ else
rm -f conftest.c conftest.so
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_have_sdata_section" >&5
-echo "${ECHO_T}$libc_cv_have_sdata_section" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_have_sdata_section" >&5
+$as_echo "$libc_cv_have_sdata_section" >&6; }
if test $libc_cv_have_sdata_section = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_SDATA_SECTION 1
@@ -5989,10 +6412,10 @@ _ACEOF
fi
fi
- { echo "$as_me:$LINENO: checking for .preinit_array/.init_array/.fini_array support" >&5
-echo $ECHO_N "checking for .preinit_array/.init_array/.fini_array support... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for .preinit_array/.init_array/.fini_array support" >&5
+$as_echo_n "checking for .preinit_array/.init_array/.fini_array support... " >&6; }
if test "${libc_cv_initfini_array+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int _start (void) { return 0; }
@@ -6005,7 +6428,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
@@ -6018,18 +6441,18 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_initfini_array" >&5
-echo "${ECHO_T}$libc_cv_initfini_array" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_initfini_array" >&5
+$as_echo "$libc_cv_initfini_array" >&6; }
if test $libc_cv_initfini_array != yes; then
- { { echo "$as_me:$LINENO: error: Need linker with .init_array/.fini_array support." >&5
-echo "$as_me: error: Need linker with .init_array/.fini_array support." >&2;}
+ { { $as_echo "$as_me:$LINENO: error: Need linker with .init_array/.fini_array support." >&5
+$as_echo "$as_me: error: Need linker with .init_array/.fini_array support." >&2;}
{ (exit 1); exit 1; }; }
fi
- { echo "$as_me:$LINENO: checking for libunwind-support in compiler" >&5
-echo $ECHO_N "checking for libunwind-support in compiler... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for libunwind-support in compiler" >&5
+$as_echo_n "checking for libunwind-support in compiler... " >&6; }
if test "${libc_cv_cc_with_libunwind+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
@@ -6043,8 +6466,8 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_cc_with_libunwind" >&5
-echo "${ECHO_T}$libc_cv_cc_with_libunwind" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_cc_with_libunwind" >&5
+$as_echo "$libc_cv_cc_with_libunwind" >&6; }
if test $libc_cv_cc_with_libunwind = yes; then
cat >>confdefs.h <<\_ACEOF
@@ -6053,10 +6476,10 @@ _ACEOF
fi
- { echo "$as_me:$LINENO: checking for -z nodelete option" >&5
-echo $ECHO_N "checking for -z nodelete option... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for -z nodelete option" >&5
+$as_echo_n "checking for -z nodelete option... " >&6; }
if test "${libc_cv_z_nodelete+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int _start (void) { return 42; }
@@ -6068,24 +6491,24 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
libc_cv_z_nodelete=yes
else
- { { echo "$as_me:$LINENO: error: linker with -z nodelete support required" >&5
-echo "$as_me: error: linker with -z nodelete support required" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: linker with -z nodelete support required" >&5
+$as_echo "$as_me: error: linker with -z nodelete support required" >&2;}
{ (exit 1); exit 1; }; }
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_z_nodelete" >&5
-echo "${ECHO_T}$libc_cv_z_nodelete" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_z_nodelete" >&5
+$as_echo "$libc_cv_z_nodelete" >&6; }
- { echo "$as_me:$LINENO: checking for -z nodlopen option" >&5
-echo $ECHO_N "checking for -z nodlopen option... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for -z nodlopen option" >&5
+$as_echo_n "checking for -z nodlopen option... " >&6; }
if test "${libc_cv_z_nodlopen+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int _start (void) { return 42; }
@@ -6097,24 +6520,24 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
libc_cv_z_nodlopen=yes
else
- { { echo "$as_me:$LINENO: error: linker with -z nodlopen support required" >&5
-echo "$as_me: error: linker with -z nodlopen support required" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: linker with -z nodlopen support required" >&5
+$as_echo "$as_me: error: linker with -z nodlopen support required" >&2;}
{ (exit 1); exit 1; }; }
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_z_nodlopen" >&5
-echo "${ECHO_T}$libc_cv_z_nodlopen" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_z_nodlopen" >&5
+$as_echo "$libc_cv_z_nodlopen" >&6; }
- { echo "$as_me:$LINENO: checking for -z initfirst option" >&5
-echo $ECHO_N "checking for -z initfirst option... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for -z initfirst option" >&5
+$as_echo_n "checking for -z initfirst option... " >&6; }
if test "${libc_cv_z_initfirst+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int _start (void) { return 42; }
@@ -6126,61 +6549,61 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
libc_cv_z_initfirst=yes
else
- { { echo "$as_me:$LINENO: error: linker with -z initfirst support required" >&5
-echo "$as_me: error: linker with -z initfirst support required" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: linker with -z initfirst support required" >&5
+$as_echo "$as_me: error: linker with -z initfirst support required" >&2;}
{ (exit 1); exit 1; }; }
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_z_initfirst" >&5
-echo "${ECHO_T}$libc_cv_z_initfirst" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_z_initfirst" >&5
+$as_echo "$libc_cv_z_initfirst" >&6; }
case "$base_machine" in
i[34567]86 | x86_64 | powerpc* | s390* | sparc* | alpha*)
- { echo "$as_me:$LINENO: checking for -z relro option" >&5
-echo $ECHO_N "checking for -z relro option... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for -z relro option" >&5
+$as_echo_n "checking for -z relro option... " >&6; }
if test "${libc_cv_z_relro+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
libc_cv_z_relro=no
if { ac_try='${CC-cc} -v --help 2>&1|grep "z relro" 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
if { ac_try='${CC-cc} -Wl,--verbose 2>&1|grep DATA_SEGMENT_RELRO_END 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
libc_cv_z_relro=yes
fi
fi
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_z_relro" >&5
-echo "${ECHO_T}$libc_cv_z_relro" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_z_relro" >&5
+$as_echo "$libc_cv_z_relro" >&6; }
if test "$libc_cv_z_relro" = no; then
- { { echo "$as_me:$LINENO: error: linker with -z relro support required" >&5
-echo "$as_me: error: linker with -z relro support required" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: linker with -z relro support required" >&5
+$as_echo "$as_me: error: linker with -z relro support required" >&2;}
{ (exit 1); exit 1; }; }
fi
;;
*) ;;
esac
- { echo "$as_me:$LINENO: checking for -Bgroup option" >&5
-echo $ECHO_N "checking for -Bgroup option... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for -Bgroup option" >&5
+$as_echo_n "checking for -Bgroup option... " >&6; }
if test "${libc_cv_Bgroup+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int _start (void) { return 42; }
@@ -6191,7 +6614,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
libc_cv_Bgroup=yes
@@ -6200,14 +6623,14 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_Bgroup" >&5
-echo "${ECHO_T}$libc_cv_Bgroup" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_Bgroup" >&5
+$as_echo "$libc_cv_Bgroup" >&6; }
- { echo "$as_me:$LINENO: checking for libgcc_s suffix" >&5
-echo $ECHO_N "checking for libgcc_s suffix... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for libgcc_s suffix" >&5
+$as_echo_n "checking for libgcc_s suffix... " >&6; }
if test "${libc_cv_libgcc_s_suffix+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int main (void) { return 0; }
@@ -6218,14 +6641,14 @@ EOF
| sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_libgcc_s_suffix" >&5
-echo "${ECHO_T}$libc_cv_libgcc_s_suffix" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_libgcc_s_suffix" >&5
+$as_echo "$libc_cv_libgcc_s_suffix" >&6; }
- { echo "$as_me:$LINENO: checking for --as-needed option" >&5
-echo $ECHO_N "checking for --as-needed option... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for --as-needed option" >&5
+$as_echo_n "checking for --as-needed option... " >&6; }
if test "${libc_cv_as_needed+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int main (void) { return 0; }
@@ -6237,7 +6660,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
libc_cv_as_needed=yes
@@ -6246,15 +6669,15 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_as_needed" >&5
-echo "${ECHO_T}$libc_cv_as_needed" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_as_needed" >&5
+$as_echo "$libc_cv_as_needed" >&6; }
ASFLAGS_config=
- { echo "$as_me:$LINENO: checking whether --noexecstack is desirable for .S files" >&5
-echo $ECHO_N "checking whether --noexecstack is desirable for .S files... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking whether --noexecstack is desirable for .S files" >&5
+$as_echo_n "checking whether --noexecstack is desirable for .S files... " >&6; }
if test "${libc_cv_as_noexecstack+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
void foo (void) { }
@@ -6264,7 +6687,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } \
&& grep -q .note.GNU-stack conftest.s \
&& { ac_try='${CC-cc} $ASFLAGS -Wa,--noexecstack
@@ -6272,7 +6695,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
libc_cv_as_noexecstack=yes
@@ -6281,17 +6704,17 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_as_noexecstack" >&5
-echo "${ECHO_T}$libc_cv_as_noexecstack" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_as_noexecstack" >&5
+$as_echo "$libc_cv_as_noexecstack" >&6; }
if test $libc_cv_as_noexecstack = yes; then
ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
fi
- { echo "$as_me:$LINENO: checking for -z combreloc" >&5
-echo $ECHO_N "checking for -z combreloc... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for -z combreloc" >&5
+$as_echo_n "checking for -z combreloc... " >&6; }
if test "${libc_cv_z_combreloc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
extern int bar (int);
@@ -6305,7 +6728,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
@@ -6318,8 +6741,8 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_z_combreloc" >&5
-echo "${ECHO_T}$libc_cv_z_combreloc" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_z_combreloc" >&5
+$as_echo "$libc_cv_z_combreloc" >&6; }
if test "$libc_cv_z_combreloc" = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_Z_COMBRELOC 1
@@ -6328,10 +6751,10 @@ _ACEOF
fi
- { echo "$as_me:$LINENO: checking for -z execstack" >&5
-echo $ECHO_N "checking for -z execstack... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for -z execstack" >&5
+$as_echo_n "checking for -z execstack... " >&6; }
if test "${libc_cv_z_execstack+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int _start (void) { return 42; }
@@ -6343,7 +6766,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
libc_cv_z_execstack=yes
@@ -6352,14 +6775,14 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_z_execstack" >&5
-echo "${ECHO_T}$libc_cv_z_execstack" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_z_execstack" >&5
+$as_echo "$libc_cv_z_execstack" >&6; }
- { echo "$as_me:$LINENO: checking for -fpie" >&5
-echo $ECHO_N "checking for -fpie... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for -fpie" >&5
+$as_echo_n "checking for -fpie... " >&6; }
if test "${libc_cv_fpie+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int foo;
@@ -6370,7 +6793,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
libc_cv_fpie=yes
@@ -6379,15 +6802,15 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_fpie" >&5
-echo "${ECHO_T}$libc_cv_fpie" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_fpie" >&5
+$as_echo "$libc_cv_fpie" >&6; }
- { echo "$as_me:$LINENO: checking for --hash-style option" >&5
-echo $ECHO_N "checking for --hash-style option... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for --hash-style option" >&5
+$as_echo_n "checking for --hash-style option... " >&6; }
if test "${libc_cv_hashstyle+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int _start (void) { return 42; }
@@ -6398,7 +6821,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
libc_cv_hashstyle=yes
@@ -6407,15 +6830,15 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_hashstyle" >&5
-echo "${ECHO_T}$libc_cv_hashstyle" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_hashstyle" >&5
+$as_echo "$libc_cv_hashstyle" >&6; }
fi
-{ echo "$as_me:$LINENO: checking for -fno-toplevel-reorder -fno-section-anchors" >&5
-echo $ECHO_N "checking for -fno-toplevel-reorder -fno-section-anchors... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for -fno-toplevel-reorder -fno-section-anchors" >&5
+$as_echo_n "checking for -fno-toplevel-reorder -fno-section-anchors... " >&6; }
if test "${libc_cv_fno_toplevel_reorder+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int foo;
@@ -6425,7 +6848,7 @@ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-an
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
libc_cv_fno_toplevel_reorder=yes
@@ -6434,8 +6857,8 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_fno_toplevel_reorder" >&5
-echo "${ECHO_T}$libc_cv_fno_toplevel_reorder" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_fno_toplevel_reorder" >&5
+$as_echo "$libc_cv_fno_toplevel_reorder" >&6; }
if test $libc_cv_fno_toplevel_reorder = yes; then
fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
else
@@ -6443,10 +6866,10 @@ else
fi
-{ echo "$as_me:$LINENO: checking for -fstack-protector" >&5
-echo $ECHO_N "checking for -fstack-protector... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for -fstack-protector" >&5
+$as_echo_n "checking for -fstack-protector... " >&6; }
if test "${libc_cv_ssp+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int foo;
@@ -6457,7 +6880,7 @@ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Werror -fstack-protector
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
libc_cv_ssp=yes
@@ -6466,14 +6889,14 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_ssp" >&5
-echo "${ECHO_T}$libc_cv_ssp" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_ssp" >&5
+$as_echo "$libc_cv_ssp" >&6; }
-{ echo "$as_me:$LINENO: checking for -fgnu89-inline" >&5
-echo $ECHO_N "checking for -fgnu89-inline... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for -fgnu89-inline" >&5
+$as_echo_n "checking for -fgnu89-inline... " >&6; }
if test "${libc_cv_gnu89_inline+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
int foo;
@@ -6488,7 +6911,7 @@ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
then
libc_cv_gnu89_inline=yes
@@ -6497,8 +6920,8 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_gnu89_inline" >&5
-echo "${ECHO_T}$libc_cv_gnu89_inline" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_gnu89_inline" >&5
+$as_echo "$libc_cv_gnu89_inline" >&6; }
if test $libc_cv_gnu89_inline = yes; then
libc_cv_gnu89_inline=-fgnu89-inline
else
@@ -6507,10 +6930,10 @@ fi
if test $elf != yes; then
- { echo "$as_me:$LINENO: checking for .init and .fini sections" >&5
-echo $ECHO_N "checking for .init and .fini sections... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for .init and .fini sections" >&5
+$as_echo_n "checking for .init and .fini sections... " >&6; }
if test "${libc_cv_have_initfini+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -6535,20 +6958,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
libc_cv_have_initfini=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
libc_cv_have_initfini=no
@@ -6556,8 +6980,8 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_have_initfini" >&5
-echo "${ECHO_T}$libc_cv_have_initfini" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_have_initfini" >&5
+$as_echo "$libc_cv_have_initfini" >&6; }
if test $libc_cv_have_initfini = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_INITFINI 1
@@ -6567,10 +6991,10 @@ _ACEOF
fi
if test $elf = yes; then
- { echo "$as_me:$LINENO: checking whether cc puts quotes around section names" >&5
-echo $ECHO_N "checking whether cc puts quotes around section names... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking whether cc puts quotes around section names" >&5
+$as_echo_n "checking whether cc puts quotes around section names... " >&6; }
if test "${libc_cv_have_section_quotes+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
static const int foo
@@ -6588,8 +7012,8 @@ EOF
rm -f conftest.cs
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_have_section_quotes" >&5
-echo "${ECHO_T}$libc_cv_have_section_quotes" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_have_section_quotes" >&5
+$as_echo "$libc_cv_have_section_quotes" >&6; }
if test $libc_cv_have_section_quotes = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_SECTION_QUOTES 1
@@ -6604,10 +7028,10 @@ if test $elf = yes; then
libc_cv_asm_underscores=no
else
if test $ac_cv_prog_cc_works = yes; then
- { echo "$as_me:$LINENO: checking for _ prefix on C symbol names" >&5
-echo $ECHO_N "checking for _ prefix on C symbol names... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for _ prefix on C symbol names" >&5
+$as_echo_n "checking for _ prefix on C symbol names... " >&6; }
if test "${libc_cv_asm_underscores+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -6630,36 +7054,40 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
libc_cv_asm_underscores=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
libc_cv_asm_underscores=no
fi
+rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_asm_underscores" >&5
-echo "${ECHO_T}$libc_cv_asm_underscores" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_underscores" >&5
+$as_echo "$libc_cv_asm_underscores" >&6; }
else
- { echo "$as_me:$LINENO: checking for _ prefix on C symbol names" >&5
-echo $ECHO_N "checking for _ prefix on C symbol names... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for _ prefix on C symbol names" >&5
+$as_echo_n "checking for _ prefix on C symbol names... " >&6; }
if test "${libc_cv_asm_underscores+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.$ac_ext <<EOF
#line $LINENO "configure"
@@ -6670,7 +7098,7 @@ EOF
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
if grep _underscore_test conftest* >/dev/null; then
rm -f conftest*
@@ -6687,8 +7115,8 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_asm_underscores" >&5
-echo "${ECHO_T}$libc_cv_asm_underscores" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_underscores" >&5
+$as_echo "$libc_cv_asm_underscores" >&6; }
fi
fi
if test $libc_cv_asm_underscores = no; then
@@ -6702,10 +7130,10 @@ if test $elf = yes; then
libc_cv_weak_symbols=yes
fi
-{ echo "$as_me:$LINENO: checking for assembler .weak directive" >&5
-echo $ECHO_N "checking for assembler .weak directive... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for assembler .weak directive" >&5
+$as_echo_n "checking for assembler .weak directive... " >&6; }
if test "${libc_cv_asm_weak_directive+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<EOF
${libc_cv_dot_text}
@@ -6718,7 +7146,7 @@ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_asm_weak_directive=yes
else
@@ -6726,14 +7154,14 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_asm_weak_directive" >&5
-echo "${ECHO_T}$libc_cv_asm_weak_directive" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_weak_directive" >&5
+$as_echo "$libc_cv_asm_weak_directive" >&6; }
if test $libc_cv_asm_weak_directive = no; then
- { echo "$as_me:$LINENO: checking for assembler .weakext directive" >&5
-echo $ECHO_N "checking for assembler .weakext directive... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for assembler .weakext directive" >&5
+$as_echo_n "checking for assembler .weakext directive... " >&6; }
if test "${libc_cv_asm_weakext_directive+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<EOF
${libc_cv_dot_text}
@@ -6748,7 +7176,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_asm_weakext_directive=yes
else
@@ -6756,8 +7184,8 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_asm_weakext_directive" >&5
-echo "${ECHO_T}$libc_cv_asm_weakext_directive" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_weakext_directive" >&5
+$as_echo "$libc_cv_asm_weakext_directive" >&6; }
fi # no .weak
@@ -6773,10 +7201,10 @@ _ACEOF
fi
-{ echo "$as_me:$LINENO: checking whether CFI directives are supported" >&5
-echo $ECHO_N "checking whether CFI directives are supported... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether CFI directives are supported" >&5
+$as_echo_n "checking whether CFI directives are supported... " >&6; }
if test "${libc_cv_asm_cfi_directives+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
case $machine in
sparc/sparc64*) cfi_offset=2047;;
@@ -6795,7 +7223,7 @@ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_asm_cfi_directives=yes
else
@@ -6803,8 +7231,8 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_asm_cfi_directives" >&5
-echo "${ECHO_T}$libc_cv_asm_cfi_directives" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_cfi_directives" >&5
+$as_echo "$libc_cv_asm_cfi_directives" >&6; }
if test $libc_cv_asm_cfi_directives = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_ASM_CFI_DIRECTIVES 1
@@ -6812,10 +7240,10 @@ _ACEOF
fi
-{ echo "$as_me:$LINENO: checking for ld --no-whole-archive" >&5
-echo $ECHO_N "checking for ld --no-whole-archive... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for ld --no-whole-archive" >&5
+$as_echo_n "checking for ld --no-whole-archive... " >&6; }
if test "${libc_cv_ld_no_whole_archive+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<\EOF
_start () {}
@@ -6828,7 +7256,7 @@ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_ld_no_whole_archive=yes
else
@@ -6836,16 +7264,16 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_ld_no_whole_archive" >&5
-echo "${ECHO_T}$libc_cv_ld_no_whole_archive" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_ld_no_whole_archive" >&5
+$as_echo "$libc_cv_ld_no_whole_archive" >&6; }
if test $libc_cv_ld_no_whole_archive = yes; then
no_whole_archive=-Wl,--no-whole-archive
fi
-{ echo "$as_me:$LINENO: checking for gcc -fexceptions" >&5
-echo $ECHO_N "checking for gcc -fexceptions... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for gcc -fexceptions" >&5
+$as_echo_n "checking for gcc -fexceptions... " >&6; }
if test "${libc_cv_gcc_exceptions+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<\EOF
_start () {}
@@ -6858,7 +7286,7 @@ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_gcc_exceptions=yes
else
@@ -6866,8 +7294,8 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_gcc_exceptions" >&5
-echo "${ECHO_T}$libc_cv_gcc_exceptions" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_gcc_exceptions" >&5
+$as_echo "$libc_cv_gcc_exceptions" >&6; }
if test $libc_cv_gcc_exceptions = yes; then
exceptions=-fexceptions
fi
@@ -6875,10 +7303,10 @@ fi
if test "$host_cpu" = powerpc ; then
# Check for a bug present in at least versions 2.8.x of GCC
# and versions 1.0.x of EGCS.
-{ echo "$as_me:$LINENO: checking whether clobbering cr0 causes problems" >&5
-echo $ECHO_N "checking whether clobbering cr0 causes problems... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking whether clobbering cr0 causes problems" >&5
+$as_echo_n "checking whether clobbering cr0 causes problems... " >&6; }
if test "${libc_cv_c_asmcr0_bug+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -6901,20 +7329,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
libc_cv_c_asmcr0_bug='no'
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
libc_cv_c_asmcr0_bug='yes'
@@ -6922,8 +7351,8 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_c_asmcr0_bug" >&5
-echo "${ECHO_T}$libc_cv_c_asmcr0_bug" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_c_asmcr0_bug" >&5
+$as_echo "$libc_cv_c_asmcr0_bug" >&6; }
if test "$libc_cv_c_asmcr0_bug" != 'no'; then
cat >>confdefs.h <<\_ACEOF
#define BROKEN_PPC_ASM_CR0 1
@@ -6932,10 +7361,10 @@ _ACEOF
fi
fi
-{ echo "$as_me:$LINENO: checking for __builtin_expect" >&5
-echo $ECHO_N "checking for __builtin_expect... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for __builtin_expect" >&5
+$as_echo_n "checking for __builtin_expect... " >&6; }
if test "${libc_cv_gcc_builtin_expect+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
#line $LINENO "configure"
@@ -6950,7 +7379,7 @@ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_gcc_builtin_expect=yes
else
@@ -6958,8 +7387,8 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_expect" >&5
-echo "${ECHO_T}$libc_cv_gcc_builtin_expect" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_expect" >&5
+$as_echo "$libc_cv_gcc_builtin_expect" >&6; }
if test "$libc_cv_gcc_builtin_expect" = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_BUILTIN_EXPECT 1
@@ -6967,10 +7396,10 @@ _ACEOF
fi
-{ echo "$as_me:$LINENO: checking for __builtin_memset" >&5
-echo $ECHO_N "checking for __builtin_memset... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for __builtin_memset" >&5
+$as_echo_n "checking for __builtin_memset... " >&6; }
if test "${libc_cv_gcc_builtin_memset+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<\EOF
void zero (void *x)
@@ -6982,7 +7411,7 @@ if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; };
then
libc_cv_gcc_builtin_memset=no
@@ -6991,8 +7420,8 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_memset" >&5
-echo "${ECHO_T}$libc_cv_gcc_builtin_memset" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_memset" >&5
+$as_echo "$libc_cv_gcc_builtin_memset" >&6; }
if test "$libc_cv_gcc_builtin_memset" = yes ; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_BUILTIN_MEMSET 1
@@ -7000,10 +7429,10 @@ _ACEOF
fi
-{ echo "$as_me:$LINENO: checking for redirection of built-in functions" >&5
-echo $ECHO_N "checking for redirection of built-in functions... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for redirection of built-in functions" >&5
+$as_echo_n "checking for redirection of built-in functions... " >&6; }
if test "${libc_cv_gcc_builtin_redirection+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<\EOF
extern char *strstr (const char *, const char *) __asm ("my_strstr");
@@ -7016,7 +7445,7 @@ if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; };
then
libc_cv_gcc_builtin_redirection=yes
@@ -7025,8 +7454,8 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_redirection" >&5
-echo "${ECHO_T}$libc_cv_gcc_builtin_redirection" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_redirection" >&5
+$as_echo "$libc_cv_gcc_builtin_redirection" >&6; }
if test "$libc_cv_gcc_builtin_redirection" = yes ; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_BUILTIN_REDIRECTION 1
@@ -7035,10 +7464,10 @@ _ACEOF
fi
if test "x$use__thread" != xno; then
- { echo "$as_me:$LINENO: checking for __thread" >&5
-echo $ECHO_N "checking for __thread... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for __thread" >&5
+$as_echo_n "checking for __thread... " >&6; }
if test "${libc_cv_gcc___thread+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<\EOF
__thread int a = 42;
@@ -7047,7 +7476,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_gcc___thread=yes
else
@@ -7055,8 +7484,8 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_gcc___thread" >&5
-echo "${ECHO_T}$libc_cv_gcc___thread" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_gcc___thread" >&5
+$as_echo "$libc_cv_gcc___thread" >&6; }
if test "$libc_cv_gcc___thread" = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE___THREAD 1
@@ -7068,10 +7497,10 @@ else
fi
if test "$libc_cv_gcc___thread" = yes; then
- { echo "$as_me:$LINENO: checking for tls_model attribute" >&5
-echo $ECHO_N "checking for tls_model attribute... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for tls_model attribute" >&5
+$as_echo_n "checking for tls_model attribute... " >&6; }
if test "${libc_cv_gcc_tls_model_attr+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.c <<\EOF
extern __thread int a __attribute__((tls_model ("initial-exec")));
@@ -7080,7 +7509,7 @@ EOF
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_gcc_tls_model_attr=yes
else
@@ -7088,8 +7517,8 @@ EOF
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_gcc_tls_model_attr" >&5
-echo "${ECHO_T}$libc_cv_gcc_tls_model_attr" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_gcc_tls_model_attr" >&5
+$as_echo "$libc_cv_gcc_tls_model_attr" >&6; }
if test "$libc_cv_gcc_tls_model_attr" = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TLS_MODEL_ATTRIBUTE 1
@@ -7099,10 +7528,10 @@ _ACEOF
fi
if test -n "$submachine"; then
- { echo "$as_me:$LINENO: checking for compiler option for CPU variant" >&5
-echo $ECHO_N "checking for compiler option for CPU variant... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for compiler option for CPU variant" >&5
+$as_echo_n "checking for compiler option for CPU variant... " >&6; }
if test "${libc_cv_cc_submachine+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
libc_cv_cc_submachine=no
for opt in "-march=$submachine" "-mcpu=$submachine"; do
@@ -7110,25 +7539,25 @@ else
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_cc_submachine="$opt"
break
fi
done
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_cc_submachine" >&5
-echo "${ECHO_T}$libc_cv_cc_submachine" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_cc_submachine" >&5
+$as_echo "$libc_cv_cc_submachine" >&6; }
if test "x$libc_cv_cc_submachine" = xno; then
- { { echo "$as_me:$LINENO: error: ${CC-cc} does not support $submachine" >&5
-echo "$as_me: error: ${CC-cc} does not support $submachine" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: ${CC-cc} does not support $submachine" >&5
+$as_echo "$as_me: error: ${CC-cc} does not support $submachine" >&2;}
{ (exit 1); exit 1; }; }
fi
fi
-{ echo "$as_me:$LINENO: checking for libgd" >&5
-echo $ECHO_N "checking for libgd... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for libgd" >&5
+$as_echo_n "checking for libgd... " >&6; }
if test "$with_gd" != "no"; then
old_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $libgd_include"
@@ -7157,26 +7586,30 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
LIBGD=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
LIBGD=no
fi
+rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="$old_CFLAGS"
@@ -7185,8 +7618,8 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
else
LIBGD=no
fi
-{ echo "$as_me:$LINENO: result: $LIBGD" >&5
-echo "${ECHO_T}$LIBGD" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $LIBGD" >&5
+$as_echo "$LIBGD" >&6; }
# SELinux detection
@@ -7194,10 +7627,10 @@ if test x$with_selinux = xno ; then
have_selinux=no;
else
# See if we have the SELinux library
- { echo "$as_me:$LINENO: checking for is_selinux_enabled in -lselinux" >&5
-echo $ECHO_N "checking for is_selinux_enabled in -lselinux... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for is_selinux_enabled in -lselinux" >&5
+$as_echo_n "checking for is_selinux_enabled in -lselinux... " >&6; }
if test "${ac_cv_lib_selinux_is_selinux_enabled+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lselinux $LIBS"
@@ -7229,33 +7662,37 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
ac_cv_lib_selinux_is_selinux_enabled=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_selinux_is_selinux_enabled=no
fi
+rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5
-echo "${ECHO_T}$ac_cv_lib_selinux_is_selinux_enabled" >&6; }
-if test $ac_cv_lib_selinux_is_selinux_enabled = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5
+$as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; }
+if test "x$ac_cv_lib_selinux_is_selinux_enabled" = x""yes; then
have_selinux=yes
else
have_selinux=no
@@ -7263,8 +7700,8 @@ fi
# See if we have the SELinux header with the NSCD permissions in it.
if test x$have_selinux = xyes ; then
- { echo "$as_me:$LINENO: checking for NSCD Flask permissions in selinux/av_permissions.h" >&5
-echo $ECHO_N "checking for NSCD Flask permissions in selinux/av_permissions.h... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for NSCD Flask permissions in selinux/av_permissions.h" >&5
+$as_echo_n "checking for NSCD Flask permissions in selinux/av_permissions.h... " >&6; }
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -7290,34 +7727,35 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
have_selinux=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
have_selinux=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- { echo "$as_me:$LINENO: result: $have_selinux" >&5
-echo "${ECHO_T}$have_selinux" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $have_selinux" >&5
+$as_echo "$have_selinux" >&6; }
fi
if test x$with_selinux = xyes ; then
if test x$have_selinux = xno ; then
- { { echo "$as_me:$LINENO: error: SELinux explicitly required, but sufficiently recent SELinux library not found" >&5
-echo "$as_me: error: SELinux explicitly required, but sufficiently recent SELinux library not found" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: SELinux explicitly required, but sufficiently recent SELinux library not found" >&5
+$as_echo "$as_me: error: SELinux explicitly required, but sufficiently recent SELinux library not found" >&2;}
{ (exit 1); exit 1; }; }
fi
fi
@@ -7331,10 +7769,10 @@ _ACEOF
# See if we have the libaudit library
- { echo "$as_me:$LINENO: checking for audit_log_user_avc_message in -laudit" >&5
-echo $ECHO_N "checking for audit_log_user_avc_message in -laudit... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for audit_log_user_avc_message in -laudit" >&5
+$as_echo_n "checking for audit_log_user_avc_message in -laudit... " >&6; }
if test "${ac_cv_lib_audit_audit_log_user_avc_message+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-laudit $LIBS"
@@ -7366,33 +7804,37 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
ac_cv_lib_audit_audit_log_user_avc_message=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_audit_audit_log_user_avc_message=no
fi
+rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_audit_audit_log_user_avc_message" >&5
-echo "${ECHO_T}$ac_cv_lib_audit_audit_log_user_avc_message" >&6; }
-if test $ac_cv_lib_audit_audit_log_user_avc_message = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_audit_audit_log_user_avc_message" >&5
+$as_echo "$ac_cv_lib_audit_audit_log_user_avc_message" >&6; }
+if test "x$ac_cv_lib_audit_audit_log_user_avc_message" = x""yes; then
have_libaudit=yes
else
have_libaudit=no
@@ -7408,10 +7850,10 @@ _ACEOF
# See if we have the libcap library
- { echo "$as_me:$LINENO: checking for cap_init in -lcap" >&5
-echo $ECHO_N "checking for cap_init in -lcap... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for cap_init in -lcap" >&5
+$as_echo_n "checking for cap_init in -lcap... " >&6; }
if test "${ac_cv_lib_cap_cap_init+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lcap $LIBS"
@@ -7443,33 +7885,37 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
ac_cv_lib_cap_cap_init=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_cap_cap_init=no
fi
+rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_cap_cap_init" >&5
-echo "${ECHO_T}$ac_cv_lib_cap_cap_init" >&6; }
-if test $ac_cv_lib_cap_cap_init = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_cap_cap_init" >&5
+$as_echo "$ac_cv_lib_cap_cap_init" >&6; }
+if test "x$ac_cv_lib_cap_cap_init" = x""yes; then
have_libcap=yes
else
have_libcap=no
@@ -7487,42 +7933,37 @@ fi
-{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Extract the first word of "grep ggrep" to use in msg output
-if test -z "$GREP"; then
-set dummy grep ggrep; ac_prog_name=$2
+{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
if test "${ac_cv_path_GREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
+ if test -z "$GREP"; then
ac_path_GREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
- # Check for GNU ac_path_GREP and select it if it is found.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
*GNU*)
ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
*)
ac_count=0
- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+ $as_echo_n 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- echo 'GREP' >> "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
"$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
ac_count=`expr $ac_count + 1`
@@ -7537,74 +7978,60 @@ case `"$ac_path_GREP" --version 2>&1` in
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
esac
-
- $ac_path_GREP_found && break 3
+ $ac_path_GREP_found && break 3
+ done
done
done
-
-done
IFS=$as_save_IFS
-
-
-fi
-
-GREP="$ac_cv_path_GREP"
-if test -z "$GREP"; then
- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ if test -z "$ac_cv_path_GREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
{ (exit 1); exit 1; }; }
-fi
-
+ fi
else
ac_cv_path_GREP=$GREP
fi
-
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
GREP="$ac_cv_path_GREP"
-{ echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
if test "${ac_cv_path_EGREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
then ac_cv_path_EGREP="$GREP -E"
else
- # Extract the first word of "egrep" to use in msg output
-if test -z "$EGREP"; then
-set dummy egrep; ac_prog_name=$2
-if test "${ac_cv_path_EGREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+ if test -z "$EGREP"; then
ac_path_EGREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
- # Check for GNU ac_path_EGREP and select it if it is found.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
*GNU*)
ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
*)
ac_count=0
- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+ $as_echo_n 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- echo 'EGREP' >> "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
"$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
ac_count=`expr $ac_count + 1`
@@ -7619,40 +8046,31 @@ case `"$ac_path_EGREP" --version 2>&1` in
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
esac
-
- $ac_path_EGREP_found && break 3
+ $ac_path_EGREP_found && break 3
+ done
done
done
-
-done
IFS=$as_save_IFS
-
-
-fi
-
-EGREP="$ac_cv_path_EGREP"
-if test -z "$EGREP"; then
- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ if test -z "$ac_cv_path_EGREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
{ (exit 1); exit 1; }; }
-fi
-
+ fi
else
ac_cv_path_EGREP=$EGREP
fi
-
fi
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
EGREP="$ac_cv_path_EGREP"
-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
if test "${ac_cv_header_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -7679,20 +8097,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_header_stdc=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_stdc=no
@@ -7784,37 +8203,40 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
{ (case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_try") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
ac_cv_header_stdc=no
fi
+rm -rf conftest.dSYM
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
if test $ac_cv_header_stdc = yes; then
cat >>confdefs.h <<\_ACEOF
@@ -7836,11 +8258,11 @@ fi
for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
inttypes.h stdint.h unistd.h
do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -7858,20 +8280,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
eval "$as_ac_Header=yes"
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_Header=no"
@@ -7879,12 +8302,15 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
- { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
fi
@@ -7892,68 +8318,14 @@ fi
done
-{ echo "$as_me:$LINENO: checking for long double" >&5
-echo $ECHO_N "checking for long double... $ECHO_C" >&6; }
-if test "${ac_cv_type_long_double+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-typedef long double ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_type_long_double=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_long_double=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5
-echo "${ECHO_T}$ac_cv_type_long_double" >&6; }
-
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ echo "$as_me:$LINENO: checking size of long double" >&5
-echo $ECHO_N "checking size of long double... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking size of long double" >&5
+$as_echo_n "checking size of long double... " >&6; }
if test "${ac_cv_sizeof_long_double+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
@@ -7964,11 +8336,10 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
- typedef long double ac__type_sizeof_;
int
main ()
{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
+static int test_array [1 - 2 * !(((long int) (sizeof (long double))) >= 0)];
test_array [0] = 0
;
@@ -7981,13 +8352,14 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
@@ -8001,11 +8373,10 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
- typedef long double ac__type_sizeof_;
int
main ()
{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+static int test_array [1 - 2 * !(((long int) (sizeof (long double))) <= $ac_mid)];
test_array [0] = 0
;
@@ -8018,20 +8389,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_hi=$ac_mid; break
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_lo=`expr $ac_mid + 1`
@@ -8045,7 +8417,7 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
done
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
@@ -8055,11 +8427,10 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
- typedef long double ac__type_sizeof_;
int
main ()
{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
+static int test_array [1 - 2 * !(((long int) (sizeof (long double))) < 0)];
test_array [0] = 0
;
@@ -8072,13 +8443,14 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
@@ -8092,11 +8464,10 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
- typedef long double ac__type_sizeof_;
int
main ()
{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
+static int test_array [1 - 2 * !(((long int) (sizeof (long double))) >= $ac_mid)];
test_array [0] = 0
;
@@ -8109,20 +8480,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_lo=$ac_mid; break
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_hi=`expr '(' $ac_mid ')' - 1`
@@ -8136,7 +8508,7 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
done
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_lo= ac_hi=
@@ -8156,11 +8528,10 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
- typedef long double ac__type_sizeof_;
int
main ()
{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+static int test_array [1 - 2 * !(((long int) (sizeof (long double))) <= $ac_mid)];
test_array [0] = 0
;
@@ -8173,20 +8544,21 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_hi=$ac_mid
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_lo=`expr '(' $ac_mid ')' + 1`
@@ -8197,11 +8569,13 @@ done
case $ac_lo in
?*) ac_cv_sizeof_long_double=$ac_lo;;
'') if test "$ac_cv_type_long_double" = yes; then
- { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double)
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long double)
See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long double)
+$as_echo "$as_me: error: cannot compute sizeof (long double)
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; }
+ { (exit 77); exit 77; }; }; }
else
ac_cv_sizeof_long_double=0
fi ;;
@@ -8214,9 +8588,8 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
- typedef long double ac__type_sizeof_;
-static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
-static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
+static long int longval () { return (long int) (sizeof (long double)); }
+static unsigned long int ulongval () { return (long int) (sizeof (long double)); }
#include <stdio.h>
#include <stdlib.h>
int
@@ -8226,20 +8599,22 @@ main ()
FILE *f = fopen ("conftest.val", "w");
if (! f)
return 1;
- if (((long int) (sizeof (ac__type_sizeof_))) < 0)
+ if (((long int) (sizeof (long double))) < 0)
{
long int i = longval ();
- if (i != ((long int) (sizeof (ac__type_sizeof_))))
+ if (i != ((long int) (sizeof (long double))))
return 1;
- fprintf (f, "%ld\n", i);
+ fprintf (f, "%ld", i);
}
else
{
unsigned long int i = ulongval ();
- if (i != ((long int) (sizeof (ac__type_sizeof_))))
+ if (i != ((long int) (sizeof (long double))))
return 1;
- fprintf (f, "%lu\n", i);
+ fprintf (f, "%lu", i);
}
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
return ferror (f) || fclose (f) != 0;
;
@@ -8252,43 +8627,48 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
{ (case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_try") 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sizeof_long_double=`cat conftest.val`
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
if test "$ac_cv_type_long_double" = yes; then
- { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double)
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long double)
See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long double)
+$as_echo "$as_me: error: cannot compute sizeof (long double)
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; }
+ { (exit 77); exit 77; }; }; }
else
ac_cv_sizeof_long_double=0
fi
fi
+rm -rf conftest.dSYM
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.val
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5
-echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5
+$as_echo "$ac_cv_sizeof_long_double" >&6; }
@@ -8319,8 +8699,8 @@ for dir in $sysnames; do
*) dest=$srcdir/$dir ;;
esac
if test -r $dest/configure; then
- { echo "$as_me:$LINENO: result: running configure fragment for $dir" >&5
-echo "${ECHO_T}running configure fragment for $dir" >&6; }
+ { $as_echo "$as_me:$LINENO: result: running configure fragment for $dir" >&5
+$as_echo "running configure fragment for $dir" >&6; }
. $dest/configure
fi
@@ -8351,10 +8731,10 @@ if test "$uname" = "sysdeps/generic"; then
config_release=`echo $config_os | sed s/$uname_sysname//`
fi
- { echo "$as_me:$LINENO: checking OS release for uname" >&5
-echo $ECHO_N "checking OS release for uname... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking OS release for uname" >&5
+$as_echo_n "checking OS release for uname... " >&6; }
if test "${libc_cv_uname_release+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -r /vmunix; then
kernel_id=`strings /vmunix | grep UNIX`
@@ -8377,14 +8757,14 @@ else
libc_cv_uname_release=unknown
fi
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_uname_release" >&5
-echo "${ECHO_T}$libc_cv_uname_release" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_uname_release" >&5
+$as_echo "$libc_cv_uname_release" >&6; }
uname_release="$libc_cv_uname_release"
- { echo "$as_me:$LINENO: checking OS version for uname" >&5
-echo $ECHO_N "checking OS version for uname... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking OS version for uname" >&5
+$as_echo_n "checking OS version for uname... " >&6; }
if test "${libc_cv_uname_version+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -r /vmunix; then
kernel_id=`strings /vmunix | grep UNIX`
@@ -8401,8 +8781,8 @@ else
libc_cv_uname_version=unknown
fi
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_uname_version" >&5
-echo "${ECHO_T}$libc_cv_uname_version" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_uname_version" >&5
+$as_echo "$libc_cv_uname_version" >&6; }
uname_version="$libc_cv_uname_version"
config_uname=config-name.h:config-name.in
@@ -8418,21 +8798,21 @@ _ACEOF
# Test for old glibc 2.0.x headers so that they can be removed properly
# Search only in includedir.
-{ echo "$as_me:$LINENO: checking for old glibc 2.0.x headers" >&5
-echo $ECHO_N "checking for old glibc 2.0.x headers... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for old glibc 2.0.x headers" >&5
+$as_echo_n "checking for old glibc 2.0.x headers... " >&6; }
if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
then
old_glibc_headers=yes
else
old_glibc_headers=no
fi
-{ echo "$as_me:$LINENO: result: $old_glibc_headers" >&5
-echo "${ECHO_T}$old_glibc_headers" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $old_glibc_headers" >&5
+$as_echo "$old_glibc_headers" >&6; }
if test ${old_glibc_headers} = yes; then
- { echo "$as_me:$LINENO: WARNING: *** During \"make install\" old headers from glibc 2.0.x will" >&5
-echo "$as_me: WARNING: *** During \"make install\" old headers from glibc 2.0.x will" >&2;}
- { echo "$as_me:$LINENO: WARNING: *** be removed." >&5
-echo "$as_me: WARNING: *** be removed." >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: *** During \"make install\" old headers from glibc 2.0.x will" >&5
+$as_echo "$as_me: WARNING: *** During \"make install\" old headers from glibc 2.0.x will" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: *** be removed." >&5
+$as_echo "$as_me: WARNING: *** be removed." >&2;}
fi
@@ -8448,6 +8828,8 @@ fi
+
+
if test $elf = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_ELF 1
@@ -8467,24 +8849,24 @@ if test $shared = default; then
shared=$elf
fi
-{ echo "$as_me:$LINENO: checking whether -fPIC is default" >&5
-echo $ECHO_N "checking whether -fPIC is default... $ECHO_C" >&6; }
-if test "${pic_default+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking whether -fPIC is default" >&5
+$as_echo_n "checking whether -fPIC is default... " >&6; }
+if test "${libc_cv_pic_default+set}" = set; then
+ $as_echo_n "(cached) " >&6
else
- pic_default=yes
+ libc_cv_pic_default=yes
cat > conftest.c <<EOF
#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
# error PIC is default.
#endif
EOF
if eval "${CC-cc} -S conftest.c 2>&5 1>&5"; then
- pic_default=no
+ libc_cv_pic_default=no
fi
rm -f conftest.*
fi
-{ echo "$as_me:$LINENO: result: $pic_default" >&5
-echo "${ECHO_T}$pic_default" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_pic_default" >&5
+$as_echo "$libc_cv_pic_default" >&6; }
@@ -8539,11 +8921,12 @@ _ACEOF
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
*) $as_unset $ac_var ;;
esac ;;
esac
@@ -8576,12 +8959,12 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
test "x$cache_file" != "x/dev/null" &&
- { echo "$as_me:$LINENO: updating cache $cache_file" >&5
-echo "$as_me: updating cache $cache_file" >&6;}
+ { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
cat confcache >$cache_file
else
- { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
fi
fi
rm -f confcache
@@ -8597,7 +8980,7 @@ ac_ltlibobjs=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`echo "$ac_i" | sed "$ac_script"`
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
# will be set to the directory where LIBOBJS objects are built.
ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
@@ -8610,11 +8993,12 @@ LTLIBOBJS=$ac_ltlibobjs
: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
#! $SHELL
# Generated by $as_me.
# Run this file to recreate the current configuration.
@@ -8627,7 +9011,7 @@ ac_cs_silent=false
SHELL=\${CONFIG_SHELL-$SHELL}
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
## --------------------- ##
## M4sh Initialization. ##
## --------------------- ##
@@ -8637,7 +9021,7 @@ DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
@@ -8659,17 +9043,45 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
else
- PATH_SEPARATOR=:
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
fi
- rm -f conf$$.sh
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
fi
# Support unset when possible.
@@ -8685,8 +9097,6 @@ fi
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
-as_nl='
-'
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
@@ -8709,7 +9119,7 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
{ (exit 1); exit 1; }
fi
@@ -8722,17 +9132,10 @@ PS2='> '
PS4='+ '
# NLS nuisances.
-for as_var in \
- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
- LC_TELEPHONE LC_TIME
-do
- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
- else
- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
- fi
-done
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
# Required to use basename.
if expr a : '\(a\)' >/dev/null 2>&1 &&
@@ -8754,7 +9157,7 @@ as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
+$as_echo X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -8805,7 +9208,7 @@ $as_unset CDPATH
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
{ (exit 1); exit 1; }; }
# Don't try to exec as it changes $[0], causing all sort of problems
@@ -8833,7 +9236,6 @@ case `echo -n x` in
*)
ECHO_N='-n';;
esac
-
if expr a : '\(a\)' >/dev/null 2>&1 &&
test "X`expr 00001 : '.*\(...\)'`" = X001; then
as_expr=expr
@@ -8846,19 +9248,22 @@ if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
else
rm -f conf$$.dir
- mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
+ fi
else
as_ln_s='cp -p'
fi
@@ -8883,10 +9288,10 @@ else
as_test_x='
eval sh -c '\''
if test -d "$1"; then
- test -d "$1/.";
+ test -d "$1/.";
else
case $1 in
- -*)set "./$1";;
+ -*)set "./$1";;
esac;
case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
???[sx]*):;;*)false;;esac;fi
@@ -8909,7 +9314,7 @@ exec 6>&1
# values after options handling.
ac_log="
This file was extended by GNU C Library $as_me (see version.h), which was
-generated by GNU Autoconf 2.61. Invocation command line was
+generated by GNU Autoconf 2.63. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -8922,7 +9327,16 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q`
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
# Files that config.status was made for.
config_files="$ac_config_files"
config_headers="$ac_config_headers"
@@ -8930,22 +9344,23 @@ config_commands="$ac_config_commands"
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
ac_cs_usage="\
\`$as_me' instantiates files from templates according to the
current configuration.
-Usage: $0 [OPTIONS] [FILE]...
+Usage: $0 [OPTION]... [FILE]...
-h, --help print this help, then exit
-V, --version print version number and configuration settings, then exit
- -q, --quiet do not print progress messages
+ -q, --quiet, --silent
+ do not print progress messages
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
- instantiate the configuration header FILE
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
Configuration files:
$config_files
@@ -8959,24 +9374,25 @@ $config_commands
Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
GNU C Library config.status (see version.h)
-configured by $0, generated by GNU Autoconf 2.61,
- with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+configured by $0, generated by GNU Autoconf 2.63,
+ with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
-Copyright (C) 2006 Free Software Foundation, Inc.
+Copyright (C) 2008 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
ac_pwd='$ac_pwd'
srcdir='$srcdir'
INSTALL='$INSTALL'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value. By we need to know if files were specified by the user.
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
ac_need_defaults=:
while test $# != 0
do
@@ -8998,30 +9414,36 @@ do
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- echo "$ac_cs_version"; exit ;;
+ $as_echo "$ac_cs_version"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
- CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
ac_need_defaults=false;;
--header | --heade | --head | --hea )
$ac_shift
- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
ac_need_defaults=false;;
--he | --h)
# Conflict between --help and --header
- { echo "$as_me: error: ambiguous option: $1
+ { $as_echo "$as_me: error: ambiguous option: $1
Try \`$0 --help' for more information." >&2
{ (exit 1); exit 1; }; };;
--help | --hel | -h )
- echo "$ac_cs_usage"; exit ;;
+ $as_echo "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
# This is an error.
- -*) { echo "$as_me: error: unrecognized option: $1
+ -*) { $as_echo "$as_me: error: unrecognized option: $1
Try \`$0 --help' for more information." >&2
{ (exit 1); exit 1; }; } ;;
@@ -9040,27 +9462,29 @@ if $ac_cs_silent; then
fi
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
- CONFIG_SHELL=$SHELL
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
export CONFIG_SHELL
- exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ exec "\$@"
fi
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
exec 5>>config.log
{
echo
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
- echo "$ac_log"
+ $as_echo "$ac_log"
} >&5
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
#
# INIT-COMMANDS
#
@@ -9068,7 +9492,7 @@ config_vars='$config_vars'
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# Handling of arguments.
for ac_config_target in $ac_config_targets
@@ -9080,8 +9504,8 @@ do
"${config_uname}") CONFIG_FILES="$CONFIG_FILES ${config_uname}" ;;
"default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
{ (exit 1); exit 1; }; };;
esac
done
@@ -9122,257 +9546,144 @@ $debug ||
(umask 077 && mkdir "$tmp")
} ||
{
- echo "$me: cannot create a temporary directory in ." >&2
+ $as_echo "$as_me: cannot create a temporary directory in ." >&2
{ (exit 1); exit 1; }
}
-#
-# Set up the sed scripts for CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
if test -n "$CONFIG_FILES"; then
-_ACEOF
-
-
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
- cat >conf$$subs.sed <<_ACEOF
-SHELL!$SHELL$ac_delim
-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
-PACKAGE_NAME!$PACKAGE_NAME$ac_delim
-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
-PACKAGE_STRING!$PACKAGE_STRING$ac_delim
-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
-exec_prefix!$exec_prefix$ac_delim
-prefix!$prefix$ac_delim
-program_transform_name!$program_transform_name$ac_delim
-bindir!$bindir$ac_delim
-sbindir!$sbindir$ac_delim
-libexecdir!$libexecdir$ac_delim
-datarootdir!$datarootdir$ac_delim
-datadir!$datadir$ac_delim
-sysconfdir!$sysconfdir$ac_delim
-sharedstatedir!$sharedstatedir$ac_delim
-localstatedir!$localstatedir$ac_delim
-includedir!$includedir$ac_delim
-oldincludedir!$oldincludedir$ac_delim
-docdir!$docdir$ac_delim
-infodir!$infodir$ac_delim
-htmldir!$htmldir$ac_delim
-dvidir!$dvidir$ac_delim
-pdfdir!$pdfdir$ac_delim
-psdir!$psdir$ac_delim
-libdir!$libdir$ac_delim
-localedir!$localedir$ac_delim
-mandir!$mandir$ac_delim
-DEFS!$DEFS$ac_delim
-ECHO_C!$ECHO_C$ac_delim
-ECHO_N!$ECHO_N$ac_delim
-ECHO_T!$ECHO_T$ac_delim
-LIBS!$LIBS$ac_delim
-build_alias!$build_alias$ac_delim
-host_alias!$host_alias$ac_delim
-target_alias!$target_alias$ac_delim
-with_fp!$with_fp$ac_delim
-with_cvs!$with_cvs$ac_delim
-enable_check_abi!$enable_check_abi$ac_delim
-oldest_abi!$oldest_abi$ac_delim
-bindnow!$bindnow$ac_delim
-force_install!$force_install$ac_delim
-all_warnings!$all_warnings$ac_delim
-build!$build$ac_delim
-build_cpu!$build_cpu$ac_delim
-build_vendor!$build_vendor$ac_delim
-build_os!$build_os$ac_delim
-host!$host$ac_delim
-host_cpu!$host_cpu$ac_delim
-host_vendor!$host_vendor$ac_delim
-host_os!$host_os$ac_delim
-subdirs!$subdirs$ac_delim
-add_ons!$add_ons$ac_delim
-add_on_subdirs!$add_on_subdirs$ac_delim
-base_machine!$base_machine$ac_delim
-submachine!$submachine$ac_delim
-sysnames!$sysnames$ac_delim
-sysdeps_add_ons!$sysdeps_add_ons$ac_delim
-INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
-INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
-INSTALL_DATA!$INSTALL_DATA$ac_delim
-LN_S!$LN_S$ac_delim
-CC!$CC$ac_delim
-CFLAGS!$CFLAGS$ac_delim
-LDFLAGS!$LDFLAGS$ac_delim
-CPPFLAGS!$CPPFLAGS$ac_delim
-ac_ct_CC!$ac_ct_CC$ac_delim
-OBJEXT!$OBJEXT$ac_delim
-BUILD_CC!$BUILD_CC$ac_delim
-cross_compiling!$cross_compiling$ac_delim
-CPP!$CPP$ac_delim
-CXX!$CXX$ac_delim
-CXXFLAGS!$CXXFLAGS$ac_delim
-ac_ct_CXX!$ac_ct_CXX$ac_delim
-AR!$AR$ac_delim
-OBJDUMP!$OBJDUMP$ac_delim
-RANLIB!$RANLIB$ac_delim
-MIG!$MIG$ac_delim
-AS!$AS$ac_delim
-LD!$LD$ac_delim
-PWD_P!$PWD_P$ac_delim
-MAKE!$MAKE$ac_delim
-MSGFMT!$MSGFMT$ac_delim
-MAKEINFO!$MAKEINFO$ac_delim
-SED!$SED$ac_delim
-AUTOCONF!$AUTOCONF$ac_delim
-SYSINCLUDES!$SYSINCLUDES$ac_delim
-CXX_SYSINCLUDES!$CXX_SYSINCLUDES$ac_delim
-libc_cv_gcc_static_libgcc!$libc_cv_gcc_static_libgcc$ac_delim
-BASH_SHELL!$BASH_SHELL$ac_delim
-libc_cv_have_bash2!$libc_cv_have_bash2$ac_delim
-KSH!$KSH$ac_delim
-libc_cv_have_ksh!$libc_cv_have_ksh$ac_delim
-AWK!$AWK$ac_delim
-PERL!$PERL$ac_delim
-INSTALL_INFO!$INSTALL_INFO$ac_delim
-_ACEOF
-
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
- break
- elif $ac_last_try; then
- { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
- ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
- ac_eof=`expr $ac_eof + 1`
+ac_cr=' '
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
fi
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-_ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-CEOF$ac_eof
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
_ACEOF
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
- cat >conf$$subs.sed <<_ACEOF
-BISON!$BISON$ac_delim
-VERSIONING!$VERSIONING$ac_delim
-libc_cv_cc_with_libunwind!$libc_cv_cc_with_libunwind$ac_delim
-libc_cv_Bgroup!$libc_cv_Bgroup$ac_delim
-libc_cv_libgcc_s_suffix!$libc_cv_libgcc_s_suffix$ac_delim
-libc_cv_as_needed!$libc_cv_as_needed$ac_delim
-ASFLAGS_config!$ASFLAGS_config$ac_delim
-libc_cv_z_combreloc!$libc_cv_z_combreloc$ac_delim
-libc_cv_z_execstack!$libc_cv_z_execstack$ac_delim
-libc_cv_fpie!$libc_cv_fpie$ac_delim
-libc_cv_hashstyle!$libc_cv_hashstyle$ac_delim
-fno_unit_at_a_time!$fno_unit_at_a_time$ac_delim
-libc_cv_ssp!$libc_cv_ssp$ac_delim
-libc_cv_gnu89_inline!$libc_cv_gnu89_inline$ac_delim
-libc_cv_have_initfini!$libc_cv_have_initfini$ac_delim
-no_whole_archive!$no_whole_archive$ac_delim
-exceptions!$exceptions$ac_delim
-libc_cv_cc_submachine!$libc_cv_cc_submachine$ac_delim
-LIBGD!$LIBGD$ac_delim
-have_libaudit!$have_libaudit$ac_delim
-have_libcap!$have_libcap$ac_delim
-have_selinux!$have_selinux$ac_delim
-GREP!$GREP$ac_delim
-EGREP!$EGREP$ac_delim
-sizeof_long_double!$sizeof_long_double$ac_delim
-libc_cv_gcc_unwind_find_fde!$libc_cv_gcc_unwind_find_fde$ac_delim
-uname_sysname!$uname_sysname$ac_delim
-uname_release!$uname_release$ac_delim
-uname_version!$uname_version$ac_delim
-old_glibc_headers!$old_glibc_headers$ac_delim
-libc_cv_slibdir!$libc_cv_slibdir$ac_delim
-libc_cv_localedir!$libc_cv_localedir$ac_delim
-libc_cv_sysconfdir!$libc_cv_sysconfdir$ac_delim
-libc_cv_rootsbindir!$libc_cv_rootsbindir$ac_delim
-libc_cv_forced_unwind!$libc_cv_forced_unwind$ac_delim
-libc_cv_cpp_asm_debuginfo!$libc_cv_cpp_asm_debuginfo$ac_delim
-use_ldconfig!$use_ldconfig$ac_delim
-ldd_rewrite_script!$ldd_rewrite_script$ac_delim
-elf!$elf$ac_delim
-xcoff!$xcoff$ac_delim
-static!$static$ac_delim
-shared!$shared$ac_delim
-pic_default!$pic_default$ac_delim
-profile!$profile$ac_delim
-omitfp!$omitfp$ac_delim
-bounded!$bounded$ac_delim
-static_nss!$static_nss$ac_delim
-nopic_initfini!$nopic_initfini$ac_delim
-DEFINES!$DEFINES$ac_delim
-mach_interface_list!$mach_interface_list$ac_delim
-VERSION!$VERSION$ac_delim
-RELEASE!$RELEASE$ac_delim
-LIBOBJS!$LIBOBJS$ac_delim
-LTLIBOBJS!$LTLIBOBJS$ac_delim
-_ACEOF
-
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 54; then
+ . ./conf$$subs.sh ||
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
break
elif $ac_last_try; then
- { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
{ (exit 1); exit 1; }; }
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\).*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\).*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
- ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
- ac_eof=`expr $ac_eof + 1`
-fi
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+_ACAWK
_ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-:end
-s/|#_!!_#|//g
-CEOF$ac_eof
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
+$as_echo "$as_me: error: could not setup config files machinery" >&2;}
+ { (exit 1); exit 1; }; }
_ACEOF
-
# VPATH may cause trouble with some makes, so we remove $(srcdir),
# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
# trailing colons and then remove the whole line if VPATH becomes empty
@@ -9388,19 +9699,133 @@ s/^[^=]*=[ ]*$//
}'
fi
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
fi # test -n "$CONFIG_FILES"
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+ ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_t"; then
+ break
+ elif $ac_last_try; then
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
+ { (exit 1); exit 1; }; }
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
-for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any. Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[ ]*#[ ]*define[ ][ ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ for (key in D) D_is_set[key] = 1
+ FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+ line = \$ 0
+ split(line, arg, " ")
+ if (arg[1] == "#") {
+ defundef = arg[2]
+ mac1 = arg[3]
+ } else {
+ defundef = substr(arg[1], 2)
+ mac1 = arg[2]
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+ # Replace #undef with comments. This is necessary, for example,
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+ print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
+$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
+ { (exit 1); exit 1; }; }
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
do
case $ac_tag in
:[FHLC]) ac_mode=$ac_tag; continue;;
esac
case $ac_mode$ac_tag in
:[FHL]*:*);;
- :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
-echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+ :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
+$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
{ (exit 1); exit 1; }; };;
:[FH]-) ac_tag=-:-;;
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
@@ -9429,26 +9854,38 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;}
[\\/$]*) false;;
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
esac ||
- { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
{ (exit 1); exit 1; }; };;
esac
- ac_file_inputs="$ac_file_inputs $ac_f"
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ ac_file_inputs="$ac_file_inputs '$ac_f'"
done
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
- configure_input="Generated from "`IFS=:
- echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
if test x"$ac_file" != x-; then
configure_input="$ac_file. $configure_input"
- { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
+ { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
case $ac_tag in
- *:-:* | *:-) cat >"$tmp/stdin";;
+ *:-:* | *:-) cat >"$tmp/stdin" \
+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+ { (exit 1); exit 1; }; } ;;
esac
;;
esac
@@ -9458,7 +9895,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$ac_file" |
+$as_echo X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -9484,7 +9921,7 @@ echo X"$ac_file" |
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -9493,7 +9930,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
+$as_echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -9514,17 +9951,17 @@ echo X"$as_dir" |
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
{ (exit 1); exit 1; }; }; }
ac_builddir=.
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -9564,12 +10001,13 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
esac
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# If the template does not know about datarootdir, expand it.
# FIXME: This hack should be removed a few years after 2.60.
ac_datarootdir_hack=; ac_datarootdir_seen=
-case `sed -n '/datarootdir/ {
+ac_sed_dataroot='
+/datarootdir/ {
p
q
}
@@ -9578,13 +10016,14 @@ case `sed -n '/datarootdir/ {
/@infodir@/p
/@localedir@/p
/@mandir@/p
-' $ac_file_inputs` in
+'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_datarootdir_hack='
s&@datadir@&$datadir&g
s&@docdir@&$docdir&g
@@ -9598,15 +10037,16 @@ _ACEOF
# Neutralize VPATH when `$srcdir' = `.'.
# Shell code in configure.ac might set extrasub.
# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF
- sed "$ac_vpsub
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
$extrasub
_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
:t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s&@configure_input@&$configure_input&;t t
+s|@configure_input@|$ac_sed_conf_input|;t t
s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
s&@srcdir@&$ac_srcdir&;t t
s&@abs_srcdir@&$ac_abs_srcdir&;t t
s&@top_srcdir@&$ac_top_srcdir&;t t
@@ -9616,123 +10056,62 @@ s&@abs_builddir@&$ac_abs_builddir&;t t
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
s&@INSTALL@&$ac_INSTALL&;t t
$ac_datarootdir_hack
-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+ { (exit 1); exit 1; }; }
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
{ ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
- { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined." >&5
-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined." >&2;}
rm -f "$tmp/stdin"
case $ac_file in
- -) cat "$tmp/out"; rm -f "$tmp/out";;
- *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
- esac
+ -) cat "$tmp/out" && rm -f "$tmp/out";;
+ *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+ esac \
+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+ { (exit 1); exit 1; }; }
;;
:H)
#
# CONFIG_HEADER
#
-_ACEOF
-
-# Transform confdefs.h into a sed script `conftest.defines', that
-# substitutes the proper values into config.h.in to produce config.h.
-rm -f conftest.defines conftest.tail
-# First, append a space to every undef/define line, to ease matching.
-echo 's/$/ /' >conftest.defines
-# Then, protect against being on the right side of a sed subst, or in
-# an unquoted here document, in config.status. If some macros were
-# called several times there might be several #defines for the same
-# symbol, which is useless. But do not sort them, since the last
-# AC_DEFINE must be honored.
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
-# NAME is the cpp macro being defined, VALUE is the value it is being given.
-# PARAMS is the parameter list in the macro definition--in most cases, it's
-# just an empty string.
-ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
-ac_dB='\\)[ (].*,\\1define\\2'
-ac_dC=' '
-ac_dD=' ,'
-
-uniq confdefs.h |
- sed -n '
- t rset
- :rset
- s/^[ ]*#[ ]*define[ ][ ]*//
- t ok
- d
- :ok
- s/[\\&,]/\\&/g
- s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
- s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
- ' >>conftest.defines
-
-# Remove the space that was appended to ease matching.
-# Then replace #undef with comments. This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-# (The regexp can be short, since the line contains either #define or #undef.)
-echo 's/ $//
-s,^[ #]*u.*,/* & */,' >>conftest.defines
-
-# Break up conftest.defines:
-ac_max_sed_lines=50
-
-# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
-# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
-# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
-# et cetera.
-ac_in='$ac_file_inputs'
-ac_out='"$tmp/out1"'
-ac_nxt='"$tmp/out2"'
-
-while :
-do
- # Write a here document:
- cat >>$CONFIG_STATUS <<_ACEOF
- # First, check the format of the line:
- cat >"\$tmp/defines.sed" <<\\CEOF
-/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
-/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
-b
-:def
-_ACEOF
- sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
- echo 'CEOF
- sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
- ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
- sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
- grep . conftest.tail >/dev/null || break
- rm -f conftest.defines
- mv conftest.tail conftest.defines
-done
-rm -f conftest.defines conftest.tail
-
-echo "ac_result=$ac_in" >>$CONFIG_STATUS
-cat >>$CONFIG_STATUS <<\_ACEOF
if test x"$ac_file" != x-; then
- echo "/* $configure_input */" >"$tmp/config.h"
- cat "$ac_result" >>"$tmp/config.h"
- if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
- { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+ } >"$tmp/config.h" \
+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+ { (exit 1); exit 1; }; }
+ if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
else
- rm -f $ac_file
- mv "$tmp/config.h" $ac_file
+ rm -f "$ac_file"
+ mv "$tmp/config.h" "$ac_file" \
+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+ { (exit 1); exit 1; }; }
fi
else
- echo "/* $configure_input */"
- cat "$ac_result"
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
+$as_echo "$as_me: error: could not create -" >&2;}
+ { (exit 1); exit 1; }; }
fi
- rm -f "$tmp/out12"
;;
- :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
-echo "$as_me: executing $ac_file commands" >&6;}
+ :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
;;
esac
@@ -9753,6 +10132,11 @@ _ACEOF
chmod +x $CONFIG_STATUS
ac_clean_files=$ac_clean_files_save
+test $ac_write_fail = 0 ||
+ { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+
# configure is writing to config.log, and then calls config.status.
# config.status does its own redirection, appending to config.log.
@@ -9780,7 +10164,8 @@ fi
#
if test "$no_recursion" != yes; then
- # Remove --cache-file and --srcdir arguments so they do not pile up.
+ # Remove --cache-file, --srcdir, and --disable-option-checking arguments
+ # so they do not pile up.
ac_sub_configure_args=
ac_prev=
eval "set x $ac_configure_args"
@@ -9809,9 +10194,11 @@ if test "$no_recursion" != yes; then
ac_prev=prefix ;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
;;
+ --disable-option-checking)
+ ;;
*)
case $ac_arg in
- *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
ac_sub_configure_args="$ac_sub_configure_args '$ac_arg'" ;;
esac
@@ -9821,7 +10208,7 @@ if test "$no_recursion" != yes; then
# in subdir configurations.
ac_arg="--prefix=$prefix"
case $ac_arg in
- *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
@@ -9830,6 +10217,10 @@ if test "$no_recursion" != yes; then
ac_sub_configure_args="--silent $ac_sub_configure_args"
fi
+ # Always prepend --disable-option-checking to silence warnings, since
+ # different subdirs can have different --enable and --with options.
+ ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
+
ac_popdir=`pwd`
for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
@@ -9838,8 +10229,8 @@ if test "$no_recursion" != yes; then
test -d "$srcdir/$ac_dir" || continue
ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
- echo "$as_me:$LINENO: $ac_msg" >&5
- echo "$ac_msg" >&6
+ $as_echo "$as_me:$LINENO: $ac_msg" >&5
+ $as_echo "$ac_msg" >&6
{ as_dir="$ac_dir"
case $as_dir in #(
-*) as_dir=./$as_dir;;
@@ -9848,7 +10239,7 @@ if test "$no_recursion" != yes; then
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -9857,7 +10248,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
+$as_echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -9878,17 +10269,17 @@ echo X"$as_dir" |
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
{ (exit 1); exit 1; }; }; }
ac_builddir=.
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -9927,8 +10318,8 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
# This should be Cygnus configure.
ac_sub_configure=$ac_aux_dir/configure
else
- { echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5
-echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5
+$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
ac_sub_configure=
fi
@@ -9941,17 +10332,21 @@ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
esac
- { echo "$as_me:$LINENO: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
-echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
+ { $as_echo "$as_me:$LINENO: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
+$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
# The eval makes quoting arguments work.
eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
--cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
- { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5
-echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5
+$as_echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;}
{ (exit 1); exit 1; }; }
fi
cd "$ac_popdir"
done
fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
diff --git a/configure.in b/configure.in
index 4a2b54605e..8e506026b8 100644
--- a/configure.in
+++ b/configure.in
@@ -6,6 +6,20 @@ AC_CONFIG_SRCDIR([include/features.h])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_AUX_DIR([scripts])
+dnl This is here so we can set $subdirs directly based on configure fragments.
+AC_CONFIG_SUBDIRS()
+
+AC_CANONICAL_HOST
+
+AC_PROG_CC
+if test $host != $build; then
+ AC_CHECK_PROGS(BUILD_CC, gcc cc)
+fi
+AC_SUBST(cross_compiling)
+AC_PROG_CPP
+# We need the C++ compiler only for testing.
+AC_PROG_CXX
+
if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
AC_MSG_ERROR([you must configure in a separate build directory])
fi
@@ -254,7 +268,56 @@ AC_ARG_ENABLE([all-warnings],
[])
AC_SUBST(all_warnings)
-AC_CANONICAL_HOST
+AC_ARG_ENABLE([multi-arch],
+ AC_HELP_STRING([--enable-multi-arch],
+ [enable single DSO with optimizations for multiple architectures]),
+ [multi_arch=$enableval],
+ [multi_arch=default])
+if test x"$multi_arch" != xno; then
+ multi_arch_d=/multiarch
+fi
+
+AC_ARG_ENABLE([experimental-malloc],
+ AC_HELP_STRING([--enable-experimental-malloc],
+ [enable experimental malloc features]),
+ [experimental_malloc=$enableval],
+ [])
+AC_SUBST(experimental_malloc)
+
+AC_ARG_ENABLE([nss-crypt],
+ AC_HELP_STRING([--enable-nss-crypt],
+ [enable libcrypt to use nss]),
+ [nss_crypt=$enableval],
+ [nss_crypt=no])
+if test x$nss_crypt = xyes; then
+ nss_includes=-I$(nss-config --includedir 2>/dev/null)
+ if test $? -ne 0; then
+ AC_MSG_ERROR([cannot find include directory with nss-config])
+ fi
+ old_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $nss_includes"
+ AC_COMPILE_IFELSE([typedef int PRBool;
+#include <hasht.h>
+#include <nsslowhash.h>
+void f (void) { NSSLOW_Init (); }],
+ libc_cv_nss_crypt=yes,
+ AC_MSG_ERROR([
+cannot find NSS headers with lowlevel hash function interfaces]))
+ old_LIBS="$LIBS"
+ LIBS="$LIBS -lfreebl3"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
+#include <hasht.h>
+#include <nsslowhash.h>],
+ [NSSLOW_Init();])],
+ libc_cv_nss_crypt=yes,
+ AC_MSG_ERROR([
+cannot link program using lowlevel NSS hash functions]))
+ CFLAGS="$old_CFLAGS"
+ LIBS="$old_LIBS"
+else
+ libc_cv_nss_crypt=no
+fi
+AC_SUBST(libc_cv_nss_crypt)
# The way shlib-versions is used to generate soversions.mk uses a
# fairly simplistic model for name recognition that can't distinguish
@@ -396,6 +459,7 @@ if test x"$add_ons" != x; then
libc_add_on_frag=$libc_add_on_srcdir/configure
libc_add_on_canonical=
+ libc_add_on_config_subdirs=
if test -r "$libc_add_on_frag"; then
AC_MSG_NOTICE(running configure fragment for add-on $libc_add_on)
libc_add_on_canonical=unknown
@@ -427,6 +491,20 @@ if test x"$add_ons" != x; then
test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
$d-srcdir = $subdir_srcdir"
done
+ for d in $libc_add_on_config_subdirs; do
+ case "$d" in
+ /*) AC_MSG_ERROR(dnl
+fragment uses absolute path in \$libc_add_on_config_subdirs) ;;
+ esac
+ if test ! -d "$libc_add_on_srcdir/$d"; then
+ AC_MSG_ERROR(fragment wants to configure missing directory $d)
+ fi
+ case "$libc_add_on" in
+ /*) AC_MSG_ERROR(dnl
+relative path required for add-on using \$libc_add_on_config_subdirs) ;;
+ esac
+ subdirs="$subdirs $libc_add_on/$d"
+ done
}
fi
if test -n "$libc_add_on"; then
@@ -484,7 +562,6 @@ changequote(,)dnl
# base_machine, we don't change it.
test -n "$base_machine" || case "$machine" in
a29k | am29000) base_machine=a29k machine=a29k ;;
-alpha*) base_machine=alpha machine=alpha/$machine ;;
c3[012]) base_machine=cx0 machine=cx0/c30 ;;
c4[04]) base_machine=cx0 machine=cx0/c40 ;;
i[34567]86) base_machine=i386 machine=i386/$machine ;;
@@ -609,7 +686,7 @@ for b in $base ''; do
test "$v" = / && continue
for o in /$ostry ''; do
test "$o" = / && continue
- for m in $mach ''; do
+ for m in $multi_arch_d $mach ''; do
for d in $add_ons_pfx ''; do
for a in $add_ons_sfx ''; do
if test -n "$m0$m0sub$b$v$o$m$msub"; then
@@ -643,6 +720,35 @@ for b in $base ''; do
done
done
+# If the assembler supports gnu_indirect_function symbol type and the
+# architecture supports multi-arch, we enable multi-arch by default.
+if test "$multi_arch" = default; then
+AC_CACHE_CHECK([for assembler gnu_indirect_function symbol type support],
+ libc_cv_asm_gnu_indirect_function, [dnl
+cat > conftest.s <<EOF
+.type foo,%gnu_indirect_function
+EOF
+if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD;
+then
+ libc_cv_asm_gnu_indirect_function=yes
+else
+ libc_cv_asm_gnu_indirect_function=no
+fi
+rm -f conftest*])
+ multi_arch=no
+ if test "$libc_cv_asm_gnu_indirect_function" = yes; then
+ case $sysnames_add_ons$sysnames in
+ *"$multi_arch_d"*)
+ multi_arch=yes
+ ;;
+ esac
+ fi
+fi
+if test x"$multi_arch" = xyes; then
+ AC_DEFINE(USE_MULTIARCH)
+fi
+AC_SUBST(multi_arch)
+
if test -z "$os_used" && test "$os" != none; then
AC_MSG_ERROR(Operating system $os is not supported.)
fi
@@ -830,24 +936,16 @@ if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
fi
AC_PROG_LN_S
-AC_PROG_CC
-if test $host != $build; then
- AC_CHECK_PROGS(BUILD_CC, gcc cc)
-fi
-AC_SUBST(cross_compiling)
-AC_PROG_CPP
-# We need the C++ compiler only for testing.
-AC_PROG_CXX
LIBC_PROG_BINUTILS
AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
# Accept binutils 2.13 or newer.
AC_CHECK_PROG_VER(AS, $AS, --version,
[GNU assembler.* \([0-9]*\.[0-9.]*\)],
- [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
+ [2.1[3-9]*|2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=: critic_missing="$critic_missing as")
AC_CHECK_PROG_VER(LD, $LD, --version,
[GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
- [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
+ [2.1[3-9]*|2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], LD=: critic_missing="$critic_missing ld")
# We need the physical current working directory. We cannot use the
# "pwd -P" shell builtin since that's not portable. Instead we try to
@@ -1158,6 +1256,46 @@ if test "x$libc_cv_asm_type_prefix" != xno; then
AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
fi
+AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
+ libc_cv_asm_unique_object, [dnl
+cat > conftest.s <<EOF
+${libc_cv_dot_text}
+_sym:
+.type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
+EOF
+if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
+ libc_cv_asm_unique_object=yes
+else
+ libc_cv_asm_unique_object=no
+fi
+rm -f conftest*])
+if test $libc_cv_asm_unique_object = yes; then
+ AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
+fi
+
+# For the multi-arch option we need support in the assembler.
+if test "$multi_arch" = yes; then
+ if test "x$libc_cv_asm_type_prefix" != xno; then
+AC_CACHE_CHECK([for assembler gnu_indirect_function symbol type support],
+ libc_cv_asm_gnu_indirect_function, [dnl
+cat > conftest.s <<EOF
+.type foo,%gnu_indirect_function
+EOF
+if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD;
+then
+ libc_cv_asm_gnu_indirect_function=yes
+else
+ libc_cv_asm_gnu_indirect_function=no
+fi
+rm -f conftest*])
+ else
+ libc_cv_asm_gnu_indirect_function=no
+ fi
+ if test x"$libc_cv_asm_gnu_indirect_function" != xyes; then
+ AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
+ fi
+fi
+
AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
[cat > conftest.s <<EOF
${libc_cv_dot_text}
@@ -2183,6 +2321,8 @@ AC_SUBST(libc_cv_forced_unwind)
dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
AC_SUBST(libc_cv_cpp_asm_debuginfo)
+AC_SUBST(libc_cv_cc_sse4)
+AC_SUBST(libc_cv_cc_avx)
AC_SUBST(use_ldconfig)
AC_SUBST(ldd_rewrite_script)
@@ -2201,18 +2341,18 @@ if test $shared = default; then
shared=$elf
fi
-AC_CACHE_CHECK([whether -fPIC is default], pic_default,
-[pic_default=yes
+AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
+[libc_cv_pic_default=yes
cat > conftest.c <<EOF
#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
# error PIC is default.
#endif
EOF
if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
- pic_default=no
+ libc_cv_pic_default=no
fi
rm -f conftest.*])
-AC_SUBST(pic_default)
+AC_SUBST(libc_cv_pic_default)
AC_SUBST(profile)
AC_SUBST(omitfp)
diff --git a/conform/conformtest.pl b/conform/conformtest.pl
index b15656bd60..d324d81c53 100644
--- a/conform/conformtest.pl
+++ b/conform/conformtest.pl
@@ -1,6 +1,7 @@
#! /usr/bin/perl
use Getopt::Long;
+use POSIX;
$CC = "gcc";
@@ -30,7 +31,8 @@ if (@headers == ()) {
}
if ($dialect ne "ISO" && $dialect ne "POSIX" && $dialect ne "XPG3"
- && $dialect ne "XPG4" && $dialect ne "UNIX98" && $dialect ne "XOPEN2K") {
+ && $dialect ne "XPG4" && $dialect ne "UNIX98" && $dialect ne "XOPEN2K"
+ && $dialect ne "XOPEN2K8" && $dialect ne "POSIX2008") {
die "unknown dialect \"$dialect\"";
}
@@ -40,6 +42,8 @@ $CFLAGS{"XPG3"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE";
$CFLAGS{"XPG4"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE_EXTENDED";
$CFLAGS{"UNIX98"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE=500";
$CFLAGS{"XOPEN2K"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE=600";
+$CFLAGS{"XOPEN2K8"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE=700";
+$CFLAGS{"POSIX2008"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_POSIX_C_SOURCE=200809L";
# These are the ISO C99 keywords.
@@ -52,14 +56,17 @@ $CFLAGS{"XOPEN2K"} = "-I. -fno-builtin '-D__attribute__(x)=' -D_XOPEN_SOURCE=600
# These are symbols which are known to pollute the namespace.
@knownproblems = ('unix', 'linux', 'i386');
-# Some headers need a bit more attention.
-$mustprepend{'inttypes.h'} = "#include <stddef.h>\n";
-$mustprepend{'regex.h'} = "#include <sys/types.h>\n";
-$mustprepend{'sched.h'} = "#include <sys/types.h>\n";
-$mustprepend{'signal.h'} = "#include <pthread.h>\n";
-$mustprepend{'stdio.h'} = "#include <sys/types.h>\n";
-$mustprepend{'wchar.h'} = "#include <stdarg.h>\n";
-$mustprepend{'wordexp.h'} = "#include <stddef.h>\n";
+if ($dialect ne "XOPEN2K8" && $dialect ne "POSIX2008") {
+ # Some headers need a bit more attention. At least with XPG7
+ # all headers should be self-contained.
+ $mustprepend{'inttypes.h'} = "#include <stddef.h>\n";
+ $mustprepend{'regex.h'} = "#include <sys/types.h>\n";
+ $mustprepend{'sched.h'} = "#include <sys/types.h>\n";
+ $mustprepend{'signal.h'} = "#include <pthread.h>\n";
+ $mustprepend{'stdio.h'} = "#include <sys/types.h>\n";
+ $mustprepend{'wchar.h'} = "#include <stdarg.h>\n";
+ $mustprepend{'wordexp.h'} = "#include <stddef.h>\n";
+}
# Make a hash table from this information.
while ($#keywords >= 0) {
@@ -71,7 +78,10 @@ while ($#knownproblems >= 0) {
$isknown{pop (@knownproblems)} = 1;
}
-$tmpdir = "/tmp";
+$uid = getuid();
+($pwname,$pwpasswd,$pwuid,$pwgid,
+ $pwquota,$pwcomment,$pwgcos,$pwdir,$pwshell,$pwexpire) = getpwuid($uid);
+$tmpdir = "$pwdir";
$verbose = 1;
@@ -660,9 +670,6 @@ while ($#headers >= 0) {
$maybe_opaque = 1;
}
- # Remember that this name is allowed.
- push @allow, $type;
-
# Generate a program to test for the availability of this constant.
open (TESTFILE, ">$fnamebase.c");
print TESTFILE "$prepend";
@@ -690,9 +697,6 @@ while ($#headers >= 0) {
$maybe_opaque = 1;
}
- # Remember that this name is allowed.
- push @allow, $type;
-
# Generate a program to test for the availability of this type.
open (TESTFILE, ">$fnamebase.c");
print TESTFILE "$prepend";
@@ -706,6 +710,27 @@ while ($#headers >= 0) {
compiletest ($fnamebase, "Testing for type $type",
"Type \"$type\" not available.", $missing, 0);
+ } elsif (/^tag *({([^}]*)|([a-zA-Z0-9_]*))/) {
+ my($type) = "$2$3";
+
+ # Remember that this name is allowed.
+ if ($type =~ /^struct *(.*)/) {
+ push @allow, $1;
+ } elsif ($type =~ /^union *(.*)/) {
+ push @allow, $1;
+ } else {
+ push @allow, $type;
+ }
+
+ # Generate a program to test for the availability of this type.
+ open (TESTFILE, ">$fnamebase.c");
+ print TESTFILE "$prepend";
+ print TESTFILE "#include <$h>\n";
+ print TESTFILE "$type;\n";
+ close (TESTFILE);
+
+ compiletest ($fnamebase, "Testing for type $type",
+ "Type \"$type\" not available.", $missing, 0);
} elsif (/^optional-function *({([^}]*)}|([a-zA-Z0-9_]*)) [(][*]([a-zA-Z0-9_]*) ([(].*[)])/) {
my($rettype) = "$2$3";
my($fname) = "$4";
@@ -1023,6 +1048,7 @@ while ($#headers >= 0) {
open (ALLOW, "$CC -E -D$dialect - < data/$ah-data |");
acontrol: while (<ALLOW>) {
+ chop;
next acontrol if (/^#/);
next acontrol if (/^[ ]*$/);
@@ -1032,8 +1058,8 @@ while ($#headers >= 0) {
push @allow, $1;
} elsif (/^typed-constant *([a-zA-Z0-9_]*) *({([^}]*)}|([^ ]*)) *([A-Za-z0-9_]*)?/) {
push @allow, 1;
- } elsif (/^type *({([^}]*)|([a-zA-Z0-9_]*))/) {
- my($type) = "$2$3";
+ } elsif (/^(type|tag) *({([^}]*)|([a-zA-Z0-9_]*))/) {
+ my($type) = "$3$4";
# Remember that this name is allowed.
if ($type =~ /^struct *(.*)/) {
diff --git a/conform/data/complex.h-data b/conform/data/complex.h-data
index 5c5eedd181..006d6e4de7 100644
--- a/conform/data/complex.h-data
+++ b/conform/data/complex.h-data
@@ -1,4 +1,4 @@
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined POSIX2008
macro complex
macro _Complex_I
optional-macro imaginary
diff --git a/conform/data/ctype.h-data b/conform/data/ctype.h-data
index 7454bd3288..091d377bec 100644
--- a/conform/data/ctype.h-data
+++ b/conform/data/ctype.h-data
@@ -12,13 +12,32 @@ function int isxdigit (int)
function int tolower (int)
function int toupper (int)
-#ifndef ISO
+#if !defined ISO && !defined POSIX && !defined POSIX2008
function int isascii (int)
function int toascii (int)
// XPG says the following two are macros. But we test a bit more strictly.
function int _toupper (int)
function int _tolower (int)
+#endif
+
+# if defined XOPEN2K8 || defined POSIX2008
+type locale_t
+
+function int isalnum_l (int, locale_t)
+function int isalpha_l (int, locale_t)
+function int iscntrl_l (int, locale_t)
+function int isdigit_l (int, locale_t)
+function int isgraph_l (int, locale_t)
+function int islower_l (int, locale_t)
+function int isprint_l (int, locale_t)
+function int ispunct_l (int, locale_t)
+function int isspace_l (int, locale_t)
+function int isupper_l (int, locale_t)
+function int isxdigit_l (int, locale_t)
+function int tolower_l (int, locale_t)
+function int toupper_l (int, locale_t)
+# endif
// The following is not entirely correct. It should be is[a-z]* but the
// replacement fnmatch implementation does not grok it.
@@ -26,4 +45,3 @@ allow is*
allow to*
allow *_t
-#endif
diff --git a/conform/data/dirent.h-data b/conform/data/dirent.h-data
index e496dab0dd..f1cd59cdaf 100644
--- a/conform/data/dirent.h-data
+++ b/conform/data/dirent.h-data
@@ -3,19 +3,32 @@ type DIR
type {struct dirent}
+# if !defined POSIX && !defined POSIX2008
element {struct dirent} ino_t d_ino
+# endif
element {struct dirent} char d_name []
+# if !defined POSIX && !defined POSIX2008
type ino_t
+#endif
function int closedir (DIR*)
function {DIR*} opendir (const char*)
function {struct dirent*} readdir (DIR*)
function int readdir_r (DIR*, struct dirent*, struct dirent**)
function void rewinddir (DIR*)
+# if !defined POSIX && !defined POSIX2008
function void seekdir (DIR*, long int)
function {long int} telldir (DIR*)
+# endif
allow d_*
allow *_t
+
+# if defined XOPEN2K8 || defined POSIX2008
+function int alphasort (const struct dirent**, const struct dirent**)
+function int dirfd (DIR*)
+function int scandir (const char*, struct dirent***, int(*)(const struct dirent*), int(*)(const struct dirent**,const struct dirent **))
+function {DIR*} fdopendir (int)
+# endif
#endif
diff --git a/conform/data/errno.h-data b/conform/data/errno.h-data
index 67225248a2..ffdf6b5c4d 100644
--- a/conform/data/errno.h-data
+++ b/conform/data/errno.h-data
@@ -79,6 +79,11 @@ constant ETXTBSY
constant EWOULDBLOCK
constant EXDEV
+# if defined XOPEN2K8 || defined POSIX2008
+constant ENOTRECOVERABLE
+constant EOWNERDEAD
+# endif
+
// variable int errno
allow errno
diff --git a/conform/data/fcntl.h-data b/conform/data/fcntl.h-data
index c8caf0360f..7769a446dd 100644
--- a/conform/data/fcntl.h-data
+++ b/conform/data/fcntl.h-data
@@ -60,9 +60,11 @@ constant S_IWOTH
constant S_IXOTH
constant S_ISUID
constant S_ISGID
+#if !defined POSIX && !defined POSIX2008
constant S_ISVTX
+#endif
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
constant POSIX_FADV_NORMAL
constant POSIX_FADV_SEQUENTIAL
constant POSIX_FADV_RANDOM
@@ -86,11 +88,32 @@ type pid_t
function int creat (const char*, mode_t)
function int fcntl (int, int, ...)
function int open (const char*, int, ...)
-#ifdef XOPEN2K
+#if defined XOPEN2K8 || defined POSIX2008
+function int openat (int, const char*, int, ...)
+#endif
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function int posix_fadvise (int, off_t, off_t, int)
function int posix_fallocate (int, off_t, off_t)
#endif
+#if defined XOPEN2K8 || defined POSIX2008
+constant O_TTY_INIT
+constant O_CLOEXEC
+constant O_EXEC
+constant O_SEARCH
+constant O_DIRECTORY
+constant O_NOFOLLOW
+constant FD_CLOEXEC
+constant F_DUPFD_CLOEXEC
+constant AT_FDCWD
+constant AT_EACCESS
+constant AT_SYMLINK_NOFOLLOW
+constant AT_SYMLINK_FOLLOW
+constant AT_REMOVEDIR
+
+function int openat(int, const char*, int, ...)
+#endif
+
allow-header sys/stat.h
allow-header unistd.h
@@ -99,4 +122,8 @@ allow F_*
allow O_*
allow S_*
allow *_t
+
+allow timespec
+allow tv_nsec
+allow tv_sec
#endif
diff --git a/conform/data/fmtmsg.h-data b/conform/data/fmtmsg.h-data
index da1ed65ac4..67c35c1c93 100644
--- a/conform/data/fmtmsg.h-data
+++ b/conform/data/fmtmsg.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined POSIX && !defined POSIX2008
macro MM_HARD
constant MM_HARD
diff --git a/conform/data/fnmatch.h-data b/conform/data/fnmatch.h-data
index ef34fc4e04..96591d6d43 100644
--- a/conform/data/fnmatch.h-data
+++ b/conform/data/fnmatch.h-data
@@ -3,7 +3,9 @@ constant FNM_NOMATCH
constant FNM_PATHNAME
constant FNM_PERIOD
constant FNM_NOESCAPE
+#if !defined XOPEN2K8 && !defined POSIX2008
constant FNM_NOSYS
+#endif
function int fnmatch (const char*, const char*, int)
diff --git a/conform/data/ftw.h-data b/conform/data/ftw.h-data
index 81c50070d1..eb499243a5 100644
--- a/conform/data/ftw.h-data
+++ b/conform/data/ftw.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined POSIX && !defined POSIX2008
type {struct FTW}
element {struct FTW} int base
element {struct FTW} int level
diff --git a/conform/data/glob.h-data b/conform/data/glob.h-data
index 221a3154cb..9f90f8b84b 100644
--- a/conform/data/glob.h-data
+++ b/conform/data/glob.h-data
@@ -15,7 +15,9 @@ constant GLOB_NOSORT
constant GLOB_ABORTED
constant GLOB_NOMATCH
constant GLOB_NOSPACE
+# if !defined XOPEN2K8 && !defined POSIX2008
constant GLOB_NOSYS
+# endif
function int glob (const char*, int, int (*) (const char*, int), glob_t*)
function void globfree (glob_t *)
diff --git a/conform/data/grp.h-data b/conform/data/grp.h-data
index 91401b31d9..16519506e5 100644
--- a/conform/data/grp.h-data
+++ b/conform/data/grp.h-data
@@ -7,6 +7,9 @@ element {struct group} {char**} gr_mem
# ifndef POSIX
type gid_t
# endif
+# if defined XOPEN2K8 || defined POSIX2008
+type size_t
+# endif
function {struct group*} getgrgid (gid_t)
function {struct group*} getgrnam (const char*)
@@ -15,7 +18,9 @@ function int getgrgid_r (gid_t, struct group*, char *, size_t, struct group**)
function int getgrnam_r (const char *, struct group *, char *, size_t, struct group**)
function {struct group*} getgrent (void)
function void endgrent (void)
+# ifndef POSIX2008
function void setgrent (void)
+# endif
# endif
allow gr_*
diff --git a/conform/data/iconv.h-data b/conform/data/iconv.h-data
index f1e2ea0527..7071d90f60 100644
--- a/conform/data/iconv.h-data
+++ b/conform/data/iconv.h-data
@@ -1,5 +1,8 @@
#if !defined ISO && !defined POSIX
type iconv_t
+# if defined XOPEN2K8 || defined POSIX2008
+type size_t
+# endif
function iconv_t iconv_open (const char*, const char*)
function size_t iconv (iconv_t, char**, size_t*, char**, size_t*)
diff --git a/conform/data/inttypes.h-data b/conform/data/inttypes.h-data
index 93e4713c95..17d2b9717a 100644
--- a/conform/data/inttypes.h-data
+++ b/conform/data/inttypes.h-data
@@ -17,8 +17,8 @@ function intmax_t imaxabs (intmax_t)
function imaxdiv_t imaxdiv (intmax_t, intmax_t)
function intmax_t strtoimax (const char*, char**, int)
function uintmax_t strtoumax (const char*, char**, int)
-function intmax_t wcstoimax (const wchar_t*, wchar_t**, int)
-function uintmax_t wcstoumax (const wchar_t*, wchar_t**, int)
+function intmax_t wcstoimax (const __gwchar_t*, __gwchar_t**, int)
+function uintmax_t wcstoumax (const __gwchar_t*, __gwchar_t**, int)
allow PRI*
allow SCN*
diff --git a/conform/data/langinfo.h-data b/conform/data/langinfo.h-data
index 2fe38a266d..95bc3f934e 100644
--- a/conform/data/langinfo.h-data
+++ b/conform/data/langinfo.h-data
@@ -55,7 +55,15 @@ constant YESEXPR
constant NOEXPR
constant CRNCYSTR
+type nl_item
+# if defined XOPEN2K8 || defined POSIX2008
+type locale_t
+# endif
+
function {char*} nl_langinfo (nl_item)
+# if defined XOPEN2K8 || defined POSIX2008
+function {char*} nl_langinfo_l (nl_item, locale_t)
+# endif
allow-header nl_types.h
diff --git a/conform/data/libgen.h-data b/conform/data/libgen.h-data
index ca0126fbb1..b749b8dcde 100644
--- a/conform/data/libgen.h-data
+++ b/conform/data/libgen.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined POSIX && !defined POSIX2008
function {char*} basename (char*)
function {char*} dirname (char*)
diff --git a/conform/data/limits.h-data b/conform/data/limits.h-data
index 9801ddeb86..2e720a9b78 100644
--- a/conform/data/limits.h-data
+++ b/conform/data/limits.h-data
@@ -11,7 +11,9 @@ allow LOGIN_NAME_MAX
allow MQ_OPEN_MAX
allow OPEN_MAX
allow PAGESIZE
+#if !defined POSIX && !defined POSIX2008
allow PAGE_SIZE
+#endif
allow PTHREAD_DESTRUCTOR_ITERATIONS
allow PTHREAD_KEYS_MAX
allow PTHREAD_STACK_MIN
@@ -131,12 +133,18 @@ constant SHRT_MIN <= -32767
optional-constant CHARCLASS_NAME_MAX >= 14
optional-constant NL_ARGMAX >= 9
+#if !defined POSIX && !defined POSIX2008
optional-constant NL_LANGMAX >= 14
+#endif
optional-constant NL_MSGMAX >= 32767
+#if !defined XOPEN2K8 && !defined POSIX2008
optional-constant NL_NMAX
+#endif
optional-constant NL_SETMAX >= 255
optional-constant NL_TEXTMAX
+#if !defined POSIX && !defined POSIX2008
optional-constant NZERO >= 20
+#endif
optional-constant TMP_MAX >= 10000
allow *_MAX
diff --git a/conform/data/locale.h-data b/conform/data/locale.h-data
index 84bd6abc09..f6e6c22c80 100644
--- a/conform/data/locale.h-data
+++ b/conform/data/locale.h-data
@@ -17,7 +17,7 @@ element {struct lconv} char p_cs_precedes
element {struct lconv} char p_sep_by_space
element {struct lconv} char p_sign_posn
element {struct lconv} {char*} thousands_sep
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
element {struct lconv} char int_n_cs_precedes
element {struct lconv} char int_n_sep_by_space
element {struct lconv} char int_n_sign_posn
@@ -36,8 +36,31 @@ macro LC_MONETARY
macro LC_NUMERIC
macro LC_TIME
+#if defined XOPEN2K8 || defined POSIX2008
+constant LC_GLOBAL_LOCALE
+
+macro LC_COLLATE_MASK
+macro LC_CTYPE_MASK
+macro LC_MESSAGES_MASK
+macro LC_MONETARY_MASK
+macro LC_NUMERIC_MASK
+macro LC_TIME_MASK
+macro LC_ALL_MASK
+
+type locale_t
+#endif
+
function {struct lconv*} localeconv (void)
function {char*} setlocale (int, const char*)
+#if defined XOPEN2K8 || defined POSIX2008
+function locale_t duplocale (locale_t)
+function void freelocale (locale_t)
+function locale_t newlocale (int, const char*, locale_t)
+function locale_t uselocale (locale_t)
+#endif
allow LC_*
allow *_t
+#if defined XOPEN2K8 || defined POSIX2008
+allow LC_*_MASK
+#endif
diff --git a/conform/data/math.h-data b/conform/data/math.h-data
index 40312effdd..f55e63298c 100644
--- a/conform/data/math.h-data
+++ b/conform/data/math.h-data
@@ -12,6 +12,7 @@ macro islessequal
macro islessgreater
macro isunordered
+# ifndef POSIX2008
constant M_E
constant M_LOG2E
constant M_LOG10E
@@ -27,6 +28,7 @@ constant M_SQRT2
constant M_SQRT1_2
constant MAXFLOAT
+# endif
constant HUGE_VAL
constant HUGE_VALF
constant HUGE_VALL
@@ -50,6 +52,8 @@ macro MATH_ERRNO == 1
macro MATH_ERREXCEPT == 2
#endif
+macro math_errhandling
+
function double acos (double)
function double asin (double)
function double atan (double)
@@ -77,17 +81,22 @@ function double tan (double)
function double tanh (double)
function double erf (double)
function double erfc (double)
+#if defined XPG3 || defined XPG4 || defined UNIX98
function double gamma (double)
+#endif
function double hypot (double, double)
+#if !defined POSIX && !defined POSIX2008
function double j0 (double)
function double j1 (double)
function double jn (int, double)
+#endif
function double lgamma (double)
function double tgamma (double)
+#if !defined POSIX && !defined POSIX2008
function double y0 (double)
function double y1 (double)
function double yn (int, double)
-function int isnan (double)
+#endif
function double acosh (double)
function double asinh (double)
function double atanh (double)
@@ -108,7 +117,9 @@ function {long long} llrint (double)
function long lround (double)
function {long long} llround (double)
function double remquo (double, double, int*)
+#if defined XPG3 && defined XPG4 && defined UNIX98 && defined XOPEN2K
function double scalb (double, double)
+#endif
function double scalbn (double, int)
function double scalbln (double, long)
function double fdim (double, double)
@@ -117,8 +128,10 @@ function double fmin (double, double)
function double fma (double, double, double)
function double nan (const char*)
+#if !defined POSIX && !defined POSIX2008
// variable signgam
allow signgam
+#endif
#if !defined ISO && !defined POSIX
function float acosf (float)
@@ -148,17 +161,22 @@ function float tanf (float)
function float tanhf (float)
function float erff (float)
function float erfcf (float)
+#if defined XPG3 || defined XPG4 || defined UNIX98
function float gammaf (float)
+#endif
function float hypotf (float, float)
+#if !defined POSIX && !defined POSIX2008
function float j0f (float)
function float j1f (float)
function float jnf (int, float)
+#endif
function float lgammaf (float)
function float tgammaf (float)
+#if !defined POSIX && !defined POSIX2008
function float y0f (float)
function float y1f (float)
function float ynf (int, float)
-function int isnanf (float)
+#endif
function float acoshf (float)
function float asinhf (float)
function float atanhf (float)
@@ -179,7 +197,9 @@ function {long long} llrintf (float)
function long lroundf (float)
function {long long} llroundf (float)
function float remquof (float, float, int*)
+#if defined XPG3 && defined XPG4 && defined UNIX98 && defined XOPEN2K
function float scalbf (float, float)
+#endif
function float scalbnf (float, int)
function float scalblnf (float, long)
function float fdimf (float, float)
@@ -215,17 +235,22 @@ function {long double} tanl (long double)
function {long double} tanhl (long double)
function {long double} erfl (long double)
function {long double} erfcl (long double)
+#if defined XPG3 || defined XPG4 || defined UNIX98
function {long double} gammal (long double)
+#endif
function {long double} hypotl (long double, long double)
+#if !defined POSIX && !defined POSIX2008
function {long double} j0l (long double)
function {long double} j1l (long double)
function {long double} jnl (int, long double)
+#endif
function {long double} lgammal (long double)
function {long double} tgammal (long double)
+#if !defined POSIX && !defined POSIX2008
function {long double} y0l (long double)
function {long double} y1l (long double)
function {long double} ynl (int, long double)
-function int isnanl (long double)
+#endif
function {long double} acoshl (long double)
function {long double} asinhl (long double)
function {long double} atanhl (long double)
@@ -246,7 +271,9 @@ function {long long} llrintl (long double)
function long lroundl (long double)
function {long long} llroundl (long double)
function {long double} remquol (long double, long double, int*)
+#if defined XPG3 && defined XPG4 && defined UNIX98 && defined XOPEN2K
function {long double} scalbl (long double, long double)
+#endif
function {long double} scalbnl (long double, int)
function {long double} scalblnl (long double, long)
function {long double} fdiml (long double, long double)
diff --git a/conform/data/monetary.h-data b/conform/data/monetary.h-data
index eab8384d76..7935f2ab85 100644
--- a/conform/data/monetary.h-data
+++ b/conform/data/monetary.h-data
@@ -1,8 +1,14 @@
#if !defined ISO && !defined POSIX
type size_t
type ssize_t
+# if defined XOPEN2K8 || defined POSIX2008
+type locale_t
+# endif
function ssize_t strfmon (char*, size_t, const char*, ...)
+# if defined XOPEN2K8 || defined POSIX2008
+function ssize_t strfmon_l (char*, size_t, locale_t, const char*, ...)
+# endif
allow *_t
#endif
diff --git a/conform/data/mqueue.h-data b/conform/data/mqueue.h-data
index 6ec1e312d5..16335a556f 100644
--- a/conform/data/mqueue.h-data
+++ b/conform/data/mqueue.h-data
@@ -18,11 +18,19 @@ function ssize_t mq_receive (mqd_t, char*, size_t, unsigned int*)
function int mq_send (mqd_t, const char*, size_t, unsigned int)
function int mq_setattr (mqd_t, const struct mq_attr*, struct mq_attr*)
function int mq_unlink (const char*)
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
optional-function ssize_t mq_timedreceive (mqd_t, char*, size_t, unsigned int*, const struct timespec*)
optional-function int mq_timedsend (mqd_t, const char*, size_t, unsigned int, const struct timespec*)
#endif
+#if defined XOPEN2K8 || defined POSIX2008
+type pthread_attr_t
+type size_t
+type ssize_t
+type {struct timespec}
+type {struct sigevent}
+#endif
+
allow-header fcntl.h
allow-header signal.h
allow-header sys/types.h
diff --git a/conform/data/ndbm.h-data b/conform/data/ndbm.h-data
index 6e606e589c..af091de0fd 100644
--- a/conform/data/ndbm.h-data
+++ b/conform/data/ndbm.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined POSIX && !defined POSIX2008
type datum
element datum {void*} dptr
element datum size_t dsize
diff --git a/conform/data/netdb.h-data b/conform/data/netdb.h-data
index 483a3fcc96..254ea65027 100644
--- a/conform/data/netdb.h-data
+++ b/conform/data/netdb.h-data
@@ -34,6 +34,7 @@ element {struct servent} {char*} s_proto
macro IPPORT_RESERVED
+#if !defined XOPEN2K8 && !defined POSIX2008
// variable int h_errno
allow h_errno
@@ -41,6 +42,7 @@ macro HOST_NOT_FOUND
macro NO_DATA
macro NO_RECOVERY
macro TRY_AGAIN
+#endif
type {struct addrinfo}
element {struct addrinfo} int ai_flags
diff --git a/conform/data/pthread.h-data b/conform/data/pthread.h-data
index aa5861f1d8..5a536c7bf9 100644
--- a/conform/data/pthread.h-data
+++ b/conform/data/pthread.h-data
@@ -25,6 +25,10 @@ macro PTHREAD_MUTEX_INITIALIZER
constant PTHREAD_MUTEX_RECURSIVE
macro PTHREAD_RWLOCK_INITIALIZER
# endif
+# if defined XOPEN2K8 || defined POSIX2008
+constant PTHREAD_MUTEX_ROBUST
+constant PTHREAD_MUTEX_STALLED
+# endif
type pthread_attr_t
type pthread_barrier_t
@@ -90,7 +94,7 @@ function int pthread_create (pthread_t*, const pthread_attr_t*, void *(*) (void*
function int pthread_detach (pthread_t)
function int pthread_equal (pthread_t, pthread_t)
function void pthread_exit (void*)
-# ifndef POSIX
+# if !defined POSIX && !defined POSIX2008
function int pthread_getconcurrency (void)
# endif
function int pthread_getcpuclockid (pthread_t, clockid_t*)
@@ -135,12 +139,12 @@ function int pthread_rwlockattr_setpshared (pthread_rwlockattr_t*, int)
function pthread_t pthread_self (void)
function int pthread_setcancelstate (int, int*)
function int pthread_setcanceltype (int, int*)
-# ifndef POSIX
+# if !defined POSIX && !defined POSIX2008
function int pthread_setconcurrency (int)
# endif
function int pthread_setschedparam (pthread_t, int, const struct sched_param*)
function int pthread_setspecific (pthread_key_t, const void*)
-#ifndef XOPEN2K
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
function int pthread_sigmask (int, const sigset_t*, sigset_t*)
#endif
function int pthread_spin_destroy (pthread_spinlock_t*)
@@ -149,6 +153,11 @@ function int pthread_spin_lock (pthread_spinlock_t*)
function int pthread_spin_trylock (pthread_spinlock_t*)
function int pthread_spin_unlock (pthread_spinlock_t*)
function void pthread_testcancel (void)
+# if defined XOPEN2K8 || defined POSIX2008
+function int pthread_mutex_consistent (pthread_mutex_t *)
+function int pthread_mutexattr_getrobust (__const pthread_mutexattr_t*, int*)
+function int pthread_mutexattr_setrobust (pthread_mutexattr_t*, int)
+# endif
allow-header sched.h
allow-header time.h
diff --git a/conform/data/pwd.h-data b/conform/data/pwd.h-data
index 1267708b98..a8edf27730 100644
--- a/conform/data/pwd.h-data
+++ b/conform/data/pwd.h-data
@@ -9,15 +9,20 @@ element {struct passwd} {char*} pw_shell
# ifndef POSIX
type uid_t
type gid_t
+# if defined XOPEN2K8 || defined POSIX2008
+type size_t
+# endif
# endif
function {struct passwd*} getpwnam (const char*)
function {struct passwd*} getpwuid (uid_t)
function int getpwnam_r (const char*, struct passwd*, char*, size_t, struct passwd**)
function int getpwuid_r (uid_t, struct passwd*, char*, size_t, struct passwd**)
+# ifndef POSIX2008
function void endpwent (void)
function {struct passwd*} getpwent (void)
function void setpwent (void)
+# endif
allow pw_*
allow *_t
diff --git a/conform/data/regex.h-data b/conform/data/regex.h-data
index 38495d5b83..73e06a8266 100644
--- a/conform/data/regex.h-data
+++ b/conform/data/regex.h-data
@@ -28,7 +28,9 @@ constant REG_EBRACE
constant REG_BADBR
constant REG_ESPACE
constant REG_BADRPT
+# if !defined XOPEN2K8 && !defined POSIX2008
constant REG_ENOSYS
+# endif
function int regcomp (regex_t*, const char*, int)
function int regexec (const regex_t*, const char*, size_t, regmatch_t[], int)
diff --git a/conform/data/sched.h-data b/conform/data/sched.h-data
index d4c5ae72cd..585145011a 100644
--- a/conform/data/sched.h-data
+++ b/conform/data/sched.h-data
@@ -6,6 +6,12 @@ optional-element {struct sched_param} {struct timespec} sched_ss_repl_period
optional-element {struct sched_param} {struct timespec} sched_ss_init_budget
optional-element {struct sched_param} int sched_ss_max_repl
+# if defined XOPEN2K8 || defined POSIX2008
+type pid_t
+type time_t
+type {struct timespec}
+# endif
+
constant SCHED_FIFO
constant SCHED_RR
optional-constant SCHED_SPORADIC
diff --git a/conform/data/search.h-data b/conform/data/search.h-data
index da7f2a1332..dadb1ff71c 100644
--- a/conform/data/search.h-data
+++ b/conform/data/search.h-data
@@ -1,4 +1,4 @@
-#if !defined ISO && !defined POSIX
+#if !defined ISO && !defined POSIX && !defined POSIX2008
type ENTRY
type {struct entry}
element {struct entry} {char*} key
diff --git a/conform/data/semaphore.h-data b/conform/data/semaphore.h-data
index 20fe0706b7..5484884fff 100644
--- a/conform/data/semaphore.h-data
+++ b/conform/data/semaphore.h-data
@@ -14,7 +14,7 @@ function int sem_trywait (sem_t*)
function int sem_unlink (const char*)
function int sem_wait (sem_t*)
-# if !defined POSIX
+# ifndef POSIX
allow-header fcntl.h
allow-header sys/types.h
# endif
diff --git a/conform/data/setjmp.h-data b/conform/data/setjmp.h-data
index ef29c9cbe8..a89a33fa73 100644
--- a/conform/data/setjmp.h-data
+++ b/conform/data/setjmp.h-data
@@ -6,7 +6,7 @@ type sigjmp_buf
function void longjmp (jmp_buf, int)
#ifndef ISO
function void siglongjmp (sigjmp_buf, int)
-# ifndef POSIX
+# if !defined POSIX && !defined POSIX2008
function void _longjmp (jmp_buf, int)
# endif
#endif
@@ -14,7 +14,7 @@ function void _longjmp (jmp_buf, int)
macro-function int setjmp (jmp_buf)
#ifndef ISO
macro-function int sigsetjmp (sigjmp_buf, int)
-# ifndef POSIX
+# if !defined POSIX && !defined POSIX2008
macro-function int _setjmp (jmp_buf)
# endif
#endif
diff --git a/conform/data/signal.h-data b/conform/data/signal.h-data
index 95bd37299b..6dbf1fb847 100644
--- a/conform/data/signal.h-data
+++ b/conform/data/signal.h-data
@@ -1,11 +1,30 @@
typed-constant SIG_DFL {void(*)(int)}
typed-constant SIG_ERR {void(*)(int)}
+#if !defined ISO && !defined POSIX && !defined POSIX2008
typed-constant SIG_HOLD {void(*)(int)}
+#endif
typed-constant SIG_IGN {void(*)(int)}
type sig_atomic_t
type sigset_t
type pid_t
+#if defined XOPEN2K8 || defined POSIX2008
+type size_t
+type pthread_t
+type uid_t
+
+type mcontext_t
+
+type ucontext_t
+element ucontext_t {ucontext_t*} uc_link
+element ucontext_t sigset_t uc_sigmask
+element ucontext_t stack_t uc_stack
+element ucontext_t mcontext_t uc_mcontext
+
+type {struct timespec}
+element {struct timespec} __time_t tv_sec
+element {struct timespec} long tv_nsec
+#endif
element {union sigval} int sival_int
element {union sigval} {void*} sival_ptr
@@ -52,7 +71,9 @@ constant SIGBUS
constant SIGPOLL
constant SIGPROF
constant SIGSYS
+#if !defined POSIX && !defined POSIX2008
constant SIGTRAP
+#endif
constant SIGURG
constant SIGVTALRM
constant SIGXCPU
@@ -69,16 +90,20 @@ constant SA_NOCLDSTOP
constant SIG_BLOCK
constant SIG_UNBLOCK
constant SIG_SETMASK
+#if !defined POSIX && !defined POSIX2008
constant SA_ONSTACK
+#endif
constant SA_RESETHAND
constant SA_RESTART
constant SA_SIGINFO
constant SA_NOCLDWAIT
constant SA_NODEFER
+#if !defined POSIX && !defined POSIX2008
constant SS_ONSTACK
constant SS_DISABLE
constant MINSIGSTKSZ
constant SIGSTKSZ
+#endif
type ucontext_t
@@ -101,7 +126,9 @@ element {struct sigstack} {void*} ss_sp
type siginfo_t
element siginfo_t int si_signo
+#if !defined POSIX && !defined POSIX2008
element siginfo_t int si_errno
+#endif
element siginfo_t int si_code
element siginfo_t pid_t si_pid
element siginfo_t uid_t si_uid
@@ -151,34 +178,50 @@ constant SI_TIMER
constant SI_ASYNCIO
constant SI_MESGQ
+#if !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008
function void (*bsd_signal (int, void(*)(int)))(int)
+#endif
function int kill (pid_t, int)
+#if !defined POSIX && !defined POSIX2008
function int killpg (pid_t, int)
+#endif
function int pthread_kill (pthread_t, int)
function int pthread_sigmask (int, const sigset_t*, sigset_t*)
function int raise (int)
function int sigaction (int, const struct sigaction*, struct sigaction*)
function int sigaddset (sigset_t*, int)
+#if !defined POSIX && !defined POSIX2008
function int sigaltstack (const stack_t*, stack_t*)
+#endif
function int sigdelset (sigset_t*, int)
function int sigemptyset (sigset_t*)
function int sigfillset (sigset_t*)
+#if !defined POSIX && !defined POSIX2008
function int sighold (int)
function int sigignore (int)
function int siginterrupt (int, int)
+#endif
function int sigismember (const sigset_t*, int)
function void (*signal (int, void(*)(int)))(int)
+#if !defined POSIX && !defined POSIX2008
function int sigpause (int)
+#endif
function int sigpending (sigset_t*)
function int sigprocmask (int, const sigset_t*, sigset_t*)
function int sigqueue (pid_t, int, const union sigval)
+#if !defined POSIX && !defined POSIX2008
function int sigrelse (int)
function void (*sigset (int, void(*)(int)))(int)
+#endif
function int sigstack (struct sigstack*, struct sigstack*)
function int sigsuspend (const sigset_t*)
function int sigtimedwait (const sigset_t*, siginfo_t*, const struct timespec*)
function int sigwait (const sigset_t*, int*)
function int sigwaitinfo (const sigset_t*, siginfo_t*)
+#if defined XOPEN2K8 || defined POSIX2008
+function void psiginfo (const siginfo_t*, const char*)
+function void psignal (int, const char*)
+#endif
// The following expressions are not entirely correct but the current
// poorfnmatch implementation doesn't grok the right form.
diff --git a/conform/data/spawn.h-data b/conform/data/spawn.h-data
index 8afca02216..81f32d0308 100644
--- a/conform/data/spawn.h-data
+++ b/conform/data/spawn.h-data
@@ -1,6 +1,12 @@
#ifndef ISO
type posix_spawnattr_t
type posix_spawn_file_actions_t
+# if defined XOPEN2K8 || defined POSIX2008
+type mode_t
+type pid_t
+type sigset_t
+type {struct sched_param}
+# endif
constant POSIX_SPAWN_RESETIDS
constant POSIX_SPAWN_SETPGROUP
diff --git a/conform/data/stdio.h-data b/conform/data/stdio.h-data
index c3f071e8f9..cba7721d9a 100644
--- a/conform/data/stdio.h-data
+++ b/conform/data/stdio.h-data
@@ -7,7 +7,9 @@ constant _IOLBF
constant _IONBF
constant L_ctermid
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
constant L_cuserid
+#endif
constant L_tmpnam
constant SEEK_CUR
@@ -20,7 +22,9 @@ constant EOF
constant NULL
+#if !defined POSIX && !defined POSIX2008
constant P_tmpdir
+#endif
macro stdin
macro stdout
@@ -30,10 +34,19 @@ type FILE
type fpos_t
type va_list
type size_t
+#if defined XOPEN2K8 || defined POSIX2008
+type off_t
+type ssize_t
+#endif
function void clearerr (FILE*)
function {char*} ctermid (char*)
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
function {char*} cuserid (char*)
+#endif
+#if defined XOPEN2K8 || defined POSIX2008
+function int dprintf (int, const char*, ...)
+#endif
function int fclose (FILE*)
function {FILE*} fdopen (int, const char*)
function int feof (FILE*)
@@ -44,6 +57,9 @@ function int fgetpos (FILE*, fpos_t*)
function {char*} fgets (char*, int, FILE*)
function int fileno (FILE*)
function void flockfile (FILE*)
+#if defined XOPEN2K8 || defined POSIX2008
+function {FILE*} fmemopen (void*, size_t, const char*)
+#endif
function {FILE*} fopen (const char*, const char*)
function int fprintf (FILE*, const char*, ...)
function int fputc (int, FILE*)
@@ -63,13 +79,20 @@ function int getc (FILE*)
function int getchar (void)
function int getc_unlocked (FILE*)
function int getchar_unlocked ()
-#ifndef XOPEN2K
+#if defined XOPEN2K8 || defined POSIX2008
+function ssize_t getdelim (char**, size_t*, int, FILE*)
+function ssize_t getline (char**, size_t*, FILE*)
+#endif
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
function int getopt (int, char *const[], const char *)
#endif
function {char*} gets (char*)
-#ifndef XOPEN2K
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
function int getw (FILE*)
#endif
+#if defined XOPEN2K8 || defined POSIX2008
+function {FILE*} open_memstream (char**, size_t*)
+#endif
function int pclose (FILE*)
function void perror (const char*)
function {FILE*} popen (const char*, const char*)
@@ -79,11 +102,14 @@ function int putchar (int)
function int putc_unlocked (int, FILE*)
function int putchar_unlocked (int)
function int puts (const char*)
-#ifndef XOPEN2K
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
function int putw (int, FILE*)
#endif
function int remove (const char*)
function int rename (const char*, const char*)
+#if defined XOPEN2K8 || defined POSIX2008
+function int renameat (int, const char*, int, const char*)
+#endif
function void rewind (FILE*)
function int scanf (const char*, ...)
function void setbuf (FILE*, char*)
@@ -91,26 +117,31 @@ function int setvbuf (FILE*, char*, int, size_t)
function int snprintf (char*, size_t, const char*, ...)
function int sprintf (char *, const char *, ...)
function int sscanf (const char*, const char*, ...)
+#if !defined POSIX && !defined POSIX2008
function {char*} tempnam (const char*, const char*)
+#endif
function {FILE*} tmpfile (void)
function {char*} tmpnam (char*)
function int ungetc (int, FILE*)
+#if defined XOPEN2K8 || defined POSIX2008
+function int vdprintf (int, const char*, va_list)
+#endif
function int vfprintf (FILE*, const char*, va_list)
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function int vfscanf (FILE*, const char*, va_list)
#endif
function int vprintf (const char*, va_list)
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function int vscanf (const char*, va_list)
#endif
function int vsnprintf (char*, size_t, const char*, va_list)
function int vsprintf (char*, const char*, va_list)
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function int vsscanf (const char*, const char*, va_list)
#endif
#if !defined ISO && !defined POSIX
-#ifndef XOPEN2K
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
variable {char*} optarg
variable int opterr
variable int optind
diff --git a/conform/data/stdlib.h-data b/conform/data/stdlib.h-data
index c639bb52d0..760b5b3b4c 100644
--- a/conform/data/stdlib.h-data
+++ b/conform/data/stdlib.h-data
@@ -10,7 +10,7 @@ element div_t int rem
type ldiv_t
element ldiv_t long quot
element ldiv_t long rem
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
type lldiv_t
element lldiv_t {long long} quot
element lldiv_t {long long} rem
@@ -29,77 +29,116 @@ macro WSTOPSIG
macro WTERMSIG
function void _Exit (int)
+#if !defined POSIX && !defined POSIX2008
function long a64l (const char*)
+#endif
function void abort (void)
function int abs (int)
function int atexit (void(*)(void))
function double atof (const char*)
function int atoi (const char*)
function {long int} atol (const char*)
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function {long long} atoll (const char*)
#endif
function {void*} bsearch (const void*, const void*, size_t, size_t, int(*)(const void*, const void*))
function {void*} calloc (size_t, size_t)
function div_t div (int, int)
+#if !defined POSIX && !defined POSIX2008
function double drand48 (void)
+#endif
+#if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
function {char*} ecvt (double, int, int*, int*)
+#endif
+#if !defined POSIX && !defined POSIX2008
function double erand48 (unsigned short int[3])
+#endif
function void exit (int)
+#if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
function {char*} fcvt (double, int, int*, int*)
+#endif
function void free (void*)
+#if !defined POSIX && !defined XOPEN2K8 && !defined POSIX2008
function {char*} gcvt (double, int, char*)
+#endif
function {char*} getenv (const char*)
function int getsubopt (char**, char *const*, char**)
+#if !defined POSIX && !defined POSIX2008
function int grantpt (int)
function {char*} initstate (unsigned int, char*, size_t)
function {long int} jrand48 (unsigned short int[3])
function {char*} l64a (long)
+#endif
function {long int} labs (long int)
+#if !defined POSIX && !defined POSIX2008
function void lcong48 (unsigned short int[7])
+#endif
function ldiv_t ldiv (long int, long int)
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function {long long} llabs (long long)
function lldiv_t lldiv (long long, long long)
#endif
+#if !defined POSIX && !defined POSIX2008
function {long int} lrand48 (void)
+#endif
function {void*} malloc (size_t)
function int mblen (const char*, size_t)
function size_t mbstowcs (wchar_t*, const char*, size_t)
function int mbtowc (wchar_t*, const char*, size_t)
+#if defined XOPEN2K8 || defined POSIX2008
+function {char*} mkdtemp (char*)
+#endif
+#if !defined XOPEN2K8 && !defined POSIX2008
function {char*} mktemp (char*)
+#endif
function int mkstemp (char*)
+#if !defined POSIX && !defined POSIX2008
function {long int} mrand48 (void)
function {long int} nrand48 (unsigned short int[3])
+#endif
function int posix_memalign (void**, size_t, size_t)
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined XOPEN2K8
function int posix_openpt (int)
#endif
+#if !defined POSIX && !defined POSIX2008
function {char*} ptsname (int)
function int putenv (char*)
+#endif
function void qsort (void*, size_t, size_t, int(*)(const void*, const void*))
function int rand (void)
function int rand_r (unsigned int*)
+#if !defined POSIX && !defined POSIX2008
function long random (void)
+#endif
function {void*} realloc (void*, size_t)
+#if !defined POSIX && !defined POSIX2008
function {char*} realpath (const char*, char*)
function {unsigned short int*} seed48 (unsigned short int[3])
+#endif
function int setenv (const char*, const char*, int)
+#if !defined POSIX && !defined POSIX2008
function void setkey (const char*)
function {char*} setstate (char*)
+#endif
function void srand (unsigned int)
+#if !defined POSIX && !defined POSIX2008
function void srand48 (long int)
function void srandom (unsigned)
+#endif
function double strtod (const char*, char**)
function {long int} strtol (const char*, char**, int)
function {unsigned long int} strtoul (const char*, char**, int)
function int system (const char*)
-#ifndef XOPEN2K
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
function int ttyslot (void)
#endif
+#if !defined POSIX && !defined POSIX2008
function int unlockpt (int)
+#endif
function int unsetenv (const char*)
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008
function {void*} valloc (size_t)
+#endif
function size_t wcstombs (char*, const wchar_t*, size_t)
function int wctomb (char*, wchar_t)
diff --git a/conform/data/string.h-data b/conform/data/string.h-data
index 19c06d292c..1c4ae0814e 100644
--- a/conform/data/string.h-data
+++ b/conform/data/string.h-data
@@ -1,35 +1,61 @@
constant NULL
type size_t
+#if defined XOPEN2K8 || defined POSIX2008
+type locale_t
+#endif
+#if !defined POSIX && !defined POSIX2008
function {void*} memccpy (void*, const void*, int, size_t)
+#endif
function {void*} memchr (const void*, int, size_t)
function int memcmp (const void*, const void*, size_t)
function {void*} memcpy (void*, const void*, size_t)
function {void*} memmove (void*, const void*, size_t)
function {void*} memset (void*, int, size_t)
+#if defined XOPEN2K8 || defined POSIX2008
+function {char*} stpcpy (char*, const char*)
+function {char*} stpncpy (char*, const char*, size_t)
+
+#endif
function {char*} strcat (char*, const char*)
function {char*} strchr (const char*, int)
function int strcmp (const char*, const char*)
function int strcoll (const char*, const char*)
+#if defined XOPEN2K8 || defined POSIX2008
+function int strcoll_l (const char*, const char*, locale_t)
+#endif
function {char*} strcpy (char*, const char*)
function size_t strcspn (const char*, const char*)
function {char*} strdup (const char*)
function {char*} strerror (int)
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined XOPEN2K8 || defined POSIX2008
function int strerror_r (int, char*, size_t)
#endif
+#if defined XOPEN2K8 || defined POSIX2008
+function {char*} strerror_l (int, locale_t)
+#endif
function size_t strlen (const char*)
function {char*} strncat (char*, const char*, size_t)
function int strncmp (const char*, const char*, size_t)
function {char*} strncpy (char*, const char*, size_t)
+#if defined XOPEN2K8 || defined POSIX2008
+function {char*} strndup (const char*, size_t)
+function size_t strnlen (const char*, size_t)
+#endif
function {char*} strpbrk (const char*, const char*)
function {char*} strrchr (const char*, int)
+#if defined XOPEN2K8 || defined POSIX2008
+function {char*} strsignal (int)
+#endif
function size_t strspn (const char*, const char*)
function {char*} strstr (const char*, const char*)
function {char*} strtok (char*, const char*)
function {char*} strtok_r (char*, const char*, char**)
function size_t strxfrm (char*, const char*, size_t)
+#if defined XOPEN2K8 || defined POSIX2008
+function size_t strxfrm_l (char*, const char*, size_t, locale_t)
+#endif
allow-header stddef.h
diff --git a/conform/data/strings.h-data b/conform/data/strings.h-data
index 201780c8d3..01cd867426 100644
--- a/conform/data/strings.h-data
+++ b/conform/data/strings.h-data
@@ -1,12 +1,23 @@
+#if !defined XOPEN2K8 && !defined POSIX2008
function int bcmp (const void*, const void*, size_t)
function void bcopy (const void*, void*, size_t)
function void bzero (void*, size_t)
-function int ffs (int)
function {char*} index (const char*, int)
function {char*} rindex (const char*, int)
+#endif
+#if !defined POSIX && !defined POSIX2008
+function int ffs (int)
+#endif
function int strcasecmp (const char*, const char*)
function int strncasecmp (const char*, const char*, size_t)
+#if defined XOPEN2K8 || defined POSIX2008
+function int strcasecmp_l (const char*, const char*, locale_t)
+function int strncasecmp_l (const char*, const char*, size_t, locale_t)
+#endif
type size_t
+#if defined XOPEN2K8 || defined POSIX2008
+type locale_t
+#endif
allow *_t
diff --git a/conform/data/sys/ipc.h-data b/conform/data/sys/ipc.h-data
index 1b2ec99d37..28918c196d 100644
--- a/conform/data/sys/ipc.h-data
+++ b/conform/data/sys/ipc.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined POSIX && !defined POSIX2008
type {struct ipc_perm}
element {struct ipc_perm} uid_t uid
@@ -26,3 +27,4 @@ function key_t ftok (const char*, int)
allow ipc_*
allow IPC_*
allow *_t
+#endif
diff --git a/conform/data/sys/msg.h-data b/conform/data/sys/msg.h-data
index 7a1df4cbed..ae83356b54 100644
--- a/conform/data/sys/msg.h-data
+++ b/conform/data/sys/msg.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined POSIX && !defined POSIX2008
type {struct msqid_ds}
type msgqnum_t
@@ -30,3 +31,4 @@ allow-header sys/ipc.h
allow msg*
allow MSG*
allow *_h
+#endif
diff --git a/conform/data/sys/resource.h-data b/conform/data/sys/resource.h-data
index d9f9b9ab8c..52f83f523b 100644
--- a/conform/data/sys/resource.h-data
+++ b/conform/data/sys/resource.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined POSIX && !defined POSIX2008
constant PRIO_PROCESS
constant PRIO_PGRP
constant PRIO_USER
@@ -48,3 +49,4 @@ allow RLIM_*
allow RLIMIT_*
allow RUSAGE_*
allow *_t
+#endif
diff --git a/conform/data/sys/select.h-data b/conform/data/sys/select.h-data
index 51f7844cb6..ea890d6ae9 100644
--- a/conform/data/sys/select.h-data
+++ b/conform/data/sys/select.h-data
@@ -13,16 +13,18 @@ element {struct timespec} time_t tv_sec
element {struct timespec} long tv_nsec
type fd_set
+#if defined XPG3 || defined XPG4 || defined UNIX98
element fd_set long fds_bits []
+#endif
-function-macro void FD_CLR (int, fd_set*)
-function-macro int FD_ISSET (int, fd_set*)
-function-macro void FD_SET (int, fd_set*)
-function-macro void FD_ZERO (fd_set*)
+macro FD_CLR
+macro FD_ISSET
+macro FD_SET
+macro FD_ZERO
macro FD_SETSIZE
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined POSIX2008
function int pselect (int, fd_set*, fd_set*, fd_set*, const struct timespec*, const sigset_t*)
#endif
function int select (int, fd_set*, fd_set*, fd_set*, struct timeval*)
diff --git a/conform/data/sys/sem.h-data b/conform/data/sys/sem.h-data
index 8b4598b7b2..665b397c58 100644
--- a/conform/data/sys/sem.h-data
+++ b/conform/data/sys/sem.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined POSIX && !defined POSIX2008
constant SEM_UNDO
constant GETNCNT
@@ -35,3 +36,4 @@ allow-header sys/ipc.h
allow sem*
allow SEM_*
allow *_t
+#endif
diff --git a/conform/data/sys/shm.h-data b/conform/data/sys/shm.h-data
index cac0163406..39df8944ab 100644
--- a/conform/data/sys/shm.h-data
+++ b/conform/data/sys/shm.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined POSIX && !defined POSIX2008
constant SHM_RDONLY
symbol SHMLBA
constant SHM_RND
@@ -30,3 +31,4 @@ allow-header sys/ipc.h
allow shm*
allow SHM*
allow *_t
+#endif
diff --git a/conform/data/sys/socket.h-data b/conform/data/sys/socket.h-data
index dd1f265b2b..5fdd6cf6bf 100644
--- a/conform/data/sys/socket.h-data
+++ b/conform/data/sys/socket.h-data
@@ -3,6 +3,11 @@ type socklen_t
type sa_family_t
+# if defined XOPEN2K8 || defined POSIX2008
+type size_t
+type ssize_t
+# endif
+
type {struct sockaddr}
element {struct sockaddr} sa_family_t sa_family
@@ -76,6 +81,9 @@ macro MSG_OOB
macro MSG_PEEK
macro MSG_TRUNC
macro MSG_WAITALL
+# if defined XOPEN2K8 || defined POSIX2008
+constant MSG_NOSIGNAL
+# endif
macro AF_UNIX
macro AF_UNSPEC
diff --git a/conform/data/sys/stat.h-data b/conform/data/sys/stat.h-data
index c0f8d45a38..df39fd3d81 100644
--- a/conform/data/sys/stat.h-data
+++ b/conform/data/sys/stat.h-data
@@ -8,16 +8,22 @@ element {struct stat} mode_t st_mode
element {struct stat} nlink_t st_nlink
element {struct stat} uid_t st_uid
element {struct stat} gid_t st_gid
+#if !defined POSIX && !defined POSIX2008
element {struct stat} dev_t st_rdev
+#endif
element {struct stat} off_t st_size
element {struct stat} time_t st_atime
element {struct stat} time_t st_mtime
element {struct stat} time_t st_ctime
+#if !defined POSIX && !defined POSIX2008
element {struct stat} blksize_t st_blksize
element {struct stat} blkcnt_t st_blocks
+#endif
+#if !defined POSIX && !defined POSIX2008
type blkcnt_t
type blksize_t
+#endif
type dev_t
type ino_t
type mode_t
@@ -26,7 +32,13 @@ type uid_t
type gid_t
type off_t
type time_t
+# if defined XOPEN2K8 || defined POSIX2008
+type {struct timespec}
+element {struct timespec} time_t tv_sec
+element {struct timespec} long tv_nsec
+# endif
+#if !defined POSIX && !defined POSIX2008
constant S_IFMT
constant S_IFBLK
constant S_IFCHR
@@ -34,6 +46,8 @@ constant S_IFIFO
constant S_IFREG
constant S_IFDIR
constant S_IFLNK
+constant S_IFSOCK
+#endif
constant S_IRWXU
constant S_IRUSR
@@ -48,14 +62,20 @@ constant S_IWOTH
constant S_IXOTH
constant S_ISUID
constant S_ISGID
+#if !defined POSIX && !defined POSIX2008
constant S_ISVTX
+#endif
+#if !defined POSIX && !defined POSIX2008
+macro S_IFMT
macro S_ISBLK
macro S_ISCHR
macro S_ISDIR
macro S_ISFIFO
macro S_ISREG
macro S_ISLNK
+macro S_IFSOCK
+#endif
// How to represent optional tests?
optional-macro S_TYPEISMQ
@@ -63,15 +83,39 @@ optional-macro S_TYPEISSEM
optional-macro S_TYPEISSHM
optional-macro S_TYPEISTMO
+# if defined XOPEN2K8 || defined POSIX2008
+constant UTIME_NOW
+constant UTIME_OMIT
+# endif
+
function int chmod (const char*, mode_t)
function int fchmod (int, mode_t)
+# if defined XOPEN2K8 || defined POSIX2008
+function int fchmodat (int, const char*, mode_t, int)
+# endif
function int fstat (int, struct stat*)
+# if defined XOPEN2K8 || defined POSIX2008
+function int fstatat (int, const char*, struct stat*, int)
+function int futimens (int, const struct timespec[2])
+# endif
function int lstat (const char*, struct stat*)
function int mkdir (const char*, mode_t)
+# if defined XOPEN2K8 || defined POSIX2008
+function int mkdirat (int, const char*, mode_t)
+# endif
function int mkfifo (const char*, mode_t)
+# if defined XOPEN2K8 || defined POSIX2008
+function int mkfifoat (int, const char*, mode_t)
+# endif
+# if !defined POSIX && !defined POSIX2008
function int mknod (const char*, mode_t, dev_t)
+function int mknodat (int, const char*, mode_t, dev_t)
+# endif
function int stat (const char*, struct stat*)
function mode_t umask (mode_t)
+# if defined XOPEN2K8 || defined POSIX2008
+function int utimensat (int, const char*, const struct timespec[2], int)
+# endif
allow st_*
allow S_*
diff --git a/conform/data/sys/time.h-data b/conform/data/sys/time.h-data
index 174708b53d..7e3407ab07 100644
--- a/conform/data/sys/time.h-data
+++ b/conform/data/sys/time.h-data
@@ -1,4 +1,4 @@
-#ifndef ISO
+#if !defined ISO && !defined POSIX && !defined POSIX2008
type {struct timeval}
element {struct timeval} time_t tv_sec
diff --git a/conform/data/sys/types.h-data b/conform/data/sys/types.h-data
index ed7236b8b6..4070be5c59 100644
--- a/conform/data/sys/types.h-data
+++ b/conform/data/sys/types.h-data
@@ -1,14 +1,19 @@
+#ifndef ISO
type blkcnt_t
type blksize_t
type clock_t
type clockid_t
type dev_t
+# if !defined POSIX
type fsblkcnt_t
type fsfilcnt_t
+# endif
type gid_t
type id_t
type ino_t
+# if !defined POSIX && !defined POSIX2008
type key_t
+# endif
type mode_t
type nlink_t
type off_t
@@ -28,10 +33,12 @@ type pthread_spinlock_t
type pthread_t
type size_t
type ssize_t
+# if !defined POSIX && !defined POSIX2008
type suseconds_t
+# endif
type time_t
type timer_t
type uid_t
-type useconds_t
allow *_t
+#endif
diff --git a/conform/data/sys/uio.h-data b/conform/data/sys/uio.h-data
index 258032b871..03d0a3bf3a 100644
--- a/conform/data/sys/uio.h-data
+++ b/conform/data/sys/uio.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined POSIX
type {struct iovec}
element {struct iovec} {void*} iov_base
@@ -10,3 +11,4 @@ allow iov_*
allow IOV_*
allow *_t
allow UIO_MAXIOV
+#endif
diff --git a/conform/data/sys/wait.h-data b/conform/data/sys/wait.h-data
index 731c9551f7..2fd4c8decf 100644
--- a/conform/data/sys/wait.h-data
+++ b/conform/data/sys/wait.h-data
@@ -1,8 +1,11 @@
+#ifndef ISO
constant WNOHANG
constant WUNTRACED
macro WEXITSTATUS
+# if !defined POSIX && !defined POSIX2008
macro WIFCONTINUED
+# endif
macro WIFEXITED
macro WIFSIGNALED
macro WIFSTOPPED
@@ -11,7 +14,9 @@ macro WTERMSIG
constant WEXITED
constant WSTOPPED
+# if !defined POSIX && !defined POSIX2008
constant WCONTINUED
+# endif
constant WNOHANG
constant WNOWAIT
@@ -43,7 +48,9 @@ element {struct rusage} {struct timeval} ru_stime
type pid_t
function pid_t wait (int*)
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
function pid_t wait3 (int*, int, struct rusage*)
+#endif
function int waitid (idtype_t, id_t, siginfo_t*, int)
function pid_t waitpid (pid_t, int*, int)
@@ -62,3 +69,4 @@ allow SEGV_
allow SI_
allow TRAP_
allow *_t
+#endif
diff --git a/conform/data/syslog.h-data b/conform/data/syslog.h-data
index 87414e8a7e..f0aa65c693 100644
--- a/conform/data/syslog.h-data
+++ b/conform/data/syslog.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined POSIX && !defined POSIX2008
constant LOG_PID
constant LOG_CONS
constant LOG_NDELAY
@@ -40,3 +41,4 @@ function void syslog (int, const char*, ...)
allow LOG_*
allow *_t
+#endif
diff --git a/conform/data/tar.h-data b/conform/data/tar.h-data
index 919167d92b..fcbfb127b4 100644
--- a/conform/data/tar.h-data
+++ b/conform/data/tar.h-data
@@ -1,3 +1,4 @@
+#ifndef ISO
macro-str TMAGIC "ustar"
constant TMAGLEN 6
macro-str TVERSION "00"
@@ -15,7 +16,9 @@ constant CONTTYPE
constant TSUID 04000
constant TSGID 02000
+# if !defined POSIX && !defined POSIX2008
constant TSVTX 01000
+# endif
constant TUREAD 00400
constant TUWRITE 00200
constant TUEXEC 00100
@@ -27,3 +30,4 @@ constant TOWRITE 00002
constant TOEXEC 00001
allow *_t
+#endif
diff --git a/conform/data/termios.h-data b/conform/data/termios.h-data
index d867d4cd6b..d32bd6bf3c 100644
--- a/conform/data/termios.h-data
+++ b/conform/data/termios.h-data
@@ -1,9 +1,14 @@
+#ifndef ISO
type cc_t
type speed_t
type tcflag_t
type {struct termios}
+#if defined XOPEN2K8 || defined POSIX2008
+type pid_t
+#endif
+
element {struct termios} tcflag_t c_iflag
element {struct termios} tcflag_t c_oflag
element {struct termios} tcflag_t c_cflag
@@ -32,18 +37,24 @@ constant IGNPAR
constant INLCR
constant INPCK
constant ISTRIP
+# if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
constant IUCLC
+# <endif
constant IXANY
constant IXOFF
constant IXON
constant PARMRK
constant OPOST
+# if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
constant OLCUC
+# endif
+# if !defined POSIX && !defined POSIX2008
constant ONLCR
constant OCRNL
constant ONOCR
constant ONLRET
+constant OFDEL
constant OFILL
constant NLDLY
constant NL0
@@ -67,6 +78,7 @@ constant VT1
constant FFDLY
constant FF0
constant FF1
+# endif
constant B0
constant B50
@@ -106,7 +118,9 @@ constant IEXTEN
constant ISIG
constant NOFLSH
constant TOSTOP
+# if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
constant XCASE
+# endif
constant TCSANOW
constant TCSADRAIN
@@ -157,3 +171,4 @@ allow O*
allow TC*
allow B*
allow *_t
+#endif
diff --git a/conform/data/tgmath.h-data b/conform/data/tgmath.h-data
index 2a6bd0cd9a..ce4f301de9 100644
--- a/conform/data/tgmath.h-data
+++ b/conform/data/tgmath.h-data
@@ -1,4 +1,4 @@
-#ifdef XOPEN2K
+#if defined XOPEN2K || defined POSIX2008
// <math.h>
macro fpclassify
macro isfinite
@@ -13,6 +13,7 @@ macro islessequal
macro islessgreater
macro isunordered
+#ifndef POSIX2008
constant M_E
constant M_LOG2E
constant M_LOG10E
@@ -28,6 +29,7 @@ constant M_SQRT2
constant M_SQRT1_2
constant MAXFLOAT
+#endif
constant HUGE_VAL
constant HUGE_VALF
constant HUGE_VALL
@@ -50,6 +52,8 @@ constant FP_ILOGBNAN
macro MATH_ERRNO == 1
macro MATH_ERREXCEPT == 2
+macro math_errhandling
+
function double acos (double)
function double asin (double)
function double atan (double)
@@ -77,17 +81,22 @@ function double tan (double)
function double tanh (double)
function double erf (double)
function double erfc (double)
+#if defined XPG3 || defined XPG4 || defined UNIX98
function double gamma (double)
+#endif
function double hypot (double, double)
+#if !defined POSIX && !defined POSIX2008
function double j0 (double)
function double j1 (double)
function double jn (int, double)
+#endif
function double lgamma (double)
function double tgamma (double)
+#if !defined POSIX && !defined POSIX2008
function double y0 (double)
function double y1 (double)
function double yn (int, double)
-function int isnan (double)
+#endif
function double acosh (double)
function double asinh (double)
function double atanh (double)
@@ -108,7 +117,9 @@ function {long long} llrint (double)
function long lround (double)
function {long long} llround (double)
function double remquo (double, double, int*)
+#if defined XPG3 && defined XPG4 && defined UNIX98 && defined XOPEN2K
function double scalb (double, double)
+#endif
function double scalbn (double, int)
function double scalbln (double, long)
function double fdim (double, double)
@@ -147,17 +158,22 @@ function float tanf (float)
function float tanhf (float)
function float erff (float)
function float erfcf (float)
+#if defined XPG3 || defined XPG4 || defined UNIX98
function float gammaf (float)
+#endif
function float hypotf (float, float)
+#if !defined POSIX && !defined POSIX2008
function float j0f (float)
function float j1f (float)
function float jnf (int, float)
+#endif
function float lgammaf (float)
function float tgammaf (float)
+#if !defined POSIX && !defined POSIX2008
function float y0f (float)
function float y1f (float)
function float ynf (int, float)
-function int isnanf (float)
+#endif
function float acoshf (float)
function float asinhf (float)
function float atanhf (float)
@@ -178,7 +194,9 @@ function {long long} llrintf (float)
function long lroundf (float)
function {long long} llroundf (float)
function float remquof (float, float, int*)
+#if defined XPG3 && defined XPG4 && defined UNIX98 && defined XOPEN2K
function float scalbf (float, float)
+#endif
function float scalbnf (float, int)
function float scalblnf (float, long)
function float fdimf (float, float)
@@ -214,17 +232,22 @@ function {long double} tanl (long double)
function {long double} tanhl (long double)
function {long double} erfl (long double)
function {long double} erfcl (long double)
+#if defined XPG3 || defined XPG4 || defined UNIX98
function {long double} gammal (long double)
+#endif
function {long double} hypotl (long double, long double)
+#if !defined POSIX && !defined POSIX2008
function {long double} j0l (long double)
function {long double} j1l (long double)
function {long double} jnl (int, long double)
+#endif
function {long double} lgammal (long double)
function {long double} tgammal (long double)
+#if !defined POSIX && !defined POSIX2008
function {long double} y0l (long double)
function {long double} y1l (long double)
function {long double} ynl (int, long double)
-function int isnanl (long double)
+#endif
function {long double} acoshl (long double)
function {long double} asinhl (long double)
function {long double} atanhl (long double)
@@ -245,7 +268,9 @@ function {long long} llrintl (long double)
function long lroundl (long double)
function {long long} llroundl (long double)
function {long double} remquol (long double, long double, int*)
+#if defined XPG3 && defined XPG4 && defined UNIX98 && defined XOPEN2K
function {long double} scalbl (long double, long double)
+#endif
function {long double} scalbnl (long double, int)
function {long double} scalblnl (long double, long)
function {long double} fdiml (long double, long double)
diff --git a/conform/data/time.h-data b/conform/data/time.h-data
index 805c48dd6f..e2ff298ea7 100644
--- a/conform/data/time.h-data
+++ b/conform/data/time.h-data
@@ -11,7 +11,7 @@ element {struct tm} int tm_yday
element {struct tm} int tm_isdst
constant NULL
-#ifndef XOPEN2K
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
constant CLK_TCK
#endif
constant CLOCKS_PER_SEC
@@ -38,7 +38,15 @@ type size_t
type time_t
type timer_t
+#if defined XOPEN2K8 || defined POSIX2008
+type pid_t
+type locale_t
+tag {struct sigevent}
+#endif
+
+#if !defined POSIX && !defined POSIX2008
variable int getdate_err
+#endif
function {char*} asctime (const struct tm*)
function {char*} asctime_r (const struct tm*, char*)
@@ -51,7 +59,9 @@ function int clock_settime (clockid_t, const struct timespec*)
function {char*} ctime (const time_t*)
function {char*} ctime_r (const time_t*, char*)
function double difftime (time_t, time_t)
+#if !defined POSIX && !defined POSIX2008
function {struct tm*} getdate (const char*)
+#endif
function {struct tm*} gmtime (const time_t*)
function {struct tm*} gmtime_r (const time_t*, struct tm*)
function {struct tm*} localtime (const time_t*)
@@ -59,7 +69,12 @@ function {struct tm*} localtime_r (const time_t*, struct tm*)
function time_t mktime (struct tm*)
function int nanosleep (const struct timespec*, struct timespec*)
function size_t strftime (char*, size_t, const char*, const struct tm*)
+#if defined XOPEN2K8 || defined POSIX2008
+function size_t strftime_l (char*, size_t, const char*, const struct tm*, locale_t)
+#endif
+#if !defined POSIX && !defined POSIX2008
function {char*} strptime (const char*, const char*, struct tm*)
+#endif
function time_t time (time_t*)
function int timer_create (clockid_t, struct sigevent*, timer_t*)
function int timer_delete (timer_t)
@@ -68,8 +83,10 @@ function int timer_getoverrun (timer_t)
function int timer_settime (timer_t, int, const struct itimerspec*, struct itimerspec*)
function void tzset (void)
+#if !defined POSIX && !defined POSIX2008
variable int daylight
variable {long int} timezone
+#endif
variable {char*} tzname [2]
allow tm_*
@@ -80,3 +97,4 @@ allow tv_*
allow CLOCK_*
allow TIMER_*
allow *_t
+allow sigevent
diff --git a/conform/data/ulimit.h-data b/conform/data/ulimit.h-data
index 84ab56c1d1..9e7e6f4e9a 100644
--- a/conform/data/ulimit.h-data
+++ b/conform/data/ulimit.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined POSIX && !defined POSIX2008
constant UL_GETFSIZE
constant UL_SETFSIZE
@@ -5,3 +6,4 @@ function {long int} ulimit (int, ...)
allow UL_*
allow *_t
+#endif
diff --git a/conform/data/unistd.h-data b/conform/data/unistd.h-data
index b6effa064e..72fbdd62b9 100644
--- a/conform/data/unistd.h-data
+++ b/conform/data/unistd.h-data
@@ -41,10 +41,24 @@ optional-constant _POSIX_THREAD_PROCESS_SHARED
optional-constant _POSIX_THREAD_SAFE_FUNCTIONS
optional-constant _POSIX_THREAD_SPORADIC_SERVER
+# ifdef XOPEN2K
+optional-constant _POSIX_V6_ILP32_OFF32
+optional-constant _POSIX_V6_ILP32_OFFBIG
+optional-constant _POSIX_V6_LP64_OFF64
+optional-constant _POSIX_V6_LPBIG_OFFBIG
+# endif
+# if defined XOPEN2K8 || defined POSIX2008
+optional-constant _POSIX_V7_ILP32_OFF32
+optional-constant _POSIX_V7_ILP32_OFFBIG
+optional-constant _POSIX_V7_LP64_OFF64
+optional-constant _POSIX_V7_LPBIG_OFFBIG
+# endif
+
optional-constant _POSIX2_C_DEV
optional-constant _POSIX2_FORT_DEV
optional-constant _POSIX2_FORT_RUN
optional-constant _POSIX2_SW_DEV
+# if !defined POSIX && !defined POSIX2008
optional-constant _XOPEN_CRYPT
optional-constant _XOPEN_ENH_I18N
optional-constant _XOPEN_LEGACY
@@ -52,6 +66,7 @@ optional-constant _XOPEN_REALTIME
optional-constant _XOPEN_REALTIME_THREADS
optional-constant _XOPEN_SHM
optional-constant _XOPEN_STREAMS
+# endif
allow _XBS5_ILP32_OFF32
allow _XBS5_ILP32_OFBIG
allow _XBS5_LP64_OFF64
@@ -89,6 +104,8 @@ optional-constant _POSIX2_PBS_LOCATE
optional-constant _POSIX2_PBS_MESSAGE
optional-constant _POSIX2_PBS_TRACK
+optional-constant _POSIX_TIMESTAMP_RESOLUTION
+
constant NULL
constant R_OK
@@ -219,7 +236,20 @@ constant _SC_TYPED_MEMORY_OBJECTS
constant _SC_TZNAME_MAX
constant _SC_USER_GROUPS
constant _SC_USER_GROUPS_R
+# ifdef XOPEN2K
+constant _SC_V6_ILP32_OFF32
+constant _SC_V6_ILP32_OFFBIG
+constant _SC_V6_LP64_OFF64
+constant _SC_V6_LPBIG_OFFBIG
+# endif
+# if defined XOPEN2K8 || defined POSIX2008
+constant _SC_V7_ILP32_OFF32
+constant _SC_V7_ILP32_OFFBIG
+constant _SC_V7_LP64_OFF64
+constant _SC_V7_LPBIG_OFFBIG
+# endif
constant _SC_VERSION
+# if !defined POSIX && !defined POSIX2008
constant _SC_XOPEN_VERSION
constant _SC_XOPEN_CRYPT
constant _SC_XOPEN_ENH_I18N
@@ -229,16 +259,53 @@ constant _SC_XOPEN_XCU_VERSION
constant _SC_XOPEN_LEGACY
constant _SC_XOPEN_REALTIME
constant _SC_XOPEN_REALTIME_THREADS
+# endif
constant _SC_STREAMS
constant _SC_XBS5_ILP32_OFF32
constant _SC_XBS5_ILP32_OFFBIG
constant _SC_XBS5_LP64_OFF64
constant _SC_XBS5_LPBIG_OFFBIG
+# ifdef XOPEN2K
+constant _CS_POSIX_V6_ILP32_OFF32_CFLAGS
+constant _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
+constant _CS_POSIX_V6_ILP32_OFF32_LIBS
+constant _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
+constant _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
+constant _CS_POSIX_V6_ILP32_OFFBIG_LIBS
+constant _CS_POSIX_V6_LP64_OFF64_CFLAGS
+constant _CS_POSIX_V6_LP64_OFF64_LDFLAGS
+constant _CS_POSIX_V6_LP64_OFF64_LIBS
+constant _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
+constant _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
+constant _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
+constant _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS
+constant _CS_V6_ENV
+# endif
+# if defined XOPEN2K8 || defined POSIX2008
+constant _CS_POSIX_V7_ILP32_OFF32_CFLAGS
+constant _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
+constant _CS_POSIX_V7_ILP32_OFF32_LIBS
+constant _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
+constant _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
+constant _CS_POSIX_V7_ILP32_OFFBIG_LIBS
+constant _CS_POSIX_V7_LP64_OFF64_CFLAGS
+constant _CS_POSIX_V7_LP64_OFF64_LDFLAGS
+constant _CS_POSIX_V7_LP64_OFF64_LIBS
+constant _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
+constant _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
+constant _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
+constant _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
+constant _CS_V7_ENV
+# endif
+constant _SC_THREAD_ROBUST_PRIO_INHERIT
+constant _SC_THREAD_ROBUST_PRIO_PROTECT
+#if !defined POSIX && !defined POSIX2008
constant F_LOCK
constant F_ULOCK
constant F_TEST
constant F_TLOCK
+#endif
constant _PC_ASYNC_IO
constant _PC_CHOWN_RESTRICTED
@@ -275,7 +342,9 @@ type intptr_t
function int access (const char*, int)
function {unsigned int} alarm (unsigned int)
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008
function int brk (void*)
+#endif
function int chdir (const char*)
#if defined XPG3 || defined XPG4 || defined UNIX98
function int chroot (const char*)
@@ -283,14 +352,18 @@ function int chroot (const char*)
function int chown (const char*, uid_t, gid_t)
function int close (int)
function size_t confstr (int, char*, size_t)
+#if !defined POSIX && !defined POSIX2008
function {char*} crypt (const char*, const char*)
+#endif
function {char*} ctermid (char*)
#if defined XPG3 || defined XPG4 || defined UNIX98
function {char*} cuserid (char*)
#endif
function int dup (int)
function int dup2 (int, int)
+#if !defined POSIX && !defined POSIX2008
function void encrypt (char[64], int)
+#endif
function int execl (const char*, const char*, ...)
function int execle (const char*, const char*, ...)
function int execlp (const char*, const char*, ...)
@@ -298,76 +371,133 @@ function int execv (const char*, char *const[])
function int execve (const char*, char *const[], char *const[])
function int execvp (const char*, char *const[])
function void _exit (int)
+# if defined XOPEN2K8 || defined POSIX2008
+function int faccessat (int, const char*, int, int)
+# endif
function int fchown (int, uid_t, gid_t)
+# if defined XOPEN2K8 || defined POSIX2008
+function int fchownat (int, const char*, uid_t, gid_t, int)
+# endif
+#ifndef POSIX
function int fchdir (int)
+#endif
function int fdatasync (int)
+# if defined XOPEN2K8 || defined POSIX2008
+function int fexecve (int, char *const[], char *const[])
+# endif
function pid_t fork (void)
function {long int} fpathconf (int, int)
function int fsync (int)
function int ftruncate (int, off_t)
function {char*} getcwd (char*, size_t)
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008
function int getdtablesize (void)
+#endif
function gid_t getegid (void)
function uid_t geteuid (void)
function gid_t getgid (void)
function int getgroups (int, gid_t[])
+#if !defined POSIX && !defined POSIX2008
function long gethostid (void)
+#endif
function int gethostname (char*, size_t)
function {char*} getlogin (void)
function int getlogin_r (char*, size_t)
function int getopt (int, char*const[], const char*)
-function int getpagesize (void)
#if defined XPG3 || defined XPG4 || defined UNIX98
+function int getpagesize (void)
function {char*} getpass (const char*)
#endif
+#ifndef POSIX
function pid_t getpgid (pid_t)
+#endif
function pid_t getpgrp (void)
function pid_t getpid (void)
function pid_t getppid (void)
+#ifndef POSIX
function pid_t getsid (pid_t)
+#endif
function uid_t getuid (void)
+#if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K
function {char*} getwd (char*)
+#endif
function int isatty (int)
+#ifndef POSIX
function int lchown (const char*, uid_t, gid_t)
+#endif
function int link (const char*, const char*)
+# if defined XOPEN2K8 || defined POSIX2008
+function int linkat (int, const char*, int, const char*, int)
+# endif
+# if !defined POSIX && !defined POSIX2008
function int lockf (int, int, off_t)
+# endif
function off_t lseek (int, off_t, int)
+# if !defined POSIX && !defined POSIX2008
function int nice (int)
+# endif
function {long int} pathconf (const char*, int)
function int pause (void)
function int pipe (int[2])
+#ifndef POSIX
function ssize_t pread (int, void*, size_t, off_t)
-#ifndef XOPEN2K
+#endif
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
function int pthread_atfork (void(*)(void), void(*)(void), void(*)(void))
#endif
+#ifndef POSIX
function ssize_t pwrite (int, const void*, size_t, off_t)
+#endif
function ssize_t read (int, void*, size_t)
function ssize_t readlink (const char*, char*, size_t)
+# if defined XOPEN2K8 || defined POSIX2008
+function ssize_t readlinkat (int, const char*, char*, size_t)
+# endif
function int rmdir (const char*)
+#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008
function {void*} sbrk (intptr_t)
+#endif
function int setegid (gid_t)
function int seteuid (uid_t)
function int setgid (gid_t)
function int setpgid (pid_t, pid_t)
+# if !defined POSIX && !defined POSIX2008
function pid_t setpgrp (void)
function int setregid (gid_t, gid_t)
function int setreuid (uid_t, uid_t)
+# endif
function pid_t setsid (void)
function int setuid (uid_t)
function {unsigned int} sleep (unsigned int)
+# if !defined POSIX && !defined POSIX2008
function void swab (const void*, void*, ssize_t)
+# endif
function int symlink (const char*, const char*)
+# if defined XOPEN2K8 || defined POSIX2008
+function int symlinkat (const char*, int, const char*)
+# endif
+# if !defined POSIX && !defined POSIX2008
function void sync (void)
+# endif
function {long int} sysconf (int)
function pid_t tcgetpgrp (int)
function int tcsetpgrp (int, pid_t)
+#ifndef POSIX
function int truncate (const char*, off_t)
+#endif
function {char*} ttyname (int)
function int ttyname_r (int, char*, size_t)
+#if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K
function useconds_t ualarm (useconds_t, useconds_t)
+#endif
function int unlink (const char*)
+# if defined XOPEN2K8 || defined POSIX2008
+function int unlinkat (int, const char*, int)
+# endif
+#if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K
function int usleep (useconds_t)
function pid_t vfork (void)
+#endif
function ssize_t write (int, const void*, size_t)
variable {char*} optarg
diff --git a/conform/data/utmpx.h-data b/conform/data/utmpx.h-data
index ba034f0deb..af3c229fc0 100644
--- a/conform/data/utmpx.h-data
+++ b/conform/data/utmpx.h-data
@@ -1,3 +1,4 @@
+#if !defined ISO && !defined POSIX && !defined POSIX2008
type {struct utmpx}
element {struct utmpx} char ut_user []
@@ -34,3 +35,4 @@ allow-header sys/time.h
allow ut_*
allow *_t
+#endif
diff --git a/conform/data/wchar.h-data b/conform/data/wchar.h-data
index 7c1589506a..bf9e1a92e5 100644
--- a/conform/data/wchar.h-data
+++ b/conform/data/wchar.h-data
@@ -1,14 +1,19 @@
type wchar_t
type wint_t
+# if !defined ISO && !defined POSIX && !defined POSIX2008
type wctype_t
+#endif
type mbstate_t
type FILE
type size_t
+#if defined XOPEN2K8 || defined POSIX2008
+type locale_t
+#endif
function wint_t btowc (int)
function int fwprintf (FILE*, const wchar_t*, ...)
function int fwscanf (FILE*, const wchar_t*, ...)
-#if !ISO
+#if !defined ISO && !defined POSIX && !defined POSIX2008
function int iswalnum (wint_t)
function int iswalpha (wint_t)
function int iswcntrl (wint_t)
@@ -32,32 +37,62 @@ function wint_t getwchar (void)
function int mbsinit (const mbstate_t*)
function size_t mbrlen (const char*, size_t, mbstate_t*)
function size_t mbrtowc (wchar_t*, const char*, size_t, mbstate_t*)
+#if defined XOPEN2K8 || defined POSIX2008
+function size_t mbsnrtowcs (wchar_t*, const char**, size_t, size_t, mbstate_t*)
+#endif
function size_t mbsrtowcs (wchar_t*, const char**, size_t, mbstate_t*)
+#if defined XOPEN2K8 || defined POSIX2008
+function {FILE*} open_wmemstream (wchar_t**, size_t*)
+#endif
function wint_t putwc (wchar_t, FILE*)
function wint_t putwchar (wchar_t)
function int swprintf (wchar_t*, size_t, const wchar_t*, ...)
function int swscanf (const wchar_t*, const wchar_t*, ...)
+#if !defined ISO && !defined POSIX && !defined POSIX2008
function wint_t towlower (wint_t)
function wint_t towupper (wint_t)
+#endif
function wint_t ungetwc (wint_t, FILE*)
-function int vfwprintf (FILE*, const wchar_t*, va_list)
-function int vfwscanf (FILE*, const wchar_t*, va_list)
-function int vwprintf (const wchar_t*, va_list)
-function int vwscanf (const wchar_t*, va_list)
-function int vswprintf (wchar_t*, size_t, const wchar_t*, va_list)
-function int vswscanf (const wchar_t*, const wchar_t*, va_list)
+function int vfwprintf (FILE*, const wchar_t*, __gnuc_va_list)
+function int vfwscanf (FILE*, const wchar_t*, __gnuc_va_list)
+function int vwprintf (const wchar_t*, __gnuc_va_list)
+function int vwscanf (const wchar_t*, __gnuc_va_list)
+function int vswprintf (wchar_t*, size_t, const wchar_t*, __gnuc_va_list)
+function int vswscanf (const wchar_t*, const wchar_t*, __gnuc_va_list)
+#if defined XOPEN2K8 || defined POSIX2008
+function {wchar_t*} wcpcpy (wchar_t*, const wchar_t*)
+function {wchar_t*} wcpncpy (wchar_t*, const wchar_t*, size_t)
+#endif
function size_t wcrtomb (char*, wchar_t, mbstate_t*)
+#if defined XOPEN2K8 || defined POSIX2008
+function int wcscasecmp(const wchar_t*, const wchar_t*)
+function int wcscasecmp_l(const wchar_t*, const wchar_t*, locale_t)
+#endif
function {wchar_t*} wcscat (wchar_t*, const wchar_t*)
function {wchar_t*} wcschr (const wchar_t*, wchar_t)
function int wcscmp (const wchar_t*, const wchar_t*)
function int wcscoll (const wchar_t*, const wchar_t*)
+#if defined XOPEN2K8 || defined POSIX2008
+function int wcscoll_l (const wchar_t*, const wchar_t*, locale_t)
+#endif
function {wchar_t*} wcscpy (wchar_t*, const wchar_t*)
function size_t wcscspn (const wchar_t*, const wchar_t*)
+#if defined XOPEN2K8 || defined POSIX2008
+function {wchar_t*} wcsdup (const wchar_t*)
+#endif
function size_t wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*)
function size_t wcslen (const wchar_t*)
+#if defined XOPEN2K8 || defined POSIX2008
+function int wcsncasecmp (const wchar_t*, const wchar_t*, size_t)
+function int wcsncasecmp_l (const wchar_t*, const wchar_t*, size_t, locale_t)
+#endif
function {wchar_t*} wcsncat (wchar_t*, const wchar_t*, size_t)
function int wcsncmp (const wchar_t*, const wchar_t*, size_t)
function {wchar_t*} wcsncpy (wchar_t*, const wchar_t*, size_t)
+#if defined XOPEN2K8 || defined POSIX2008
+function size_t wcsnlen (const wchar_t*, size_t)
+function size_t wcsnrtombs (char*, const wchar_t**, size_t, size_t, mbstate_t*)
+#endif
function {wchar_t*} wcspbrk (const wchar_t*, const wchar_t*)
function {wchar_t*} wcsrchr (const wchar_t*, wchar_t)
function size_t wcsrtombs (char*, const wchar_t**, size_t, mbstate_t*)
@@ -67,12 +102,21 @@ function double wcstod (const wchar_t*, wchar_t**)
function {wchar_t*} wcstok (wchar_t*, const wchar_t*, wchar_t**)
function {long int} wcstol (const wchar_t*, wchar_t**, int)
function {unsigned long int} wcstoul (const wchar_t*, wchar_t**, int)
+#if defined UNIX98 || defined XOPEN2K
function {wchar_t*} wcswcs (const wchar_t*, const wchar_t*)
+#endif
+#if !defined ISO && !defined POSIX && !defined POSIX2008
function int wcswidth (const wchar_t*, size_t)
+#endif
function size_t wcsxfrm (wchar_t*, const wchar_t*, size_t)
+#if defined XOPEN2K8 || defined POSIX2008
+function size_t wcsxfrm_l (wchar_t*, const wchar_t*, size_t, locale_t)
+#endif
function int wctob (wint_t)
+#if !defined ISO && !defined POSIX && !defined POSIX2008
function wctype_t wctype (const char*)
function int wcwidth (wchar_t)
+#endif
function {wchar_t*} wmemchr (const wchar_t*, wchar_t, size_t)
function int wmemcmp (const wchar_t*, const wchar_t*, size_t)
function {wchar_t*} wmemcpy (wchar_t*, const wchar_t*, size_t)
diff --git a/conform/data/wctype.h-data b/conform/data/wctype.h-data
index 230d7482a6..a3f8c54a85 100644
--- a/conform/data/wctype.h-data
+++ b/conform/data/wctype.h-data
@@ -1,6 +1,9 @@
type wint_t
type wctrans_t
type wctype_t
+#if defined XOPEN2K8 || defined POSIX2008
+type locale_t
+#endif
function int iswalnum (wint_t)
function int iswalpha (wint_t)
@@ -19,6 +22,25 @@ function wint_t towlower (wint_t)
function wint_t towupper (wint_t)
function wctrans_t wctrans (const char*)
function wctype_t wctype (const char*)
+#if defined XOPEN2K8 || defined POSIX2008
+function int iswalnum_l (wint_t, locale_t)
+function int iswalpha_l (wint_t, locale_t)
+function int iswcntrl_l (wint_t, locale_t)
+function int iswdigit_l (wint_t, locale_t)
+function int iswgraph_l (wint_t, locale_t)
+function int iswlower_l (wint_t, locale_t)
+function int iswprint_l (wint_t, locale_t)
+function int iswpunct_l (wint_t, locale_t)
+function int iswspace_l (wint_t, locale_t)
+function int iswupper_l (wint_t, locale_t)
+function int iswxdigit_l (wint_t, locale_t)
+function int iswctype_l (wint_t, wctype_t, locale_t)
+function wint_t towctrans_l (wint_t, wctrans_t, locale_t)
+function wint_t towlower_l (wint_t, locale_t)
+function wint_t towupper_l (wint_t, locale_t)
+function wctrans_t wctrans_l (const char*, locale_t)
+function wctype_t wctype_l (const char*, locale_t)
+#endif
macro WEOF
diff --git a/conform/data/wordexp.h-data b/conform/data/wordexp.h-data
index bfa66e8f15..acbed7495e 100644
--- a/conform/data/wordexp.h-data
+++ b/conform/data/wordexp.h-data
@@ -14,7 +14,9 @@ constant WRDE_UNDEF
constant WRDE_BADCHAR
constant WRDE_CMDSUB
constant WRDE_NOSPACE
+#if !defined XOPEN2K8 && !defined POSIX2008
constant WRDE_NOSYS
+#endif
constant WRDE_SYNTAX
function int wordexp (const char*, wordexp_t*, int)
diff --git a/crypt/Makefile b/crypt/Makefile
index 28f82193b6..b9c8797474 100644
--- a/crypt/Makefile
+++ b/crypt/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1996, 2000, 2001, 2007 Free Software Foundation, Inc.
+# Copyright (C) 1996, 2000, 2001, 2007, 2009 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
@@ -26,10 +26,10 @@ headers := crypt.h
extra-libs := libcrypt
extra-libs-others := $(extra-libs)
-libcrypt-routines := crypt-entry md5-crypt md5 sha256-crypt sha256 \
- sha512-crypt sha512 crypt crypt_util
+libcrypt-routines := crypt-entry md5-crypt sha256-crypt sha512-crypt crypt \
+ crypt_util
-tests := cert md5test md5c-test sha256test sha256c-test sha512test sha512c-test
+tests := cert md5c-test sha256c-test sha512c-test
distribute := ufc-crypt.h crypt-private.h ufc.c speeds.c README.ufc-crypt \
Banner md5.h sha256.h sha512.h
@@ -40,9 +40,20 @@ ifeq ($(crypt-in-libc),yes)
routines += $(libcrypt-routines)
endif
+ifeq ($(nss-crypt),yes)
+CPPFLAGS-sha256-crypt.c = -DUSE_NSS -I$(shell nss-config --includedir)
+CPPFLAGS-sha512-crypt.c = -DUSE_NSS -I$(shell nss-config --includedir)
+CPPFLAGS-md5-crypt.c = -DUSE_NSS -I$(shell nss-config --includedir)
+LDLIBS-crypt.so = -lfreebl3
+else
+libcrypt-routines += md5 sha256 sha512
+
+tests += md5test sha256test sha512test
+
$(objpfx)md5test: $(objpfx)md5.o
$(objpfx)sha256test: $(objpfx)sha256.o
$(objpfx)sha512test: $(objpfx)sha512.o
+endif
include ../Rules
diff --git a/crypt/md5-crypt.c b/crypt/md5-crypt.c
index 8a000f0acd..403cb2be56 100644
--- a/crypt/md5-crypt.c
+++ b/crypt/md5-crypt.c
@@ -1,6 +1,6 @@
/* One way encryption based on MD5 sum.
Compatible with the behavior of MD5 crypt introduced in FreeBSD 2.0.
- Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2004
+ Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2004, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -29,6 +29,52 @@
#include "md5.h"
+#ifdef USE_NSS
+typedef int PRBool;
+# include <hasht.h>
+# include <nsslowhash.h>
+
+# define md5_init_ctx(ctxp, nss_ctxp) \
+ do \
+ { \
+ if (((nss_ctxp = NSSLOWHASH_NewContext (nss_ictx, HASH_AlgMD5)) \
+ == NULL)) \
+ { \
+ if (nss_ctx != NULL) \
+ NSSLOWHASH_Destroy (nss_ctx); \
+ if (nss_alt_ctx != NULL) \
+ NSSLOWHASH_Destroy (nss_alt_ctx); \
+ return NULL; \
+ } \
+ NSSLOWHASH_Begin (nss_ctxp); \
+ } \
+ while (0)
+
+# define md5_process_bytes(buf, len, ctxp, nss_ctxp) \
+ NSSLOWHASH_Update (nss_ctxp, (const unsigned char *) buf, len)
+
+# define md5_finish_ctx(ctxp, nss_ctxp, result) \
+ do \
+ { \
+ unsigned int ret; \
+ NSSLOWHASH_End (nss_ctxp, result, &ret, sizeof (result)); \
+ assert (ret == sizeof (result)); \
+ NSSLOWHASH_Destroy (nss_ctxp); \
+ nss_ctxp = NULL; \
+ } \
+ while (0)
+#else
+# define md5_init_ctx(ctxp, nss_ctxp) \
+ __md5_init_ctx (ctxp)
+
+# define md5_process_bytes(buf, len, ctxp, nss_ctxp) \
+ __md5_process_bytes(buf, len, ctxp)
+
+# define md5_finish_ctx(ctxp, nss_ctxp, result) \
+ __md5_finish_ctx (ctxp, result)
+#endif
+
+
/* Define our magic string to mark salt for MD5 "encryption"
replacement. This is meant to be the same as for other MD5 based
encryption implementations. */
@@ -56,8 +102,6 @@ __md5_crypt_r (key, salt, buffer, buflen)
{
unsigned char alt_result[16]
__attribute__ ((__aligned__ (__alignof__ (md5_uint32))));
- struct md5_ctx ctx;
- struct md5_ctx alt_ctx;
size_t salt_len;
size_t key_len;
size_t cnt;
@@ -94,43 +138,56 @@ __md5_crypt_r (key, salt, buffer, buflen)
assert ((salt - (char *) 0) % __alignof__ (md5_uint32) == 0);
}
+#ifdef USE_NSS
+ /* Initialize libfreebl3. */
+ NSSLOWInitContext *nss_ictx = NSSLOW_Init ();
+ if (nss_ictx == NULL)
+ return NULL;
+ NSSLOWHASHContext *nss_ctx = NULL;
+ NSSLOWHASHContext *nss_alt_ctx = NULL;
+#else
+ struct md5_ctx ctx;
+ struct md5_ctx alt_ctx;
+#endif
+
/* Prepare for the real work. */
- __md5_init_ctx (&ctx);
+ md5_init_ctx (&ctx, nss_ctx);
/* Add the key string. */
- __md5_process_bytes (key, key_len, &ctx);
+ md5_process_bytes (key, key_len, &ctx, nss_ctx);
/* Because the SALT argument need not always have the salt prefix we
add it separately. */
- __md5_process_bytes (md5_salt_prefix, sizeof (md5_salt_prefix) - 1, &ctx);
+ md5_process_bytes (md5_salt_prefix, sizeof (md5_salt_prefix) - 1,
+ &ctx, nss_ctx);
/* The last part is the salt string. This must be at most 8
characters and it ends at the first `$' character (for
compatibility with existing implementations). */
- __md5_process_bytes (salt, salt_len, &ctx);
+ md5_process_bytes (salt, salt_len, &ctx, nss_ctx);
/* Compute alternate MD5 sum with input KEY, SALT, and KEY. The
final result will be added to the first context. */
- __md5_init_ctx (&alt_ctx);
+ md5_init_ctx (&alt_ctx, nss_alt_ctx);
/* Add key. */
- __md5_process_bytes (key, key_len, &alt_ctx);
+ md5_process_bytes (key, key_len, &alt_ctx, nss_alt_ctx);
/* Add salt. */
- __md5_process_bytes (salt, salt_len, &alt_ctx);
+ md5_process_bytes (salt, salt_len, &alt_ctx, nss_alt_ctx);
/* Add key again. */
- __md5_process_bytes (key, key_len, &alt_ctx);
+ md5_process_bytes (key, key_len, &alt_ctx, nss_alt_ctx);
/* Now get result of this (16 bytes) and add it to the other
context. */
- __md5_finish_ctx (&alt_ctx, alt_result);
+ md5_finish_ctx (&alt_ctx, nss_alt_ctx, alt_result);
/* Add for any character in the key one byte of the alternate sum. */
for (cnt = key_len; cnt > 16; cnt -= 16)
- __md5_process_bytes (alt_result, 16, &ctx);
- __md5_process_bytes (alt_result, cnt, &ctx);
+ md5_process_bytes (alt_result, 16, &ctx, nss_ctx);
+ md5_process_bytes (alt_result, cnt, &ctx, nss_ctx);
/* For the following code we need a NUL byte. */
*alt_result = '\0';
@@ -140,11 +197,12 @@ __md5_crypt_r (key, salt, buffer, buflen)
bit the first character of the key. This does not seem to be
what was intended but we have to follow this to be compatible. */
for (cnt = key_len; cnt > 0; cnt >>= 1)
- __md5_process_bytes ((cnt & 1) != 0 ? (const char *) alt_result : key, 1,
- &ctx);
+ md5_process_bytes ((cnt & 1) != 0
+ ? (const void *) alt_result : (const void *) key, 1,
+ &ctx, nss_ctx);
/* Create intermediate result. */
- __md5_finish_ctx (&ctx, alt_result);
+ md5_finish_ctx (&ctx, nss_ctx, alt_result);
/* Now comes another weirdness. In fear of password crackers here
comes a quite long loop which just processes the output of the
@@ -152,32 +210,37 @@ __md5_crypt_r (key, salt, buffer, buflen)
for (cnt = 0; cnt < 1000; ++cnt)
{
/* New context. */
- __md5_init_ctx (&ctx);
+ md5_init_ctx (&ctx, nss_ctx);
/* Add key or last result. */
if ((cnt & 1) != 0)
- __md5_process_bytes (key, key_len, &ctx);
+ md5_process_bytes (key, key_len, &ctx, nss_ctx);
else
- __md5_process_bytes (alt_result, 16, &ctx);
+ md5_process_bytes (alt_result, 16, &ctx, nss_ctx);
/* Add salt for numbers not divisible by 3. */
if (cnt % 3 != 0)
- __md5_process_bytes (salt, salt_len, &ctx);
+ md5_process_bytes (salt, salt_len, &ctx, nss_ctx);
/* Add key for numbers not divisible by 7. */
if (cnt % 7 != 0)
- __md5_process_bytes (key, key_len, &ctx);
+ md5_process_bytes (key, key_len, &ctx, nss_ctx);
/* Add key or last result. */
if ((cnt & 1) != 0)
- __md5_process_bytes (alt_result, 16, &ctx);
+ md5_process_bytes (alt_result, 16, &ctx, nss_ctx);
else
- __md5_process_bytes (key, key_len, &ctx);
+ md5_process_bytes (key, key_len, &ctx, nss_ctx);
/* Create intermediate result. */
- __md5_finish_ctx (&ctx, alt_result);
+ md5_finish_ctx (&ctx, nss_ctx, alt_result);
}
+#ifdef USE_NSS
+ /* Free libfreebl3 resources. */
+ NSSLOW_Shutdown (nss_ictx);
+#endif
+
/* Now we can construct the result string. It consists of three
parts. */
cp = __stpncpy (buffer, md5_salt_prefix, MAX (0, buflen));
@@ -192,18 +255,17 @@ __md5_crypt_r (key, salt, buffer, buflen)
--buflen;
}
-#define b64_from_24bit(B2, B1, B0, N) \
- do { \
- unsigned int w = ((B2) << 16) | ((B1) << 8) | (B0); \
- int n = (N); \
- while (n-- > 0 && buflen > 0) \
- { \
- *cp++ = b64t[w & 0x3f]; \
- --buflen; \
- w >>= 6; \
- } \
- } while (0)
-
+ void b64_from_24bit (unsigned int b2, unsigned int b1, unsigned int b0,
+ int n)
+ {
+ unsigned int w = (b2 << 16) | (b1 << 8) | b0;
+ while (n-- > 0 && buflen > 0)
+ {
+ *cp++ = b64t[w & 0x3f];
+ --buflen;
+ w >>= 6;
+ }
+ }
b64_from_24bit (alt_result[0], alt_result[6], alt_result[12], 4);
b64_from_24bit (alt_result[1], alt_result[7], alt_result[13], 4);
@@ -223,10 +285,12 @@ __md5_crypt_r (key, salt, buffer, buflen)
attaching to processes or reading core dumps cannot get any
information. We do it in this way to clear correct_words[]
inside the MD5 implementation as well. */
+#ifndef USE_NSS
__md5_init_ctx (&ctx);
__md5_finish_ctx (&ctx, alt_result);
memset (&ctx, '\0', sizeof (ctx));
memset (&alt_ctx, '\0', sizeof (alt_ctx));
+#endif
if (copied_key != NULL)
memset (copied_key, '\0', key_len);
if (copied_salt != NULL)
diff --git a/crypt/sha256-crypt.c b/crypt/sha256-crypt.c
index dbd29e0efd..0131c803ca 100644
--- a/crypt/sha256-crypt.c
+++ b/crypt/sha256-crypt.c
@@ -1,5 +1,5 @@
/* One way encryption based on SHA256 sum.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2007.
@@ -28,6 +28,52 @@
#include "sha256.h"
+#ifdef USE_NSS
+typedef int PRBool;
+# include <hasht.h>
+# include <nsslowhash.h>
+
+# define sha256_init_ctx(ctxp, nss_ctxp) \
+ do \
+ { \
+ if (((nss_ctxp = NSSLOWHASH_NewContext (nss_ictx, HASH_AlgSHA256)) \
+ == NULL)) \
+ { \
+ if (nss_ctx != NULL) \
+ NSSLOWHASH_Destroy (nss_ctx); \
+ if (nss_alt_ctx != NULL) \
+ NSSLOWHASH_Destroy (nss_alt_ctx); \
+ return NULL; \
+ } \
+ NSSLOWHASH_Begin (nss_ctxp); \
+ } \
+ while (0)
+
+# define sha256_process_bytes(buf, len, ctxp, nss_ctxp) \
+ NSSLOWHASH_Update (nss_ctxp, (const unsigned char *) buf, len)
+
+# define sha256_finish_ctx(ctxp, nss_ctxp, result) \
+ do \
+ { \
+ unsigned int ret; \
+ NSSLOWHASH_End (nss_ctxp, result, &ret, sizeof (result)); \
+ assert (ret == sizeof (result)); \
+ NSSLOWHASH_Destroy (nss_ctxp); \
+ nss_ctxp = NULL; \
+ } \
+ while (0)
+#else
+# define sha256_init_ctx(ctxp, nss_ctxp) \
+ __sha256_init_ctx (ctxp)
+
+# define sha256_process_bytes(buf, len, ctxp, nss_ctxp) \
+ __sha256_process_bytes(buf, len, ctxp)
+
+# define sha256_finish_ctx(ctxp, nss_ctxp, result) \
+ __sha256_finish_ctx (ctxp, result)
+#endif
+
+
/* Define our magic string to mark salt for SHA256 "encryption"
replacement. */
static const char sha256_salt_prefix[] = "$5$";
@@ -66,8 +112,6 @@ __sha256_crypt_r (key, salt, buffer, buflen)
__attribute__ ((__aligned__ (__alignof__ (uint32_t))));
unsigned char temp_result[32]
__attribute__ ((__aligned__ (__alignof__ (uint32_t))));
- struct sha256_ctx ctx;
- struct sha256_ctx alt_ctx;
size_t salt_len;
size_t key_len;
size_t cnt;
@@ -123,59 +167,71 @@ __sha256_crypt_r (key, salt, buffer, buflen)
assert ((salt - (char *) 0) % __alignof__ (uint32_t) == 0);
}
+#ifdef USE_NSS
+ /* Initialize libfreebl3. */
+ NSSLOWInitContext *nss_ictx = NSSLOW_Init ();
+ if (nss_ictx == NULL)
+ return NULL;
+ NSSLOWHASHContext *nss_ctx = NULL;
+ NSSLOWHASHContext *nss_alt_ctx = NULL;
+#else
+ struct sha256_ctx ctx;
+ struct sha256_ctx alt_ctx;
+#endif
+
/* Prepare for the real work. */
- __sha256_init_ctx (&ctx);
+ sha256_init_ctx (&ctx, nss_ctx);
/* Add the key string. */
- __sha256_process_bytes (key, key_len, &ctx);
+ sha256_process_bytes (key, key_len, &ctx, nss_ctx);
/* The last part is the salt string. This must be at most 16
characters and it ends at the first `$' character. */
- __sha256_process_bytes (salt, salt_len, &ctx);
+ sha256_process_bytes (salt, salt_len, &ctx, nss_ctx);
/* Compute alternate SHA256 sum with input KEY, SALT, and KEY. The
final result will be added to the first context. */
- __sha256_init_ctx (&alt_ctx);
+ sha256_init_ctx (&alt_ctx, nss_alt_ctx);
/* Add key. */
- __sha256_process_bytes (key, key_len, &alt_ctx);
+ sha256_process_bytes (key, key_len, &alt_ctx, nss_alt_ctx);
/* Add salt. */
- __sha256_process_bytes (salt, salt_len, &alt_ctx);
+ sha256_process_bytes (salt, salt_len, &alt_ctx, nss_alt_ctx);
/* Add key again. */
- __sha256_process_bytes (key, key_len, &alt_ctx);
+ sha256_process_bytes (key, key_len, &alt_ctx, nss_alt_ctx);
/* Now get result of this (32 bytes) and add it to the other
context. */
- __sha256_finish_ctx (&alt_ctx, alt_result);
+ sha256_finish_ctx (&alt_ctx, nss_alt_ctx, alt_result);
/* Add for any character in the key one byte of the alternate sum. */
for (cnt = key_len; cnt > 32; cnt -= 32)
- __sha256_process_bytes (alt_result, 32, &ctx);
- __sha256_process_bytes (alt_result, cnt, &ctx);
+ sha256_process_bytes (alt_result, 32, &ctx, nss_ctx);
+ sha256_process_bytes (alt_result, cnt, &ctx, nss_ctx);
/* Take the binary representation of the length of the key and for every
1 add the alternate sum, for every 0 the key. */
for (cnt = key_len; cnt > 0; cnt >>= 1)
if ((cnt & 1) != 0)
- __sha256_process_bytes (alt_result, 32, &ctx);
+ sha256_process_bytes (alt_result, 32, &ctx, nss_ctx);
else
- __sha256_process_bytes (key, key_len, &ctx);
+ sha256_process_bytes (key, key_len, &ctx, nss_ctx);
/* Create intermediate result. */
- __sha256_finish_ctx (&ctx, alt_result);
+ sha256_finish_ctx (&ctx, nss_ctx, alt_result);
/* Start computation of P byte sequence. */
- __sha256_init_ctx (&alt_ctx);
+ sha256_init_ctx (&alt_ctx, nss_alt_ctx);
/* For every character in the password add the entire password. */
for (cnt = 0; cnt < key_len; ++cnt)
- __sha256_process_bytes (key, key_len, &alt_ctx);
+ sha256_process_bytes (key, key_len, &alt_ctx, nss_alt_ctx);
/* Finish the digest. */
- __sha256_finish_ctx (&alt_ctx, temp_result);
+ sha256_finish_ctx (&alt_ctx, nss_alt_ctx, temp_result);
/* Create byte sequence P. */
cp = p_bytes = alloca (key_len);
@@ -184,14 +240,14 @@ __sha256_crypt_r (key, salt, buffer, buflen)
memcpy (cp, temp_result, cnt);
/* Start computation of S byte sequence. */
- __sha256_init_ctx (&alt_ctx);
+ sha256_init_ctx (&alt_ctx, nss_alt_ctx);
/* For every character in the password add the entire password. */
for (cnt = 0; cnt < 16 + alt_result[0]; ++cnt)
- __sha256_process_bytes (salt, salt_len, &alt_ctx);
+ sha256_process_bytes (salt, salt_len, &alt_ctx, nss_alt_ctx);
/* Finish the digest. */
- __sha256_finish_ctx (&alt_ctx, temp_result);
+ sha256_finish_ctx (&alt_ctx, nss_alt_ctx, temp_result);
/* Create byte sequence S. */
cp = s_bytes = alloca (salt_len);
@@ -204,32 +260,37 @@ __sha256_crypt_r (key, salt, buffer, buflen)
for (cnt = 0; cnt < rounds; ++cnt)
{
/* New context. */
- __sha256_init_ctx (&ctx);
+ sha256_init_ctx (&ctx, nss_ctx);
/* Add key or last result. */
if ((cnt & 1) != 0)
- __sha256_process_bytes (p_bytes, key_len, &ctx);
+ sha256_process_bytes (p_bytes, key_len, &ctx, nss_ctx);
else
- __sha256_process_bytes (alt_result, 32, &ctx);
+ sha256_process_bytes (alt_result, 32, &ctx, nss_ctx);
/* Add salt for numbers not divisible by 3. */
if (cnt % 3 != 0)
- __sha256_process_bytes (s_bytes, salt_len, &ctx);
+ sha256_process_bytes (s_bytes, salt_len, &ctx, nss_ctx);
/* Add key for numbers not divisible by 7. */
if (cnt % 7 != 0)
- __sha256_process_bytes (p_bytes, key_len, &ctx);
+ sha256_process_bytes (p_bytes, key_len, &ctx, nss_ctx);
/* Add key or last result. */
if ((cnt & 1) != 0)
- __sha256_process_bytes (alt_result, 32, &ctx);
+ sha256_process_bytes (alt_result, 32, &ctx, nss_ctx);
else
- __sha256_process_bytes (p_bytes, key_len, &ctx);
+ sha256_process_bytes (p_bytes, key_len, &ctx, nss_ctx);
/* Create intermediate result. */
- __sha256_finish_ctx (&ctx, alt_result);
+ sha256_finish_ctx (&ctx, nss_ctx, alt_result);
}
+#ifdef USE_NSS
+ /* Free libfreebl3 resources. */
+ NSSLOW_Shutdown (nss_ictx);
+#endif
+
/* Now we can construct the result string. It consists of three
parts. */
cp = __stpncpy (buffer, sha256_salt_prefix, MAX (0, buflen));
@@ -252,17 +313,17 @@ __sha256_crypt_r (key, salt, buffer, buflen)
--buflen;
}
-#define b64_from_24bit(B2, B1, B0, N) \
- do { \
- unsigned int w = ((B2) << 16) | ((B1) << 8) | (B0); \
- int n = (N); \
- while (n-- > 0 && buflen > 0) \
- { \
- *cp++ = b64t[w & 0x3f]; \
- --buflen; \
- w >>= 6; \
- } \
- } while (0)
+ void b64_from_24bit (unsigned int b2, unsigned int b1, unsigned int b0,
+ int n)
+ {
+ unsigned int w = (b2 << 16) | (b1 << 8) | b0;
+ while (n-- > 0 && buflen > 0)
+ {
+ *cp++ = b64t[w & 0x3f];
+ --buflen;
+ w >>= 6;
+ }
+ }
b64_from_24bit (alt_result[0], alt_result[10], alt_result[20], 4);
b64_from_24bit (alt_result[21], alt_result[1], alt_result[11], 4);
@@ -287,13 +348,15 @@ __sha256_crypt_r (key, salt, buffer, buflen)
attaching to processes or reading core dumps cannot get any
information. We do it in this way to clear correct_words[]
inside the SHA256 implementation as well. */
+#ifndef USE_NSS
__sha256_init_ctx (&ctx);
__sha256_finish_ctx (&ctx, alt_result);
+ memset (&ctx, '\0', sizeof (ctx));
+ memset (&alt_ctx, '\0', sizeof (alt_ctx));
+#endif
memset (temp_result, '\0', sizeof (temp_result));
memset (p_bytes, '\0', key_len);
memset (s_bytes, '\0', salt_len);
- memset (&ctx, '\0', sizeof (ctx));
- memset (&alt_ctx, '\0', sizeof (alt_ctx));
if (copied_key != NULL)
memset (copied_key, '\0', key_len);
if (copied_salt != NULL)
diff --git a/crypt/sha256test.c b/crypt/sha256test.c
index b13a3c511e..39e80307c7 100644
--- a/crypt/sha256test.c
+++ b/crypt/sha256test.c
@@ -84,7 +84,17 @@ main (void)
"\xf1\x80\x9a\x48\xa4\x97\x20\x0e\x04\x6d\x39\xcc\xc7\x11\x2c\xd0";
if (memcmp (expected, sum, 32) != 0)
{
- printf ("test %d failed\n", cnt);
+ printf ("test %d failed\n", cnt++);
+ result = 1;
+ }
+
+ __sha256_init_ctx (&ctx);
+ for (int i = 0; i < 100000; ++i)
+ __sha256_process_bytes (buf, 10, &ctx);
+ __sha256_finish_ctx (&ctx, sum);
+ if (memcmp (expected, sum, 32) != 0)
+ {
+ printf ("test %d failed\n", cnt++);
result = 1;
}
diff --git a/crypt/sha512-crypt.c b/crypt/sha512-crypt.c
index ea96e525fb..523659e0cc 100644
--- a/crypt/sha512-crypt.c
+++ b/crypt/sha512-crypt.c
@@ -1,5 +1,5 @@
/* One way encryption based on SHA512 sum.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2007.
@@ -28,6 +28,52 @@
#include "sha512.h"
+#ifdef USE_NSS
+typedef int PRBool;
+# include <hasht.h>
+# include <nsslowhash.h>
+
+# define sha512_init_ctx(ctxp, nss_ctxp) \
+ do \
+ { \
+ if (((nss_ctxp = NSSLOWHASH_NewContext (nss_ictx, HASH_AlgSHA512)) \
+ == NULL)) \
+ { \
+ if (nss_ctx != NULL) \
+ NSSLOWHASH_Destroy (nss_ctx); \
+ if (nss_alt_ctx != NULL) \
+ NSSLOWHASH_Destroy (nss_alt_ctx); \
+ return NULL; \
+ } \
+ NSSLOWHASH_Begin (nss_ctxp); \
+ } \
+ while (0)
+
+# define sha512_process_bytes(buf, len, ctxp, nss_ctxp) \
+ NSSLOWHASH_Update (nss_ctxp, (const unsigned char *) buf, len)
+
+# define sha512_finish_ctx(ctxp, nss_ctxp, result) \
+ do \
+ { \
+ unsigned int ret; \
+ NSSLOWHASH_End (nss_ctxp, result, &ret, sizeof (result)); \
+ assert (ret == sizeof (result)); \
+ NSSLOWHASH_Destroy (nss_ctxp); \
+ nss_ctxp = NULL; \
+ } \
+ while (0)
+#else
+# define sha512_init_ctx(ctxp, nss_ctxp) \
+ __sha512_init_ctx (ctxp)
+
+# define sha512_process_bytes(buf, len, ctxp, nss_ctxp) \
+ __sha512_process_bytes(buf, len, ctxp)
+
+# define sha512_finish_ctx(ctxp, nss_ctxp, result) \
+ __sha512_finish_ctx (ctxp, result)
+#endif
+
+
/* Define our magic string to mark salt for SHA512 "encryption"
replacement. */
static const char sha512_salt_prefix[] = "$6$";
@@ -66,8 +112,6 @@ __sha512_crypt_r (key, salt, buffer, buflen)
__attribute__ ((__aligned__ (__alignof__ (uint64_t))));
unsigned char temp_result[64]
__attribute__ ((__aligned__ (__alignof__ (uint64_t))));
- struct sha512_ctx ctx;
- struct sha512_ctx alt_ctx;
size_t salt_len;
size_t key_len;
size_t cnt;
@@ -123,59 +167,71 @@ __sha512_crypt_r (key, salt, buffer, buflen)
assert ((salt - (char *) 0) % __alignof__ (uint64_t) == 0);
}
+#ifdef USE_NSS
+ /* Initialize libfreebl3. */
+ NSSLOWInitContext *nss_ictx = NSSLOW_Init ();
+ if (nss_ictx == NULL)
+ return NULL;
+ NSSLOWHASHContext *nss_ctx = NULL;
+ NSSLOWHASHContext *nss_alt_ctx = NULL;
+#else
+ struct sha512_ctx ctx;
+ struct sha512_ctx alt_ctx;
+#endif
+
/* Prepare for the real work. */
- __sha512_init_ctx (&ctx);
+ sha512_init_ctx (&ctx, nss_ctx);
/* Add the key string. */
- __sha512_process_bytes (key, key_len, &ctx);
+ sha512_process_bytes (key, key_len, &ctx, nss_ctx);
/* The last part is the salt string. This must be at most 16
characters and it ends at the first `$' character. */
- __sha512_process_bytes (salt, salt_len, &ctx);
+ sha512_process_bytes (salt, salt_len, &ctx, nss_ctx);
/* Compute alternate SHA512 sum with input KEY, SALT, and KEY. The
final result will be added to the first context. */
- __sha512_init_ctx (&alt_ctx);
+ sha512_init_ctx (&alt_ctx, nss_alt_ctx);
/* Add key. */
- __sha512_process_bytes (key, key_len, &alt_ctx);
+ sha512_process_bytes (key, key_len, &alt_ctx, nss_alt_ctx);
/* Add salt. */
- __sha512_process_bytes (salt, salt_len, &alt_ctx);
+ sha512_process_bytes (salt, salt_len, &alt_ctx, nss_alt_ctx);
/* Add key again. */
- __sha512_process_bytes (key, key_len, &alt_ctx);
+ sha512_process_bytes (key, key_len, &alt_ctx, nss_alt_ctx);
/* Now get result of this (64 bytes) and add it to the other
context. */
- __sha512_finish_ctx (&alt_ctx, alt_result);
+ sha512_finish_ctx (&alt_ctx, nss_alt_ctx, alt_result);
/* Add for any character in the key one byte of the alternate sum. */
for (cnt = key_len; cnt > 64; cnt -= 64)
- __sha512_process_bytes (alt_result, 64, &ctx);
- __sha512_process_bytes (alt_result, cnt, &ctx);
+ sha512_process_bytes (alt_result, 64, &ctx, nss_ctx);
+ sha512_process_bytes (alt_result, cnt, &ctx, nss_ctx);
/* Take the binary representation of the length of the key and for every
1 add the alternate sum, for every 0 the key. */
for (cnt = key_len; cnt > 0; cnt >>= 1)
if ((cnt & 1) != 0)
- __sha512_process_bytes (alt_result, 64, &ctx);
+ sha512_process_bytes (alt_result, 64, &ctx, nss_ctx);
else
- __sha512_process_bytes (key, key_len, &ctx);
+ sha512_process_bytes (key, key_len, &ctx, nss_ctx);
/* Create intermediate result. */
- __sha512_finish_ctx (&ctx, alt_result);
+ sha512_finish_ctx (&ctx, nss_ctx, alt_result);
/* Start computation of P byte sequence. */
- __sha512_init_ctx (&alt_ctx);
+ sha512_init_ctx (&alt_ctx, nss_alt_ctx);
/* For every character in the password add the entire password. */
for (cnt = 0; cnt < key_len; ++cnt)
- __sha512_process_bytes (key, key_len, &alt_ctx);
+ sha512_process_bytes (key, key_len, &alt_ctx, nss_alt_ctx);
/* Finish the digest. */
- __sha512_finish_ctx (&alt_ctx, temp_result);
+ sha512_finish_ctx (&alt_ctx, nss_alt_ctx, temp_result);
/* Create byte sequence P. */
cp = p_bytes = alloca (key_len);
@@ -184,14 +240,14 @@ __sha512_crypt_r (key, salt, buffer, buflen)
memcpy (cp, temp_result, cnt);
/* Start computation of S byte sequence. */
- __sha512_init_ctx (&alt_ctx);
+ sha512_init_ctx (&alt_ctx, nss_alt_ctx);
/* For every character in the password add the entire password. */
for (cnt = 0; cnt < 16 + alt_result[0]; ++cnt)
- __sha512_process_bytes (salt, salt_len, &alt_ctx);
+ sha512_process_bytes (salt, salt_len, &alt_ctx, nss_alt_ctx);
/* Finish the digest. */
- __sha512_finish_ctx (&alt_ctx, temp_result);
+ sha512_finish_ctx (&alt_ctx, nss_alt_ctx, temp_result);
/* Create byte sequence S. */
cp = s_bytes = alloca (salt_len);
@@ -204,32 +260,37 @@ __sha512_crypt_r (key, salt, buffer, buflen)
for (cnt = 0; cnt < rounds; ++cnt)
{
/* New context. */
- __sha512_init_ctx (&ctx);
+ sha512_init_ctx (&ctx, nss_ctx);
/* Add key or last result. */
if ((cnt & 1) != 0)
- __sha512_process_bytes (p_bytes, key_len, &ctx);
+ sha512_process_bytes (p_bytes, key_len, &ctx, nss_ctx);
else
- __sha512_process_bytes (alt_result, 64, &ctx);
+ sha512_process_bytes (alt_result, 64, &ctx, nss_ctx);
/* Add salt for numbers not divisible by 3. */
if (cnt % 3 != 0)
- __sha512_process_bytes (s_bytes, salt_len, &ctx);
+ sha512_process_bytes (s_bytes, salt_len, &ctx, nss_ctx);
/* Add key for numbers not divisible by 7. */
if (cnt % 7 != 0)
- __sha512_process_bytes (p_bytes, key_len, &ctx);
+ sha512_process_bytes (p_bytes, key_len, &ctx, nss_ctx);
/* Add key or last result. */
if ((cnt & 1) != 0)
- __sha512_process_bytes (alt_result, 64, &ctx);
+ sha512_process_bytes (alt_result, 64, &ctx, nss_ctx);
else
- __sha512_process_bytes (p_bytes, key_len, &ctx);
+ sha512_process_bytes (p_bytes, key_len, &ctx, nss_ctx);
/* Create intermediate result. */
- __sha512_finish_ctx (&ctx, alt_result);
+ sha512_finish_ctx (&ctx, nss_ctx, alt_result);
}
+#ifdef USE_NSS
+ /* Free libfreebl3 resources. */
+ NSSLOW_Shutdown (nss_ictx);
+#endif
+
/* Now we can construct the result string. It consists of three
parts. */
cp = __stpncpy (buffer, sha512_salt_prefix, MAX (0, buflen));
@@ -252,17 +313,17 @@ __sha512_crypt_r (key, salt, buffer, buflen)
--buflen;
}
-#define b64_from_24bit(B2, B1, B0, N) \
- do { \
- unsigned int w = ((B2) << 16) | ((B1) << 8) | (B0); \
- int n = (N); \
- while (n-- > 0 && buflen > 0) \
- { \
- *cp++ = b64t[w & 0x3f]; \
- --buflen; \
- w >>= 6; \
- } \
- } while (0)
+ void b64_from_24bit (unsigned int b2, unsigned int b1, unsigned int b0,
+ int n)
+ {
+ unsigned int w = (b2 << 16) | (b1 << 8) | b0;
+ while (n-- > 0 && buflen > 0)
+ {
+ *cp++ = b64t[w & 0x3f];
+ --buflen;
+ w >>= 6;
+ }
+ }
b64_from_24bit (alt_result[0], alt_result[21], alt_result[42], 4);
b64_from_24bit (alt_result[22], alt_result[43], alt_result[1], 4);
@@ -299,13 +360,15 @@ __sha512_crypt_r (key, salt, buffer, buflen)
attaching to processes or reading core dumps cannot get any
information. We do it in this way to clear correct_words[]
inside the SHA512 implementation as well. */
+#ifndef USE_NSS
__sha512_init_ctx (&ctx);
__sha512_finish_ctx (&ctx, alt_result);
+ memset (&ctx, '\0', sizeof (ctx));
+ memset (&alt_ctx, '\0', sizeof (alt_ctx));
+#endif
memset (temp_result, '\0', sizeof (temp_result));
memset (p_bytes, '\0', key_len);
memset (s_bytes, '\0', salt_len);
- memset (&ctx, '\0', sizeof (ctx));
- memset (&alt_ctx, '\0', sizeof (alt_ctx));
if (copied_key != NULL)
memset (copied_key, '\0', key_len);
if (copied_salt != NULL)
diff --git a/csu/.cvsignore b/csu/.cvsignore
deleted file mode 100644
index da6e41b953..0000000000
--- a/csu/.cvsignore
+++ /dev/null
@@ -1,7 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
-specs
diff --git a/csu/.gitignore b/csu/.gitignore
new file mode 100644
index 0000000000..d8933cf691
--- /dev/null
+++ b/csu/.gitignore
@@ -0,0 +1 @@
+specs
diff --git a/csu/elf-init.c b/csu/elf-init.c
index 27eae1550b..1e3d6d6cd8 100644
--- a/csu/elf-init.c
+++ b/csu/elf-init.c
@@ -1,5 +1,5 @@
/* Startup support for ELF initializers/finalizers in the main executable.
- Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005, 2009 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
@@ -36,6 +36,20 @@
#include <stddef.h>
+#if defined USE_MULTIARCH && !defined LIBC_NONSHARED
+# include <link.h>
+# include <dl-irel.h>
+
+# ifdef ELF_MACHINE_IRELA
+extern const ElfW(Rela) __rela_iplt_start [];
+extern const ElfW(Rela) __rela_iplt_end [];
+# endif
+
+# ifdef ELF_MACHINE_IREL
+extern const ElfW(Rel) __rel_iplt_start [];
+extern const ElfW(Rel) __rel_iplt_end [];
+# endif
+#endif /* LIBC_NONSHARED */
/* These magic symbols are provided by the linker. */
extern void (*__preinit_array_start []) (int, char **, char **)
@@ -58,7 +72,34 @@ extern void _fini (void);
/* These functions are passed to __libc_start_main by the startup code.
These get statically linked into each program. For dynamically linked
programs, this module will come from libc_nonshared.a and differs from
- the libc.a module in that it doesn't call the preinit array. */
+ the libc.a module in that it doesn't call the preinit array and performs
+ explicit IREL{,A} relocations. */
+
+
+#ifndef LIBC_NONSHARED
+void
+__libc_csu_irel (void)
+{
+# ifdef USE_MULTIARCH
+# ifdef ELF_MACHINE_IRELA
+ {
+ const size_t size = __rela_iplt_end - __rela_iplt_start;
+ for (size_t i = 0; i < size; i++)
+ elf_irela (&__rela_iplt_start [i]);
+ }
+# endif
+
+# ifdef ELF_MACHINE_IREL
+ {
+ const size_t size = __rel_iplt_end - __rel_iplt_start;
+ for (size_t i = 0; i < size; i++)
+ elf_irel (&__rel_iplt_start [i]);
+ }
+# endif
+# endif
+}
+#endif
+
void
__libc_csu_init (int argc, char **argv, char **envp)
@@ -67,7 +108,7 @@ __libc_csu_init (int argc, char **argv, char **envp)
the dynamic linker (before initializing any shared object. */
#ifndef LIBC_NONSHARED
- /* For static executables, preinit happens rights before init. */
+ /* For static executables, preinit happens right before init. */
{
const size_t size = __preinit_array_end - __preinit_array_start;
size_t i;
diff --git a/csu/libc-start.c b/csu/libc-start.c
index b21aef952c..7576623bec 100644
--- a/csu/libc-start.c
+++ b/csu/libc-start.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2006, 2007, 2009 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
@@ -24,6 +24,9 @@
#include <bp-sym.h>
extern void __libc_init_first (int argc, char **argv, char **envp);
+#ifndef SHARED
+extern void __libc_csu_irel (void);
+#endif
extern int __libc_multiple_libcs;
@@ -134,6 +137,9 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
}
# endif
+ /* Performe IREL{,A} relocations. */
+ __libc_csu_irel ();
+
#ifndef __GNU__
/* Initialize the thread library at least a bit since the libgcc
functions are using thread functions if these are available and
@@ -142,7 +148,7 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
#endif
/* Set up the stack checker's canary. */
- uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard ();
+ uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random);
# ifdef THREAD_SET_STACK_GUARD
THREAD_SET_STACK_GUARD (stack_chk_guard);
# else
diff --git a/csu/libc-tls.c b/csu/libc-tls.c
index 0d240ccef9..5a49942861 100644
--- a/csu/libc-tls.c
+++ b/csu/libc-tls.c
@@ -1,5 +1,5 @@
/* Initialization code for TLS in statically linked application.
- Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2002-2006, 2009 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
@@ -99,6 +99,9 @@ init_static_tls (size_t memsz, size_t align)
surplus that permits dynamic loading of modules with IE-model TLS. */
GL(dl_tls_static_size) = roundup (memsz + GL(dl_tls_static_size),
TLS_TCB_ALIGN);
+#if TLS_TCB_AT_TP
+ GL(dl_tls_static_size) += TLS_TCB_SIZE;
+#endif
GL(dl_tls_static_used) = memsz;
/* The alignment requirement for the static TLS block. */
GL(dl_tls_static_align) = align;
@@ -211,9 +214,7 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign)
memsz = roundup (memsz, align ?: 1);
-#if TLS_TCB_AT_TP
- memsz += tcbsize;
-#elif TLS_DTV_AT_TP
+#if TLS_DTV_AT_TP
memsz += tcb_offset;
#endif
diff --git a/csu/version.c b/csu/version.c
index 9b4edd834b..db913be800 100644
--- a/csu/version.c
+++ b/csu/version.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2006, 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2008, 2009 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
@@ -25,7 +25,7 @@ static const char __libc_version[] = VERSION;
static const char banner[] =
"GNU C Library "RELEASE" release version "VERSION", by Roland McGrath et al.\n\
-Copyright (C) 2008 Free Software Foundation, Inc.\n\
+Copyright (C) 2009 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\
PARTICULAR PURPOSE.\n\
diff --git a/ctype/.cvsignore b/ctype/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/ctype/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/ctype/ctype.h b/ctype/ctype.h
index 301e25d4d1..e859c4a624 100644
--- a/ctype/ctype.h
+++ b/ctype/ctype.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,93,95,96,97,98,99,2001,2002,2004,2007,2008
+/* Copyright (C) 1991,92,93,95,96,97,98,99,2001,2002,2004,2007,2008,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -216,7 +216,7 @@ __NTH (toupper (int __c))
#endif /* Not __NO_CTYPE. */
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* The concept of one static locale per category is not very well
thought out. Many applications will need to process its data using
information from several different locales. Another application is
@@ -292,7 +292,7 @@ extern int toupper_l (int __c, __locale_t __l) __THROW;
# define __isblank_l(c,l) __isctype_l((c), _ISblank, (l))
-# if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN
+# if defined __USE_SVID || defined __USE_MISC
# define __isascii_l(c,l) ((l), __isascii (c))
# define __toascii_l(c,l) ((l), __toascii (c))
# endif
@@ -311,14 +311,14 @@ extern int toupper_l (int __c, __locale_t __l) __THROW;
# define isblank_l(c,l) __isblank_l ((c), (l))
-# if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN
+# if defined __USE_SVID || defined __USE_MISC
# define isascii_l(c,l) __isascii_l ((c), (l))
# define toascii_l(c,l) __toascii_l ((c), (l))
# endif
# endif /* Not __NO_CTYPE. */
-#endif /* Use GNU. */
+#endif /* Use POSIX 2008. */
__END_DECLS
diff --git a/debug/Makefile b/debug/Makefile
index ece7ee6bd7..d7c51ca85f 100644
--- a/debug/Makefile
+++ b/debug/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1998-2001,2004-2008 Free Software Foundation, Inc.
+# Copyright (C) 1998-2001,2004-2008, 2009 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
@@ -43,6 +43,7 @@ routines = backtrace backtracesyms backtracesymsfd noophooks \
wcsnrtombs_chk mbsrtowcs_chk wcsrtombs_chk mbstowcs_chk \
wcstombs_chk asprintf_chk vasprintf_chk dprintf_chk \
vdprintf_chk obprintf_chk \
+ longjmp_chk ____longjmp_chk \
stack_chk_fail fortify_fail \
$(static-only-routines)
static-only-routines := warning-nop stack_chk_fail_local
@@ -79,6 +80,10 @@ CFLAGS-pread_chk.c = -fexceptions -fasynchronous-unwind-tables
CFLAGS-pread64_chk.c = -fexceptions -fasynchronous-unwind-tables
CFLAGS-recv_chk.c = -fexceptions -fasynchronous-unwind-tables
CFLAGS-recvfrom_chk.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-tst-longjmp_chk.c = -fexceptions -fasynchronous-unwind-tables \
+ -D_FORTIFY_SOURCE=1
+CFLAGS-tst-longjmp_chk2.c = -fexceptions -fasynchronous-unwind-tables \
+ -D_FORTIFY_SOURCE=1
# We know these tests have problems with format strings, this is what
# we are testing. Disable that warning.
@@ -113,9 +118,10 @@ LDFLAGS-tst-lfschk4 = -lstdc++
LDFLAGS-tst-lfschk5 = -lstdc++
LDFLAGS-tst-lfschk6 = -lstdc++
-tests = backtrace-tst tst-chk1 tst-chk2 tst-chk3 \
+tests = backtrace-tst tst-longjmp_chk tst-chk1 tst-chk2 tst-chk3 \
tst-lfschk1 tst-lfschk2 tst-lfschk3 test-strcpy_chk test-stpcpy_chk \
- tst-chk4 tst-chk5 tst-chk6 tst-lfschk4 tst-lfschk5 tst-lfschk6
+ tst-chk4 tst-chk5 tst-chk6 tst-lfschk4 tst-lfschk5 tst-lfschk6 \
+ tst-longjmp_chk2
extra-libs = libSegFault libpcprofile
extra-libs-others = $(extra-libs)
diff --git a/debug/Versions b/debug/Versions
index ef6b08b7b3..ff40107b77 100644
--- a/debug/Versions
+++ b/debug/Versions
@@ -46,6 +46,9 @@ libc {
__asprintf_chk; __vasprintf_chk; __dprintf_chk; __vdprintf_chk;
__obstack_printf_chk; __obstack_vprintf_chk;
}
+ GLIBC_2.11 {
+ __longjmp_chk;
+ }
GLIBC_PRIVATE {
__fortify_fail;
}
diff --git a/debug/catchsegv.sh b/debug/catchsegv.sh
index 68fcb69898..5a91d21137 100755
--- a/debug/catchsegv.sh
+++ b/debug/catchsegv.sh
@@ -1,5 +1,5 @@
#! /bin/sh
-# Copyright (C) 1998,1999,2001,2003,2004,2006,2007,2008
+# Copyright (C) 1998,1999,2001,2003,2004,2006,2007,2008,2009
# Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -40,7 +40,7 @@ if test $# -eq 0; then
;;
--v | --ve | --ver | --vers | --versi | --versio | --version)
echo 'catchsegv (GNU libc) @VERSION@'
- echo 'Copyright (C) 2008 Free Software Foundation, Inc.
+ echo 'Copyright (C) 2009 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.
Written by Ulrich Drepper.'
diff --git a/sysdeps/alpha/fpu/s_fabsf.c b/debug/longjmp_chk.c
index 35e16bf65d..7de2a98a30 100644
--- a/sysdeps/alpha/fpu/s_fabsf.c
+++ b/debug/longjmp_chk.c
@@ -1,6 +1,5 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Richard Henderson.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -17,17 +16,13 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <math.h>
+#include <setjmp.h>
-float
-__fabsf (float x)
-{
-#if __GNUC_PREREQ (2, 8)
- return __builtin_fabsf (x);
-#else
- __asm ("cpys $f31, %1, %0" : "=f" (x) : "f" (x));
- return x;
-#endif
-}
+// XXX Should move to include/setjmp.h
+extern void ____longjmp_chk (__jmp_buf __env, int __val)
+ __attribute__ ((__noreturn__));
-weak_alias (__fabsf, fabsf)
+#define __longjmp ____longjmp_chk
+#define __libc_siglongjmp __longjmp_chk
+
+#include <setjmp/longjmp.c>
diff --git a/debug/pcprofiledump.c b/debug/pcprofiledump.c
index 62c0d73f40..13d9e8c34c 100644
--- a/debug/pcprofiledump.c
+++ b/debug/pcprofiledump.c
@@ -1,5 +1,5 @@
/* Dump information generated by PC profiling.
- Copyright (C) 1999, 2002, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
@@ -66,6 +66,10 @@ static char *more_help (int key, const char *text, void *input);
/* Prototype for option handler. */
static error_t parse_opt (int key, char *arg, struct argp_state *state);
+/* Name and version of program. */
+static void print_version (FILE *stream, struct argp_state *state);
+void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+
/* Data structure to communicate with argp functions. */
static struct argp argp =
{
@@ -209,3 +213,16 @@ For bug reporting instructions, please see:\n\
}
return (char *) text;
}
+
+/* Print the version information. */
+static void
+print_version (FILE *stream, struct argp_state *state)
+{
+ fprintf (stream, "pcprofiledump (GNU %s) %s\n", PACKAGE, 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\
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
+"), "2009");
+ fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
+}
diff --git a/debug/tst-longjmp_chk.c b/debug/tst-longjmp_chk.c
new file mode 100644
index 0000000000..8892974cc7
--- /dev/null
+++ b/debug/tst-longjmp_chk.c
@@ -0,0 +1,86 @@
+#include <errno.h>
+#include <fcntl.h>
+#include <paths.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static jmp_buf b;
+
+
+static void
+__attribute__ ((noinline))
+f (void)
+{
+ char buf[1000];
+ asm volatile ("" : "=m" (buf));
+
+ if (setjmp (b) != 0)
+ {
+ puts ("second longjmp succeeded");
+ exit (1);
+ }
+}
+
+
+static bool expected_to_fail;
+
+
+static void
+handler (int sig)
+{
+ if (expected_to_fail)
+ _exit (0);
+ else
+ {
+ static const char msg[] = "unexpected longjmp failure\n";
+ TEMP_FAILURE_RETRY (write (STDOUT_FILENO, msg, sizeof (msg) - 1));
+ _exit (1);
+ }
+}
+
+
+int
+main (void)
+{
+ struct sigaction sa;
+ sa.sa_handler = handler;
+ sa.sa_flags = 0;
+ sigemptyset (&sa.sa_mask);
+
+ sigaction (SIGABRT, &sa, NULL);
+
+ /* Avoid all the buffer overflow messages on stderr. */
+ int fd = open (_PATH_DEVNULL, O_WRONLY);
+ if (fd == -1)
+ close (STDERR_FILENO);
+ else
+ {
+ dup2 (fd, STDERR_FILENO);
+ close (fd);
+ }
+ setenv ("LIBC_FATAL_STDERR_", "1", 1);
+
+
+ expected_to_fail = false;
+
+ if (setjmp (b) == 0)
+ {
+ longjmp (b, 1);
+ /* NOTREACHED */
+ printf ("first longjmp returned\n");
+ return 1;
+ }
+
+
+ expected_to_fail = true;
+
+ f ();
+ longjmp (b, 1);
+
+ puts ("second longjmp returned");
+ return 1;
+}
diff --git a/debug/tst-longjmp_chk2.c b/debug/tst-longjmp_chk2.c
new file mode 100644
index 0000000000..22d8bf0941
--- /dev/null
+++ b/debug/tst-longjmp_chk2.c
@@ -0,0 +1,114 @@
+/* Test case mostly written by Paolo Bonzini <pbonzini@redhat.com>. */
+#include <assert.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+
+
+static jmp_buf mainloop;
+static sigset_t mainsigset;
+static int pass;
+
+
+static void
+stackoverflow_handler (int sig)
+{
+ stack_t altstack;
+ pass++;
+ sigaltstack (NULL, &altstack);
+ /* Using printf is not really kosher in signal handlers but we know
+ it will work. */
+ printf ("%*sin signal handler\n", pass, "");
+ if (altstack.ss_flags & SS_ONSTACK)
+ printf ("%*son alternate stack\n", pass, "");
+ siglongjmp (mainloop, pass);
+}
+
+
+static volatile int *
+recurse_1 (int n, volatile int *p)
+{
+ if (n >= 0)
+ *recurse_1 (n + 1, p) += n;
+ return p;
+}
+
+
+static int
+recurse (int n)
+{
+ int sum = 0;
+ return *recurse_1 (n, &sum);
+}
+
+
+static int
+do_test (void)
+{
+ char mystack[SIGSTKSZ];
+ stack_t altstack;
+ struct sigaction action;
+ sigset_t emptyset;
+ /* Before starting the endless recursion, try to be friendly to the user's
+ machine. On some Linux 2.2.x systems, there is no stack limit for user
+ processes at all. We don't want to kill such systems. */
+ struct rlimit rl;
+ rl.rlim_cur = rl.rlim_max = 0x100000; /* 1 MB */
+ setrlimit (RLIMIT_STACK, &rl);
+ /* Install the alternate stack. */
+ altstack.ss_sp = mystack;
+ altstack.ss_size = sizeof (mystack);
+ altstack.ss_flags = 0; /* no SS_DISABLE */
+ if (sigaltstack (&altstack, NULL) < 0)
+ {
+ puts ("first sigaltstack failed");
+ return 0;
+ }
+ /* Install the SIGSEGV handler. */
+ sigemptyset (&action.sa_mask);
+ action.sa_handler = &stackoverflow_handler;
+ action.sa_flags = SA_ONSTACK;
+ sigaction (SIGSEGV, &action, (struct sigaction *) NULL);
+ sigaction (SIGBUS, &action, (struct sigaction *) NULL);
+
+ /* Save the current signal mask. */
+ sigemptyset (&emptyset);
+ sigprocmask (SIG_BLOCK, &emptyset, &mainsigset);
+
+ /* Provoke two stack overflows in a row. */
+ if (sigsetjmp (mainloop, 1) != 0)
+ {
+ assert (pass != 0);
+ printf ("%*sout of signal handler\n", pass, "");
+ }
+ else
+ assert (pass == 0);
+
+ sigaltstack (NULL, &altstack);
+ if (altstack.ss_flags & SS_ONSTACK)
+ printf ("%*son alternate stack\n", pass, "");
+ else
+ printf ("%*snot on alternate stack\n", pass, "");
+
+ if (pass < 2)
+ {
+ recurse (0);
+ puts ("recurse call returned");
+ return 2;
+ }
+
+ altstack.ss_flags |= SS_DISABLE;
+ if (sigaltstack (&altstack, NULL) == -1)
+ printf ("disabling alternate stack failed\n");
+ else
+ printf ("disabling alternate stack succeeded \n");
+
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/debug/vasprintf_chk.c b/debug/vasprintf_chk.c
index 6105516d59..bdd3acf3bb 100644
--- a/debug/vasprintf_chk.c
+++ b/debug/vasprintf_chk.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1997,1999-2002,2004,2006,2008
+/* Copyright (C) 1995,1997,1999-2002,2004,2006,2008,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -53,8 +53,8 @@ __vasprintf_chk (char **result_ptr, int flags, const char *format,
#ifdef _IO_MTSAFE_IO
sf._sbf._f._lock = NULL;
#endif
- _IO_no_init ((_IO_FILE *) &sf._sbf, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
+ _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
+ _IO_JUMPS (&sf._sbf) = &_IO_str_jumps;
_IO_str_init_static_internal (&sf, string, init_string_size, string);
sf._sbf._f._flags &= ~_IO_USER_BUF;
sf._s._allocate_buffer = (_IO_alloc_type) malloc;
diff --git a/debug/vsnprintf_chk.c b/debug/vsnprintf_chk.c
index c46937ff6f..8e3d99fa57 100644
--- a/debug/vsnprintf_chk.c
+++ b/debug/vsnprintf_chk.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1997, 1998, 2004, 2006
+/* Copyright (C) 1991, 1995, 1997, 1998, 2004, 2006, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -53,7 +53,7 @@ ___vsnprintf_chk (char *s, size_t maxlen, int flags, size_t slen,
}
_IO_no_init (&sf.f._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf.f._sbf) = &_IO_strn_jumps;
+ _IO_JUMPS (&sf.f._sbf) = &_IO_strn_jumps;
s[0] = '\0';
/* For flags > 0 (i.e. __USE_FORTIFY_LEVEL > 1) request that %n
@@ -62,7 +62,7 @@ ___vsnprintf_chk (char *s, size_t maxlen, int flags, size_t slen,
sf.f._sbf._f._flags2 |= _IO_FLAGS2_FORTIFY;
_IO_str_init_static_internal (&sf.f, s, maxlen - 1, s);
- ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf.f._sbf, format, args);
+ ret = INTUSE(_IO_vfprintf) (&sf.f._sbf._f, format, args);
if (sf.f._sbf._f._IO_buf_base != sf.overflow_buf)
*sf.f._sbf._f._IO_write_ptr = '\0';
diff --git a/debug/vsprintf_chk.c b/debug/vsprintf_chk.c
index 6538064dce..22cb2c7ad9 100644
--- a/debug/vsprintf_chk.c
+++ b/debug/vsprintf_chk.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1997, 1999-2003, 2004, 2006
+/* Copyright (C) 1994, 1997, 1999-2003, 2004, 2006, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -75,7 +75,7 @@ ___vsprintf_chk (char *s, int flags, size_t slen, const char *format,
__chk_fail ();
_IO_no_init (&f._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &f._sbf) = &_IO_str_chk_jumps;
+ _IO_JUMPS (&f._sbf) = &_IO_str_chk_jumps;
s[0] = '\0';
_IO_str_init_static_internal (&f, s, slen - 1, s);
@@ -84,7 +84,7 @@ ___vsprintf_chk (char *s, int flags, size_t slen, const char *format,
if (flags > 0)
f._sbf._f._flags2 |= _IO_FLAGS2_FORTIFY;
- ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &f._sbf, format, args);
+ ret = INTUSE(_IO_vfprintf) (&f._sbf._f, format, args);
*f._sbf._f._IO_write_ptr = '\0';
return ret;
diff --git a/debug/xtrace.sh b/debug/xtrace.sh
index 6902c4f4c4..8ef507ef38 100755
--- a/debug/xtrace.sh
+++ b/debug/xtrace.sh
@@ -1,5 +1,5 @@
#! @BASH@
-# Copyright (C) 1999, 2001-2006, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2001-2008, 2009 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# Contributed by Ulrich Drepper <drepper@gnu.org>, 1999.
@@ -54,8 +54,10 @@ do_help() {
Mandatory arguments to long options are also mandatory for any corresponding
short options.
-For bug reporting instructions, please see:
-<http://www.gnu.org/software/libc/bugs.html>.\n"
+"
+ echo $"For bug reporting instructions, please see:
+<http://www.gnu.org/software/libc/bugs.html>.
+"
exit 0
}
@@ -64,7 +66,7 @@ do_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.
-" "2008"
+" "2009"
printf $"Written by %s.
" "Ulrich Drepper"
exit 0
diff --git a/dirent/.cvsignore b/dirent/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/dirent/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/dirent/alphasort.c b/dirent/alphasort.c
index b378626f6c..360b17c5a0 100644
--- a/dirent/alphasort.c
+++ b/dirent/alphasort.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1997, 1998, 2009 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
@@ -20,8 +20,7 @@
#include <string.h>
int
-alphasort (const void *a, const void *b)
+alphasort (const struct dirent **a, const struct dirent **b)
{
- return strcoll ((*(const struct dirent **) a)->d_name,
- (*(const struct dirent **) b)->d_name);
+ return strcoll ((*a)->d_name, (*b)->d_name);
}
diff --git a/dirent/alphasort64.c b/dirent/alphasort64.c
index fe84aec2f1..f91cba5088 100644
--- a/dirent/alphasort64.c
+++ b/dirent/alphasort64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1997, 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1997, 1998, 2000, 2009 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
@@ -20,8 +20,7 @@
#include <string.h>
int
-alphasort64 (const void *a, const void *b)
+alphasort64 (const struct dirent64 **a, const struct dirent64 **b)
{
- return strcoll ((*(const struct dirent64 **) a)->d_name,
- (*(const struct dirent64 **) b)->d_name);
+ return strcoll ((*a)->d_name, (*b)->d_name);
}
diff --git a/dirent/dirent.h b/dirent/dirent.h
index ed4147dbca..bb4ede1580 100644
--- a/dirent/dirent.h
+++ b/dirent/dirent.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2000,2003-2005,2009,2010 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
@@ -134,7 +134,7 @@ typedef struct __dirstream DIR;
marked with __THROW. */
extern DIR *opendir (__const char *__name) __nonnull ((1));
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* Same as opendir, but open the stream on the file descriptor FD.
This function is a possible cancellation point and therefore not
@@ -218,7 +218,7 @@ extern void seekdir (DIR *__dirp, long int __pos) __THROW __nonnull ((1));
extern long int telldir (DIR *__dirp) __THROW __nonnull ((1));
#endif
-#if defined __USE_BSD || defined __USE_MISC
+#if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN2K8
/* Return the file descriptor used by DIRP. */
extern int dirfd (DIR *__dirp) __THROW __nonnull ((1));
@@ -227,15 +227,17 @@ extern int dirfd (DIR *__dirp) __THROW __nonnull ((1));
# define dirfd(dirp) _DIR_dirfd (dirp)
# endif
-# ifndef MAXNAMLEN
+# if defined __USE_BSD || defined __USE_MISC
+# ifndef MAXNAMLEN
/* Get the definitions of the POSIX.1 limits. */
# include <bits/posix1_lim.h>
/* `MAXNAMLEN' is the BSD name for what POSIX calls `NAME_MAX'. */
-# ifdef NAME_MAX
-# define MAXNAMLEN NAME_MAX
-# else
-# define MAXNAMLEN 255
+# ifdef NAME_MAX
+# define MAXNAMLEN NAME_MAX
+# else
+# define MAXNAMLEN 255
+# endif
# endif
# endif
@@ -250,7 +252,8 @@ extern int dirfd (DIR *__dirp) __THROW __nonnull ((1));
extern int scandir (__const char *__restrict __dir,
struct dirent ***__restrict __namelist,
int (*__selector) (__const struct dirent *),
- int (*__cmp) (__const void *, __const void *))
+ int (*__cmp) (__const struct dirent **,
+ __const struct dirent **))
__nonnull ((1, 2));
# else
# ifdef __REDIRECT
@@ -258,7 +261,8 @@ extern int __REDIRECT (scandir,
(__const char *__restrict __dir,
struct dirent ***__restrict __namelist,
int (*__selector) (__const struct dirent *),
- int (*__cmp) (__const void *, __const void *)),
+ int (*__cmp) (__const struct dirent **,
+ __const struct dirent **)),
scandir64) __nonnull ((1, 2));
# else
# define scandir scandir64
@@ -271,18 +275,21 @@ extern int __REDIRECT (scandir,
extern int scandir64 (__const char *__restrict __dir,
struct dirent64 ***__restrict __namelist,
int (*__selector) (__const struct dirent64 *),
- int (*__cmp) (__const void *, __const void *))
+ int (*__cmp) (__const struct dirent64 **,
+ __const struct dirent64 **))
__nonnull ((1, 2));
# endif
/* Function to compare two `struct dirent's alphabetically. */
# ifndef __USE_FILE_OFFSET64
-extern int alphasort (__const void *__e1, __const void *__e2)
+extern int alphasort (__const struct dirent **__e1,
+ __const struct dirent **__e2)
__THROW __attribute_pure__ __nonnull ((1, 2));
# else
# ifdef __REDIRECT
extern int __REDIRECT_NTH (alphasort,
- (__const void *__e1, __const void *__e2),
+ (__const struct dirent **__e1,
+ __const struct dirent **__e2),
alphasort64) __attribute_pure__ __nonnull ((1, 2));
# else
# define alphasort alphasort64
@@ -290,32 +297,14 @@ extern int __REDIRECT_NTH (alphasort,
# endif
# if defined __USE_GNU && defined __USE_LARGEFILE64
-extern int alphasort64 (__const void *__e1, __const void *__e2)
+extern int alphasort64 (__const struct dirent64 **__e1,
+ __const struct dirent64 **__e2)
__THROW __attribute_pure__ __nonnull ((1, 2));
# endif
+#endif /* Use BSD or misc or XPG7. */
-# ifdef __USE_GNU
-/* Function to compare two `struct dirent's by name & version. */
-# ifndef __USE_FILE_OFFSET64
-extern int versionsort (__const void *__e1, __const void *__e2)
- __THROW __attribute_pure__ __nonnull ((1, 2));
-# else
-# ifdef __REDIRECT
-extern int __REDIRECT_NTH (versionsort,
- (__const void *__e1, __const void *__e2),
- versionsort64)
- __attribute_pure__ __nonnull ((1, 2));
-# else
-# define versionsort versionsort64
-# endif
-# endif
-
-# ifdef __USE_LARGEFILE64
-extern int versionsort64 (__const void *__e1, __const void *__e2)
- __THROW __attribute_pure__ __nonnull ((1, 2));
-# endif
-# endif
+#if defined __USE_BSD || defined __USE_MISC
/* Read directory entries from FD into BUF, reading at most NBYTES.
Reading starts at offset *BASEP, and *BASEP is updated with the new
position after reading. Returns the number of bytes read; zero when at
@@ -343,9 +332,33 @@ extern __ssize_t getdirentries64 (int __fd, char *__restrict __buf,
__off64_t *__restrict __basep)
__THROW __nonnull ((2, 4));
# endif
-
#endif /* Use BSD or misc. */
+#ifdef __USE_GNU
+/* Function to compare two `struct dirent's by name & version. */
+# ifndef __USE_FILE_OFFSET64
+extern int versionsort (__const struct dirent **__e1,
+ __const struct dirent **__e2)
+ __THROW __attribute_pure__ __nonnull ((1, 2));
+# else
+# ifdef __REDIRECT
+extern int __REDIRECT_NTH (versionsort,
+ (__const struct dirent **__e1,
+ __const struct dirent **__e2),
+ versionsort64)
+ __attribute_pure__ __nonnull ((1, 2));
+# else
+# define versionsort versionsort64
+# endif
+# endif
+
+# ifdef __USE_LARGEFILE64
+extern int versionsort64 (__const struct dirent64 **__e1,
+ __const struct dirent64 **__e2)
+ __THROW __attribute_pure__ __nonnull ((1, 2));
+# endif
+#endif /* Use GNU. */
+
__END_DECLS
#endif /* dirent.h */
diff --git a/dirent/scandir.c b/dirent/scandir.c
index 89bd9e94fe..2e03578a3c 100644
--- a/dirent/scandir.c
+++ b/dirent/scandir.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1992-1998,2000,2002,2003,2009 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
@@ -57,7 +57,7 @@ SCANDIR (dir, namelist, select, cmp)
const char *dir;
DIRENT_TYPE ***namelist;
int (*select) (const DIRENT_TYPE *);
- int (*cmp) (const void *, const void *);
+ int (*cmp) (const DIRENT_TYPE **, const DIRENT_TYPE **);
{
DIR *dp = __opendir (dir);
DIRENT_TYPE **v = NULL;
@@ -134,7 +134,8 @@ SCANDIR (dir, namelist, select, cmp)
{
/* Sort the list if we have a comparison function to sort with. */
if (cmp != NULL)
- qsort (v, c.cnt, sizeof (*v), cmp);
+ qsort (v, c.cnt, sizeof (*v),
+ (int (*) (const void *, const void *)) cmp);
*namelist = v;
}
diff --git a/dirent/scandir64.c b/dirent/scandir64.c
index 68608de9a0..b7bd654658 100644
--- a/dirent/scandir64.c
+++ b/dirent/scandir64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2009 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
@@ -25,6 +25,7 @@
int scandir64 (__const char *__restrict __dir,
struct dirent64 ***__restrict __namelist,
int (*__selector) (__const struct dirent64 *),
- int (*__cmp) (__const void *, __const void *));
+ int (*__cmp) (__const struct dirent64 **,
+ __const struct dirent64 **));
#include <dirent/scandir.c>
diff --git a/dirent/versionsort.c b/dirent/versionsort.c
index d986981bce..f7bd717848 100644
--- a/dirent/versionsort.c
+++ b/dirent/versionsort.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1997, 1998, 2009 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
@@ -20,8 +20,7 @@
#include <string.h>
int
-versionsort (const void *a, const void *b)
+versionsort (const struct dirent **a, const struct dirent **b)
{
- return __strverscmp ((*(const struct dirent **) a)->d_name,
- (*(const struct dirent **) b)->d_name);
+ return __strverscmp ((*a)->d_name, (*b)->d_name);
}
diff --git a/dirent/versionsort64.c b/dirent/versionsort64.c
index e471827023..5b2833111b 100644
--- a/dirent/versionsort64.c
+++ b/dirent/versionsort64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1997, 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1997, 1998, 2000, 2009 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
@@ -20,8 +20,7 @@
#include <string.h>
int
-versionsort64 (const void *a, const void *b)
+versionsort64 (const struct dirent64 **a, const struct dirent64 **b)
{
- return __strverscmp ((*(const struct dirent64 **) a)->d_name,
- (*(const struct dirent64 **) b)->d_name);
+ return __strverscmp ((*a)->d_name, (*b)->d_name);
}
diff --git a/dlfcn/dlfcn.h b/dlfcn/dlfcn.h
index 7e373eddf9..3e461dfec0 100644
--- a/dlfcn/dlfcn.h
+++ b/dlfcn/dlfcn.h
@@ -1,6 +1,5 @@
/* User functions for run-time dynamic loading.
- Copyright (C) 1995-1999,2000,2001,2003,2004,2006
- Free Software Foundation, Inc.
+ Copyright (C) 1995-2001,2003,2004,2006,2009 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
@@ -164,7 +163,7 @@ enum
segment, or if the calling thread has not allocated a block for it. */
RTLD_DI_TLS_DATA = 10,
- RTLD_DI_MAX = 10,
+ RTLD_DI_MAX = 10
};
diff --git a/elf/.cvsignore b/elf/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/elf/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/elf/Makefile b/elf/Makefile
index 8079fe9f96..d57c7fe7ed 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1995-2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 1995-2007, 2008, 2009 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
@@ -29,7 +29,7 @@ routines = $(dl-routines) dl-support dl-iteratephdr \
# profiled libraries.
dl-routines = $(addprefix dl-,load cache lookup object reloc deps \
runtime error init fini debug misc \
- version profile conflict tls origin \
+ version profile conflict tls origin scope \
execstack caller open close trampoline)
all-dl-routines = $(dl-routines) $(sysdep-dl-routines)
# But they are absent from the shared libc, because that code is in ld.so.
@@ -47,7 +47,7 @@ distribute := rtld-Rules \
dl-cache.h dl-hash.h soinit.c sofini.c ldd.bash.in \
genrtldtbl.awk atomicity.h dl-procinfo.h ldsodefs.h \
dl-librecon.h interp.c sln.c dl-dst.h hp-timing.h \
- do-lookup.h dl-lookupcfg.h sprof.c gen-trusted-dirs.awk \
+ dl-lookupcfg.h sprof.c gen-trusted-dirs.awk \
testobj1.c testobj2.c testobj3.c testobj4.c testobj5.c \
testobj6.c testobj1_1.c failobj.c unloadmod.c \
ldconfig.h ldconfig.c cache.c readlib.c readelflib.c \
@@ -89,11 +89,36 @@ distribute := rtld-Rules \
unload4mod1.c unload4mod2.c unload4mod3.c unload4mod4.c \
unload6mod1.c unload6mod2.c unload6mod3.c \
unload7mod1.c unload7mod2.c \
- tst-auditmod1.c tst-audit.sh \
+ tst-audit1.c tst-audit2.c tst-audit3.c tst-audit4.c \
+ tst-auditmod1.c tst-auditmod3a.c tst-auditmod3b.c \
+ tst-auditmod4a.c tst-auditmod4b.c \
+ tst-audit5.c tst-auditmod5a.c tst-auditmod5b.c \
+ tst-audit6.c tst-auditmod6a.c tst-auditmod6b.c \
+ tst-auditmod6c.c \
+ tst-audit7.c tst-auditmod7a.c tst-auditmod7b.c \
order2mod1.c order2mod2.c order2mod3.c order2mod4.c \
tst-stackguard1.c tst-stackguard1-static.c \
tst-array5.c tst-array5-static.c tst-array5dep.c \
- tst-array5.exp tst-leaks1.c
+ tst-array5.exp tst-leaks1.c check-execstack.c \
+ ifuncmain1.c ifuncmain1pic.c ifuncmain1vis.c \
+ ifuncmain1vispic.c ifuncmain1static.c \
+ ifuncmain1staticpic.c ifuncmain1picstatic.c \
+ ifuncdep1.c ifuncdep1pic.c ifuncmod1.c \
+ ifuncmain1pie.c ifuncmain1vispie.c \
+ ifuncmain1staticpie.c \
+ ifuncmain2.c ifuncmain2static.c ifuncdep2.c \
+ ifuncmain2pic.c ifuncmain2picstatic.c ifuncdep2pic.c \
+ ifuncmain3.c ifuncmod3.c \
+ ifuncmain4.c ifuncmain4static.c ifuncmain4picstatic.c \
+ ifuncmain5.c ifuncmain5pic.c ifuncmain5picstatic.c \
+ ifuncmain5pie.c ifuncmain5static.c \
+ ifuncmain5staticpic.c \
+ ifuncdep5.c ifuncdep5pic.c ifuncmod5.c \
+ ifuncmain6pie.c ifuncmod6.c \
+ ifuncmain7.c ifuncmain7pic.c ifuncmain7picstatic.c \
+ ifuncmain7pie.c ifuncmain7static.c \
+ tst-unique1.c tst-unique1mod1.c tst-unique1mod2.c \
+ tst-unique2.c tst-unique2mod1.c tst-unique2mod2.c
CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables
CFLAGS-dl-lookup.c = -fexceptions -fasynchronous-unwind-tables
@@ -172,10 +197,14 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \
tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \
unload3 unload4 unload5 unload6 unload7 tst-global1 order2 \
tst-audit1 tst-audit2 \
- tst-stackguard1 tst-addr1 tst-thrlock
+ tst-stackguard1 tst-addr1 tst-thrlock \
+ tst-unique1 tst-unique2
# reldep9
test-srcs = tst-pathopt
tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog
+ifeq (x86_64,$(config-machine))
+tests += tst-audit3 tst-audit4 tst-audit5 tst-audit6 tst-audit7
+endif
endif
ifeq (yesyes,$(have-fpie)$(build-shared))
tests: $(objpfx)tst-pie1.out
@@ -217,13 +246,22 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
unload4mod1 unload4mod2 unload4mod3 unload4mod4 \
unload6mod1 unload6mod2 unload6mod3 \
unload7mod1 unload7mod2 \
- order2mod1 order2mod2 order2mod3 order2mod4
+ order2mod1 order2mod2 order2mod3 order2mod4 \
+ tst-unique1mod1 tst-unique1mod2 \
+ tst-unique2mod1 tst-unique2mod2
ifeq (yes,$(have-initfini-array))
modules-names += tst-array2dep tst-array5dep
endif
ifeq (yesyes,$(have-fpie)$(build-shared))
modules-names += tst-piemod1
endif
+ifeq (x86_64,$(config-machine))
+modules-names += tst-auditmod3a tst-auditmod3b \
+ tst-auditmod4a tst-auditmod4b \
+ tst-auditmod5a tst-auditmod5b \
+ tst-auditmod6a tst-auditmod6b tst-auditmod6c \
+ tst-auditmod7a tst-auditmod7b
+endif
modules-execstack-yes = tst-execstack-mod
extra-test-objs += $(addsuffix .os,$(strip $(modules-names)))
# We need this variable to be sure the test modules get the right CPPFLAGS.
@@ -232,6 +270,28 @@ test-extras += $(modules-names)
# filtmod1.so has a special rule
modules-names-nobuild := filtmod1
+ifeq (yes,$(multi-arch))
+tests-static += ifuncmain1static ifuncmain1picstatic \
+ ifuncmain2static ifuncmain2picstatic \
+ ifuncmain4static ifuncmain4picstatic \
+ ifuncmain5static ifuncmain5picstatic \
+ ifuncmain7static ifuncmain7picstatic
+
+ifeq (yes,$(build-shared))
+tests += ifuncmain1 ifuncmain1pic ifuncmain1vis ifuncmain1vispic \
+ ifuncmain1staticpic \
+ ifuncmain2 ifuncmain2pic ifuncmain3 ifuncmain4 \
+ ifuncmain5 ifuncmain5pic ifuncmain5staticpic \
+ ifuncmain7 ifuncmain7pic
+ifeq (yes,$(have-fpie))
+tests: $(objpfx)ifuncmain1pie.out $(objpfx)ifuncmain1vispie.out \
+ $(objpfx)ifuncmain1staticpie.out $(objpfx)ifuncmain5pie.out \
+ $(objpfx)ifuncmain6pie.out $(objpfx)ifuncmain7pie.out
+endif
+modules-names += ifuncmod1 ifuncmod3 ifuncmod5 ifuncmod6
+endif
+endif
+
include ../Rules
@@ -304,7 +364,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld-map)
$(LDFLAGS-rtld) -Wl,-z,defs -Wl,--verbose 2>&1 | \
LC_ALL=C \
sed -e '/^=========/,/^=========/!d;/^=========/d' \
- -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \
+ -e 's/\. = .* + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \
> $@.lds
$(LINK.o) -nostdlib -nostartfiles -shared -o $@ \
$(LDFLAGS-rtld) -Wl,-z,defs $(z-now-$(bind-now)) \
@@ -504,6 +564,9 @@ reldep8mod2.so-no-z-defs = yes
reldep9mod1.so-no-z-defs = yes
unload3mod4.so-no-z-defs = yes
unload4mod1.so-no-z-defs = yes
+ifuncmod1.so-no-z-defs = yes
+ifuncmod5.so-no-z-defs = yes
+ifuncmod6.so-no-z-defs = yes
ifeq ($(build-shared),yes)
# Build all the modules even when not actually running test programs.
@@ -826,14 +889,7 @@ $(objpfx)tst-pie1.out: $(objpfx)tst-pie1
$< > $@
$(objpfx)tst-pie1: $(objpfx)tst-pie1.o $(objpfx)tst-piemod1.so
- $(LINK.o) -pie -Wl,-O1 \
- $(sysdep-LDFLAGS) $(config-LDFLAGS) \
- $(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \
- $(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \
- $(LDFLAGS) $(LDFLAGS-$(@F)) \
- -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \
- -o $@ $(objpfx)tst-pie1.o $(objpfx)tst-piemod1.so \
- $(common-objpfx)libc_nonshared.a
+ $(+link-pie)
generated += tst-pie1 tst-pie1.out tst-pie1.o
endif
@@ -842,12 +898,16 @@ check-textrel-CFLAGS = -O -Wall -D_XOPEN_SOURCE=600 -D_BSD_SOURCE
$(objpfx)check-textrel: check-textrel.c
$(native-compile)
+check-execstack-CFLAGS = -O -Wall -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -std=gnu99
+$(objpfx)check-execstack: check-execstack.c
+ $(native-compile)
+
check-localplt-CFLAGS = -O -Wall -D_GNU_SOURCE -std=gnu99
$(objpfx)check-localplt: check-localplt.c
$(native-compile)
ifeq (yes,$(build-shared))
-tests: $(objpfx)check-textrel.out
+tests: $(objpfx)check-textrel.out $(objpfx)check-execstack.out
$(objpfx)check-textrel.out: $(objpfx)check-textrel
$(dir $<)$(notdir $<) $(common-objpfx)libc.so \
@@ -855,6 +915,12 @@ $(objpfx)check-textrel.out: $(objpfx)check-textrel
$(common-objpfx)iconvdata/*.so)) > $@
generated += check-textrel check-textrel.out
+$(objpfx)check-execstack.out: $(objpfx)check-execstack
+ $(dir $<)$(notdir $<) $(common-objpfx)libc.so \
+ $(sort $(wildcard $(common-objpfx)*/lib*.so \
+ $(common-objpfx)iconvdata/*.so)) > $@
+generated += check-execstack check-execstack.out
+
$(objpfx)tst-dlmodcount: $(libdl)
$(objpfx)tst-dlmodcount.out: $(test-modules)
@@ -914,6 +980,27 @@ tst-audit1-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
$(objpfx)tst-audit2.out: $(objpfx)tst-auditmod1.so
tst-audit2-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
+$(objpfx)tst-audit3: $(objpfx)tst-auditmod3a.so
+$(objpfx)tst-audit3.out: $(objpfx)tst-auditmod3b.so
+tst-audit3-ENV = LD_AUDIT=$(objpfx)tst-auditmod3b.so
+
+$(objpfx)tst-audit4: $(objpfx)tst-auditmod4a.so
+$(objpfx)tst-audit4.out: $(objpfx)tst-auditmod4b.so
+tst-audit4-ENV = LD_AUDIT=$(objpfx)tst-auditmod4b.so
+
+$(objpfx)tst-audit5: $(objpfx)tst-auditmod5a.so
+$(objpfx)tst-audit5.out: $(objpfx)tst-auditmod5b.so
+tst-audit5-ENV = LD_AUDIT=$(objpfx)tst-auditmod5b.so
+
+$(objpfx)tst-audit6: $(objpfx)tst-auditmod6a.so
+$(objpfx)tst-audit6.out: $(objpfx)tst-auditmod6b.so \
+ $(objpfx)tst-auditmod6c.so
+tst-audit6-ENV = LD_AUDIT=$(objpfx)tst-auditmod6b.so:$(objpfx)tst-auditmod6c.so
+
+$(objpfx)tst-audit7: $(objpfx)tst-auditmod7a.so
+$(objpfx)tst-audit7.out: $(objpfx)tst-auditmod7b.so
+tst-audit7-ENV = LD_AUDIT=$(objpfx)tst-auditmod7b.so
+
$(objpfx)tst-global1: $(libdl)
$(objpfx)tst-global1.out: $(objpfx)testobj6.so $(objpfx)testobj2.so
@@ -941,3 +1028,127 @@ tst-leaks1-ENV = MALLOC_TRACE=$(objpfx)tst-leaks1.mtrace
$(objpfx)tst-addr1: $(libdl)
$(objpfx)tst-thrlock: $(libdl) $(shared-thread-library)
+
+CFLAGS-ifuncmain1pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain1picstatic.c += $(pic-ccflag)
+CFLAGS-ifuncmain1staticpic.c += $(pic-ccflag)
+CFLAGS-ifuncdep1pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain1vispic.c += $(pic-ccflag)
+CFLAGS-ifuncmain2pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain2picstatic.c += $(pic-ccflag)
+CFLAGS-ifuncdep2pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain4picstatic.c += $(pic-ccflag)
+CFLAGS-ifuncmain5pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain5picstatic.c += $(pic-ccflag)
+CFLAGS-ifuncmain5staticpic.c += $(pic-ccflag)
+CFLAGS-ifuncdep5pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain7pic.c += $(pic-ccflag)
+CFLAGS-ifuncmain7picstatic.c += $(pic-ccflag)
+
+LDFLAGS-ifuncmain3 = -Wl,-export-dynamic
+
+ifeq (yesyes,$(have-fpie)$(build-shared))
+CFLAGS-ifuncmain1pie.c += $(pie-ccflag)
+CFLAGS-ifuncmain1vispie.c += $(pie-ccflag)
+CFLAGS-ifuncmain1staticpie.c += $(pie-ccflag)
+CFLAGS-ifuncmain5pie.c += $(pie-ccflag)
+CFLAGS-ifuncmain6pie.c += $(pie-ccflag)
+CFLAGS-ifuncmain7pie.c += $(pie-ccflag)
+
+$(objpfx)ifuncmain1pie.out: $(objpfx)ifuncmain1pie
+ $(elf-objpfx)$(rtld-installed-name) \
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ $< > $@
+
+$(objpfx)ifuncmain1pie: $(objpfx)ifuncmain1pie.o $(objpfx)ifuncmod1.so
+ $(+link-pie)
+
+generated += ifuncmain1pie ifuncmain1pie.out
+
+$(objpfx)ifuncmain1staticpie.out: $(objpfx)ifuncmain1staticpie
+ $(elf-objpfx)$(rtld-installed-name) \
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ $< > $@
+
+$(objpfx)ifuncmain1staticpie: $(objpfx)ifuncmain1staticpie.o $(objpfx)ifuncdep1pic.o
+ $(+link-pie)
+
+generated += ifuncmain1staticpie ifuncmain1staticpie.out
+
+$(objpfx)ifuncmain1vispie.out: $(objpfx)ifuncmain1vispie
+ $(elf-objpfx)$(rtld-installed-name) \
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ $< > $@
+
+$(objpfx)ifuncmain1vispie: $(objpfx)ifuncmain1vispie.o $(objpfx)ifuncmod1.so
+ $(+link-pie)
+
+generated += ifuncmain1vispie ifuncmain1vispie.out
+
+$(objpfx)ifuncmain5pie.out: $(objpfx)ifuncmain5pie
+ $(elf-objpfx)$(rtld-installed-name) \
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ $< > $@
+
+$(objpfx)ifuncmain5pie: $(objpfx)ifuncmain5pie.o $(objpfx)ifuncmod5.so
+ $(+link-pie)
+
+generated += ifuncmain5pie ifuncmain5pie.out
+
+$(objpfx)ifuncmain6pie.out: $(objpfx)ifuncmain6pie
+ $(elf-objpfx)$(rtld-installed-name) \
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ $< > $@
+
+$(objpfx)ifuncmain6pie: $(objpfx)ifuncmain6pie.o $(objpfx)ifuncmod6.so
+ $(+link-pie)
+
+generated += ifuncmain6pie ifuncmain6pie.out
+
+$(objpfx)ifuncmain7pie.out: $(objpfx)ifuncmain7pie
+ $(elf-objpfx)$(rtld-installed-name) \
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ $< > $@
+
+$(objpfx)ifuncmain7pie: $(objpfx)ifuncmain7pie.o
+ $(+link-pie)
+
+generated += ifuncmain7pie ifuncmain7pie.out
+endif
+
+$(objpfx)ifuncmain1: $(addprefix $(objpfx),ifuncmod1.so)
+$(objpfx)ifuncmain1pic: $(addprefix $(objpfx),ifuncmod1.so)
+$(objpfx)ifuncmain1staticpic: $(addprefix $(objpfx),ifuncdep1pic.o)
+$(objpfx)ifuncmain1static: $(addprefix $(objpfx),ifuncdep1.o)
+$(objpfx)ifuncmain1picstatic: $(addprefix $(objpfx),ifuncdep1pic.o)
+$(objpfx)ifuncmain1vis: $(addprefix $(objpfx),ifuncmod1.so)
+$(objpfx)ifuncmain1vispic: $(addprefix $(objpfx),ifuncmod1.so)
+$(objpfx)ifuncmain2: $(addprefix $(objpfx),ifuncdep2.o)
+$(objpfx)ifuncmain2pic: $(addprefix $(objpfx),ifuncdep2pic.o)
+$(objpfx)ifuncmain2static: $(addprefix $(objpfx),ifuncdep2.o)
+$(objpfx)ifuncmain2picstatic: $(addprefix $(objpfx),ifuncdep2pic.o)
+
+$(objpfx)ifuncmain3: $(libdl)
+$(objpfx)ifuncmain3.out: $(objpfx)ifuncmod3.so
+
+$(objpfx)ifuncmain5: $(addprefix $(objpfx),ifuncmod5.so)
+$(objpfx)ifuncmain5pic: $(addprefix $(objpfx),ifuncmod5.so)
+$(objpfx)ifuncmain5static: $(addprefix $(objpfx),ifuncdep5.o)
+$(objpfx)ifuncmain5staticpic: $(addprefix $(objpfx),ifuncdep5pic.o)
+$(objpfx)ifuncmain5picstatic: $(addprefix $(objpfx),ifuncdep5pic.o)
+
+$(objpfx)tst-unique1: $(libdl)
+$(objpfx)tst-unique1.out: $(objpfx)tst-unique1mod1.so \
+ $(objpfx)tst-unique1mod2.so
+
+$(objpfx)tst-unique2: $(libdl) $(objpfx)tst-unique2mod1.so
+$(objpfx)tst-unique2.out: $(objpfx)tst-unique2mod2.so
+
+ifeq (yes,$(config-cflags-avx))
+CFLAGS-tst-audit4.c += -mavx
+CFLAGS-tst-auditmod4a.c += -mavx
+CFLAGS-tst-auditmod4b.c += -mavx
+CFLAGS-tst-auditmod6b.c += -mavx
+CFLAGS-tst-auditmod6c.c += -mavx
+CFLAGS-tst-auditmod7b.c += -mavx
+endif
diff --git a/elf/check-execstack.c b/elf/check-execstack.c
new file mode 100644
index 0000000000..55cf48721a
--- /dev/null
+++ b/elf/check-execstack.c
@@ -0,0 +1,158 @@
+/* Check for executable stacks in DSOs.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contribute by Ulrich Drepper <drepper@redhat.com>. 2009.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <byteswap.h>
+#include <elf.h>
+#include <endian.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+
+#ifdef BITS
+
+# define AB(name) _AB (name, BITS)
+# define _AB(name, bits) __AB (name, bits)
+# define __AB(name, bits) name##bits
+# define E(name) _E (name, BITS)
+# define _E(name, bits) __E (name, bits)
+# define __E(name, bits) Elf##bits##_##name
+# define SWAP(val) \
+ ({ __typeof (val) __res; \
+ if (((ehdr.e_ident[EI_DATA] == ELFDATA2MSB \
+ && BYTE_ORDER == LITTLE_ENDIAN) \
+ || (ehdr.e_ident[EI_DATA] == ELFDATA2LSB \
+ && BYTE_ORDER == BIG_ENDIAN)) \
+ && sizeof (val) != 1) \
+ { \
+ if (sizeof (val) == 2) \
+ __res = bswap_16 (val); \
+ else if (sizeof (val) == 4) \
+ __res = bswap_32 (val); \
+ else \
+ __res = bswap_64 (val); \
+ } \
+ else \
+ __res = (val); \
+ __res; })
+
+
+static int
+AB(handle_file) (const char *fname, int fd)
+{
+ E(Ehdr) ehdr;
+
+ if (pread (fd, &ehdr, sizeof (ehdr), 0) != sizeof (ehdr))
+ {
+ read_error:
+ printf ("%s: read error: %m\n", fname);
+ return 1;
+ }
+
+ const size_t phnum = SWAP (ehdr.e_phnum);
+ const size_t phentsize = SWAP (ehdr.e_phentsize);
+
+ /* Read the program header. */
+ E(Phdr) *phdr = alloca (phentsize * phnum);
+ if (pread (fd, phdr, phentsize * phnum, SWAP (ehdr.e_phoff))
+ != phentsize * phnum)
+ goto read_error;
+
+ /* Search for the PT_GNU_STACK entry. */
+ for (size_t cnt = 0; cnt < phnum; ++cnt)
+ if (SWAP (phdr[cnt].p_type) == PT_GNU_STACK)
+ {
+ unsigned int flags = SWAP(phdr[cnt].p_flags);
+ if (flags & PF_X)
+ {
+ printf ("%s: executable stack signaled\n", fname);
+ return 1;
+ }
+
+ return 0;
+ }
+
+ printf ("%s: no PT_GNU_STACK entry\n", fname);
+ return 1;
+}
+
+# undef BITS
+#else
+
+# define BITS 32
+# include "check-execstack.c"
+
+# define BITS 64
+# include "check-execstack.c"
+
+
+static int
+handle_file (const char *fname)
+{
+ int fd = open (fname, O_RDONLY);
+ if (fd == -1)
+ {
+ printf ("cannot open %s: %m\n", fname);
+ return 1;
+ }
+
+ /* Read was is supposed to be the ELF header. Read the initial
+ bytes to determine whether this is a 32 or 64 bit file. */
+ char ident[EI_NIDENT];
+ if (read (fd, ident, EI_NIDENT) != EI_NIDENT)
+ {
+ printf ("%s: read error: %m\n", fname);
+ close (fd);
+ return 1;
+ }
+
+ if (memcmp (&ident[EI_MAG0], ELFMAG, SELFMAG) != 0)
+ {
+ printf ("%s: not an ELF file\n", fname);
+ close (fd);
+ return 1;
+ }
+
+ int result;
+ if (ident[EI_CLASS] == ELFCLASS64)
+ result = handle_file64 (fname, fd);
+ else
+ result = handle_file32 (fname, fd);
+
+ close (fd);
+
+ return result;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+ int cnt;
+ int result = 0;
+
+ for (cnt = 1; cnt < argc; ++cnt)
+ result |= handle_file (argv[cnt]);
+
+ return result;
+}
+#endif
diff --git a/elf/dl-addr.c b/elf/dl-addr.c
index 17745b55b0..2b53a5ed09 100644
--- a/elf/dl-addr.c
+++ b/elf/dl-addr.c
@@ -1,5 +1,5 @@
/* Locate the shared object symbol nearest a given address.
- Copyright (C) 1996-2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1996-2007, 2009 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
@@ -132,7 +132,7 @@ _dl_addr (const void *address, Dl_info *info,
__rtld_lock_lock_recursive (GL(dl_load_lock));
/* Find the highest-addressed object that ADDRESS is not below. */
- for (Lmid_t ns = 0; ns < DL_NNS; ++ns)
+ for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns)
for (struct link_map *l = GL(dl_ns)[ns]._ns_loaded; l; l = l->l_next)
if (addr >= l->l_map_start && addr < l->l_map_end
&& (l->l_contiguous || _dl_addr_inside_object (l, addr)))
diff --git a/elf/dl-caller.c b/elf/dl-caller.c
index b0c1264d07..416d4127d2 100644
--- a/elf/dl-caller.c
+++ b/elf/dl-caller.c
@@ -1,5 +1,5 @@
/* Check whether caller comes from the right place.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2009 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
@@ -35,7 +35,7 @@ _dl_check_caller (const void *caller, enum allowmask mask)
#endif
static const char expected4[] = LD_SO;
- for (Lmid_t ns = 0; ns < DL_NNS; ++ns)
+ for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns)
for (struct link_map *l = GL(dl_ns)[ns]._ns_loaded; l != NULL;
l = l->l_next)
if (caller >= (const void *) l->l_map_start
diff --git a/elf/dl-close.c b/elf/dl-close.c
index 46f1a40adc..b73a7adb1a 100644
--- a/elf/dl-close.c
+++ b/elf/dl-close.c
@@ -1,5 +1,5 @@
/* Close a shared object opened by `_dl_open'.
- Copyright (C) 1996-2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1996-2007, 2009 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
@@ -695,6 +695,18 @@ _dl_close_worker (struct link_map *map)
}
#endif
+ if (__builtin_expect (ns->_ns_loaded == NULL, 0)
+ && nsid == GL(dl_nns) - 1)
+ do
+ {
+ --GL(dl_nns);
+#ifndef SHARED
+ if (GL(dl_nns) == 0)
+ break;
+#endif
+ }
+ while (GL(dl_ns)[GL(dl_nns) - 1]._ns_loaded == NULL);
+
/* Notify the debugger those objects are finalized and gone. */
r->r_state = RT_CONSISTENT;
_dl_debug_state ();
@@ -763,7 +775,7 @@ free_slotinfo (struct dtv_slotinfo_list **elemp)
libc_freeres_fn (free_mem)
{
- for (Lmid_t nsid = 0; nsid < DL_NNS; ++nsid)
+ for (Lmid_t nsid = 0; nsid < GL(dl_nns); ++nsid)
if (__builtin_expect (GL(dl_ns)[nsid]._ns_global_scope_alloc, 0) != 0
&& (GL(dl_ns)[nsid]._ns_main_searchlist->r_nlist
// XXX Check whether we need NS-specific initial_searchlist
diff --git a/elf/dl-fini.c b/elf/dl-fini.c
index 273bc3a99d..ff4c33e808 100644
--- a/elf/dl-fini.c
+++ b/elf/dl-fini.c
@@ -1,5 +1,5 @@
/* Call the termination functions of loaded shared objects.
- Copyright (C) 1995,96,1998-2002,2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1995,96,1998-2002,2004-2005,2009 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
@@ -140,7 +140,7 @@ _dl_fini (void)
int do_audit = 0;
again:
#endif
- for (Lmid_t ns = DL_NNS - 1; ns >= 0; --ns)
+ for (Lmid_t ns = GL(dl_nns) - 1; ns >= 0; --ns)
{
/* Protect against concurrent loads and unloads. */
__rtld_lock_lock_recursive (GL(dl_load_lock));
diff --git a/elf/dl-iteratephdr.c b/elf/dl-iteratephdr.c
index c49671583b..fee19f3f04 100644
--- a/elf/dl-iteratephdr.c
+++ b/elf/dl-iteratephdr.c
@@ -1,5 +1,5 @@
/* Get loaded objects program headers.
- Copyright (C) 2001-2004,2006,2007,2008 Free Software Foundation, Inc.
+ Copyright (C) 2001-2004, 2006-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2001.
@@ -47,7 +47,7 @@ __dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info,
const void *caller = RETURN_ADDRESS (0);
size_t nloaded = GL(dl_ns)[0]._ns_nloaded;
Lmid_t ns = 0;
- for (Lmid_t cnt = DL_NNS - 1; cnt > 0; --cnt)
+ for (Lmid_t cnt = GL(dl_nns) - 1; cnt > 0; --cnt)
for (struct link_map *l = GL(dl_ns)[cnt]._ns_loaded; l; l = l->l_next)
{
/* We have to count the total number of loaded objects. */
diff --git a/elf/dl-libc.c b/elf/dl-libc.c
index a6d0d1fcef..5e303f29cb 100644
--- a/elf/dl-libc.c
+++ b/elf/dl-libc.c
@@ -1,5 +1,5 @@
/* Handle loading and unloading shared objects for internal libc purposes.
- Copyright (C) 1999-2002,2004,2005,2006 Free Software Foundation, Inc.
+ Copyright (C) 1999-2002,2004,2005,2006,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Zack Weinberg <zack@rabi.columbia.edu>, 1999.
@@ -236,7 +236,7 @@ libc_freeres_fn (free_mem)
}
/* Remove all additional names added to the objects. */
- for (Lmid_t ns = 0; ns < DL_NNS; ++ns)
+ for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns)
for (l = GL(dl_ns)[ns]._ns_loaded; l != NULL; l = l->l_next)
{
struct libname_list *lnp = l->l_libname->next;
diff --git a/elf/dl-load.c b/elf/dl-load.c
index 8a8936f7bd..597193c043 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -1,5 +1,5 @@
/* Map in a shared object's segments from the file.
- Copyright (C) 1995-2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1995-2005, 2006, 2007, 2009 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
@@ -85,14 +85,6 @@
#define STRING(x) __STRING (x)
-#ifdef MAP_ANON
-/* The fd is not examined when using MAP_ANON. */
-# define ANONFD -1
-#else
-int _dl_zerofd = -1;
-# define ANONFD _dl_zerofd
-#endif
-
/* Handle situations where we have a preferred location in memory for
the shared objects. */
#ifdef ELF_PREFERRED_ADDRESS_DATA
@@ -911,9 +903,12 @@ _dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp,
#endif
if (mode & RTLD_NOLOAD)
- /* We are not supposed to load the object unless it is already
- loaded. So return now. */
- return NULL;
+ {
+ /* We are not supposed to load the object unless it is already
+ loaded. So return now. */
+ __close (fd);
+ return NULL;
+ }
/* Print debugging message. */
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0))
@@ -941,7 +936,8 @@ _dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp,
{
#ifdef SHARED
/* Auditing checkpoint: we are going to add new objects. */
- if (__builtin_expect (GLRO(dl_naudit) > 0, 0))
+ if ((mode & __RTLD_AUDIT) == 0
+ && __builtin_expect (GLRO(dl_naudit) > 0, 0))
{
struct link_map *head = GL(dl_ns)[nsid]._ns_loaded;
/* Do not call the functions for any auditing object. */
@@ -1311,7 +1307,7 @@ cannot allocate TLS data structures for initial thread");
caddr_t mapat;
mapat = __mmap ((caddr_t) zeropage, zeroend - zeropage,
c->prot, MAP_ANON|MAP_PRIVATE|MAP_FIXED,
- ANONFD, 0);
+ -1, 0);
if (__builtin_expect (mapat == MAP_FAILED, 0))
{
errstring = N_("cannot map zero-fill pages");
@@ -1574,6 +1570,8 @@ open_verify (const char *name, struct filebuf *fbp, struct link_map *loader,
# define VALID_ELF_HEADER(hdr,exp,size) (memcmp (hdr, exp, size) == 0)
# define VALID_ELF_OSABI(osabi) (osabi == ELFOSABI_SYSV)
# define VALID_ELF_ABIVERSION(ver) (ver == 0)
+#elif defined MORE_ELF_HEADER_DATA
+ MORE_ELF_HEADER_DATA;
#endif
static const unsigned char expected[EI_PAD] =
{
@@ -1660,7 +1658,8 @@ open_verify (const char *name, struct filebuf *fbp, struct link_map *loader,
EI_PAD), 0))
{
/* Something is wrong. */
- if (*(Elf32_Word *) &ehdr->e_ident !=
+ const Elf32_Word *magp = (const void *) ehdr->e_ident;
+ if (*magp !=
#if BYTE_ORDER == LITTLE_ENDIAN
((ELFMAG0 << (EI_MAG0 * 8)) |
(ELFMAG1 << (EI_MAG1 * 8)) |
@@ -1964,7 +1963,7 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
struct filebuf fb;
assert (nsid >= 0);
- assert (nsid < DL_NNS);
+ assert (nsid < GL(dl_nns));
/* Look for this name among those already loaded. */
for (l = GL(dl_ns)[nsid]._ns_loaded; l; l = l->l_next)
diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c
index 92dc7b226a..763ec16fa4 100644
--- a/elf/dl-lookup.c
+++ b/elf/dl-lookup.c
@@ -1,5 +1,5 @@
/* Look up a symbol in the loaded objects.
- Copyright (C) 1995-2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1995-2005, 2006, 2007, 2009 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
@@ -69,8 +69,387 @@ struct sym_val
#endif
-/* The actual lookup code. */
-#include "do-lookup.h"
+/* Inner part of the lookup functions. We return a value > 0 if we
+ found the symbol, the value 0 if nothing is found and < 0 if
+ something bad happened. */
+static int
+__attribute_noinline__
+do_lookup_x (const char *undef_name, uint_fast32_t new_hash,
+ unsigned long int *old_hash, const ElfW(Sym) *ref,
+ struct sym_val *result, struct r_scope_elem *scope, size_t i,
+ const struct r_found_version *const version, int flags,
+ struct link_map *skip, int type_class, struct link_map *undef_map)
+{
+ size_t n = scope->r_nlist;
+ /* Make sure we read the value before proceeding. Otherwise we
+ might use r_list pointing to the initial scope and r_nlist being
+ the value after a resize. That is the only path in dl-open.c not
+ protected by GSCOPE. A read barrier here might be to expensive. */
+ __asm volatile ("" : "+r" (n), "+m" (scope->r_list));
+ struct link_map **list = scope->r_list;
+
+ do
+ {
+ /* These variables are used in the nested function. */
+ Elf_Symndx symidx;
+ int num_versions = 0;
+ const ElfW(Sym) *versioned_sym = NULL;
+
+ const struct link_map *map = list[i]->l_real;
+
+ /* Here come the extra test needed for `_dl_lookup_symbol_skip'. */
+ if (map == skip)
+ continue;
+
+ /* Don't search the executable when resolving a copy reloc. */
+ if ((type_class & ELF_RTYPE_CLASS_COPY) && map->l_type == lt_executable)
+ continue;
+
+ /* Do not look into objects which are going to be removed. */
+ if (map->l_removed)
+ continue;
+
+ /* Print some debugging info if wanted. */
+ if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SYMBOLS, 0))
+ _dl_debug_printf ("symbol=%s; lookup in file=%s [%lu]\n",
+ undef_name,
+ map->l_name[0] ? map->l_name : rtld_progname,
+ map->l_ns);
+
+ /* If the hash table is empty there is nothing to do here. */
+ if (map->l_nbuckets == 0)
+ continue;
+
+ /* The tables for this map. */
+ const ElfW(Sym) *symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
+ const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
+
+
+ /* Nested routine to check whether the symbol matches. */
+ const ElfW(Sym) *
+ __attribute_noinline__
+ check_match (const ElfW(Sym) *sym)
+ {
+ unsigned int stt = ELFW(ST_TYPE) (sym->st_info);
+ assert (ELF_RTYPE_CLASS_PLT == 1);
+ if (__builtin_expect ((sym->st_value == 0 /* No value. */
+ && stt != STT_TLS)
+ || (type_class & (sym->st_shndx == SHN_UNDEF)),
+ 0))
+ return NULL;
+
+ /* Ignore all but STT_NOTYPE, STT_OBJECT, STT_FUNC,
+ STT_COMMON, STT_TLS, and STT_GNU_IFUNC since these are no
+ code/data definitions. */
+#define ALLOWED_STT \
+ ((1 << STT_NOTYPE) | (1 << STT_OBJECT) | (1 << STT_FUNC) \
+ | (1 << STT_COMMON) | (1 << STT_TLS) | (1 << STT_GNU_IFUNC))
+ if (__builtin_expect (((1 << stt) & ALLOWED_STT) == 0, 0))
+ return NULL;
+
+ if (sym != ref && strcmp (strtab + sym->st_name, undef_name))
+ /* Not the symbol we are looking for. */
+ return NULL;
+
+ const ElfW(Half) *verstab = map->l_versyms;
+ if (version != NULL)
+ {
+ if (__builtin_expect (verstab == NULL, 0))
+ {
+ /* We need a versioned symbol but haven't found any. If
+ this is the object which is referenced in the verneed
+ entry it is a bug in the library since a symbol must
+ not simply disappear.
+
+ It would also be a bug in the object since it means that
+ the list of required versions is incomplete and so the
+ tests in dl-version.c haven't found a problem.*/
+ assert (version->filename == NULL
+ || ! _dl_name_match_p (version->filename, map));
+
+ /* Otherwise we accept the symbol. */
+ }
+ else
+ {
+ /* We can match the version information or use the
+ default one if it is not hidden. */
+ ElfW(Half) ndx = verstab[symidx] & 0x7fff;
+ if ((map->l_versions[ndx].hash != version->hash
+ || strcmp (map->l_versions[ndx].name, version->name))
+ && (version->hidden || map->l_versions[ndx].hash
+ || (verstab[symidx] & 0x8000)))
+ /* It's not the version we want. */
+ return NULL;
+ }
+ }
+ else
+ {
+ /* No specific version is selected. There are two ways we
+ can got here:
+
+ - a binary which does not include versioning information
+ is loaded
+
+ - dlsym() instead of dlvsym() is used to get a symbol which
+ might exist in more than one form
+
+ If the library does not provide symbol version information
+ there is no problem at at: we simply use the symbol if it
+ is defined.
+
+ These two lookups need to be handled differently if the
+ library defines versions. In the case of the old
+ unversioned application the oldest (default) version
+ should be used. In case of a dlsym() call the latest and
+ public interface should be returned. */
+ if (verstab != NULL)
+ {
+ if ((verstab[symidx] & 0x7fff)
+ >= ((flags & DL_LOOKUP_RETURN_NEWEST) ? 2 : 3))
+ {
+ /* Don't accept hidden symbols. */
+ if ((verstab[symidx] & 0x8000) == 0
+ && num_versions++ == 0)
+ /* No version so far. */
+ versioned_sym = sym;
+
+ return NULL;
+ }
+ }
+ }
+
+ /* There cannot be another entry for this symbol so stop here. */
+ return sym;
+ }
+
+ const ElfW(Sym) *sym;
+ const ElfW(Addr) *bitmask = map->l_gnu_bitmask;
+ if (__builtin_expect (bitmask != NULL, 1))
+ {
+ ElfW(Addr) bitmask_word
+ = bitmask[(new_hash / __ELF_NATIVE_CLASS)
+ & map->l_gnu_bitmask_idxbits];
+
+ unsigned int hashbit1 = new_hash & (__ELF_NATIVE_CLASS - 1);
+ unsigned int hashbit2 = ((new_hash >> map->l_gnu_shift)
+ & (__ELF_NATIVE_CLASS - 1));
+
+ if (__builtin_expect ((bitmask_word >> hashbit1)
+ & (bitmask_word >> hashbit2) & 1, 0))
+ {
+ Elf32_Word bucket = map->l_gnu_buckets[new_hash
+ % map->l_nbuckets];
+ if (bucket != 0)
+ {
+ const Elf32_Word *hasharr = &map->l_gnu_chain_zero[bucket];
+
+ do
+ if (((*hasharr ^ new_hash) >> 1) == 0)
+ {
+ symidx = hasharr - map->l_gnu_chain_zero;
+ sym = check_match (&symtab[symidx]);
+ if (sym != NULL)
+ goto found_it;
+ }
+ while ((*hasharr++ & 1u) == 0);
+ }
+ }
+ /* No symbol found. */
+ symidx = SHN_UNDEF;
+ }
+ else
+ {
+ if (*old_hash == 0xffffffff)
+ *old_hash = _dl_elf_hash (undef_name);
+
+ /* Use the old SysV-style hash table. Search the appropriate
+ hash bucket in this object's symbol table for a definition
+ for the same symbol name. */
+ for (symidx = map->l_buckets[*old_hash % map->l_nbuckets];
+ symidx != STN_UNDEF;
+ symidx = map->l_chain[symidx])
+ {
+ sym = check_match (&symtab[symidx]);
+ if (sym != NULL)
+ goto found_it;
+ }
+ }
+
+ /* If we have seen exactly one versioned symbol while we are
+ looking for an unversioned symbol and the version is not the
+ default version we still accept this symbol since there are
+ no possible ambiguities. */
+ sym = num_versions == 1 ? versioned_sym : NULL;
+
+ if (sym != NULL)
+ {
+ found_it:
+ switch (__builtin_expect (ELFW(ST_BIND) (sym->st_info), STB_GLOBAL))
+ {
+ case STB_WEAK:
+ /* Weak definition. Use this value if we don't find another. */
+ if (__builtin_expect (GLRO(dl_dynamic_weak), 0))
+ {
+ if (! result->s)
+ {
+ result->s = sym;
+ result->m = (struct link_map *) map;
+ }
+ break;
+ }
+ /* FALLTHROUGH */
+ case STB_GLOBAL:
+ success:
+ /* Global definition. Just what we need. */
+ result->s = sym;
+ result->m = (struct link_map *) map;
+ return 1;
+
+ case STB_GNU_UNIQUE:;
+ /* We have to determine whether we already found a
+ symbol with this name before. If not then we have to
+ add it to the search table. If we already found a
+ definition we have to use it. */
+ void enter (struct unique_sym *table, size_t size,
+ unsigned int hash, const char *name,
+ const ElfW(Sym) *sym, struct link_map *map)
+ {
+ size_t idx = hash % size;
+ size_t hash2 = 1 + hash % (size - 2);
+ while (1)
+ {
+ if (table[idx].name == NULL)
+ {
+ table[idx].hashval = hash;
+ table[idx].name = name;
+ if ((type_class & ELF_RTYPE_CLASS_COPY) != 0)
+ {
+ table[idx].sym = ref;
+ table[idx].map = undef_map;
+ }
+ else
+ {
+ table[idx].sym = sym;
+ table[idx].map = map;
+
+ if (map->l_type == lt_loaded)
+ /* Make sure we don't unload this object by
+ setting the appropriate flag. */
+ map->l_flags_1 |= DF_1_NODELETE;
+ }
+
+ return;
+ }
+
+ idx += hash2;
+ if (idx >= size)
+ idx -= size;
+ }
+ }
+
+ struct unique_sym_table *tab
+ = &GL(dl_ns)[map->l_ns]._ns_unique_sym_table;
+
+ __rtld_lock_lock_recursive (tab->lock);
+
+ struct unique_sym *entries = tab->entries;
+ size_t size = tab->size;
+ if (entries != NULL)
+ {
+ size_t idx = new_hash % size;
+ size_t hash2 = 1 + new_hash % (size - 2);
+ while (1)
+ {
+ if (entries[idx].hashval == new_hash
+ && strcmp (entries[idx].name, undef_name) == 0)
+ {
+ result->s = entries[idx].sym;
+ result->m = (struct link_map *) entries[idx].map;
+ __rtld_lock_unlock_recursive (tab->lock);
+ return 1;
+ }
+
+ if (entries[idx].name == NULL)
+ break;
+
+ idx += hash2;
+ if (idx >= size)
+ idx -= size;
+ }
+
+ if (size * 3 <= tab->n_elements * 4)
+ {
+ /* Expand the table. */
+#ifdef RTLD_CHECK_FOREIGN_CALL
+ /* This must not happen during runtime relocations. */
+ assert (!RTLD_CHECK_FOREIGN_CALL);
+#endif
+ size_t newsize = _dl_higher_prime_number (size + 1);
+ struct unique_sym *newentries
+ = calloc (sizeof (struct unique_sym), newsize);
+ if (newentries == NULL)
+ {
+ nomem:
+ __rtld_lock_unlock_recursive (tab->lock);
+ _dl_fatal_printf ("out of memory\n");
+ }
+
+ for (idx = 0; idx < size; ++idx)
+ if (entries[idx].name != NULL)
+ enter (newentries, newsize, entries[idx].hashval,
+ entries[idx].name, entries[idx].sym,
+ entries[idx].map);
+
+ tab->free (entries);
+ tab->size = newsize;
+ size = newsize;
+ entries = tab->entries = newentries;
+ tab->free = free;
+ }
+ }
+ else
+ {
+#ifdef RTLD_CHECK_FOREIGN_CALL
+ /* This must not happen during runtime relocations. */
+ assert (!RTLD_CHECK_FOREIGN_CALL);
+#endif
+
+#define INITIAL_NUNIQUE_SYM_TABLE 31
+ size = INITIAL_NUNIQUE_SYM_TABLE;
+ entries = calloc (sizeof (struct unique_sym), size);
+ if (entries == NULL)
+ goto nomem;
+
+ tab->entries = entries;
+ tab->size = size;
+ tab->free = free;
+ }
+
+ enter (entries, size, new_hash, strtab + sym->st_name, sym,
+ (struct link_map *) map);
+ ++tab->n_elements;
+
+ __rtld_lock_unlock_recursive (tab->lock);
+
+ goto success;
+
+ default:
+ /* Local symbols are ignored. */
+ break;
+ }
+ }
+
+ /* If this current map is the one mentioned in the verneed entry
+ and we have not found a weak entry, it is a bug. */
+ if (symidx == STN_UNDEF && version != NULL && version->filename != NULL
+ && __builtin_expect (_dl_name_match_p (version->filename, map), 0))
+ return -1;
+ }
+ while (++i < n);
+
+ /* We have not found anything until now. */
+ return 0;
+}
static uint_fast32_t
@@ -230,6 +609,10 @@ add_dependency (struct link_map *undef_map, struct link_map *map, int flags)
unsigned int max
= undef_map->l_reldepsmax ? undef_map->l_reldepsmax * 2 : 10;
+#ifdef RTLD_PREPARE_FOREIGN_CALL
+ RTLD_PREPARE_FOREIGN_CALL;
+#endif
+
newp = malloc (sizeof (*newp) + max * sizeof (struct link_map *));
if (newp == NULL)
{
@@ -337,7 +720,7 @@ _dl_lookup_symbol_x (const char *undef_name, struct link_map *undef_map,
{
int res = do_lookup_x (undef_name, new_hash, &old_hash, *ref,
&current_value, *scope, start, version, flags,
- skip_map, type_class);
+ skip_map, type_class, undef_map);
if (res > 0)
break;
@@ -394,7 +777,7 @@ _dl_lookup_symbol_x (const char *undef_name, struct link_map *undef_map,
if (__builtin_expect (protected != 0, 0))
{
/* It is very tricky. We need to figure out what value to
- return for the protected symbol. */
+ return for the protected symbol. */
if (type_class == ELF_RTYPE_CLASS_PLT)
{
if (current_value.s != NULL && current_value.m != undef_map)
@@ -410,7 +793,7 @@ _dl_lookup_symbol_x (const char *undef_name, struct link_map *undef_map,
for (scope = symbol_scope; *scope != NULL; i = 0, ++scope)
if (do_lookup_x (undef_name, new_hash, &old_hash, *ref,
&protected_value, *scope, i, version, flags,
- skip_map, ELF_RTYPE_CLASS_PLT) != 0)
+ skip_map, ELF_RTYPE_CLASS_PLT, NULL) != 0)
break;
if (protected_value.s != NULL && protected_value.m != undef_map)
@@ -439,7 +822,8 @@ _dl_lookup_symbol_x (const char *undef_name, struct link_map *undef_map,
version, type_class, flags, skip_map);
/* The object is used. */
- current_value.m->l_used = 1;
+ if (__builtin_expect (current_value.m->l_used == 0, 0))
+ current_value.m->l_used = 1;
if (__builtin_expect (GLRO(dl_debug_mask)
& (DL_DEBUG_BINDINGS|DL_DEBUG_PRELINK), 0))
@@ -461,7 +845,7 @@ _dl_setup_hash (struct link_map *map)
Elf_Symndx nchain;
if (__builtin_expect (map->l_info[DT_ADDRTAGIDX (DT_GNU_HASH) + DT_NUM
- + DT_THISPROCNUM + DT_VERSIONTAGNUM
+ + DT_THISPROCNUM + DT_VERSIONTAGNUM
+ DT_EXTRANUM + DT_VALNUM] != NULL, 1))
{
Elf32_Word *hash32
@@ -536,21 +920,26 @@ _dl_debug_bindings (const char *undef_name, struct link_map *undef_map,
do_lookup_x (undef_name, new_hash, &old_hash, *ref, &val,
undef_map->l_local_scope[0], 0, version, 0, NULL,
- type_class);
+ type_class, undef_map);
if (val.s != value->s || val.m != value->m)
conflict = 1;
}
- if (value->s
- && (__builtin_expect (ELFW(ST_TYPE) (value->s->st_info)
- == STT_TLS, 0)))
- type_class = 4;
+ if (value->s)
+ {
+ if (__builtin_expect (ELFW(ST_TYPE) (value->s->st_info)
+ == STT_TLS, 0))
+ type_class = 4;
+ else if (__builtin_expect (ELFW(ST_TYPE) (value->s->st_info)
+ == STT_GNU_IFUNC, 0))
+ type_class |= 8;
+ }
if (conflict
|| GLRO(dl_trace_prelink_map) == undef_map
|| GLRO(dl_trace_prelink_map) == NULL
- || type_class == 4)
+ || type_class >= 4)
{
_dl_printf ("%s 0x%0*Zx 0x%0*Zx -> 0x%0*Zx 0x%0*Zx ",
conflict ? "conflict" : "lookup",
diff --git a/elf/dl-minimal.c b/elf/dl-minimal.c
index 5079c449f6..e07029326c 100644
--- a/elf/dl-minimal.c
+++ b/elf/dl-minimal.c
@@ -1,5 +1,5 @@
/* Minimal replacements for basic facilities used in the dynamic linker.
- Copyright (C) 1995-1998,2000-2002,2004-2006,2007
+ Copyright (C) 1995-1998,2000-2002,2004-2006,2007,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -51,16 +51,6 @@ extern unsigned long int weak_function strtoul (const char *nptr,
void * weak_function
__libc_memalign (size_t align, size_t n)
{
-#ifdef MAP_ANON
-#define _dl_zerofd (-1)
-#else
- extern int _dl_zerofd;
-
- if (_dl_zerofd == -1)
- _dl_zerofd = _dl_sysdep_open_zero_fill ();
-#define MAP_ANON 0
-#endif
-
if (alloc_end == 0)
{
/* Consume any unused space in the last page of our data segment. */
@@ -87,7 +77,7 @@ __libc_memalign (size_t align, size_t n)
nup = GLRO(dl_pagesize);
}
page = __mmap (0, nup, PROT_READ|PROT_WRITE,
- MAP_ANON|MAP_PRIVATE, _dl_zerofd, 0);
+ MAP_ANON|MAP_PRIVATE, -1, 0);
if (page == MAP_FAILED)
return NULL;
if (page != alloc_end)
diff --git a/elf/dl-misc.c b/elf/dl-misc.c
index 6da1e2e4aa..d50537ade7 100644
--- a/elf/dl-misc.c
+++ b/elf/dl-misc.c
@@ -1,5 +1,5 @@
/* Miscellaneous support functions for dynamic linker
- Copyright (C) 1997-2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997-2004, 2006, 2009 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
@@ -34,17 +34,6 @@
#include <stdio-common/_itoa.h>
#include <bits/libc-lock.h>
-#ifndef MAP_ANON
-/* This is the only dl-sysdep.c function that is actually needed at run-time
- by _dl_map_object. */
-
-int
-_dl_sysdep_open_zero_fill (void)
-{
- return __open ("/dev/zero", O_RDONLY);
-}
-#endif
-
/* Read the whole contents of FILE into new mmap'd space with given
protections. *SIZEP gets the size of the file. On error MAP_FAILED
is returned. */
@@ -323,3 +312,68 @@ _dl_name_match_p (const char *name, const struct link_map *map)
return 0;
}
+
+
+unsigned long int
+internal_function
+_dl_higher_prime_number (unsigned long int n)
+{
+ /* These are primes that are near, but slightly smaller than, a
+ power of two. */
+ static const uint32_t primes[] = {
+ UINT32_C (7),
+ UINT32_C (13),
+ UINT32_C (31),
+ UINT32_C (61),
+ UINT32_C (127),
+ UINT32_C (251),
+ UINT32_C (509),
+ UINT32_C (1021),
+ UINT32_C (2039),
+ UINT32_C (4093),
+ UINT32_C (8191),
+ UINT32_C (16381),
+ UINT32_C (32749),
+ UINT32_C (65521),
+ UINT32_C (131071),
+ UINT32_C (262139),
+ UINT32_C (524287),
+ UINT32_C (1048573),
+ UINT32_C (2097143),
+ UINT32_C (4194301),
+ UINT32_C (8388593),
+ UINT32_C (16777213),
+ UINT32_C (33554393),
+ UINT32_C (67108859),
+ UINT32_C (134217689),
+ UINT32_C (268435399),
+ UINT32_C (536870909),
+ UINT32_C (1073741789),
+ UINT32_C (2147483647),
+ /* 4294967291L */
+ UINT32_C (2147483647) + UINT32_C (2147483644)
+ };
+
+ const uint32_t *low = &primes[0];
+ const uint32_t *high = &primes[sizeof (primes) / sizeof (primes[0])];
+
+ while (low != high)
+ {
+ const uint32_t *mid = low + (high - low) / 2;
+ if (n > *mid)
+ low = mid + 1;
+ else
+ high = mid;
+ }
+
+#if 0
+ /* If we've run out of primes, abort. */
+ if (n > *low)
+ {
+ fprintf (stderr, "Cannot find prime bigger than %lu\n", n);
+ abort ();
+ }
+#endif
+
+ return *low;
+}
diff --git a/elf/dl-object.c b/elf/dl-object.c
index be4ea38f9f..788e2c07b9 100644
--- a/elf/dl-object.c
+++ b/elf/dl-object.c
@@ -1,5 +1,5 @@
/* Storage management for the chain of loaded shared objects.
- Copyright (C) 1995-2002,2004,2006,2007,2008 Free Software Foundation, Inc.
+ Copyright (C) 1995-2002,2004,2006-2008,2009 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
@@ -67,6 +67,10 @@ _dl_new_object (char *realname, const char *libname, int type,
new->l_name = realname;
new->l_type = type;
+ /* If we set the bit now since we know it is never used we avoid
+ dirtying the cache line later. */
+ if ((GLRO(dl_debug_mask) & DL_DEBUG_UNUSED) == 0)
+ new->l_used = 1;
new->l_loader = loader;
#if NO_TLS_OFFSET != 0
new->l_tls_offset = NO_TLS_OFFSET;
@@ -174,7 +178,7 @@ _dl_new_object (char *realname, const char *libname, int type,
if (result == NULL)
{
/* We were not able to determine the current directory.
- Note that free(origin) is OK if origin == NULL. */
+ Note that free(origin) is OK if origin == NULL. */
free (origin);
origin = (char *) -1;
goto out;
diff --git a/elf/dl-open.c b/elf/dl-open.c
index f825aa0437..754a263fa1 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -1,5 +1,5 @@
/* Load a shared object at runtime, relocate it, and run its initializer.
- Copyright (C) 1996-2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1996-2007, 2009, 2010 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
@@ -40,7 +40,8 @@
extern ElfW(Addr) _dl_sysdep_start (void **start_argptr,
void (*dl_main) (const ElfW(Phdr) *phdr,
ElfW(Word) phnum,
- ElfW(Addr) *user_entry));
+ ElfW(Addr) *user_entry,
+ ElfW(auxv_t) *auxv));
weak_extern (BP_SYM (_dl_sysdep_start))
extern int __libc_multiple_libcs; /* Defined in init-first.c. */
@@ -165,51 +166,12 @@ add_to_global (struct link_map *new)
return 0;
}
-int
-_dl_scope_free (void *old)
-{
- struct dl_scope_free_list *fsl;
-#define DL_SCOPE_FREE_LIST_SIZE (sizeof (fsl->list) / sizeof (fsl->list[0]))
-
- if (RTLD_SINGLE_THREAD_P)
- free (old);
- else if ((fsl = GL(dl_scope_free_list)) == NULL)
- {
- GL(dl_scope_free_list) = fsl = malloc (sizeof (*fsl));
- if (fsl == NULL)
- {
- THREAD_GSCOPE_WAIT ();
- free (old);
- return 1;
- }
- else
- {
- fsl->list[0] = old;
- fsl->count = 1;
- }
- }
- else if (fsl->count < DL_SCOPE_FREE_LIST_SIZE)
- fsl->list[fsl->count++] = old;
- else
- {
- THREAD_GSCOPE_WAIT ();
- while (fsl->count > 0)
- free (fsl->list[--fsl->count]);
- return 1;
- }
- return 0;
-}
-
static void
dl_open_worker (void *a)
{
struct dl_open_args *args = a;
const char *file = args->file;
int mode = args->mode;
- struct link_map *new;
- int lazy;
- unsigned int i;
- bool any_tls = false;
struct link_map *call_map = NULL;
/* Check whether _dl_open() has been called from a valid DSO. */
@@ -232,7 +194,7 @@ dl_open_worker (void *a)
call_map = GL(dl_ns)[LM_ID_BASE]._ns_loaded;
struct link_map *l;
- for (Lmid_t ns = 0; ns < DL_NNS; ++ns)
+ for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns)
for (l = GL(dl_ns)[ns]._ns_loaded; l != NULL; l = l->l_next)
if (caller_dlopen >= (const void *) l->l_map_start
&& caller_dlopen < (const void *) l->l_map_end
@@ -263,15 +225,14 @@ dl_open_worker (void *a)
if (__builtin_expect (dst != NULL, 0))
{
size_t len = strlen (file);
- size_t required;
- char *new_file;
/* Determine how much space we need. We have to allocate the
memory locally. */
- required = DL_DST_REQUIRED (call_map, file, len, _dl_dst_count (dst, 0));
+ size_t required = DL_DST_REQUIRED (call_map, file, len,
+ _dl_dst_count (dst, 0));
/* Get space for the new file name. */
- new_file = (char *) alloca (required + 1);
+ char *new_file = (char *) alloca (required + 1);
/* Generate the new file name. */
_dl_dst_substitute (call_map, file, new_file, 0);
@@ -290,6 +251,7 @@ dl_open_worker (void *a)
}
/* Load the named object. */
+ struct link_map *new;
args->map = new = _dl_map_object (call_map, file, 0, lt_loaded, 0,
mode | __RTLD_CALLMAP, args->nsid);
@@ -331,7 +293,7 @@ dl_open_worker (void *a)
mode & (__RTLD_DLOPEN | RTLD_DEEPBIND | __RTLD_AUDIT));
/* So far, so good. Now check the versions. */
- for (i = 0; i < new->l_searchlist.r_nlist; ++i)
+ for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
if (new->l_searchlist.r_list[i]->l_real->l_versions == NULL)
(void) _dl_check_map_versions (new->l_searchlist.r_list[i]->l_real,
0, 0);
@@ -366,7 +328,9 @@ dl_open_worker (void *a)
_dl_debug_state ();
/* Only do lazy relocation if `LD_BIND_NOW' is not set. */
- lazy = (mode & RTLD_BINDING_MASK) == RTLD_LAZY && GLRO(dl_lazy);
+ int reloc_mode = mode & __RTLD_AUDIT;
+ if (GLRO(dl_lazy))
+ reloc_mode |= mode & RTLD_LAZY;
/* Relocate the objects loaded. We do this in reverse order so that copy
relocs of earlier objects overwrite the data written by later objects. */
@@ -383,12 +347,12 @@ dl_open_worker (void *a)
{
/* If this here is the shared object which we want to profile
make sure the profile is started. We can find out whether
- this is necessary or not by observing the `_dl_profile_map'
- variable. If was NULL but is not NULL afterwars we must
+ this is necessary or not by observing the `_dl_profile_map'
+ variable. If was NULL but is not NULL afterwars we must
start the profiling. */
struct link_map *old_profile_map = GL(dl_profile_map);
- _dl_relocate_object (l, l->l_scope, 1, 1);
+ _dl_relocate_object (l, l->l_scope, reloc_mode | RTLD_LAZY, 1);
if (old_profile_map == NULL && GL(dl_profile_map) != NULL)
{
@@ -401,7 +365,7 @@ dl_open_worker (void *a)
}
else
#endif
- _dl_relocate_object (l, l->l_scope, lazy, 0);
+ _dl_relocate_object (l, l->l_scope, reloc_mode, 0);
}
if (l == new)
@@ -411,7 +375,8 @@ dl_open_worker (void *a)
/* If the file is not loaded now as a dependency, add the search
list of the newly loaded object to the scope. */
- for (i = 0; i < new->l_searchlist.r_nlist; ++i)
+ bool any_tls = false;
+ for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
{
struct link_map *imap = new->l_searchlist.r_list[i];
@@ -491,6 +456,18 @@ dl_open_worker (void *a)
if (imap->l_need_tls_init)
{
+ /* For static TLS we have to allocate the memory here
+ and now. This includes allocating memory in the DTV.
+ But we cannot change any DTV other than our own. So,
+ if we cannot guarantee that there is room in the DTV
+ we don't even try it and fail the load.
+
+ XXX We could track the minimum DTV slots allocated in
+ all threads. */
+ if (! RTLD_SINGLE_THREAD_P && imap->l_tls_modid > DTV_SURPLUS)
+ _dl_signal_error (0, "dlopen", NULL, N_("\
+cannot load any more object with static TLS"));
+
imap->l_need_tls_init = 0;
#ifdef SHARED
/* Update the slot information data for at least the
@@ -551,14 +528,14 @@ _dl_open (const char *file, int mode, const void *caller_dlopen, Lmid_t nsid,
/* Make sure we are alone. */
__rtld_lock_lock_recursive (GL(dl_load_lock));
- if (nsid == LM_ID_NEWLM)
+ if (__builtin_expect (nsid == LM_ID_NEWLM, 0))
{
/* Find a new namespace. */
- for (nsid = 1; nsid < DL_NNS; ++nsid)
+ for (nsid = 1; nsid < GL(dl_nns); ++nsid)
if (GL(dl_ns)[nsid]._ns_loaded == NULL)
break;
- if (nsid == DL_NNS)
+ if (__builtin_expect (nsid == DL_NNS, 0))
{
/* No more namespace available. */
__rtld_lock_unlock_recursive (GL(dl_load_lock));
@@ -567,16 +544,28 @@ _dl_open (const char *file, int mode, const void *caller_dlopen, Lmid_t nsid,
no more namespaces available for dlmopen()"));
}
+ if (nsid == GL(dl_nns))
+ {
+ __rtld_lock_initialize (GL(dl_ns)[nsid]._ns_unique_sym_table.lock);
+ ++GL(dl_nns);
+ }
+
_dl_debug_initialize (0, nsid)->r_state = RT_CONSISTENT;
}
/* Never allow loading a DSO in a namespace which is empty. Such
direct placements is only causing problems. Also don't allow
loading into a namespace used for auditing. */
- else if (nsid != LM_ID_BASE && nsid != __LM_ID_CALLER
+ else if (__builtin_expect (nsid != LM_ID_BASE && nsid != __LM_ID_CALLER, 0)
&& (GL(dl_ns)[nsid]._ns_nloaded == 0
|| GL(dl_ns)[nsid]._ns_loaded->l_auditing))
_dl_signal_error (EINVAL, file, NULL,
N_("invalid target namespace in dlmopen()"));
+#ifndef SHARED
+ else if ((nsid == LM_ID_BASE || nsid == __LM_ID_CALLER)
+ && GL(dl_ns)[LM_ID_BASE]._ns_loaded == NULL
+ && GL(dl_nns) == 0)
+ GL(dl_nns) = 1;
+#endif
struct dl_open_args args;
args.file = file;
diff --git a/elf/dl-profile.c b/elf/dl-profile.c
index 47033f32ef..d9250bcadd 100644
--- a/elf/dl-profile.c
+++ b/elf/dl-profile.c
@@ -1,5 +1,5 @@
/* Profiling of shared libraries.
- Copyright (C) 1997-2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997-2004, 2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
Based on the BSD mcount implementation.
@@ -178,8 +178,6 @@ _dl_start_profile (void)
const ElfW(Phdr) *ph;
ElfW(Addr) mapstart = ~((ElfW(Addr)) 0);
ElfW(Addr) mapend = 0;
- struct gmon_hdr gmon_hdr;
- struct gmon_hist_hdr hist_hdr;
char *hist, *cp;
size_t idx;
size_t tossize;
@@ -251,15 +249,52 @@ _dl_start_profile (void)
+ 4 + 4 + fromssize * sizeof (struct here_cg_arc_record));
/* Create the gmon_hdr we expect or write. */
- memset (&gmon_hdr, '\0', sizeof (struct gmon_hdr));
+ struct real_gmon_hdr
+ {
+ char cookie[4];
+ int32_t version;
+ char spare[3 * 4];
+ } gmon_hdr;
+ if (sizeof (gmon_hdr) != sizeof (struct gmon_hdr)
+ || (offsetof (struct real_gmon_hdr, cookie)
+ != offsetof (struct gmon_hdr, cookie))
+ || (offsetof (struct real_gmon_hdr, version)
+ != offsetof (struct gmon_hdr, version)))
+ abort ();
+
memcpy (&gmon_hdr.cookie[0], GMON_MAGIC, sizeof (gmon_hdr.cookie));
- *(int32_t *) gmon_hdr.version = GMON_SHOBJ_VERSION;
+ gmon_hdr.version = GMON_SHOBJ_VERSION;
+ memset (gmon_hdr.spare, '\0', sizeof (gmon_hdr.spare));
/* Create the hist_hdr we expect or write. */
- *(char **) hist_hdr.low_pc = (char *) mapstart;
- *(char **) hist_hdr.high_pc = (char *) mapend;
- *(int32_t *) hist_hdr.hist_size = kcountsize / sizeof (HISTCOUNTER);
- *(int32_t *) hist_hdr.prof_rate = __profile_frequency ();
+ struct real_gmon_hist_hdr
+ {
+ char *low_pc;
+ char *high_pc;
+ int32_t hist_size;
+ int32_t prof_rate;
+ char dimen[15];
+ char dimen_abbrev;
+ } hist_hdr;
+ if (sizeof (hist_hdr) != sizeof (struct gmon_hist_hdr)
+ || (offsetof (struct real_gmon_hist_hdr, low_pc)
+ != offsetof (struct gmon_hist_hdr, low_pc))
+ || (offsetof (struct real_gmon_hist_hdr, high_pc)
+ != offsetof (struct gmon_hist_hdr, high_pc))
+ || (offsetof (struct real_gmon_hist_hdr, hist_size)
+ != offsetof (struct gmon_hist_hdr, hist_size))
+ || (offsetof (struct real_gmon_hist_hdr, prof_rate)
+ != offsetof (struct gmon_hist_hdr, prof_rate))
+ || (offsetof (struct real_gmon_hist_hdr, dimen)
+ != offsetof (struct gmon_hist_hdr, dimen))
+ || (offsetof (struct real_gmon_hist_hdr, dimen_abbrev)
+ != offsetof (struct gmon_hist_hdr, dimen_abbrev)))
+ abort ();
+
+ hist_hdr.low_pc = (char *) mapstart;
+ hist_hdr.high_pc = (char *) mapend;
+ hist_hdr.hist_size = kcountsize / sizeof (HISTCOUNTER);
+ hist_hdr.prof_rate = __profile_frequency ();
if (sizeof (hist_hdr.dimen) >= sizeof ("seconds"))
{
memcpy (hist_hdr.dimen, "seconds", sizeof ("seconds"));
diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c
index a303cb4ce6..6c0069147d 100644
--- a/elf/dl-reloc.c
+++ b/elf/dl-reloc.c
@@ -1,5 +1,5 @@
/* Relocate a shared object and resolve its references to other loaded objects.
- Copyright (C) 1995-2004, 2005, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1995-2006, 2008, 2009 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
@@ -61,7 +61,10 @@ _dl_try_allocate_static_tls (struct link_map *map)
size_t n;
size_t blsize;
- freebytes = GL(dl_tls_static_size) - GL(dl_tls_static_used) - TLS_TCB_SIZE;
+ freebytes = GL(dl_tls_static_size) - GL(dl_tls_static_used);
+ if (freebytes < TLS_TCB_SIZE)
+ goto fail;
+ freebytes -= TLS_TCB_SIZE;
blsize = map->l_tls_blocksize + map->l_tls_firstbyte_offset;
if (freebytes < blsize)
@@ -151,7 +154,7 @@ _dl_nothread_init_static_tls (struct link_map *map)
void
_dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
- int lazy, int consider_profiling)
+ int reloc_mode, int consider_profiling)
{
struct textrels
{
@@ -162,10 +165,12 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
} *textrels = NULL;
/* Initialize it to make the compiler happy. */
const char *errstring = NULL;
+ int lazy = reloc_mode & RTLD_LAZY;
#ifdef SHARED
/* If we are auditing, install the same handlers we need for profiling. */
- consider_profiling |= GLRO(dl_audit) != NULL;
+ if ((reloc_mode & __RTLD_AUDIT) == 0)
+ consider_profiling |= GLRO(dl_audit) != NULL;
#elif defined PROF
/* Never use dynamic linker profiling for gprof profiling code. */
# define consider_profiling 0
@@ -249,14 +254,11 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
l->l_lookup_cache.type_class = _tc; \
l->l_lookup_cache.sym = (*ref); \
const struct r_found_version *v = NULL; \
- int flags = DL_LOOKUP_ADD_DEPENDENCY; \
if ((version) != NULL && (version)->hash != 0) \
- { \
- v = (version); \
- flags = 0; \
- } \
+ v = (version); \
_lr = _dl_lookup_symbol_x (strtab + (*ref)->st_name, l, (ref), \
- scope, v, _tc, flags, NULL); \
+ scope, v, _tc, \
+ DL_LOOKUP_ADD_DEPENDENCY, NULL); \
l->l_lookup_cache.ret = (*ref); \
l->l_lookup_cache.value = _lr; })) \
: l)
diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c
index 968e293409..a52120d121 100644
--- a/elf/dl-runtime.c
+++ b/elf/dl-runtime.c
@@ -1,5 +1,5 @@
/* On-demand PLT fixup for shared objects.
- Copyright (C) 1995-2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1995-2006, 2007, 2008, 2009 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
@@ -46,6 +46,12 @@
# define ARCH_FIXUP_ATTRIBUTE
#endif
+#ifndef reloc_offset
+# define reloc_offset reloc_arg
+# define reloc_index reloc_arg / sizeof (PLTREL)
+#endif
+
+
/* This function is called through a special trampoline from the PLT the
first time each PLT entry is called. We must perform the relocation
@@ -63,7 +69,7 @@ _dl_fixup (
# endif
/* GKM FIXME: Fix trampoline to pass bounds so we can do
without the `__unbounded' qualifier. */
- struct link_map *__unbounded l, ElfW(Word) reloc_offset)
+ struct link_map *__unbounded l, ElfW(Word) reloc_arg)
{
const ElfW(Sym) *const symtab
= (const void *) D_PTR (l, l_info[DT_SYMTAB]);
@@ -105,6 +111,10 @@ _dl_fixup (
flags |= DL_LOOKUP_GSCOPE_LOCK;
}
+#ifdef RTLD_ENABLE_FOREIGN_CALL
+ RTLD_ENABLE_FOREIGN_CALL;
+#endif
+
result = _dl_lookup_symbol_x (strtab + sym->st_name, l, &sym, l->l_scope,
version, ELF_RTYPE_CLASS_PLT, flags, NULL);
@@ -112,6 +122,10 @@ _dl_fixup (
if (!RTLD_SINGLE_THREAD_P)
THREAD_GSCOPE_RESET_FLAG ();
+#ifdef RTLD_FINALIZE_FOREIGN_CALL
+ RTLD_FINALIZE_FOREIGN_CALL;
+#endif
+
/* Currently result contains the base load address (or link map)
of the object that defines sym. Now add in the symbol
offset. */
@@ -130,6 +144,9 @@ _dl_fixup (
/* And now perhaps the relocation addend. */
value = elf_machine_plt_value (l, reloc, value);
+ if (__builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0))
+ value = ((DL_FIXUP_VALUE_TYPE (*) (void)) DL_FIXUP_VALUE_ADDR (value)) ();
+
/* Finally, fix up the plt itself. */
if (__builtin_expect (GLRO(dl_bind_not), 0))
return value;
@@ -139,22 +156,20 @@ _dl_fixup (
#endif
#if !defined PROF && !defined ELF_MACHINE_NO_PLT && !__BOUNDED_POINTERS__
-
DL_FIXUP_VALUE_TYPE
__attribute ((noinline)) ARCH_FIXUP_ATTRIBUTE
_dl_profile_fixup (
#ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
ELF_MACHINE_RUNTIME_FIXUP_ARGS,
#endif
- struct link_map *l, ElfW(Word) reloc_offset,
+ struct link_map *l, ElfW(Word) reloc_arg,
ElfW(Addr) retaddr, void *regs, long int *framesizep)
{
void (*mcount_fct) (ElfW(Addr), ElfW(Addr)) = INTUSE(_dl_mcount);
/* This is the address in the array where we store the result of previous
relocations. */
- struct reloc_result *reloc_result
- = &l->l_reloc_result[reloc_offset / sizeof (PLTREL)];
+ struct reloc_result *reloc_result = &l->l_reloc_result[reloc_index];
DL_FIXUP_VALUE_TYPE *resultp = &reloc_result->addr;
DL_FIXUP_VALUE_TYPE value = *resultp;
@@ -215,12 +230,23 @@ _dl_profile_fixup (
defsym != NULL
? LOOKUP_VALUE_ADDRESS (result)
+ defsym->st_value : 0);
+
+ if (__builtin_expect (ELFW(ST_TYPE) (defsym->st_info)
+ == STT_GNU_IFUNC, 0))
+ value = ((DL_FIXUP_VALUE_TYPE (*) (void))
+ DL_FIXUP_VALUE_ADDR (value)) ();
}
else
{
/* We already found the symbol. The module (and therefore its load
address) is also known. */
value = DL_FIXUP_MAKE_VALUE (l, l->l_addr + refsym->st_value);
+
+ if (__builtin_expect (ELFW(ST_TYPE) (refsym->st_info)
+ == STT_GNU_IFUNC, 0))
+ value = ((DL_FIXUP_VALUE_TYPE (*) (void))
+ DL_FIXUP_VALUE_ADDR (value)) ();
+
result = l;
}
/* And now perhaps the relocation addend. */
@@ -403,7 +429,7 @@ _dl_profile_fixup (
#include <stdio.h>
void
ARCH_FIXUP_ATTRIBUTE
-_dl_call_pltexit (struct link_map *l, ElfW(Word) reloc_offset,
+_dl_call_pltexit (struct link_map *l, ElfW(Word) reloc_arg,
const void *inregs, void *outregs)
{
#ifdef SHARED
@@ -411,8 +437,7 @@ _dl_call_pltexit (struct link_map *l, ElfW(Word) reloc_offset,
relocations. */
// XXX Maybe the bound information must be stored on the stack since
// XXX with bind_not a new value could have been stored in the meantime.
- struct reloc_result *reloc_result
- = &l->l_reloc_result[reloc_offset / sizeof (PLTREL)];
+ struct reloc_result *reloc_result = &l->l_reloc_result[reloc_index];
ElfW(Sym) *defsym = ((ElfW(Sym) *) D_PTR (reloc_result->bound,
l_info[DT_SYMTAB])
+ reloc_result->boundndx);
diff --git a/sysdeps/unix/sysv/linux/paccept.c b/elf/dl-scope.c
index cc2979c0ed..229177ed34 100644
--- a/sysdeps/unix/sysv/linux/paccept.c
+++ b/elf/dl-scope.c
@@ -1,6 +1,6 @@
-/* Copyright (C) 2008 Free Software Foundation, Inc.
+/* Memory handling for the scope data structures.
+ Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2008.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -17,38 +17,42 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <errno.h>
-#include <signal.h>
-#include <sys/socket.h>
-
+#include <stdlib.h>
+#include <ldsodefs.h>
#include <sysdep-cancel.h>
-#include <sys/syscall.h>
-
-#ifdef __NR_paccept
-int
-paccept (int fd, __SOCKADDR_ARG addr, socklen_t *addr_len,
- const __sigset_t *ss, int flags)
-{
- if (SINGLE_THREAD_P)
- return INLINE_SYSCALL (paccept, 6, fd, addr.__sockaddr__, addr_len, ss,
- _NSIG / 8, flags);
- int oldtype = LIBC_CANCEL_ASYNC ();
- int result = INLINE_SYSCALL (paccept, 6, fd, addr.__sockaddr__, addr_len, ss,
- _NSIG / 8, flags);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
-}
-#else
int
-paccept (int fd, __SOCKADDR_ARG addr, socklen_t *addr_len,
- const __sigset_t *ss, int flags)
+_dl_scope_free (void *old)
{
- __set_errno (ENOSYS);
- return -1;
-stub_warning (epoll_pwait)
+ struct dl_scope_free_list *fsl;
+#define DL_SCOPE_FREE_LIST_SIZE (sizeof (fsl->list) / sizeof (fsl->list[0]))
+
+ if (RTLD_SINGLE_THREAD_P)
+ free (old);
+ else if ((fsl = GL(dl_scope_free_list)) == NULL)
+ {
+ GL(dl_scope_free_list) = fsl = malloc (sizeof (*fsl));
+ if (fsl == NULL)
+ {
+ THREAD_GSCOPE_WAIT ();
+ free (old);
+ return 1;
+ }
+ else
+ {
+ fsl->list[0] = old;
+ fsl->count = 1;
+ }
+ }
+ else if (fsl->count < DL_SCOPE_FREE_LIST_SIZE)
+ fsl->list[fsl->count++] = old;
+ else
+ {
+ THREAD_GSCOPE_WAIT ();
+ while (fsl->count > 0)
+ free (fsl->list[--fsl->count]);
+ return 1;
+ }
+ return 0;
}
-#endif
diff --git a/elf/dl-support.c b/elf/dl-support.c
index 6bd573ec57..bcf0e2a560 100644
--- a/elf/dl-support.c
+++ b/elf/dl-support.c
@@ -1,5 +1,5 @@
/* Support for dynamic linking code in static libc.
- Copyright (C) 1996-2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1996-2008, 2009 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
@@ -70,6 +70,7 @@ int _dl_bind_not;
/* Namespace information. */
struct link_namespaces _dl_ns[DL_NNS];
+size_t _dl_nns;
/* Incremented whenever something may have been added to dl_loaded. */
unsigned long long _dl_load_adds;
@@ -84,6 +85,9 @@ struct r_scope_elem _dl_initial_searchlist;
int _dl_starting_up = 1;
#endif
+/* Random data provided by the kernel. */
+void *_dl_random;
+
/* Get architecture specific initializer. */
#include <dl-procinfo.c>
@@ -216,6 +220,9 @@ _dl_aux_init (ElfW(auxv_t) *av)
__libc_enable_secure = av->a_un.a_val;
__libc_enable_secure_decided = 1;
break;
+ case AT_RANDOM:
+ _dl_random = (void *) av->a_un.a_val;
+ break;
# ifdef DL_PLATFORM_AUXV
DL_PLATFORM_AUXV
# endif
diff --git a/elf/dl-sym.c b/elf/dl-sym.c
index 43c8274b7d..4faf05c00b 100644
--- a/elf/dl-sym.c
+++ b/elf/dl-sym.c
@@ -1,5 +1,5 @@
/* Look up a symbol in a shared object loaded by `dlopen'.
- Copyright (C) 1999-2002,2004,2006,2007 Free Software Foundation, Inc.
+ Copyright (C) 1999-2002,2004,2006,2007,2009 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
@@ -95,7 +95,7 @@ do_sym (void *handle, const char *name, void *who,
struct link_map *match = GL(dl_ns)[LM_ID_BASE]._ns_loaded;
/* Find the highest-addressed object that CALLER is not below. */
- for (Lmid_t ns = 0; ns < DL_NNS; ++ns)
+ for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns)
for (struct link_map *l = GL(dl_ns)[ns]._ns_loaded; l != NULL;
l = l->l_next)
if (caller >= l->l_map_start && caller < l->l_map_end
@@ -191,6 +191,16 @@ RTLD_NEXT used in code not dynamically loaded"));
#endif
value = DL_SYMBOL_ADDRESS (result, ref);
+ /* Resolve indirect function address. */
+ if (__builtin_expect (ELFW(ST_TYPE) (ref->st_info) == STT_GNU_IFUNC, 0))
+ {
+ DL_FIXUP_VALUE_TYPE fixup
+ = DL_FIXUP_MAKE_VALUE (result, (ElfW(Addr)) value);
+ fixup =
+ ((DL_FIXUP_VALUE_TYPE (*) (void)) DL_FIXUP_VALUE_ADDR (fixup)) ();
+ value = (void *) DL_FIXUP_VALUE_CODE_ADDR (fixup);
+ }
+
#ifdef SHARED
/* Auditing checkpoint: we have a new binding. Provide the
auditing libraries the possibility to change the value and
diff --git a/elf/dl-sysdep.c b/elf/dl-sysdep.c
index e6f4272a63..5507e57b96 100644
--- a/elf/dl-sysdep.c
+++ b/elf/dl-sysdep.c
@@ -1,5 +1,6 @@
/* Operating system support for run-time dynamic linker. Generic Unix version.
- Copyright (C) 1995-1998, 2000-2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1995-1998,2000-2008,2009,2010
+ 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
@@ -62,6 +63,7 @@ int __libc_multiple_libcs = 0; /* Defining this here avoids the inclusion
void *__libc_stack_end attribute_relro = NULL;
rtld_hidden_data_def(__libc_stack_end)
static ElfW(auxv_t) *_dl_auxv attribute_relro;
+void *_dl_random attribute_relro = NULL;
#ifndef DL_FIND_ARG_COMPONENTS
# define DL_FIND_ARG_COMPONENTS(cookie, argc, argv, envp, auxp) \
@@ -83,7 +85,7 @@ static ElfW(auxv_t) *_dl_auxv attribute_relro;
ElfW(Addr)
_dl_sysdep_start (void **start_argptr,
void (*dl_main) (const ElfW(Phdr) *phdr, ElfW(Word) phnum,
- ElfW(Addr) *user_entry))
+ ElfW(Addr) *user_entry, ElfW(auxv_t) *auxv))
{
const ElfW(Phdr) *phdr = NULL;
ElfW(Word) phnum = 0;
@@ -173,6 +175,9 @@ _dl_sysdep_start (void **start_argptr,
GLRO(dl_sysinfo_dso) = (void *) av->a_un.a_val;
break;
#endif
+ case AT_RANDOM:
+ _dl_random = (void *) av->a_un.a_val;
+ break;
#ifdef DL_PLATFORM_AUXV
DL_PLATFORM_AUXV
#endif
@@ -236,7 +241,7 @@ _dl_sysdep_start (void **start_argptr,
if (__builtin_expect (INTUSE(__libc_enable_secure), 0))
__libc_check_standard_fds ();
- (*dl_main) (phdr, phnum, &user_entry);
+ (*dl_main) (phdr, phnum, &user_entry, _dl_auxv);
return user_entry;
}
@@ -265,35 +270,37 @@ _dl_show_auxv (void)
{
static const struct
{
- const char label[20];
- enum { unknown = 0, dec, hex, str, ignore } form;
+ const char label[17];
+ enum { unknown = 0, dec, hex, str, ignore } form : 8;
} auxvars[] =
{
- [AT_EXECFD - 2] = { "AT_EXECFD: ", dec },
- [AT_EXECFN - 2] = { "AT_EXECFN: ", str },
- [AT_PHDR - 2] = { "AT_PHDR: 0x", hex },
- [AT_PHENT - 2] = { "AT_PHENT: ", dec },
- [AT_PHNUM - 2] = { "AT_PHNUM: ", dec },
- [AT_PAGESZ - 2] = { "AT_PAGESZ: ", dec },
- [AT_BASE - 2] = { "AT_BASE: 0x", hex },
- [AT_FLAGS - 2] = { "AT_FLAGS: 0x", hex },
- [AT_ENTRY - 2] = { "AT_ENTRY: 0x", hex },
- [AT_NOTELF - 2] = { "AT_NOTELF: ", hex },
- [AT_UID - 2] = { "AT_UID: ", dec },
- [AT_EUID - 2] = { "AT_EUID: ", dec },
- [AT_GID - 2] = { "AT_GID: ", dec },
- [AT_EGID - 2] = { "AT_EGID: ", dec },
- [AT_PLATFORM - 2] = { "AT_PLATFORM: ", str },
- [AT_HWCAP - 2] = { "AT_HWCAP: ", hex },
- [AT_CLKTCK - 2] = { "AT_CLKTCK: ", dec },
- [AT_FPUCW - 2] = { "AT_FPUCW: ", hex },
- [AT_DCACHEBSIZE - 2] = { "AT_DCACHEBSIZE: 0x", hex },
- [AT_ICACHEBSIZE - 2] = { "AT_ICACHEBSIZE: 0x", hex },
- [AT_UCACHEBSIZE - 2] = { "AT_UCACHEBSIZE: 0x", hex },
- [AT_IGNOREPPC - 2] = { "AT_IGNOREPPC", ignore },
- [AT_SECURE - 2] = { "AT_SECURE: ", dec },
- [AT_SYSINFO - 2] = { "AT_SYSINFO: 0x", hex },
- [AT_SYSINFO_EHDR - 2] = { "AT_SYSINFO_EHDR: 0x", hex },
+ [AT_EXECFD - 2] = { "EXECFD: ", dec },
+ [AT_EXECFN - 2] = { "EXECFN: ", str },
+ [AT_PHDR - 2] = { "PHDR: 0x", hex },
+ [AT_PHENT - 2] = { "PHENT: ", dec },
+ [AT_PHNUM - 2] = { "PHNUM: ", dec },
+ [AT_PAGESZ - 2] = { "PAGESZ: ", dec },
+ [AT_BASE - 2] = { "BASE: 0x", hex },
+ [AT_FLAGS - 2] = { "FLAGS: 0x", hex },
+ [AT_ENTRY - 2] = { "ENTRY: 0x", hex },
+ [AT_NOTELF - 2] = { "NOTELF: ", hex },
+ [AT_UID - 2] = { "UID: ", dec },
+ [AT_EUID - 2] = { "EUID: ", dec },
+ [AT_GID - 2] = { "GID: ", dec },
+ [AT_EGID - 2] = { "EGID: ", dec },
+ [AT_PLATFORM - 2] = { "PLATFORM: ", str },
+ [AT_HWCAP - 2] = { "HWCAP: ", hex },
+ [AT_CLKTCK - 2] = { "CLKTCK: ", dec },
+ [AT_FPUCW - 2] = { "FPUCW: ", hex },
+ [AT_DCACHEBSIZE - 2] = { "DCACHEBSIZE: 0x", hex },
+ [AT_ICACHEBSIZE - 2] = { "ICACHEBSIZE: 0x", hex },
+ [AT_UCACHEBSIZE - 2] = { "UCACHEBSIZE: 0x", hex },
+ [AT_IGNOREPPC - 2] = { "IGNOREPPC", ignore },
+ [AT_SECURE - 2] = { "SECURE: ", dec },
+ [AT_BASE_PLATFORM - 2] = { "BASE_PLATFORM:", str },
+ [AT_SYSINFO - 2] = { "SYSINFO: 0x", hex },
+ [AT_SYSINFO_EHDR - 2] = { "SYSINFO_EHDR: 0x", hex },
+ [AT_RANDOM - 2] = { "RANDOM: 0x", hex },
};
unsigned int idx = (unsigned int) (av->a_type - 2);
@@ -322,14 +329,14 @@ _dl_show_auxv (void)
val = _itoa ((unsigned long int) av->a_un.a_val,
buf + sizeof buf - 1, 16, 0);
- _dl_printf ("%s%s\n", auxvars[idx].label, val);
+ _dl_printf ("AT_%s%s\n", auxvars[idx].label, val);
continue;
}
/* Unknown value: print a generic line. */
char buf2[17];
- buf[sizeof (buf2) - 1] = '\0';
+ buf2[sizeof (buf2) - 1] = '\0';
const char *val2 = _itoa ((unsigned long int) av->a_un.a_val,
buf2 + sizeof buf2 - 1, 16, 0);
const char *val = _itoa ((unsigned long int) av->a_type,
@@ -384,7 +391,7 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
while ((ElfW(Addr)) (note + 1) - start < phdr[i].p_memsz)
{
#define ROUND(len) (((len) + sizeof (ElfW(Word)) - 1) & -sizeof (ElfW(Word)))
- if (note->type == 2
+ if (note->type == NT_GNU_HWCAP
&& note->vendorlen == sizeof "GNU"
&& !memcmp ((note + 1), "GNU", sizeof "GNU")
&& note->datalen > 2 * sizeof (ElfW(Word)) + 2)
@@ -504,9 +511,9 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
/* Fill in the information. This follows the following scheme
(indeces from TEMP for four strings):
entry #0: 0, 1, 2, 3 binary: 1111
- #1: 0, 1, 3 1101
- #2: 0, 2, 3 1011
- #3: 0, 3 1001
+ #1: 0, 1, 3 1101
+ #2: 0, 2, 3 1011
+ #3: 0, 3 1001
This allows the representation of all possible combinations of
capability names in the string. First generate the strings. */
result[1].str = result[0].str = cp = (char *) (result + *sz);
diff --git a/elf/do-lookup.h b/elf/do-lookup.h
deleted file mode 100644
index ebb9ed5b47..0000000000
--- a/elf/do-lookup.h
+++ /dev/null
@@ -1,269 +0,0 @@
-/* Look up a symbol in the loaded objects.
- Copyright (C) 1995-2004, 2005, 2006, 2007 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-
-/* Inner part of the lookup functions. We return a value > 0 if we
- found the symbol, the value 0 if nothing is found and < 0 if
- something bad happened. */
-static int
-__attribute_noinline__
-do_lookup_x (const char *undef_name, uint_fast32_t new_hash,
- unsigned long int *old_hash, const ElfW(Sym) *ref,
- struct sym_val *result, struct r_scope_elem *scope, size_t i,
- const struct r_found_version *const version, int flags,
- struct link_map *skip, int type_class)
-{
- size_t n = scope->r_nlist;
- /* Make sure we read the value before proceeding. Otherwise we
- might use r_list pointing to the initial scope and r_nlist being
- the value after a resize. That is the only path in dl-open.c not
- protected by GSCOPE. A read barrier here might be to expensive. */
- __asm volatile ("" : "+r" (n), "+m" (scope->r_list));
- struct link_map **list = scope->r_list;
-
- do
- {
- /* These variables are used in the nested function. */
- Elf_Symndx symidx;
- int num_versions = 0;
- const ElfW(Sym) *versioned_sym = NULL;
-
- const struct link_map *map = list[i]->l_real;
-
- /* Here come the extra test needed for `_dl_lookup_symbol_skip'. */
- if (map == skip)
- continue;
-
- /* Don't search the executable when resolving a copy reloc. */
- if ((type_class & ELF_RTYPE_CLASS_COPY) && map->l_type == lt_executable)
- continue;
-
- /* Do not look into objects which are going to be removed. */
- if (map->l_removed)
- continue;
-
- /* Print some debugging info if wanted. */
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SYMBOLS, 0))
- _dl_debug_printf ("symbol=%s; lookup in file=%s [%lu]\n",
- undef_name,
- map->l_name[0] ? map->l_name : rtld_progname,
- map->l_ns);
-
- /* If the hash table is empty there is nothing to do here. */
- if (map->l_nbuckets == 0)
- continue;
-
- /* The tables for this map. */
- const ElfW(Sym) *symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
- const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-
-
- /* Nested routine to check whether the symbol matches. */
- const ElfW(Sym) *
- __attribute_noinline__
- check_match (const ElfW(Sym) *sym)
- {
- assert (ELF_RTYPE_CLASS_PLT == 1);
- if (__builtin_expect ((sym->st_value == 0 /* No value. */
- && ELFW(ST_TYPE) (sym->st_info) != STT_TLS)
- || (type_class & (sym->st_shndx == SHN_UNDEF)),
- 0))
- return NULL;
-
- if (__builtin_expect (ELFW(ST_TYPE) (sym->st_info) > STT_FUNC
- && ELFW(ST_TYPE) (sym->st_info) != STT_COMMON
- && ELFW(ST_TYPE) (sym->st_info) != STT_TLS, 0))
- /* Ignore all but STT_NOTYPE, STT_OBJECT, STT_FUNC, and STT_COMMON
- entries (and STT_TLS if TLS is supported) since these
- are no code/data definitions. */
- return NULL;
-
- if (sym != ref && strcmp (strtab + sym->st_name, undef_name))
- /* Not the symbol we are looking for. */
- return NULL;
-
- const ElfW(Half) *verstab = map->l_versyms;
- if (version != NULL)
- {
- if (__builtin_expect (verstab == NULL, 0))
- {
- /* We need a versioned symbol but haven't found any. If
- this is the object which is referenced in the verneed
- entry it is a bug in the library since a symbol must
- not simply disappear.
-
- It would also be a bug in the object since it means that
- the list of required versions is incomplete and so the
- tests in dl-version.c haven't found a problem.*/
- assert (version->filename == NULL
- || ! _dl_name_match_p (version->filename, map));
-
- /* Otherwise we accept the symbol. */
- }
- else
- {
- /* We can match the version information or use the
- default one if it is not hidden. */
- ElfW(Half) ndx = verstab[symidx] & 0x7fff;
- if ((map->l_versions[ndx].hash != version->hash
- || strcmp (map->l_versions[ndx].name, version->name))
- && (version->hidden || map->l_versions[ndx].hash
- || (verstab[symidx] & 0x8000)))
- /* It's not the version we want. */
- return NULL;
- }
- }
- else
- {
- /* No specific version is selected. There are two ways we
- can got here:
-
- - a binary which does not include versioning information
- is loaded
-
- - dlsym() instead of dlvsym() is used to get a symbol which
- might exist in more than one form
-
- If the library does not provide symbol version information
- there is no problem at at: we simply use the symbol if it
- is defined.
-
- These two lookups need to be handled differently if the
- library defines versions. In the case of the old
- unversioned application the oldest (default) version
- should be used. In case of a dlsym() call the latest and
- public interface should be returned. */
- if (verstab != NULL)
- {
- if ((verstab[symidx] & 0x7fff)
- >= ((flags & DL_LOOKUP_RETURN_NEWEST) ? 2 : 3))
- {
- /* Don't accept hidden symbols. */
- if ((verstab[symidx] & 0x8000) == 0
- && num_versions++ == 0)
- /* No version so far. */
- versioned_sym = sym;
-
- return NULL;
- }
- }
- }
-
- /* There cannot be another entry for this symbol so stop here. */
- return sym;
- }
-
- const ElfW(Sym) *sym;
- const ElfW(Addr) *bitmask = map->l_gnu_bitmask;
- if (__builtin_expect (bitmask != NULL, 1))
- {
- ElfW(Addr) bitmask_word
- = bitmask[(new_hash / __ELF_NATIVE_CLASS)
- & map->l_gnu_bitmask_idxbits];
-
- unsigned int hashbit1 = new_hash & (__ELF_NATIVE_CLASS - 1);
- unsigned int hashbit2 = ((new_hash >> map->l_gnu_shift)
- & (__ELF_NATIVE_CLASS - 1));
-
- if (__builtin_expect ((bitmask_word >> hashbit1)
- & (bitmask_word >> hashbit2) & 1, 0))
- {
- Elf32_Word bucket = map->l_gnu_buckets[new_hash
- % map->l_nbuckets];
- if (bucket != 0)
- {
- const Elf32_Word *hasharr = &map->l_gnu_chain_zero[bucket];
-
- do
- if (((*hasharr ^ new_hash) >> 1) == 0)
- {
- symidx = hasharr - map->l_gnu_chain_zero;
- sym = check_match (&symtab[symidx]);
- if (sym != NULL)
- goto found_it;
- }
- while ((*hasharr++ & 1u) == 0);
- }
- }
- /* No symbol found. */
- symidx = SHN_UNDEF;
- }
- else
- {
- if (*old_hash == 0xffffffff)
- *old_hash = _dl_elf_hash (undef_name);
-
- /* Use the old SysV-style hash table. Search the appropriate
- hash bucket in this object's symbol table for a definition
- for the same symbol name. */
- for (symidx = map->l_buckets[*old_hash % map->l_nbuckets];
- symidx != STN_UNDEF;
- symidx = map->l_chain[symidx])
- {
- sym = check_match (&symtab[symidx]);
- if (sym != NULL)
- goto found_it;
- }
- }
-
- /* If we have seen exactly one versioned symbol while we are
- looking for an unversioned symbol and the version is not the
- default version we still accept this symbol since there are
- no possible ambiguities. */
- sym = num_versions == 1 ? versioned_sym : NULL;
-
- if (sym != NULL)
- {
- found_it:
- switch (ELFW(ST_BIND) (sym->st_info))
- {
- case STB_WEAK:
- /* Weak definition. Use this value if we don't find another. */
- if (__builtin_expect (GLRO(dl_dynamic_weak), 0))
- {
- if (! result->s)
- {
- result->s = sym;
- result->m = (struct link_map *) map;
- }
- break;
- }
- /* FALLTHROUGH */
- case STB_GLOBAL:
- /* Global definition. Just what we need. */
- result->s = sym;
- result->m = (struct link_map *) map;
- return 1;
- default:
- /* Local symbols are ignored. */
- break;
- }
- }
-
- /* If this current map is the one mentioned in the verneed entry
- and we have not found a weak entry, it is a bug. */
- if (symidx == STN_UNDEF && version != NULL && version->filename != NULL
- && __builtin_expect (_dl_name_match_p (version->filename, map), 0))
- return -1;
- }
- while (++i < n);
-
- /* We have not found anything until now. */
- return 0;
-}
diff --git a/elf/dynamic-link.h b/elf/dynamic-link.h
index c34cbcd43b..6d7e14282f 100644
--- a/elf/dynamic-link.h
+++ b/elf/dynamic-link.h
@@ -103,6 +103,11 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
{
ElfW(Dyn) *dyn = l->l_ld;
ElfW(Dyn) **info;
+#if __ELF_NATIVE_CLASS == 32
+ typedef Elf32_Word d_tag_utype;
+#elif __ELF_NATIVE_CLASS == 64
+ typedef Elf64_Xword d_tag_utype;
+#endif
#ifndef RTLD_BOOTSTRAP
if (dyn == NULL)
@@ -113,20 +118,20 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
while (dyn->d_tag != DT_NULL)
{
- if (dyn->d_tag < DT_NUM)
+ if ((d_tag_utype) dyn->d_tag < DT_NUM)
info[dyn->d_tag] = dyn;
else if (dyn->d_tag >= DT_LOPROC &&
dyn->d_tag < DT_LOPROC + DT_THISPROCNUM)
info[dyn->d_tag - DT_LOPROC + DT_NUM] = dyn;
- else if ((Elf32_Word) DT_VERSIONTAGIDX (dyn->d_tag) < DT_VERSIONTAGNUM)
+ else if ((d_tag_utype) DT_VERSIONTAGIDX (dyn->d_tag) < DT_VERSIONTAGNUM)
info[VERSYMIDX (dyn->d_tag)] = dyn;
- else if ((Elf32_Word) DT_EXTRATAGIDX (dyn->d_tag) < DT_EXTRANUM)
+ else if ((d_tag_utype) DT_EXTRATAGIDX (dyn->d_tag) < DT_EXTRANUM)
info[DT_EXTRATAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM
+ DT_VERSIONTAGNUM] = dyn;
- else if ((Elf32_Word) DT_VALTAGIDX (dyn->d_tag) < DT_VALNUM)
+ else if ((d_tag_utype) DT_VALTAGIDX (dyn->d_tag) < DT_VALNUM)
info[DT_VALTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM
+ DT_VERSIONTAGNUM + DT_EXTRANUM] = dyn;
- else if ((Elf32_Word) DT_ADDRTAGIDX (dyn->d_tag) < DT_ADDRNUM)
+ else if ((d_tag_utype) DT_ADDRTAGIDX (dyn->d_tag) < DT_ADDRNUM)
info[DT_ADDRTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM
+ DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM] = dyn;
++dyn;
diff --git a/elf/elf.h b/elf/elf.h
index 51d4e6cca7..8af7c177ce 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -1,5 +1,5 @@
/* This file defines standard ELF types, structures, and macros.
- Copyright (C) 1995-2003,2004,2005,2006,2007,2008
+ Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009,2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -444,6 +444,7 @@ typedef struct
#define STB_WEAK 2 /* Weak symbol */
#define STB_NUM 3 /* Number of defined types. */
#define STB_LOOS 10 /* Start of OS-specific */
+#define STB_GNU_UNIQUE 10 /* Unique symbol. */
#define STB_HIOS 12 /* End of OS-specific */
#define STB_LOPROC 13 /* Start of processor-specific */
#define STB_HIPROC 15 /* End of processor-specific */
@@ -459,6 +460,7 @@ typedef struct
#define STT_TLS 6 /* Symbol is thread-local data object*/
#define STT_NUM 7 /* Number of defined types. */
#define STT_LOOS 10 /* Start of OS-specific */
+#define STT_GNU_IFUNC 10 /* Symbol is indirect code object */
#define STT_HIOS 12 /* End of OS-specific */
#define STT_LOPROC 13 /* Start of processor-specific */
#define STT_HIPROC 15 /* End of processor-specific */
@@ -556,6 +558,12 @@ typedef struct
Elf64_Xword p_align; /* Segment alignment */
} Elf64_Phdr;
+/* Special value for e_phnum. This indicates that the real number of
+ program headers is too large to fit into e_phnum. Instead the real
+ value is in the field sh_info of section 0. */
+
+#define PN_XNUM 0xffff
+
/* Legal values for p_type (segment type). */
#define PT_NULL 0 /* Program header table entry unused */
@@ -608,7 +616,9 @@ typedef struct
#define NT_PRXFPREG 0x46e62b7f /* Contains copy of user_fxsr_struct */
#define NT_PPC_VMX 0x100 /* PowerPC Altivec/VMX registers */
#define NT_PPC_SPE 0x101 /* PowerPC SPE/EVR registers */
+#define NT_PPC_VSX 0x102 /* PowerPC VSX registers */
#define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */
+#define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */
/* Legal values for the note segment descriptor types for object files. */
@@ -970,6 +980,10 @@ typedef struct
#define AT_SECURE 23 /* Boolean, was exec setuid-like? */
+#define AT_BASE_PLATFORM 24 /* String identifying real platforms.*/
+
+#define AT_RANDOM 25 /* Address of 16 random bytes. */
+
#define AT_EXECFN 31 /* Filename of executable. */
/* Pointer to the global system page used for system calls and other
@@ -1046,6 +1060,9 @@ typedef struct
The descriptor consists of any nonzero number of bytes. */
#define NT_GNU_BUILD_ID 3
+/* Version note generated by GNU gold containing a version string. */
+#define NT_GNU_GOLD_VERSION 4
+
/* Move records. */
typedef struct
@@ -1170,8 +1187,9 @@ typedef struct
pointer to code and to
argument, returning the TLS
offset for the symbol. */
+#define R_386_IRELATIVE 42 /* Adjust indirectly by program base */
/* Keep this the last entry. */
-#define R_386_NUM 42
+#define R_386_NUM 43
/* SUN SPARC specific definitions. */
@@ -1239,6 +1257,7 @@ typedef struct
#define R_SPARC_PC_LM22 39 /* Low miggle 22 bits of ... */
#define R_SPARC_WDISP16 40 /* PC relative 16 bit shifted */
#define R_SPARC_WDISP19 41 /* PC relative 19 bit shifted */
+#define R_SPARC_GLOB_JMP 42 /* was part of v9 ABI but was removed */
#define R_SPARC_7 43 /* Direct 7 bit */
#define R_SPARC_5 44 /* Direct 5 bit */
#define R_SPARC_6 45 /* Direct 6 bit */
@@ -1276,8 +1295,19 @@ typedef struct
#define R_SPARC_TLS_DTPOFF64 77
#define R_SPARC_TLS_TPOFF32 78
#define R_SPARC_TLS_TPOFF64 79
+#define R_SPARC_GOTDATA_HIX22 80
+#define R_SPARC_GOTDATA_LOX10 81
+#define R_SPARC_GOTDATA_OP_HIX22 82
+#define R_SPARC_GOTDATA_OP_LOX10 83
+#define R_SPARC_GOTDATA_OP 84
+#define R_SPARC_H34 85
+#define R_SPARC_SIZE32 86
+#define R_SPARC_SIZE64 87
+#define R_SPARC_GNU_VTINHERIT 250
+#define R_SPARC_GNU_VTENTRY 251
+#define R_SPARC_REV32 252
/* Keep this the last entry. */
-#define R_SPARC_NUM 80
+#define R_SPARC_NUM 253
/* For Sparc64, legal values for d_tag of Elf64_Dyn. */
@@ -2017,9 +2047,6 @@ typedef Elf32_Addr Elf32_Conflict;
#define R_PPC_GOT_DTPREL16_HI 93 /* half16* (sym+add)@got@dtprel@h */
#define R_PPC_GOT_DTPREL16_HA 94 /* half16* (sym+add)@got@dtprel@ha */
-/* Keep this the last entry. */
-#define R_PPC_NUM 95
-
/* The remaining relocs are from the Embedded ELF ABI, and are not
in the SVR4 ELF ABI. */
#define R_PPC_EMB_NADDR32 101
@@ -2047,11 +2074,14 @@ typedef Elf32_Addr Elf32_Conflict;
#define R_PPC_DIAB_RELSDA_HI 184 /* like EMB_RELSDA, but high 16 bit */
#define R_PPC_DIAB_RELSDA_HA 185 /* like EMB_RELSDA, adjusted high 16 */
+/* GNU extension to support local ifunc. */
+#define R_PPC_IRELATIVE 248
+
/* GNU relocs used in PIC code sequences. */
-#define R_PPC_REL16 249 /* word32 (sym-.) */
-#define R_PPC_REL16_LO 250 /* half16 (sym-.)@l */
-#define R_PPC_REL16_HI 251 /* half16 (sym-.)@h */
-#define R_PPC_REL16_HA 252 /* half16 (sym-.)@ha */
+#define R_PPC_REL16 249 /* half16 (sym+add-.) */
+#define R_PPC_REL16_LO 250 /* half16 (sym+add-.)@l */
+#define R_PPC_REL16_HI 251 /* half16 (sym+add-.)@h */
+#define R_PPC_REL16_HA 252 /* half16 (sym+add-.)@ha */
/* This is a phony reloc to handle any old fashioned TOC16 references
that may still be in object files. */
@@ -2173,8 +2203,13 @@ typedef Elf32_Addr Elf32_Conflict;
#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */
#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */
-/* Keep this the last entry. */
-#define R_PPC64_NUM 107
+/* GNU extension to support local ifunc. */
+#define R_PPC64_JMP_IREL 247
+#define R_PPC64_IRELATIVE 248
+#define R_PPC64_REL16 249 /* half16 (sym+add-.) */
+#define R_PPC64_REL16_LO 250 /* half16 (sym+add-.)@l */
+#define R_PPC64_REL16_HI 251 /* half16 (sym+add-.)@h */
+#define R_PPC64_REL16_HA 252 /* half16 (sym+add-.)@ha */
/* PowerPC64 specific values for the Dyn d_tag field. */
#define DT_PPC64_GLINK (DT_LOPROC + 0)
@@ -2186,42 +2221,62 @@ typedef Elf32_Addr Elf32_Conflict;
/* ARM specific declarations */
/* Processor specific flags for the ELF header e_flags field. */
-#define EF_ARM_RELEXEC 0x01
-#define EF_ARM_HASENTRY 0x02
-#define EF_ARM_INTERWORK 0x04
-#define EF_ARM_APCS_26 0x08
-#define EF_ARM_APCS_FLOAT 0x10
-#define EF_ARM_PIC 0x20
-#define EF_ARM_ALIGN8 0x40 /* 8-bit structure alignment is in use */
-#define EF_ARM_NEW_ABI 0x80
-#define EF_ARM_OLD_ABI 0x100
+#define EF_ARM_RELEXEC 0x01
+#define EF_ARM_HASENTRY 0x02
+#define EF_ARM_INTERWORK 0x04
+#define EF_ARM_APCS_26 0x08
+#define EF_ARM_APCS_FLOAT 0x10
+#define EF_ARM_PIC 0x20
+#define EF_ARM_ALIGN8 0x40 /* 8-bit structure alignment is in use */
+#define EF_ARM_NEW_ABI 0x80
+#define EF_ARM_OLD_ABI 0x100
+#define EF_ARM_SOFT_FLOAT 0x200
+#define EF_ARM_VFP_FLOAT 0x400
+#define EF_ARM_MAVERICK_FLOAT 0x800
+
/* Other constants defined in the ARM ELF spec. version B-01. */
/* NB. These conflict with values defined above. */
#define EF_ARM_SYMSARESORTED 0x04
-#define EF_ARM_DYNSYMSUSESEGIDX 0x08
+#define EF_ARM_DYNSYMSUSESEGIDX 0x08
#define EF_ARM_MAPSYMSFIRST 0x10
#define EF_ARM_EABIMASK 0XFF000000
-#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
-#define EF_ARM_EABI_UNKNOWN 0x00000000
-#define EF_ARM_EABI_VER1 0x01000000
-#define EF_ARM_EABI_VER2 0x02000000
+/* Constants defined in AAELF. */
+#define EF_ARM_BE8 0x00800000
+#define EF_ARM_LE8 0x00400000
+
+#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
+#define EF_ARM_EABI_UNKNOWN 0x00000000
+#define EF_ARM_EABI_VER1 0x01000000
+#define EF_ARM_EABI_VER2 0x02000000
+#define EF_ARM_EABI_VER3 0x03000000
+#define EF_ARM_EABI_VER4 0x04000000
+#define EF_ARM_EABI_VER5 0x05000000
-/* Additional symbol types for Thumb */
-#define STT_ARM_TFUNC 0xd
+/* Additional symbol types for Thumb. */
+#define STT_ARM_TFUNC STT_LOPROC /* A Thumb function. */
+#define STT_ARM_16BIT STT_HIPROC /* A Thumb label. */
/* ARM-specific values for sh_flags */
-#define SHF_ARM_ENTRYSECT 0x10000000 /* Section contains an entry point */
-#define SHF_ARM_COMDEF 0x80000000 /* Section may be multiply defined
- in the input to a link step */
+#define SHF_ARM_ENTRYSECT 0x10000000 /* Section contains an entry point */
+#define SHF_ARM_COMDEF 0x80000000 /* Section may be multiply defined
+ in the input to a link step. */
/* ARM-specific program header flags */
-#define PF_ARM_SB 0x10000000 /* Segment contains the location
- addressed by the static base */
+#define PF_ARM_SB 0x10000000 /* Segment contains the location
+ addressed by the static base. */
+#define PF_ARM_PI 0x20000000 /* Position-independent segment. */
+#define PF_ARM_ABS 0x40000000 /* Absolute segment. */
/* Processor specific values for the Phdr p_type field. */
-#define PT_ARM_EXIDX 0x70000001 /* .ARM.exidx segment */
+#define PT_ARM_EXIDX (PT_LOPROC + 1) /* ARM unwind segment. */
+
+/* Processor specific values for the Shdr sh_type field. */
+#define SHT_ARM_EXIDX (SHT_LOPROC + 1) /* ARM unwind section. */
+#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) /* Preemption details. */
+#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) /* ARM attributes section. */
+
/* ARM relocs. */
@@ -2438,6 +2493,12 @@ typedef Elf32_Addr Elf32_Conflict;
/* Keep this the last entry. */
#define R_SH_NUM 256
+/* S/390 specific definitions. */
+
+/* Valid values for the e_flags field. */
+
+#define EF_S390_HIGH_GPRS 0x00000001 /* High GPRs kernel facility needed. */
+
/* Additional s390 relocs */
#define R_390_NONE 0 /* No reloc. */
@@ -2586,8 +2647,9 @@ typedef Elf32_Addr Elf32_Conflict;
#define R_X86_64_TLSDESC_CALL 35 /* Marker for call through TLS
descriptor. */
#define R_X86_64_TLSDESC 36 /* TLS descriptor. */
+#define R_X86_64_IRELATIVE 37 /* Adjust indirectly by program base */
-#define R_X86_64_NUM 37
+#define R_X86_64_NUM 38
/* AM33 relocations. */
diff --git a/elf/ifuncdep1.c b/elf/ifuncdep1.c
new file mode 100644
index 0000000000..77d663dcec
--- /dev/null
+++ b/elf/ifuncdep1.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols without -fPIC. */
+
+#include "ifuncmod1.c"
diff --git a/elf/ifuncdep1pic.c b/elf/ifuncdep1pic.c
new file mode 100644
index 0000000000..b6381e4868
--- /dev/null
+++ b/elf/ifuncdep1pic.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -fPIC. */
+
+#include "ifuncmod1.c"
diff --git a/elf/ifuncdep2.c b/elf/ifuncdep2.c
new file mode 100644
index 0000000000..758bae1932
--- /dev/null
+++ b/elf/ifuncdep2.c
@@ -0,0 +1,50 @@
+/* Test 3 STT_GNU_IFUNC symbols. */
+
+#include "ifunc-sel.h"
+
+int global __attribute__ ((visibility ("protected"))) = -1;
+
+static int
+one (void)
+{
+ return 1;
+}
+
+static int
+minus_one (void)
+{
+ return -1;
+}
+
+static int
+zero (void)
+{
+ return 0;
+}
+
+void * foo1_ifunc (void) __asm__ ("foo1");
+__asm__(".type foo1, %gnu_indirect_function");
+
+void *
+foo1_ifunc (void)
+{
+ return ifunc_sel (one, minus_one, zero);
+}
+
+void * foo2_ifunc (void) __asm__ ("foo2");
+__asm__(".type foo2, %gnu_indirect_function");
+
+void *
+foo2_ifunc (void)
+{
+ return ifunc_sel (minus_one, one, zero);
+}
+
+void * foo3_ifunc (void) __asm__ ("foo3");
+__asm__(".type foo3, %gnu_indirect_function");
+
+void *
+foo3_ifunc (void)
+{
+ return ifunc_sel (one, zero, minus_one);
+}
diff --git a/elf/ifuncdep2pic.c b/elf/ifuncdep2pic.c
new file mode 100644
index 0000000000..a84253dbc4
--- /dev/null
+++ b/elf/ifuncdep2pic.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -fPIC. */
+
+#include "ifuncdep2.c"
diff --git a/elf/ifuncdep5.c b/elf/ifuncdep5.c
new file mode 100644
index 0000000000..f26234336e
--- /dev/null
+++ b/elf/ifuncdep5.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols without -fPIC. */
+
+#include "ifuncmod5.c"
diff --git a/elf/ifuncdep5pic.c b/elf/ifuncdep5pic.c
new file mode 100644
index 0000000000..3edb3a07c6
--- /dev/null
+++ b/elf/ifuncdep5pic.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -fPIC. */
+
+#include "ifuncmod5.c"
diff --git a/elf/ifuncmain1.c b/elf/ifuncmain1.c
new file mode 100644
index 0000000000..cc1e5ec5ba
--- /dev/null
+++ b/elf/ifuncmain1.c
@@ -0,0 +1,64 @@
+/* Test STT_GNU_IFUNC symbols:
+
+ 1. Direct function call.
+ 2. Function pointer.
+ 3. Visibility without override.
+ */
+
+#include <stdlib.h>
+
+int ret_foo;
+int ret_foo_hidden;
+int ret_foo_protected;
+
+extern int foo (void);
+extern int foo_protected (void);
+
+#ifndef FOO_P
+typedef int (*foo_p) (void);
+#endif
+
+foo_p foo_ptr = foo;
+foo_p foo_procted_ptr = foo_protected;
+
+extern foo_p get_foo_p (void);
+extern foo_p get_foo_hidden_p (void);
+extern foo_p get_foo_protected_p (void);
+
+int
+main (void)
+{
+ foo_p p;
+
+ if (foo_ptr != foo)
+ abort ();
+ if (foo () != -1)
+ abort ();
+ if ((*foo_ptr) () != -1)
+ abort ();
+
+ if (foo_procted_ptr != foo_protected)
+ abort ();
+ if (foo_protected () != 0)
+ abort ();
+ if ((*foo_procted_ptr) () != 0)
+ abort ();
+
+ p = get_foo_p ();
+ if (p != foo)
+ abort ();
+ if (ret_foo != -1 || (*p) () != ret_foo)
+ abort ();
+
+ p = get_foo_hidden_p ();
+ if (ret_foo_hidden != 1 || (*p) () != ret_foo_hidden)
+ abort ();
+
+ p = get_foo_protected_p ();
+ if (p != foo_protected)
+ abort ();
+ if (ret_foo_protected != 0 || (*p) () != ret_foo_protected)
+ abort ();
+
+ return 0;
+}
diff --git a/elf/ifuncmain1pic.c b/elf/ifuncmain1pic.c
new file mode 100644
index 0000000000..db19dc9678
--- /dev/null
+++ b/elf/ifuncmain1pic.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -fPIC. */
+
+#include "ifuncmain1.c"
diff --git a/elf/ifuncmain1picstatic.c b/elf/ifuncmain1picstatic.c
new file mode 100644
index 0000000000..c937933029
--- /dev/null
+++ b/elf/ifuncmain1picstatic.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -fPIC and -static. */
+
+#include "ifuncmain1.c"
diff --git a/elf/ifuncmain1pie.c b/elf/ifuncmain1pie.c
new file mode 100644
index 0000000000..c16ef6dd09
--- /dev/null
+++ b/elf/ifuncmain1pie.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with PIE. */
+
+#include "ifuncmain1.c"
diff --git a/elf/ifuncmain1static.c b/elf/ifuncmain1static.c
new file mode 100644
index 0000000000..fdd1e09024
--- /dev/null
+++ b/elf/ifuncmain1static.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -static. */
+
+#include "ifuncmain1.c"
diff --git a/elf/ifuncmain1staticpic.c b/elf/ifuncmain1staticpic.c
new file mode 100644
index 0000000000..39e0cbb4b8
--- /dev/null
+++ b/elf/ifuncmain1staticpic.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -fPIC and no DSO. */
+
+#include "ifuncmain1.c"
diff --git a/elf/ifuncmain1staticpie.c b/elf/ifuncmain1staticpie.c
new file mode 100644
index 0000000000..4891114260
--- /dev/null
+++ b/elf/ifuncmain1staticpie.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with PIE and no DSO. */
+
+#include "ifuncmain1.c"
diff --git a/elf/ifuncmain1vis.c b/elf/ifuncmain1vis.c
new file mode 100644
index 0000000000..81cd12288e
--- /dev/null
+++ b/elf/ifuncmain1vis.c
@@ -0,0 +1,87 @@
+/* Test STT_GNU_IFUNC symbols:
+
+ 1. Direct function call.
+ 2. Function pointer.
+ 3. Visibility with override.
+ */
+
+#include <stdlib.h>
+
+int ret_foo;
+int ret_foo_hidden;
+int ret_foo_protected;
+
+extern int foo (void);
+extern int foo_protected (void);
+
+#ifndef FOO_P
+typedef int (*foo_p) (void);
+#endif
+
+foo_p foo_ptr = foo;
+foo_p foo_procted_ptr = foo_protected;
+
+extern foo_p get_foo_p (void);
+extern foo_p get_foo_hidden_p (void);
+extern foo_p get_foo_protected_p (void);
+
+int
+__attribute__ ((noinline))
+foo (void)
+{
+ return -30;
+}
+
+int
+__attribute__ ((noinline))
+foo_hidden (void)
+{
+ return -20;
+}
+
+int
+__attribute__ ((noinline))
+foo_protected (void)
+{
+ return -40;
+}
+
+int
+main (void)
+{
+ foo_p p;
+
+ if (foo_ptr != foo)
+ abort ();
+ if ((*foo_ptr) () != -30)
+ abort ();
+
+ if (foo_procted_ptr != foo_protected)
+ abort ();
+ if ((*foo_procted_ptr) () != -40)
+ abort ();
+
+ p = get_foo_p ();
+ if (p != foo)
+ abort ();
+ if (foo () != -30)
+ abort ();
+ if (ret_foo != -30 || (*p) () != ret_foo)
+ abort ();
+
+ p = get_foo_hidden_p ();
+ if (foo_hidden () != -20)
+ abort ();
+ if (ret_foo_hidden != 1 || (*p) () != ret_foo_hidden)
+ abort ();
+
+ p = get_foo_protected_p ();
+ if (p == foo_protected)
+ abort ();
+ if (foo_protected () != -40)
+ abort ();
+ if (ret_foo_protected != 0 || (*p) () != ret_foo_protected)
+ abort ();
+
+ return 0;
+}
diff --git a/elf/ifuncmain1vispic.c b/elf/ifuncmain1vispic.c
new file mode 100644
index 0000000000..f8c104d560
--- /dev/null
+++ b/elf/ifuncmain1vispic.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -fPIC. */
+
+#include "ifuncmain1vis.c"
diff --git a/elf/ifuncmain1vispie.c b/elf/ifuncmain1vispie.c
new file mode 100644
index 0000000000..ad06d2ba1c
--- /dev/null
+++ b/elf/ifuncmain1vispie.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with PIE. */
+
+#include "ifuncmain1vis.c"
diff --git a/elf/ifuncmain2.c b/elf/ifuncmain2.c
new file mode 100644
index 0000000000..db3ba56a02
--- /dev/null
+++ b/elf/ifuncmain2.c
@@ -0,0 +1,14 @@
+/* Test calling one STT_GNU_IFUNC function with 3 different
+ STT_GNU_IFUNC definitions. */
+
+#include <stdlib.h>
+
+extern int foo1 (void);
+
+int
+main (void)
+{
+ if (foo1 () != -1)
+ abort ();
+ return 0;
+}
diff --git a/elf/ifuncmain2pic.c b/elf/ifuncmain2pic.c
new file mode 100644
index 0000000000..0006012a96
--- /dev/null
+++ b/elf/ifuncmain2pic.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -fPIC. */
+
+#include "ifuncmain2.c"
diff --git a/elf/ifuncmain2picstatic.c b/elf/ifuncmain2picstatic.c
new file mode 100644
index 0000000000..3e89db536d
--- /dev/null
+++ b/elf/ifuncmain2picstatic.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -fPIC and -static. */
+
+#include "ifuncmain2.c"
diff --git a/elf/ifuncmain2static.c b/elf/ifuncmain2static.c
new file mode 100644
index 0000000000..6932ae8066
--- /dev/null
+++ b/elf/ifuncmain2static.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -static. */
+
+#include "ifuncmain2.c"
diff --git a/elf/ifuncmain3.c b/elf/ifuncmain3.c
new file mode 100644
index 0000000000..1574dd5cbe
--- /dev/null
+++ b/elf/ifuncmain3.c
@@ -0,0 +1,129 @@
+/* Test STT_GNU_IFUNC symbols with dlopen:
+
+ 1. Direct function call.
+ 2. Function pointer.
+ 3. Visibility with override.
+ */
+
+#include <dlfcn.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+typedef int (*foo_p) (void);
+
+int
+__attribute__ ((noinline))
+foo (void)
+{
+ return -30;
+}
+
+int
+__attribute__ ((noinline))
+foo_hidden (void)
+{
+ return -20;
+}
+
+int
+__attribute__ ((noinline))
+foo_protected (void)
+{
+ return -40;
+}
+
+int
+main (void)
+{
+ foo_p p;
+ foo_p (*f) (void);
+ int *ret;
+
+ void *h = dlopen ("ifuncmod3.so", RTLD_LAZY);
+ if (h == NULL)
+ {
+ printf ("cannot load: %s\n", dlerror ());
+ return 1;
+ }
+
+ p = dlsym (h, "foo");
+ if (p == NULL)
+ {
+ printf ("symbol not found: %s\n", dlerror ());
+ return 1;
+ }
+ if ((*p) () != -1)
+ abort ();
+
+ f = dlsym (h, "get_foo_p");
+ if (f == NULL)
+ {
+ printf ("symbol not found: %s\n", dlerror ());
+ return 1;
+ }
+
+ ret = dlsym (h, "ret_foo");
+ if (ret == NULL)
+ {
+ printf ("symbol not found: %s\n", dlerror ());
+ return 1;
+ }
+
+ p = (*f) ();
+ if (p != foo)
+ abort ();
+ if (foo () != -30)
+ abort ();
+ if (*ret != -30 || (*p) () != *ret)
+ abort ();
+
+ f = dlsym (h, "get_foo_hidden_p");
+ if (f == NULL)
+ {
+ printf ("symbol not found: %s\n", dlerror ());
+ return 1;
+ }
+
+ ret = dlsym (h, "ret_foo_hidden");
+ if (ret == NULL)
+ {
+ printf ("symbol not found: %s\n", dlerror ());
+ return 1;
+ }
+
+ p = (*f) ();
+ if (foo_hidden () != -20)
+ abort ();
+ if (*ret != 1 || (*p) () != *ret)
+ abort ();
+
+ f = dlsym (h, "get_foo_protected_p");
+ if (f == NULL)
+ {
+ printf ("symbol not found: %s\n", dlerror ());
+ return 1;
+ }
+
+ ret = dlsym (h, "ret_foo_protected");
+ if (ret == NULL)
+ {
+ printf ("symbol not found: %s\n", dlerror ());
+ return 1;
+ }
+
+ p = (*f) ();
+ if (p == foo_protected)
+ abort ();
+ if (foo_protected () != -40)
+ abort ();
+ if (*ret != 0 || (*p) () != *ret)
+ abort ();
+
+ if (dlclose (h) != 0)
+ {
+ printf ("cannot close: %s\n", dlerror ());
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/elf/ifuncmain4.c b/elf/ifuncmain4.c
new file mode 100644
index 0000000000..e55fee2eb3
--- /dev/null
+++ b/elf/ifuncmain4.c
@@ -0,0 +1,4 @@
+/* Test STT_GNU_IFUNC symbols in a single source file. */
+
+#include "ifuncmod1.c"
+#include "ifuncmain1.c"
diff --git a/elf/ifuncmain4picstatic.c b/elf/ifuncmain4picstatic.c
new file mode 100644
index 0000000000..977d7f97fc
--- /dev/null
+++ b/elf/ifuncmain4picstatic.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -fPIC and -static. */
+
+#include "ifuncmain4.c"
diff --git a/elf/ifuncmain4static.c b/elf/ifuncmain4static.c
new file mode 100644
index 0000000000..c399977013
--- /dev/null
+++ b/elf/ifuncmain4static.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -static. */
+
+#include "ifuncmain4.c"
diff --git a/elf/ifuncmain5.c b/elf/ifuncmain5.c
new file mode 100644
index 0000000000..f398085cb4
--- /dev/null
+++ b/elf/ifuncmain5.c
@@ -0,0 +1,38 @@
+/* Test STT_GNU_IFUNC symbols with dynamic function pointer only. */
+
+#include <stdlib.h>
+
+extern int foo (void);
+extern int foo_protected (void);
+
+typedef int (*foo_p) (void);
+
+foo_p
+__attribute__ ((noinline))
+get_foo (void)
+{
+ return foo;
+}
+
+foo_p
+__attribute__ ((noinline))
+get_foo_protected (void)
+{
+ return foo_protected;
+}
+
+int
+main (void)
+{
+ foo_p p;
+
+ p = get_foo ();
+ if ((*p) () != -1)
+ abort ();
+
+ p = get_foo_protected ();
+ if ((*p) () != 0)
+ abort ();
+
+ return 0;
+}
diff --git a/elf/ifuncmain5pic.c b/elf/ifuncmain5pic.c
new file mode 100644
index 0000000000..e9144fbb20
--- /dev/null
+++ b/elf/ifuncmain5pic.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -fPIC. */
+
+#include "ifuncmain5.c"
diff --git a/elf/ifuncmain5picstatic.c b/elf/ifuncmain5picstatic.c
new file mode 100644
index 0000000000..a0afe905d7
--- /dev/null
+++ b/elf/ifuncmain5picstatic.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -fPIC and -static. */
+
+#include "ifuncmain5.c"
diff --git a/elf/ifuncmain5pie.c b/elf/ifuncmain5pie.c
new file mode 100644
index 0000000000..669f31eeda
--- /dev/null
+++ b/elf/ifuncmain5pie.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with PIE. */
+
+#include "ifuncmain5.c"
diff --git a/elf/ifuncmain5static.c b/elf/ifuncmain5static.c
new file mode 100644
index 0000000000..72504404a5
--- /dev/null
+++ b/elf/ifuncmain5static.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -static. */
+
+#include "ifuncmain5.c"
diff --git a/elf/ifuncmain5staticpic.c b/elf/ifuncmain5staticpic.c
new file mode 100644
index 0000000000..9e8bac254f
--- /dev/null
+++ b/elf/ifuncmain5staticpic.c
@@ -0,0 +1,3 @@
+/* Test STT_GNU_IFUNC symbols with -fPIC and no DSO. */
+
+#include "ifuncmain5.c"
diff --git a/elf/ifuncmain6pie.c b/elf/ifuncmain6pie.c
new file mode 100644
index 0000000000..8478d4c408
--- /dev/null
+++ b/elf/ifuncmain6pie.c
@@ -0,0 +1,64 @@
+/* Test STT_GNU_IFUNC symbols in PIE:
+
+ 1. Direct function call.
+ 2. Function pointer.
+ 3. Reference from a shared library.
+ */
+
+#include <stdlib.h>
+#include "ifunc-sel.h"
+
+typedef int (*foo_p) (void);
+extern foo_p foo_ptr;
+
+static int
+one (void)
+{
+ return -30;
+}
+
+void * foo_ifunc (void) __asm__ ("foo");
+__asm__(".type foo, %gnu_indirect_function");
+
+void *
+foo_ifunc (void)
+{
+ return ifunc_one (one);
+}
+
+extern int foo (void);
+extern foo_p get_foo (void);
+extern foo_p get_foo_p (void);
+
+foo_p my_foo_ptr = foo;
+
+int
+main (void)
+{
+ foo_p p;
+
+ p = get_foo ();
+ if (p != foo)
+ abort ();
+ if ((*p) () != -30)
+ abort ();
+
+ p = get_foo_p ();
+ if (p != foo)
+ abort ();
+ if ((*p) () != -30)
+ abort ();
+
+ if (foo_ptr != foo)
+ abort ();
+ if (my_foo_ptr != foo)
+ abort ();
+ if ((*foo_ptr) () != -30)
+ abort ();
+ if ((*my_foo_ptr) () != -30)
+ abort ();
+ if (foo () != -30)
+ abort ();
+
+ return 0;
+}
diff --git a/elf/ifuncmain7.c b/elf/ifuncmain7.c
new file mode 100644
index 0000000000..617a596d5e
--- /dev/null
+++ b/elf/ifuncmain7.c
@@ -0,0 +1,71 @@
+/* Test local STT_GNU_IFUNC symbols:
+
+ 1. Direct function call.
+ 2. Function pointer.
+ */
+
+#include <stdlib.h>
+#include "ifunc-sel.h"
+
+extern int foo (void);
+
+static int
+one (void)
+{
+ return -30;
+}
+
+static void * foo_ifunc (void) __asm__ ("foo");
+__asm__(".type foo, %gnu_indirect_function");
+
+static void *
+__attribute__ ((used))
+foo_ifunc (void)
+{
+ return ifunc_one (one);
+}
+
+typedef int (*foo_p) (void);
+
+foo_p foo_ptr = foo;
+
+foo_p
+__attribute__ ((noinline))
+get_foo_p (void)
+{
+ return foo_ptr;
+}
+
+foo_p
+__attribute__ ((noinline))
+get_foo (void)
+{
+ return foo;
+}
+
+int
+main (void)
+{
+ foo_p p;
+
+ p = get_foo ();
+ if (p != foo)
+ abort ();
+ if ((*p) () != -30)
+ abort ();
+
+ p = get_foo_p ();
+ if (p != foo)
+ abort ();
+ if ((*p) () != -30)
+ abort ();
+
+ if (foo_ptr != foo)
+ abort ();
+ if ((*foo_ptr) () != -30)
+ abort ();
+ if (foo () != -30)
+ abort ();
+
+ return 0;
+}
diff --git a/elf/ifuncmain7pic.c b/elf/ifuncmain7pic.c
new file mode 100644
index 0000000000..fc37bf4469
--- /dev/null
+++ b/elf/ifuncmain7pic.c
@@ -0,0 +1,7 @@
+/* Test local STT_GNU_IFUNC symbols with -fPIC:
+
+ 1. Direct function call.
+ 2. Function pointer.
+ */
+
+#include "ifuncmain7.c"
diff --git a/elf/ifuncmain7picstatic.c b/elf/ifuncmain7picstatic.c
new file mode 100644
index 0000000000..baf8934b95
--- /dev/null
+++ b/elf/ifuncmain7picstatic.c
@@ -0,0 +1,7 @@
+/* Test local STT_GNU_IFUNC symbols with -fPIC and -static:
+
+ 1. Direct function call.
+ 2. Function pointer.
+ */
+
+#include "ifuncmain7.c"
diff --git a/elf/ifuncmain7pie.c b/elf/ifuncmain7pie.c
new file mode 100644
index 0000000000..254d453f1e
--- /dev/null
+++ b/elf/ifuncmain7pie.c
@@ -0,0 +1,7 @@
+/* Test local STT_GNU_IFUNC symbols with PIE:
+
+ 1. Direct function call.
+ 2. Function pointer.
+ */
+
+#include "ifuncmain7.c"
diff --git a/elf/ifuncmain7static.c b/elf/ifuncmain7static.c
new file mode 100644
index 0000000000..e470d570ef
--- /dev/null
+++ b/elf/ifuncmain7static.c
@@ -0,0 +1,7 @@
+/* Test local STT_GNU_IFUNC symbols with -static:
+
+ 1. Direct function call.
+ 2. Function pointer.
+ */
+
+#include "ifuncmain7.c"
diff --git a/elf/ifuncmod1.c b/elf/ifuncmod1.c
new file mode 100644
index 0000000000..2b8195ce55
--- /dev/null
+++ b/elf/ifuncmod1.c
@@ -0,0 +1,91 @@
+/* Test STT_GNU_IFUNC symbols:
+
+ 1. Direct function call.
+ 2. Function pointer.
+ 3. Visibility.
+ */
+#include "ifunc-sel.h"
+
+int global __attribute__ ((visibility ("protected"))) = -1;
+
+static int
+one (void)
+{
+ return 1;
+}
+
+static int
+minus_one (void)
+{
+ return -1;
+}
+
+static int
+zero (void)
+{
+ return 0;
+}
+
+void * foo_ifunc (void) __asm__ ("foo");
+__asm__(".type foo, %gnu_indirect_function");
+
+void *
+foo_ifunc (void)
+{
+ return ifunc_sel (one, minus_one, zero);
+}
+
+void * foo_hidden_ifunc (void) __asm__ ("foo_hidden");
+__asm__(".type foo_hidden, %gnu_indirect_function");
+
+void *
+foo_hidden_ifunc (void)
+{
+ return ifunc_sel (minus_one, one, zero);
+}
+
+void * foo_protected_ifunc (void) __asm__ ("foo_protected");
+__asm__(".type foo_protected, %gnu_indirect_function");
+
+void *
+foo_protected_ifunc (void)
+{
+ return ifunc_sel (one, zero, minus_one);
+}
+
+/* Test hidden indirect function. */
+__asm__(".hidden foo_hidden");
+
+/* Test protected indirect function. */
+__asm__(".protected foo_protected");
+
+extern int foo (void);
+extern int foo_hidden (void);
+extern int foo_protected (void);
+extern int ret_foo;
+extern int ret_foo_hidden;
+extern int ret_foo_protected;
+
+#define FOO_P
+typedef int (*foo_p) (void);
+
+foo_p
+get_foo_p (void)
+{
+ ret_foo = foo ();
+ return foo;
+}
+
+foo_p
+get_foo_hidden_p (void)
+{
+ ret_foo_hidden = foo_hidden ();
+ return foo_hidden;
+}
+
+foo_p
+get_foo_protected_p (void)
+{
+ ret_foo_protected = foo_protected ();
+ return foo_protected;
+}
diff --git a/elf/ifuncmod3.c b/elf/ifuncmod3.c
new file mode 100644
index 0000000000..ca2d962600
--- /dev/null
+++ b/elf/ifuncmod3.c
@@ -0,0 +1,7 @@
+/* Test STT_GNU_IFUNC symbols with dlopen. */
+
+#include "ifuncmod1.c"
+
+int ret_foo;
+int ret_foo_hidden;
+int ret_foo_protected;
diff --git a/elf/ifuncmod5.c b/elf/ifuncmod5.c
new file mode 100644
index 0000000000..9a08e8cf53
--- /dev/null
+++ b/elf/ifuncmod5.c
@@ -0,0 +1,55 @@
+/* Test STT_GNU_IFUNC symbols without direct function call. */
+#include "ifunc-sel.h"
+
+int global __attribute__ ((visibility ("protected"))) = -1;
+
+static int
+one (void)
+{
+ return 1;
+}
+
+static int
+minus_one (void)
+{
+ return -1;
+}
+
+static int
+zero (void)
+{
+ return 0;
+}
+
+void * foo_ifunc (void) __asm__ ("foo");
+__asm__(".type foo, %gnu_indirect_function");
+
+void *
+foo_ifunc (void)
+{
+ return ifunc_sel (one, minus_one, zero);
+}
+
+void * foo_hidden_ifunc (void) __asm__ ("foo_hidden");
+__asm__(".type foo_hidden, %gnu_indirect_function");
+
+void *
+foo_hidden_ifunc (void)
+{
+ return ifunc_sel (minus_one, one, zero);
+}
+
+void * foo_protected_ifunc (void) __asm__ ("foo_protected");
+__asm__(".type foo_protected, %gnu_indirect_function");
+
+void *
+foo_protected_ifunc (void)
+{
+ return ifunc_sel (one, zero, minus_one);
+}
+
+/* Test hidden indirect function. */
+__asm__(".hidden foo_hidden");
+
+/* Test protected indirect function. */
+__asm__(".protected foo_protected");
diff --git a/elf/ifuncmod6.c b/elf/ifuncmod6.c
new file mode 100644
index 0000000000..2e16c1d06d
--- /dev/null
+++ b/elf/ifuncmod6.c
@@ -0,0 +1,19 @@
+/* Test STT_GNU_IFUNC symbol reference in a shared library. */
+
+extern int foo (void);
+
+typedef int (*foo_p) (void);
+
+foo_p foo_ptr = foo;
+
+foo_p
+get_foo_p (void)
+{
+ return foo_ptr;
+}
+
+foo_p
+get_foo (void)
+{
+ return foo;
+}
diff --git a/elf/ldconfig.c b/elf/ldconfig.c
index e4dfdf5036..78a0f0c2a8 100644
--- a/elf/ldconfig.c
+++ b/elf/ldconfig.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1999.
@@ -132,6 +132,9 @@ static void print_version (FILE *stream, struct argp_state *state);
void (*argp_program_version_hook) (FILE *, struct argp_state *)
= print_version;
+/* 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[] =
{
@@ -161,7 +164,7 @@ static error_t parse_opt (int key, char *arg, struct argp_state *state);
/* Data structure to communicate with argp functions. */
static struct argp argp =
{
- options, parse_opt, NULL, doc, NULL, NULL, NULL
+ options, parse_opt, NULL, doc, NULL, more_help, NULL
};
/* Check if string corresponds to an important hardware capability or
@@ -288,6 +291,23 @@ parse_opt (int key, char *arg, struct argp_state *state)
return 0;
}
+/* Print bug-reporting information in the help message. */
+static char *
+more_help (int key, const char *text, void *input)
+{
+ switch (key)
+ {
+ case ARGP_KEY_HELP_EXTRA:
+ /* We print some extra information. */
+ return strdup (gettext ("\
+For bug reporting instructions, please see:\n\
+<http://www.gnu.org/software/libc/bugs.html>.\n"));
+ default:
+ break;
+ }
+ return (char *) text;
+}
+
/* Print the version information. */
static void
print_version (FILE *stream, struct argp_state *state)
@@ -297,7 +317,7 @@ print_version (FILE *stream, struct argp_state *state)
Copyright (C) %s Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2008");
+"), "2009");
fprintf (stream, gettext ("Written by %s.\n"),
"Andreas Jaeger");
}
diff --git a/elf/ldd.bash.in b/elf/ldd.bash.in
index 7cf0747d33..1bbefe2ff0 100644
--- a/elf/ldd.bash.in
+++ b/elf/ldd.bash.in
@@ -1,5 +1,5 @@
#! @BASH@
-# Copyright (C) 1996-2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 1996-2008, 2009 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
@@ -39,7 +39,7 @@ while test $# -gt 0; do
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.
-" "2008"
+" "2009"
printf $"Written by %s and %s.
" "Roland McGrath" "Ulrich Drepper"
exit 0
@@ -52,8 +52,10 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-r, --function-relocs process data and function relocations
-u, --unused print unused direct dependencies
-v, --verbose print all information
-For bug reporting instructions, please see:
-<http://www.gnu.org/software/libc/bugs.html>."
+"
+ echo $"For bug reporting instructions, please see:
+<http://www.gnu.org/software/libc/bugs.html>.
+"
exit 0
;;
-d | --d | --da | --dat | --data | --data- | --data-r | --data-re | \
diff --git a/elf/rtld.c b/elf/rtld.c
index 46bece7fa3..3afb997f85 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -1,5 +1,5 @@
/* Run time dynamic linker.
- Copyright (C) 1995-2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1995-2006, 2007, 2008, 2009, 2010 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
@@ -24,7 +24,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-#include <sys/mman.h> /* Check if MAP_ANON is defined. */
+#include <sys/mman.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <ldsodefs.h>
@@ -125,8 +125,14 @@ struct rtld_global _rtld_global =
/* Default presumption without further information is executable stack. */
._dl_stack_flags = PF_R|PF_W|PF_X,
#ifdef _LIBC_REENTRANT
- ._dl_load_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER
+ ._dl_load_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER,
#endif
+ ._dl_nns = 1,
+ ._dl_ns =
+ {
+ [LM_ID_BASE] = { ._ns_unique_sym_table
+ = { .lock = _RTLD_LOCK_RECURSIVE_INITIALIZER } }
+ }
};
/* If we would use strong_alias here the compiler would see a
non-hidden definition. This would undo the effect of the previous
@@ -176,7 +182,7 @@ extern struct rtld_global_ro _rtld_local_ro
static void dl_main (const ElfW(Phdr) *phdr, ElfW(Word) phnum,
- ElfW(Addr) *user_entry);
+ ElfW(Addr) *user_entry, ElfW(auxv_t) *auxv);
/* These two variables cannot be moved into .data.rel.ro. */
static struct libname_list _dl_rtld_libname;
@@ -574,7 +580,7 @@ _dl_start (void *arg)
struct relocate_args
{
struct link_map *l;
- int lazy;
+ int reloc_mode;
};
struct map_args
@@ -613,7 +619,7 @@ relocate_doit (void *a)
{
struct relocate_args *args = (struct relocate_args *) a;
- _dl_relocate_object (args->l, args->l->l_scope, args->lazy, 0);
+ _dl_relocate_object (args->l, args->l->l_scope, args->reloc_mode, 0);
}
static void
@@ -841,7 +847,7 @@ static void
security_init (void)
{
/* Set up the stack checker's canary. */
- uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard ();
+ uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random);
#ifdef THREAD_SET_STACK_GUARD
THREAD_SET_STACK_GUARD (stack_chk_guard);
#else
@@ -851,18 +857,18 @@ security_init (void)
/* Set up the pointer guard as well, if necessary. */
if (GLRO(dl_pointer_guard))
{
- // XXX If it is cheap, we should use a separate value.
- uintptr_t pointer_chk_guard = stack_chk_guard;
-#ifndef HP_TIMING_NONAVAIL
- hp_timing_t now;
- HP_TIMING_NOW (now);
- pointer_chk_guard ^= now;
-#endif
+ uintptr_t pointer_chk_guard = _dl_setup_pointer_guard (_dl_random,
+ stack_chk_guard);
#ifdef THREAD_SET_POINTER_GUARD
THREAD_SET_POINTER_GUARD (pointer_chk_guard);
#endif
__pointer_chk_guard_local = pointer_chk_guard;
}
+
+ /* We do not need the _dl_random value anymore. The less
+ information we leave behind, the better, so clear the
+ variable. */
+ _dl_random = NULL;
}
@@ -876,7 +882,8 @@ static int version_info attribute_relro;
static void
dl_main (const ElfW(Phdr) *phdr,
ElfW(Word) phnum,
- ElfW(Addr) *user_entry)
+ ElfW(Addr) *user_entry,
+ ElfW(auxv_t) *auxv)
{
const ElfW(Phdr) *ph;
enum mode mode;
@@ -921,6 +928,8 @@ dl_main (const ElfW(Phdr) *phdr,
if (*user_entry == (ElfW(Addr)) ENTRY_POINT)
{
+ ElfW(auxv_t) *av;
+
/* Ho ho. We are not the program interpreter! We are the program
itself! This means someone ran ld.so as a command. Well, that
might be convenient to do sometimes. We support it by
@@ -1007,11 +1016,12 @@ of this helper program; chances are you did not intend to run this program.\n\
\n\
--list list all dependencies and how they are resolved\n\
--verify verify that given object really is a dynamically linked\n\
- object we can handle\n\
+ object we can handle\n\
--library-path PATH use given PATH instead of content of the environment\n\
- variable LD_LIBRARY_PATH\n\
+ variable LD_LIBRARY_PATH\n\
--inhibit-rpath LIST ignore RUNPATH and RPATH information in object names\n\
- in LIST\n");
+ in LIST\n\
+ --audit LIST use objects named in LIST as auditors\n");
++_dl_skip_args;
--_dl_argc;
@@ -1075,6 +1085,22 @@ of this helper program; chances are you did not intend to run this program.\n\
makes sense to free the old string first. */
main_map->l_name = (char *) "";
*user_entry = main_map->l_entry;
+
+ /* Adjust the on-stack auxiliary vector so that it looks like the
+ binary was executed directly. */
+ for (av = auxv; av->a_type != AT_NULL; av++)
+ switch (av->a_type)
+ {
+ case AT_PHDR:
+ av->a_un.a_val = phdr;
+ break;
+ case AT_PHNUM:
+ av->a_un.a_val = phnum;
+ break;
+ case AT_ENTRY:
+ av->a_un.a_val = *user_entry;
+ break;
+ }
}
else
{
@@ -1781,12 +1807,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
for (i = main_map->l_searchlist.r_nlist; i > 0; )
main_map->l_searchlist.r_list[--i]->l_global = 1;
-#ifndef MAP_ANON
- /* We are done mapping things, so close the zero-fill descriptor. */
- __close (_dl_zerofd);
- _dl_zerofd = -1;
-#endif
-
/* Remove _dl_rtld_map from the chain. */
GL(dl_rtld_map).l_prev->l_next = GL(dl_rtld_map).l_next;
if (GL(dl_rtld_map).l_next != NULL)
@@ -1908,7 +1928,9 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
struct link_map *l = main_map;
/* Relocate the main executable. */
- struct relocate_args args = { .l = l, .lazy = GLRO(dl_lazy) };
+ struct relocate_args args = { .l = l,
+ .reloc_mode = (GLRO(dl_lazy)
+ ? RTLD_LAZY : 0) };
_dl_receive_error (print_unresolved, relocate_doit, &args);
/* This loop depends on the dependencies of the executable to
@@ -1985,7 +2007,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
struct relocate_args args;
struct link_map *l;
- args.lazy = GLRO(dl_lazy);
+ args.reloc_mode = GLRO(dl_lazy) ? RTLD_LAZY : 0;
l = main_map;
while (l->l_next != NULL)
@@ -2010,7 +2032,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
_dl_relocate_object (&GL(dl_rtld_map),
main_map->l_scope, 0, 0);
}
- }
+ }
#define VERNEEDTAG (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (DT_VERNEED))
if (version_info)
{
@@ -2183,8 +2205,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
if (l->l_tls_blocksize != 0 && tls_init_tp_called)
_dl_add_to_slotinfo (l);
}
-
- _dl_sysdep_start_cleanup ();
}
else
{
@@ -2225,7 +2245,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
}
if (l != &GL(dl_rtld_map))
- _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy),
+ _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0,
consider_profiling);
/* Add object to slot information data if necessasy. */
@@ -2239,13 +2259,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
HP_TIMING_DIFF (relocate_time, start, stop);
- /* Do any necessary cleanups for the startup OS interface code.
- We do these now so that no calls are made after rtld re-relocation
- which might be resolved to different functions than we expect.
- We cannot do this before relocating the other objects because
- _dl_relocate_object might need to call `mprotect' for DT_TEXTREL. */
- _dl_sysdep_start_cleanup ();
-
/* Now enable profiling if needed. Like the previous call,
this has to go here because the calls it makes should use the
rtld versions of the functions (particularly calloc()), but it
@@ -2301,6 +2314,13 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
HP_TIMING_ACCUM_NT (relocate_time, add);
}
+ /* Do any necessary cleanups for the startup OS interface code.
+ We do these now so that no calls are made after rtld re-relocation
+ which might be resolved to different functions than we expect.
+ We cannot do this before relocating the other objects because
+ _dl_relocate_object might need to call `mprotect' for DT_TEXTREL. */
+ _dl_sysdep_start_cleanup ();
+
#ifdef SHARED
/* Auditing checkpoint: we have added all objects. */
if (__builtin_expect (GLRO(dl_naudit) > 0, 0))
@@ -2681,10 +2701,10 @@ process_envvars (enum mode *modep)
while (*nextp != '\0');
if (__access ("/etc/suid-debug", F_OK) != 0)
- {
+ {
unsetenv ("MALLOC_CHECK_");
GLRO(dl_debug_mask) = 0;
- }
+ }
if (mode != normal)
_exit (5);
@@ -2751,12 +2771,12 @@ print_statistics (hp_timing_t *rtld_total_timep)
}
*wp = '\0';
_dl_debug_printf ("\
- time needed for relocation: %s (%s%%)\n", buf, pbuf);
+ time needed for relocation: %s (%s%%)\n", buf, pbuf);
}
#endif
unsigned long int num_relative_relocations = 0;
- for (Lmid_t ns = 0; ns < DL_NNS; ++ns)
+ for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns)
{
if (GL(dl_ns)[ns]._ns_loaded == NULL)
continue;
@@ -2814,7 +2834,7 @@ print_statistics (hp_timing_t *rtld_total_timep)
}
*wp = '\0';
_dl_debug_printf ("\
- time needed to load objects: %s (%s%%)\n",
+ time needed to load objects: %s (%s%%)\n",
buf, pbuf);
}
#endif
diff --git a/elf/sln.c b/elf/sln.c
index 8e66510bb2..71707f5d30 100644
--- a/elf/sln.c
+++ b/elf/sln.c
@@ -1,5 +1,5 @@
/* `sln' program to create symbolic links between files.
- Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2001, 2009 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
@@ -16,9 +16,15 @@
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <error.h>
#include <errno.h>
+#include <libintl.h>
+#include <locale.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
@@ -28,19 +34,37 @@
#include <string.h>
#include <limits.h>
+#include "../version.h"
+
+#define PACKAGE _libc_intl_domainname
+
#if !defined S_ISDIR && defined S_IFDIR
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
static int makesymlink (const char *src, const char *dest);
static int makesymlinks (const char *file);
+static void usage (void);
int
main (int argc, char **argv)
{
+ /* Set locale via LC_ALL. */
+ setlocale (LC_ALL, "");
+
+ /* Set the text message domain. */
+ textdomain (PACKAGE);
+
switch (argc)
{
case 2:
+ if (strcmp (argv[1], "--version") == 0) {
+ printf ("sln (GNU libc) %s\n", VERSION);
+ return 0;
+ } else if (strcmp (argv[1], "--help") == 0) {
+ usage ();
+ return 0;
+ }
return makesymlinks (argv [1]);
break;
@@ -49,12 +73,20 @@ main (int argc, char **argv)
break;
default:
- printf ("Usage: %s src dest|file\n", argv [0]);
+ usage ();
return 1;
break;
}
}
+static void
+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);
+}
+
static int
makesymlinks (file)
const char *file;
@@ -75,7 +107,7 @@ makesymlinks (file)
fp = fopen (file, "r");
if (fp == NULL)
{
- fprintf (stderr, "%s: file open error: %m\n", file);
+ fprintf (stderr, _("%s: file open error: %m\n"), file);
return 1;
}
}
@@ -112,7 +144,7 @@ makesymlinks (file)
++cp;
if (*cp == '\0')
{
- fprintf (stderr, "No target in line %d\n", lineno);
+ fprintf (stderr, _("No target in line %d\n"), lineno);
ret = 1;
continue;
}
@@ -144,13 +176,13 @@ makesymlink (src, dest)
{
if (S_ISDIR (stats.st_mode))
{
- fprintf (stderr, "%s: destination must not be a directory\n",
+ fprintf (stderr, _("%s: destination must not be a directory\n"),
dest);
return 1;
}
else if (unlink (dest) && errno != ENOENT)
{
- fprintf (stderr, "%s: failed to remove the old destination\n",
+ fprintf (stderr, _("%s: failed to remove the old destination\n"),
dest);
return 1;
}
@@ -158,7 +190,7 @@ makesymlink (src, dest)
else if (errno != ENOENT)
{
error = strerror (errno);
- fprintf (stderr, "%s: invalid destination: %s\n", dest, error);
+ fprintf (stderr, _("%s: invalid destination: %s\n"), dest, error);
return -1;
}
@@ -173,7 +205,7 @@ makesymlink (src, dest)
{
error = strerror (errno);
unlink (dest);
- fprintf (stderr, "Invalid link from \"%s\" to \"%s\": %s\n",
+ fprintf (stderr, _("Invalid link from \"%s\" to \"%s\": %s\n"),
src, dest, error);
return 1;
}
@@ -182,7 +214,7 @@ makesymlink (src, dest)
else
{
error = strerror (errno);
- fprintf (stderr, "Invalid link from \"%s\" to \"%s\": %s\n",
+ fprintf (stderr, _("Invalid link from \"%s\" to \"%s\": %s\n"),
src, dest, error);
return 1;
}
diff --git a/elf/sprof.c b/elf/sprof.c
index ce66cf8cc7..96d854fb70 100644
--- a/elf/sprof.c
+++ b/elf/sprof.c
@@ -1,5 +1,5 @@
/* Read and display shared object profiling data.
- Copyright (C) 1997-2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1997-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -86,9 +86,9 @@ static const struct argp_option options[] =
};
/* Short description of program. */
-static const char doc[] = N_("Read and display shared object profiling data.\v\
-For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n");
+static const char doc[] = N_("Read and display shared object profiling data.");
+//For bug reporting instructions, please see:\n
+//<http://www.gnu.org/software/libc/bugs.html>.\n");
/* Strings for arguments in help texts. */
static const char args_doc[] = N_("SHOBJ [PROFDATA]");
@@ -96,10 +96,13 @@ static const char args_doc[] = N_("SHOBJ [PROFDATA]");
/* Prototype for option handler. */
static error_t parse_opt (int key, char *arg, struct argp_state *state);
+/* Function to print some extra text in the help message. */
+static char *more_help (int key, const char *text, void *input);
+
/* Data structure to communicate with argp functions. */
static struct argp argp =
{
- options, parse_opt, args_doc, doc
+ options, parse_opt, args_doc, doc, NULL, more_help
};
@@ -192,13 +195,24 @@ struct shobj
};
+struct real_gmon_hist_hdr
+{
+ char *low_pc;
+ char *high_pc;
+ int32_t hist_size;
+ int32_t prof_rate;
+ char dimen[15];
+ char dimen_abbrev;
+};
+
+
struct profdata
{
void *addr;
off_t size;
char *hist;
- struct gmon_hist_hdr *hist_hdr;
+ struct real_gmon_hist_hdr *hist_hdr;
uint16_t *kcount;
uint32_t narcs; /* Number of arcs in toset. */
struct here_cg_arc_record *data;
@@ -347,6 +361,23 @@ parse_opt (int key, char *arg, struct argp_state *state)
}
+static char *
+more_help (int key, const char *text, void *input)
+{
+ switch (key)
+ {
+ case ARGP_KEY_HELP_EXTRA:
+ /* We print some extra information. */
+ return strdup (gettext ("\
+For bug reporting instructions, please see:\n\
+<http://www.gnu.org/software/libc/bugs.html>.\n"));
+ default:
+ break;
+ }
+ return (char *) text;
+}
+
+
/* Print the version information. */
static void
print_version (FILE *stream, struct argp_state *state)
@@ -357,7 +388,7 @@ Copyright (C) %s Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
"),
- "2008");
+ "2009");
fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
}
@@ -720,8 +751,6 @@ load_profdata (const char *name, struct shobj *shobj)
int fd;
struct stat st;
void *addr;
- struct gmon_hdr gmon_hdr;
- struct gmon_hist_hdr hist_hdr;
uint32_t *narcsp;
size_t fromlimit;
struct here_cg_arc_record *data;
@@ -808,10 +837,10 @@ load_profdata (const char *name, struct shobj *shobj)
/* Pointer to data after the header. */
result->hist = (char *) ((struct gmon_hdr *) addr + 1);
- result->hist_hdr = (struct gmon_hist_hdr *) ((char *) result->hist
- + sizeof (uint32_t));
+ result->hist_hdr = (struct real_gmon_hist_hdr *) ((char *) result->hist
+ + sizeof (uint32_t));
result->kcount = (uint16_t *) ((char *) result->hist + sizeof (uint32_t)
- + sizeof (struct gmon_hist_hdr));
+ + sizeof (struct real_gmon_hist_hdr));
/* Compute pointer to array of the arc information. */
narcsp = (uint32_t *) ((char *) result->kcount + shobj->kcountsize
@@ -821,18 +850,46 @@ load_profdata (const char *name, struct shobj *shobj)
+ sizeof (uint32_t));
/* Create the gmon_hdr we expect or write. */
- memset (&gmon_hdr, '\0', sizeof (struct gmon_hdr));
+ struct real_gmon_hdr
+ {
+ char cookie[4];
+ int32_t version;
+ char spare[3 * 4];
+ } gmon_hdr;
+ if (sizeof (gmon_hdr) != sizeof (struct gmon_hdr)
+ || (offsetof (struct real_gmon_hdr, cookie)
+ != offsetof (struct gmon_hdr, cookie))
+ || (offsetof (struct real_gmon_hdr, version)
+ != offsetof (struct gmon_hdr, version)))
+ abort ();
+
memcpy (&gmon_hdr.cookie[0], GMON_MAGIC, sizeof (gmon_hdr.cookie));
- *(int32_t *) gmon_hdr.version = GMON_SHOBJ_VERSION;
+ gmon_hdr.version = GMON_SHOBJ_VERSION;
+ memset (gmon_hdr.spare, '\0', sizeof (gmon_hdr.spare));
/* Create the hist_hdr we expect or write. */
- *(char **) hist_hdr.low_pc = (char *) shobj->lowpc - shobj->map->l_addr;
- *(char **) hist_hdr.high_pc = (char *) shobj->highpc - shobj->map->l_addr;
+ struct real_gmon_hist_hdr hist_hdr;
+ if (sizeof (hist_hdr) != sizeof (struct gmon_hist_hdr)
+ || (offsetof (struct real_gmon_hist_hdr, low_pc)
+ != offsetof (struct gmon_hist_hdr, low_pc))
+ || (offsetof (struct real_gmon_hist_hdr, high_pc)
+ != offsetof (struct gmon_hist_hdr, high_pc))
+ || (offsetof (struct real_gmon_hist_hdr, hist_size)
+ != offsetof (struct gmon_hist_hdr, hist_size))
+ || (offsetof (struct real_gmon_hist_hdr, prof_rate)
+ != offsetof (struct gmon_hist_hdr, prof_rate))
+ || (offsetof (struct real_gmon_hist_hdr, dimen)
+ != offsetof (struct gmon_hist_hdr, dimen))
+ || (offsetof (struct real_gmon_hist_hdr, dimen_abbrev)
+ != offsetof (struct gmon_hist_hdr, dimen_abbrev)))
+ abort ();
+
+ hist_hdr.low_pc = (char *) shobj->lowpc - shobj->map->l_addr;
+ hist_hdr.high_pc = (char *) shobj->highpc - shobj->map->l_addr;
if (do_test)
- printf ("low_pc = %p\nhigh_pc = %p\n",
- *(char **) hist_hdr.low_pc, *(char **) hist_hdr.high_pc);
- *(int32_t *) hist_hdr.hist_size = shobj->kcountsize / sizeof (HISTCOUNTER);
- *(int32_t *) hist_hdr.prof_rate = __profile_frequency ();
+ printf ("low_pc = %p\nhigh_pc = %p\n", hist_hdr.low_pc, hist_hdr.high_pc);
+ hist_hdr.hist_size = shobj->kcountsize / sizeof (HISTCOUNTER);
+ hist_hdr.prof_rate = __profile_frequency ();
strncpy (hist_hdr.dimen, "seconds", sizeof (hist_hdr.dimen));
hist_hdr.dimen_abbrev = 's';
@@ -1260,7 +1317,7 @@ generate_flat_profile (struct profdata *profdata)
size_t n;
void *data = NULL;
- tick_unit = 1.0 / *(uint32_t *) profdata->hist_hdr->prof_rate;
+ tick_unit = 1.0 / profdata->hist_hdr->prof_rate;
printf ("Flat profile:\n\n"
"Each sample counts as %g %s.\n",
diff --git a/elf/tst-audit3.c b/elf/tst-audit3.c
new file mode 100644
index 0000000000..d00db9972b
--- /dev/null
+++ b/elf/tst-audit3.c
@@ -0,0 +1,20 @@
+/* Test case for x86-64 preserved registers in dynamic linker. */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <emmintrin.h>
+
+extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i,
+ __m128i, __m128i, __m128i, __m128i);
+int
+main (void)
+{
+ __m128i xmm = _mm_setzero_si128 ();
+ __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm);
+
+ if (memcmp (&xmm, &ret, sizeof (ret)))
+ abort ();
+
+ return 0;
+}
diff --git a/elf/tst-audit4.c b/elf/tst-audit4.c
new file mode 100644
index 0000000000..b17d4a61a7
--- /dev/null
+++ b/elf/tst-audit4.c
@@ -0,0 +1,35 @@
+/* Test case for x86-64 preserved registers in dynamic linker. */
+
+#ifdef __AVX__
+#include <stdlib.h>
+#include <string.h>
+#include <cpuid.h>
+#include <immintrin.h>
+
+extern __m256i audit_test (__m256i, __m256i, __m256i, __m256i,
+ __m256i, __m256i, __m256i, __m256i);
+int
+main (void)
+{
+ unsigned int eax, ebx, ecx, edx;
+
+ /* Run AVX test only if AVX is supported. */
+ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx)
+ && (ecx & bit_AVX))
+ {
+ __m256i ymm = _mm256_setzero_si256 ();
+ __m256i ret = audit_test (ymm, ymm, ymm, ymm, ymm, ymm, ymm, ymm);
+
+ ymm = _mm256_set1_epi32 (0x12349876);
+ if (memcmp (&ymm, &ret, sizeof (ret)))
+ abort ();
+ }
+ return 0;
+}
+#else
+int
+main (void)
+{
+ return 0;
+}
+#endif
diff --git a/elf/tst-audit5.c b/elf/tst-audit5.c
new file mode 100644
index 0000000000..0094fee61f
--- /dev/null
+++ b/elf/tst-audit5.c
@@ -0,0 +1,21 @@
+/* Test case for x86-64 preserved registers in dynamic linker. */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <emmintrin.h>
+
+extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i,
+ __m128i, __m128i, __m128i, __m128i);
+int
+main (void)
+{
+ __m128i xmm = _mm_setzero_si128 ();
+ __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm);
+
+ xmm = _mm_set1_epi32 (0x12349876);
+ if (memcmp (&xmm, &ret, sizeof (ret)))
+ abort ();
+
+ return 0;
+}
diff --git a/elf/tst-audit6.c b/elf/tst-audit6.c
new file mode 100644
index 0000000000..1f6dcb16e9
--- /dev/null
+++ b/elf/tst-audit6.c
@@ -0,0 +1,28 @@
+/* Test case for x86-64 preserved registers in dynamic linker. */
+
+#include <stdlib.h>
+#include <string.h>
+#include <cpuid.h>
+#include <emmintrin.h>
+
+extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i,
+ __m128i, __m128i, __m128i, __m128i);
+
+int
+main (void)
+{
+ unsigned int eax, ebx, ecx, edx;
+
+ /* Run AVX test only if AVX is supported. */
+ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx)
+ && (ecx & bit_AVX))
+ {
+ __m128i xmm = _mm_setzero_si128 ();
+ __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm);
+
+ xmm = _mm_set1_epi32 (0x98abcdef);
+ if (memcmp (&xmm, &ret, sizeof (ret)))
+ abort ();
+ }
+ return 0;
+}
diff --git a/elf/tst-audit7.c b/elf/tst-audit7.c
new file mode 100644
index 0000000000..1d2a7de439
--- /dev/null
+++ b/elf/tst-audit7.c
@@ -0,0 +1 @@
+#include "tst-audit6.c"
diff --git a/elf/tst-auditmod3a.c b/elf/tst-auditmod3a.c
new file mode 100644
index 0000000000..9514aba505
--- /dev/null
+++ b/elf/tst-auditmod3a.c
@@ -0,0 +1,24 @@
+/* Test case for x86-64 preserved registers in dynamic linker. */
+
+#include <stdlib.h>
+#include <string.h>
+#include <emmintrin.h>
+
+__m128i
+audit_test (__m128i x0, __m128i x1, __m128i x2, __m128i x3,
+ __m128i x4, __m128i x5, __m128i x6, __m128i x7)
+{
+ __m128i xmm = _mm_setzero_si128 ();
+
+ if (memcmp (&xmm, &x0, sizeof (xmm))
+ || memcmp (&xmm, &x1, sizeof (xmm))
+ || memcmp (&xmm, &x2, sizeof (xmm))
+ || memcmp (&xmm, &x3, sizeof (xmm))
+ || memcmp (&xmm, &x4, sizeof (xmm))
+ || memcmp (&xmm, &x5, sizeof (xmm))
+ || memcmp (&xmm, &x6, sizeof (xmm))
+ || memcmp (&xmm, &x7, sizeof (xmm)))
+ abort ();
+
+ return xmm;
+}
diff --git a/elf/tst-auditmod3b.c b/elf/tst-auditmod3b.c
new file mode 100644
index 0000000000..388ed6e49c
--- /dev/null
+++ b/elf/tst-auditmod3b.c
@@ -0,0 +1,156 @@
+/* Verify that changing xmm registers in audit library won't affect
+ function parameter passing/return. */
+
+#include <dlfcn.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <bits/wordsize.h>
+#include <gnu/lib-names.h>
+#include <emmintrin.h>
+
+unsigned int
+la_version (unsigned int v)
+{
+ setlinebuf (stdout);
+
+ printf ("version: %u\n", v);
+
+ char buf[20];
+ sprintf (buf, "%u", v);
+
+ return v;
+}
+
+void
+la_activity (uintptr_t *cookie, unsigned int flag)
+{
+ if (flag == LA_ACT_CONSISTENT)
+ printf ("activity: consistent\n");
+ else if (flag == LA_ACT_ADD)
+ printf ("activity: add\n");
+ else if (flag == LA_ACT_DELETE)
+ printf ("activity: delete\n");
+ else
+ printf ("activity: unknown activity %u\n", flag);
+}
+
+char *
+la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag)
+{
+ char buf[100];
+ const char *flagstr;
+ if (flag == LA_SER_ORIG)
+ flagstr = "LA_SET_ORIG";
+ else if (flag == LA_SER_LIBPATH)
+ flagstr = "LA_SER_LIBPATH";
+ else if (flag == LA_SER_RUNPATH)
+ flagstr = "LA_SER_RUNPATH";
+ else if (flag == LA_SER_CONFIG)
+ flagstr = "LA_SER_CONFIG";
+ else if (flag == LA_SER_DEFAULT)
+ flagstr = "LA_SER_DEFAULT";
+ else if (flag == LA_SER_SECURE)
+ flagstr = "LA_SER_SECURE";
+ else
+ {
+ sprintf (buf, "unknown flag %d", flag);
+ flagstr = buf;
+ }
+ printf ("objsearch: %s, %s\n", name, flagstr);
+
+ return (char *) name;
+}
+
+unsigned int
+la_objopen (struct link_map *l, Lmid_t lmid, uintptr_t *cookie)
+{
+ printf ("objopen: %ld, %s\n", lmid, l->l_name);
+
+ return 3;
+}
+
+void
+la_preinit (uintptr_t *cookie)
+{
+ printf ("preinit\n");
+}
+
+unsigned int
+la_objclose (uintptr_t *cookie)
+{
+ printf ("objclose\n");
+ return 0;
+}
+
+uintptr_t
+la_symbind32 (Elf32_Sym *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, unsigned int *flags, const char *symname)
+{
+ printf ("symbind32: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+ return sym->st_value;
+}
+
+uintptr_t
+la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, unsigned int *flags, const char *symname)
+{
+ printf ("symbind64: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+ return sym->st_value;
+}
+
+#define pltenter la_x86_64_gnu_pltenter
+#define pltexit la_x86_64_gnu_pltexit
+#define La_regs La_x86_64_regs
+#define La_retval La_x86_64_retval
+#define int_retval lrv_rax
+
+#include <tst-audit.h>
+
+ElfW(Addr)
+pltenter (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, La_regs *regs, unsigned int *flags,
+ const char *symname, long int *framesizep)
+{
+ printf ("pltenter: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+ __m128i xmm = _mm_set1_epi32 (-1);
+ asm volatile ("movdqa %0, %%xmm0" : : "x" (xmm) : "xmm0" );
+ asm volatile ("movdqa %0, %%xmm1" : : "x" (xmm) : "xmm1" );
+ asm volatile ("movdqa %0, %%xmm2" : : "x" (xmm) : "xmm2" );
+ asm volatile ("movdqa %0, %%xmm3" : : "x" (xmm) : "xmm3" );
+ asm volatile ("movdqa %0, %%xmm4" : : "x" (xmm) : "xmm4" );
+ asm volatile ("movdqa %0, %%xmm5" : : "x" (xmm) : "xmm5" );
+ asm volatile ("movdqa %0, %%xmm6" : : "x" (xmm) : "xmm6" );
+ asm volatile ("movdqa %0, %%xmm7" : : "x" (xmm) : "xmm7" );
+
+ return sym->st_value;
+}
+
+unsigned int
+pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, const La_regs *inregs, La_retval *outregs,
+ const char *symname)
+{
+ printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
+ symname, (long int) sym->st_value, ndx, outregs->int_retval);
+
+ __m128i xmm = _mm_set1_epi32 (-1);
+ asm volatile ("movdqa %0, %%xmm0" : : "x" (xmm) : "xmm0" );
+ asm volatile ("movdqa %0, %%xmm1" : : "x" (xmm) : "xmm1" );
+ asm volatile ("movdqa %0, %%xmm2" : : "x" (xmm) : "xmm2" );
+ asm volatile ("movdqa %0, %%xmm3" : : "x" (xmm) : "xmm3" );
+ asm volatile ("movdqa %0, %%xmm4" : : "x" (xmm) : "xmm4" );
+ asm volatile ("movdqa %0, %%xmm5" : : "x" (xmm) : "xmm5" );
+ asm volatile ("movdqa %0, %%xmm6" : : "x" (xmm) : "xmm6" );
+ asm volatile ("movdqa %0, %%xmm7" : : "x" (xmm) : "xmm7" );
+
+ return 0;
+}
diff --git a/elf/tst-auditmod4a.c b/elf/tst-auditmod4a.c
new file mode 100644
index 0000000000..c9c24c04a8
--- /dev/null
+++ b/elf/tst-auditmod4a.c
@@ -0,0 +1,48 @@
+/* Test case for x86-64 preserved registers in dynamic linker. */
+
+#ifdef __AVX__
+#include <stdlib.h>
+#include <string.h>
+#include <immintrin.h>
+
+__m256i
+audit_test (__m256i x0, __m256i x1, __m256i x2, __m256i x3,
+ __m256i x4, __m256i x5, __m256i x6, __m256i x7)
+{
+ __m256i ymm;
+
+ ymm = _mm256_set1_epi32 (1);
+ if (memcmp (&ymm, &x0, sizeof (ymm)))
+ abort ();
+
+ ymm = _mm256_set1_epi32 (2);
+ if (memcmp (&ymm, &x1, sizeof (ymm)))
+ abort ();
+
+ ymm = _mm256_set1_epi32 (3);
+ if (memcmp (&ymm, &x2, sizeof (ymm)))
+ abort ();
+
+ ymm = _mm256_set1_epi32 (4);
+ if (memcmp (&ymm, &x3, sizeof (ymm)))
+ abort ();
+
+ ymm = _mm256_set1_epi32 (5);
+ if (memcmp (&ymm, &x4, sizeof (ymm)))
+ abort ();
+
+ ymm = _mm256_set1_epi32 (6);
+ if (memcmp (&ymm, &x5, sizeof (ymm)))
+ abort ();
+
+ ymm = _mm256_set1_epi32 (7);
+ if (memcmp (&ymm, &x6, sizeof (ymm)))
+ abort ();
+
+ ymm = _mm256_set1_epi32 (8);
+ if (memcmp (&ymm, &x7, sizeof (ymm)))
+ abort ();
+
+ return _mm256_setzero_si256 ();
+}
+#endif
diff --git a/elf/tst-auditmod4b.c b/elf/tst-auditmod4b.c
new file mode 100644
index 0000000000..a6d3c6a6c5
--- /dev/null
+++ b/elf/tst-auditmod4b.c
@@ -0,0 +1,206 @@
+/* Verify that changing AVX registers in audit library won't affect
+ function parameter passing/return. */
+
+#include <dlfcn.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <bits/wordsize.h>
+#include <gnu/lib-names.h>
+
+unsigned int
+la_version (unsigned int v)
+{
+ setlinebuf (stdout);
+
+ printf ("version: %u\n", v);
+
+ char buf[20];
+ sprintf (buf, "%u", v);
+
+ return v;
+}
+
+void
+la_activity (uintptr_t *cookie, unsigned int flag)
+{
+ if (flag == LA_ACT_CONSISTENT)
+ printf ("activity: consistent\n");
+ else if (flag == LA_ACT_ADD)
+ printf ("activity: add\n");
+ else if (flag == LA_ACT_DELETE)
+ printf ("activity: delete\n");
+ else
+ printf ("activity: unknown activity %u\n", flag);
+}
+
+char *
+la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag)
+{
+ char buf[100];
+ const char *flagstr;
+ if (flag == LA_SER_ORIG)
+ flagstr = "LA_SET_ORIG";
+ else if (flag == LA_SER_LIBPATH)
+ flagstr = "LA_SER_LIBPATH";
+ else if (flag == LA_SER_RUNPATH)
+ flagstr = "LA_SER_RUNPATH";
+ else if (flag == LA_SER_CONFIG)
+ flagstr = "LA_SER_CONFIG";
+ else if (flag == LA_SER_DEFAULT)
+ flagstr = "LA_SER_DEFAULT";
+ else if (flag == LA_SER_SECURE)
+ flagstr = "LA_SER_SECURE";
+ else
+ {
+ sprintf (buf, "unknown flag %d", flag);
+ flagstr = buf;
+ }
+ printf ("objsearch: %s, %s\n", name, flagstr);
+
+ return (char *) name;
+}
+
+unsigned int
+la_objopen (struct link_map *l, Lmid_t lmid, uintptr_t *cookie)
+{
+ printf ("objopen: %ld, %s\n", lmid, l->l_name);
+
+ return 3;
+}
+
+void
+la_preinit (uintptr_t *cookie)
+{
+ printf ("preinit\n");
+}
+
+unsigned int
+la_objclose (uintptr_t *cookie)
+{
+ printf ("objclose\n");
+ return 0;
+}
+
+uintptr_t
+la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, unsigned int *flags, const char *symname)
+{
+ printf ("symbind64: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+ return sym->st_value;
+}
+
+#define pltenter la_x86_64_gnu_pltenter
+#define pltexit la_x86_64_gnu_pltexit
+#define La_regs La_x86_64_regs
+#define La_retval La_x86_64_retval
+#define int_retval lrv_rax
+
+#include <tst-audit.h>
+
+#ifdef __AVX__
+#include <immintrin.h>
+#include <cpuid.h>
+
+static int avx = -1;
+
+static int
+__attribute ((always_inline))
+check_avx (void)
+{
+ if (avx == -1)
+ {
+ unsigned int eax, ebx, ecx, edx;
+
+ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx)
+ && (ecx & bit_AVX))
+ avx = 1;
+ else
+ avx = 0;
+ }
+ return avx;
+}
+#else
+#include <emmintrin.h>
+#endif
+
+ElfW(Addr)
+pltenter (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, La_regs *regs, unsigned int *flags,
+ const char *symname, long int *framesizep)
+{
+ printf ("pltenter: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+#ifdef __AVX__
+ if (check_avx () && strcmp (symname, "audit_test") == 0)
+ {
+ __m256i zero = _mm256_setzero_si256 ();
+ if (memcmp (&regs->lr_vector[0], &zero, sizeof (zero))
+ || memcmp (&regs->lr_vector[1], &zero, sizeof (zero))
+ || memcmp (&regs->lr_vector[2], &zero, sizeof (zero))
+ || memcmp (&regs->lr_vector[3], &zero, sizeof (zero))
+ || memcmp (&regs->lr_vector[4], &zero, sizeof (zero))
+ || memcmp (&regs->lr_vector[5], &zero, sizeof (zero))
+ || memcmp (&regs->lr_vector[6], &zero, sizeof (zero))
+ || memcmp (&regs->lr_vector[7], &zero, sizeof (zero)))
+ abort ();
+
+ for (int i = 0; i < 8; i++)
+ regs->lr_vector[i].ymm[0]
+ = (La_x86_64_ymm) _mm256_set1_epi32 (i + 1);
+
+ __m256i ymm = _mm256_set1_epi32 (-1);
+ asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" );
+ asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" );
+ asm volatile ("vmovdqa %0, %%ymm2" : : "x" (ymm) : "xmm2" );
+ asm volatile ("vmovdqa %0, %%ymm3" : : "x" (ymm) : "xmm3" );
+ asm volatile ("vmovdqa %0, %%ymm4" : : "x" (ymm) : "xmm4" );
+ asm volatile ("vmovdqa %0, %%ymm5" : : "x" (ymm) : "xmm5" );
+ asm volatile ("vmovdqa %0, %%ymm6" : : "x" (ymm) : "xmm6" );
+ asm volatile ("vmovdqa %0, %%ymm7" : : "x" (ymm) : "xmm7" );
+
+ *framesizep = 1024;
+ }
+#endif
+
+ return sym->st_value;
+}
+
+unsigned int
+pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, const La_regs *inregs, La_retval *outregs,
+ const char *symname)
+{
+ printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
+ symname, (long int) sym->st_value, ndx, outregs->int_retval);
+
+#ifdef __AVX__
+ if (check_avx () && strcmp (symname, "audit_test") == 0)
+ {
+ __m256i zero = _mm256_setzero_si256 ();
+ if (memcmp (&outregs->lrv_vector0, &zero, sizeof (zero)))
+ abort ();
+
+ for (int i = 0; i < 8; i++)
+ {
+ __m256i ymm = _mm256_set1_epi32 (i + 1);
+ if (memcmp (&inregs->lr_vector[i], &ymm, sizeof (ymm)) != 0)
+ abort ();
+ }
+
+ outregs->lrv_vector0.ymm[0]
+ = (La_x86_64_ymm) _mm256_set1_epi32 (0x12349876);
+
+ __m256i ymm = _mm256_set1_epi32 (-1);
+ asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" );
+ asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" );
+ }
+#endif
+
+ return 0;
+}
diff --git a/elf/tst-auditmod5a.c b/elf/tst-auditmod5a.c
new file mode 100644
index 0000000000..8511a70747
--- /dev/null
+++ b/elf/tst-auditmod5a.c
@@ -0,0 +1,46 @@
+/* Test case for x86-64 preserved registers in dynamic linker. */
+
+#include <stdlib.h>
+#include <string.h>
+#include <emmintrin.h>
+
+__m128i
+audit_test (__m128i x0, __m128i x1, __m128i x2, __m128i x3,
+ __m128i x4, __m128i x5, __m128i x6, __m128i x7)
+{
+ __m128i xmm;
+
+ xmm = _mm_set1_epi32 (1);
+ if (memcmp (&xmm, &x0, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (2);
+ if (memcmp (&xmm, &x1, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (3);
+ if (memcmp (&xmm, &x2, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (4);
+ if (memcmp (&xmm, &x3, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (5);
+ if (memcmp (&xmm, &x4, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (6);
+ if (memcmp (&xmm, &x5, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (7);
+ if (memcmp (&xmm, &x6, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (8);
+ if (memcmp (&xmm, &x7, sizeof (xmm)))
+ abort ();
+
+ return _mm_setzero_si128 ();
+}
diff --git a/elf/tst-auditmod5b.c b/elf/tst-auditmod5b.c
new file mode 100644
index 0000000000..7e1e941126
--- /dev/null
+++ b/elf/tst-auditmod5b.c
@@ -0,0 +1,178 @@
+/* Verify that changing xmm registers in audit library won't affect
+ function parameter passing/return. */
+
+#include <dlfcn.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <bits/wordsize.h>
+#include <gnu/lib-names.h>
+#include <emmintrin.h>
+
+unsigned int
+la_version (unsigned int v)
+{
+ setlinebuf (stdout);
+
+ printf ("version: %u\n", v);
+
+ char buf[20];
+ sprintf (buf, "%u", v);
+
+ return v;
+}
+
+void
+la_activity (uintptr_t *cookie, unsigned int flag)
+{
+ if (flag == LA_ACT_CONSISTENT)
+ printf ("activity: consistent\n");
+ else if (flag == LA_ACT_ADD)
+ printf ("activity: add\n");
+ else if (flag == LA_ACT_DELETE)
+ printf ("activity: delete\n");
+ else
+ printf ("activity: unknown activity %u\n", flag);
+}
+
+char *
+la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag)
+{
+ char buf[100];
+ const char *flagstr;
+ if (flag == LA_SER_ORIG)
+ flagstr = "LA_SET_ORIG";
+ else if (flag == LA_SER_LIBPATH)
+ flagstr = "LA_SER_LIBPATH";
+ else if (flag == LA_SER_RUNPATH)
+ flagstr = "LA_SER_RUNPATH";
+ else if (flag == LA_SER_CONFIG)
+ flagstr = "LA_SER_CONFIG";
+ else if (flag == LA_SER_DEFAULT)
+ flagstr = "LA_SER_DEFAULT";
+ else if (flag == LA_SER_SECURE)
+ flagstr = "LA_SER_SECURE";
+ else
+ {
+ sprintf (buf, "unknown flag %d", flag);
+ flagstr = buf;
+ }
+ printf ("objsearch: %s, %s\n", name, flagstr);
+
+ return (char *) name;
+}
+
+unsigned int
+la_objopen (struct link_map *l, Lmid_t lmid, uintptr_t *cookie)
+{
+ printf ("objopen: %ld, %s\n", lmid, l->l_name);
+
+ return 3;
+}
+
+void
+la_preinit (uintptr_t *cookie)
+{
+ printf ("preinit\n");
+}
+
+unsigned int
+la_objclose (uintptr_t *cookie)
+{
+ printf ("objclose\n");
+ return 0;
+}
+
+uintptr_t
+la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, unsigned int *flags, const char *symname)
+{
+ printf ("symbind64: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+ return sym->st_value;
+}
+
+#define pltenter la_x86_64_gnu_pltenter
+#define pltexit la_x86_64_gnu_pltexit
+#define La_regs La_x86_64_regs
+#define La_retval La_x86_64_retval
+#define int_retval lrv_rax
+
+#include <tst-audit.h>
+
+ElfW(Addr)
+pltenter (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, La_regs *regs, unsigned int *flags,
+ const char *symname, long int *framesizep)
+{
+ printf ("pltenter: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+ __m128i minusone = _mm_set1_epi32 (-1);
+
+ if (strcmp (symname, "audit_test") == 0)
+ {
+ __m128i zero = _mm_setzero_si128 ();
+ if (memcmp (&regs->lr_xmm[0], &zero, sizeof (zero))
+ || memcmp (&regs->lr_xmm[1], &zero, sizeof (zero))
+ || memcmp (&regs->lr_xmm[2], &zero, sizeof (zero))
+ || memcmp (&regs->lr_xmm[3], &zero, sizeof (zero))
+ || memcmp (&regs->lr_xmm[4], &zero, sizeof (zero))
+ || memcmp (&regs->lr_xmm[5], &zero, sizeof (zero))
+ || memcmp (&regs->lr_xmm[6], &zero, sizeof (zero))
+ || memcmp (&regs->lr_xmm[7], &zero, sizeof (zero)))
+ abort ();
+
+ for (int i = 0; i < 8; i++)
+ regs->lr_xmm[i] = (La_x86_64_xmm) _mm_set1_epi32 (i + 1);
+
+ *framesizep = 1024;
+ }
+
+ asm volatile ("movdqa %0, %%xmm0" : : "x" (minusone) : "xmm0" );
+ asm volatile ("movdqa %0, %%xmm1" : : "x" (minusone) : "xmm1" );
+ asm volatile ("movdqa %0, %%xmm2" : : "x" (minusone) : "xmm2" );
+ asm volatile ("movdqa %0, %%xmm3" : : "x" (minusone) : "xmm3" );
+ asm volatile ("movdqa %0, %%xmm4" : : "x" (minusone) : "xmm4" );
+ asm volatile ("movdqa %0, %%xmm5" : : "x" (minusone) : "xmm5" );
+ asm volatile ("movdqa %0, %%xmm6" : : "x" (minusone) : "xmm6" );
+ asm volatile ("movdqa %0, %%xmm7" : : "x" (minusone) : "xmm7" );
+
+ return sym->st_value;
+}
+
+unsigned int
+pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, const La_regs *inregs, La_retval *outregs,
+ const char *symname)
+{
+ printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
+ symname, (long int) sym->st_value, ndx, outregs->int_retval);
+
+ __m128i xmm;
+
+ if (strcmp (symname, "audit_test") == 0)
+ {
+ __m128i zero = _mm_setzero_si128 ();
+ if (memcmp (&outregs->lrv_xmm0, &zero, sizeof (zero)))
+ abort ();
+
+ for (int i = 0; i < 8; i++)
+ {
+ xmm = _mm_set1_epi32 (i + 1);
+ if (memcmp (&inregs->lr_xmm[i], &xmm, sizeof (xmm)) != 0)
+ abort ();
+ }
+
+ outregs->lrv_xmm0 = (La_x86_64_xmm) _mm_set1_epi32 (0x12349876);
+ }
+
+ xmm = _mm_set1_epi32 (-1);
+ asm volatile ("movdqa %0, %%xmm0" : : "x" (xmm) : "xmm0" );
+ asm volatile ("movdqa %0, %%xmm1" : : "x" (xmm) : "xmm1" );
+
+ return 0;
+}
diff --git a/elf/tst-auditmod6a.c b/elf/tst-auditmod6a.c
new file mode 100644
index 0000000000..c3a850ce98
--- /dev/null
+++ b/elf/tst-auditmod6a.c
@@ -0,0 +1,46 @@
+/* Test case for x86-64 preserved registers in dynamic linker. */
+
+#include <stdlib.h>
+#include <string.h>
+#include <emmintrin.h>
+
+__m128i
+audit_test (__m128i x0, __m128i x1, __m128i x2, __m128i x3,
+ __m128i x4, __m128i x5, __m128i x6, __m128i x7)
+{
+ __m128i xmm;
+
+ xmm = _mm_set1_epi32 (0x100);
+ if (memcmp (&xmm, &x0, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (0x101);
+ if (memcmp (&xmm, &x1, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (0x102);
+ if (memcmp (&xmm, &x2, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (0x103);
+ if (memcmp (&xmm, &x3, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (0x104);
+ if (memcmp (&xmm, &x4, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (0x105);
+ if (memcmp (&xmm, &x5, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (0x106);
+ if (memcmp (&xmm, &x6, sizeof (xmm)))
+ abort ();
+
+ xmm = _mm_set1_epi32 (0x107);
+ if (memcmp (&xmm, &x7, sizeof (xmm)))
+ abort ();
+
+ return _mm_setzero_si128 ();
+}
diff --git a/elf/tst-auditmod6b.c b/elf/tst-auditmod6b.c
new file mode 100644
index 0000000000..f756b50227
--- /dev/null
+++ b/elf/tst-auditmod6b.c
@@ -0,0 +1,220 @@
+/* Verify that changing AVX registers in audit library won't affect
+ function parameter passing/return. */
+
+#include <dlfcn.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <bits/wordsize.h>
+#include <gnu/lib-names.h>
+
+unsigned int
+la_version (unsigned int v)
+{
+ setlinebuf (stdout);
+
+ printf ("version: %u\n", v);
+
+ char buf[20];
+ sprintf (buf, "%u", v);
+
+ return v;
+}
+
+void
+la_activity (uintptr_t *cookie, unsigned int flag)
+{
+ if (flag == LA_ACT_CONSISTENT)
+ printf ("activity: consistent\n");
+ else if (flag == LA_ACT_ADD)
+ printf ("activity: add\n");
+ else if (flag == LA_ACT_DELETE)
+ printf ("activity: delete\n");
+ else
+ printf ("activity: unknown activity %u\n", flag);
+}
+
+char *
+la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag)
+{
+ char buf[100];
+ const char *flagstr;
+ if (flag == LA_SER_ORIG)
+ flagstr = "LA_SET_ORIG";
+ else if (flag == LA_SER_LIBPATH)
+ flagstr = "LA_SER_LIBPATH";
+ else if (flag == LA_SER_RUNPATH)
+ flagstr = "LA_SER_RUNPATH";
+ else if (flag == LA_SER_CONFIG)
+ flagstr = "LA_SER_CONFIG";
+ else if (flag == LA_SER_DEFAULT)
+ flagstr = "LA_SER_DEFAULT";
+ else if (flag == LA_SER_SECURE)
+ flagstr = "LA_SER_SECURE";
+ else
+ {
+ sprintf (buf, "unknown flag %d", flag);
+ flagstr = buf;
+ }
+ printf ("objsearch: %s, %s\n", name, flagstr);
+
+ return (char *) name;
+}
+
+unsigned int
+la_objopen (struct link_map *l, Lmid_t lmid, uintptr_t *cookie)
+{
+ printf ("objopen: %ld, %s\n", lmid, l->l_name);
+
+ return 3;
+}
+
+void
+la_preinit (uintptr_t *cookie)
+{
+ printf ("preinit\n");
+}
+
+unsigned int
+la_objclose (uintptr_t *cookie)
+{
+ printf ("objclose\n");
+ return 0;
+}
+
+uintptr_t
+la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, unsigned int *flags, const char *symname)
+{
+ printf ("symbind64: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+ return sym->st_value;
+}
+
+#define pltenter la_x86_64_gnu_pltenter
+#define pltexit la_x86_64_gnu_pltexit
+#define La_regs La_x86_64_regs
+#define La_retval La_x86_64_retval
+#define int_retval lrv_rax
+
+#include <tst-audit.h>
+
+#ifdef __AVX__
+#include <immintrin.h>
+#include <cpuid.h>
+
+static int avx = -1;
+
+static int
+__attribute ((always_inline))
+check_avx (void)
+{
+ if (avx == -1)
+ {
+ unsigned int eax, ebx, ecx, edx;
+
+ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx)
+ && (ecx & bit_AVX))
+ avx = 1;
+ else
+ avx = 0;
+ }
+ return avx;
+}
+#else
+#include <emmintrin.h>
+#endif
+
+ElfW(Addr)
+pltenter (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, La_regs *regs, unsigned int *flags,
+ const char *symname, long int *framesizep)
+{
+ printf ("pltenter: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+#ifdef __AVX__
+ if (check_avx () && strcmp (symname, "audit_test") == 0)
+ {
+ int i;
+
+ __m128i xmm = _mm_setzero_si128 ();
+ for (i = 0; i < 8; i++)
+ if (memcmp (&regs->lr_xmm[i], &xmm, sizeof (xmm))
+ || memcmp (&regs->lr_vector[i], &xmm, sizeof (xmm)))
+ abort ();
+
+ for (i = 0; i < 8; i += 2)
+ {
+ regs->lr_xmm[i] = (La_x86_64_xmm) _mm_set1_epi32 (i + 1);
+ regs->lr_vector[i].xmm[0] = regs->lr_xmm[i];
+ regs->lr_vector[i + 1].ymm[0]
+ = (La_x86_64_ymm) _mm256_set1_epi32 (i + 2);
+ regs->lr_xmm[i + 1] = regs->lr_vector[i + 1].xmm[0];
+ }
+
+ __m256i ymm = _mm256_set1_epi32 (-1);
+ asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" );
+ asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" );
+ asm volatile ("vmovdqa %0, %%ymm2" : : "x" (ymm) : "xmm2" );
+ asm volatile ("vmovdqa %0, %%ymm3" : : "x" (ymm) : "xmm3" );
+ asm volatile ("vmovdqa %0, %%ymm4" : : "x" (ymm) : "xmm4" );
+ asm volatile ("vmovdqa %0, %%ymm5" : : "x" (ymm) : "xmm5" );
+ asm volatile ("vmovdqa %0, %%ymm6" : : "x" (ymm) : "xmm6" );
+ asm volatile ("vmovdqa %0, %%ymm7" : : "x" (ymm) : "xmm7" );
+
+ *framesizep = 1024;
+ }
+#endif
+
+ return sym->st_value;
+}
+
+unsigned int
+pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, const La_regs *inregs, La_retval *outregs,
+ const char *symname)
+{
+ printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
+ symname, (long int) sym->st_value, ndx, outregs->int_retval);
+
+#ifdef __AVX__
+ if (check_avx () && strcmp (symname, "audit_test") == 0)
+ {
+ int i;
+
+ __m128i xmm = _mm_setzero_si128 ();
+ if (memcmp (&outregs->lrv_xmm0, &xmm, sizeof (xmm))
+ || memcmp (&outregs->lrv_vector0, &xmm, sizeof (xmm)))
+ abort ();
+
+ __m256i ymm;
+
+ for (i = 0; i < 8; i += 2)
+ {
+ xmm = _mm_set1_epi32 (i + 0x100);
+ if (memcmp (&inregs->lr_xmm[i], &xmm, sizeof (xmm))
+ || memcmp (&inregs->lr_vector[i], &xmm, sizeof (xmm)))
+ abort ();
+
+ ymm = _mm256_set1_epi32 (i + 0x101);
+ if (memcmp (&inregs->lr_xmm[i + 1],
+ &inregs->lr_vector[i + 1].xmm[0], sizeof (xmm))
+ || memcmp (&inregs->lr_vector[i + 1], &ymm, sizeof (ymm)))
+ abort ();
+ }
+
+ outregs->lrv_vector0.ymm[0]
+ = (La_x86_64_ymm) _mm256_set1_epi32 (0x12349876);
+
+ ymm = _mm256_set1_epi32 (-1);
+ asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" );
+ asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" );
+ }
+#endif
+
+ return 0;
+}
diff --git a/elf/tst-auditmod6c.c b/elf/tst-auditmod6c.c
new file mode 100644
index 0000000000..49cbf05492
--- /dev/null
+++ b/elf/tst-auditmod6c.c
@@ -0,0 +1,225 @@
+/* Verify that changing AVX registers in audit library won't affect
+ function parameter passing/return. */
+
+#include <dlfcn.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <bits/wordsize.h>
+#include <gnu/lib-names.h>
+
+unsigned int
+la_version (unsigned int v)
+{
+ setlinebuf (stdout);
+
+ printf ("version: %u\n", v);
+
+ char buf[20];
+ sprintf (buf, "%u", v);
+
+ return v;
+}
+
+void
+la_activity (uintptr_t *cookie, unsigned int flag)
+{
+ if (flag == LA_ACT_CONSISTENT)
+ printf ("activity: consistent\n");
+ else if (flag == LA_ACT_ADD)
+ printf ("activity: add\n");
+ else if (flag == LA_ACT_DELETE)
+ printf ("activity: delete\n");
+ else
+ printf ("activity: unknown activity %u\n", flag);
+}
+
+char *
+la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag)
+{
+ char buf[100];
+ const char *flagstr;
+ if (flag == LA_SER_ORIG)
+ flagstr = "LA_SET_ORIG";
+ else if (flag == LA_SER_LIBPATH)
+ flagstr = "LA_SER_LIBPATH";
+ else if (flag == LA_SER_RUNPATH)
+ flagstr = "LA_SER_RUNPATH";
+ else if (flag == LA_SER_CONFIG)
+ flagstr = "LA_SER_CONFIG";
+ else if (flag == LA_SER_DEFAULT)
+ flagstr = "LA_SER_DEFAULT";
+ else if (flag == LA_SER_SECURE)
+ flagstr = "LA_SER_SECURE";
+ else
+ {
+ sprintf (buf, "unknown flag %d", flag);
+ flagstr = buf;
+ }
+ printf ("objsearch: %s, %s\n", name, flagstr);
+
+ return (char *) name;
+}
+
+unsigned int
+la_objopen (struct link_map *l, Lmid_t lmid, uintptr_t *cookie)
+{
+ printf ("objopen: %ld, %s\n", lmid, l->l_name);
+
+ return 3;
+}
+
+void
+la_preinit (uintptr_t *cookie)
+{
+ printf ("preinit\n");
+}
+
+unsigned int
+la_objclose (uintptr_t *cookie)
+{
+ printf ("objclose\n");
+ return 0;
+}
+
+uintptr_t
+la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, unsigned int *flags, const char *symname)
+{
+ printf ("symbind64: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+ return sym->st_value;
+}
+
+#define pltenter la_x86_64_gnu_pltenter
+#define pltexit la_x86_64_gnu_pltexit
+#define La_regs La_x86_64_regs
+#define La_retval La_x86_64_retval
+#define int_retval lrv_rax
+
+#include <tst-audit.h>
+
+#ifdef __AVX__
+#include <immintrin.h>
+#include <cpuid.h>
+
+static int avx = -1;
+
+static int
+__attribute ((always_inline))
+check_avx (void)
+{
+ if (avx == -1)
+ {
+ unsigned int eax, ebx, ecx, edx;
+
+ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx)
+ && (ecx & bit_AVX))
+ avx = 1;
+ else
+ avx = 0;
+ }
+ return avx;
+}
+#else
+#include <emmintrin.h>
+#endif
+
+ElfW(Addr)
+pltenter (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, La_regs *regs, unsigned int *flags,
+ const char *symname, long int *framesizep)
+{
+ printf ("pltenter: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+#ifdef __AVX__
+ if (check_avx () && strcmp (symname, "audit_test") == 0)
+ {
+ int i;
+ __m128i xmm;
+ __m256i ymm;
+
+ for (i = 0; i < 8; i += 2)
+ {
+ xmm = _mm_set1_epi32 (i + 1);
+ if (memcmp (&regs->lr_xmm[i], &xmm, sizeof (xmm))
+ || memcmp (&regs->lr_vector[i], &xmm, sizeof (xmm)))
+ abort ();
+ regs->lr_xmm[i] = (La_x86_64_xmm) _mm_set1_epi32 (i + 0x100);
+ regs->lr_vector[i].xmm[0] = regs->lr_xmm[i];
+
+ ymm = _mm256_set1_epi32 (i + 2);
+ if (memcmp (&regs->lr_xmm[i + 1],
+ &regs->lr_vector[i + 1].xmm[0], sizeof (xmm))
+ || memcmp (&regs->lr_vector[i + 1], &ymm, sizeof (ymm)))
+ abort ();
+ regs->lr_vector[i + 1].ymm[0]
+ = (La_x86_64_ymm) _mm256_set1_epi32 (i + 0x101);
+ regs->lr_xmm[i + 1] = regs->lr_vector[i + 1].xmm[0];
+ }
+
+ ymm = _mm256_set1_epi32 (-1);
+ asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" );
+ asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" );
+ asm volatile ("vmovdqa %0, %%ymm2" : : "x" (ymm) : "xmm2" );
+ asm volatile ("vmovdqa %0, %%ymm3" : : "x" (ymm) : "xmm3" );
+ asm volatile ("vmovdqa %0, %%ymm4" : : "x" (ymm) : "xmm4" );
+ asm volatile ("vmovdqa %0, %%ymm5" : : "x" (ymm) : "xmm5" );
+ asm volatile ("vmovdqa %0, %%ymm6" : : "x" (ymm) : "xmm6" );
+ asm volatile ("vmovdqa %0, %%ymm7" : : "x" (ymm) : "xmm7" );
+
+ *framesizep = 1024;
+ }
+#endif
+
+ return sym->st_value;
+}
+
+unsigned int
+pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, const La_regs *inregs, La_retval *outregs,
+ const char *symname)
+{
+ printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
+ symname, (long int) sym->st_value, ndx, outregs->int_retval);
+
+#ifdef __AVX__
+ if (check_avx () && strcmp (symname, "audit_test") == 0)
+ {
+ int i;
+
+ __m256i ymm = _mm256_set1_epi32 (0x12349876);;
+ if (memcmp (&outregs->lrv_vector0, &ymm, sizeof (ymm)))
+ abort ();
+
+ __m128i xmm;
+
+ for (i = 0; i < 8; i += 2)
+ {
+ xmm = _mm_set1_epi32 (i + 0x100);
+ if (memcmp (&inregs->lr_xmm[i], &xmm, sizeof (xmm))
+ || memcmp (&inregs->lr_vector[i], &xmm, sizeof (xmm)))
+ abort ();
+
+ ymm = _mm256_set1_epi32 (i + 0x101);
+ if (memcmp (&inregs->lr_xmm[i + 1],
+ &inregs->lr_vector[i + 1].xmm[0], sizeof (xmm))
+ || memcmp (&inregs->lr_vector[i + 1], &ymm, sizeof (ymm)))
+ abort ();
+ }
+
+ outregs->lrv_vector0.ymm[0]
+ = (La_x86_64_ymm) _mm256_set1_epi32 (0x98abcdef);
+
+ ymm = _mm256_set1_epi32 (-1);
+ asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" );
+ asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" );
+ }
+#endif
+
+ return 0;
+}
diff --git a/elf/tst-auditmod7a.c b/elf/tst-auditmod7a.c
new file mode 100644
index 0000000000..b379df75d6
--- /dev/null
+++ b/elf/tst-auditmod7a.c
@@ -0,0 +1 @@
+#include "tst-auditmod6a.c"
diff --git a/elf/tst-auditmod7b.c b/elf/tst-auditmod7b.c
new file mode 100644
index 0000000000..eb237586fe
--- /dev/null
+++ b/elf/tst-auditmod7b.c
@@ -0,0 +1,218 @@
+/* Verify that changing AVX registers in audit library won't affect
+ function parameter passing/return. */
+
+#include <dlfcn.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <bits/wordsize.h>
+#include <gnu/lib-names.h>
+
+unsigned int
+la_version (unsigned int v)
+{
+ setlinebuf (stdout);
+
+ printf ("version: %u\n", v);
+
+ char buf[20];
+ sprintf (buf, "%u", v);
+
+ return v;
+}
+
+void
+la_activity (uintptr_t *cookie, unsigned int flag)
+{
+ if (flag == LA_ACT_CONSISTENT)
+ printf ("activity: consistent\n");
+ else if (flag == LA_ACT_ADD)
+ printf ("activity: add\n");
+ else if (flag == LA_ACT_DELETE)
+ printf ("activity: delete\n");
+ else
+ printf ("activity: unknown activity %u\n", flag);
+}
+
+char *
+la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag)
+{
+ char buf[100];
+ const char *flagstr;
+ if (flag == LA_SER_ORIG)
+ flagstr = "LA_SET_ORIG";
+ else if (flag == LA_SER_LIBPATH)
+ flagstr = "LA_SER_LIBPATH";
+ else if (flag == LA_SER_RUNPATH)
+ flagstr = "LA_SER_RUNPATH";
+ else if (flag == LA_SER_CONFIG)
+ flagstr = "LA_SER_CONFIG";
+ else if (flag == LA_SER_DEFAULT)
+ flagstr = "LA_SER_DEFAULT";
+ else if (flag == LA_SER_SECURE)
+ flagstr = "LA_SER_SECURE";
+ else
+ {
+ sprintf (buf, "unknown flag %d", flag);
+ flagstr = buf;
+ }
+ printf ("objsearch: %s, %s\n", name, flagstr);
+
+ return (char *) name;
+}
+
+unsigned int
+la_objopen (struct link_map *l, Lmid_t lmid, uintptr_t *cookie)
+{
+ printf ("objopen: %ld, %s\n", lmid, l->l_name);
+
+ return 3;
+}
+
+void
+la_preinit (uintptr_t *cookie)
+{
+ printf ("preinit\n");
+}
+
+unsigned int
+la_objclose (uintptr_t *cookie)
+{
+ printf ("objclose\n");
+ return 0;
+}
+
+uintptr_t
+la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, unsigned int *flags, const char *symname)
+{
+ printf ("symbind64: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+ return sym->st_value;
+}
+
+#define pltenter la_x86_64_gnu_pltenter
+#define pltexit la_x86_64_gnu_pltexit
+#define La_regs La_x86_64_regs
+#define La_retval La_x86_64_retval
+#define int_retval lrv_rax
+
+#include <tst-audit.h>
+
+#ifdef __AVX__
+#include <immintrin.h>
+#include <cpuid.h>
+
+static int avx = -1;
+
+static int
+__attribute ((always_inline))
+check_avx (void)
+{
+ if (avx == -1)
+ {
+ unsigned int eax, ebx, ecx, edx;
+
+ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx)
+ && (ecx & bit_AVX))
+ avx = 1;
+ else
+ avx = 0;
+ }
+ return avx;
+}
+#else
+#include <emmintrin.h>
+#endif
+
+ElfW(Addr)
+pltenter (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, La_regs *regs, unsigned int *flags,
+ const char *symname, long int *framesizep)
+{
+ printf ("pltenter: symname=%s, st_value=%#lx, ndx=%u, flags=%u\n",
+ symname, (long int) sym->st_value, ndx, *flags);
+
+#ifdef __AVX__
+ if (check_avx () && strcmp (symname, "audit_test") == 0)
+ {
+ int i;
+
+ __m128i xmm = _mm_setzero_si128 ();
+ for (i = 0; i < 8; i++)
+ if (memcmp (&regs->lr_xmm[i], &xmm, sizeof (xmm))
+ || memcmp (&regs->lr_vector[i], &xmm, sizeof (xmm)))
+ abort ();
+
+ for (i = 0; i < 8; i += 2)
+ {
+ regs->lr_xmm[i] = (La_x86_64_xmm) _mm_set1_epi32 (i + 0x100);
+ regs->lr_vector[i + 1].ymm[0]
+ = (La_x86_64_ymm) _mm256_set1_epi32 (i + 0x101);
+ }
+
+ __m256i ymm = _mm256_set1_epi32 (-1);
+ asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" );
+ asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" );
+ asm volatile ("vmovdqa %0, %%ymm2" : : "x" (ymm) : "xmm2" );
+ asm volatile ("vmovdqa %0, %%ymm3" : : "x" (ymm) : "xmm3" );
+ asm volatile ("vmovdqa %0, %%ymm4" : : "x" (ymm) : "xmm4" );
+ asm volatile ("vmovdqa %0, %%ymm5" : : "x" (ymm) : "xmm5" );
+ asm volatile ("vmovdqa %0, %%ymm6" : : "x" (ymm) : "xmm6" );
+ asm volatile ("vmovdqa %0, %%ymm7" : : "x" (ymm) : "xmm7" );
+
+ *framesizep = 1024;
+ }
+#endif
+
+ return sym->st_value;
+}
+
+unsigned int
+pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, const La_regs *inregs, La_retval *outregs,
+ const char *symname)
+{
+ printf ("pltexit: symname=%s, st_value=%#lx, ndx=%u, retval=%tu\n",
+ symname, (long int) sym->st_value, ndx, outregs->int_retval);
+
+#ifdef __AVX__
+ if (check_avx () && strcmp (symname, "audit_test") == 0)
+ {
+ int i;
+
+ __m128i xmm = _mm_setzero_si128 ();
+ if (memcmp (&outregs->lrv_xmm0, &xmm, sizeof (xmm))
+ || memcmp (&outregs->lrv_vector0, &xmm, sizeof (xmm)))
+ abort ();
+
+ __m256i ymm;
+
+ for (i = 0; i < 8; i += 2)
+ {
+ xmm = _mm_set1_epi32 (i + 0x100);
+ if (memcmp (&inregs->lr_xmm[i], &xmm, sizeof (xmm))
+ || memcmp (&inregs->lr_vector[i], &xmm, sizeof (xmm)))
+ abort ();
+
+ ymm = _mm256_set1_epi32 (i + 0x101);
+ if (memcmp (&inregs->lr_xmm[i + 1],
+ &inregs->lr_vector[i + 1].xmm[0], sizeof (xmm))
+ || memcmp (&inregs->lr_vector[i + 1], &ymm, sizeof (ymm)))
+ abort ();
+ }
+
+ outregs->lrv_vector0.ymm[0]
+ = (La_x86_64_ymm) _mm256_set1_epi32 (0x98abcdef);
+
+ ymm = _mm256_set1_epi32 (-1);
+ asm volatile ("vmovdqa %0, %%ymm0" : : "x" (ymm) : "xmm0" );
+ asm volatile ("vmovdqa %0, %%ymm1" : : "x" (ymm) : "xmm1" );
+ }
+#endif
+
+ return 0;
+}
diff --git a/elf/tst-execstack.c b/elf/tst-execstack.c
index a835e4c0d6..6632e53367 100644
--- a/elf/tst-execstack.c
+++ b/elf/tst-execstack.c
@@ -148,7 +148,7 @@ do_test (void)
Let them run to test it. */
pthread_barrier_wait (&go_barrier);
- pthread_exit (! allow_execstack);
+ pthread_exit ((void *) (long int) (! allow_execstack));
#endif
return ! allow_execstack;
diff --git a/elf/tst-unique1.c b/elf/tst-unique1.c
new file mode 100644
index 0000000000..46d41d9ff4
--- /dev/null
+++ b/elf/tst-unique1.c
@@ -0,0 +1,76 @@
+#include <config.h>
+#include <dlfcn.h>
+#include <stdio.h>
+#include <sys/mman.h>
+
+static int
+do_test (void)
+{
+#ifdef HAVE_ASM_UNIQUE_OBJECT
+ void *h1 = dlopen ("tst-unique1mod1.so", RTLD_LAZY);
+ if (h1 == NULL)
+ {
+ puts ("cannot load tst-unique1mod1");
+ return 1;
+ }
+ int *(*f1) (void) = dlsym (h1, "f");
+ if (f1 == NULL)
+ {
+ puts ("cannot locate f in tst-unique1mod1");
+ return 1;
+ }
+ void *h2 = dlopen ("tst-unique1mod2.so", RTLD_LAZY);
+ if (h2 == NULL)
+ {
+ puts ("cannot load tst-unique1mod2");
+ return 1;
+ }
+ int (*f2) (int *) = dlsym (h2, "f");
+ if (f2 == NULL)
+ {
+ puts ("cannot locate f in tst-unique1mod2");
+ return 1;
+ }
+ if (f2 (f1 ()))
+ {
+ puts ("f from tst-unique1mod2 failed");
+ return 1;
+ }
+ dlclose (h2);
+ dlclose (h1);
+ mmap (NULL, 1024 * 1024 * 16, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ h2 = dlopen ("tst-unique1mod2.so", RTLD_LAZY);
+ if (h2 == NULL)
+ {
+ puts ("cannot load tst-unique1mod2");
+ return 1;
+ }
+ f2 = dlsym (h2, "f");
+ if (f2 == NULL)
+ {
+ puts ("cannot locate f in tst-unique1mod2");
+ return 1;
+ }
+ h1 = dlopen ("tst-unique1mod1.so", RTLD_LAZY);
+ if (h1 == NULL)
+ {
+ puts ("cannot load tst-unique1mod1");
+ return 1;
+ }
+ f1 = dlsym (h1, "f");
+ if (f1 == NULL)
+ {
+ puts ("cannot locate f in tst-unique1mod1");
+ return 1;
+ }
+ if (f2 (f1 ()))
+ {
+ puts ("f from tst-unique1mod2 failed");
+ return 1;
+ }
+#endif
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/elf/tst-unique1mod1.c b/elf/tst-unique1mod1.c
new file mode 100644
index 0000000000..16de28d25e
--- /dev/null
+++ b/elf/tst-unique1mod1.c
@@ -0,0 +1,21 @@
+#include <config.h>
+
+#ifdef HAVE_ASM_UNIQUE_OBJECT
+# define S(s) _S (s)
+# define _S(s) #s
+
+asm (".data;"
+ S (ASM_GLOBAL_DIRECTIVE) " var\n"
+ ".type var, " S (ASM_TYPE_DIRECTIVE_PREFIX) "gnu_unique_object\n"
+ ".size var, 4\n"
+ "var:.zero 4\n"
+ ".previous");
+extern int var;
+
+int *
+f (void)
+{
+ var = 1;
+ return &var;
+}
+#endif
diff --git a/elf/tst-unique1mod2.c b/elf/tst-unique1mod2.c
new file mode 100644
index 0000000000..c075515827
--- /dev/null
+++ b/elf/tst-unique1mod2.c
@@ -0,0 +1,20 @@
+#include <config.h>
+
+#ifdef HAVE_ASM_UNIQUE_OBJECT
+# define S(s) _S (s)
+# define _S(s) #s
+
+asm (".data;"
+ S (ASM_GLOBAL_DIRECTIVE) " var\n"
+ ".type var, " S (ASM_TYPE_DIRECTIVE_PREFIX) "gnu_unique_object\n"
+ ".size var, 4\n"
+ "var:.zero 4\n"
+ ".previous");
+extern int var;
+
+int
+f (int *p)
+{
+ return &var != p || *p != 1;
+}
+#endif
diff --git a/elf/tst-unique2.c b/elf/tst-unique2.c
new file mode 100644
index 0000000000..7bb0687364
--- /dev/null
+++ b/elf/tst-unique2.c
@@ -0,0 +1,32 @@
+#include <config.h>
+#include <dlfcn.h>
+#include <stdio.h>
+
+extern int var;
+
+static int
+do_test (void)
+{
+#ifdef HAVE_ASM_UNIQUE_OBJECT
+ var = 1;
+
+ void *h = dlopen ("tst-unique2mod2.so", RTLD_LAZY);
+ if (h == NULL)
+ {
+ puts ("cannot load tst-unique2mod2");
+ return 1;
+ }
+ int (*f) (int *) = dlsym (h, "f");
+ if (f == NULL)
+ {
+ puts ("cannot locate f in tst-unique2mod2");
+ return 1;
+ }
+ return f (&var);
+#else
+ return 0;
+#endif
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/elf/tst-unique2mod1.c b/elf/tst-unique2mod1.c
new file mode 100644
index 0000000000..5e4ac4d68c
--- /dev/null
+++ b/elf/tst-unique2mod1.c
@@ -0,0 +1,13 @@
+#include <config.h>
+
+#ifdef HAVE_ASM_UNIQUE_OBJECT
+# define S(s) _S (s)
+# define _S(s) #s
+
+asm (".data;"
+ S (ASM_GLOBAL_DIRECTIVE) " var\n"
+ ".type var, " S (ASM_TYPE_DIRECTIVE_PREFIX) "gnu_unique_object\n"
+ ".size var, 4\n"
+ "var:.zero 4\n"
+ ".previous");
+#endif
diff --git a/elf/tst-unique2mod2.c b/elf/tst-unique2mod2.c
new file mode 100644
index 0000000000..c075515827
--- /dev/null
+++ b/elf/tst-unique2mod2.c
@@ -0,0 +1,20 @@
+#include <config.h>
+
+#ifdef HAVE_ASM_UNIQUE_OBJECT
+# define S(s) _S (s)
+# define _S(s) #s
+
+asm (".data;"
+ S (ASM_GLOBAL_DIRECTIVE) " var\n"
+ ".type var, " S (ASM_TYPE_DIRECTIVE_PREFIX) "gnu_unique_object\n"
+ ".size var, 4\n"
+ "var:.zero 4\n"
+ ".previous");
+extern int var;
+
+int
+f (int *p)
+{
+ return &var != p || *p != 1;
+}
+#endif
diff --git a/gmon/.cvsignore b/gmon/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/gmon/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/gmon/gmon.c b/gmon/gmon.c
index 8e2eddd0bc..af2ac1c0f6 100644
--- a/gmon/gmon.c
+++ b/gmon/gmon.c
@@ -40,6 +40,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <stddef.h>
#include <unistd.h>
#include <libc-internal.h>
#include <not-cancel.h>
@@ -180,10 +181,18 @@ write_hist (fd)
int fd;
{
u_char tag = GMON_TAG_TIME_HIST;
- struct gmon_hist_hdr thdr __attribute__ ((aligned (__alignof__ (char *))));
if (_gmonparam.kcountsize > 0)
{
+ struct real_gmon_hist_hdr
+ {
+ char *low_pc;
+ char *high_pc;
+ int32_t hist_size;
+ int32_t prof_rate;
+ char dimen[15];
+ char dimen_abbrev;
+ } thdr;
struct iovec iov[3] =
{
{ &tag, sizeof (tag) },
@@ -191,11 +200,25 @@ write_hist (fd)
{ _gmonparam.kcount, _gmonparam.kcountsize }
};
- *(char **) thdr.low_pc = (char *) _gmonparam.lowpc;
- *(char **) thdr.high_pc = (char *) _gmonparam.highpc;
- *(int32_t *) thdr.hist_size = (_gmonparam.kcountsize
- / sizeof (HISTCOUNTER));
- *(int32_t *) thdr.prof_rate = __profile_frequency ();
+ if (sizeof (thdr) != sizeof (struct gmon_hist_hdr)
+ || (offsetof (struct real_gmon_hist_hdr, low_pc)
+ != offsetof (struct gmon_hist_hdr, low_pc))
+ || (offsetof (struct real_gmon_hist_hdr, high_pc)
+ != offsetof (struct gmon_hist_hdr, high_pc))
+ || (offsetof (struct real_gmon_hist_hdr, hist_size)
+ != offsetof (struct gmon_hist_hdr, hist_size))
+ || (offsetof (struct real_gmon_hist_hdr, prof_rate)
+ != offsetof (struct gmon_hist_hdr, prof_rate))
+ || (offsetof (struct real_gmon_hist_hdr, dimen)
+ != offsetof (struct gmon_hist_hdr, dimen))
+ || (offsetof (struct real_gmon_hist_hdr, dimen_abbrev)
+ != offsetof (struct gmon_hist_hdr, dimen_abbrev)))
+ abort ();
+
+ thdr.low_pc = (char *) _gmonparam.lowpc;
+ thdr.high_pc = (char *) _gmonparam.highpc;
+ thdr.hist_size = _gmonparam.kcountsize / sizeof (HISTCOUNTER);
+ thdr.prof_rate = __profile_frequency ();
strncpy (thdr.dimen, "seconds", sizeof (thdr.dimen));
thdr.dimen_abbrev = 's';
@@ -318,7 +341,6 @@ write_bb_counts (fd)
static void
write_gmon (void)
{
- struct gmon_hdr ghdr __attribute__ ((aligned (__alignof__ (int))));
int fd = -1;
char *env;
@@ -350,9 +372,21 @@ write_gmon (void)
}
/* write gmon.out header: */
- memset (&ghdr, '\0', sizeof (struct gmon_hdr));
+ struct real_gmon_hdr
+ {
+ char cookie[4];
+ int32_t version;
+ char spare[3 * 4];
+ } ghdr;
+ if (sizeof (ghdr) != sizeof (struct gmon_hdr)
+ || (offsetof (struct real_gmon_hdr, cookie)
+ != offsetof (struct gmon_hdr, cookie))
+ || (offsetof (struct real_gmon_hdr, version)
+ != offsetof (struct gmon_hdr, version)))
+ abort ();
memcpy (&ghdr.cookie[0], GMON_MAGIC, sizeof (ghdr.cookie));
- *(int32_t *) ghdr.version = GMON_VERSION;
+ ghdr.version = GMON_VERSION;
+ memset (ghdr.spare, '\0', sizeof (ghdr.spare));
write_not_cancel (fd, &ghdr, sizeof (struct gmon_hdr));
/* write PC histogram: */
diff --git a/gnulib/.cvsignore b/gnulib/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/gnulib/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/grp/.cvsignore b/grp/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/grp/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/grp/compat-initgroups.c b/grp/compat-initgroups.c
index efd875a689..7bcc203fe4 100644
--- a/grp/compat-initgroups.c
+++ b/grp/compat-initgroups.c
@@ -8,13 +8,19 @@ typedef enum nss_status (*end_function) (void);
typedef enum nss_status (*get_function) (struct group *, char *,
size_t, int *);
+/* This file is also used in nscd where __libc_alloca_cutoff is not
+ available. */
+#ifdef NOT_IN_libc
+# define __libc_use_alloca(size) ((size) < __MAX_ALLOCA_CUTOFF * 4)
+#endif
+
+
static enum nss_status
compat_call (service_user *nip, const char *user, gid_t group, long int *start,
long int *size, gid_t **groupsp, long int limit, int *errnop)
{
struct group grpbuf;
size_t buflen = __sysconf (_SC_GETGR_R_SIZE_MAX);
- char *tmpbuf;
enum nss_status status;
set_function setgrent_fct;
get_function getgrent_fct;
@@ -35,7 +41,9 @@ compat_call (service_user *nip, const char *user, gid_t group, long int *start,
endgrent_fct = __nss_lookup_function (nip, "endgrent");
- tmpbuf = __alloca (buflen);
+ char *tmpbuf = __alloca (buflen);
+ bool use_malloc = false;
+ enum nss_status result = NSS_STATUS_SUCCESS;
do
{
@@ -44,8 +52,20 @@ compat_call (service_user *nip, const char *user, gid_t group, long int *start,
status == NSS_STATUS_TRYAGAIN)
&& *errnop == ERANGE)
{
- buflen *= 2;
- tmpbuf = __alloca (buflen);
+ if (__libc_use_alloca (buflen * 2))
+ tmpbuf = extend_alloca (tmpbuf, buflen, buflen * 2);
+ else
+ {
+ buflen *= 2;
+ char *newbuf = realloc (use_malloc ? tmpbuf : NULL, buflen);
+ if (newbuf == NULL)
+ {
+ result = NSS_STATUS_TRYAGAIN;
+ goto done;
+ }
+ use_malloc = true;
+ tmpbuf = newbuf;
+ }
}
if (status != NSS_STATUS_SUCCESS)
@@ -102,8 +122,11 @@ compat_call (service_user *nip, const char *user, gid_t group, long int *start,
while (status == NSS_STATUS_SUCCESS);
done:
+ if (use_malloc)
+ free (tmpbuf);
+
if (endgrent_fct)
DL_CALL_FCT (endgrent_fct, ());
- return NSS_STATUS_SUCCESS;
+ return result;
}
diff --git a/grp/grp.h b/grp/grp.h
index d7cc69d0eb..c06ef03ae6 100644
--- a/grp/grp.h
+++ b/grp/grp.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,1992,1995-2001,2003,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1995-2001,2003,2004,2010
+ 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
@@ -61,7 +62,10 @@ struct group
This function is a possible cancellation point and therefore not
marked with __THROW. */
extern void setgrent (void);
+#endif
+#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED \
+ || defined __USE_XOPEN2K8
/* Close the group-file stream.
This function is a possible cancellation point and therefore not
diff --git a/nptl/sysdeps/alpha/Makefile b/gshadow/Makefile
index 88c106bbbf..0c3d42b317 100644
--- a/nptl/sysdeps/alpha/Makefile
+++ b/gshadow/Makefile
@@ -1,21 +1,38 @@
-# Copyright (C) 2003 Free Software Foundation, Inc.
+# Copyright (C) 2009 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, write to the Free
# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA.
-ifeq ($(subdir),csu)
-gen-as-const-headers += tcb-offsets.sym
-endif
+#
+# Makefile for gshadow.
+#
+subdir := gshadow
+
+headers = gshadow.h
+routines = getsgent getsgnam sgetsgent fgetsgent putsgent \
+ getsgent_r getsgnam_r sgetsgent_r fgetsgent_r
+
+tests = tst-gshadow
+
+CFLAGS-getsgent_r.c = -fexceptions
+CFLAGS-getsgent.c = -fexceptions
+CFLAGS-fgetsgent.c = -fexceptions
+CFLAGS-fgetsgent_r.c = -fexceptions -D_IO_MTSAFE_IO
+CFLAGS-putsgent.c = -fexceptions -D_IO_MTSAFE_IO
+CFLAGS-getsgnam.c = -fexceptions
+CFLAGS-getsgnam_r.c = -fexceptions
+
+include ../Rules
diff --git a/gshadow/Versions b/gshadow/Versions
new file mode 100644
index 0000000000..1dba0c5f19
--- /dev/null
+++ b/gshadow/Versions
@@ -0,0 +1,21 @@
+libc {
+ GLIBC_2.10 {
+ # e*
+ endsgent;
+
+ # f*
+ fgetsgent; fgetsgent_r;
+
+ # g*
+ getsgent; getsgent_r; getsgnam; getsgnam_r;
+
+ # p*
+ putsgent;
+
+ # s*
+ setsgent;
+
+ # s*
+ sgetsgent; sgetsgent_r;
+ }
+}
diff --git a/gshadow/fgetsgent.c b/gshadow/fgetsgent.c
new file mode 100644
index 0000000000..098edfe52e
--- /dev/null
+++ b/gshadow/fgetsgent.c
@@ -0,0 +1,88 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <bits/libc-lock.h>
+#include <gshadow.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+/* A reasonable size for a buffer to start with. */
+#define BUFLEN_SPWD 1024
+
+/* We need to protect the dynamic buffer handling. */
+__libc_lock_define_initialized (static, lock);
+
+libc_freeres_ptr (static char *buffer);
+
+/* Read one shadow entry from the given stream. */
+struct sgrp *
+fgetsgent (FILE *stream)
+{
+ static size_t buffer_size;
+ static struct sgrp resbuf;
+ fpos_t pos;
+ struct sgrp *result;
+ int save;
+
+ if (fgetpos (stream, &pos) != 0)
+ return NULL;
+
+ /* Get lock. */
+ __libc_lock_lock (lock);
+
+ /* Allocate buffer if not yet available. */
+ if (buffer == NULL)
+ {
+ buffer_size = BUFLEN_SPWD;
+ buffer = malloc (buffer_size);
+ }
+
+ while (buffer != NULL
+ && (__fgetsgent_r (stream, &resbuf, buffer, buffer_size, &result)
+ == ERANGE))
+ {
+ char *new_buf;
+ buffer_size += BUFLEN_SPWD;
+ new_buf = realloc (buffer, buffer_size);
+ if (new_buf == NULL)
+ {
+ /* We are out of memory. Free the current buffer so that the
+ process gets a chance for a normal termination. */
+ save = errno;
+ free (buffer);
+ __set_errno (save);
+ }
+ buffer = new_buf;
+
+ /* Reset the stream. */
+ if (fsetpos (stream, &pos) != 0)
+ buffer = NULL;
+ }
+
+ if (buffer == NULL)
+ result = NULL;
+
+ /* Release lock. Preserve error value. */
+ save = errno;
+ __libc_lock_unlock (lock);
+ __set_errno (save);
+
+ return result;
+}
diff --git a/gshadow/fgetsgent_r.c b/gshadow/fgetsgent_r.c
new file mode 100644
index 0000000000..25c05bf7ea
--- /dev/null
+++ b/gshadow/fgetsgent_r.c
@@ -0,0 +1,76 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <ctype.h>
+#include <errno.h>
+#include <gshadow.h>
+#include <stdio.h>
+
+/* Define a line parsing function using the common code
+ used in the nss_files module. */
+
+#define STRUCTURE sgrp
+#define ENTNAME sgent
+#define EXTERN_PARSER 1
+struct sgent_data {};
+
+#include <nss/nss_files/files-parse.c>
+
+
+/* Read one shadow entry from the given stream. */
+int
+__fgetsgent_r (FILE *stream, struct sgrp *resbuf, char *buffer, size_t buflen,
+ struct sgrp **result)
+{
+ char *p;
+
+ _IO_flockfile (stream);
+ do
+ {
+ buffer[buflen - 1] = '\xff';
+ p = fgets_unlocked (buffer, buflen, stream);
+ if (p == NULL && feof_unlocked (stream))
+ {
+ _IO_funlockfile (stream);
+ *result = NULL;
+ __set_errno (ENOENT);
+ return errno;
+ }
+ if (p == NULL || buffer[buflen - 1] != '\xff')
+ {
+ _IO_funlockfile (stream);
+ *result = NULL;
+ __set_errno (ERANGE);
+ return errno;
+ }
+
+ /* Skip leading blanks. */
+ while (isspace (*p))
+ ++p;
+ } while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
+ /* Parse the line. If it is invalid, loop to
+ get the next line of the file to parse. */
+ ! parse_line (buffer, (void *) resbuf, (void *) buffer, buflen,
+ &errno));
+
+ _IO_funlockfile (stream);
+
+ *result = resbuf;
+ return 0;
+}
+weak_alias (__fgetsgent_r, fgetsgent_r)
diff --git a/sysdeps/alpha/dl-tls.h b/gshadow/getsgent.c
index f81f95d75e..544227c537 100644
--- a/sysdeps/alpha/dl-tls.h
+++ b/gshadow/getsgent.c
@@ -1,6 +1,6 @@
-/* Thread-local storage handling in the ELF dynamic linker. Alpha version.
- Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -17,13 +17,14 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <gshadow.h>
-/* Type used for the representation of TLS information in the GOT. */
-typedef struct
-{
- unsigned long int ti_module;
- unsigned long int ti_offset;
-} tls_index;
+#define LOOKUP_TYPE struct sgrp
+#define SETFUNC_NAME setsgent
+#define GETFUNC_NAME getsgent
+#define ENDFUNC_NAME endsgent
+#define DATABASE_NAME gshadow
+#define BUFLEN 1024
-extern void *__tls_get_addr (tls_index *ti);
+#include "../nss/getXXent.c"
diff --git a/sysdeps/alpha/fpu/fegetexcept.c b/gshadow/getsgent_r.c
index ccc79e405d..9feea9f047 100644
--- a/sysdeps/alpha/fpu/fegetexcept.c
+++ b/gshadow/getsgent_r.c
@@ -1,7 +1,6 @@
-/* Get enabled floating-point exceptions.
- Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>, 2000.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -18,14 +17,15 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <fenv_libc.h>
+#include <gshadow.h>
-int
-fegetexcept (void)
-{
- unsigned long int exc;
- exc = __ieee_get_fp_control ();
+#define LOOKUP_TYPE struct sgrp
+#define SETFUNC_NAME setsgent
+#define GETFUNC_NAME getsgent
+#define ENDFUNC_NAME endsgent
+#define DATABASE_NAME gshadow
+#define BUFLEN 1024
+#define NO_COMPAT_NEEDED 1
- return (exc & SWCR_ENABLE_MASK) << SWCR_ENABLE_SHIFT;
-}
+#include "../nss/getXXent_r.c"
diff --git a/sysdeps/alpha/fpu/fegetround.c b/gshadow/getsgnam.c
index 995aee80da..7cd5b44210 100644
--- a/sysdeps/alpha/fpu/fegetround.c
+++ b/gshadow/getsgnam.c
@@ -1,7 +1,6 @@
-/* Return current rounding direction.
- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1997
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -18,14 +17,14 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <fenv_libc.h>
+#include <gshadow.h>
-int
-fegetround (void)
-{
- unsigned long fpcr;
- __asm__ __volatile__("excb; mf_fpcr %0" : "=f"(fpcr));
+#define LOOKUP_TYPE struct sgrp
+#define FUNCTION_NAME getsgnam
+#define DATABASE_NAME gshadow
+#define ADD_PARAMS const char *name
+#define ADD_VARIABLES name
+#define BUFLEN 1024
- return (fpcr >> FPCR_ROUND_SHIFT) & 3;
-}
+#include "../nss/getXXbyYY.c"
diff --git a/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S b/gshadow/getsgnam_r.c
index 3500e832c1..a9ab764675 100644
--- a/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S
+++ b/gshadow/getsgnam_r.c
@@ -1,5 +1,6 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -16,30 +17,15 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <sysdep.h>
+#include <gshadow.h>
- .arch ev6
- .set noreorder
- .set noat
-ENTRY(__ieee754_sqrtf)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
+#define LOOKUP_TYPE struct sgrp
+#define FUNCTION_NAME getsgnam
+#define DATABASE_NAME gshadow
+#define ADD_PARAMS const char *name
+#define ADD_VARIABLES name
+#define BUFLEN 1024
+#define NO_COMPAT_NEEDED 1
- .align 4
-#ifdef _IEEE_FP_INEXACT
- sqrts/sui $f16, $f0
-#else
- sqrts/su $f16, $f0
-#endif
- ret
- nop
- nop
-
-END(__ieee754_sqrtf)
+#include "../nss/getXXbyYY_r.c"
diff --git a/gshadow/gshadow.h b/gshadow/gshadow.h
new file mode 100644
index 0000000000..d0b28aeaa3
--- /dev/null
+++ b/gshadow/gshadow.h
@@ -0,0 +1,131 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* Declaration of types and functions for shadow group suite. */
+
+#ifndef _GSHADOW_H
+#define _GSHADOW_H 1
+
+#include <features.h>
+
+#include <paths.h>
+
+#define __need_FILE
+#include <stdio.h>
+#define __need_size_t
+#include <stddef.h>
+
+/* Path to the user database files. */
+#define GSHADOW _PATH_GSHADOW
+
+
+__BEGIN_DECLS
+
+/* Structure of the group file. */
+struct sgrp
+ {
+ char *sg_namp; /* Group name. */
+ char *sg_passwd; /* Encrypted password. */
+ char **sg_adm; /* Group administrator list. */
+ char **sg_mem; /* Group member list. */
+ };
+
+
+/* Open database for reading.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern void setsgent (void);
+
+/* Close database.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern void endsgent (void);
+
+/* Get next entry from database, perhaps after opening the file.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern struct sgrp *getsgent (void);
+
+/* Get shadow entry matching NAME.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern struct sgrp *getsgnam (__const char *__name);
+
+/* Read shadow entry from STRING.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern struct sgrp *sgetsgent (__const char *__string);
+
+/* Read next shadow entry from STREAM.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern struct sgrp *fgetsgent (FILE *__stream);
+
+/* Write line containing shadow password entry to stream.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern int putsgent (__const struct sgrp *__g, FILE *__stream);
+
+
+#ifdef __USE_MISC
+/* Reentrant versions of some of the functions above.
+
+ These functions are not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation they are cancellation points and
+ therefore not marked with __THROW. */
+extern int getsgent_r (struct sgrp *__result_buf, char *__buffer,
+ size_t __buflen, struct sgrp **__result);
+
+extern int getsgnam_r (__const char *__name, struct sgrp *__result_buf,
+ char *__buffer, size_t __buflen,
+ struct sgrp **__result);
+
+extern int sgetsgent_r (__const char *__string, struct sgrp *__result_buf,
+ char *__buffer, size_t __buflen,
+ struct sgrp **__result);
+
+extern int fgetsgent_r (FILE *__stream, struct sgrp *__result_buf,
+ char *__buffer, size_t __buflen,
+ struct sgrp **__result);
+#endif /* misc */
+
+__END_DECLS
+
+#endif /* gshadow.h */
diff --git a/gshadow/putsgent.c b/gshadow/putsgent.c
new file mode 100644
index 0000000000..938a71334c
--- /dev/null
+++ b/gshadow/putsgent.c
@@ -0,0 +1,71 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <gshadow.h>
+
+#define _S(x) x ? x : ""
+
+
+/* Write an entry to the given stream.
+ This must know the format of the group file. */
+int
+putsgent (const struct sgrp *g, FILE *stream)
+{
+ int errors = 0;
+
+ _IO_flockfile (stream);
+
+ if (fprintf (stream, "%s:%s:", g->sg_namp, _S (g->sg_passwd)) < 0)
+ ++errors;
+
+ bool first = true;
+ char **sp = g->sg_adm;
+ if (sp != NULL)
+ while (*sp != NULL)
+ {
+ if (fprintf (stream, "%s%s", first ? "" : ",", *sp++) < 0)
+ {
+ ++errors;
+ break;
+ }
+ first = false;
+ }
+ if (putc_unlocked (':', stream) == EOF)
+ ++errors;
+
+ first = true;
+ sp = g->sg_mem;
+ if (sp != NULL)
+ while (*sp != NULL)
+ {
+ if (fprintf (stream, "%s%s", first ? "" : ",", *sp++) < 0)
+ {
+ ++errors;
+ break;
+ }
+ first = false;
+ }
+ if (putc_unlocked ('\n', stream) == EOF)
+ ++errors;
+
+ _IO_funlockfile (stream);
+
+ return errors ? -1 : 0;
+}
diff --git a/gshadow/sgetsgent.c b/gshadow/sgetsgent.c
new file mode 100644
index 0000000000..94e131566b
--- /dev/null
+++ b/gshadow/sgetsgent.c
@@ -0,0 +1,78 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <bits/libc-lock.h>
+#include <gshadow.h>
+#include <stdlib.h>
+
+
+/* A reasonable size for a buffer to start with. */
+#define BUFLEN_SPWD 1024
+
+/* We need to protect the dynamic buffer handling. */
+__libc_lock_define_initialized (static, lock);
+
+/* Read one shadow entry from the given stream. */
+struct sgrp *
+sgetsgent (const char *string)
+{
+ static char *buffer;
+ static size_t buffer_size;
+ static struct sgrp resbuf;
+ struct sgrp *result;
+ int save;
+
+ /* Get lock. */
+ __libc_lock_lock (lock);
+
+ /* Allocate buffer if not yet available. */
+ if (buffer == NULL)
+ {
+ buffer_size = BUFLEN_SPWD;
+ buffer = malloc (buffer_size);
+ }
+
+ while (buffer != NULL
+ && __sgetsgent_r (string, &resbuf, buffer, buffer_size, &result) != 0
+ && errno == ERANGE)
+ {
+ char *new_buf;
+ buffer_size += BUFLEN_SPWD;
+ new_buf = realloc (buffer, buffer_size);
+ if (new_buf == NULL)
+ {
+ /* We are out of memory. Free the current buffer so that the
+ process gets a chance for a normal termination. */
+ save = errno;
+ free (buffer);
+ __set_errno (save);
+ }
+ buffer = new_buf;
+ }
+
+ if (buffer == NULL)
+ result = NULL;
+
+ /* Release lock. Preserve error value. */
+ save = errno;
+ __libc_lock_unlock (lock);
+ __set_errno (save);
+
+ return result;
+}
diff --git a/gshadow/sgetsgent_r.c b/gshadow/sgetsgent_r.c
new file mode 100644
index 0000000000..2292719af9
--- /dev/null
+++ b/gshadow/sgetsgent_r.c
@@ -0,0 +1,75 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <ctype.h>
+#include <errno.h>
+#include <gshadow.h>
+#include <stdio.h>
+#include <string.h>
+
+/* Define a line parsing function using the common code
+ used in the nss_files module. */
+
+#define STRUCTURE sgrp
+#define ENTNAME sgent
+struct sgent_data {};
+
+
+#define TRAILING_LIST_MEMBER sg_mem
+#define TRAILING_LIST_SEPARATOR_P(c) ((c) == ',')
+#include <nss/nss_files/files-parse.c>
+LINE_PARSER
+(,
+ STRING_FIELD (result->sg_namp, ISCOLON, 0);
+ if (line[0] == '\0'
+ && (result->sg_namp[0] == '+' || result->sg_namp[0] == '-'))
+ {
+ result->sg_passwd = NULL;
+ result->sg_adm = NULL;
+ result->sg_mem = NULL;
+ }
+ else
+ {
+ STRING_FIELD (result->sg_passwd, ISCOLON, 0);
+ STRING_LIST (result->sg_adm, ':');
+ }
+ )
+
+
+/* Read one shadow entry from the given stream. */
+int
+__sgetsgent_r (const char *string, struct sgrp *resbuf, char *buffer,
+ size_t buflen, struct sgrp **result)
+{
+ char *sp;
+ if (string < buffer || string >= buffer + buflen)
+ {
+ buffer[buflen - 1] = '\0';
+ sp = strncpy (buffer, string, buflen);
+ if (buffer[buflen - 1] != '\0')
+ return ERANGE;
+ }
+ else
+ sp = (char *) string;
+
+ int parse_result = parse_line (sp, resbuf, (void *) buffer, buflen, &errno);
+ *result = parse_result > 0 ? resbuf : NULL;
+
+ return *result == NULL ? errno : 0;
+}
+weak_alias (__sgetsgent_r, sgetsgent_r)
diff --git a/gshadow/tst-gshadow.c b/gshadow/tst-gshadow.c
new file mode 100644
index 0000000000..8b469b723d
--- /dev/null
+++ b/gshadow/tst-gshadow.c
@@ -0,0 +1,141 @@
+#include <gshadow.h>
+#include <stdio.h>
+#include <string.h>
+
+
+static const struct sgrp data[] =
+ {
+ { (char *) "one", (char *) "pwdone",
+ (char *[]) { (char *) "admoneone", (char *) "admonetwo",
+ (char *) "admonethree", NULL },
+ (char *[]) { (char *) "memoneone", (char *) "memonetwo",
+ (char *) "memonethree", NULL } },
+ { (char *) "two", (char *) "pwdtwo",
+ (char *[]) { (char *) "admtwoone", (char *) "admtwotwo", NULL },
+ (char *[]) { (char *) "memtwoone", (char *) "memtwotwo",
+ (char *) "memtwothree", NULL } },
+ { (char *) "three", (char *) "pwdthree",
+ (char *[]) { (char *) "admthreeone", (char *) "admthreetwo", NULL },
+ (char *[]) { (char *) "memthreeone", (char *) "memthreetwo", NULL } },
+ { (char *) "four", (char *) "pwdfour",
+ (char *[]) { (char *) "admfourone", (char *) "admfourtwo", NULL },
+ (char *[]) { NULL } },
+ { (char *) "five", (char *) "pwdfive",
+ (char *[]) { NULL },
+ (char *[]) { (char *) "memfiveone", (char *) "memfivetwo", NULL } },
+ };
+#define ndata (sizeof (data) / sizeof (data[0]))
+
+
+static int
+do_test (void)
+{
+ FILE *fp = tmpfile ();
+ if (fp == NULL)
+ {
+ puts ("cannot open temporary file");
+ return 1;
+ }
+
+ for (size_t i = 0; i < ndata; ++i)
+ if (putsgent (&data[i], fp) != 0)
+ {
+ printf ("putsgent call %zu failed\n", i + 1);
+ return 1;
+ }
+
+ rewind (fp);
+
+ int result = 0;
+ int seen = -1;
+ struct sgrp *g;
+ while ((g = fgetsgent (fp)) != NULL)
+ {
+ ++seen;
+ if (strcmp (g->sg_namp, data[seen].sg_namp) != 0)
+ {
+ printf ("sg_namp of entry %d does not match: %s vs %s\n",
+ seen + 1, g->sg_namp, data[seen].sg_namp);
+ result = 1;
+ }
+ if (strcmp (g->sg_passwd, data[seen].sg_passwd) != 0)
+ {
+ printf ("sg_passwd of entry %d does not match: %s vs %s\n",
+ seen + 1, g->sg_passwd, data[seen].sg_passwd);
+ result = 1;
+ }
+ if (g->sg_adm == NULL)
+ {
+ printf ("sg_adm of entry %d is NULL\n", seen + 1);
+ result = 1;
+ }
+ else
+ {
+ int i = 1;
+ char **sp1 = g->sg_adm;
+ char **sp2 = data[seen].sg_adm;
+ while (*sp1 != NULL && *sp2 != NULL)
+ {
+ if (strcmp (*sp1, *sp2) != 0)
+ {
+ printf ("sg_adm[%d] of entry %d does not match: %s vs %s\n",
+ i, seen + 1, *sp1, *sp2);
+ result = 1;
+ }
+ ++sp1;
+ ++sp2;
+ ++i;
+ }
+ if (*sp1 == NULL && *sp2 != NULL)
+ {
+ printf ("sg_adm of entry %d has too few entries\n", seen + 1);
+ result = 1;
+ }
+ else if (*sp1 != NULL && *sp2 == NULL)
+ {
+ printf ("sg_adm of entry %d has too many entries\n", seen + 1);
+ result = 1;
+ }
+ }
+ if (g->sg_mem == NULL)
+ {
+ printf ("sg_mem of entry %d is NULL\n", seen + 1);
+ result = 1;
+ }
+ else
+ {
+ int i = 1;
+ char **sp1 = g->sg_mem;
+ char **sp2 = data[seen].sg_mem;
+ while (*sp1 != NULL && *sp2 != NULL)
+ {
+ if (strcmp (*sp1, *sp2) != 0)
+ {
+ printf ("sg_mem[%d] of entry %d does not match: %s vs %s\n",
+ i, seen + 1, *sp1, *sp2);
+ result = 1;
+ }
+ ++sp1;
+ ++sp2;
+ ++i;
+ }
+ if (*sp1 == NULL && *sp2 != NULL)
+ {
+ printf ("sg_mem of entry %d has too few entries\n", seen + 1);
+ result = 1;
+ }
+ else if (*sp1 != NULL && *sp2 == NULL)
+ {
+ printf ("sg_mem of entry %d has too many entries\n", seen + 1);
+ result = 1;
+ }
+ }
+ }
+
+ fclose (fp);
+
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/hesiod/nss_hesiod/hesiod-grp.c b/hesiod/nss_hesiod/hesiod-grp.c
index 50c53f7893..f0c8c31e06 100644
--- a/hesiod/nss_hesiod/hesiod-grp.c
+++ b/hesiod/nss_hesiod/hesiod-grp.c
@@ -139,21 +139,19 @@ internal_gid_from_group (void *context, const char *groupname, gid_t *group)
{
char *p = *grp_res;
+ /* Skip to third field. */
while (*p != '\0' && *p != ':')
++p;
- while (*p != '\0' && *p == ':')
+ if (*p != '\0')
++p;
while (*p != '\0' && *p != ':')
++p;
- while (*p != '\0' && *p == ':')
- ++p;
- if (*p == ':')
+ if (*p != '\0')
{
char *endp;
char *q = ++p;
long int val;
- q = p;
while (*q != '\0' && *q != ':')
++q;
diff --git a/hurd/.cvsignore b/hurd/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/hurd/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/hurd/hurdioctl.c b/hurd/hurdioctl.c
index 96d910ba1a..7c689841ca 100644
--- a/hurd/hurdioctl.c
+++ b/hurd/hurdioctl.c
@@ -1,5 +1,6 @@
/* ioctl commands which must be done in the C library.
- Copyright (C) 1994,95,96,97,99,2001,02 Free Software Foundation, Inc.
+ Copyright (C) 1994,95,96,97,99,2001,2002,2009
+ 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
@@ -169,33 +170,28 @@ _hurd_locked_install_cttyid (mach_port_t cttyid)
for (i = 0; i < _hurd_dtablesize; ++i)
{
struct hurd_fd *const d = _hurd_dtable[i];
- mach_port_t newctty;
+ mach_port_t newctty = MACH_PORT_NULL;
if (d == NULL)
/* Nothing to do for an unused descriptor cell. */
continue;
- if (cttyid == MACH_PORT_NULL)
- /* We now have no controlling tty at all. */
- newctty = MACH_PORT_NULL;
- else
+ if (cttyid != MACH_PORT_NULL)
+ /* We do have some controlling tty. */
HURD_PORT_USE (&d->port,
({ mach_port_t id;
/* Get the io object's cttyid port. */
if (! __term_getctty (port, &id))
{
- if (id == cttyid && /* Is it ours? */
+ if (id == cttyid /* Is it ours? */
/* Get the ctty io port. */
- __term_open_ctty (port,
- _hurd_pid, _hurd_pgrp,
- &newctty))
+ && __term_open_ctty (port,
+ _hurd_pid, _hurd_pgrp,
+ &newctty))
/* XXX it is our ctty but the call failed? */
newctty = MACH_PORT_NULL;
- __mach_port_deallocate
- (__mach_task_self (), (mach_port_t) id);
+ __mach_port_deallocate (__mach_task_self (), id);
}
- else
- newctty = MACH_PORT_NULL;
0;
}));
diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c
index f89fd79dcf..4cb5e3ceaa 100644
--- a/hurd/hurdsig.c
+++ b/hurd/hurdsig.c
@@ -1134,6 +1134,7 @@ signal_allowed (int signo, mach_port_t refport)
}
_hurd_port_free (&_hurd_dtable[d]->port, &ulink, port);
}
+ __mutex_unlock (&_hurd_dtable_lock);
/* If we found a lucky winner, we've set D to -1 in the loop. */
if (lucky)
goto win;
diff --git a/hurd/report-wait.c b/hurd/report-wait.c
index 296b2eec42..f6e48f951e 100644
--- a/hurd/report-wait.c
+++ b/hurd/report-wait.c
@@ -1,5 +1,5 @@
/* Report on what a thread in our task is waiting for.
- Copyright (C) 1996,1997,1999,2002,2005 Free Software Foundation, Inc.
+ Copyright (C) 1996,1997,1999,2002,2005,2009 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
@@ -30,7 +30,7 @@ static char *
describe_number (string_t description, const char *flavor, long int i)
{
unsigned long int j;
- char *p = flavor ? description : __stpcpy (description, flavor);
+ char *p = flavor == NULL ? description : __stpcpy (description, flavor);
char *end;
/* Handle sign. */
diff --git a/iconv/Makefile b/iconv/Makefile
index f0f16f81b3..77a9ad7666 100644
--- a/iconv/Makefile
+++ b/iconv/Makefile
@@ -1,5 +1,4 @@
-# Copyright (C) 1997,1998,2000,2001,2002,2003,2004,2007
-# Free Software Foundation, Inc.
+# Copyright (C) 1997,1998,2000-2004,2007,2009 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
@@ -50,7 +49,7 @@ CFLAGS-charmap.c = -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \
CFLAGS-linereader.c = -DNO_TRANSLITERATION
CFLAGS-simple-hash.c = -I../locale
-tests = tst-iconv1 tst-iconv2 tst-iconv3 tst-iconv5
+tests = tst-iconv1 tst-iconv2 tst-iconv3 tst-iconv4 tst-iconv5
distribute = gconv_builtin.h gconv_int.h loop.c skeleton.c iconv_prog.h \
iconv_charmap.c dummy-repertoire.c gconv_charset.h strtab.c \
diff --git a/iconv/gconv_simple.c b/iconv/gconv_simple.c
index 5cf3237abb..e34f3770ad 100644
--- a/iconv/gconv_simple.c
+++ b/iconv/gconv_simple.c
@@ -1,5 +1,5 @@
/* Simple transformations functions.
- Copyright (C) 1997-2005, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1997-2005, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -1037,7 +1037,9 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
/* If i < cnt, some trail byte was not >= 0x80, < 0xc0. \
If cnt > 2 and ch < 2^(5*cnt-4), the wide character ch could \
have been represented with fewer than cnt bytes. */ \
- if (i < cnt || (cnt > 2 && (ch >> (5 * cnt - 4)) == 0)) \
+ if (i < cnt || (cnt > 2 && (ch >> (5 * cnt - 4)) == 0) \
+ /* Do not accept UTF-16 surrogates. */ \
+ || (ch >= 0xd800 && ch <= 0xdfff)) \
{ \
/* This is an illegal encoding. */ \
goto errout; \
diff --git a/iconv/gconv_trans.c b/iconv/gconv_trans.c
index 9e04e64ee2..1f1dd01b19 100644
--- a/iconv/gconv_trans.c
+++ b/iconv/gconv_trans.c
@@ -1,5 +1,5 @@
/* Transliteration using the locale's data.
- Copyright (C) 2000 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 2000.
@@ -139,7 +139,10 @@ __gconv_transliterate (struct __gconv_step *step,
++*irreversible;
res = __GCONV_OK;
}
- *outbufstart = outptr;
+ /* Do not increment the output pointer if we could not
+ store the entire output. */
+ if (res != __GCONV_FULL_OUTPUT)
+ *outbufstart = outptr;
return res;
}
diff --git a/iconv/iconv_prog.c b/iconv/iconv_prog.c
index dfbc017706..a1ca05f153 100644
--- a/iconv/iconv_prog.c
+++ b/iconv/iconv_prog.c
@@ -1,5 +1,5 @@
/* Convert text in given files from the specified from-set to the to-set.
- Copyright (C) 1998-2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1998-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -424,7 +424,7 @@ print_version (FILE *stream, struct argp_state *state)
Copyright (C) %s Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2008");
+"), "2009");
fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
}
diff --git a/iconv/iconvconfig.c b/iconv/iconvconfig.c
index 450fd7198c..1d95e89a84 100644
--- a/iconv/iconvconfig.c
+++ b/iconv/iconvconfig.c
@@ -1,5 +1,5 @@
/* Generate fastloading iconv module configuration files.
- Copyright (C) 2000-2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2000-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
@@ -396,7 +396,7 @@ print_version (FILE *stream, struct argp_state *state)
Copyright (C) %s Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2008");
+"), "2009");
fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
}
diff --git a/iconv/tst-iconv4.c b/iconv/tst-iconv4.c
new file mode 100644
index 0000000000..b5ff39306c
--- /dev/null
+++ b/iconv/tst-iconv4.c
@@ -0,0 +1,65 @@
+// Derived from BZ #9793
+#include <errno.h>
+#include <iconv.h>
+#include <stdio.h>
+
+
+static int
+do_test (void)
+{
+ iconv_t cd = iconv_open ("ASCII//TRANSLIT", "UTF-8");
+ if (cd == (iconv_t) -1)
+ {
+ puts ("iconv_open failed");
+ return 1;
+ }
+
+ char input[2] = { 0xc2, 0xae }; /* Registered trademark */
+ char *inptr = input;
+ size_t insize = sizeof (input);
+ char output[2]; /* Too short to contain "(R)". */
+ char *outptr = output;
+ size_t outsize = sizeof (output);
+
+ size_t ret = iconv (cd, &inptr, &insize, &outptr, &outsize);
+ if (ret != (size_t) -1)
+ {
+ puts ("iconv succeeded");
+ return 1;
+ }
+ if (errno != E2BIG)
+ {
+ puts ("iconv did not set errno to E2BIG");
+ return 1;
+ }
+ int res = 0;
+ if (inptr != input)
+ {
+ puts ("inptr changed");
+ res = 1;
+ }
+ if (insize != sizeof (input))
+ {
+ puts ("insize changed");
+ res = 1;
+ }
+ if (outptr != output)
+ {
+ puts ("outptr changed");
+ res = 1;
+ }
+ if (outsize != sizeof (output))
+ {
+ puts ("outsize changed");
+ res = 1;
+ }
+ if (iconv_close (cd) == -1)
+ {
+ puts ("iconv_close failed");
+ res = 1;
+ }
+ return res;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index e93de56c50..d8fb282871 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -286,6 +286,7 @@ $(objpfx)iconv-rules: Makefile
{ echo $(filter-out lib%, $(modules)); \
echo 8bit $(gen-8bit-modules); \
echo 8bit-gap $(gen-8bit-gap-modules); } | \
+ LC_ALL=C \
$(AWK) 'NR == 1 { \
for (i = 1; i <= NF; i++) { \
printf "%s-routines := %s\n", $$i, tolower($$i); \
diff --git a/iconvdata/iso646.c b/iconvdata/iso646.c
index f388ae7de2..0989532c72 100644
--- a/iconvdata/iso646.c
+++ b/iconvdata/iso646.c
@@ -156,7 +156,7 @@ gconv_init (struct __gconv_step *step)
new_data->var = var;
step->__data = new_data;
- if (var == from_iso646)
+ if (dir == from_iso646)
{
step->__min_needed_from = MIN_NEEDED_FROM;
step->__max_needed_from = MIN_NEEDED_FROM;
diff --git a/iconvdata/sjis.c b/iconvdata/sjis.c
index 4561779d44..f907615a21 100644
--- a/iconvdata/sjis.c
+++ b/iconvdata/sjis.c
@@ -1,5 +1,5 @@
/* Mapping tables for SJIS handling.
- Copyright (C) 1997-2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1997-2001, 2002, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -4372,15 +4372,19 @@ static const char from_ucs4_extra[0x100][2] =
\
ch2 = inptr[1]; \
idx = ch * 256 + ch2; \
- if (__builtin_expect (ch2 < 0x40, 0) \
- || (__builtin_expect (idx > 0x84be, 0) && idx < 0x889f) \
- || (__builtin_expect (idx > 0x88fc, 0) && idx < 0x8940) \
- || (__builtin_expect (idx > 0x9ffc, 0) && idx < 0xe040) \
- || __builtin_expect (idx > 0xeaa4, 0)) \
+ if (__builtin_expect (ch2 < 0x40, 0)) \
{ \
/* This is illegal. */ \
STANDARD_FROM_LOOP_ERR_HANDLER (1); \
} \
+ else if ((__builtin_expect (idx > 0x84be && idx < 0x889f, 0)) \
+ || (__builtin_expect (idx > 0x88fc && idx < 0x8940, 0)) \
+ || (__builtin_expect (idx > 0x9ffc && idx < 0xe040, 0)) \
+ || __builtin_expect (idx > 0xeaa4, 0)) \
+ { \
+ /* This is illegal. */ \
+ STANDARD_FROM_LOOP_ERR_HANDLER (2); \
+ } \
else \
{ \
/* We could pack the data a bit more dense. The second \
@@ -4395,13 +4399,13 @@ static const char from_ucs4_extra[0x100][2] =
else \
ch = cjk_block4[(ch - 0xe0) * 192 + ch2 - 0x40]; \
\
- inptr += 2; \
- } \
+ if (__builtin_expect (ch == 0, 0)) \
+ { \
+ /* This is an illegal character. */ \
+ STANDARD_FROM_LOOP_ERR_HANDLER (2); \
+ } \
\
- if (__builtin_expect (ch == 0, 0)) \
- { \
- /* This is an illegal character. */ \
- STANDARD_FROM_LOOP_ERR_HANDLER (2); \
+ inptr += 2; \
} \
} \
\
diff --git a/include/alloca.h b/include/alloca.h
index 563d7868bd..9a4b5c7da0 100644
--- a/include/alloca.h
+++ b/include/alloca.h
@@ -46,4 +46,17 @@ extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const));
__alloca (((len) = (newlen)))
#endif
+#if defined stackinfo_get_sp && defined stackinfo_sub_sp
+# define alloca_account(size, avar) \
+ ({ void *old__ = stackinfo_get_sp (); \
+ void *m__ = __alloca (size); \
+ avar += stackinfo_sub_sp (old__); \
+ m__; })
+#else
+# define alloca_account(size, avar) \
+ ({ size_t s__ = (size); \
+ avar += s__; \
+ __alloca (s__); })
+#endif
+
#endif
diff --git a/include/atomic.h b/include/atomic.h
index 2ad8b5fcb7..37d0111d5f 100644
--- a/include/atomic.h
+++ b/include/atomic.h
@@ -1,5 +1,5 @@
/* Internal macros for atomic operations for GNU C Library.
- Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2002-2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -95,25 +95,31 @@
#endif
-#if !defined catomic_compare_and_exchange_val_acq \
- && defined __arch_c_compare_and_exchange_val_32_acq
-# define catomic_compare_and_exchange_val_acq(mem, newval, oldval) \
+#ifndef catomic_compare_and_exchange_val_acq
+# ifdef __arch_c_compare_and_exchange_val_32_acq
+# define catomic_compare_and_exchange_val_acq(mem, newval, oldval) \
__atomic_val_bysize (__arch_c_compare_and_exchange_val,acq, \
mem, newval, oldval)
-#else
-# define catomic_compare_and_exchange_val_acq(mem, newval, oldval) \
+# else
+# define catomic_compare_and_exchange_val_acq(mem, newval, oldval) \
atomic_compare_and_exchange_val_acq (mem, newval, oldval)
+# endif
#endif
-#ifndef atomic_compare_and_exchange_val_rel
-# define atomic_compare_and_exchange_val_rel(mem, newval, oldval) \
- atomic_compare_and_exchange_val_acq (mem, newval, oldval)
+#ifndef catomic_compare_and_exchange_val_rel
+# ifndef atomic_compare_and_exchange_val_rel
+# define catomic_compare_and_exchange_val_rel(mem, newval, oldval) \
+ catomic_compare_and_exchange_val_acq (mem, newval, oldval)
+# else
+# define catomic_compare_and_exchange_val_rel(mem, newval, oldval) \
+ atomic_compare_and_exchange_val_rel (mem, newval, oldval)
+# endif
#endif
-#ifndef catomic_compare_and_exchange_val_rel
-# define catomic_compare_and_exchange_val_rel(mem, newval, oldval) \
+#ifndef atomic_compare_and_exchange_val_rel
+# define atomic_compare_and_exchange_val_rel(mem, newval, oldval) \
atomic_compare_and_exchange_val_acq (mem, newval, oldval)
#endif
@@ -125,8 +131,8 @@
# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
__atomic_bool_bysize (__arch_compare_and_exchange_bool,acq, \
mem, newval, oldval)
-# else
-# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
+# else
+# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
({ /* Cannot use __oldval here, because macros later in this file might \
call this macro with __oldval argument. */ \
__typeof (oldval) __atg3_old = (oldval); \
@@ -142,8 +148,8 @@
# define catomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
__atomic_bool_bysize (__arch_c_compare_and_exchange_bool,acq, \
mem, newval, oldval)
-# else
-# define catomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
+# else
+# define catomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
({ /* Cannot use __oldval here, because macros later in this file might \
call this macro with __oldval argument. */ \
__typeof (oldval) __atg4_old = (oldval); \
@@ -154,15 +160,20 @@
#endif
-#ifndef atomic_compare_and_exchange_bool_rel
-# define atomic_compare_and_exchange_bool_rel(mem, newval, oldval) \
- atomic_compare_and_exchange_bool_acq (mem, newval, oldval)
+#ifndef catomic_compare_and_exchange_bool_rel
+# ifndef atomic_compare_and_exchange_bool_rel
+# define catomic_compare_and_exchange_bool_rel(mem, newval, oldval) \
+ catomic_compare_and_exchange_bool_acq (mem, newval, oldval)
+# else
+# define catomic_compare_and_exchange_bool_rel(mem, newval, oldval) \
+ atomic_compare_and_exchange_bool_rel (mem, newval, oldval)
+# endif
#endif
-#ifndef catomic_compare_and_exchange_bool_rel
-# define catomic_compare_and_exchange_bool_rel(mem, newval, oldval) \
- catomic_compare_and_exchange_bool_acq (mem, newval, oldval)
+#ifndef atomic_compare_and_exchange_bool_rel
+# define atomic_compare_and_exchange_bool_rel(mem, newval, oldval) \
+ atomic_compare_and_exchange_bool_acq (mem, newval, oldval)
#endif
@@ -415,6 +426,22 @@
} while (0)
#endif
+#ifndef catomic_and
+# define catomic_and(mem, mask) \
+ do { \
+ __typeof (*(mem)) __atg20_old; \
+ __typeof (mem) __atg20_memp = (mem); \
+ __typeof (*(mem)) __atg20_mask = (mask); \
+ \
+ do \
+ __atg20_old = (*__atg20_memp); \
+ while (__builtin_expect \
+ (catomic_compare_and_exchange_bool_acq (__atg20_memp, \
+ __atg20_old & __atg20_mask,\
+ __atg20_old), 0)); \
+ } while (0)
+#endif
+
/* Atomically *mem &= mask and return the old value of *mem. */
#ifndef atomic_and_val
# define atomic_and_val(mem, mask) \
diff --git a/include/bits/setjmp2.h b/include/bits/setjmp2.h
new file mode 100644
index 0000000000..bdb222cd2c
--- /dev/null
+++ b/include/bits/setjmp2.h
@@ -0,0 +1 @@
+#include <setjmp/bits/setjmp2.h>
diff --git a/include/dirent.h b/include/dirent.h
index 8f23aee234..3f6c4b9ae5 100644
--- a/include/dirent.h
+++ b/include/dirent.h
@@ -17,14 +17,16 @@ extern int __readdir64_r (DIR *__dirp, struct dirent64 *__entry,
extern int __scandir64 (__const char * __dir,
struct dirent64 *** __namelist,
int (*__selector) (__const struct dirent64 *),
- int (*__cmp) (__const void *, __const void *));
+ int (*__cmp) (__const struct dirent64 **,
+ __const struct dirent64 **));
extern __ssize_t __getdents (int __fd, char *__buf, size_t __nbytes)
internal_function;
extern __ssize_t __getdents64 (int __fd, char *__buf, size_t __nbytes)
internal_function;
-extern int __alphasort64 (const void *a, const void *b)
+extern int __alphasort64 (const struct dirent64 **a, const struct dirent64 **b)
__attribute_pure__;
-extern int __versionsort64 (const void *a, const void *b)
+extern int __versionsort64 (const struct dirent64 **a,
+ const struct dirent64 **b)
__attribute_pure__;
extern DIR *__alloc_dir (int fd, bool close_fd, const struct stat64 *statp)
internal_function;
diff --git a/include/features.h b/include/features.h
index 3a44e38a2c..887e410b44 100644
--- a/include/features.h
+++ b/include/features.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1992,1993,1995-2006,2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1993,1995-2007,2009,2010 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
@@ -29,9 +29,10 @@
if >=199309L, add IEEE Std 1003.1b-1993;
if >=199506L, add IEEE Std 1003.1c-1995;
if >=200112L, all of IEEE 1003.1-2004
+ if >=200809L, all of IEEE 1003.1-2008
_XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
Single Unix conformance is wanted, to 600 for the
- upcoming sixth revision.
+ sixth revision, to 700 for the seventh revision.
_XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
_LARGEFILE_SOURCE Some more functions for correct standard I/O.
_LARGEFILE64_SOURCE Additional functionality from LFS for large files.
@@ -65,6 +66,8 @@
__USE_XOPEN_EXTENDED Define X/Open Unix things.
__USE_UNIX98 Define Single Unix V2 things.
__USE_XOPEN2K Define XPG6 things.
+ __USE_XOPEN2KXSI Define XPG6 XSI things.
+ __USE_XOPEN2K8XSI Define XPG7 XSI things.
__USE_LARGEFILE Define correct standard I/O things.
__USE_LARGEFILE64 Define LFS things with separate names.
__USE_FILE_OFFSET64 Define 64bit interface as default.
@@ -100,6 +103,9 @@
#undef __USE_XOPEN_EXTENDED
#undef __USE_UNIX98
#undef __USE_XOPEN2K
+#undef __USE_XOPEN2KXSI
+#undef __USE_XOPEN2K8
+#undef __USE_XOPEN2K8XSI
#undef __USE_LARGEFILE
#undef __USE_LARGEFILE64
#undef __USE_FILE_OFFSET64
@@ -140,21 +146,22 @@
/* If _BSD_SOURCE was defined by the user, favor BSD over POSIX. */
#if defined _BSD_SOURCE && \
!(defined _POSIX_SOURCE || defined _POSIX_C_SOURCE || \
- defined _XOPEN_SOURCE || defined _XOPEN_SOURCE_EXTENDED || \
- defined _GNU_SOURCE || defined _SVID_SOURCE)
+ defined _XOPEN_SOURCE || defined _GNU_SOURCE || defined _SVID_SOURCE)
# define __FAVOR_BSD 1
#endif
/* If _GNU_SOURCE was defined by the user, turn on all the other features. */
#ifdef _GNU_SOURCE
+# undef _ISOC95_SOURCE
+# define _ISOC95_SOURCE 1
# undef _ISOC99_SOURCE
# define _ISOC99_SOURCE 1
# undef _POSIX_SOURCE
# define _POSIX_SOURCE 1
# undef _POSIX_C_SOURCE
-# define _POSIX_C_SOURCE 200112L
+# define _POSIX_C_SOURCE 200809L
# undef _XOPEN_SOURCE
-# define _XOPEN_SOURCE 600
+# define _XOPEN_SOURCE 700
# undef _XOPEN_SOURCE_EXTENDED
# define _XOPEN_SOURCE_EXTENDED 1
# undef _LARGEFILE64_SOURCE
@@ -171,8 +178,7 @@
define _BSD_SOURCE and _SVID_SOURCE. */
#if (!defined __STRICT_ANSI__ && !defined _ISOC99_SOURCE && \
!defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE && \
- !defined _XOPEN_SOURCE && !defined _XOPEN_SOURCE_EXTENDED && \
- !defined _BSD_SOURCE && !defined _SVID_SOURCE)
+ !defined _XOPEN_SOURCE && !defined _BSD_SOURCE && !defined _SVID_SOURCE)
# define _BSD_SOURCE 1
# define _SVID_SOURCE 1
#endif
@@ -201,9 +207,12 @@
# define _POSIX_C_SOURCE 2
# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 600
# define _POSIX_C_SOURCE 199506L
-# else
+# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 700
# define _POSIX_C_SOURCE 200112L
+# else
+# define _POSIX_C_SOURCE 200809L
# endif
+# define __USE_POSIX_IMPLICITLY 1
#endif
#if defined _POSIX_SOURCE || _POSIX_C_SOURCE >= 1 || defined _XOPEN_SOURCE
@@ -224,6 +233,16 @@
#if (_POSIX_C_SOURCE - 0) >= 200112L
# define __USE_XOPEN2K 1
+# undef __USE_ISOC95
+# define __USE_ISOC95 1
+# undef __USE_ISOC99
+# define __USE_ISOC99 1
+#endif
+
+#if (_POSIX_C_SOURCE - 0) >= 200809L
+# define __USE_XOPEN2K8 1
+# undef _ATFILE_SOURCE
+# define _ATFILE_SOURCE 1
#endif
#ifdef _XOPEN_SOURCE
@@ -234,7 +253,14 @@
# undef _LARGEFILE_SOURCE
# define _LARGEFILE_SOURCE 1
# if (_XOPEN_SOURCE - 0) >= 600
+# if (_XOPEN_SOURCE - 0) >= 700
+# define __USE_XOPEN2K8 1
+# define __USE_XOPEN2K8XSI 1
+# endif
# define __USE_XOPEN2K 1
+# define __USE_XOPEN2KXSI 1
+# undef __USE_ISOC95
+# define __USE_ISOC95 1
# undef __USE_ISOC99
# define __USE_ISOC99 1
# endif
@@ -311,7 +337,7 @@
/* Major and minor version number of the GNU C library package. Use
these macros to test for features in specific releases. */
#define __GLIBC__ 2
-#define __GLIBC_MINOR__ 9
+#define __GLIBC_MINOR__ 11
#define __GLIBC_PREREQ(maj, min) \
((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
diff --git a/include/gshadow.h b/include/gshadow.h
new file mode 100644
index 0000000000..8a981f688a
--- /dev/null
+++ b/include/gshadow.h
@@ -0,0 +1,15 @@
+#ifndef _GSHADOW_H
+#include <gshadow/gshadow.h>
+
+extern int __fgetsgent_r (FILE *stream, struct sgrp *resbuf, char *buffer,
+ size_t buflen, struct sgrp **result);
+extern int __sgetsgent_r (const char *string, struct sgrp *resbuf,
+ char *buffer, size_t buflen, struct sgrp **result);
+
+struct parser_data;
+extern int _nss_files_parse_sgent (char *line, struct sgrp *result,
+ struct parser_data *data,
+ size_t datalen, int *errnop);
+libc_hidden_proto (_nss_files_parse_sgent)
+
+#endif
diff --git a/include/inline-hashtab.h b/include/inline-hashtab.h
index c359161c54..0f6719b91c 100644
--- a/include/inline-hashtab.h
+++ b/include/inline-hashtab.h
@@ -1,7 +1,5 @@
/* Fully-inline hash table, used mainly for managing TLS descriptors.
-
- Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005, 2008
- Free Software Foundation, Inc.
+ Copyright (C) 1999-2003, 2005, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Alexandre Oliva <aoliva@redhat.com>
@@ -30,69 +28,6 @@
extern void weak_function free (void *ptr);
-inline static unsigned long
-higher_prime_number (unsigned long n)
-{
- /* These are primes that are near, but slightly smaller than, a
- power of two. */
- static const uint32_t primes[] = {
- UINT32_C (7),
- UINT32_C (13),
- UINT32_C (31),
- UINT32_C (61),
- UINT32_C (127),
- UINT32_C (251),
- UINT32_C (509),
- UINT32_C (1021),
- UINT32_C (2039),
- UINT32_C (4093),
- UINT32_C (8191),
- UINT32_C (16381),
- UINT32_C (32749),
- UINT32_C (65521),
- UINT32_C (131071),
- UINT32_C (262139),
- UINT32_C (524287),
- UINT32_C (1048573),
- UINT32_C (2097143),
- UINT32_C (4194301),
- UINT32_C (8388593),
- UINT32_C (16777213),
- UINT32_C (33554393),
- UINT32_C (67108859),
- UINT32_C (134217689),
- UINT32_C (268435399),
- UINT32_C (536870909),
- UINT32_C (1073741789),
- UINT32_C (2147483647),
- /* 4294967291L */
- UINT32_C (2147483647) + UINT32_C (2147483644)
- };
-
- const uint32_t *low = &primes[0];
- const uint32_t *high = &primes[sizeof (primes) / sizeof (primes[0])];
-
- while (low != high)
- {
- const uint32_t *mid = low + (high - low) / 2;
- if (n > *mid)
- low = mid + 1;
- else
- high = mid;
- }
-
-#if 0
- /* If we've run out of primes, abort. */
- if (n > *low)
- {
- fprintf (stderr, "Cannot find prime bigger than %lu\n", n);
- abort ();
- }
-#endif
-
- return *low;
-}
-
struct hashtab
{
/* Table itself. */
@@ -203,12 +138,11 @@ htab_expand (struct hashtab *htab, int (*hash_fn) (void *))
/* Resize only when table after removal of unused elements is either
too full or too empty. */
if (htab->n_elements * 2 > htab->size)
- nsize = higher_prime_number (htab->n_elements * 2);
+ nsize = _dl_higher_prime_number (htab->n_elements * 2);
else
nsize = htab->size;
- nentries = malloc (sizeof (void *) * nsize);
- memset (nentries, 0, sizeof (void *) * nsize);
+ nentries = calloc (sizeof (void *), nsize);
if (nentries == NULL)
return 0;
htab->entries = nentries;
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index a2faeafb32..252141eb01 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -1,7 +1,6 @@
/* Support macros for making weak and strong aliases for symbols,
and for using symbol sets and linker warnings with GNU ld.
- Copyright (C) 1995-1998,2000-2003,2004,2005,2006
- Free Software Foundation, Inc.
+ Copyright (C) 1995-1998,2000-2006,2008,2009 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
@@ -835,4 +834,43 @@ for linking")
# define compat_data_section .section ".data.compat", "aw";
#endif
+/* Marker used for indirection function symbols. */
+#define libc_ifunc(name, expr) \
+ extern void *name##_ifunc (void) __asm__ (#name); \
+ void *name##_ifunc (void) \
+ { \
+ INIT_ARCH (); \
+ __typeof (name) *res = expr; \
+ return res; \
+ } \
+ __asm__ (".type " #name ", %gnu_indirect_function");
+
+/* The body of the function is supposed to use __get_cpu_features
+ which will, if necessary, initialize the data first. */
+#define libm_ifunc(name, expr) \
+ extern void *name##_ifunc (void) __asm__ (#name); \
+ void *name##_ifunc (void) \
+ { \
+ __typeof (name) *res = expr; \
+ return res; \
+ } \
+ __asm__ (".type " #name ", %gnu_indirect_function");
+
+#ifdef HAVE_ASM_SET_DIRECTIVE
+# define libc_ifunc_hidden_def1(local, name) \
+ __asm__ (declare_symbol_alias_1_stringify (ASM_GLOBAL_DIRECTIVE) \
+ " " #local "\n\t" \
+ ".hidden " #local "\n\t" \
+ ".set " #local ", " #name);
+#else
+# define libc_ifunc_hidden_def1(local, name) \
+ __asm__ (declare_symbol_alias_1_stringify (ASM_GLOBAL_DIRECTIVE) \
+ " " #local "\n\t" \
+ ".hidden " #local "\n\t" \
+ #local " = " #name);
+#endif
+
+#define libc_ifunc_hidden_def(name) \
+ libc_ifunc_hidden_def1 (__GI_##name, name)
+
#endif /* libc-symbols.h */
diff --git a/include/link.h b/include/link.h
index 4b9978ad61..26c67438f0 100644
--- a/include/link.h
+++ b/include/link.h
@@ -1,6 +1,6 @@
/* Data structure for communication from the run-time dynamic linker for
loaded ELF shared objects.
- Copyright (C) 1995-2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1995-2006, 2007, 2009 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
@@ -180,7 +180,6 @@ struct link_map
unsigned int l_need_tls_init:1; /* Nonzero if GL(dl_init_static_tls)
should be called on this link map
when relocation finishes. */
- unsigned int l_used:1; /* Nonzero if the DSO is used. */
unsigned int l_auditing:1; /* Nonzero if the DSO is used in auditing. */
unsigned int l_audit_any_plt:1; /* Nonzero if at least one audit module
is interested in the PLT interception.*/
@@ -239,12 +238,15 @@ struct link_map
struct link_map **l_initfini;
/* List of the dependencies introduced through symbol binding. */
- unsigned int l_reldepsmax;
struct link_map_reldeps
{
unsigned int act;
struct link_map *list[];
} *l_reldeps;
+ unsigned int l_reldepsmax;
+
+ /* Nonzero if the DSO is used. */
+ unsigned int l_used;
/* Various flag words. */
ElfW(Word) l_feature_1;
diff --git a/include/malloc.h b/include/malloc.h
index 1a20248559..42fc8ed696 100644
--- a/include/malloc.h
+++ b/include/malloc.h
@@ -8,20 +8,7 @@
/* Nonzero if the malloc is already initialized. */
extern int __malloc_initialized attribute_hidden;
-/* Internal routines, operating on "arenas". */
struct malloc_state;
typedef struct malloc_state *mstate;
-extern __malloc_ptr_t _int_malloc (mstate __m, size_t __size) attribute_hidden;
-extern void _int_free (mstate __m, __malloc_ptr_t __ptr)
- attribute_hidden;
-extern __malloc_ptr_t _int_realloc (mstate __m,
- __malloc_ptr_t __ptr,
- size_t __size) attribute_hidden;
-extern __malloc_ptr_t _int_memalign (mstate __m, size_t __alignment,
- size_t __size)
- attribute_hidden;
-extern __malloc_ptr_t _int_valloc (mstate __m, size_t __size)
- attribute_hidden;
-
#endif
diff --git a/include/math.h b/include/math.h
index 1005804273..eb29ef1a56 100644
--- a/include/math.h
+++ b/include/math.h
@@ -22,9 +22,12 @@ hidden_proto (__isnanl)
libm_hidden_proto (__fpclassify)
libm_hidden_proto (__fpclassifyf)
+libm_hidden_proto (__exp)
+libm_hidden_proto (__expf)
# ifndef __NO_LONG_DOUBLE_MATH
libm_hidden_proto (__fpclassifyl)
+libm_hidden_proto (__expl)
libm_hidden_proto (__expm1l)
# endif
diff --git a/include/rpc/auth.h b/include/rpc/auth.h
index bc433b5930..a03188ed44 100644
--- a/include/rpc/auth.h
+++ b/include/rpc/auth.h
@@ -39,4 +39,6 @@ extern AUTH *authdes_pk_create_internal (const char *, netobj *, u_int,
libc_hidden_proto (key_encryptsession_pk)
libc_hidden_proto (key_decryptsession_pk)
+libc_hidden_proto (_null_auth)
+
#endif
diff --git a/include/stdio.h b/include/stdio.h
index d82728a845..6b053b8aee 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -80,7 +80,8 @@ extern int __path_search (char *__tmpl, size_t __tmpl_len,
__const char *__dir, __const char *__pfx,
int __try_tempdir);
-extern int __gen_tempname (char *__tmpl, int __flags, int __kind);
+extern int __gen_tempname (char *__tmpl, int __suffixlen, int __flags,
+ int __kind);
/* The __kind argument to __gen_tempname may be one of: */
# define __GT_FILE 0 /* create a file */
# define __GT_DIR 1 /* create a directory */
@@ -90,7 +91,8 @@ extern int __gen_tempname (char *__tmpl, int __flags, int __kind);
extern void __libc_fatal (__const char *__message)
__attribute__ ((__noreturn__));
extern void __libc_message (int do_abort, __const char *__fnt, ...);
-extern void __fortify_fail (const char *msg) __attribute__ ((noreturn));
+extern void __fortify_fail (const char *msg)
+ __attribute__ ((__noreturn__)) internal_function;
libc_hidden_proto (__fortify_fail)
/* Acquire ownership of STREAM. */
@@ -147,11 +149,13 @@ libc_hidden_proto (fileno)
libc_hidden_proto (fwrite)
libc_hidden_proto (fseek)
libc_hidden_proto (ftello)
+libc_hidden_proto (fflush)
libc_hidden_proto (fflush_unlocked)
libc_hidden_proto (fread_unlocked)
libc_hidden_proto (fwrite_unlocked)
libc_hidden_proto (fgets_unlocked)
libc_hidden_proto (fputs_unlocked)
+libc_hidden_proto (fmemopen)
libc_hidden_proto (open_memstream)
libc_hidden_proto (__libc_fatal)
libc_hidden_proto (__vsprintf_chk)
diff --git a/include/stdlib.h b/include/stdlib.h
index 883bc34d4a..b4799d7d04 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -9,6 +9,9 @@
/* Now define the internal interfaces. */
#ifndef __Need_M_And_C
+# ifndef _ISOMAC
+# include <sys/stat.h>
+# endif
__BEGIN_DECLS
@@ -77,6 +80,10 @@ extern int __clearenv (void);
extern char *__canonicalize_file_name (__const char *__name);
extern char *__realpath (__const char *__name, char *__resolved);
extern int __ptsname_r (int __fd, char *__buf, size_t __buflen);
+# ifndef _ISOMAC
+extern int __ptsname_internal (int fd, char *buf, size_t buflen,
+ struct stat64 *stp);
+# endif
extern int __getpt (void);
extern int __posix_openpt (int __oflag);
@@ -221,6 +228,9 @@ extern int __qfcvt_r (long double __value, int __ndigit,
extern void *__default_morecore (ptrdiff_t) __THROW;
libc_hidden_proto (__default_morecore)
+extern char *__abort_msg;
+libc_hidden_proto (__abort_msg)
+
__END_DECLS
#undef __Need_M_And_C
diff --git a/include/unistd.h b/include/unistd.h
index 34d7477f9e..ccba893abe 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -1,6 +1,8 @@
#ifndef _UNISTD_H
# include <posix/unistd.h>
+__BEGIN_DECLS
+
libc_hidden_proto (_exit, __noreturn__)
libc_hidden_proto (alarm)
libc_hidden_proto (confstr)
@@ -61,6 +63,8 @@ extern int __chdir (__const char *__path);
extern int __fchdir (int __fd);
extern char *__getcwd (char *__buf, size_t __size);
extern int __rmdir (const char *__path);
+extern int __execvpe (const char *file, char *const argv[],
+ char *const envp[]);
/* Get the canonical absolute name of the named directory, and put it in SIZE
bytes of BUF. Returns NULL if the directory couldn't be determined or
@@ -172,4 +176,6 @@ extern int __have_sock_cloexec;
unless it is really necessary. */
#define __have_pipe2 __have_sock_cloexec
+__END_DECLS
+
#endif
diff --git a/inet/.cvsignore b/inet/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/inet/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/inet/Makefile b/inet/Makefile
index d7139c1d7f..37985940ae 100644
--- a/inet/Makefile
+++ b/inet/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 1991-2006, 2007, 2009 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
@@ -52,7 +52,8 @@ routines := htonl htons \
aux := check_pf check_native ifreq
tests := htontest test_ifindex tst-ntoa tst-ether_aton tst-network \
- tst-gethnm test-ifaddrs bug-if1 test-inet6_opt tst-ether_line
+ tst-gethnm test-ifaddrs bug-if1 test-inet6_opt tst-ether_line \
+ tst-getni1 tst-getni2 tst-inet6_rth
include ../Rules
diff --git a/inet/getnameinfo.c b/inet/getnameinfo.c
index 50240383f3..db6b5c7eee 100644
--- a/inet/getnameinfo.c
+++ b/inet/getnameinfo.c
@@ -178,6 +178,9 @@ getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host,
if (sa == NULL || addrlen < sizeof (sa_family_t))
return EAI_FAMILY;
+ if ((flags & NI_NAMEREQD) && host == NULL && serv == NULL)
+ return EAI_NONAME;
+
switch (sa->sa_family)
{
case AF_LOCAL:
diff --git a/inet/inet6_option.c b/inet/inet6_option.c
index b34eb22b7d..aa693cc9e4 100644
--- a/inet/inet6_option.c
+++ b/inet/inet6_option.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
@@ -216,7 +216,8 @@ option_alloc (struct cmsghdr *cmsg, int datalen, int multx, int plusy)
/* Too long. */
return NULL;
- ((struct ip6_ext *) CMSG_DATA (cmsg))->ip6e_len = len8b;
+ struct ip6_ext *ie = (void *) CMSG_DATA (cmsg);
+ ie->ip6e_len = len8b;
return result;
}
diff --git a/inet/inet6_rth.c b/inet/inet6_rth.c
index 15f8240909..36269fc6a4 100644
--- a/inet/inet6_rth.c
+++ b/inet/inet6_rth.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2006.
@@ -93,6 +93,9 @@ inet6_rth_add (void *bp, const struct in6_addr *addr)
struct ip6_rthdr0 *rthdr0;
case IPV6_RTHDR_TYPE_0:
rthdr0 = (struct ip6_rthdr0 *) rthdr;
+ if (rthdr0->ip6r0_len * 8 / sizeof (struct in6_addr)
+ - rthdr0->ip6r0_segleft < 1)
+ return -1;
memcpy (&rthdr0->ip6r0_addr[rthdr0->ip6r0_segleft++],
addr, sizeof (struct in6_addr));
@@ -127,7 +130,7 @@ inet6_rth_reverse (const void *in, void *out)
/* Copy header, not the addresses. The memory regions can overlap. */
memmove (out_rthdr0, in_rthdr0, sizeof (struct ip6_rthdr0));
- int total = in_rthdr0->ip6r0_segleft * 8 / sizeof (struct in6_addr);
+ int total = in_rthdr0->ip6r0_len * 8 / sizeof (struct in6_addr);
for (int i = 0; i < total / 2; ++i)
{
/* Remember, IN_RTHDR0 and OUT_RTHDR0 might overlap. */
@@ -138,6 +141,8 @@ inet6_rth_reverse (const void *in, void *out)
if (total % 2 != 0 && in != out)
out_rthdr0->ip6r0_addr[total / 2] = in_rthdr0->ip6r0_addr[total / 2];
+ out_rthdr0->ip6r0_segleft = total;
+
return 0;
}
diff --git a/inet/netinet/icmp6.h b/inet/netinet/icmp6.h
index 0cb1aa6a6c..82893daa99 100644
--- a/inet/netinet/icmp6.h
+++ b/inet/netinet/icmp6.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1997,2000,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1997,2000,2006,2009 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
@@ -339,7 +339,7 @@ struct nd_opt_home_agent_info
uint8_t nd_opt_home_agent_info_type;
uint8_t nd_opt_home_agent_info_len;
uint16_t nd_opt_home_agent_info_reserved;
- int16_t nd_opt_home_agent_info_preference;
+ uint16_t nd_opt_home_agent_info_preference;
uint16_t nd_opt_home_agent_info_lifetime;
};
diff --git a/inet/rcmd.c b/inet/rcmd.c
index 5dcbd25568..343e0954db 100644
--- a/inet/rcmd.c
+++ b/inet/rcmd.c
@@ -112,7 +112,13 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)
{
char paddr[INET6_ADDRSTRLEN];
struct addrinfo hints, *res, *ai;
- struct sockaddr_storage from;
+ union
+ {
+ struct sockaddr sa;
+ struct sockaddr_storage ss;
+ struct sockaddr_in sin;
+ struct sockaddr_in6 sin6;
+ } from;
struct pollfd pfd[2];
int32_t oldmask;
pid_t pid;
@@ -274,14 +280,13 @@ poll: protocol failure in circuit setup\n")) >= 0))
(void)__close(s2);
goto bad;
}
- s3 = TEMP_FAILURE_RETRY (accept(s2, (struct sockaddr *)&from,
- &len));
- switch (from.ss_family) {
+ s3 = TEMP_FAILURE_RETRY (accept(s2, &from.sa, &len));
+ switch (from.sa.sa_family) {
case AF_INET:
- rport = ntohs(((struct sockaddr_in *)&from)->sin_port);
+ rport = ntohs(from.sin.sin_port);
break;
case AF_INET6:
- rport = ntohs(((struct sockaddr_in6 *)&from)->sin6_port);
+ rport = ntohs(from.sin6.sin6_port);
break;
default:
rport = 0;
@@ -605,13 +610,13 @@ iruserok_af (raddr, superuser, ruser, luser, af)
memset (&ra, '\0', sizeof(ra));
switch (af){
case AF_INET:
- ((struct sockaddr_in *)&ra)->sin_family = AF_INET;
+ ra.ss_family = AF_INET;
memcpy (&(((struct sockaddr_in *)&ra)->sin_addr), raddr,
sizeof(struct in_addr));
ralen = sizeof(struct sockaddr_in);
break;
case AF_INET6:
- ((struct sockaddr_in6 *)&ra)->sin6_family = AF_INET6;
+ ra.ss_family = AF_INET6;
memcpy (&(((struct sockaddr_in6 *)&ra)->sin6_addr), raddr,
sizeof(struct in6_addr));
ralen = sizeof(struct sockaddr_in6);
diff --git a/inet/rexec.c b/inet/rexec.c
index 07ddeeafea..75bb47082b 100644
--- a/inet/rexec.c
+++ b/inet/rexec.c
@@ -56,7 +56,7 @@ rexec_af(ahost, rport, name, pass, cmd, fd2p, af)
int *fd2p;
sa_family_t af;
{
- struct sockaddr_storage sa2, from;
+ struct sockaddr_storage from;
struct addrinfo hints, *res0;
const char *orig_name = name;
const char *orig_pass = pass;
@@ -115,6 +115,11 @@ retry:
} else {
char num[32];
int s2;
+ union
+ {
+ struct sockaddr_storage ss;
+ struct sockaddr sa;
+ } sa2;
socklen_t sa2len;
s2 = __socket(res0->ai_family, res0->ai_socktype, 0);
@@ -124,17 +129,17 @@ retry:
}
__listen(s2, 1);
sa2len = sizeof (sa2);
- if (__getsockname(s2, (struct sockaddr *)&sa2, &sa2len) < 0) {
+ if (__getsockname(s2, &sa2.sa, &sa2len) < 0) {
perror("getsockname");
(void) __close(s2);
goto bad;
- } else if (sa2len != SA_LEN((struct sockaddr *)&sa2)) {
+ } else if (sa2len != SA_LEN(&sa2.sa)) {
__set_errno(EINVAL);
(void) __close(s2);
goto bad;
}
port = 0;
- if (!getnameinfo((struct sockaddr *)&sa2, sa2len,
+ if (!getnameinfo(&sa2.sa, sa2len,
NULL, 0, servbuff, sizeof(servbuff),
NI_NUMERICSERV))
port = atoi(servbuff);
diff --git a/inet/tst-getni1.c b/inet/tst-getni1.c
new file mode 100644
index 0000000000..0e8a792f49
--- /dev/null
+++ b/inet/tst-getni1.c
@@ -0,0 +1,36 @@
+#include <netdb.h>
+#include <stdio.h>
+#include <sys/socket.h>
+
+static int
+do_test (void)
+{
+ int retval = 0;
+
+ struct sockaddr_in s;
+ s.sin_family = AF_INET;
+ s.sin_port = 80;
+ s.sin_addr.s_addr = INADDR_LOOPBACK;
+ int r = getnameinfo((struct sockaddr *) &s, sizeof (s), NULL, 0, NULL, 0,
+ NI_NUMERICHOST | NI_NUMERICSERV);
+ printf("r = %d\n", r);
+ if (r != 0)
+ {
+ puts ("failed without NI_NAMEREQD");
+ retval = 1;
+ }
+
+ r = getnameinfo((struct sockaddr *) &s, sizeof (s), NULL, 0, NULL, 0,
+ NI_NUMERICHOST | NI_NUMERICSERV | NI_NAMEREQD);
+ printf("r = %d\n", r);
+ if (r != EAI_NONAME)
+ {
+ puts ("did not fail with EAI_NONAME with NI_NAMEREQD set");
+ retval = 1;
+ }
+
+ return retval;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/inet/tst-getni2.c b/inet/tst-getni2.c
new file mode 100644
index 0000000000..b949d888d5
--- /dev/null
+++ b/inet/tst-getni2.c
@@ -0,0 +1,41 @@
+#include <netdb.h>
+#include <stdio.h>
+#include <sys/socket.h>
+
+static int
+do_test (void)
+{
+ int retval = 0;
+
+ struct sockaddr_in6 s;
+ s.sin6_family = AF_INET6;
+ s.sin6_port = htons (80);
+ s.sin6_flowinfo = 0;
+ s.sin6_addr = (struct in6_addr) IN6ADDR_ANY_INIT;
+ s.sin6_scope_id = 0;
+ char buf[1000];
+ buf[0] = '\0';
+ int r = getnameinfo((struct sockaddr *) &s, sizeof (s), buf, sizeof (buf),
+ NULL, 0, NI_NUMERICSERV);
+ printf("r = %d, buf = \"%s\"\n", r, buf);
+ if (r != 0)
+ {
+ puts ("failed without NI_NAMEREQD");
+ retval = 1;
+ }
+
+ buf[0] = '\0';
+ r = getnameinfo((struct sockaddr *) &s, sizeof (s), buf, sizeof (buf),
+ NULL, 0, NI_NUMERICSERV | NI_NAMEREQD);
+ printf("r = %d, buf = \"%s\"\n", r, buf);
+ if (r != EAI_NONAME)
+ {
+ puts ("did not fail with EAI_NONAME with NI_NAMEREQD set");
+ retval = 1;
+ }
+
+ return retval;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/inet/tst-inet6_rth.c b/inet/tst-inet6_rth.c
new file mode 100644
index 0000000000..4c5c90ac01
--- /dev/null
+++ b/inet/tst-inet6_rth.c
@@ -0,0 +1,188 @@
+#include <stdio.h>
+#include <string.h>
+#include <arpa/inet.h>
+#include <netinet/ip6.h>
+
+static int
+do_test (void)
+{
+ int res = 0;
+ char buf[1000];
+ void *p = inet6_rth_init (buf, 24, IPV6_RTHDR_TYPE_0, 0);
+ if (p == NULL)
+ {
+ puts ("first inet6_rth_init failed");
+ res = 1;
+ }
+ else if (inet6_rth_add (p, &in6addr_any) == 0)
+ {
+ puts ("first inet6_rth_add succeeded");
+ res = 1;
+ }
+
+ p = inet6_rth_init (buf, 24, IPV6_RTHDR_TYPE_0, 1);
+ if (p == NULL)
+ {
+ puts ("second inet6_rth_init failed");
+ res = 1;
+ }
+ else if (inet6_rth_add (p, &in6addr_any) != 0)
+ {
+ puts ("second inet6_rth_add failed");
+ res = 1;
+ }
+
+ for (int nseg = 4; nseg < 6; ++nseg)
+ {
+ printf ("nseg = %d\n", nseg);
+
+ p = inet6_rth_init (buf, sizeof (buf), IPV6_RTHDR_TYPE_0, nseg);
+ if (p == NULL)
+ {
+ puts ("third inet6_rth_init failed");
+ res = 1;
+ }
+ else
+ {
+ struct in6_addr tmp;
+ memset (&tmp, '\0', sizeof (tmp));
+
+ for (int i = 0; i < nseg; ++i)
+ {
+ tmp.s6_addr[0] = i;
+ if (inet6_rth_add (p, &tmp) != 0)
+ {
+ printf ("call %d of third inet6_rth_add failed\n", i + 1);
+ res = 1;
+ goto out;
+ }
+ }
+ ((struct ip6_rthdr0 *) p)->ip6r0_segleft = 0;
+ if (inet6_rth_segments (p) != nseg)
+ {
+ puts ("\
+inet6_rth_segments returned wrong value after loop with third inet6_rth_add");
+ res = 1;
+ goto out;
+ }
+
+ char buf2[1000];
+ if (inet6_rth_reverse (p, buf2) != 0)
+ {
+ puts ("first inet6_rth_reverse call failed");
+ res = 1;
+ goto out;
+ }
+ if (((struct ip6_rthdr0 *) buf2)->ip6r0_segleft != nseg)
+ {
+ puts ("segleft after first inet6_rth_reverse wrong");
+ res = 1;
+ }
+
+ if (inet6_rth_segments (p) != inet6_rth_segments (buf2))
+ {
+ puts ("number of seconds after first inet6_rth_reverse differs");
+ res = 1;
+ goto out;
+ }
+
+ for (int i = 0; i < nseg; ++i)
+ {
+ struct in6_addr *addr = inet6_rth_getaddr (buf2, i);
+ if (addr == NULL)
+ {
+ printf ("call %d of first inet6_rth_getaddr failed\n",
+ i + 1);
+ res = 1;
+ }
+ else if (addr->s6_addr[0] != nseg - 1 - i
+ || memcmp (&addr->s6_addr[1], &in6addr_any.s6_addr[1],
+ sizeof (in6addr_any)
+ - sizeof (in6addr_any.s6_addr[0])) != 0)
+ {
+ char addrbuf[100];
+ inet_ntop (AF_INET6, addr, addrbuf, sizeof (addrbuf));
+ printf ("\
+address %d after first inet6_rth_reverse wrong (%s)\n",
+ i + 1, addrbuf);
+ res = 1;
+ }
+ }
+ out:
+ ;
+ }
+
+ p = inet6_rth_init (buf, sizeof (buf), IPV6_RTHDR_TYPE_0, nseg);
+ if (p == NULL)
+ {
+ puts ("fourth inet6_rth_init failed");
+ res = 1;
+ }
+ else
+ {
+ struct in6_addr tmp;
+ memset (&tmp, '\0', sizeof (tmp));
+
+ for (int i = 0; i < nseg; ++i)
+ {
+ tmp.s6_addr[0] = i;
+ if (inet6_rth_add (p, &tmp) != 0)
+ {
+ printf ("call %d of fourth inet6_rth_add failed\n", i + 1);
+ res = 1;
+ goto out2;
+ }
+ }
+ ((struct ip6_rthdr0 *) p)->ip6r0_segleft = 0;
+ if (inet6_rth_segments (p) != nseg)
+ {
+ puts ("\
+inet6_rth_segments returned wrong value after loop with fourth inet6_rth_add");
+ res = 1;
+ goto out2;
+ }
+
+ if (inet6_rth_reverse (p, p) != 0)
+ {
+ puts ("second inet6_rth_reverse call failed");
+ res = 1;
+ goto out2;
+ }
+ if (((struct ip6_rthdr0 *) p)->ip6r0_segleft != nseg)
+ {
+ puts ("segleft after second inet6_rth_reverse wrong");
+ res = 1;
+ }
+
+ for (int i = 0; i < nseg; ++i)
+ {
+ struct in6_addr *addr = inet6_rth_getaddr (p, i);
+ if (addr == NULL)
+ {
+ printf ("call %d of second inet6_rth_getaddr failed\n",
+ i + 1);
+ res = 1;
+ }
+ else if (addr->s6_addr[0] != nseg - 1 - i
+ || memcmp (&addr->s6_addr[1], &in6addr_any.s6_addr[1],
+ sizeof (in6addr_any)
+ - sizeof (in6addr_any.s6_addr[0])) != 0)
+ {
+ char addrbuf[100];
+ inet_ntop (AF_INET6, addr, addrbuf, sizeof (addrbuf));
+ printf ("\
+address %d after second inet6_rth_reverse wrong (%s)\n",
+ i + 1, addrbuf);
+ res = 1;
+ }
+ }
+ out2:
+ ;
+ }
+ }
+
+ return res;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/intl/.cvsignore b/intl/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/intl/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/intl/dcigettext.c b/intl/dcigettext.c
index e0782446e4..16d901e7d0 100644
--- a/intl/dcigettext.c
+++ b/intl/dcigettext.c
@@ -1,5 +1,5 @@
/* Implementation of the internal dcigettext function.
- Copyright (C) 1995-2005, 2006, 2007, 2008
+ Copyright (C) 1995-2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -553,18 +553,7 @@ DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category)
}
if (ret == NULL)
- {
- /* We cannot get the current working directory. Don't signal an
- error but simply return the default string. */
- FREE_BLOCKS (block_list);
- __libc_rwlock_unlock (__libc_setlocale_lock);
- __libc_rwlock_unlock (_nl_state_lock);
- __set_errno (saved_errno);
- return (plural == 0
- ? (char *) msgid1
- /* Use the Germanic plural rule. */
- : n == 1 ? (char *) msgid1 : (char *) msgid2);
- }
+ goto no_translation;
stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
}
diff --git a/io/.cvsignore b/io/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/io/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/io/fcntl.h b/io/fcntl.h
index 330bb30885..4eb003be46 100644
--- a/io/fcntl.h
+++ b/io/fcntl.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1992,1994-2001,2003,2004,2005,2006,2007
+/* Copyright (C) 1991,1992,1994-2001,2003,2004,2005,2006,2007,2009,2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -34,8 +34,54 @@ __BEGIN_DECLS
#include <bits/fcntl.h>
/* For XPG all symbols from <sys/stat.h> should also be available. */
-#ifdef __USE_XOPEN
-# include <sys/stat.h>
+#if defined __USE_XOPEN || defined __USE_XOPEN2K8
+# include <bits/types.h> /* For __mode_t and __dev_t. */
+# define __need_timespec
+# include <time.h>
+# include <bits/stat.h>
+
+# define S_IFMT __S_IFMT
+# define S_IFDIR __S_IFDIR
+# define S_IFCHR __S_IFCHR
+# define S_IFBLK __S_IFBLK
+# define S_IFREG __S_IFREG
+# ifdef __S_IFIFO
+# define S_IFIFO __S_IFIFO
+# endif
+# ifdef __S_IFLNK
+# define S_IFLNK __S_IFLNK
+# endif
+# if (defined __USE_UNIX98 || defined __USE_XOPEN2K8) && defined __S_IFSOCK
+# define S_IFSOCK __S_IFSOCK
+# endif
+
+/* Protection bits. */
+
+# define S_ISUID __S_ISUID /* Set user ID on execution. */
+# define S_ISGID __S_ISGID /* Set group ID on execution. */
+
+# if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN
+/* Save swapped text after use (sticky bit). This is pretty well obsolete. */
+# define S_ISVTX __S_ISVTX
+# endif
+
+# define S_IRUSR __S_IREAD /* Read by owner. */
+# define S_IWUSR __S_IWRITE /* Write by owner. */
+# define S_IXUSR __S_IEXEC /* Execute by owner. */
+/* Read, write, and execute by owner. */
+# define S_IRWXU (__S_IREAD|__S_IWRITE|__S_IEXEC)
+
+# define S_IRGRP (S_IRUSR >> 3) /* Read by group. */
+# define S_IWGRP (S_IWUSR >> 3) /* Write by group. */
+# define S_IXGRP (S_IXUSR >> 3) /* Execute by group. */
+/* Read, write, and execute by group. */
+# define S_IRWXG (S_IRWXU >> 3)
+
+# define S_IROTH (S_IRGRP >> 3) /* Read by others. */
+# define S_IWOTH (S_IWGRP >> 3) /* Write by others. */
+# define S_IXOTH (S_IXGRP >> 3) /* Execute by others. */
+/* Read, write, and execute by others. */
+# define S_IRWXO (S_IRWXG >> 3)
#endif
#ifdef __USE_MISC
@@ -49,8 +95,8 @@ __BEGIN_DECLS
# endif
#endif /* Use misc. */
-/* XPG wants the following symbols. */
-#ifdef __USE_XOPEN /* <stdio.h> has the same definitions. */
+/* XPG wants the following symbols. <stdio.h> has the same definitions. */
+#if defined __USE_XOPEN || defined __USE_XOPEN2K8
# define SEEK_SET 0 /* Seek from beginning of file. */
# define SEEK_CUR 1 /* Seek from current position. */
# define SEEK_END 2 /* Seek from end of file. */
@@ -116,9 +162,10 @@ extern int __REDIRECT (openat, (int __fd, __const char *__file, int __oflag,
# define openat openat64
# endif
# endif
-
+# ifdef __USE_LARGEFILE64
extern int openat64 (int __fd, __const char *__file, int __oflag, ...)
__nonnull ((2));
+# endif
#endif
/* Create and open FILE, with mode MODE. This takes an `int' MODE
@@ -158,11 +205,11 @@ extern int creat64 (__const char *__file, __mode_t __mode) __nonnull ((1));
# ifndef __USE_FILE_OFFSET64
extern int lockf (int __fd, int __cmd, __off_t __len);
# else
-# ifdef __REDIRECT
+# ifdef __REDIRECT
extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len), lockf64);
-# else
-# define lockf lockf64
-# endif
+# else
+# define lockf lockf64
+# endif
# endif
# ifdef __USE_LARGEFILE64
extern int lockf64 (int __fd, int __cmd, __off64_t __len);
@@ -176,13 +223,13 @@ extern int lockf64 (int __fd, int __cmd, __off64_t __len);
extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len,
int __advise) __THROW;
# else
-# ifdef __REDIRECT_NTH
+ # ifdef __REDIRECT_NTH
extern int __REDIRECT_NTH (posix_fadvise, (int __fd, __off64_t __offset,
__off64_t __len, int __advise),
posix_fadvise64);
-# else
-# define posix_fadvise posix_fadvise64
-# endif
+# else
+# define posix_fadvise posix_fadvise64
+# endif
# endif
# ifdef __USE_LARGEFILE64
extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len,
@@ -197,13 +244,13 @@ extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len,
# ifndef __USE_FILE_OFFSET64
extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len);
# else
-# ifdef __REDIRECT
+ # ifdef __REDIRECT
extern int __REDIRECT (posix_fallocate, (int __fd, __off64_t __offset,
__off64_t __len),
posix_fallocate64);
-# else
-# define posix_fallocate posix_fallocate64
-# endif
+# else
+# define posix_fallocate posix_fallocate64
+# endif
# endif
# ifdef __USE_LARGEFILE64
extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len);
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 364c43f8f4..733a927888 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1995-2004, 2005, 2006, 2007
+/* Copyright (C) 1991, 1992, 1995-2004, 2005, 2006, 2007, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -29,7 +29,7 @@
#include <bits/types.h> /* For __mode_t and __dev_t. */
#if defined __USE_XOPEN || defined __USE_XOPEN2K || defined __USE_MISC \
- || defined __USE_ATFILE
+ || defined __USE_ATFILE
# if defined __USE_XOPEN || defined __USE_XOPEN2K
# define __need_time_t
# endif
@@ -249,12 +249,14 @@ extern int __REDIRECT_NTH (fstatat, (int __fd, __const char *__restrict __file,
# endif
# endif
+# ifdef __USE_LARGEFILE64
extern int fstatat64 (int __fd, __const char *__restrict __file,
struct stat64 *__restrict __buf, int __flag)
__THROW __nonnull ((2, 3));
+# endif
#endif
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
# ifndef __USE_FILE_OFFSET64
/* Get file attributes about FILE and put them in BUF.
If FILE is a symbolic link, do not follow it. */
@@ -291,14 +293,15 @@ extern int lchmod (__const char *__file, __mode_t __mode)
#endif
/* Set file access permissions of the file FD is open on to MODE. */
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
extern int fchmod (int __fd, __mode_t __mode) __THROW;
#endif
#ifdef __USE_ATFILE
/* Set file access permissions of FILE relative to
the directory FD is open on. */
-extern int fchmodat (int __fd, __const char *__file, __mode_t mode, int __flag)
+extern int fchmodat (int __fd, __const char *__file, __mode_t __mode,
+ int __flag)
__THROW __nonnull ((2)) __wur;
#endif /* Use ATFILE. */
@@ -332,14 +335,14 @@ extern int mkdirat (int __fd, __const char *__path, __mode_t __mode)
#if defined __USE_MISC || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
__THROW __nonnull ((1));
-#endif
-#ifdef __USE_ATFILE
+# ifdef __USE_ATFILE
/* Like mknod, create a new device file with permission bits MODE and
device number DEV. But interpret relative PATH names relative to
the directory associated with FD. */
extern int mknodat (int __fd, __const char *__path, __mode_t __mode,
__dev_t __dev) __THROW __nonnull ((2));
+# endif
#endif
@@ -364,8 +367,7 @@ extern int utimensat (int __fd, __const char *__path,
__THROW __nonnull ((2));
#endif
-#ifdef __USE_GNU
-/* XXX This will change to the macro for the next 2008 POSIX revision. */
+#ifdef __USE_XOPEN2K8
/* Set file access and modification times of the file associated with FD. */
extern int futimens (int __fd, __const struct timespec __times[2]) __THROW;
#endif
@@ -516,7 +518,7 @@ __NTH (fstat64 (int __fd, struct stat64 *__statbuf))
return __fxstat64 (_STAT_VER, __fd, __statbuf);
}
-# ifdef __USE_GNU
+# ifdef __USE_ATFILE
__extern_inline int
__NTH (fstatat64 (int __fd, __const char *__filename, struct stat64 *__statbuf,
int __flag))
diff --git a/libio/.cvsignore b/libio/.cvsignore
deleted file mode 100644
index 602b74c1ae..0000000000
--- a/libio/.cvsignore
+++ /dev/null
@@ -1,8 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-
-mpn-copy.mk
-distinfo
diff --git a/libio/Makefile b/libio/Makefile
index 385040fb96..83b9458dc2 100644
--- a/libio/Makefile
+++ b/libio/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1995-2004,2006,2007,2008 Free Software Foundation, Inc.
+# Copyright (C) 1995-2004,2006,2007,2008,2009 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
@@ -58,7 +58,7 @@ tests = tst_swprintf tst_wprintf tst_swscanf tst_wscanf tst_getwc tst_putwc \
tst-memstream1 tst-memstream2 \
tst-wmemstream1 tst-wmemstream2 \
bug-memstream1 bug-wmemstream1 \
- tst-setvbuf1 tst-popen1
+ tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos
test-srcs = test-freopen
all: # Make this the default target; it will be defined in Rules.
@@ -153,6 +153,7 @@ tst-ungetwc2-ENV = LOCPATH=$(common-objpfx)localedata
bug-ungetwc2-ENV = LOCPATH=$(common-objpfx)localedata
tst-swscanf-ENV = LOCPATH=$(common-objpfx)localedata
bug-ftell-ENV = LOCPATH=$(common-objpfx)localedata
+tst-fgetwc-ENV = LOCPATH=$(common-objpfx)localedata
generated = tst-fopenloc.mtrace tst-fopenloc.check
diff --git a/libio/bug-wsetpos.c b/libio/bug-wsetpos.c
new file mode 100644
index 0000000000..ccb22a4b62
--- /dev/null
+++ b/libio/bug-wsetpos.c
@@ -0,0 +1,75 @@
+/* Test program for fsetpos on a wide character stream. */
+
+#include <assert.h>
+#include <stdio.h>
+#include <wchar.h>
+
+static void do_prepare (void);
+#define PREPARE(argc, argv) do_prepare ()
+static int do_test (void);
+#define TEST_FUNCTION do_test ()
+#include <test-skeleton.c>
+
+static const char pattern[] = "12345";
+static char *temp_file;
+
+static void
+do_prepare (void)
+{
+ int fd = create_temp_file ("bug-wsetpos.", &temp_file);
+ if (fd == -1)
+ {
+ printf ("cannot create temporary file: %m\n");
+ exit (1);
+ }
+ write (fd, pattern, sizeof (pattern));
+ close (fd);
+}
+
+static int
+do_test (void)
+{
+ FILE *fp = fopen (temp_file, "r");
+ fpos_t pos;
+ wchar_t c;
+
+ if (fp == NULL)
+ {
+ printf ("fdopen: %m\n");
+ return 1;
+ }
+
+ c = fgetwc (fp); assert (c == L'1');
+ c = fgetwc (fp); assert (c == L'2');
+
+ if (fgetpos (fp, &pos) == EOF)
+ {
+ printf ("fgetpos: %m\n");
+ return 1;
+ }
+
+ rewind (fp);
+ if (ferror (fp))
+ {
+ printf ("rewind: %m\n");
+ return 1;
+ }
+
+ c = fgetwc (fp); assert (c == L'1');
+
+ if (fsetpos (fp, &pos) == EOF)
+ {
+ printf ("fsetpos: %m\n");
+ return 1;
+ }
+
+ c = fgetwc (fp);
+ if (c != L'3')
+ {
+ puts ("fsetpos failed");
+ return 1;
+ }
+
+ puts ("Test succeeded.");
+ return 0;
+}
diff --git a/libio/fileops.c b/libio/fileops.c
index cf47c915a7..4698953f7a 100644
--- a/libio/fileops.c
+++ b/libio/fileops.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1997-2005, 2006, 2007, 2008
+/* Copyright (C) 1993, 1995, 1997-2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Per Bothner <bothner@cygnus.com>.
@@ -319,11 +319,11 @@ _IO_new_file_fopen (fp, filename, mode, is32not64)
continue;
case 'c':
fp->_flags2 |= _IO_FLAGS2_NOTCANCEL;
- break;
+ continue;
#ifdef O_CLOEXEC
case 'e':
oflags |= O_CLOEXEC;
- break;
+ continue;
#endif
default:
/* Ignore. */
diff --git a/libio/fmemopen.c b/libio/fmemopen.c
index b618ce585d..d3750fc7de 100644
--- a/libio/fmemopen.c
+++ b/libio/fmemopen.c
@@ -1,5 +1,6 @@
/* Fmemopen implementation.
- Copyright (C) 2000, 2002, 2005, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2002, 2005, 2006, 2008, 2009
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Hanno Mueller, kontakt@hanno.de, 2000.
@@ -258,3 +259,4 @@ fmemopen (void *buf, size_t len, const char *mode)
return _IO_fopencookie (c, mode, iof);
}
+libc_hidden_def (fmemopen)
diff --git a/libio/iofflush.c b/libio/iofflush.c
index d2d57f57e0..3294276b28 100644
--- a/libio/iofflush.c
+++ b/libio/iofflush.c
@@ -49,6 +49,7 @@ INTDEF(_IO_fflush)
#ifdef weak_alias
weak_alias (_IO_fflush, fflush)
+libc_hidden_weak (fflush)
#ifndef _IO_MTSAFE_IO
weak_alias (_IO_fflush, fflush_unlocked)
diff --git a/libio/ioputs.c b/libio/ioputs.c
index 2f43e994e3..7fa5db5f1f 100644
--- a/libio/ioputs.c
+++ b/libio/ioputs.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993,1996,1997,1998,1999,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1996-1999,2003,2009 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
@@ -27,6 +27,7 @@
#include "libioP.h"
#include <string.h>
+#include <limits.h>
int
_IO_puts (str)
@@ -40,7 +41,7 @@ _IO_puts (str)
|| _IO_fwide (_IO_stdout, -1) == -1)
&& _IO_sputn (_IO_stdout, str, len) == len
&& _IO_putc_unlocked ('\n', _IO_stdout) != EOF)
- result = len + 1;
+ result = MIN (INT_MAX, len + 1);
_IO_release_lock (_IO_stdout);
return result;
diff --git a/libio/iovsprintf.c b/libio/iovsprintf.c
index 7fcd0a156e..ab82411097 100644
--- a/libio/iovsprintf.c
+++ b/libio/iovsprintf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997-2003, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1997-2003, 2006, 2009 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
@@ -38,10 +38,10 @@ __IO_vsprintf (char *string, const char *format, _IO_va_list args)
sf._sbf._f._lock = NULL;
#endif
_IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
+ _IO_JUMPS (&sf._sbf) = &_IO_str_jumps;
_IO_str_init_static_internal (&sf, string, -1, string);
- ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf._sbf, format, args);
- _IO_putc_unlocked ('\0', (_IO_FILE *) &sf._sbf);
+ ret = INTUSE(_IO_vfprintf) (&sf._sbf._f, format, args);
+ _IO_putc_unlocked ('\0', &sf._sbf._f);
return ret;
}
INTDEF2(__IO_vsprintf, _IO_vsprintf)
diff --git a/libio/iovsscanf.c b/libio/iovsscanf.c
index 10e4b0a9ac..6f8a826ef6 100644
--- a/libio/iovsscanf.c
+++ b/libio/iovsscanf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997-2003, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1997-2003, 2006, 2009 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
@@ -40,9 +40,9 @@ _IO_vsscanf (string, format, args)
sf._sbf._f._lock = NULL;
#endif
_IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
+ _IO_JUMPS (&sf._sbf) = &_IO_str_jumps;
_IO_str_init_static_internal (&sf, (char*)string, 0, NULL);
- ret = INTUSE(_IO_vfscanf) ((_IO_FILE *) &sf._sbf, format, args, NULL);
+ ret = INTUSE(_IO_vfscanf) (&sf._sbf._f, format, args, NULL);
return ret;
}
ldbl_weak_alias (_IO_vsscanf, __vsscanf)
diff --git a/libio/libio.h b/libio/libio.h
index 643812f72b..3c9f2bd3e8 100644
--- a/libio/libio.h
+++ b/libio/libio.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1995,1997-2006,2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1995,1997-2006,2007,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Per Bothner <bothner@cygnus.com>.
@@ -442,13 +442,15 @@ extern _IO_wint_t __woverflow (_IO_FILE *, _IO_wint_t);
#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
# define _IO_getwc_unlocked(_fp) \
- (_IO_BE ((_fp)->_wide_data->_IO_read_ptr >= (_fp)->_wide_data->_IO_read_end,\
- 0) \
+ (_IO_BE ((_fp)->_wide_data == NULL \
+ || ((_fp)->_wide_data->_IO_read_ptr \
+ >= (_fp)->_wide_data->_IO_read_end), 0) \
? __wuflow (_fp) : (_IO_wint_t) *(_fp)->_wide_data->_IO_read_ptr++)
# define _IO_putwc_unlocked(_wch, _fp) \
- (_IO_BE ((_fp)->_wide_data->_IO_write_ptr \
- >= (_fp)->_wide_data->_IO_write_end, 0) \
- ? __woverflow (_fp, _wch) \
+ (_IO_BE ((_fp)->_wide_data == NULL \
+ || ((_fp)->_wide_data->_IO_write_ptr \
+ >= (_fp)->_wide_data->_IO_write_end), 0) \
+ ? __woverflow (_fp, _wch) \
: (_IO_wint_t) (*(_fp)->_wide_data->_IO_write_ptr++ = (_wch)))
#endif
diff --git a/libio/oldtmpfile.c b/libio/oldtmpfile.c
index d85467a392..c9e4750cba 100644
--- a/libio/oldtmpfile.c
+++ b/libio/oldtmpfile.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1993,1996-2000,2003,2004,2007
+/* Copyright (C) 1991,1993,1996-2000,2003,2004,2007,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -39,7 +39,7 @@ __old_tmpfile (void)
if (__path_search (buf, FILENAME_MAX, NULL, "tmpf", 0))
return NULL;
- fd = __gen_tempname (buf, 0, __GT_FILE);
+ fd = __gen_tempname (buf, 0, 0, __GT_FILE);
if (fd < 0)
return NULL;
diff --git a/libio/stdio.h b/libio/stdio.h
index 9dacbe2455..85542b1cfd 100644
--- a/libio/stdio.h
+++ b/libio/stdio.h
@@ -1,5 +1,5 @@
/* Define ISO C stdio on top of C++ iostreams.
- Copyright (C) 1991, 1994-2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1994-2008, 2009, 2010 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
@@ -74,7 +74,7 @@ typedef struct _IO_FILE __FILE;
#include <libio.h>
-#ifdef __USE_XOPEN
+#if defined __USE_XOPEN || defined __USE_XOPEN2K8
# ifdef __GNUC__
# ifndef _VA_LIST_DEFINED
typedef _G_va_list va_list;
@@ -85,6 +85,26 @@ typedef _G_va_list va_list;
# endif
#endif
+#ifdef __USE_XOPEN2K8
+# ifndef __off_t_defined
+# ifndef __USE_FILE_OFFSET64
+typedef __off_t off_t;
+# else
+typedef __off64_t off_t;
+# endif
+# define __off_t_defined
+# endif
+# if defined __USE_LARGEFILE64 && !defined __off64_t_defined
+typedef __off64_t off64_t;
+# define __off64_t_defined
+# endif
+
+# ifndef __ssize_t_defined
+typedef __ssize_t ssize_t;
+# define __ssize_t_defined
+# endif
+#endif
+
/* The type of the second argument to `fgetpos' and `fsetpos'. */
__BEGIN_NAMESPACE_STD
#ifndef __USE_FILE_OFFSET64
@@ -289,7 +309,9 @@ extern FILE *fdopen (int __fd, __const char *__modes) __THROW __wur;
extern FILE *fopencookie (void *__restrict __magic_cookie,
__const char *__restrict __modes,
_IO_cookie_io_functions_t __io_funcs) __THROW __wur;
+#endif
+#ifdef __USE_XOPEN2K8
/* Create a new stream that refers to a memory buffer. */
extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
__THROW __wur;
@@ -380,7 +402,9 @@ extern int __asprintf (char **__restrict __ptr,
extern int asprintf (char **__restrict __ptr,
__const char *__restrict __fmt, ...)
__THROW __attribute__ ((__format__ (__printf__, 2, 3))) __wur;
+#endif
+#ifdef __USE_XOPEN2K8
/* Write formatted output to a file descriptor.
These functions are not part of POSIX and therefore no official
@@ -620,7 +644,7 @@ extern char *fgets_unlocked (char *__restrict __s, int __n,
#endif
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* Read up to (and including) a DELIMITER from STREAM into *LINEPTR
(and null-terminate it). *LINEPTR is a pointer returned from malloc (or
NULL), pointing to *N characters of space. It is realloc'd as
diff --git a/libio/strfile.h b/libio/strfile.h
index 53a36a3db8..21ea9a615b 100644
--- a/libio/strfile.h
+++ b/libio/strfile.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997, 1998, 1999, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1997,1998,1999,2005,2009 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
@@ -47,7 +47,7 @@ struct _IO_str_fields
struct _IO_streambuf
{
struct _IO_FILE _f;
- const void *_vtable;
+ const struct _IO_jump_t *vtable;
};
typedef struct _IO_strfile_
diff --git a/libio/tst-fgetwc.c b/libio/tst-fgetwc.c
new file mode 100644
index 0000000000..06e4a424ff
--- /dev/null
+++ b/libio/tst-fgetwc.c
@@ -0,0 +1,52 @@
+#include <locale.h>
+#include <stdio.h>
+#include <wchar.h>
+
+
+static int
+do_test (void)
+{
+ if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL)
+ {
+ puts ("setlocale failed");
+ return 1;
+ }
+
+ if (setvbuf (stdin, NULL, _IONBF, 0) != 0)
+ {
+ puts ("setvbuf failed");
+ return 1;
+ }
+
+ wchar_t buf[100];
+ size_t nbuf = 0;
+ wint_t c;
+ while ((c = fgetwc (stdin)) != WEOF)
+ buf[nbuf++] = c;
+
+ if (ferror (stdin))
+ {
+ puts ("error on stdin");
+ return 1;
+ }
+
+ const wchar_t expected[] =
+ {
+ 0x00000439, 0x00000446, 0x00000443, 0x0000043a,
+ 0x00000435, 0x0000043d, 0x0000000a, 0x00000071,
+ 0x00000077, 0x00000065, 0x00000072, 0x00000074,
+ 0x00000079, 0x0000000a
+ };
+
+ if (nbuf != sizeof (expected) / sizeof (expected[0])
+ || wmemcmp (expected, buf, nbuf) != 0)
+ {
+ puts ("incorrect result");
+ return 1;
+ }
+
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/libio/tst-fgetwc.input b/libio/tst-fgetwc.input
new file mode 100644
index 0000000000..b1a48dadb8
--- /dev/null
+++ b/libio/tst-fgetwc.input
@@ -0,0 +1,2 @@
+йцукен
+qwerty
diff --git a/libio/tst-widetext.input b/libio/tst-widetext.input
index f9694dc6d2..bef07cef3d 100644
--- a/libio/tst-widetext.input
+++ b/libio/tst-widetext.input
@@ -1807,47 +1807,6 @@ Free block (U+D7A4-U+D7FF):
힤힥힦힧힨힩힪힫힬힭힮힯ힰힱힲힳힴힵힶힷힸힹힺힻힼힽힾힿퟀíŸíŸ‚ퟃퟄퟅퟆ퟇퟈퟉퟊ퟋퟌíŸíŸŽíŸíŸíŸ‘ퟒퟓퟔퟕퟖퟗퟘퟙퟚퟛퟜíŸíŸžíŸŸíŸ íŸ¡íŸ¢íŸ£
ퟤퟥퟦퟧퟨퟩퟪퟫퟬퟭퟮퟯퟰퟱퟲퟳퟴퟵퟶퟷퟸퟹퟺퟻ퟼퟽퟾퟿
-High Surrogates (U+D800-U+DB7F):
-
-í €í í ‚í ƒí „í …í †í ‡í ˆí ‰í Ší ‹í Œí í Ží í í ‘í ’í “í ”í •í –í —í ˜í ™í ší ›í œí í ží Ÿí  í ¡í ¢í £í ¤í ¥í ¦í §í ¨í ©í ªí «í ¬í ­í ®í ¯í °í ±í ²í ³í ´í µí ¶í ·í ¸í ¹í ºí »í ¼í ½í ¾í ¿
-í¡€í¡í¡‚í¡ƒí¡„í¡…í¡†í¡‡í¡ˆí¡‰í¡Ší¡‹í¡Œí¡í¡Ží¡í¡í¡‘í¡’í¡“í¡”í¡•í¡–í¡—í¡˜í¡™í¡ší¡›í¡œí¡í¡ží¡Ÿí¡ í¡¡í¡¢í¡£í¡¤í¡¥í¡¦í¡§í¡¨í¡©í¡ªí¡«í¡¬í¡­í¡®í¡¯í¡°í¡±í¡²í¡³í¡´í¡µí¡¶í¡·í¡¸í¡¹í¡ºí¡»í¡¼í¡½í¡¾í¡¿
-í¢€í¢í¢‚í¢ƒí¢„í¢…í¢†í¢‡í¢ˆí¢‰í¢Ší¢‹í¢Œí¢í¢Ží¢í¢í¢‘í¢’í¢“í¢”í¢•í¢–í¢—í¢˜í¢™í¢ší¢›í¢œí¢í¢ží¢Ÿí¢ í¢¡í¢¢í¢£í¢¤í¢¥í¢¦í¢§í¢¨í¢©í¢ªí¢«í¢¬í¢­í¢®í¢¯í¢°í¢±í¢²í¢³í¢´í¢µí¢¶í¢·í¢¸í¢¹í¢ºí¢»í¢¼í¢½í¢¾í¢¿
-í£€í£í£‚í£ƒí£„í£…í£†í£‡í£ˆí£‰í£Ší£‹í£Œí£í£Ží£í£í£‘í£’í£“í£”í£•í£–í£—í£˜í£™í£ší£›í£œí£í£ží£Ÿí£ í£¡í£¢í££í£¤í£¥í£¦í£§í£¨í£©í£ªí£«í£¬í£­í£®í£¯í£°í£±í£²í£³í£´í£µí£¶í£·í£¸í£¹í£ºí£»í£¼í£½í£¾í£¿
-í¤€í¤í¤‚í¤ƒí¤„í¤…í¤†í¤‡í¤ˆí¤‰í¤Ší¤‹í¤Œí¤í¤Ží¤í¤í¤‘í¤’í¤“í¤”í¤•í¤–í¤—í¤˜í¤™í¤ší¤›í¤œí¤í¤ží¤Ÿí¤ í¤¡í¤¢í¤£í¤¤í¤¥í¤¦í¤§í¤¨í¤©í¤ªí¤«í¤¬í¤­í¤®í¤¯í¤°í¤±í¤²í¤³í¤´í¤µí¤¶í¤·í¤¸í¤¹í¤ºí¤»í¤¼í¤½í¤¾í¤¿
-í¥€í¥í¥‚í¥ƒí¥„í¥…í¥†í¥‡í¥ˆí¥‰í¥Ší¥‹í¥Œí¥í¥Ží¥í¥í¥‘í¥’í¥“í¥”í¥•í¥–í¥—í¥˜í¥™í¥ší¥›í¥œí¥í¥ží¥Ÿí¥ í¥¡í¥¢í¥£í¥¤í¥¥í¥¦í¥§í¥¨í¥©í¥ªí¥«í¥¬í¥­í¥®í¥¯í¥°í¥±í¥²í¥³í¥´í¥µí¥¶í¥·í¥¸í¥¹í¥ºí¥»í¥¼í¥½í¥¾í¥¿
-í¦€í¦í¦‚í¦ƒí¦„í¦…í¦†í¦‡í¦ˆí¦‰í¦Ší¦‹í¦Œí¦í¦Ží¦í¦í¦‘í¦’í¦“í¦”í¦•í¦–í¦—í¦˜í¦™í¦ší¦›í¦œí¦í¦ží¦Ÿí¦ í¦¡í¦¢í¦£í¦¤í¦¥í¦¦í¦§í¦¨í¦©í¦ªí¦«í¦¬í¦­í¦®í¦¯í¦°í¦±í¦²í¦³í¦´í¦µí¦¶í¦·í¦¸í¦¹í¦ºí¦»í¦¼í¦½í¦¾í¦¿
-í§€í§í§‚í§ƒí§„í§…í§†í§‡í§ˆí§‰í§Ší§‹í§Œí§í§Ží§í§í§‘í§’í§“í§”í§•í§–í§—í§˜í§™í§ší§›í§œí§í§ží§Ÿí§ í§¡í§¢í§£í§¤í§¥í§¦í§§í§¨í§©í§ªí§«í§¬í§­í§®í§¯í§°í§±í§²í§³í§´í§µí§¶í§·í§¸í§¹í§ºí§»í§¼í§½í§¾í§¿
-í¨€í¨í¨‚í¨ƒí¨„í¨…í¨†í¨‡í¨ˆí¨‰í¨Ší¨‹í¨Œí¨í¨Ží¨í¨í¨‘í¨’í¨“í¨”í¨•í¨–í¨—í¨˜í¨™í¨ší¨›í¨œí¨í¨ží¨Ÿí¨ í¨¡í¨¢í¨£í¨¤í¨¥í¨¦í¨§í¨¨í¨©í¨ªí¨«í¨¬í¨­í¨®í¨¯í¨°í¨±í¨²í¨³í¨´í¨µí¨¶í¨·í¨¸í¨¹í¨ºí¨»í¨¼í¨½í¨¾í¨¿
-í©€í©í©‚í©ƒí©„í©…í©†í©‡í©ˆí©‰í©Ší©‹í©Œí©í©Ží©í©í©‘í©’í©“í©”í©•í©–í©—í©˜í©™í©ší©›í©œí©í©ží©Ÿí© í©¡í©¢í©£í©¤í©¥í©¦í©§í©¨í©©í©ªí©«í©¬í©­í©®í©¯í©°í©±í©²í©³í©´í©µí©¶í©·í©¸í©¹í©ºí©»í©¼í©½í©¾í©¿
-íª€íªíª‚íªƒíª„íª…íª†íª‡íªˆíª‰íªŠíª‹íªŒíªíªŽíªíªíª‘íª’íª“íª”íª•íª–íª—íª˜íª™íªšíª›íªœíªíªžíªŸíª íª¡íª¢íª£íª¤íª¥íª¦íª§íª¨íª©íªªíª«íª¬íª­íª®íª¯íª°íª±íª²íª³íª´íªµíª¶íª·íª¸íª¹íªºíª»íª¼íª½íª¾íª¿
-í«€í«í«‚í«ƒí«„í«…í«†í«‡í«ˆí«‰í«Ší«‹í«Œí«í«Ží«í«í«‘í«’í«“í«”í«•í«–í«—í«˜í«™í«ší«›í«œí«í«ží«Ÿí« í«¡í«¢í«£í«¤í«¥í«¦í«§í«¨í«©í«ªí««í«¬í«­í«®í«¯í«°í«±í«²í«³í«´í«µí«¶í«·í«¸í«¹í«ºí«»í«¼í«½í«¾í«¿
-í¬€í¬í¬‚í¬ƒí¬„í¬…í¬†í¬‡í¬ˆí¬‰í¬Ší¬‹í¬Œí¬í¬Ží¬í¬í¬‘í¬’í¬“í¬”í¬•í¬–í¬—í¬˜í¬™í¬ší¬›í¬œí¬í¬ží¬Ÿí¬ í¬¡í¬¢í¬£í¬¤í¬¥í¬¦í¬§í¬¨í¬©í¬ªí¬«í¬¬í¬­í¬®í¬¯í¬°í¬±í¬²í¬³í¬´í¬µí¬¶í¬·í¬¸í¬¹í¬ºí¬»í¬¼í¬½í¬¾í¬¿
-í­€í­í­‚í­ƒí­„í­…í­†í­‡í­ˆí­‰í­Ší­‹í­Œí­í­Ží­í­í­‘í­’í­“í­”í­•í­–í­—í­˜í­™í­ší­›í­œí­í­ží­Ÿí­ í­¡í­¢í­£í­¤í­¥í­¦í­§í­¨í­©í­ªí­«í­¬í­­í­®í­¯í­°í­±í­²í­³í­´í­µí­¶í­·í­¸í­¹í­ºí­»í­¼í­½í­¾í­¿
-
-High Private Use Surrogates (U+DB80-U+DBFF):
-
-í®€í®í®‚í®ƒí®„í®…í®†í®‡í®ˆí®‰í®Ší®‹í®Œí®í®Ží®í®í®‘í®’í®“í®”í®•í®–í®—í®˜í®™í®ší®›í®œí®í®ží®Ÿí® í®¡í®¢í®£í®¤í®¥í®¦í®§í®¨í®©í®ªí®«í®¬í®­í®®í®¯í®°í®±í®²í®³í®´í®µí®¶í®·í®¸í®¹í®ºí®»í®¼í®½í®¾í®¿
-í¯€í¯í¯‚í¯ƒí¯„í¯…í¯†í¯‡í¯ˆí¯‰í¯Ší¯‹í¯Œí¯í¯Ží¯í¯í¯‘í¯’í¯“í¯”í¯•í¯–í¯—í¯˜í¯™í¯ší¯›í¯œí¯í¯ží¯Ÿí¯ í¯¡í¯¢í¯£í¯¤í¯¥í¯¦í¯§í¯¨í¯©í¯ªí¯«í¯¬í¯­í¯®í¯¯í¯°í¯±í¯²í¯³í¯´í¯µí¯¶í¯·í¯¸í¯¹í¯ºí¯»í¯¼í¯½í¯¾í¯¿
-
-Low Surrogates (U+DC00-U+DFFF):
-
-í°€í°í°‚í°ƒí°„í°…í°†í°‡í°ˆí°‰í°Ší°‹í°Œí°í°Ží°í°í°‘í°’í°“í°”í°•í°–í°—í°˜í°™í°ší°›í°œí°í°ží°Ÿí° í°¡í°¢í°£í°¤í°¥í°¦í°§í°¨í°©í°ªí°«í°¬í°­í°®í°¯í°°í°±í°²í°³í°´í°µí°¶í°·í°¸í°¹í°ºí°»í°¼í°½í°¾í°¿
-í±€í±í±‚í±ƒí±„í±…í±†í±‡í±ˆí±‰í±Ší±‹í±Œí±í±Ží±í±í±‘í±’í±“í±”í±•í±–í±—í±˜í±™í±ší±›í±œí±í±ží±Ÿí± í±¡í±¢í±£í±¤í±¥í±¦í±§í±¨í±©í±ªí±«í±¬í±­í±®í±¯í±°í±±í±²í±³í±´í±µí±¶í±·í±¸í±¹í±ºí±»í±¼í±½í±¾í±¿
-í²€í²í²‚í²ƒí²„í²…í²†í²‡í²ˆí²‰í²Ší²‹í²Œí²í²Ží²í²í²‘í²’í²“í²”í²•í²–í²—í²˜í²™í²ší²›í²œí²í²ží²Ÿí² í²¡í²¢í²£í²¤í²¥í²¦í²§í²¨í²©í²ªí²«í²¬í²­í²®í²¯í²°í²±í²²í²³í²´í²µí²¶í²·í²¸í²¹í²ºí²»í²¼í²½í²¾í²¿
-í³€í³í³‚í³ƒí³„í³…í³†í³‡í³ˆí³‰í³Ší³‹í³Œí³í³Ží³í³í³‘í³’í³“í³”í³•í³–í³—í³˜í³™í³ší³›í³œí³í³ží³Ÿí³ í³¡í³¢í³£í³¤í³¥í³¦í³§í³¨í³©í³ªí³«í³¬í³­í³®í³¯í³°í³±í³²í³³í³´í³µí³¶í³·í³¸í³¹í³ºí³»í³¼í³½í³¾í³¿
-í´€í´í´‚í´ƒí´„í´…í´†í´‡í´ˆí´‰í´Ší´‹í´Œí´í´Ží´í´í´‘í´’í´“í´”í´•í´–í´—í´˜í´™í´ší´›í´œí´í´ží´Ÿí´ í´¡í´¢í´£í´¤í´¥í´¦í´§í´¨í´©í´ªí´«í´¬í´­í´®í´¯í´°í´±í´²í´³í´´í´µí´¶í´·í´¸í´¹í´ºí´»í´¼í´½í´¾í´¿
-íµ€íµíµ‚íµƒíµ„íµ…íµ†íµ‡íµˆíµ‰íµŠíµ‹íµŒíµíµŽíµíµíµ‘íµ’íµ“íµ”íµ•íµ–íµ—íµ˜íµ™íµšíµ›íµœíµíµžíµŸíµ íµ¡íµ¢íµ£íµ¤íµ¥íµ¦íµ§íµ¨íµ©íµªíµ«íµ¬íµ­íµ®íµ¯íµ°íµ±íµ²íµ³íµ´íµµíµ¶íµ·íµ¸íµ¹íµºíµ»íµ¼íµ½íµ¾íµ¿
-í¶€í¶í¶‚í¶ƒí¶„í¶…í¶†í¶‡í¶ˆí¶‰í¶Ší¶‹í¶Œí¶í¶Ží¶í¶í¶‘í¶’í¶“í¶”í¶•í¶–í¶—í¶˜í¶™í¶ší¶›í¶œí¶í¶ží¶Ÿí¶ í¶¡í¶¢í¶£í¶¤í¶¥í¶¦í¶§í¶¨í¶©í¶ªí¶«í¶¬í¶­í¶®í¶¯í¶°í¶±í¶²í¶³í¶´í¶µí¶¶í¶·í¶¸í¶¹í¶ºí¶»í¶¼í¶½í¶¾í¶¿
-í·€í·í·‚í·ƒí·„í·…í·†í·‡í·ˆí·‰í·Ší·‹í·Œí·í·Ží·í·í·‘í·’í·“í·”í·•í·–í·—í·˜í·™í·ší·›í·œí·í·ží·Ÿí· í·¡í·¢í·£í·¤í·¥í·¦í·§í·¨í·©í·ªí·«í·¬í·­í·®í·¯í·°í·±í·²í·³í·´í·µí·¶í··í·¸í·¹í·ºí·»í·¼í·½í·¾í·¿
-í¸€í¸í¸‚í¸ƒí¸„í¸…í¸†í¸‡í¸ˆí¸‰í¸Ší¸‹í¸Œí¸í¸Ží¸í¸í¸‘í¸’í¸“í¸”í¸•í¸–í¸—í¸˜í¸™í¸ší¸›í¸œí¸í¸ží¸Ÿí¸ í¸¡í¸¢í¸£í¸¤í¸¥í¸¦í¸§í¸¨í¸©í¸ªí¸«í¸¬í¸­í¸®í¸¯í¸°í¸±í¸²í¸³í¸´í¸µí¸¶í¸·í¸¸í¸¹í¸ºí¸»í¸¼í¸½í¸¾í¸¿
-í¹€í¹í¹‚í¹ƒí¹„í¹…í¹†í¹‡í¹ˆí¹‰í¹Ší¹‹í¹Œí¹í¹Ží¹í¹í¹‘í¹’í¹“í¹”í¹•í¹–í¹—í¹˜í¹™í¹ší¹›í¹œí¹í¹ží¹Ÿí¹ í¹¡í¹¢í¹£í¹¤í¹¥í¹¦í¹§í¹¨í¹©í¹ªí¹«í¹¬í¹­í¹®í¹¯í¹°í¹±í¹²í¹³í¹´í¹µí¹¶í¹·í¹¸í¹¹í¹ºí¹»í¹¼í¹½í¹¾í¹¿
-íº€íºíº‚íºƒíº„íº…íº†íº‡íºˆíº‰íºŠíº‹íºŒíºíºŽíºíºíº‘íº’íº“íº”íº•íº–íº—íº˜íº™íºšíº›íºœíºíºžíºŸíº íº¡íº¢íº£íº¤íº¥íº¦íº§íº¨íº©íºªíº«íº¬íº­íº®íº¯íº°íº±íº²íº³íº´íºµíº¶íº·íº¸íº¹íººíº»íº¼íº½íº¾íº¿
-í»€í»í»‚í»ƒí»„í»…í»†í»‡í»ˆí»‰í»Ší»‹í»Œí»í»Ží»í»í»‘í»’í»“í»”í»•í»–í»—í»˜í»™í»ší»›í»œí»í»ží»Ÿí» í»¡í»¢í»£í»¤í»¥í»¦í»§í»¨í»©í»ªí»«í»¬í»­í»®í»¯í»°í»±í»²í»³í»´í»µí»¶í»·í»¸í»¹í»ºí»»í»¼í»½í»¾í»¿
-í¼€í¼í¼‚í¼ƒí¼„í¼…í¼†í¼‡í¼ˆí¼‰í¼Ší¼‹í¼Œí¼í¼Ží¼í¼í¼‘í¼’í¼“í¼”í¼•í¼–í¼—í¼˜í¼™í¼ší¼›í¼œí¼í¼ží¼Ÿí¼ í¼¡í¼¢í¼£í¼¤í¼¥í¼¦í¼§í¼¨í¼©í¼ªí¼«í¼¬í¼­í¼®í¼¯í¼°í¼±í¼²í¼³í¼´í¼µí¼¶í¼·í¼¸í¼¹í¼ºí¼»í¼¼í¼½í¼¾í¼¿
-í½€í½í½‚í½ƒí½„í½…í½†í½‡í½ˆí½‰í½Ší½‹í½Œí½í½Ží½í½í½‘í½’í½“í½”í½•í½–í½—í½˜í½™í½ší½›í½œí½í½ží½Ÿí½ í½¡í½¢í½£í½¤í½¥í½¦í½§í½¨í½©í½ªí½«í½¬í½­í½®í½¯í½°í½±í½²í½³í½´í½µí½¶í½·í½¸í½¹í½ºí½»í½¼í½½í½¾í½¿
-í¾€í¾í¾‚í¾ƒí¾„í¾…í¾†í¾‡í¾ˆí¾‰í¾Ší¾‹í¾Œí¾í¾Ží¾í¾í¾‘í¾’í¾“í¾”í¾•í¾–í¾—í¾˜í¾™í¾ší¾›í¾œí¾í¾ží¾Ÿí¾ í¾¡í¾¢í¾£í¾¤í¾¥í¾¦í¾§í¾¨í¾©í¾ªí¾«í¾¬í¾­í¾®í¾¯í¾°í¾±í¾²í¾³í¾´í¾µí¾¶í¾·í¾¸í¾¹í¾ºí¾»í¾¼í¾½í¾¾í¾¿
-í¿€í¿í¿‚í¿ƒí¿„í¿…í¿†í¿‡í¿ˆí¿‰í¿Ší¿‹í¿Œí¿í¿Ží¿í¿í¿‘í¿’í¿“í¿”í¿•í¿–í¿—í¿˜í¿™í¿ší¿›í¿œí¿í¿ží¿Ÿí¿ í¿¡í¿¢í¿£í¿¤í¿¥í¿¦í¿§í¿¨í¿©í¿ªí¿«í¿¬í¿­í¿®í¿¯í¿°í¿±í¿²í¿³í¿´í¿µí¿¶í¿·í¿¸í¿¹í¿ºí¿»í¿¼í¿½í¿¾í¿¿
-
Private Use (U+E000-U+F8FF):
î€î€‚î€î€Žî€î€î€‘î€î€žî€Ÿî€ î€¡î€¢î€£î€¤î€¥î€¦î€§î€¨î€©î€ªî€«î€¬î€­î€®î€¯î€°î€±î€²î€³î€´î€µî€¶î€·î€¸î€¹î€ºî€»î€¼î€½î€¾î€¿
diff --git a/libio/vasprintf.c b/libio/vasprintf.c
index 2fdb9f6ed2..7e15eb044a 100644
--- a/libio/vasprintf.c
+++ b/libio/vasprintf.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1995,1997,1999-2002,2004,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1997,1999-2002,2004,2006,2009
+ 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
@@ -54,8 +55,8 @@ _IO_vasprintf (result_ptr, format, args)
#ifdef _IO_MTSAFE_IO
sf._sbf._f._lock = NULL;
#endif
- _IO_no_init ((_IO_FILE *) &sf._sbf, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
+ _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
+ _IO_JUMPS (&sf._sbf) = &_IO_str_jumps;
_IO_str_init_static_internal (&sf, string, init_string_size, string);
sf._sbf._f._flags &= ~_IO_USER_BUF;
sf._s._allocate_buffer = (_IO_alloc_type) malloc;
diff --git a/libio/vsnprintf.c b/libio/vsnprintf.c
index 289160e540..a05eb5455c 100644
--- a/libio/vsnprintf.c
+++ b/libio/vsnprintf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994,1997,1999-2003, 2004, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1994,1997,1999-2004,2006,2009 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
@@ -114,10 +114,10 @@ _IO_vsnprintf (string, maxlen, format, args)
}
_IO_no_init (&sf.f._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf.f._sbf) = &_IO_strn_jumps;
+ _IO_JUMPS (&sf.f._sbf) = &_IO_strn_jumps;
string[0] = '\0';
_IO_str_init_static_internal (&sf.f, string, maxlen - 1, string);
- ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf.f._sbf, format, args);
+ ret = INTUSE(_IO_vfprintf) (&sf.f._sbf._f, format, args);
if (sf.f._sbf._f._IO_buf_base != sf.overflow_buf)
*sf.f._sbf._f._IO_write_ptr = '\0';
diff --git a/libio/wfileops.c b/libio/wfileops.c
index b930aad067..503d341a96 100644
--- a/libio/wfileops.c
+++ b/libio/wfileops.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993,1995,1997-2003,2004, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1995,1997-2004,2006,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Ulrich Drepper <drepper@cygnus.com>.
Based on the single byte version by Per Bothner <bothner@cygnus.com>.
@@ -123,8 +123,6 @@ _IO_wfile_underflow (fp)
struct _IO_codecvt *cd;
enum __codecvt_result status;
_IO_ssize_t count;
- int tries;
- const char *read_ptr_copy;
if (__builtin_expect (fp->_flags & _IO_NO_READS, 0))
{
@@ -236,13 +234,15 @@ _IO_wfile_underflow (fp)
fp->_wide_data->_IO_write_base = fp->_wide_data->_IO_write_ptr =
fp->_wide_data->_IO_write_end = fp->_wide_data->_IO_buf_base;
- tries = 0;
+ const char *read_ptr_copy;
+ char accbuf[MB_LEN_MAX];
+ size_t naccbuf = 0;
again:
count = _IO_SYSREAD (fp, fp->_IO_read_end,
fp->_IO_buf_end - fp->_IO_read_end);
if (count <= 0)
{
- if (count == 0 && tries == 0)
+ if (count == 0 && naccbuf == 0)
fp->_flags |= _IO_EOF_SEEN;
else
fp->_flags |= _IO_ERR_SEEN, count = 0;
@@ -250,7 +250,7 @@ _IO_wfile_underflow (fp)
fp->_IO_read_end += count;
if (count == 0)
{
- if (tries != 0)
+ if (naccbuf != 0)
/* There are some bytes in the external buffer but they don't
convert to anything. */
__set_errno (EILSEQ);
@@ -262,18 +262,31 @@ _IO_wfile_underflow (fp)
/* Now convert the read input. */
fp->_wide_data->_IO_last_state = fp->_wide_data->_IO_state;
fp->_IO_read_base = fp->_IO_read_ptr;
+ const char *from = fp->_IO_read_ptr;
+ const char *to = fp->_IO_read_end;
+ size_t to_copy = count;
+ if (__builtin_expect (naccbuf != 0, 0))
+ {
+ to_copy = MIN (sizeof (accbuf) - naccbuf, count);
+ to = __mempcpy (&accbuf[naccbuf], from, to_copy);
+ naccbuf += to_copy;
+ from = accbuf;
+ }
status = (*cd->__codecvt_do_in) (cd, &fp->_wide_data->_IO_state,
- fp->_IO_read_ptr, fp->_IO_read_end,
- &read_ptr_copy,
+ from, to, &read_ptr_copy,
fp->_wide_data->_IO_read_end,
fp->_wide_data->_IO_buf_end,
&fp->_wide_data->_IO_read_end);
- fp->_IO_read_ptr = (char *) read_ptr_copy;
+ if (__builtin_expect (naccbuf != 0, 0))
+ fp->_IO_read_ptr += MAX (0, read_ptr_copy - &accbuf[naccbuf - to_copy]);
+ else
+ fp->_IO_read_ptr = (char *) read_ptr_copy;
if (fp->_wide_data->_IO_read_end == fp->_wide_data->_IO_buf_base)
{
- if (status == __codecvt_error || fp->_IO_read_end == fp->_IO_buf_end)
+ if (status == __codecvt_error)
{
+ out_eilseq:
__set_errno (EILSEQ);
fp->_flags |= _IO_ERR_SEEN;
return WEOF;
@@ -281,7 +294,40 @@ _IO_wfile_underflow (fp)
/* The read bytes make no complete character. Try reading again. */
assert (status == __codecvt_partial);
- ++tries;
+
+ if (naccbuf == 0)
+ {
+ if (fp->_IO_read_base < fp->_IO_read_ptr)
+ {
+ /* Partially used the buffer for some input data that
+ produces no output. */
+ size_t avail = fp->_IO_read_end - fp->_IO_read_ptr;
+ memmove (fp->_IO_read_base, fp->_IO_read_ptr, avail);
+ fp->_IO_read_ptr = fp->_IO_read_base;
+ fp->_IO_read_end -= avail;
+ goto again;
+ }
+ naccbuf = fp->_IO_read_end - fp->_IO_read_ptr;
+ if (naccbuf >= sizeof (accbuf))
+ goto out_eilseq;
+
+ memcpy (accbuf, fp->_IO_read_ptr, naccbuf);
+ }
+ else
+ {
+ size_t used = read_ptr_copy - accbuf;
+ if (used > 0)
+ {
+ memmove (accbuf, read_ptr_copy, naccbuf - used);
+ naccbuf -= used;
+ }
+
+ if (naccbuf == sizeof (accbuf))
+ goto out_eilseq;
+ }
+
+ fp->_IO_read_ptr = fp->_IO_read_end = fp->_IO_read_base;
+
goto again;
}
@@ -585,8 +631,12 @@ _IO_wfile_seekoff (fp, offset, dir, mode)
clen = (*cv->__codecvt_do_encoding) (cv);
if (clen > 0)
- offset -= (fp->_wide_data->_IO_read_end
- - fp->_wide_data->_IO_read_ptr) * clen;
+ {
+ offset -= (fp->_wide_data->_IO_read_end
+ - fp->_wide_data->_IO_read_ptr) * clen;
+ /* Adjust by readahead in external buffer. */
+ offset -= fp->_IO_read_end - fp->_IO_read_ptr;
+ }
else
{
int nread;
@@ -632,88 +682,24 @@ _IO_wfile_seekoff (fp, offset, dir, mode)
if (fp->_offset != _IO_pos_BAD && fp->_IO_read_base != NULL
&& !_IO_in_backup (fp))
{
- /* Offset relative to start of main get area. */
- _IO_off64_t rel_offset = (offset - fp->_offset
- + (fp->_IO_read_end - fp->_IO_read_base));
- if (rel_offset >= 0)
+ _IO_off64_t start_offset = (fp->_offset
+ - (fp->_IO_read_end - fp->_IO_buf_base));
+ if (offset >= start_offset && offset < fp->_offset)
{
-#if 0
- if (_IO_in_backup (fp))
- _IO_switch_to_main_get_area (fp);
-#endif
- if (rel_offset <= fp->_IO_read_end - fp->_IO_read_base)
- {
- enum __codecvt_result status;
- struct _IO_codecvt *cd = fp->_codecvt;
- const char *read_ptr_copy;
-
- fp->_IO_read_ptr = fp->_IO_read_base + rel_offset;
- _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
-
- /* Now set the pointer for the internal buffer. This
- might be an iterative process. Though the read
- pointer is somewhere in the current external buffer
- this does not mean we can convert this whole buffer
- at once fitting in the internal buffer. */
- fp->_wide_data->_IO_state = fp->_wide_data->_IO_last_state;
- read_ptr_copy = fp->_IO_read_base;
- fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_base;
- do
- {
- wchar_t buffer[1024];
- wchar_t *ignore;
- status = (*cd->__codecvt_do_in) (cd,
- &fp->_wide_data->_IO_state,
- read_ptr_copy,
- fp->_IO_read_ptr,
- &read_ptr_copy,
- buffer,
- buffer
- + (sizeof (buffer)
- / sizeof (buffer[0])),
- &ignore);
- if (status != __codecvt_ok && status != __codecvt_partial)
- {
- fp->_flags |= _IO_ERR_SEEN;
- goto dumb;
- }
- }
- while (read_ptr_copy != fp->_IO_read_ptr);
-
- fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_base;
-
- _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- goto resync;
- }
-#ifdef TODO
- /* If we have streammarkers, seek forward by reading ahead. */
- if (_IO_have_markers (fp))
- {
- int to_skip = rel_offset
- - (fp->_IO_read_ptr - fp->_IO_read_base);
- if (ignore (to_skip) != to_skip)
- goto dumb;
- _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- goto resync;
- }
-#endif
- }
-#ifdef TODO
- if (rel_offset < 0 && rel_offset >= Bbase () - Bptr ())
- {
- if (!_IO_in_backup (fp))
- _IO_switch_to_backup_area (fp);
- gbump (fp->_IO_read_end + rel_offset - fp->_IO_read_ptr);
+ _IO_setg (fp, fp->_IO_buf_base,
+ fp->_IO_buf_base + (offset - start_offset),
+ fp->_IO_read_end);
+ _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
+ _IO_wsetg (fp, fp->_wide_data->_IO_buf_base,
+ fp->_wide_data->_IO_buf_base,
+ fp->_wide_data->_IO_buf_base);
+ _IO_wsetp (fp, fp->_wide_data->_IO_buf_base,
+ fp->_wide_data->_IO_buf_base);
_IO_mask_flags (fp, 0, _IO_EOF_SEEN);
goto resync;
}
-#endif
}
-#ifdef TODO
- INTUSE(_IO_unsave_markers) (fp);
-#endif
-
if (fp->_flags & _IO_NO_READS)
goto dumb;
@@ -746,6 +732,9 @@ _IO_wfile_seekoff (fp, offset, dir, mode)
_IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base + delta,
fp->_IO_buf_base + count);
_IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
+ _IO_wsetg (fp, fp->_wide_data->_IO_buf_base,
+ fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base);
+ _IO_wsetp (fp, fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base);
fp->_offset = result + count;
_IO_mask_flags (fp, 0, _IO_EOF_SEEN);
return offset;
diff --git a/locale/.cvsignore b/locale/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/locale/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/locale/C-address.c b/locale/C-address.c
index e9e6b1aa81..0d30052613 100644
--- a/locale/C-address.c
+++ b/locale/C-address.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2001, 2002, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -24,7 +24,7 @@
/* This table's entries are taken from ISO 14652, the table in section
4.10 "LC_ADDRESS". */
-const struct locale_data _nl_C_LC_ADDRESS attribute_hidden =
+const struct __locale_data _nl_C_LC_ADDRESS attribute_hidden =
{
_nl_C_name,
NULL, 0, 0, /* no file mapped */
diff --git a/locale/C-collate.c b/locale/C-collate.c
index cc8c8ee81f..a7e440fda7 100644
--- a/locale/C-collate.c
+++ b/locale/C-collate.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1997,1999,2000,2001,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1997,1999,2000,2001,2002,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
@@ -98,7 +98,7 @@ static const uint32_t collseqwc[] =
L'\xf8', L'\xf9', L'\xfa', L'\xfb', L'\xfc', L'\xfd', L'\xfe', L'\xff'
};
-const struct locale_data _nl_C_LC_COLLATE attribute_hidden =
+const struct __locale_data _nl_C_LC_COLLATE attribute_hidden =
{
_nl_C_name,
NULL, 0, 0, /* no file mapped */
diff --git a/locale/C-ctype.c b/locale/C-ctype.c
index 85f3d2addb..0eb60d4da7 100644
--- a/locale/C-ctype.c
+++ b/locale/C-ctype.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2002, 2003, 2009, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
@@ -528,7 +528,7 @@ _nl_C_LC_CTYPE_width attribute_hidden =
};
/* Number of fields with fixed meanings, starting at 0. */
-#define NR_FIXED 71
+#define NR_FIXED 72
/* Number of class fields, starting at CLASS_OFFSET. */
#define NR_CLASSES 12
/* Number of map fields, starting at MAP_OFFSET. */
@@ -538,7 +538,7 @@ _nl_C_LC_CTYPE_width attribute_hidden =
NR_FIXED == _NL_ITEM_INDEX (_NL_CTYPE_EXTRA_MAP_1). */
typedef int assertion1[1 - 2 * (NR_FIXED != _NL_ITEM_INDEX (_NL_CTYPE_EXTRA_MAP_1))];
-const struct locale_data _nl_C_LC_CTYPE attribute_hidden =
+const struct __locale_data _nl_C_LC_CTYPE attribute_hidden =
{
_nl_C_name,
NULL, 0, 0, /* no file mapped */
@@ -667,6 +667,8 @@ const struct locale_data _nl_C_LC_CTYPE attribute_hidden =
{ .wstr = NULL },
/* _NL_CTYPE_MAP_TO_NONASCII */
{ .word = 0 },
+ /* _NL_CTYPE_NONASCII_CASE */
+ { .word = 0 },
/* NR_CLASSES wctype_tables */
{ .string = (const char *) _nl_C_LC_CTYPE_class_upper.header },
{ .string = (const char *) _nl_C_LC_CTYPE_class_lower.header },
diff --git a/locale/C-identification.c b/locale/C-identification.c
index 628e8f145d..da465d2c82 100644
--- a/locale/C-identification.c
+++ b/locale/C-identification.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -24,7 +24,7 @@
/* This table's entries are taken from ISO 14652, the table in section
4.12 "LC_IDENTIFICATION". */
-const struct locale_data _nl_C_LC_IDENTIFICATION attribute_hidden =
+const struct __locale_data _nl_C_LC_IDENTIFICATION attribute_hidden =
{
_nl_C_name,
NULL, 0, 0, /* no file mapped */
diff --git a/locale/C-measurement.c b/locale/C-measurement.c
index 796fe29ce5..16e45f6502 100644
--- a/locale/C-measurement.c
+++ b/locale/C-measurement.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2001, 2002, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -24,7 +24,7 @@
/* This table's entries are taken from ISO 14652, the table in section
4.12 "LC_MEASUREMENT". */
-const struct locale_data _nl_C_LC_MEASUREMENT attribute_hidden =
+const struct __locale_data _nl_C_LC_MEASUREMENT attribute_hidden =
{
_nl_C_name,
NULL, 0, 0, /* no file mapped */
diff --git a/locale/C-messages.c b/locale/C-messages.c
index 499d4bf5a6..0d2a05f80d 100644
--- a/locale/C-messages.c
+++ b/locale/C-messages.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1996,1997,2000,2001,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997,2000,2001,2002,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
@@ -24,7 +24,7 @@
The last two fields are a GNU extension. */
-const struct locale_data _nl_C_LC_MESSAGES attribute_hidden =
+const struct __locale_data _nl_C_LC_MESSAGES attribute_hidden =
{
_nl_C_name,
NULL, 0, 0, /* no file mapped */
diff --git a/locale/C-monetary.c b/locale/C-monetary.c
index 8cccf9637a..e18c059e07 100644
--- a/locale/C-monetary.c
+++ b/locale/C-monetary.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2000, 2001, 2002, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
@@ -28,7 +28,7 @@ static const char not_available[] = "\377";
static const char not_available[] = "\177";
#endif
-const struct locale_data _nl_C_LC_MONETARY attribute_hidden =
+const struct __locale_data _nl_C_LC_MONETARY attribute_hidden =
{
_nl_C_name,
NULL, 0, 0, /* no file mapped */
diff --git a/locale/C-name.c b/locale/C-name.c
index 65033d6751..e59b42fa09 100644
--- a/locale/C-name.c
+++ b/locale/C-name.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2001, 2002, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -24,7 +24,7 @@
/* This table's entries are taken from ISO 14652, the table in section
4.9 "LC_NAME". */
-const struct locale_data _nl_C_LC_NAME attribute_hidden =
+const struct __locale_data _nl_C_LC_NAME attribute_hidden =
{
_nl_C_name,
NULL, 0, 0, /* no file mapped */
diff --git a/locale/C-numeric.c b/locale/C-numeric.c
index 377c51cdfb..a16a841c78 100644
--- a/locale/C-numeric.c
+++ b/locale/C-numeric.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1996,1997,2000,2001,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997,2000,2001,2002,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
@@ -21,7 +21,7 @@
/* This table's entries are taken from POSIX.2 Table 2-10
``LC_NUMERIC Category Definition in the POSIX Locale''. */
-const struct locale_data _nl_C_LC_NUMERIC attribute_hidden =
+const struct __locale_data _nl_C_LC_NUMERIC attribute_hidden =
{
_nl_C_name,
NULL, 0, 0, /* no file mapped */
diff --git a/locale/C-paper.c b/locale/C-paper.c
index 74e6401de7..2d060ca8ba 100644
--- a/locale/C-paper.c
+++ b/locale/C-paper.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -24,7 +24,7 @@
/* This table's entries are taken from ISO 14652, the table in section
4.8 "LC_PAPER". */
-const struct locale_data _nl_C_LC_PAPER attribute_hidden =
+const struct __locale_data _nl_C_LC_PAPER attribute_hidden =
{
_nl_C_name,
NULL, 0, 0, /* no file mapped */
diff --git a/locale/C-telephone.c b/locale/C-telephone.c
index 561a1ef28a..522388866e 100644
--- a/locale/C-telephone.c
+++ b/locale/C-telephone.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2001, 2002, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -24,7 +24,7 @@
/* This table's entries are taken from ISO 14652, the table in section
4.11 "LC_TELEPHONE". */
-const struct locale_data _nl_C_LC_TELEPHONE attribute_hidden =
+const struct __locale_data _nl_C_LC_TELEPHONE attribute_hidden =
{
_nl_C_name,
NULL, 0, 0, /* no file mapped */
diff --git a/locale/C-time.c b/locale/C-time.c
index a9275d9ebe..16d387b938 100644
--- a/locale/C-time.c
+++ b/locale/C-time.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2002, 2004, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2002, 2004, 2007, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
@@ -23,7 +23,7 @@
``LC_TIME Category Definition in the POSIX Locale'',
with additions from ISO 14652, section 4.6. */
-const struct locale_data _nl_C_LC_TIME attribute_hidden =
+const struct __locale_data _nl_C_LC_TIME attribute_hidden =
{
_nl_C_name,
NULL, 0, 0, /* no file mapped */
@@ -134,10 +134,10 @@ const struct locale_data _nl_C_LC_TIME attribute_hidden =
{ .wstr = (const uint32_t *) L"" },
{ .wstr = (const uint32_t *) L"" },
{ .string = "\7" },
- { .word = 19971201 },
+ { .word = 19971130 },
{ .string = "\4" },
- { .string = "\7" },
{ .string = "\1" },
+ { .string = "\2" },
{ .string = "\1" },
{ .string = "" },
{ .string = "%a %b %e %H:%M:%S %Z %Y" },
diff --git a/locale/Makefile b/locale/Makefile
index d9ab1947e7..2dbd8dc6a5 100644
--- a/locale/Makefile
+++ b/locale/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991,1992,1995-2003,2005 Free Software Foundation, Inc.
+# Copyright (C) 1991,1992,1995-2003,2005,2009 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
@@ -38,7 +38,7 @@ distribute = localeinfo.h categories.def iso-639.def iso-3166.def \
routines = setlocale findlocale loadlocale loadarchive \
localeconv nl_langinfo nl_langinfo_l mb_cur_max \
newlocale duplocale freelocale uselocale
-tests = tst-C-locale
+tests = tst-C-locale tst-locname tst-duplocale
categories = ctype messages monetary numeric time paper name \
address telephone measurement identification collate
aux = $(categories:%=lc-%) $(categories:%=C-%) SYS_libc C_name \
@@ -104,7 +104,7 @@ CFLAGS-charmap-dir.c = -Wno-write-strings
# This makes sure -DNOT_IN_libc is passed for all these modules.
cpp-srcs-left := $(addsuffix .c,$(localedef-modules) $(localedef-aux) \
- $(locale-modules) $(lib-modules))
+ $(locale-modules) $(lib-modules))
lib := nonlib
include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
diff --git a/locale/duplocale.c b/locale/duplocale.c
index 61782590d7..63513c539c 100644
--- a/locale/duplocale.c
+++ b/locale/duplocale.c
@@ -1,5 +1,5 @@
/* Duplicate handle for selection of locales.
- Copyright (C) 1997,2000,2001,2002,2005,2008 Free Software Foundation, Inc.
+ Copyright (C) 1997,2000-2002,2005,2008,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -37,6 +37,10 @@ __duplocale (__locale_t dataset)
if (dataset == _nl_C_locobj_ptr)
return dataset;
+ /* Handle a special value. */
+ if (dataset == LC_GLOBAL_LOCALE)
+ dataset = &_nl_global_locale;
+
__locale_t result;
int cnt;
size_t names_len = 0;
diff --git a/locale/findlocale.c b/locale/findlocale.c
index ea24170df5..6b88c96341 100644
--- a/locale/findlocale.c
+++ b/locale/findlocale.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2001, 2002, 2003, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -33,14 +33,14 @@
#ifdef NL_CURRENT_INDIRECT
# define DEFINE_CATEGORY(category, category_name, items, a) \
-extern struct locale_data _nl_C_##category; \
+extern struct __locale_data _nl_C_##category; \
weak_extern (_nl_C_##category)
# include "categories.def"
# undef DEFINE_CATEGORY
/* Array indexed by category of pointers to _nl_C_CATEGORY slots.
Elements are zero for categories whose data is never used. */
-struct locale_data *const _nl_C[] attribute_hidden =
+struct __locale_data *const _nl_C[] attribute_hidden =
{
# define DEFINE_CATEGORY(category, category_name, items, a) \
[category] = &_nl_C_##category,
@@ -59,7 +59,7 @@ struct loaded_l10nfile *_nl_locale_file_list[__LC_LAST];
const char _nl_default_locale_path[] attribute_hidden = LOCALEDIR;
-struct locale_data *
+struct __locale_data *
internal_function
_nl_find_locale (const char *locale_path, size_t locale_path_len,
int category, const char **name)
@@ -104,7 +104,8 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
but only if there was no LOCPATH environment variable specified. */
if (__builtin_expect (locale_path == NULL, 1))
{
- struct locale_data *data = _nl_load_locale_from_archive (category, name);
+ struct __locale_data *data
+ = _nl_load_locale_from_archive (category, name);
if (__builtin_expect (data != NULL, 1))
return data;
@@ -214,12 +215,12 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
[__LC_MEASUREMENT] = _NL_ITEM_INDEX (_NL_MEASUREMENT_CODESET),
[__LC_IDENTIFICATION] = _NL_ITEM_INDEX (_NL_IDENTIFICATION_CODESET)
};
- const struct locale_data *data;
+ const struct __locale_data *data;
const char *locale_codeset;
char *clocale_codeset;
char *ccodeset;
- data = (const struct locale_data *) locale_file->data;
+ data = (const struct __locale_data *) locale_file->data;
locale_codeset =
(const char *) data->values[codeset_idx[category]].string;
assert (locale_codeset != NULL);
@@ -241,7 +242,7 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
/* Determine the locale name for which loading succeeded. This
information comes from the file name. The form is
<path>/<locale>/LC_foo. We must extract the <locale> part. */
- if (((const struct locale_data *) locale_file->data)->name == NULL)
+ if (((const struct __locale_data *) locale_file->data)->name == NULL)
{
char *cp, *endp;
@@ -249,20 +250,20 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
cp = endp - 1;
while (cp[-1] != '/')
--cp;
- ((struct locale_data *) locale_file->data)->name = __strndup (cp,
- endp - cp);
+ ((struct __locale_data *) locale_file->data)->name
+ = __strndup (cp, endp - cp);
}
/* Determine whether the user wants transliteration or not. */
if (modifier != NULL && __strcasecmp (modifier, "TRANSLIT") == 0)
- ((struct locale_data *) locale_file->data)->use_translit = 1;
+ ((struct __locale_data *) locale_file->data)->use_translit = 1;
/* Increment the usage count. */
- if (((const struct locale_data *) locale_file->data)->usage_count
+ if (((const struct __locale_data *) locale_file->data)->usage_count
< MAX_USAGE_COUNT)
- ++((struct locale_data *) locale_file->data)->usage_count;
+ ++((struct __locale_data *) locale_file->data)->usage_count;
- return (struct locale_data *) locale_file->data;
+ return (struct __locale_data *) locale_file->data;
}
@@ -270,7 +271,7 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
is acquired. */
void
internal_function
-_nl_remove_locale (int locale, struct locale_data *data)
+_nl_remove_locale (int locale, struct __locale_data *data)
{
if (--data->usage_count == 0)
{
@@ -281,7 +282,7 @@ _nl_remove_locale (int locale, struct locale_data *data)
/* Search for the entry. It must be in the list. Otherwise it
is a bug and we crash badly. */
- while ((struct locale_data *) ptr->data != data)
+ while ((struct __locale_data *) ptr->data != data)
ptr = ptr->next;
/* Mark the data as not available anymore. So when the data has
diff --git a/locale/global-locale.c b/locale/global-locale.c
index 771742e1be..63d1238fb0 100644
--- a/locale/global-locale.c
+++ b/locale/global-locale.c
@@ -1,5 +1,5 @@
/* Locale object representing the global locale controlled by setlocale.
- Copyright (C) 2002, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2006, 2008, 2010 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
@@ -21,7 +21,7 @@
#include "localeinfo.h"
#define DEFINE_CATEGORY(category, category_name, items, a) \
-extern struct locale_data _nl_C_##category; weak_extern (_nl_C_##category)
+extern struct __locale_data _nl_C_##category; weak_extern (_nl_C_##category)
#include "categories.def"
#undef DEFINE_CATEGORY
diff --git a/locale/iso-639.def b/locale/iso-639.def
index 68a4c5ed39..bb12d82692 100644
--- a/locale/iso-639.def
+++ b/locale/iso-639.def
@@ -1,8 +1,9 @@
/*
- * Defines the languages codes and abbreviations according to ISO 639-[12].
+ * Defines the languages codes and abbreviations according to ISO 639-[123].
* This is used in ld-address.c (address_finish).
*
* Format is: ("English name", 639-1-code, 639-2/T-code, 639-2/B-code)
+ * For some languages which have no 639-2 code the 639-3 code is used.
* If you find something missing or wrong, please go to the URL
* http://www.gnu.org/software/libc/bugs.html and follow
* instructions there to file a bug report.
@@ -83,12 +84,14 @@ DEFINE_LANGUAGE_CODE3 ("Caucasian (Other)", cau, cau)
DEFINE_LANGUAGE_CODE3 ("Cebuano", ceb, ceb)
DEFINE_LANGUAGE_CODE3 ("Celtic (Other)", cel, cel)
DEFINE_LANGUAGE_CODE3 ("Central American Indian (Other)", cai, cai)
+DEFINE_LANGUAGE_CODE3 ("Central Sama", sml, sml)
DEFINE_LANGUAGE_CODE3 ("Chagatai", chg, chg)
DEFINE_LANGUAGE_CODE3 ("Chamic languages", cmc, cmc)
DEFINE_LANGUAGE_CODE ("Chamorro", ch, cha, cha)
DEFINE_LANGUAGE_CODE ("Chechen", ce, che, che)
DEFINE_LANGUAGE_CODE3 ("Cherokee", chr, chr)
DEFINE_LANGUAGE_CODE3 ("Cheyenne", chy, chy)
+DEFINE_LANGUAGE_CODE2 ("Chhattisgarhi", hne) /* ISO 639-3 */
DEFINE_LANGUAGE_CODE3 ("Chibcha", chb, chb)
DEFINE_LANGUAGE_CODE ("Chichewa; Chewa; Nyanja", ny, nya, nya)
DEFINE_LANGUAGE_CODE ("Chinese", zh, zho, chi)
@@ -301,6 +304,7 @@ DEFINE_LANGUAGE_CODE3 ("Mayan languages", myn, myn)
DEFINE_LANGUAGE_CODE3 ("Mende", men, men)
DEFINE_LANGUAGE_CODE3 ("Mi'kmaq; Micmac", mic, mic)
DEFINE_LANGUAGE_CODE3 ("Minangkabau", min, min)
+DEFINE_LANGUAGE_CODE3 ("Min Nan", nan, nan)
DEFINE_LANGUAGE_CODE3 ("Mirandese", mwl, mwl)
DEFINE_LANGUAGE_CODE3 ("Miscellaneous languages", mis, mis)
DEFINE_LANGUAGE_CODE3 ("Mohawk", moh, moh)
diff --git a/locale/langinfo.h b/locale/langinfo.h
index 10c4232918..0a53365071 100644
--- a/locale/langinfo.h
+++ b/locale/langinfo.h
@@ -1,5 +1,5 @@
/* Access to locale-dependent parameters.
- Copyright (C) 1995-2002,2003,2004,2005 Free Software Foundation, Inc.
+ Copyright (C) 1995-2002,2003,2004,2005,2009 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
@@ -334,6 +334,7 @@ enum
_NL_CTYPE_TRANSLIT_IGNORE_LEN,
_NL_CTYPE_TRANSLIT_IGNORE,
_NL_CTYPE_MAP_TO_NONASCII,
+ _NL_CTYPE_NONASCII_CASE,
_NL_CTYPE_EXTRA_MAP_1,
_NL_CTYPE_EXTRA_MAP_2,
_NL_CTYPE_EXTRA_MAP_3,
@@ -567,7 +568,8 @@ enum
/* This macro produces an item you can pass to `nl_langinfo' or
`nl_langinfo_l' to get the name of the locale in use for CATEGORY. */
-#define _NL_LOCALE_NAME(category) _NL_ITEM ((category), -1)
+#define _NL_LOCALE_NAME(category) _NL_ITEM ((category), \
+ _NL_ITEM_INDEX (-1))
#ifdef __USE_GNU
# define NL_LOCALE_NAME(category) _NL_LOCALE_NAME (category)
#endif
@@ -582,7 +584,7 @@ enum
extern char *nl_langinfo (nl_item __item) __THROW;
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K
/* This interface is for the extended locale model. See <locale.h> for
more information. */
@@ -590,7 +592,7 @@ extern char *nl_langinfo (nl_item __item) __THROW;
# include <xlocale.h>
/* Just like nl_langinfo but get the information from the locale object L. */
-extern char *nl_langinfo_l (nl_item __item, __locale_t l);
+extern char *nl_langinfo_l (nl_item __item, __locale_t __l);
#endif
__END_DECLS
diff --git a/locale/loadarchive.c b/locale/loadarchive.c
index d545f17fb5..663202e54e 100644
--- a/locale/loadarchive.c
+++ b/locale/loadarchive.c
@@ -1,5 +1,5 @@
/* Code to load locale data from the locale archive file.
- Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2005, 2010 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
@@ -85,7 +85,7 @@ struct locale_in_archive
{
struct locale_in_archive *next;
char *name;
- struct locale_data *data[__LC_LAST];
+ struct __locale_data *data[__LC_LAST];
};
static struct locale_in_archive *archloaded;
@@ -129,7 +129,7 @@ calculate_head_size (const struct locarhead *h)
already been loaded from the archive, just returns the existing data
structure. If successful, sets *NAMEP to point directly into the mapped
archive string table; that way, the next call can short-circuit strcmp. */
-struct locale_data *
+struct __locale_data *
internal_function
_nl_load_locale_from_archive (int category, const char **namep)
{
diff --git a/locale/loadlocale.c b/locale/loadlocale.c
index 467dff157a..6ef25b0234 100644
--- a/locale/loadlocale.c
+++ b/locale/loadlocale.c
@@ -1,5 +1,5 @@
/* Functions to read locale data files.
- Copyright (C) 1996-2004, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1996-2004, 2005, 2006, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -61,7 +61,7 @@ static const enum value_type *const _nl_value_types[] =
};
-struct locale_data *
+struct __locale_data *
internal_function
_nl_intern_locale_data (int category, const void *data, size_t datasize)
{
@@ -71,7 +71,7 @@ _nl_intern_locale_data (int category, const void *data, size_t datasize)
unsigned int nstrings;
unsigned int strindex[0];
} *const filedata = data;
- struct locale_data *newdata;
+ struct __locale_data *newdata;
size_t cnt;
if (__builtin_expect (datasize < sizeof *filedata, 0)
@@ -166,7 +166,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
int fd;
void *filedata;
struct stat64 st;
- struct locale_data *newdata;
+ struct __locale_data *newdata;
int save_err;
int alloc = ld_mapped;
@@ -187,7 +187,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
if (__builtin_expect (S_ISDIR (st.st_mode), 0))
{
/* LOCALE/LC_foo is a directory; open LOCALE/LC_foo/SYS_LC_foo
- instead. */
+ instead. */
char *newp;
size_t filenamelen;
@@ -282,7 +282,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
void
internal_function
-_nl_unload_locale (struct locale_data *locale)
+_nl_unload_locale (struct __locale_data *locale)
{
if (locale->private.cleanup)
(*locale->private.cleanup) (locale);
diff --git a/locale/locale.h b/locale/locale.h
index 08fc531d7e..2aa19e76ac 100644
--- a/locale/locale.h
+++ b/locale/locale.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1992,1995-2002,2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1995-2002,2007,2009 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
@@ -130,7 +130,7 @@ extern struct lconv *localeconv (void) __THROW;
__END_NAMESPACE_STD
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* The concept of one static locale per category is not very well
thought out. Many applications will need to process its data using
information from several different locales. Another application is
@@ -145,8 +145,6 @@ __END_NAMESPACE_STD
/* Get locale datatype definition. */
# include <xlocale.h>
-typedef __locale_t locale_t;
-
/* Return a reference to a data structure representing a set of locale
datasets. Unlike for the CATEGORY parameter for `setlocale' the
CATEGORY_MASK parameter here uses a single bit for each category,
diff --git a/locale/localeinfo.h b/locale/localeinfo.h
index 3661080bb2..72e9d3a6ea 100644
--- a/locale/localeinfo.h
+++ b/locale/localeinfo.h
@@ -1,5 +1,5 @@
/* Declarations for internal libc locale interfaces
- Copyright (C) 1995-2003, 2005, 2006, 2007, 2008
+ Copyright (C) 1995-2003, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -35,18 +35,20 @@
#define LIMAGIC(category) \
(category == LC_COLLATE \
? ((unsigned int) (0x20051014 ^ (category))) \
+ : category == LC_CTYPE \
+ ? ((unsigned int) (0x20090720 ^ (category))) \
: ((unsigned int) (0x20031115 ^ (category))))
/* Two special weight constants for the collation data. */
#define IGNORE_CHAR 2
-/* We use a special value for the usage counter in `locale_data' to
+/* We use a special value for the usage counter in `__locale_data' to
signal that this data must never be removed anymore. */
#define MAX_USAGE_COUNT (UINT_MAX - 1)
#define UNDELETABLE UINT_MAX
/* Structure describing locale data in core for a category. */
-struct locale_data
+struct __locale_data
{
const char *name;
const char *filedata; /* Region mapping the file data. */
@@ -63,7 +65,7 @@ struct locale_data
the data. */
struct
{
- void (*cleanup) (struct locale_data *) internal_function;
+ void (*cleanup) (struct __locale_data *) internal_function;
union
{
void *data;
@@ -143,7 +145,7 @@ struct era_entry
};
/* Structure caching computed data about information from LC_TIME.
- The `private.time' member of `struct locale_data' points to this. */
+ The `private.time' member of `struct __locale_data' points to this. */
struct lc_time_data
{
struct era_entry *eras;
@@ -230,12 +232,12 @@ __libc_tsd_define (extern, __locale_t, LOCALE)
and we arrange that linking that module is what brings in all the code
associated with this category. */
#define DEFINE_CATEGORY(category, category_name, items, a) \
-extern __thread struct locale_data *const *_nl_current_##category \
+extern __thread struct __locale_data *const *_nl_current_##category \
attribute_hidden attribute_tls_model_ie;
#include "categories.def"
#undef DEFINE_CATEGORY
-/* Return a pointer to the current `struct locale_data' for CATEGORY. */
+/* Return a pointer to the current `struct __locale_data' for CATEGORY. */
#define _NL_CURRENT_DATA(category) (*_nl_current_##category)
/* Extract the current CATEGORY locale's string for ITEM. */
@@ -252,7 +254,7 @@ extern __thread struct locale_data *const *_nl_current_##category \
/* This is used in lc-CATEGORY.c to define _nl_current_CATEGORY. */
#define _NL_CURRENT_DEFINE(category) \
- __thread struct locale_data *const *_nl_current_##category \
+ __thread struct __locale_data *const *_nl_current_##category \
attribute_hidden = &_nl_global_locale.__locales[category]; \
asm (_NL_CURRENT_DEFINE_STRINGIFY (ASM_GLOBAL_DIRECTIVE) \
" " __SYMBOL_PREFIX "_nl_current_" #category "_used\n" \
@@ -270,7 +272,7 @@ extern __thread struct locale_data *const *_nl_current_##category \
/* All categories are always loaded in the shared library, so there is no
point in having lots of separate symbols for linking. */
-/* Return a pointer to the current `struct locale_data' for CATEGORY. */
+/* Return a pointer to the current `struct __locale_data' for CATEGORY. */
# define _NL_CURRENT_DATA(category) \
(_NL_CURRENT_LOCALE->__locales[category])
@@ -302,9 +304,9 @@ extern const char _nl_default_locale_path[] attribute_hidden;
those directories are searched for the locale files. If it's null,
the locale archive is checked first and then _nl_default_locale_path
is searched for locale files. */
-extern struct locale_data *_nl_find_locale (const char *locale_path,
- size_t locale_path_len,
- int category, const char **name)
+extern struct __locale_data *_nl_find_locale (const char *locale_path,
+ size_t locale_path_len,
+ int category, const char **name)
internal_function attribute_hidden;
/* Try to load the file described by FILE. */
@@ -312,11 +314,11 @@ extern void _nl_load_locale (struct loaded_l10nfile *file, int category)
internal_function attribute_hidden;
/* Free all resource. */
-extern void _nl_unload_locale (struct locale_data *locale)
+extern void _nl_unload_locale (struct __locale_data *locale)
internal_function attribute_hidden;
/* Free the locale and give back all memory if the usage count is one. */
-extern void _nl_remove_locale (int locale, struct locale_data *data)
+extern void _nl_remove_locale (int locale, struct __locale_data *data)
internal_function attribute_hidden;
/* Find the locale *NAMEP in the locale archive, and return the
@@ -324,8 +326,8 @@ extern void _nl_remove_locale (int locale, struct locale_data *data)
already been loaded from the archive, just returns the existing data
structure. If successful, sets *NAMEP to point directly into the mapped
archive string table; that way, the next call can short-circuit strcmp. */
-extern struct locale_data *_nl_load_locale_from_archive (int category,
- const char **namep)
+extern struct __locale_data *_nl_load_locale_from_archive (int category,
+ const char **namep)
internal_function attribute_hidden;
/* Subroutine of setlocale's __libc_subfreeres hook. */
@@ -339,42 +341,42 @@ extern void _nl_locale_subfreeres (void) attribute_hidden;
and `name' fields uninitialized, for the caller to fill in.
If any bogons are detected in the data, this will refuse to
intern it, and return a null pointer instead. */
-extern struct locale_data *_nl_intern_locale_data (int category,
- const void *data,
- size_t datasize)
+extern struct __locale_data *_nl_intern_locale_data (int category,
+ const void *data,
+ size_t datasize)
internal_function attribute_hidden;
/* Return `era' entry which corresponds to TP. Used in strftime. */
extern struct era_entry *_nl_get_era_entry (const struct tm *tp,
- struct locale_data *lc_time)
+ struct __locale_data *lc_time)
internal_function attribute_hidden;
/* Return `era' cnt'th entry . Used in strptime. */
extern struct era_entry *_nl_select_era_entry (int cnt,
- struct locale_data *lc_time)
- internal_function attribute_hidden;
+ struct __locale_data *lc_time)
+ internal_function attribute_hidden;
/* Return `alt_digit' which corresponds to NUMBER. Used in strftime. */
extern const char *_nl_get_alt_digit (unsigned int number,
- struct locale_data *lc_time)
- internal_function attribute_hidden;
+ struct __locale_data *lc_time)
+ internal_function attribute_hidden;
/* Similar, but now for wide characters. */
extern const wchar_t *_nl_get_walt_digit (unsigned int number,
- struct locale_data *lc_time)
+ struct __locale_data *lc_time)
internal_function attribute_hidden;
/* Parse string as alternative digit and return numeric value. */
extern int _nl_parse_alt_digit (const char **strp,
- struct locale_data *lc_time)
+ struct __locale_data *lc_time)
internal_function attribute_hidden;
/* Postload processing. */
extern void _nl_postload_ctype (void);
/* Functions used for the `private.cleanup' hook. */
-extern void _nl_cleanup_time (struct locale_data *)
+extern void _nl_cleanup_time (struct __locale_data *)
internal_function attribute_hidden;
diff --git a/locale/locarchive.h b/locale/locarchive.h
index e94bc2b480..eb3353d316 100644
--- a/locale/locarchive.h
+++ b/locale/locarchive.h
@@ -1,5 +1,5 @@
/* Definitions for locale archive handling.
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2009 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
@@ -83,7 +83,8 @@ struct locarhandle
{
int fd;
void *addr;
- size_t len;
+ size_t mmaped;
+ size_t reserved;
};
diff --git a/locale/nl_langinfo_l.c b/locale/nl_langinfo_l.c
index 08e1534a8b..573fed0c4e 100644
--- a/locale/nl_langinfo_l.c
+++ b/locale/nl_langinfo_l.c
@@ -1,5 +1,5 @@
/* User interface for extracting locale-dependent parameters.
- Copyright (C) 1995-1997,1999-2002,2005,2007 Free Software Foundation, Inc.
+ Copyright (C) 1995-1997,1999-2002,2005,2007,2010 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
@@ -33,7 +33,7 @@ __nl_langinfo_l (item, l)
{
int category = _NL_ITEM_CATEGORY (item);
unsigned int index = _NL_ITEM_INDEX (item);
- const struct locale_data *data;
+ const struct __locale_data *data;
if (category < 0 || category == LC_ALL || category >= __LC_LAST)
/* Bogus category: bogus item. */
diff --git a/locale/programs/ld-address.c b/locale/programs/ld-address.c
index 6343b3c8a4..df2e193142 100644
--- a/locale/programs/ld-address.c
+++ b/locale/programs/ld-address.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2002, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2002, 2005, 2006, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -57,6 +57,8 @@ static struct
{ #Ab, #Term, #Lib },
#define DEFINE_LANGUAGE_CODE3(Name, Term, Lib) \
{ "", #Term, #Lib },
+#define DEFINE_LANGUAGE_CODE2(Name, Term) \
+ { "", #Term, "" },
#include "iso-639.def"
};
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
index bf50e77aab..11bd7eacad 100644
--- a/locale/programs/ld-collate.c
+++ b/locale/programs/ld-collate.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2003, 2005-2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2003, 2005-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
@@ -203,6 +203,8 @@ struct locale_collate_t
struct section_list *current_section;
/* There always can be an unnamed section. */
struct section_list unnamed_section;
+ /* Flag whether the unnamed section has been defined. */
+ bool unnamed_section_defined;
/* To make handling of errors easier we have another section. */
struct section_list error_section;
/* Sometimes we are defining the values for collating symbols before
@@ -634,7 +636,7 @@ find_element (struct linereader *ldfile, struct locale_collate_t *collate,
if (find_entry (&collate->seq_table, str, len, &result) != 0)
{
/* Nope, not define yet. So we see whether it is a
- collation symbol. */
+ collation symbol. */
void *ptr;
if (find_entry (&collate->sym_table, str, len, &ptr) == 0)
@@ -788,7 +790,7 @@ insert_weights (struct linereader *ldfile, struct element_t *elem,
if (*cp == '<')
{
/* Ahh, it's a bsymbol or an UCS4 value. If it's
- the latter we have to unify the name. */
+ the latter we have to unify the name. */
const char *startp = ++cp;
size_t len;
@@ -1302,8 +1304,8 @@ order for `%.*s' already defined at %s:%Zu"),
else
{
/* Determine the range. To do so we have to determine the
- common prefix of the both names and then the numeric
- values of both ends. */
+ common prefix of the both names and then the numeric
+ values of both ends. */
size_t lenfrom = strlen (startp->name);
size_t lento = strlen (endp->name);
char buf[lento + 1];
@@ -2222,14 +2224,14 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap,
else
{
/* The entries in the list are sorted by length and then
- alphabetically. This is the order in which we will add the
- elements to the collation table. This allows simply walking
+ alphabetically. This is the order in which we will add the
+ elements to the collation table. This allows simply walking
the table in sequence and stopping at the first matching
- entry. Since the longer sequences are coming first in the
- list they have the possibility to match first, just as it
- has to be. In the worst case we are walking to the end of
- the list where we put, if no singlebyte sequence is defined
- in the locale definition, the weights for UNDEFINED.
+ entry. Since the longer sequences are coming first in the
+ list they have the possibility to match first, just as it
+ has to be. In the worst case we are walking to the end of
+ the list where we put, if no singlebyte sequence is defined
+ in the locale definition, the weights for UNDEFINED.
To reduce the length of the search list we compress them a bit.
This happens by collecting sequences of consecutive byte
@@ -2297,7 +2299,7 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap,
obstack_1grow_fast (&extrapool, curp->mbs[i]);
/* Now find the end of the consecutive sequence and
- add all the indeces in the indirect pool. */
+ add all the indeces in the indirect pool. */
do
{
weightidx = output_weight (&weightpool, collate, curp);
@@ -2312,7 +2314,7 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap,
obstack_int32_grow (&indirectpool, weightidx);
/* And add the end byte sequence. Without length this
- time. */
+ time. */
for (i = 1; i < curp->nmbs; ++i)
obstack_1grow_fast (&extrapool, curp->mbs[i]);
}
@@ -2356,7 +2358,7 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap,
& (__alignof__ (int32_t) - 1)) == 0);
/* If the final entry in the list is not a single character we
- add an UNDEFINED entry here. */
+ add an UNDEFINED entry here. */
if (lastp->nmbs != 1)
{
int added = ((sizeof (int32_t) + 1 + 1 + __alignof__ (int32_t) - 1)
@@ -3293,7 +3295,7 @@ error while adding equivalent collating symbol"));
else
{
/* One should not be allowed to open the same
- section twice. */
+ section twice. */
if (sp->first != NULL)
lr_error (ldfile, _("\
%s: multiple order definitions for section `%s'"),
@@ -3349,7 +3351,7 @@ error while adding equivalent collating symbol"));
section. */
collate->current_section = &collate->unnamed_section;
- if (collate->unnamed_section.first != NULL)
+ if (collate->unnamed_section_defined)
lr_error (ldfile, _("\
%s: multiple order definitions for unnamed section"),
"LC_COLLATE");
@@ -3359,6 +3361,7 @@ error while adding equivalent collating symbol"));
the collate->sections list. */
collate->unnamed_section.next = collate->sections;
collate->sections = &collate->unnamed_section;
+ collate->unnamed_section_defined = true;
}
}
@@ -3579,9 +3582,9 @@ error while adding equivalent collating symbol"));
else
{
/* This is bad. The section after which we have to
- reorder does not exist. Therefore we cannot
- process the whole rest of this reorder
- specification. */
+ reorder does not exist. Therefore we cannot
+ process the whole rest of this reorder
+ specification. */
lr_error (ldfile, _("%s: section `%.*s' not known"),
"LC_COLLATE", (int) arg->val.str.lenmb,
arg->val.str.startmb);
@@ -3657,9 +3660,9 @@ error while adding equivalent collating symbol"));
if (state == 0)
{
/* We are outside an `order_start' region. This means
- we must only accept definitions of values for
- collation symbols since these are purely abstract
- values and don't need directions associated. */
+ we must only accept definitions of values for
+ collation symbols since these are purely abstract
+ values and don't need directions associated. */
void *ptr;
if (find_entry (&collate->seq_table, symstr, symlen, &ptr) == 0)
@@ -3741,7 +3744,7 @@ error while adding equivalent collating symbol"));
seqp->next->last = seqp->last;
/* We also have to check whether this entry is the
- first or last of a section. */
+ first or last of a section. */
if (seqp->section->first == seqp)
{
if (seqp->section->first == seqp->section->last)
@@ -3798,7 +3801,7 @@ error while adding equivalent collating symbol"));
}
/* Process the rest of the line which might change
- the collation rules. */
+ the collation rules. */
arg = lr_token (ldfile, charmap, result, repertoire,
verbose);
if (arg->tok != tok_eof && arg->tok != tok_eol)
@@ -3810,8 +3813,8 @@ error while adding equivalent collating symbol"));
else if (was_ellipsis != tok_none)
{
/* Using the information in the `ellipsis_weight'
- element and this and the last value we have to handle
- the ellipsis now. */
+ element and this and the last value we have to handle
+ the ellipsis now. */
assert (state == 1);
handle_ellipsis (ldfile, symstr, symlen, was_ellipsis, charmap,
@@ -3871,7 +3874,7 @@ error while adding equivalent collating symbol"));
case tok_ellipsis3: /* absolute ellipsis */
case tok_ellipsis4: /* symbolic decimal ellipsis */
/* This is the symbolic (decimal or hexadecimal) or absolute
- ellipsis. */
+ ellipsis. */
if (was_ellipsis != tok_none)
goto err_label;
diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
index d4474bf1a2..376a02c2f0 100644
--- a/locale/programs/ld-ctype.c
+++ b/locale/programs/ld-ctype.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
@@ -181,6 +181,7 @@ struct locale_ctype_t
size_t default_missing_lineno;
uint32_t to_nonascii;
+ uint32_t nonascii_case;
/* The arrays for the binary representation. */
char_class_t *ctype_b;
@@ -625,6 +626,27 @@ character <SP> not defined in character map")));
else
ctype->class256_collection[space_seq->bytes[0]] |= BIT (tok_print);
+ /* Check whether all single-byte characters make to their upper/lowercase
+ equivalent according to the ASCII rules. */
+ for (cnt = 'A'; cnt <= 'Z'; ++cnt)
+ {
+ uint32_t uppval = ctype->map256_collection[0][cnt];
+ uint32_t lowval = ctype->map256_collection[1][cnt];
+ uint32_t lowuppval = ctype->map256_collection[0][lowval];
+ uint32_t lowlowval = ctype->map256_collection[1][lowval];
+
+ if (uppval != cnt
+ || lowval != cnt + 0x20
+ || lowuppval != cnt
+ || lowlowval != cnt + 0x20)
+ ctype->nonascii_case = 1;
+ }
+ for (cnt = 0; cnt < 256; ++cnt)
+ if (cnt < 'A' || (cnt > 'Z' && cnt < 'a') || cnt > 'z')
+ if (ctype->map256_collection[0][cnt] != cnt
+ || ctype->map256_collection[1][cnt] != cnt)
+ ctype->nonascii_case = 1;
+
/* Now that the tests are done make sure the name array contains all
characters which are handled in the WIDTH section of the
character set definition file. */
@@ -1045,6 +1067,9 @@ ctype_output (struct localedef_t *locale, const struct charmap_t *charmap,
CTYPE_DATA (_NL_CTYPE_MAP_TO_NONASCII,
&ctype->to_nonascii, sizeof (uint32_t));
+ CTYPE_DATA (_NL_CTYPE_NONASCII_CASE,
+ &ctype->nonascii_case, sizeof (uint32_t));
+
case _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS_MB_LEN):
iov[2 + elem + offset].iov_base = alloca (sizeof (uint32_t));
iov[2 + elem + offset].iov_len = sizeof (uint32_t);
diff --git a/locale/programs/locale-spec.c b/locale/programs/locale-spec.c
index 6334f4c5ff..43df46bb38 100644
--- a/locale/programs/locale-spec.c
+++ b/locale/programs/locale-spec.c
@@ -1,5 +1,5 @@
/* Handle special requests.
- Copyright (C) 1996, 1997, 1999, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1999, 2005, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
@@ -21,6 +21,8 @@
# include <config.h>
#endif
+#include <error.h>
+#include <libintl.h>
#include <stdio.h>
#include <string.h>
#include <wchar.h>
@@ -124,4 +126,7 @@ locale_special (const char *name, int show_category_name,
return;
}
#endif
+
+ /* If nothing matches, fail. */
+ error (1, 0, gettext ("unknown name \"%s\""), name);
}
diff --git a/locale/programs/locale.c b/locale/programs/locale.c
index 5f770a1816..77262b7d1c 100644
--- a/locale/programs/locale.c
+++ b/locale/programs/locale.c
@@ -1,5 +1,5 @@
/* Implementation of the locale program according to POSIX 9945-2.
- Copyright (C) 1995-1997, 1999-2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1995-1997, 1999-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
@@ -84,9 +84,7 @@ static const struct argp_option options[] =
};
/* Short description of program. */
-static const char doc[] = N_("Get locale-specific information.\v\
-For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n");
+static const char doc[] = N_("Get locale-specific information.");
/* Strings for arguments in help texts. */
static const char args_doc[] = N_("NAME\n[-a|-m]");
@@ -94,10 +92,13 @@ static const char args_doc[] = N_("NAME\n[-a|-m]");
/* Prototype for option handler. */
static error_t parse_opt (int key, char *arg, struct argp_state *state);
+/* Function to print some extra text in the help message. */
+static char *more_help (int key, const char *text, void *input);
+
/* Data structure to communicate with argp functions. */
static struct argp argp =
{
- options, parse_opt, args_doc, doc
+ options, parse_opt, args_doc, doc, NULL, more_help
};
@@ -267,6 +268,23 @@ parse_opt (int key, char *arg, struct argp_state *state)
}
+static char *
+more_help (int key, const char *text, void *input)
+{
+ switch (key)
+ {
+ case ARGP_KEY_HELP_EXTRA:
+ /* We print some extra information. */
+ return strdup (gettext ("\
+For bug reporting instructions, please see:\n\
+<http://www.gnu.org/software/libc/bugs.html>.\n"));
+ default:
+ break;
+ }
+ return (char *) text;
+}
+
+
/* Print the version information. */
static void
print_version (FILE *stream, struct argp_state *state)
@@ -276,7 +294,7 @@ print_version (FILE *stream, struct argp_state *state)
Copyright (C) %s Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2008");
+"), "2009");
fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
}
diff --git a/locale/programs/localedef.c b/locale/programs/localedef.c
index a1823acafa..c8eebc7e5c 100644
--- a/locale/programs/localedef.c
+++ b/locale/programs/localedef.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
@@ -388,7 +388,7 @@ print_version (FILE *stream, struct argp_state *state)
Copyright (C) %s Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2008");
+"), "2009");
fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
}
diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
index 42e661846e..85ba77d194 100644
--- a/locale/programs/locarchive.c
+++ b/locale/programs/locarchive.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -71,6 +71,10 @@ static const char *locnames[] =
#define INITIAL_NUM_SUMS 2000
+/* Size of the reserved address space area. */
+#define RESERVE_MMAP_SIZE 512 * 1024 * 1024
+
+
static void
create_archive (const char *archivefname, struct locarhandle *ah)
{
@@ -125,8 +129,22 @@ create_archive (const char *archivefname, struct locarhandle *ah)
error (EXIT_FAILURE, errval, _("cannot resize archive file"));
}
+ /* To prepare for enlargements of the mmaped area reserve some
+ address space. */
+ size_t reserved = RESERVE_MMAP_SIZE;
+ int xflags = 0;
+ if (total < reserved
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
+ -1, 0)) != MAP_FAILED))
+ xflags = MAP_FIXED;
+ else
+ {
+ p = NULL;
+ reserved = total;
+ }
+
/* Map the header and all the administration data structures. */
- p = mmap64 (NULL, total, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+ p = mmap64 (p, total, PROT_READ | PROT_WRITE, MAP_SHARED | xflags, fd, 0);
if (p == MAP_FAILED)
{
int errval = errno;
@@ -170,7 +188,8 @@ create_archive (const char *archivefname, struct locarhandle *ah)
ah->fd = fd;
ah->addr = p;
- ah->len = total;
+ ah->mmaped = total;
+ ah->reserved = reserved;
}
@@ -226,6 +245,51 @@ static void add_alias (struct locarhandle *ah, const char *alias,
bool replace, const char *oldname,
uint32_t *locrec_offset_p);
+
+static bool
+file_data_available_p (struct locarhandle *ah, uint32_t offset, uint32_t size)
+{
+ if (offset < ah->mmaped && offset + size <= ah->mmaped)
+ return true;
+
+ struct stat64 st;
+ if (fstat64 (ah->fd, &st) != 0)
+ return false;
+
+ if (st.st_size > ah->reserved)
+ return false;
+
+ const size_t pagesz = getpagesize ();
+ size_t start = ah->mmaped & ~(pagesz - 1);
+ void *p = mmap64 (ah->addr + start, st.st_size - start,
+ PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED,
+ ah->fd, start);
+ if (p == MAP_FAILED)
+ {
+ ah->mmaped = start;
+ return false;
+ }
+
+ ah->mmaped = st.st_size;
+ return true;
+}
+
+
+static int
+compare_from_file (struct locarhandle *ah, void *p1, uint32_t offset2,
+ uint32_t size)
+{
+ void *p2 = xmalloc (size);
+ if (pread (ah->fd, p2, size, offset2) != size)
+ WITH_CUR_LOCALE (error (4, errno,
+ _("cannot read data from locale archive")));
+
+ int res = memcmp (p1, p2, size);
+ free (p2);
+ return res;
+}
+
+
static void
enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
{
@@ -249,11 +313,24 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
/* Not all of the old file has to be mapped. Change this now this
we will have to access the whole content. */
- if (fstat64 (ah->fd, &st) != 0
- || (ah->addr = mmap64 (NULL, st.st_size, PROT_READ | PROT_WRITE,
- MAP_SHARED, ah->fd, 0)) == MAP_FAILED)
+ if (fstat64 (ah->fd, &st) != 0)
+ enomap:
error (EXIT_FAILURE, errno, _("cannot map locale archive file"));
- ah->len = st.st_size;
+
+ if (st.st_size < ah->reserved)
+ ah->addr = mmap64 (ah->addr, st.st_size, PROT_READ | PROT_WRITE,
+ MAP_SHARED | MAP_FIXED, ah->fd, 0);
+ else
+ {
+ munmap (ah->addr, ah->reserved);
+ ah->addr = mmap64 (NULL, st.st_size, PROT_READ | PROT_WRITE,
+ MAP_SHARED, ah->fd, 0);
+ ah->reserved = st.st_size;
+ head = ah->addr;
+ }
+ if (ah->addr == MAP_FAILED)
+ goto enomap;
+ ah->mmaped = st.st_size;
/* Create a temporary file in the correct directory. */
fd = mkstemp (fname);
@@ -314,8 +391,22 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
error (EXIT_FAILURE, errval, _("cannot resize archive file"));
}
+ /* To prepare for enlargements of the mmaped area reserve some
+ address space. */
+ size_t reserved = RESERVE_MMAP_SIZE;
+ int xflags = 0;
+ if (total < reserved
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
+ -1, 0)) != MAP_FAILED))
+ xflags = MAP_FIXED;
+ else
+ {
+ p = NULL;
+ reserved = total;
+ }
+
/* Map the header and all the administration data structures. */
- p = mmap64 (NULL, total, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+ p = mmap64 (p, total, PROT_READ | PROT_WRITE, MAP_SHARED | xflags, fd, 0);
if (p == MAP_FAILED)
{
int errval = errno;
@@ -331,9 +422,10 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
error (EXIT_FAILURE, errval, _("cannot lock new archive"));
}
- new_ah.len = total;
+ new_ah.mmaped = total;
new_ah.addr = p;
new_ah.fd = fd;
+ new_ah.reserved = reserved;
/* Walk through the hash name hash table to find out what data is
still referenced and transfer it into the new file. */
@@ -380,7 +472,7 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
= ((char *) ah->addr
+ oldnamehashtab[oldlocrecarray[cnt - 1].cnt].name_offset);
- add_alias (&new_ah,
+ add_alias (&new_ah,
((char *) ah->addr
+ oldnamehashtab[oldlocrecarray[cnt].cnt].name_offset),
0, oldname, &last_locrec_offset);
@@ -514,18 +606,33 @@ open_archive (struct locarhandle *ah, bool readonly)
}
ah->fd = fd;
- ah->len = (head.sumhash_offset
- + head.sumhash_size * sizeof (struct sumhashent));
+ ah->mmaped = st.st_size;
- /* Now we know how large the administrative information part is.
- Map all of it. */
- ah->addr = mmap64 (NULL, ah->len, PROT_READ | (readonly ? 0 : PROT_WRITE),
- MAP_SHARED, fd, 0);
+ /* To prepare for enlargements of the mmaped area reserve some
+ address space. */
+ size_t reserved = RESERVE_MMAP_SIZE;
+ int xflags = 0;
+ void *p;
+ if (st.st_size < reserved
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
+ -1, 0)) != MAP_FAILED))
+ xflags = MAP_FIXED;
+ else
+ {
+ p = NULL;
+ reserved = st.st_size;
+ }
+
+ /* Map the entire file. We might need to compare the category data
+ in the file with the newly added data. */
+ ah->addr = mmap64 (p, st.st_size, PROT_READ | (readonly ? 0 : PROT_WRITE),
+ MAP_SHARED | xflags, fd, 0);
if (ah->addr == MAP_FAILED)
{
(void) lockf64 (fd, F_ULOCK, sizeof (struct locarhead));
error (EXIT_FAILURE, errno, _("cannot map archive header"));
}
+ ah->reserved = reserved;
}
@@ -534,7 +641,7 @@ close_archive (struct locarhandle *ah)
{
if (ah->fd != -1)
{
- munmap (ah->addr, ah->len);
+ munmap (ah->addr, ah->reserved);
close (ah->fd);
}
}
@@ -760,10 +867,41 @@ add_locale (struct locarhandle *ah,
{
if (memcmp (data[cnt].sum, sumhashtab[idx].sum, 16) == 0)
{
- /* Found it. */
- file_offsets[cnt] = sumhashtab[idx].file_offset;
- --num_new_offsets;
- break;
+ /* Check the content, there could be a collision of
+ the hash sum.
+
+ Unfortunately the sumhashent record does not include
+ the size of the stored data. So we have to search for
+ it. */
+ locrecent = (struct locrecent *) ((char *) ah->addr
+ + head->locrectab_offset);
+ size_t iloc;
+ for (iloc = 0; iloc < head->locrectab_used; ++iloc)
+ if (locrecent[iloc].refs != 0
+ && (locrecent[iloc].record[cnt].offset
+ == sumhashtab[idx].file_offset))
+ break;
+
+ if (iloc != head->locrectab_used
+ && data[cnt].size == locrecent[iloc].record[cnt].len
+ /* We have to compare the content. Either we can
+ have the data mmaped or we have to read from
+ the file. */
+ && (file_data_available_p (ah, sumhashtab[idx].file_offset,
+ data[cnt].size)
+ ? memcmp (data[cnt].addr,
+ (char *) ah->addr
+ + sumhashtab[idx].file_offset,
+ data[cnt].size) == 0
+ : compare_from_file (ah, data[cnt].addr,
+ sumhashtab[idx].file_offset,
+ data[cnt].size) == 0))
+ {
+ /* Found it. */
+ file_offsets[cnt] = sumhashtab[idx].file_offset;
+ --num_new_offsets;
+ break;
+ }
}
idx += incr;
diff --git a/locale/setlocale.c b/locale/setlocale.c
index 05a55a96ed..4ebce78244 100644
--- a/locale/setlocale.c
+++ b/locale/setlocale.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1995-2000, 2002, 2003, 2004, 2006, 2008
+/* Copyright (C) 1991, 1992, 1995-2000, 2002, 2003, 2004, 2006, 2008, 2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -207,7 +207,7 @@ setname (int category, const char *name)
/* Put DATA in *_nl_current[CATEGORY]. */
static inline void
-setdata (int category, struct locale_data *data)
+setdata (int category, struct __locale_data *data)
{
if (CATEGORY_USED (category))
{
@@ -273,7 +273,7 @@ setlocale (int category, const char *locale)
composite locale name. This is a semi-colon separated list
of entries of the form `CATEGORY=VALUE'. */
const char *newnames[__LC_LAST];
- struct locale_data *newdata[__LC_LAST];
+ struct __locale_data *newdata[__LC_LAST];
/* Set all name pointers to the argument name. */
for (category = 0; category < __LC_LAST; ++category)
@@ -400,7 +400,7 @@ setlocale (int category, const char *locale)
}
else
{
- struct locale_data *newdata = NULL;
+ struct __locale_data *newdata = NULL;
const char *newname[1] = { locale };
if (CATEGORY_USED (category))
@@ -465,7 +465,7 @@ libc_hidden_def (setlocale)
static void __libc_freeres_fn_section
free_category (int category,
- struct locale_data *here, struct locale_data *c_data)
+ struct __locale_data *here, struct locale_data *c_data)
{
struct loaded_l10nfile *runp = _nl_locale_file_list[category];
@@ -481,7 +481,7 @@ free_category (int category,
while (runp != NULL)
{
struct loaded_l10nfile *curr = runp;
- struct locale_data *data = (struct locale_data *) runp->data;
+ struct __locale_data *data = (struct locale_data *) runp->data;
if (data != NULL && data != c_data)
_nl_unload_locale (data);
@@ -502,7 +502,7 @@ _nl_locale_subfreeres (void)
# define DEFINE_CATEGORY(category, category_name, items, a) \
if (CATEGORY_USED (category)) \
{ \
- extern struct locale_data _nl_C_##category; \
+ extern struct __locale_data _nl_C_##category; \
weak_extern (_nl_C_##category) \
free_category (category, *_nl_current_##category, &_nl_C_##category); \
}
diff --git a/locale/tst-duplocale.c b/locale/tst-duplocale.c
new file mode 100644
index 0000000000..53e5fbb8fe
--- /dev/null
+++ b/locale/tst-duplocale.c
@@ -0,0 +1,14 @@
+#include <locale.h>
+#include <stdio.h>
+
+static int
+do_test (void)
+{
+ locale_t d = duplocale (LC_GLOBAL_LOCALE);
+ if (d != (locale_t) 0)
+ freelocale (d);
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/locale/tst-locname.c b/locale/tst-locname.c
new file mode 100644
index 0000000000..7eb71adfd8
--- /dev/null
+++ b/locale/tst-locname.c
@@ -0,0 +1,20 @@
+#include <langinfo.h>
+#include <locale.h>
+#include <stdio.h>
+#include <string.h>
+
+static int
+do_test (void)
+{
+ const char *s = nl_langinfo (_NL_LOCALE_NAME (LC_CTYPE));
+ if (s == NULL || strcmp (s, "C") != 0)
+ {
+ printf ("incorrect locale name returned: %s, expected \"C\"\n", s);
+ return 1;
+ }
+
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/locale/xlocale.c b/locale/xlocale.c
index 4573e6f390..f84e73ef0f 100644
--- a/locale/xlocale.c
+++ b/locale/xlocale.c
@@ -1,5 +1,5 @@
/* C locale object.
- Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2005, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001.
@@ -22,7 +22,7 @@
#include "localeinfo.h"
#define DEFINE_CATEGORY(category, category_name, items, a) \
-extern struct locale_data _nl_C_##category;
+extern struct __locale_data _nl_C_##category;
#include "categories.def"
#undef DEFINE_CATEGORY
diff --git a/locale/xlocale.h b/locale/xlocale.h
index 2b17d6973f..ce541528ce 100644
--- a/locale/xlocale.h
+++ b/locale/xlocale.h
@@ -1,5 +1,5 @@
/* Definition of locale datatype.
- Copyright (C) 1997,2000,02 Free Software Foundation, Inc.
+ Copyright (C) 1997,2000,2002,2009,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -28,7 +28,7 @@
typedef struct __locale_struct
{
/* Note: LC_ALL is not a valid index into this array. */
- struct locale_data *__locales[13]; /* 13 = __LC_LAST. */
+ struct __locale_data *__locales[13]; /* 13 = __LC_LAST. */
/* To increase the speed of this solution we add some special members. */
const unsigned short int *__ctype_b;
@@ -39,4 +39,7 @@ typedef struct __locale_struct
const char *__names[13];
} *__locale_t;
+/* POSIX 2008 makes locale_t official. */
+typedef __locale_t locale_t;
+
#endif /* xlocale.h */
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index bc339ff17a..88284268a9 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,245 @@
+2009-11-24 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/hsb_DE: Define week, first_weekday, and first_workday.
+
+2009-11-23 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/en_DK: Define week, first_weekday, and first_workday.
+
+2009-11-22 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/nl_NL: Define week, first_weekday, and first_workday.
+
+2009-10-30 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/it_CH: Fix typos in last change.
+ * locales/it_IT: Likewise.
+
+ * SUPPORTED (SUPPORTED-LOCALES): Add my_MM.
+
+ [BZ #9986]
+ * locales/iso_14651_common: Add rules for Burmese.
+ * locales/my_MM: New file.
+ Contributed by Keith Stribley <devel@thanlwinsoft.org>.
+
+ [BZ #10286]
+ * locales/ast_ES: Define first_weekday.
+
+ [BZ #10312]
+ * locales/es_CO: Define am_pm , t_fmt_ampm, first_weekday.
+ Patch by Jorge Guerrero <geojorg@gmail.com>.
+
+ [BZ #10319]
+ * locales/shs_CA: Fix accents.
+ Patch by Neskie Manuel <neskiem@gmail.com>.
+
+2009-10-29 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10425]
+ * locales/it_IT: Fix date_fmt.
+ * locales/it_CH: Likewise.
+ Patch by Nicolo' Chieffo <nicolo.chieffo@gmail.com>.
+
+ * locales/POSIX: Define yesstr and nostr.
+ * locales/en_US: Likewise.
+ Patch by Petr Machata <pmachata@redhat.com>.
+
+ * locales/crh_UA: Fix first day of week and a few spellings.
+ Patch by Reþat SABIQ <tilde.birlik@gmail.com>.
+
+2009-10-15 Ulrich Drepper <drepper@redhat.com>
+
+ * SUPPORTED (SUPPORTED-LOCALES): Add ps_AF.UTF-8.
+
+ * locale/ps_AF: New file.
+ Contributed by Sayamindu Dasgupta <sayamindu@gmail.com> and
+ Pravin Satpute <psatpute@redhat.com>.
+
+2009-06-16 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10011]
+ * locales/de_AT: Define week, first_weekday, first_workday.
+ Patch by Paul Marcher <flyer@gmail.com>.
+
+2009-06-15 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10213]
+ * SUPPORTED (SUPPORTED-LOCALES): Add dv_MV.UTF-8 entry.
+ * locales/dv_MV: New file.
+ Contributed by sofwathullah.mohamed@gmail.com.
+
+2009-06-09 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/ur_IN: New file.
+ Contributed by Pravin Satpute <psatpute@redhat.com>.
+
+2009-05-04 Ulrich Drepper <drepper@redhat.com>
+
+ * localedata/locales/bn_BD: Remove comment about missing collation
+ rules.
+ * localedata/locales/iso14651_t1_common: Add Bengali collation rules.
+ Patch by Pravin Satpute <psatpute@redhat.com>.
+
+2009-03-08 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * locales/cs.CZ: Change week[2] to 19971130, change first_weekday and
+ first_workday to 2.
+ * locales/da_DK: Likewise.
+ * locales/de_DE: Likewise.
+ * locales/fr_FR: Likewise.
+ * locales/fur_IT: Likewise.
+ * locales/fy_DE: Likewise.
+ * locales/ht_HT: Likewise.
+ * locales/hu_HU: Likewise.
+ * locales/li_BE: Likewise.
+ * locales/li_NL: Likewise.
+ * locales/mk_MK: Likewise.
+ * locales/nb_NO: Likewise.
+ * locales/nds_DE: Likewise.
+ * locales/nds_NL: Likewise.
+ * locales/nn_NO: Likewise.
+ * locales/pl_PL: Likewise.
+ * locales/sc_IT: Likewise.
+ * locales/sk_SK: Likewise.
+ * locales/uk_UA: Likewise.
+
+ * locales/csb_PL: Change week[2] to 19971130.
+ * locales/en_GB: Likewise.
+ * locales/et_EE: Likewise.
+
+ * locales/sr_ME: Set week to 7;19971130;4.
+ * locales/sr_RS: Likewise.
+ * locales/sr_RS@latin: Likewise.
+
+2009-04-22 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9963]
+ * locales/en_PH: Fix LC_PAPER.
+ * locales/es_CL: Likewise.
+ * locales/es_CO: Likewise.
+ * locales/es_MX: Likewise.
+ * locales/es_US: Likewise.
+ * locales/es_VE: Likewise.
+ * locales/fil_PH: Likewise.
+ * locales/ik_CA: Likewise.
+ * locales/iu_CA: Likewise.
+ * locales/tl_PH: Likewise.
+
+2009-04-18 Ulrich Drepper <drepper@redhat.com>
+
+ * SUPPORTED: Add ks_IN.
+
+2009-04-07 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/ks_IN@devanagari: Replace duplicated information with copy.
+ Fix title. Patch by Pravin Satpute <psatpute@redhat.com>.
+
+2009-04-06 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/ks_IN: New file.
+ Patch by Mohammad Nayeem <mohammad.nayeem@gmail.com> and
+ Pravin Satpute <psatpute@redhat.com>.
+
+2009-03-23 Jakub Jelinek <jakub@redhat.com>
+
+ [BZ #9985]
+ * charmaps/UTF-8: Fix encoding of <U1080>..<U109F>, <U12AF>.
+ Based on patch by Keith Stribley <devel@thanlwinsoft.org>.
+
+2009-03-15 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9844]
+ * locales/iso14651_t1_common: Move U0138 entry.
+
+ [BZ #9833]
+ * locales/ko_KR: Fix noexpr. Add nostr.
+
+ [BZ #9891]
+ * locales/mt_MT: Fix spelling of August (Awwissu).
+ Patch by Martin Pitt.
+
+2009-03-14 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9916]
+ * SUPPORTED (SUPPORTED-LOCALES): Add nan_TW@latin.
+ * locales/nan_TW@latin: New file.
+ Contributed by Arne Goetje.
+
+2009-02-11 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/iso14651_t1_common: Add rules for sorting Malayalam.
+ Patch by Santhosh Thottingal <santhosh.thottingal@gmail.com>.
+
+2009-02-06 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #7098]
+ * Makefile ($(inst_i18ndir)/charmaps/%.gz): No need to save
+ timestamp in compressed charmaps.
+ Patch by Gilles Espinasse <g.esp@free.fr>.
+
+ [BZ #9730]
+ * locales/sv_FI: Fix time formats.
+
+ [BZ #9736]
+ * locales/el_CY: Fix frac_digits and int_frac_digits.
+ * locales/el_GR: Likewise.
+ Patch by Clint Adams <schizo@debian.org>.
+
+2009-01-28 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9791]
+ * locales/as_IN: Break circular include loops introduced in last patch.
+ * locales/bn_BD: Likewise.
+ * locales/bn_IN: Likewise.
+ * locales/hi_IN: Likewise.
+ * locales/mr_IN: Likewise.
+ Patch by Pravin Satpute <psatpute@redhat.com>.
+
+2009-01-08 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #9701]
+ * locales/sk_SK: Slovakia uses the Euro.
+
+ [BZ #9704]
+ * locales/mt_MT: Malta uses the Euro.
+
+ [BZ #9705]
+ * locales/el_CY: Cyprus uses the Euro.
+
+2008-12-31 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/iso14651_t1_common: Fix sorting of U+0AB3.
+ Patch by Pravin Satpute <psatpute@redhat.com>.
+
+2008-12-30 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/i18n: Move Indic Matra characters to punct.
+ * locales/as_IN: Add support for internationalized digits.
+ * locales/bn_BD: Likewise.
+ * locales/bn_IN: Likewise.
+ * locales/gu_IN: Likewise.
+ * locales/hi_IN: Likewise.
+ * locales/kn_IN: Likewise.
+ * locales/ml_IN: Likewise.
+ * locales/mr_IN: Likewise.
+ * locales/or_IN: Likewise.
+ * locales/pa_IN: Likewise.
+ * locales/ta_IN: Likewise.
+ * locales/te_IN: Likewise.
+ Patch by Pravin Satpute <psatpute@redhat.com>.
+
+2008-12-26 Ulrich Drepper <drepper@redhat.com>
+
+ * tests-mbwc/tst_types.h (TIN_MBRLEN_REC): Use correct array
+ length constant.
+
+2008-12-05 Ulrich Drepper <drepper@redhat.com>
+
+ * SUPPORTED (SUPPORTED-LOCALES): Add hne_IN.
+
+ * locales/hne_IN: New file.
+ Contributed by Pravin Satpute <psatpute@redhat.com>.
+
2008-10-31 Ulrich Drepper <drepper@redhat.com>
[BZ #6920]
diff --git a/localedata/Makefile b/localedata/Makefile
index 0566792d00..d364001551 100644
--- a/localedata/Makefile
+++ b/localedata/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1996-2003, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 1996-2003,2005,2007,2008,2009 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
@@ -114,7 +114,7 @@ $(inst_i18ndir)/charmaps/%.gz: charmaps/% $(+force)
$(make-target-directory)
rm -f $(@:.gz=) $@
$(INSTALL_DATA) $< $(@:.gz=)
- gzip -9 $(@:.gz=)
+ gzip -9n $(@:.gz=)
# Install the locale source files in the appropriate directory.
$(inst_i18ndir)/locales/%: locales/% $(+force); $(do-install)
diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED
index 52f8aea807..f94570dcfb 100644
--- a/localedata/SUPPORTED
+++ b/localedata/SUPPORTED
@@ -98,6 +98,7 @@ de_DE@euro/ISO-8859-15 \
de_LU.UTF-8/UTF-8 \
de_LU/ISO-8859-1 \
de_LU@euro/ISO-8859-15 \
+dv_MV/UTF-8 \
dz_BT/UTF-8 \
el_GR.UTF-8/UTF-8 \
el_GR/ISO-8859-7 \
@@ -222,6 +223,7 @@ ha_NG/UTF-8 \
he_IL.UTF-8/UTF-8 \
he_IL/ISO-8859-8 \
hi_IN/UTF-8 \
+hne_IN/UTF-8 \
hr_HR.UTF-8/UTF-8 \
hr_HR/ISO-8859-2 \
hsb_DE/ISO-8859-2 \
@@ -257,6 +259,7 @@ km_KH/UTF-8 \
kn_IN/UTF-8 \
ko_KR.EUC-KR/EUC-KR \
ko_KR.UTF-8/UTF-8 \
+ks_IN/UTF-8 \
ks_IN@devanagari/UTF-8 \
ku_TR.UTF-8/UTF-8 \
ku_TR/ISO-8859-9 \
@@ -286,6 +289,8 @@ ms_MY.UTF-8/UTF-8 \
ms_MY/ISO-8859-1 \
mt_MT.UTF-8/UTF-8 \
mt_MT/ISO-8859-3 \
+my_MM/UTF-8 \
+nan_TW@latin/UTF-8 \
nb_NO.UTF-8/UTF-8 \
nb_NO/ISO-8859-1 \
nds_DE/UTF-8 \
@@ -313,6 +318,7 @@ pa_PK/UTF-8 \
pap_AN/UTF-8 \
pl_PL.UTF-8/UTF-8 \
pl_PL/ISO-8859-2 \
+ps_AF/UTF-8 \
pt_BR.UTF-8/UTF-8 \
pt_BR/ISO-8859-1 \
pt_PT.UTF-8/UTF-8 \
diff --git a/localedata/charmaps/UTF-8 b/localedata/charmaps/UTF-8
index 34b2f7ee8f..736a283338 100644
--- a/localedata/charmaps/UTF-8
+++ b/localedata/charmaps/UTF-8
@@ -3325,34 +3325,34 @@ CHARMAP
<U107D> /xe1/x81/xbd MYANMAR LETTER SHAN PHA
<U107E> /xe1/x81/xbe MYANMAR LETTER SHAN FA
<U107F> /xe1/x81/xbf MYANMAR LETTER SHAN BA
-<U1080> /xe1/x81/x80 MYANMAR LETTER SHAN THA
-<U1081> /xe1/x81/x81 MYANMAR LETTER SHAN HA
-<U1082> /xe1/x81/x82 MYANMAR CONSONANT SIGN SHAN MEDIAL WA
-<U1083> /xe1/x81/x83 MYANMAR VOWEL SIGN SHAN AA
-<U1084> /xe1/x81/x84 MYANMAR VOWEL SIGN SHAN E
-<U1085> /xe1/x81/x85 MYANMAR VOWEL SIGN SHAN E ABOVE
-<U1086> /xe1/x81/x86 MYANMAR VOWEL SIGN SHAN FINAL Y
-<U1087> /xe1/x81/x87 MYANMAR SIGN SHAN TONE-2
-<U1088> /xe1/x81/x88 MYANMAR SIGN SHAN TONE-3
-<U1089> /xe1/x81/x89 MYANMAR SIGN SHAN TONE-5
-<U108A> /xe1/x81/x8a MYANMAR SIGN SHAN TONE-6
-<U108B> /xe1/x81/x8b MYANMAR SIGN SHAN COUNCIL TONE-2
-<U108C> /xe1/x81/x8c MYANMAR SIGN SHAN COUNCIL TONE-3
-<U108D> /xe1/x81/x8d MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
-<U108E> /xe1/x81/x8e MYANMAR LETTER RUMAI PALAUNG FA
-<U108F> /xe1/x81/x8f MYANMAR SIGN RUMAI PALAUNG TONE-5
-<U1090> /xe1/x81/x90 MYANMAR SHAN DIGIT ZERO
-<U1091> /xe1/x81/x91 MYANMAR SHAN DIGIT ONE
-<U1092> /xe1/x81/x92 MYANMAR SHAN DIGIT TWO
-<U1093> /xe1/x81/x93 MYANMAR SHAN DIGIT THREE
-<U1094> /xe1/x81/x94 MYANMAR SHAN DIGIT FOUR
-<U1095> /xe1/x81/x95 MYANMAR SHAN DIGIT FIVE
-<U1096> /xe1/x81/x96 MYANMAR SHAN DIGIT SIX
-<U1097> /xe1/x81/x97 MYANMAR SHAN DIGIT SEVEN
-<U1098> /xe1/x81/x98 MYANMAR SHAN DIGIT EIGHT
-<U1099> /xe1/x81/x99 MYANMAR SHAN DIGIT NINE
-<U109E> /xe1/x81/x9e MYANMAR SYMBOL SHAN ONE
-<U109F> /xe1/x81/x9f MYANMAR SYMBOL SHAN EXCLAMATION
+<U1080> /xe1/x82/x80 MYANMAR LETTER SHAN THA
+<U1081> /xe1/x82/x81 MYANMAR LETTER SHAN HA
+<U1082> /xe1/x82/x82 MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+<U1083> /xe1/x82/x83 MYANMAR VOWEL SIGN SHAN AA
+<U1084> /xe1/x82/x84 MYANMAR VOWEL SIGN SHAN E
+<U1085> /xe1/x82/x85 MYANMAR VOWEL SIGN SHAN E ABOVE
+<U1086> /xe1/x82/x86 MYANMAR VOWEL SIGN SHAN FINAL Y
+<U1087> /xe1/x82/x87 MYANMAR SIGN SHAN TONE-2
+<U1088> /xe1/x82/x88 MYANMAR SIGN SHAN TONE-3
+<U1089> /xe1/x82/x89 MYANMAR SIGN SHAN TONE-5
+<U108A> /xe1/x82/x8a MYANMAR SIGN SHAN TONE-6
+<U108B> /xe1/x82/x8b MYANMAR SIGN SHAN COUNCIL TONE-2
+<U108C> /xe1/x82/x8c MYANMAR SIGN SHAN COUNCIL TONE-3
+<U108D> /xe1/x82/x8d MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+<U108E> /xe1/x82/x8e MYANMAR LETTER RUMAI PALAUNG FA
+<U108F> /xe1/x82/x8f MYANMAR SIGN RUMAI PALAUNG TONE-5
+<U1090> /xe1/x82/x90 MYANMAR SHAN DIGIT ZERO
+<U1091> /xe1/x82/x91 MYANMAR SHAN DIGIT ONE
+<U1092> /xe1/x82/x92 MYANMAR SHAN DIGIT TWO
+<U1093> /xe1/x82/x93 MYANMAR SHAN DIGIT THREE
+<U1094> /xe1/x82/x94 MYANMAR SHAN DIGIT FOUR
+<U1095> /xe1/x82/x95 MYANMAR SHAN DIGIT FIVE
+<U1096> /xe1/x82/x96 MYANMAR SHAN DIGIT SIX
+<U1097> /xe1/x82/x97 MYANMAR SHAN DIGIT SEVEN
+<U1098> /xe1/x82/x98 MYANMAR SHAN DIGIT EIGHT
+<U1099> /xe1/x82/x99 MYANMAR SHAN DIGIT NINE
+<U109E> /xe1/x82/x9e MYANMAR SYMBOL SHAN ONE
+<U109F> /xe1/x82/x9f MYANMAR SYMBOL SHAN EXCLAMATION
<U10A0> /xe1/x82/xa0 GEORGIAN CAPITAL LETTER AN
<U10A1> /xe1/x82/xa1 GEORGIAN CAPITAL LETTER BAN
<U10A2> /xe1/x82/xa2 GEORGIAN CAPITAL LETTER GAN
@@ -3841,7 +3841,7 @@ CHARMAP
<U12AC> /xe1/x8a/xac ETHIOPIC SYLLABLE KEE
<U12AD> /xe1/x8a/xad ETHIOPIC SYLLABLE KE
<U12AE> /xe1/x8a/xae ETHIOPIC SYLLABLE KO
-<U12AF> /xe1/x8a/x8f ETHIOPIC SYLLABLE KOA
+<U12AF> /xe1/x8a/xaf ETHIOPIC SYLLABLE KOA
<U12B0> /xe1/x8a/xb0 ETHIOPIC SYLLABLE KWA
<U12B2> /xe1/x8a/xb2 ETHIOPIC SYLLABLE KWI
<U12B3> /xe1/x8a/xb3 ETHIOPIC SYLLABLE KWAA
@@ -27034,12 +27034,12 @@ CHARMAP
<U000103C3> /xf0/x90/x8f/x83 OLD PERSIAN SIGN HA
<U000103C8> /xf0/x90/x8f/x88 OLD PERSIAN SIGN AURAMAZDAA
<U000103C9> /xf0/x90/x8f/x89 OLD PERSIAN SIGN AURAMAZDAA-2
-<U000103CA> /xf0/x90/x8f/x8A OLD PERSIAN SIGN AURAMAZDAAHA
-<U000103CB> /xf0/x90/x8f/x8B OLD PERSIAN SIGN XSHAAYATHIYA
-<U000103CC> /xf0/x90/x8f/x8C OLD PERSIAN SIGN DAHYAAUSH
-<U000103CD> /xf0/x90/x8f/x8D OLD PERSIAN SIGN DAHYAAUSH-2
-<U000103CE> /xf0/x90/x8f/x8E OLD PERSIAN SIGN BAGA
-<U000103CF> /xf0/x90/x8f/x8F OLD PERSIAN SIGN BUUMISH
+<U000103CA> /xf0/x90/x8f/x8a OLD PERSIAN SIGN AURAMAZDAAHA
+<U000103CB> /xf0/x90/x8f/x8b OLD PERSIAN SIGN XSHAAYATHIYA
+<U000103CC> /xf0/x90/x8f/x8c OLD PERSIAN SIGN DAHYAAUSH
+<U000103CD> /xf0/x90/x8f/x8d OLD PERSIAN SIGN DAHYAAUSH-2
+<U000103CE> /xf0/x90/x8f/x8e OLD PERSIAN SIGN BAGA
+<U000103CF> /xf0/x90/x8f/x8f OLD PERSIAN SIGN BUUMISH
<U000103D0> /xf0/x90/x8f/x90 OLD PERSIAN WORD DIVIDER
<U000103D1> /xf0/x90/x8f/x91 OLD PERSIAN NUMBER ONE
<U000103D2> /xf0/x90/x8f/x92 OLD PERSIAN NUMBER TWO
diff --git a/localedata/locales/POSIX b/localedata/locales/POSIX
index 00c5b4a0d6..457ce6ec64 100644
--- a/localedata/locales/POSIX
+++ b/localedata/locales/POSIX
@@ -328,4 +328,8 @@ LC_MESSAGES
yesexpr "<U005E><U005B><U0079><U0059><U005D>"
#
noexpr "<U005E><U005B><U006E><U004E><U005D>"
+#
+yesstr "<U0059><U0065><U0073>"
+#
+nostr "<U004E><U006F>"
END LC_MESSAGES
diff --git a/localedata/locales/as_IN b/localedata/locales/as_IN
index 41917f06dc..6fbd66ee2f 100644
--- a/localedata/locales/as_IN
+++ b/localedata/locales/as_IN
@@ -32,11 +32,7 @@ END LC_IDENTIFICATION
%%%%%%%%%%%%%
LC_CTYPE
-copy "i18n"
-
-translit_start
-include "translit_combining";""
-translit_end
+copy "bn_BD"
END LC_CTYPE
%%%%%%%%%%%%%
diff --git a/localedata/locales/ast_ES b/localedata/locales/ast_ES
index 249571cd3e..eb048d5bbb 100644
--- a/localedata/locales/ast_ES
+++ b/localedata/locales/ast_ES
@@ -109,6 +109,7 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
+first_weekday 2
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/bn_BD b/localedata/locales/bn_BD
index dfbe47f050..8b46636b25 100644
--- a/localedata/locales/bn_BD
+++ b/localedata/locales/bn_BD
@@ -32,13 +32,29 @@ category "bn_BD:2001";LC_NAME
END LC_IDENTIFICATION
LC_COLLATE
-% TODO: Bengali sorting should be added
copy "iso14651_t1"
END LC_COLLATE
LC_CTYPE
copy "i18n"
+% Bengali uses the alternate digits U+09E6..U+09EF
+outdigit <U09E6>..<U09EF>
+
+% This is used in the scanf family of functions to read Bengali numbers
+% using "%Id" and such.
+map to_inpunct; /
+ (<U0030>,<U09E6>); /
+ (<U0031>,<U09E7>); /
+ (<U0032>,<U09E8>); /
+ (<U0033>,<U09E9>); /
+ (<U0034>,<U09EA>); /
+ (<U0035>,<U09EB>); /
+ (<U0036>,<U09EC>); /
+ (<U0037>,<U09ED>); /
+ (<U0038>,<U09EE>); /
+ (<U0039>,<U09EF>);
+
translit_start
include "translit_combining";""
translit_end
diff --git a/localedata/locales/crh_UA b/localedata/locales/crh_UA
index 5dfab24d90..a6fceeae0a 100644
--- a/localedata/locales/crh_UA
+++ b/localedata/locales/crh_UA
@@ -1,14 +1,14 @@
comment_char %
escape_char /
%
-% Crimean Tatar Language Locale for Ukraine (latin)
-% Source: Reshat Sabiq (Re<U015F>at)
-% Contact: Reshat Sabiq (Re<U015F>at)
-% Email: <tatar.iqtelif.i18n@gmail.com>
+% Crimean Tatar (Crimean Turkish) Language Locale for Ukraine (latin)
+% Source: Re<U015F>at SABIQ
+% Contact: Re<U015F>at SABIQ
+% Email: <tilde.birlik@gmail.com>
% Language: crh
% Territory: UA
-% Revision: 0.3
-% Date: 2006-10-09
+% Revision: 0.4
+% Date: 2009-08-16
% Application: general
% Users: general
% Charset: UTF-8
@@ -16,17 +16,17 @@ escape_char /
% for commercial purposes.
LC_IDENTIFICATION
-title "Crimean Tatar language locale for Ukraine"
+title "Crimean Tatar (Crimean Turkish) language locale for Ukraine"
source ""
address ""
-contact "Reshat Sabiq (Re<U015F>at)"
-email "tatar.iqtelif.i18n@gmail.com"
+contact "Re<U015F>at SABIQ"
+email "tilde.birlik@gmail.com"
tel ""
fax ""
language "Crimean Tatar"
territory "Ukraine"
-revision "0.3"
-date "2006-10-09"
+revision "0.4"
+date "2009-08-16"
category crh_UA:2000;LC_IDENTIFICATION
category crh_UA:2000;LC_CTYPE
@@ -124,11 +124,10 @@ copy "tr_TR"
END LC_CTYPE
LC_MESSAGES
-% TODO: No is "yoq"; is it OK that it corresponds with English "yes"?
yesstr "<U0065><U0062><U0065><U0074>"
-nostr "<U0079><U006F><U0071>"
-yesexpr "<U005E><U005B><U0045><U0065><U005D><U002E><U002A>"
-noexpr "<U005E><U005B><U0059><U0079><U004E><U006E><U005D><U002E><U002A>"
+nostr "<U0068><U0061><U0079><U0131><U0072>"
+yesexpr "<U005E><U005B><U0079><U0059><U0065><U0045><U005D>"
+noexpr "<U005E><U005B><U006E><U004E><U0068><U0048><U005D>"
END LC_MESSAGES
LC_MONETARY
@@ -157,9 +156,9 @@ END LC_NUMERIC
LC_TIME
day "<U0042><U0061><U007A><U0061><U0072>";/
- "<U0042><U0061><U007A><U0061><U0072><U0020><U0065><U0072><U0074><U0065><U0073><U0069>";/
+ "<U0042><U0061><U007A><U0061><U0072><U0065><U0072><U0074><U0065><U0073><U0069>";/
"<U0053><U0061><U006C><U0131>";/
- "<U00C7><U0061><U0072><U015F><U0065><U006E><U0062><U0065>";/
+ "<U00C7><U0061><U0072><U015F><U0065><U006D><U0062><U0065>";/
"<U0043><U0075><U006D><U0061><U0061><U0071><U015F><U0061><U006D><U0131>";/
"<U0043><U0075><U006D><U0061>";/
"<U0043><U0075><U006D><U0061><U0065><U0072><U0074><U0065><U0073><U0069>"
@@ -198,12 +197,14 @@ d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062>/
<U0020><U0025><U0059><U0020><U0025><U0054>"
d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
t_fmt "<U0025><U0054>"
-am_pm "<U00D6><U0041>";"<U00D6><U0053>"
+am_pm "<U00DC><U0045>";"<U00DC><U0053>"
t_fmt_ampm "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053>/
<U0020><U0025><U0070>"
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/cs_CZ b/localedata/locales/cs_CZ
index 640c8f836d..2f25e9a8f6 100644
--- a/localedata/locales/cs_CZ
+++ b/localedata/locales/cs_CZ
@@ -2438,9 +2438,9 @@ abmon "<U006C><U0065><U0064>";/
% "<U004E><U006F><U0076>";/
% "<U0044><U0065><U0063>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
d_t_fmt "<U0025><U0061><U00A0><U0025><U002D><U0064><U002E><U00A0><U0025><U0042><U00A0><U0025><U0059><U002C><U00A0><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U00A0><U0025><U005A>"
diff --git a/localedata/locales/csb_PL b/localedata/locales/csb_PL
index 663fd6cf8d..93c9ae2eb7 100644
--- a/localedata/locales/csb_PL
+++ b/localedata/locales/csb_PL
@@ -184,7 +184,7 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
+week 7;19971130;4
first_weekday 2
first_workday 2
END LC_TIME
diff --git a/localedata/locales/da_DK b/localedata/locales/da_DK
index 2c8a41a963..c4b451db9c 100644
--- a/localedata/locales/da_DK
+++ b/localedata/locales/da_DK
@@ -209,9 +209,9 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_MESSAGES
diff --git a/localedata/locales/de_AT b/localedata/locales/de_AT
index 4ec42f470e..4e0b7fb158 100644
--- a/localedata/locales/de_AT
+++ b/localedata/locales/de_AT
@@ -121,6 +121,9 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/de_DE b/localedata/locales/de_DE
index b040923ead..eac517a578 100644
--- a/localedata/locales/de_DE
+++ b/localedata/locales/de_DE
@@ -155,9 +155,9 @@ date_fmt "<U0025><U0061><U0020><U0025><U002D><U0064><U002E><U0020>/
<U0025><U0062><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>/
<U0020><U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_MESSAGES
diff --git a/localedata/locales/dv_MV b/localedata/locales/dv_MV
new file mode 100644
index 0000000000..064da132a8
--- /dev/null
+++ b/localedata/locales/dv_MV
@@ -0,0 +1,180 @@
+comment_char %
+escape_char /
+%
+% Dhivehi Language Locale for Maldives
+% Source:
+% Contact: Sofwathuallah Mohamed
+% Email: smohamed@wataniya-maldives.com , sofwath@hotmail.com
+% Language: dv
+% Territory: MV
+% Revision: 0.1
+% Date: 2006-05-13
+% Users: general
+% Charset: utf-8
+% Distribution and use is free, also
+% for commercial purposes.
+
+LC_IDENTIFICATION
+title "Dhivehi Language Locale for Maldives"
+source ""
+address ""
+contact ""
+email "sofwath@hotmail.com"
+tel ""
+fax ""
+language "Divehi"
+territory "Maldives"
+revision "0.1"
+date "2006-05-13"
+%
+category "dv_MV:2006";LC_IDENTIFICATION
+category "dv_MV:2006";LC_CTYPE
+category "dv_MV:2006";LC_COLLATE
+category "dv_MV:2006";LC_TIME
+category "dv_MV:2006";LC_NUMERIC
+category "dv_MV:2006";LC_MONETARY
+category "dv_MV:2006";LC_MESSAGES
+category "dv_MV:2006";LC_PAPER
+category "dv_MV:2006";LC_NAME
+category "dv_MV:2006";LC_ADDRESS
+category "dv_MV:2006";LC_TELEPHONE
+
+END LC_IDENTIFICATION
+
+LC_CTYPE
+copy "i18n"
+translit_start
+include "translit_combining";""
+
+
+translit_end
+END LC_CTYPE
+
+LC_COLLATE
+copy "en_DK"
+END LC_COLLATE
+
+LC_MONETARY
+% it is meant to be MVR, could you see if it is correct please
+int_curr_symbol "<U004D><U0056><U0052><U0020>"
+currency_symbol "<U0783><U002E>"
+mon_decimal_point "<U002E>"
+mon_thousands_sep "<U002C>"
+mon_grouping 3;3
+positive_sign ""
+negative_sign "<U002D>"
+int_frac_digits 2
+frac_digits 2
+p_cs_precedes 1
+p_sep_by_space 1
+n_cs_precedes 1
+n_sep_by_space 0
+p_sign_posn 2
+n_sign_posn 1
+END LC_MONETARY
+
+LC_NUMERIC
+decimal_point "<U002E>"
+thousands_sep "<U002C>"
+grouping 3;3
+END LC_NUMERIC
+
+% Since their is no abbreviated version of the days in dhivehi I have used the
+% full names of the days and months
+LC_TIME
+
+abday "<U0787><U07A7><U078B><U07A9><U0787><U07B0><U078C><U07A6>";/
+ "<U0780><U07AF><U0789><U07A6>";/
+ "<U0787><U07A6><U0782><U07B0><U078E><U07A7><U0783><U07A6>";/
+ "<U0784><U07AA><U078B><U07A6>";/
+ "<U0784><U07AA><U0783><U07A7><U0790><U07B0><U078A><U07A6><U078C><U07A8>";/
+ "<U0780><U07AA><U0786><U07AA><U0783><U07AA>";/
+ "<U0780><U07AE><U0782><U07A8><U0780><U07A8><U0783><U07AA>"
+day "<U0787><U07A7><U078B><U07A9><U0787><U07B0><U078C><U07A6>";/
+ "<U0780><U07AF><U0789><U07A6>";/
+ "<U0787><U07A6><U0782><U07B0><U078E><U07A7><U0783><U07A6>";/
+ "<U0784><U07AA><U078B><U07A6>";/
+ "<U0784><U07AA><U0783><U07A7><U0790><U07B0><U078A><U07A6><U078C><U07A8>";/
+ "<U0780><U07AA><U0786><U07AA><U0783><U07AA>";/
+ "<U0780><U07AE><U0782><U07A8><U0780><U07A8><U0783><U07AA>"
+abmon "<U0796><U07AC><U0782><U07AA><U0787><U07A6><U0783><U07A9>";/
+ "<U078A><U07AC><U0784><U07B0><U0783><U07AA><U0787><U07A6><U0783><U07A9>";/
+ "<U0789><U07A7><U0783><U0797><U07B0>";/
+ "<U0787><U07AC><U0795><U07B0><U0783><U07A9><U078D><U07B0>";/
+ "<U0789><U07AC><U0787><U07A8>";/
+ "<U0796><U07AB><U0782><U07B0>";/
+ "<U0796><U07AA><U078D><U07A6><U0787><U07A8>";/
+ "<U0787><U07AE><U078E><U07A6><U0790><U07B0><U0793><U07B0>";/
+ "<U0790><U07AC><U0795><U07B0><U0793><U07AC><U0782><U07B0><U0784><U07A6><U0783>";/
+ "<U0787><U07AE><U0786><U07B0><U0793><U07AB><U0784><U07A6><U0783>";/
+ "<U0782><U07AE><U0788><U07AC><U0782><U07B0><U0784><U07A6><U0783>";/
+ "<U0791><U07A8><U0790><U07AC><U0782><U07B0><U0784><U07A6><U0783>"
+mon "<U0796><U07AC><U0782><U07AA><U0787><U07A6><U0783><U07A9>";/
+ "<U078A><U07AC><U0784><U07B0><U0783><U07AA><U0787><U07A6><U0783><U07A9>";/
+ "<U0789><U07A7><U0783><U0797><U07B0>";/
+ "<U0787><U07AC><U0795><U07B0><U0783><U07A9><U078D><U07B0>";/
+ "<U0789><U07AC><U0787><U07A8>";/
+ "<U0796><U07AB><U0782><U07B0>";/
+ "<U0796><U07AA><U078D><U07A6><U0787><U07A8>";/
+ "<U0787><U07AE><U078E><U07A6><U0790><U07B0><U0793><U07B0>";/
+ "<U0790><U07AC><U0795><U07B0><U0793><U07AC><U0782><U07B0><U0784><U07A6><U0783>";/
+ "<U0787><U07AE><U0786><U07B0><U0793><U07AB><U0784><U07A6><U0783>";/
+ "<U0782><U07AE><U0788><U07AC><U0782><U07B0><U0784><U07A6><U0783>";/
+ "<U0791><U07A8><U0790><U07AC><U0782><U07B0><U0784><U07A6><U0783>"
+
+% Date Time Format
+d_t_fmt "<U0025><U005A><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0059><U0020><U0025><U0062><U0020><U0025><U0064><U0020><U0025><U0061>"
+
+% date Format. I have put this in reverse order to try to get the date
+% in R->L order
+d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
+
+% time format
+t_fmt "<U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>"
+
+%<U0635> stands for <U0635><U0628><U062D>
+%<U0634> stands for <U0634><U0627><U0645>
+%am_pm "<U0020>";"<U0789><U07AC><U0782><U07B0><U078B><U07AA><U0782><U07AA><U0782><U07B0><U0787><U07A6><U0784><U07AA><U0783><U07A7>"
+am_pm "<U0789><U0786>";"<U0789><U078A>"
+
+% time format in 12 hour clock
+t_fmt_ampm "<U0025><U0050><U0020><U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053>"
+
+% display columns right to left ?
+cal_direction 3
+END LC_TIME
+
+LC_MESSAGES
+yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
+noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
+END LC_MESSAGES
+
+LC_PAPER
+height 297
+width 210
+END LC_PAPER
+
+LC_TELEPHONE
+tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
+<U006C>"
+tel_dom_fmt "<U0025><U0061><U0020><U0025><U006C>"
+int_select "<U0030><U0030>"
+int_prefix "<U0039><U0036><U0030>"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+measurement 1
+END LC_MEASUREMENT
+
+LC_NAME
+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
+<U0025><U006D><U0025><U0074><U0025><U0066>"
+END LC_NAME
+
+LC_ADDRESS
+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
+<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
+<U004E><U0025><U0063><U0025><U004E>"
+END LC_ADDRESS
diff --git a/localedata/locales/el_CY b/localedata/locales/el_CY
index 66acb12508..31175777ed 100644
--- a/localedata/locales/el_CY
+++ b/localedata/locales/el_CY
@@ -44,15 +44,15 @@ copy "el_GR"
END LC_MESSAGES
LC_MONETARY
-int_curr_symbol "<U0043><U0059><U0050><U0020>"
-currency_symbol "<U00A3>"
+int_curr_symbol "<U0045><U0055><U0052><U0020>"
+currency_symbol "<U20AC>"
mon_decimal_point "<U002C>"
mon_thousands_sep "<U002E>"
mon_grouping 3
positive_sign ""
negative_sign "<U002D>"
-int_frac_digits 4
-frac_digits 4
+int_frac_digits 2
+frac_digits 2
p_cs_precedes 0
p_sep_by_space 0
n_cs_precedes 1
diff --git a/localedata/locales/el_GR b/localedata/locales/el_GR
index ce608a801e..bb1db143f3 100644
--- a/localedata/locales/el_GR
+++ b/localedata/locales/el_GR
@@ -70,8 +70,8 @@ mon_thousands_sep "<U002E>"
mon_grouping 3
positive_sign ""
negative_sign "<U002D>"
-int_frac_digits 4
-frac_digits 4
+int_frac_digits 2
+frac_digits 2
p_cs_precedes 0
p_sep_by_space 0
n_cs_precedes 1
diff --git a/localedata/locales/en_DK b/localedata/locales/en_DK
index aa58763578..3ec5170558 100644
--- a/localedata/locales/en_DK
+++ b/localedata/locales/en_DK
@@ -85,34 +85,34 @@ END LC_NUMERIC
LC_TIME
abday "<U0053><U0075><U006E>";"<U004D><U006F><U006E>";/
- "<U0054><U0075><U0065>";"<U0057><U0065><U0064>";/
- "<U0054><U0068><U0075>";"<U0046><U0072><U0069>";/
- "<U0053><U0061><U0074>"
+ "<U0054><U0075><U0065>";"<U0057><U0065><U0064>";/
+ "<U0054><U0068><U0075>";"<U0046><U0072><U0069>";/
+ "<U0053><U0061><U0074>"
day "<U0053><U0075><U006E><U0064><U0061><U0079>";/
- "<U004D><U006F><U006E><U0064><U0061><U0079>";/
- "<U0054><U0075><U0065><U0073><U0064><U0061><U0079>";/
- "<U0057><U0065><U0064><U006E><U0065><U0073><U0064><U0061><U0079>";/
- "<U0054><U0068><U0075><U0072><U0073><U0064><U0061><U0079>";/
- "<U0046><U0072><U0069><U0064><U0061><U0079>";/
- "<U0053><U0061><U0074><U0075><U0072><U0064><U0061><U0079>"
+ "<U004D><U006F><U006E><U0064><U0061><U0079>";/
+ "<U0054><U0075><U0065><U0073><U0064><U0061><U0079>";/
+ "<U0057><U0065><U0064><U006E><U0065><U0073><U0064><U0061><U0079>";/
+ "<U0054><U0068><U0075><U0072><U0073><U0064><U0061><U0079>";/
+ "<U0046><U0072><U0069><U0064><U0061><U0079>";/
+ "<U0053><U0061><U0074><U0075><U0072><U0064><U0061><U0079>"
abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
- "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
- "<U004D><U0061><U0079>";"<U004A><U0075><U006E>";/
- "<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/
- "<U0053><U0065><U0070>";"<U004F><U0063><U0074>";/
- "<U004E><U006F><U0076>";"<U0044><U0065><U0063>"
+ "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
+ "<U004D><U0061><U0079>";"<U004A><U0075><U006E>";/
+ "<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/
+ "<U0053><U0065><U0070>";"<U004F><U0063><U0074>";/
+ "<U004E><U006F><U0076>";"<U0044><U0065><U0063>"
mon "<U004A><U0061><U006E><U0075><U0061><U0072><U0079>";/
- "<U0046><U0065><U0062><U0072><U0075><U0061><U0072><U0079>";/
- "<U004D><U0061><U0072><U0063><U0068>";/
- "<U0041><U0070><U0072><U0069><U006C>";/
- "<U004D><U0061><U0079>";/
- "<U004A><U0075><U006E><U0065>";/
- "<U004A><U0075><U006C><U0079>";/
- "<U0041><U0075><U0067><U0075><U0073><U0074>";/
- "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
- "<U004F><U0063><U0074><U006F><U0062><U0065><U0072>";/
- "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
- "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
+ "<U0046><U0065><U0062><U0072><U0075><U0061><U0072><U0079>";/
+ "<U004D><U0061><U0072><U0063><U0068>";/
+ "<U0041><U0070><U0072><U0069><U006C>";/
+ "<U004D><U0061><U0079>";/
+ "<U004A><U0075><U006E><U0065>";/
+ "<U004A><U0075><U006C><U0079>";/
+ "<U0041><U0075><U0067><U0075><U0073><U0074>";/
+ "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
+ "<U004F><U0063><U0074><U006F><U0062><U0065><U0072>";/
+ "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
+ "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
% date formats following ISO 8601-1988
d_t_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064><U0054><U0025><U0054><U0020><U0025><U005A>"
d_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064>"
@@ -122,6 +122,9 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_MESSAGES
diff --git a/localedata/locales/en_GB b/localedata/locales/en_GB
index fe58f1f6d0..6a81d6d659 100644
--- a/localedata/locales/en_GB
+++ b/localedata/locales/en_GB
@@ -121,7 +121,7 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
+week 7;19971130;4
first_weekday 2
first_workday 2
END LC_TIME
diff --git a/localedata/locales/en_PH b/localedata/locales/en_PH
index 13da351db0..895e7c890a 100644
--- a/localedata/locales/en_PH
+++ b/localedata/locales/en_PH
@@ -166,11 +166,7 @@ END LC_MESSAGES
LC_PAPER
-% This is the ISO_IEC TR14652 Locale definition for the LC_PAPER category
-% generated by IBM Basic CountryPack Transformer.
-height 297
-width 210
-
+copy "tl_PH"
END LC_PAPER
diff --git a/localedata/locales/en_US b/localedata/locales/en_US
index 38425e815e..a41f5bc310 100644
--- a/localedata/locales/en_US
+++ b/localedata/locales/en_US
@@ -132,6 +132,8 @@ END LC_TIME
LC_MESSAGES
yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
+yesstr "<U0059><U0065><U0073>"
+nostr "<U004E><U006F>"
END LC_MESSAGES
LC_PAPER
diff --git a/localedata/locales/es_CL b/localedata/locales/es_CL
index 2f44845862..ff44fa8c5f 100644
--- a/localedata/locales/es_CL
+++ b/localedata/locales/es_CL
@@ -125,10 +125,8 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
END LC_TIME
LC_PAPER
-% FIXME
-height 297
-% FIXME
-width 210
+height 279
+width 216
END LC_PAPER
LC_TELEPHONE
diff --git a/localedata/locales/es_CO b/localedata/locales/es_CO
index 630ee75d4b..4c1de136be 100644
--- a/localedata/locales/es_CO
+++ b/localedata/locales/es_CO
@@ -117,18 +117,19 @@ mon "<U0065><U006E><U0065><U0072><U006F>";/
d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
t_fmt "<U0025><U0054>"
-am_pm "";""
-t_fmt_ampm ""
+am_pm "<U0041><U004D>";"<U0050><U004D>"
+t_fmt_ampm "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053>/
+<U0020><U0025><U0070>"
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
+% FIXME: found in CLDR
+first_weekday 2
END LC_TIME
LC_PAPER
-% FIXME
-height 297
-% FIXME
-width 210
+height 279
+width 216
END LC_PAPER
LC_TELEPHONE
diff --git a/localedata/locales/es_MX b/localedata/locales/es_MX
index 0149865018..91dac23d8a 100644
--- a/localedata/locales/es_MX
+++ b/localedata/locales/es_MX
@@ -125,10 +125,8 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
END LC_TIME
LC_PAPER
-% FIXME
-height 297
-% FIXME
-width 210
+height 279
+width 216
END LC_PAPER
LC_TELEPHONE
diff --git a/localedata/locales/es_US b/localedata/locales/es_US
index 031483965c..71e8ac803c 100644
--- a/localedata/locales/es_US
+++ b/localedata/locales/es_US
@@ -177,8 +177,7 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
END LC_TIME
LC_PAPER
-height 279
-width 216
+copy "en_US"
END LC_PAPER
LC_TELEPHONE
diff --git a/localedata/locales/es_VE b/localedata/locales/es_VE
index c9e916a286..ca6637a6df 100644
--- a/localedata/locales/es_VE
+++ b/localedata/locales/es_VE
@@ -126,10 +126,8 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
END LC_TIME
LC_PAPER
-% FIXME
-height 297
-% FIXME
-width 210
+height 279
+width 216
END LC_PAPER
LC_TELEPHONE
diff --git a/localedata/locales/et_EE b/localedata/locales/et_EE
index e4bfcd5570..efec335e05 100644
--- a/localedata/locales/et_EE
+++ b/localedata/locales/et_EE
@@ -2196,7 +2196,7 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
+week 7;19971130;4
first_weekday 1
first_workday 1
END LC_TIME
diff --git a/localedata/locales/fil_PH b/localedata/locales/fil_PH
index 799a43c3de..ad3ea8eab2 100644
--- a/localedata/locales/fil_PH
+++ b/localedata/locales/fil_PH
@@ -150,8 +150,7 @@ noexpr "<U005B><U0068><U0048><U006E><U004E><U005D><U002E><U002A>"
END LC_MESSAGES
LC_PAPER
-height 297
-width 210
+copy "tl_PH"
END LC_PAPER
LC_MEASUREMENT
diff --git a/localedata/locales/fr_FR b/localedata/locales/fr_FR
index ffa6513e6a..dd54bcf973 100644
--- a/localedata/locales/fr_FR
+++ b/localedata/locales/fr_FR
@@ -141,9 +141,9 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/fur_IT b/localedata/locales/fur_IT
index 35da38ca9d..4dab671792 100644
--- a/localedata/locales/fur_IT
+++ b/localedata/locales/fur_IT
@@ -110,9 +110,9 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/fy_DE b/localedata/locales/fy_DE
index dc4757f63d..588f3e268e 100644
--- a/localedata/locales/fy_DE
+++ b/localedata/locales/fy_DE
@@ -127,7 +127,7 @@ d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
diff --git a/localedata/locales/gu_IN b/localedata/locales/gu_IN
index 6e60a2367e..0d7ffc98a8 100644
--- a/localedata/locales/gu_IN
+++ b/localedata/locales/gu_IN
@@ -35,6 +35,23 @@ END LC_IDENTIFICATION
LC_CTYPE
copy "i18n"
+% Gujarati uses the alternate digits U+0AE6..U+0AEF
+outdigit <U0AE6>..<U0AEF>
+
+% This is used in the scanf family of functions to read Gujarati numbers
+% using "%Id" and such.
+map to_inpunct; /
+ (<U0030>,<U0AE6>); /
+ (<U0031>,<U0AE7>); /
+ (<U0032>,<U0AE8>); /
+ (<U0033>,<U0AE9>); /
+ (<U0034>,<U0AEA>); /
+ (<U0035>,<U0AEB>); /
+ (<U0036>,<U0AEC>); /
+ (<U0037>,<U0AED>); /
+ (<U0038>,<U0AEE>); /
+ (<U0039>,<U0AEF>);
+
translit_start
include "translit_combining";""
translit_end
diff --git a/localedata/locales/hi_IN b/localedata/locales/hi_IN
index 44644bc323..5ce3e03520 100644
--- a/localedata/locales/hi_IN
+++ b/localedata/locales/hi_IN
@@ -34,6 +34,23 @@ END LC_IDENTIFICATION
LC_CTYPE
copy "i18n"
+% Devanagari uses the alternate digits U+0966..U+096F
+outdigit <U0966>..<U096F>
+
+% This is used in the scanf family of functions to read devanagari numbers
+% using "%Id" and such.
+map to_inpunct; /
+ (<U0030>,<U0966>); /
+ (<U0031>,<U0967>); /
+ (<U0032>,<U0968>); /
+ (<U0033>,<U0969>); /
+ (<U0034>,<U096A>); /
+ (<U0035>,<U096B>); /
+ (<U0036>,<U096C>); /
+ (<U0037>,<U096D>); /
+ (<U0038>,<U096E>); /
+ (<U0039>,<U096F>);
+
translit_start
include "translit_combining";""
translit_end
diff --git a/localedata/locales/hne_IN b/localedata/locales/hne_IN
new file mode 100644
index 0000000000..b32398aec4
--- /dev/null
+++ b/localedata/locales/hne_IN
@@ -0,0 +1,180 @@
+comment_char %
+escape_char /
+% Chhattisgarhi language locale for India.
+% Contributed by Pravin Satpute <psatpute@redhat.com> and
+% Ravishankar Shrivastava <raviratlami@gmail.com>.
+
+LC_IDENTIFICATION
+title "Chhattisgarhi language locale for India"
+source "Red Hat, Pune"
+address "Marisfot III, Marigold Premises, East-Wing, Kalyaninagar, Pune, India-411014"
+contact ""
+email "bug-glibc-locales@gnu.org"
+tel ""
+fax ""
+language "Chhattisgarhi"
+territory "India"
+revision "1.0"
+date "2008-12-03"
+%
+category "hne_IN:2008";LC_IDENTIFICATION
+category "hne_IN:2008";LC_CTYPE
+category "hne_IN:2008";LC_COLLATE
+category "hne_IN:2008";LC_TIME
+category "hne_IN:2008";LC_NUMERIC
+category "hne_IN:2008";LC_MONETARY
+category "hne_IN:2008";LC_MESSAGES
+category "hne_IN:2008";LC_PAPER
+category "hne_IN:2008";LC_NAME
+category "hne_IN:2008";LC_ADDRESS
+category "hne_IN:2008";LC_TELEPHONE
+
+END LC_IDENTIFICATION
+
+LC_CTYPE
+copy "hi_IN"
+END LC_CTYPE
+
+LC_COLLATE
+copy "hi_IN"
+END LC_COLLATE
+
+LC_MONETARY
+copy "hi_IN"
+END LC_MONETARY
+
+
+LC_NUMERIC
+copy "hi_IN"
+END LC_NUMERIC
+
+
+LC_TIME
+% This is the POSIX Locale definition for the LC_TIME category.
+% These are generated based on XML base Locale difintion file
+% for IBM Class for Unicode/Java
+%
+% Abbreviated weekday names (%a)
+abday "<U0907><U0924><U0020>";/
+ "<U0938><U094B><U092E><U0020>";/
+ "<U092E><U0902><U0917><U0020>";/
+ "<U092C><U0941><U0927><U0020>";/
+ "<U092C><U093F><U0930><U0020>";/
+ "<U0938><U0941><U0915>";/
+ "<U0938><U0928><U093F>"
+%
+% Full weekday names (%A)
+day "<U0907><U0924><U0935><U093E><U0930><U0020>";/
+ "<U0938><U094B><U092E><U0935><U093E><U0930><U0020>";/
+ "<U092E><U0902><U0917><U0932><U0935><U093E><U0930><U0020>";/
+ "<U092C><U0941><U0927><U0935><U093E><U0930><U0020>";/
+ "<U092C><U093F><U0930><U0938><U092A><U0924><U0020>";/
+ "<U0938><U0941><U0915><U0930><U0935><U093E><U0930><U0020>";/
+ "<U0938><U0928><U093F><U0935><U093E><U0930><U0020>"
+%
+% Abbreviated month names (%b)
+abmon "<U091C><U0928>";/
+ "<U092B><U0930>";/
+ "<U092E><U093E><U0930><U094D><U091A>";/
+ "<U0905><U092A>";/
+ "<U092E><U0908>";"<U091C><U0942><U0928>";/
+ "<U091C><U0941><U0932><U093E>";/
+ "<U0905><U0917>";/
+ "<U0938><U093F><U0924>";/
+ "<U0905><U0915><U091F><U0942>";/
+ "<U0928><U0935>";/
+ "<U0926><U093F><U0938>"
+%
+% Full month names (%B)
+mon "<U091C><U0928><U0935><U0930><U0940>";/
+ "<U092B><U0930><U0935><U0930><U0940>";/
+ "<U092E><U093E><U0930><U094D><U091A>";/
+ "<U0905><U092A><U0930><U0947><U0932>";/
+ "<U092E><U0908>";"<U091C><U0942><U0928>";/
+ "<U091C><U0941><U0932><U093E><U0908>";/
+ "<U0905><U0917><U0938><U094D><U0924>";/
+ "<U0938><U093F><U0924><U092E><U092C><U0930>";/
+ "<U0905><U0915><U091F><U0942><U092C><U0930>";/
+ "<U0928><U0935><U092E><U092C><U0930>";/
+ "<U0926><U093F><U0938><U092E><U092C><U0930>"
+%
+% Equivalent of AM PM
+am_pm "<U092C><U093F><U0939><U093F><U0928><U093F><U092F><U093E><U0901>";/
+ "<U092E><U0902><U091D><U0928><U093F><U092F><U093E><U0901>"
+%
+% Appropriate date and time representation
+% %A %d %b %Y%I:%M:%S %Z
+d_t_fmt "<U0025><U0041><U0020><U0025><U0064><U0020><U0025><U0062>/
+<U0020><U0025><U0059><U0020><U0025><U0049><U003A><U0025><U004D><U003A>/
+<U0025><U0053><U0020><U0025><U0070><U0020><U0025><U005A>"
+%
+% Appropriate date representation
+% %A %d %b %Y
+d_fmt "<U0025><U0041><U0020><U0025><U0064><U0020><U0025><U0062>/
+<U0020><U0025><U0059>"
+%
+% Appropriate time representation
+% %I:%M:%S %Z
+t_fmt "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053>/
+<U0020><U0020><U0025><U005A>"
+%
+% Appropriate 12 h time representation (%r)
+t_fmt_ampm "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053>/
+<U0020><U0025><U0070><U0020><U0025><U005A>"
+%
+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
+<U0025><U005A><U0020><U0025><U0059>"
+END LC_TIME
+
+
+LC_MESSAGES
+yesexpr "<U005E><U005B><U0939><U0935><U0079><U0059><U005D>"
+noexpr "<U005E><U005B><U0928><U0907><U006E><U004E><U005D>"
+yesstr "<U0939><U0935>"
+nostr "<U0928><U0907>"
+END LC_MESSAGES
+
+
+LC_PAPER
+copy "hi_IN"
+END LC_PAPER
+
+
+LC_NAME
+% This is the ISO_IEC TR14652 Locale definition for the
+% LC_NAME category.
+%
+name_fmt "<U0025><U0070><U0025><U0074><U0025><U0066><U0025><U0074>/
+<U0025><U0067>"
+name_gen ""
+name_mr "<U0938><U093F><U0930><U0940><U092E><U093E><U0928>"
+name_mrs "<U0938><U093F><U0930><U0940><U092E><U0924><U0940>"
+name_miss "<U0915><U0941><U0902><U0935><U093E><U0930><U0940>"
+name_ms "<U0915><U0941><U0902>"
+
+END LC_NAME
+
+
+LC_ADDRESS
+% This is the ISO_IEC TR14652 Locale definition for the
+% LC_ADDRESS
+postal_fmt "<U0025><U007A><U0025><U0063><U0025><U0054><U0025><U0073>/
+<U0025><U0062><U0025><U0065><U0025><U0072>"
+
+country_ab2 "<U0049><U004E>"
+country_ab3 "<U0049><U004E><U0044>"
+country_num 356
+lang_term "<U0068><U006E><U0065>"
+
+END LC_ADDRESS
+
+
+LC_TELEPHONE
+copy "hi_IN"
+END LC_TELEPHONE
+
+
+LC_MEASUREMENT
+copy "hi_IN"
+END LC_MEASUREMENT
diff --git a/localedata/locales/hsb_DE b/localedata/locales/hsb_DE
index 50355af35a..0929897c8a 100644
--- a/localedata/locales/hsb_DE
+++ b/localedata/locales/hsb_DE
@@ -197,7 +197,7 @@ collating-symbol <SPECIAL>
% letter;accent;case;specials
order_start forward;backward/
- ;forward;position
+ ;forward;position
% <CAPITAL> or <SMALL> letters first:
@@ -2136,16 +2136,16 @@ END LC_NUMERIC
LC_TIME
abday "<U004E><U006A>";"<U0050><U00F3>";/
- "<U0057><U0075>";"<U0053><U0072>";/
- "<U0160><U0074>";"<U0050><U006A>";/
- "<U0053><U006F>"
+ "<U0057><U0075>";"<U0053><U0072>";/
+ "<U0160><U0074>";"<U0050><U006A>";/
+ "<U0053><U006F>"
day "<U004E><U006A><U0065><U0064><U017A><U0065><U006C><U0061>";/
- "<U0050><U00F3><U006E><U0064><U017A><U0065><U006C><U0061>";/
- "<U0057><U0075><U0074><U006F><U0072><U0061>";/
- "<U0053><U0072><U006A><U0065><U0064><U0061>";/
- "<U0160><U0074><U0076><U00F3><U0072><U0074><U006B>";/
- "<U0050><U006A><U0061><U0074><U006B>";/
- "<U0053><U006F><U0062><U006F><U0074><U0061>"
+ "<U0050><U00F3><U006E><U0064><U017A><U0065><U006C><U0061>";/
+ "<U0057><U0075><U0074><U006F><U0072><U0061>";/
+ "<U0053><U0072><U006A><U0065><U0064><U0061>";/
+ "<U0160><U0074><U0076><U00F3><U0072><U0074><U006B>";/
+ "<U0050><U006A><U0061><U0074><U006B>";/
+ "<U0053><U006F><U0062><U006F><U0074><U0061>"
abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
"<U004D><U011B><U0072>";"<U0041><U0070><U0072>";/
"<U004D><U0065><U006A>";"<U004A><U0075><U006E>";/
@@ -2172,6 +2172,10 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
+
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/ht_HT b/localedata/locales/ht_HT
index 37ba0a56b7..8ec865d1ce 100644
--- a/localedata/locales/ht_HT
+++ b/localedata/locales/ht_HT
@@ -139,9 +139,9 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0045>/
<U0020><U0025><U0068><U003A><U0025><U006D><U003A><U0025><U0073><U0020>/
<U0025><U005A><U0020><U0025><U0079>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/hu_HU b/localedata/locales/hu_HU
index 6948df4bf5..8fce6e40a7 100644
--- a/localedata/locales/hu_HU
+++ b/localedata/locales/hu_HU
@@ -520,9 +520,9 @@ am_pm "";""
t_fmt_ampm "<U0025><U0048><U002E><U0025><U004D><U002E><U0025><U0053>"
date_fmt "<U0025><U0059><U002E><U0020><U0025><U0062><U002E><U0020><U0025><U0065><U002E><U002C>/
<U0020><U0025><U0041><U002C><U0020><U0025><U0048><U002E><U0025><U004D><U002E><U0025><U0053><U0020><U0025><U005A>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/i18n b/localedata/locales/i18n
index 7287424417..8afbb717fa 100644
--- a/localedata/locales/i18n
+++ b/localedata/locales/i18n
@@ -231,41 +231,55 @@ alpha /
<U0780>..<U07A5>;<U07B1>;/
% NKO/
<U07C0>..<U07EA>;<U07F4>..<U07F5>;<U07FA>;/
+% - All Matras of Indic and Sinhala are moved from punct to alpha class/
+% - Added Unicode 5.1 charctares of Indic scripts/
% DEVANAGARI/
- <U0904>..<U0939>;<U093D>;<U0950>;<U0958>..<U0961>;/
- <U097B>..<U097F>;/
+ <U0901>..<U0939>;<U093C>..<U094D>;/
+ <U0950>..<U0954>;<U0958>..<U0961>;/
+ <U0962>;<U0963>;<U0972>;<U097B>..<U097F>;/
% TABLE 18 BENGALI/
- <U0985>..<U098C>;<U098F>;<U0990>;<U0993>..<U09A8>;<U09AA>..<U09B0>;/
- <U09B2>;<U09B6>..<U09B9>;<U09BD>;<U09CE>;<U09DC>;<U09DD>;<U09DF>..<U09E1>;/
- <U09F0>..<U09F1>;/
+ <U0981>..<U0983>;<U0985>..<U098C>;<U098F>;<U0990>;<U0993>..<U09A8>;/
+ <U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;<U09BC>..<U09C4>;/
+ <U09C7>;<U09C8>;<U09CB>..<U09CE>;<U09D7>;/
+ <U09DC>;<U09DD>;<U09DF>..<U09E3>;<U09F0>..<U09FA>;/
% GURMUKHI/
- <U0A05>..<U0A0A>;<U0A0F>;<U0A10>;<U0A13>..<U0A28>;<U0A2A>..<U0A30>;/
- <U0A32>;<U0A33>;<U0A35>;<U0A36>;<U0A38>;<U0A39>;<U0A59>..<U0A5C>;/
- <U0A5E>;<U0A72>..<U0A74>;/
+ <U0A01>..<U0A03>;<U0A05>..<U0A0A>;<U0A0F>;<U0A10>;<U0A13>..<U0A28>;/
+ <U0A2A>..<U0A30>;<U0A32>;<U0A33>;<U0A35>;<U0A36>;<U0A38>;<U0A39>;/
+ <U0A3C>;<U0A3E>..<U0A42>;<U0A47>;<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;/
+ <U0A59>..<U0A5C>;<U0A5E>;<U0A70>..<U0A75>;/
% GUJARATI/
+ <U0A81>..<U0A83>;/
<U0A85>..<U0A8D>;<U0A8F>..<U0A91>;<U0A93>..<U0AA8>;/
- <U0AAA>..<U0AB0>;<U0AB2>;<U0AB3>;<U0AB5>..<U0AB9>;<U0ABD>;<U0AD0>;/
- <U0AE0>;<U0AE1>;/
+ <U0AAA>..<U0AB0>;<U0AB2>;<U0AB3>;<U0AB5>..<U0AB9>;<U0ABC>..<U0AC5>;/
+ <U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/
+ <U0AD0>;<U0AE0>..<U0AE3>;<U0AF1>;/
% ORIYA/
- <U0B05>..<U0B0C>;<U0B0F>;<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/
- <U0B32>;<U0B33>;<U0B35>..<U0B39>;<U0B3D>;<U0B5C>;<U0B5D>;/
- <U0B5F>..<U0B63>;<U0B71>;/
+ <U0B01>..<U0B03>;<U0B05>..<U0B0C>;<U0B0F>;<U0B10>;<U0B13>..<U0B28>;/
+ <U0B2A>..<U0B30>;<U0B32>;<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B44>;/
+ <U0B47>..<U0B48>;<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>;<U0B5D>;/
+ <U0B5F>..<U0B63>;<U0B70>;<U0B71>;/
% TAMIL/
- <U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;<U0B92>..<U0B95>;<U0B99>;/
+ <U0B82>;<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;<U0B92>..<U0B95>;<U0B99>;/
<U0B9A>;<U0B9C>;<U0B9E>;<U0B9F>;<U0BA3>;<U0BA4>;<U0BA8>..<U0BAA>;/
- <U0BAE>..<U0BB9>;/
+ <U0BAE>..<U0BB9>;<U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;/
+ <U0BD0>;<U0BD7>;<U0BF0>..<U0BFA>;/
% TELUGU/
- <U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;<U0C2A>..<U0C33>;/
- <U0C35>..<U0C39>;<U0C3D>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/
+ <U0C01>..<U0C03>;<U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;/
+ <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3D>..<U0C44>;<U0C46>..<U0C48>;/
+ <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/
% KANNADA/
- <U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;<U0CAA>..<U0CB3>;/
- <U0CB5>..<U0CB9>;<U0CDE>;<U0CE0>..<U0CE1>;/
+ <U0C82>..<U0C83>;<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;/
+ <U0CAA>..<U0CB3>;<U0CB5>..<U0CB9>;<U0CBC>..<U0CC4>;<U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;/
+ <U0CD5>..<U0CD6>;<U0CDE>;<U0CE0>..<U0CE3>;<U0CF1>;<U0CF2>;/
% MALAYALAM/
- <U0D05>..<U0D0C>;<U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;/
- <U0D3D>;<U0D60>..<U0D63>;/
+ <U0D02>..<U0D03>;<U0D05>..<U0D0C>;<U0D0E>..<U0D10>;<U0D12>..<U0D28>;/
+ <U0D2A>..<U0D39>;<U0D3D>..<U0D44>;/
+ <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;/
+ <U0D60>..<U0D63>;<U0D79>..<U0D7F>;/
% SINHALA/
- <U0D85>..<U0D96>;<U0D9A>..<U0DB1>;<U0DB3>..<U0DBB>;<U0DBD>;/
- <U0DC0>..<U0DC6>;/
+ <U0D82>..<U0D83>;<U0D85>..<U0D96>;<U0D9A>..<U0DB1>;<U0DB3>..<U0DBB>;<U0DBD>;/
+ <U0DC0>..<U0DC6>;<U0DCA>;/
+ <U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;/
% THAI/
<U0E01>..<U0E2E>;<U0E30>..<U0E3A>;<U0E40>..<U0E45>;<U0E47>..<U0E4E>;/
% LAO/
@@ -496,7 +510,7 @@ alpha /
% KANNADA/
<U0CE6>..<U0CEF>;/
% MALAYALAM/
- <U0D66>..<U0D75>;<U0D79>..<U0D7F>;/
+ <U0D66>..<U0D75>;<U0D70>..<U0D75>;/
% THAI/
<U0E50>..<U0E59>;/
% LAO/
@@ -566,22 +580,8 @@ punct /
<U064B>..<U065E>;<U066A>..<U066D>;<U0670>;<U06D4>;<U06D6>..<U06E4>;/
<U06E7>..<U06ED>;<U06FD>..<U06FE>;<U0700>..<U070D>;<U070F>;<U0711>;/
<U0730>..<U074A>;<U07A6>..<U07B0>;<U07EB>..<U07F3>;<U07F6>..<U07F9>;/
- <U0901>..<U0903>;<U093C>;<U093E>..<U094D>;<U0951>..<U0954>;/
- <U0962>..<U0965>;<U0972>;<U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;/
- <U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;<U09E2>..<U09E3>;/
- <U09F2>..<U09FA>;<U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;/
- <U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;<U0A70>..<U0A71>;/
- <U0A75>;<U0A81>..<U0A83>;/
- <U0ABC>;<U0ABE>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/
- <U0AE2>..<U0AE3>;<U0AF1>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B44>;/
- <U0B47>..<U0B48>;<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B70>;<U0B82>;/
- <U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;/
- <U0BF0>..<U0BFA>;<U0C01>..<U0C03>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/
- <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C82>..<U0C83>;<U0CBC>;/
- <U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;/
- <U0CE2>..<U0CE3>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D3E>..<U0D44>;/
- <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D82>..<U0D83>;<U0DCA>;/
- <U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E2F>;/
+ <U0964>;<U0965>;/
+ <U0E2F>;/
<U0E3F>;<U0E46>;<U0E4F>;<U0E5A>..<U0E5B>;<U0EB1>;<U0EB4>..<U0EB9>;/
<U0EBB>..<U0EBC>;<U0EC8>..<U0ECD>;<U0F01>..<U0F1F>;<U0F2A>..<U0F3F>;/
<U0F71>..<U0F87>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;/
diff --git a/localedata/locales/ik_CA b/localedata/locales/ik_CA
index fdcb8afe16..1b967423ed 100644
--- a/localedata/locales/ik_CA
+++ b/localedata/locales/ik_CA
@@ -207,10 +207,8 @@ yesexpr "<U005B><U0079><U0059><U0069><U0049><U0061><U0041><U005D><U002E><U00
noexpr "<U005B><U006E><U004E><U0071><U0051><U005D><U002E><U002A>"
END LC_MESSAGES
-% Default paper: A4
LC_PAPER
-height 297
-width 210
+copy "en_CA"
END LC_PAPER
% Metric System (ISO 1000)
diff --git a/localedata/locales/iso14651_t1_common b/localedata/locales/iso14651_t1_common
index 795ce323a9..edbe9e0f32 100644
--- a/localedata/locales/iso14651_t1_common
+++ b/localedata/locales/iso14651_t1_common
@@ -66,6 +66,9 @@ script <TELUGU>
script <GURUMUKHI>
script <KANNADA>
script <SINHALA>
+script <MALAYALAM>
+script <BENGALI>
+script <MYANMAR>
# Déclaration des symboles internes / Declaration of internal symbols
#
@@ -910,6 +913,1815 @@ collating-symbol <kvd-visarg>
collating-symbol <k-halant>
collating-symbol <k-lenght_mark>
collating-symbol <k-ai_lenght_mark>
+#
+# <MALAYALAM>
+# mlvs- denotes Malayalam vowel sign
+# mlvw- denotes Malayalam vowel
+# ml-visarga - dentos Malayalam Visarga
+# consonant + virama is considered half of consonant or consonant without vowel part
+# so it consonant + virama should be considered as cluster and should be
+# sorted before the consonant. All consonants are considered to have an implicit a vowel
+# part associated with it.
+collating-element <ml-chillu-n> from "<U0D28><U0D4D>"
+collating-element <ml-chillu-nn> from "<U0D23><U0D4D>"
+collating-element <ml-chillu-r> from "<U0D30><U0D4D>"
+collating-element <ml-chillu-l> from "<U0D32><U0D4D>"
+collating-element <ml-chillu-ll> from "<U0D33><U0D4D>"
+collating-element <ml-chillu-k> from "<U0D15><U0D4D>"
+collating-element <ml-kh> from "<U0D16><U0D4D>"
+collating-element <ml-g> from "<U0D17><U0D4D>"
+collating-element <ml-gh> from "<U0D18><U0D4D>"
+collating-element <ml-ng> from "<U0D19><U0D4D>"
+collating-element <ml-ch> from "<U0D1A><U0D4D>"
+collating-element <ml-chh> from "<U0D1B><U0D4D>"
+collating-element <ml-j> from "<U0D1C><U0D4D>"
+collating-element <ml-jh> from "<U0D1D><U0D4D>"
+collating-element <ml-ny> from "<U0D1E><U0D4D>"
+collating-element <ml-t> from "<U0D1F><U0D4D>"
+collating-element <ml-tt> from "<U0D20><U0D4D>"
+collating-element <ml-d> from "<U0D21><U0D4D>"
+collating-element <ml-dh> from "<U0D22><U0D4D>"
+collating-element <ml-th> from "<U0D24><U0D4D>"
+collating-element <ml-thh> from "<U0D25><U0D4D>"
+collating-element <ml-dd> from "<U0D26><U0D4D>"
+collating-element <ml-ddh> from "<U0D27><U0D4D>"
+collating-element <ml-p> from "<U0D2A><U0D4D>"
+collating-element <ml-ph> from "<U0D2B><U0D4D>"
+collating-element <ml-b> from "<U0D2C><U0D4D>"
+collating-element <ml-bh> from "<U0D2D><U0D4D>"
+collating-element <ml-m> from "<U0D2E><U0D4D>"
+collating-element <ml-y> from "<U0D2F><U0D4D>"
+collating-element <ml-v> from "<U0D35><U0D4D>"
+collating-element <ml-s> from "<U0D38><U0D4D>"
+collating-element <ml-ss> from "<U0D36><U0D4D>"
+collating-element <ml-sh> from "<U0D37><U0D4D>"
+collating-element <ml-h> from "<U0D39><U0D4D>"
+collating-element <ml-zh> from "<U0D34><U0D4D>"
+collating-element <ml-rr> from "<U0D31><U0D4D>"
+collating-element <ml-samvruthokaram> from "<U0D41><U0D4D>"
+collating-element <ml-split-o> from "<U0D46><U0D3E>" # U+0D4A MALAYALAM VOWEL SIGN O = U+0D46 MALAYALAM VOWEL SIGN E + U+0D3E MALAYALAM VOWEL SIGN AA
+collating-element <ml-split-oo> from "<U0D47><U0D3E>" # U+0D4B MALAYALAM VOWEL SIGN OO = U+0D47 MALAYALAM VOWEL SIGN EE + U+0D3E MALAYALAM VOWEL SIGN AA
+collating-element <ml-split-au> from "<U0D46><U0D57>" # U+0D4C MALAYALAM VOWEL SIGN AU = U+0D46 MALAYALAM VOWEL SIGN E + U+0D57 MALAYALAM AU LENGTH MARK
+# defning symbols
+collating-symbol <mlvw-shorta>
+collating-symbol <mlvw-aa>
+collating-symbol <mlvw-i>
+collating-symbol <mlvw-ii>
+collating-symbol <mlvw-u>
+collating-symbol <mlvw-uu>
+collating-symbol <mlvw-vocalicr>
+collating-symbol <mlvw-vocalicrr>
+collating-symbol <mlvw-vocalicl>
+collating-symbol <mlvw-vocalicll>
+collating-symbol <mlvw-shorte>
+collating-symbol <mlvw-e>
+collating-symbol <mlvw-ai>
+collating-symbol <mlvw-shorto>
+collating-symbol <mlvw-o>
+collating-symbol <mlvw-au>
+collating-symbol <ml-ka>
+collating-symbol <ml-kha>
+collating-symbol <ml-ga>
+collating-symbol <ml-gga>
+collating-symbol <ml-gha>
+collating-symbol <ml-nga>
+collating-symbol <ml-cha>
+collating-symbol <ml-chha>
+collating-symbol <ml-ja>
+collating-symbol <ml-jja>
+collating-symbol <ml-jha>
+collating-symbol <ml-nya>
+collating-symbol <ml-ta>
+collating-symbol <ml-tta>
+collating-symbol <ml-da>
+collating-symbol <ml-dha>
+collating-symbol <ml-nna>
+collating-symbol <ml-tha>
+collating-symbol <ml-thha>
+collating-symbol <ml-dda>
+collating-symbol <ml-ddha>
+collating-symbol <ml-na>
+collating-symbol <ml-pa>
+collating-symbol <ml-pha>
+collating-symbol <ml-ba>
+collating-symbol <ml-bba>
+collating-symbol <ml-bha>
+collating-symbol <ml-ma>
+collating-symbol <ml-ya>
+collating-symbol <ml-ra>
+collating-symbol <ml-rra>
+collating-symbol <ml-la>
+collating-symbol <ml-lla>
+collating-symbol <ml-va>
+collating-symbol <ml-sha>
+collating-symbol <ml-ssa>
+collating-symbol <ml-sa>
+collating-symbol <ml-ha>
+collating-symbol <ml-avagrah>
+collating-symbol <ml-zha>
+collating-symbol <mlvs-aa>
+collating-symbol <mlvs-i>
+collating-symbol <mlvs-ii>
+collating-symbol <mlvs-u>
+collating-symbol <mlvs-uu>
+collating-symbol <mlvs-vocalicr>
+collating-symbol <mlvs-vocalicrr>
+collating-symbol <mlvs-vocalicl>
+collating-symbol <mlvs-vocalicll>
+collating-symbol <mlvs-shorte>
+collating-symbol <mlvs-e>
+collating-symbol <mlvs-ai>
+collating-symbol <mlvs-shorto>
+collating-symbol <mlvs-o>
+collating-symbol <mlvs-au>
+collating-symbol <ml-visarga>
+collating-symbol <ml-virama>
+#
+# <BENGALI>
+#
+# bvd- denotes bengali vowel modifier
+# bm- denotes bengali matras
+# bnw- denotes bengali vowels
+#
+# defning symbols
+collating-symbol <U_09F8>
+collating-symbol <U_09F9>
+collating-symbol <U_09FA>
+collating-symbol <bnw-a>
+collating-symbol <bnw-aa>
+collating-symbol <bnw-i>
+collating-symbol <bnw-ii>
+collating-symbol <bnw-u>
+collating-symbol <bnw-uu>
+collating-symbol <bnw-vocalicr>
+collating-symbol <bnw-vocalicrr>
+collating-symbol <bnw-vocalicl>
+collating-symbol <bnw-vocalicll>
+collating-symbol <bnw-e>
+collating-symbol <bnw-ai>
+collating-symbol <bnw-o>
+collating-symbol <bnw-au>
+collating-symbol <bvd-anuswara>
+collating-symbol <bvd-visarg>
+collating-symbol <bvd-chandrabindu>
+collating-symbol <b_ka>
+collating-symbol <b_kha>
+collating-symbol <b_ga>
+collating-symbol <b_gha>
+collating-symbol <b_nga>
+collating-symbol <b_ca>
+collating-symbol <b_cha>
+collating-symbol <b_ja>
+collating-symbol <b_jha>
+collating-symbol <b_nya>
+collating-symbol <b_tta>
+collating-symbol <b_ttha>
+collating-symbol <b_dda>
+collating-symbol <b_ddha>
+collating-symbol <b_nna>
+collating-symbol <b_ta>
+collating-symbol <b_khand_ta>
+collating-symbol <b_tha>
+collating-symbol <b_da>
+collating-symbol <b_dha>
+collating-symbol <b_na>
+collating-symbol <b_pa>
+collating-symbol <b_pha>
+collating-symbol <b_va>
+collating-symbol <b_bha>
+collating-symbol <b_ma>
+collating-symbol <b_ya>
+collating-symbol <b_ra>
+collating-symbol <b_ra_diagonal>
+collating-symbol <b_la>
+collating-symbol <b_ra_lower_diagonal>
+collating-symbol <b_sha>
+collating-symbol <b_ssa>
+collating-symbol <b_sa>
+collating-symbol <b_ha>
+collating-symbol <b_avagrah>
+collating-symbol <bm-aa>
+collating-symbol <bm-i>
+collating-symbol <bm-ii>
+collating-symbol <bm-u>
+collating-symbol <bm-uu>
+collating-symbol <bm-vocalicr>
+collating-symbol <bm-vocalicrr>
+collating-symbol <bm-vocalicl>
+collating-symbol <bm-vocalicll>
+collating-symbol <bm-e>
+collating-symbol <bm-ai>
+collating-symbol <bm-o>
+collating-symbol <bm-au>
+collating-symbol <b_halant>
+collating-symbol <bm_au_lenght>
+
+#
+# <MYANMAR>
+#
+collating-element <MMYRWH105E> from "<U105E>"
+collating-element <MMYRWH105F> from "<U105F>"
+collating-element <MMYRWH103B> from "<U103B>"
+collating-element <MMYRWH103C> from "<U103C>"
+collating-element <MMYRWH1060> from "<U1060>"
+collating-element <MMYRWH103D> from "<U103D>"
+collating-element <MMYRWH1082> from "<U1082>"
+collating-element <MMYRWH103E> from "<U103E>"
+collating-element <MMYRWH103B103D> from "<U103B><U103D>"
+collating-element <MMYRWH103C103D> from "<U103C><U103D>"
+collating-element <MMYRWH103B103E> from "<U103B><U103E>"
+collating-element <MMYRWH103C103E> from "<U103C><U103E>"
+collating-element <MMYRWH103D103E> from "<U103D><U103E>"
+collating-element <MMYRWH103B103D103E> from "<U103B><U103D><U103E>"
+collating-element <MMYRWH103C103D103E> from "<U103C><U103D><U103E>"
+collating-element <MMV102CK1000A> from "<U102C><U1000><U103A>"
+collating-element <MMV102CK1000ADot> from "<U102C><U1000><U1037><U103A>"
+collating-element <MMV102CALT0K1000A> from "<U102B><U1000><U103A>"
+collating-element <MMV102CALT0K1000ADot> from "<U102B><U1000><U1037><U103A>"
+collating-element <MMV102CK1000B> from "<U102C><U1000><U1039>"
+collating-element <MMV102CALT0K1000B> from "<U102B><U1000><U1039>"
+collating-element <MMV102DK1000A> from "<U102D><U1000><U103A>"
+collating-element <MMV102DK1000ADot> from "<U102D><U1000><U1037><U103A>"
+collating-element <MMV102DK1000B> from "<U102D><U1000><U1039>"
+collating-element <MMV102EK1000A> from "<U102E><U1000><U103A>"
+collating-element <MMV102EK1000ADot> from "<U102E><U1000><U1037><U103A>"
+collating-element <MMV102EK1000B> from "<U102E><U1000><U1039>"
+collating-element <MMV102FK1000A> from "<U102F><U1000><U103A>"
+collating-element <MMV102FK1000ADot> from "<U102F><U1000><U1037><U103A>"
+collating-element <MMV102FK1000B> from "<U102F><U1000><U1039>"
+collating-element <MMV1030K1000A> from "<U1030><U1000><U103A>"
+collating-element <MMV1030K1000ADot> from "<U1030><U1000><U1037><U103A>"
+collating-element <MMV1030K1000B> from "<U1030><U1000><U1039>"
+collating-element <MMV1031K1000A> from "<U1031><U1000><U103A>"
+collating-element <MMV1031K1000ADot> from "<U1031><U1000><U1037><U103A>"
+collating-element <MMV1031K1000B> from "<U1031><U1000><U1039>"
+collating-element <MMV1032K1000A> from "<U1032><U1000><U103A>"
+collating-element <MMV1032K1000ADot> from "<U1032><U1000><U1037><U103A>"
+collating-element <MMV1032K1000B> from "<U1032><U1000><U1039>"
+collating-element <MMV1031102CK1000A> from "<U1031><U102C><U1000><U103A>"
+collating-element <MMV1031102CK1000ADot> from "<U1031><U102C><U1000><U1037><U103A>"
+collating-element <MMV1031102CALT0K1000A> from "<U1031><U102B><U1000><U103A>"
+collating-element <MMV1031102CALT0K1000ADot> from "<U1031><U102B><U1000><U1037><U103A>"
+collating-element <MMV1031102CK1000B> from "<U1031><U102C><U1000><U1039>"
+collating-element <MMV1031102CALT0K1000B> from "<U1031><U102B><U1000><U1039>"
+collating-element <MMV1036K1000A> from "<U1036><U1000><U103A>"
+collating-element <MMV1036K1000ADot> from "<U1036><U1000><U1037><U103A>"
+collating-element <MMV1036K1000B> from "<U1036><U1000><U1039>"
+collating-element <MMV102D102FK1000A> from "<U102D><U102F><U1000><U103A>"
+collating-element <MMV102D102FK1000ADot> from "<U102D><U102F><U1000><U1037><U103A>"
+collating-element <MMV102D102FK1000B> from "<U102D><U102F><U1000><U1039>"
+collating-element <MMV102CK1001A> from "<U102C><U1001><U103A>"
+collating-element <MMV102CK1001ADot> from "<U102C><U1001><U1037><U103A>"
+collating-element <MMV102CALT0K1001A> from "<U102B><U1001><U103A>"
+collating-element <MMV102CALT0K1001ADot> from "<U102B><U1001><U1037><U103A>"
+collating-element <MMV102CK1001B> from "<U102C><U1001><U1039>"
+collating-element <MMV102CALT0K1001B> from "<U102B><U1001><U1039>"
+collating-element <MMV102DK1001A> from "<U102D><U1001><U103A>"
+collating-element <MMV102DK1001ADot> from "<U102D><U1001><U1037><U103A>"
+collating-element <MMV102DK1001B> from "<U102D><U1001><U1039>"
+collating-element <MMV102EK1001A> from "<U102E><U1001><U103A>"
+collating-element <MMV102EK1001ADot> from "<U102E><U1001><U1037><U103A>"
+collating-element <MMV102EK1001B> from "<U102E><U1001><U1039>"
+collating-element <MMV102FK1001A> from "<U102F><U1001><U103A>"
+collating-element <MMV102FK1001ADot> from "<U102F><U1001><U1037><U103A>"
+collating-element <MMV102FK1001B> from "<U102F><U1001><U1039>"
+collating-element <MMV1030K1001A> from "<U1030><U1001><U103A>"
+collating-element <MMV1030K1001ADot> from "<U1030><U1001><U1037><U103A>"
+collating-element <MMV1030K1001B> from "<U1030><U1001><U1039>"
+collating-element <MMV1031K1001A> from "<U1031><U1001><U103A>"
+collating-element <MMV1031K1001ADot> from "<U1031><U1001><U1037><U103A>"
+collating-element <MMV1031K1001B> from "<U1031><U1001><U1039>"
+collating-element <MMV1032K1001A> from "<U1032><U1001><U103A>"
+collating-element <MMV1032K1001ADot> from "<U1032><U1001><U1037><U103A>"
+collating-element <MMV1032K1001B> from "<U1032><U1001><U1039>"
+collating-element <MMV1031102CK1001A> from "<U1031><U102C><U1001><U103A>"
+collating-element <MMV1031102CK1001ADot> from "<U1031><U102C><U1001><U1037><U103A>"
+collating-element <MMV1031102CALT0K1001A> from "<U1031><U102B><U1001><U103A>"
+collating-element <MMV1031102CALT0K1001ADot> from "<U1031><U102B><U1001><U1037><U103A>"
+collating-element <MMV1031102CK1001B> from "<U1031><U102C><U1001><U1039>"
+collating-element <MMV1031102CALT0K1001B> from "<U1031><U102B><U1001><U1039>"
+collating-element <MMV1036K1001A> from "<U1036><U1001><U103A>"
+collating-element <MMV1036K1001ADot> from "<U1036><U1001><U1037><U103A>"
+collating-element <MMV1036K1001B> from "<U1036><U1001><U1039>"
+collating-element <MMV102D102FK1001A> from "<U102D><U102F><U1001><U103A>"
+collating-element <MMV102D102FK1001ADot> from "<U102D><U102F><U1001><U1037><U103A>"
+collating-element <MMV102D102FK1001B> from "<U102D><U102F><U1001><U1039>"
+collating-element <MMV102CK1002A> from "<U102C><U1002><U103A>"
+collating-element <MMV102CK1002ADot> from "<U102C><U1002><U1037><U103A>"
+collating-element <MMV102CALT0K1002A> from "<U102B><U1002><U103A>"
+collating-element <MMV102CALT0K1002ADot> from "<U102B><U1002><U1037><U103A>"
+collating-element <MMV102CK1002B> from "<U102C><U1002><U1039>"
+collating-element <MMV102CALT0K1002B> from "<U102B><U1002><U1039>"
+collating-element <MMV102DK1002A> from "<U102D><U1002><U103A>"
+collating-element <MMV102DK1002ADot> from "<U102D><U1002><U1037><U103A>"
+collating-element <MMV102DK1002B> from "<U102D><U1002><U1039>"
+collating-element <MMV102EK1002A> from "<U102E><U1002><U103A>"
+collating-element <MMV102EK1002ADot> from "<U102E><U1002><U1037><U103A>"
+collating-element <MMV102EK1002B> from "<U102E><U1002><U1039>"
+collating-element <MMV102FK1002A> from "<U102F><U1002><U103A>"
+collating-element <MMV102FK1002ADot> from "<U102F><U1002><U1037><U103A>"
+collating-element <MMV102FK1002B> from "<U102F><U1002><U1039>"
+collating-element <MMV1030K1002A> from "<U1030><U1002><U103A>"
+collating-element <MMV1030K1002ADot> from "<U1030><U1002><U1037><U103A>"
+collating-element <MMV1030K1002B> from "<U1030><U1002><U1039>"
+collating-element <MMV1031K1002A> from "<U1031><U1002><U103A>"
+collating-element <MMV1031K1002ADot> from "<U1031><U1002><U1037><U103A>"
+collating-element <MMV1031K1002B> from "<U1031><U1002><U1039>"
+collating-element <MMV1032K1002A> from "<U1032><U1002><U103A>"
+collating-element <MMV1032K1002ADot> from "<U1032><U1002><U1037><U103A>"
+collating-element <MMV1032K1002B> from "<U1032><U1002><U1039>"
+collating-element <MMV1031102CK1002A> from "<U1031><U102C><U1002><U103A>"
+collating-element <MMV1031102CK1002ADot> from "<U1031><U102C><U1002><U1037><U103A>"
+collating-element <MMV1031102CALT0K1002A> from "<U1031><U102B><U1002><U103A>"
+collating-element <MMV1031102CALT0K1002ADot> from "<U1031><U102B><U1002><U1037><U103A>"
+collating-element <MMV1031102CK1002B> from "<U1031><U102C><U1002><U1039>"
+collating-element <MMV1031102CALT0K1002B> from "<U1031><U102B><U1002><U1039>"
+collating-element <MMV1036K1002A> from "<U1036><U1002><U103A>"
+collating-element <MMV1036K1002ADot> from "<U1036><U1002><U1037><U103A>"
+collating-element <MMV1036K1002B> from "<U1036><U1002><U1039>"
+collating-element <MMV102D102FK1002A> from "<U102D><U102F><U1002><U103A>"
+collating-element <MMV102D102FK1002ADot> from "<U102D><U102F><U1002><U1037><U103A>"
+collating-element <MMV102D102FK1002B> from "<U102D><U102F><U1002><U1039>"
+collating-element <MMV102CK1003A> from "<U102C><U1003><U103A>"
+collating-element <MMV102CK1003ADot> from "<U102C><U1003><U1037><U103A>"
+collating-element <MMV102CALT0K1003A> from "<U102B><U1003><U103A>"
+collating-element <MMV102CALT0K1003ADot> from "<U102B><U1003><U1037><U103A>"
+collating-element <MMV102CK1003B> from "<U102C><U1003><U1039>"
+collating-element <MMV102CALT0K1003B> from "<U102B><U1003><U1039>"
+collating-element <MMV102DK1003A> from "<U102D><U1003><U103A>"
+collating-element <MMV102DK1003ADot> from "<U102D><U1003><U1037><U103A>"
+collating-element <MMV102DK1003B> from "<U102D><U1003><U1039>"
+collating-element <MMV102EK1003A> from "<U102E><U1003><U103A>"
+collating-element <MMV102EK1003ADot> from "<U102E><U1003><U1037><U103A>"
+collating-element <MMV102EK1003B> from "<U102E><U1003><U1039>"
+collating-element <MMV102FK1003A> from "<U102F><U1003><U103A>"
+collating-element <MMV102FK1003ADot> from "<U102F><U1003><U1037><U103A>"
+collating-element <MMV102FK1003B> from "<U102F><U1003><U1039>"
+collating-element <MMV1030K1003A> from "<U1030><U1003><U103A>"
+collating-element <MMV1030K1003ADot> from "<U1030><U1003><U1037><U103A>"
+collating-element <MMV1030K1003B> from "<U1030><U1003><U1039>"
+collating-element <MMV1031K1003A> from "<U1031><U1003><U103A>"
+collating-element <MMV1031K1003ADot> from "<U1031><U1003><U1037><U103A>"
+collating-element <MMV1031K1003B> from "<U1031><U1003><U1039>"
+collating-element <MMV1032K1003A> from "<U1032><U1003><U103A>"
+collating-element <MMV1032K1003ADot> from "<U1032><U1003><U1037><U103A>"
+collating-element <MMV1032K1003B> from "<U1032><U1003><U1039>"
+collating-element <MMV1031102CK1003A> from "<U1031><U102C><U1003><U103A>"
+collating-element <MMV1031102CK1003ADot> from "<U1031><U102C><U1003><U1037><U103A>"
+collating-element <MMV1031102CALT0K1003A> from "<U1031><U102B><U1003><U103A>"
+collating-element <MMV1031102CALT0K1003ADot> from "<U1031><U102B><U1003><U1037><U103A>"
+collating-element <MMV1031102CK1003B> from "<U1031><U102C><U1003><U1039>"
+collating-element <MMV1031102CALT0K1003B> from "<U1031><U102B><U1003><U1039>"
+collating-element <MMV1036K1003A> from "<U1036><U1003><U103A>"
+collating-element <MMV1036K1003ADot> from "<U1036><U1003><U1037><U103A>"
+collating-element <MMV1036K1003B> from "<U1036><U1003><U1039>"
+collating-element <MMV102D102FK1003A> from "<U102D><U102F><U1003><U103A>"
+collating-element <MMV102D102FK1003ADot> from "<U102D><U102F><U1003><U1037><U103A>"
+collating-element <MMV102D102FK1003B> from "<U102D><U102F><U1003><U1039>"
+collating-element <MMV102CK1004A> from "<U102C><U1004><U103A>"
+collating-element <MMV102CK1004ADot> from "<U102C><U1004><U1037><U103A>"
+collating-element <MMV102CALT0K1004A> from "<U102B><U1004><U103A>"
+collating-element <MMV102CALT0K1004ADot> from "<U102B><U1004><U1037><U103A>"
+collating-element <MMV102CK1004B> from "<U102C><U1004><U103A><U1039>"
+collating-element <MMV102CALT0K1004B> from "<U102B><U1004><U103A><U1039>"
+collating-element <MMV102DK1004A> from "<U102D><U1004><U103A>"
+collating-element <MMV102DK1004ADot> from "<U102D><U1004><U1037><U103A>"
+collating-element <MMV102DK1004B> from "<U102D><U1004><U103A><U1039>"
+collating-element <MMV102EK1004A> from "<U102E><U1004><U103A>"
+collating-element <MMV102EK1004ADot> from "<U102E><U1004><U1037><U103A>"
+collating-element <MMV102EK1004B> from "<U102E><U1004><U103A><U1039>"
+collating-element <MMV102FK1004A> from "<U102F><U1004><U103A>"
+collating-element <MMV102FK1004ADot> from "<U102F><U1004><U1037><U103A>"
+collating-element <MMV102FK1004B> from "<U102F><U1004><U103A><U1039>"
+collating-element <MMV1030K1004A> from "<U1030><U1004><U103A>"
+collating-element <MMV1030K1004ADot> from "<U1030><U1004><U1037><U103A>"
+collating-element <MMV1030K1004B> from "<U1030><U1004><U103A><U1039>"
+collating-element <MMV1031K1004A> from "<U1031><U1004><U103A>"
+collating-element <MMV1031K1004ADot> from "<U1031><U1004><U1037><U103A>"
+collating-element <MMV1031K1004B> from "<U1031><U1004><U103A><U1039>"
+collating-element <MMV1032K1004A> from "<U1032><U1004><U103A>"
+collating-element <MMV1032K1004ADot> from "<U1032><U1004><U1037><U103A>"
+collating-element <MMV1032K1004B> from "<U1032><U1004><U103A><U1039>"
+collating-element <MMV1031102CK1004A> from "<U1031><U102C><U1004><U103A>"
+collating-element <MMV1031102CK1004ADot> from "<U1031><U102C><U1004><U1037><U103A>"
+collating-element <MMV1031102CALT0K1004A> from "<U1031><U102B><U1004><U103A>"
+collating-element <MMV1031102CALT0K1004ADot> from "<U1031><U102B><U1004><U1037><U103A>"
+collating-element <MMV1031102CK1004B> from "<U1031><U102C><U1004><U103A><U1039>"
+collating-element <MMV1031102CALT0K1004B> from "<U1031><U102B><U1004><U103A><U1039>"
+collating-element <MMV1036K1004A> from "<U1036><U1004><U103A>"
+collating-element <MMV1036K1004ADot> from "<U1036><U1004><U1037><U103A>"
+collating-element <MMV1036K1004B> from "<U1036><U1004><U103A><U1039>"
+collating-element <MMV102D102FK1004A> from "<U102D><U102F><U1004><U103A>"
+collating-element <MMV102D102FK1004ADot> from "<U102D><U102F><U1004><U1037><U103A>"
+collating-element <MMV102D102FK1004B> from "<U102D><U102F><U1004><U103A><U1039>"
+collating-element <MMV102CK1005A> from "<U102C><U1005><U103A>"
+collating-element <MMV102CK1005ADot> from "<U102C><U1005><U1037><U103A>"
+collating-element <MMV102CALT0K1005A> from "<U102B><U1005><U103A>"
+collating-element <MMV102CALT0K1005ADot> from "<U102B><U1005><U1037><U103A>"
+collating-element <MMV102CK1005B> from "<U102C><U1005><U1039>"
+collating-element <MMV102CALT0K1005B> from "<U102B><U1005><U1039>"
+collating-element <MMV102DK1005A> from "<U102D><U1005><U103A>"
+collating-element <MMV102DK1005ADot> from "<U102D><U1005><U1037><U103A>"
+collating-element <MMV102DK1005B> from "<U102D><U1005><U1039>"
+collating-element <MMV102EK1005A> from "<U102E><U1005><U103A>"
+collating-element <MMV102EK1005ADot> from "<U102E><U1005><U1037><U103A>"
+collating-element <MMV102EK1005B> from "<U102E><U1005><U1039>"
+collating-element <MMV102FK1005A> from "<U102F><U1005><U103A>"
+collating-element <MMV102FK1005ADot> from "<U102F><U1005><U1037><U103A>"
+collating-element <MMV102FK1005B> from "<U102F><U1005><U1039>"
+collating-element <MMV1030K1005A> from "<U1030><U1005><U103A>"
+collating-element <MMV1030K1005ADot> from "<U1030><U1005><U1037><U103A>"
+collating-element <MMV1030K1005B> from "<U1030><U1005><U1039>"
+collating-element <MMV1031K1005A> from "<U1031><U1005><U103A>"
+collating-element <MMV1031K1005ADot> from "<U1031><U1005><U1037><U103A>"
+collating-element <MMV1031K1005B> from "<U1031><U1005><U1039>"
+collating-element <MMV1032K1005A> from "<U1032><U1005><U103A>"
+collating-element <MMV1032K1005ADot> from "<U1032><U1005><U1037><U103A>"
+collating-element <MMV1032K1005B> from "<U1032><U1005><U1039>"
+collating-element <MMV1031102CK1005A> from "<U1031><U102C><U1005><U103A>"
+collating-element <MMV1031102CK1005ADot> from "<U1031><U102C><U1005><U1037><U103A>"
+collating-element <MMV1031102CALT0K1005A> from "<U1031><U102B><U1005><U103A>"
+collating-element <MMV1031102CALT0K1005ADot> from "<U1031><U102B><U1005><U1037><U103A>"
+collating-element <MMV1031102CK1005B> from "<U1031><U102C><U1005><U1039>"
+collating-element <MMV1031102CALT0K1005B> from "<U1031><U102B><U1005><U1039>"
+collating-element <MMV1036K1005A> from "<U1036><U1005><U103A>"
+collating-element <MMV1036K1005ADot> from "<U1036><U1005><U1037><U103A>"
+collating-element <MMV1036K1005B> from "<U1036><U1005><U1039>"
+collating-element <MMV102D102FK1005A> from "<U102D><U102F><U1005><U103A>"
+collating-element <MMV102D102FK1005ADot> from "<U102D><U102F><U1005><U1037><U103A>"
+collating-element <MMV102D102FK1005B> from "<U102D><U102F><U1005><U1039>"
+collating-element <MMV102CK1006A> from "<U102C><U1006><U103A>"
+collating-element <MMV102CK1006ADot> from "<U102C><U1006><U1037><U103A>"
+collating-element <MMV102CALT0K1006A> from "<U102B><U1006><U103A>"
+collating-element <MMV102CALT0K1006ADot> from "<U102B><U1006><U1037><U103A>"
+collating-element <MMV102CK1006B> from "<U102C><U1006><U1039>"
+collating-element <MMV102CALT0K1006B> from "<U102B><U1006><U1039>"
+collating-element <MMV102DK1006A> from "<U102D><U1006><U103A>"
+collating-element <MMV102DK1006ADot> from "<U102D><U1006><U1037><U103A>"
+collating-element <MMV102DK1006B> from "<U102D><U1006><U1039>"
+collating-element <MMV102EK1006A> from "<U102E><U1006><U103A>"
+collating-element <MMV102EK1006ADot> from "<U102E><U1006><U1037><U103A>"
+collating-element <MMV102EK1006B> from "<U102E><U1006><U1039>"
+collating-element <MMV102FK1006A> from "<U102F><U1006><U103A>"
+collating-element <MMV102FK1006ADot> from "<U102F><U1006><U1037><U103A>"
+collating-element <MMV102FK1006B> from "<U102F><U1006><U1039>"
+collating-element <MMV1030K1006A> from "<U1030><U1006><U103A>"
+collating-element <MMV1030K1006ADot> from "<U1030><U1006><U1037><U103A>"
+collating-element <MMV1030K1006B> from "<U1030><U1006><U1039>"
+collating-element <MMV1031K1006A> from "<U1031><U1006><U103A>"
+collating-element <MMV1031K1006ADot> from "<U1031><U1006><U1037><U103A>"
+collating-element <MMV1031K1006B> from "<U1031><U1006><U1039>"
+collating-element <MMV1032K1006A> from "<U1032><U1006><U103A>"
+collating-element <MMV1032K1006ADot> from "<U1032><U1006><U1037><U103A>"
+collating-element <MMV1032K1006B> from "<U1032><U1006><U1039>"
+collating-element <MMV1031102CK1006A> from "<U1031><U102C><U1006><U103A>"
+collating-element <MMV1031102CK1006ADot> from "<U1031><U102C><U1006><U1037><U103A>"
+collating-element <MMV1031102CALT0K1006A> from "<U1031><U102B><U1006><U103A>"
+collating-element <MMV1031102CALT0K1006ADot> from "<U1031><U102B><U1006><U1037><U103A>"
+collating-element <MMV1031102CK1006B> from "<U1031><U102C><U1006><U1039>"
+collating-element <MMV1031102CALT0K1006B> from "<U1031><U102B><U1006><U1039>"
+collating-element <MMV1036K1006A> from "<U1036><U1006><U103A>"
+collating-element <MMV1036K1006ADot> from "<U1036><U1006><U1037><U103A>"
+collating-element <MMV1036K1006B> from "<U1036><U1006><U1039>"
+collating-element <MMV102D102FK1006A> from "<U102D><U102F><U1006><U103A>"
+collating-element <MMV102D102FK1006ADot> from "<U102D><U102F><U1006><U1037><U103A>"
+collating-element <MMV102D102FK1006B> from "<U102D><U102F><U1006><U1039>"
+collating-element <MMV102CK1007A> from "<U102C><U1007><U103A>"
+collating-element <MMV102CK1007ADot> from "<U102C><U1007><U1037><U103A>"
+collating-element <MMV102CALT0K1007A> from "<U102B><U1007><U103A>"
+collating-element <MMV102CALT0K1007ADot> from "<U102B><U1007><U1037><U103A>"
+collating-element <MMV102CK1007B> from "<U102C><U1007><U1039>"
+collating-element <MMV102CALT0K1007B> from "<U102B><U1007><U1039>"
+collating-element <MMV102DK1007A> from "<U102D><U1007><U103A>"
+collating-element <MMV102DK1007ADot> from "<U102D><U1007><U1037><U103A>"
+collating-element <MMV102DK1007B> from "<U102D><U1007><U1039>"
+collating-element <MMV102EK1007A> from "<U102E><U1007><U103A>"
+collating-element <MMV102EK1007ADot> from "<U102E><U1007><U1037><U103A>"
+collating-element <MMV102EK1007B> from "<U102E><U1007><U1039>"
+collating-element <MMV102FK1007A> from "<U102F><U1007><U103A>"
+collating-element <MMV102FK1007ADot> from "<U102F><U1007><U1037><U103A>"
+collating-element <MMV102FK1007B> from "<U102F><U1007><U1039>"
+collating-element <MMV1030K1007A> from "<U1030><U1007><U103A>"
+collating-element <MMV1030K1007ADot> from "<U1030><U1007><U1037><U103A>"
+collating-element <MMV1030K1007B> from "<U1030><U1007><U1039>"
+collating-element <MMV1031K1007A> from "<U1031><U1007><U103A>"
+collating-element <MMV1031K1007ADot> from "<U1031><U1007><U1037><U103A>"
+collating-element <MMV1031K1007B> from "<U1031><U1007><U1039>"
+collating-element <MMV1032K1007A> from "<U1032><U1007><U103A>"
+collating-element <MMV1032K1007ADot> from "<U1032><U1007><U1037><U103A>"
+collating-element <MMV1032K1007B> from "<U1032><U1007><U1039>"
+collating-element <MMV1031102CK1007A> from "<U1031><U102C><U1007><U103A>"
+collating-element <MMV1031102CK1007ADot> from "<U1031><U102C><U1007><U1037><U103A>"
+collating-element <MMV1031102CALT0K1007A> from "<U1031><U102B><U1007><U103A>"
+collating-element <MMV1031102CALT0K1007ADot> from "<U1031><U102B><U1007><U1037><U103A>"
+collating-element <MMV1031102CK1007B> from "<U1031><U102C><U1007><U1039>"
+collating-element <MMV1031102CALT0K1007B> from "<U1031><U102B><U1007><U1039>"
+collating-element <MMV1036K1007A> from "<U1036><U1007><U103A>"
+collating-element <MMV1036K1007ADot> from "<U1036><U1007><U1037><U103A>"
+collating-element <MMV1036K1007B> from "<U1036><U1007><U1039>"
+collating-element <MMV102D102FK1007A> from "<U102D><U102F><U1007><U103A>"
+collating-element <MMV102D102FK1007ADot> from "<U102D><U102F><U1007><U1037><U103A>"
+collating-element <MMV102D102FK1007B> from "<U102D><U102F><U1007><U1039>"
+collating-element <MMV102CK1009A> from "<U102C><U1009><U103A>"
+collating-element <MMV102CK1009ADot> from "<U102C><U1009><U1037><U103A>"
+collating-element <MMV102CALT0K1009A> from "<U102B><U1009><U103A>"
+collating-element <MMV102CALT0K1009ADot> from "<U102B><U1009><U1037><U103A>"
+collating-element <MMV102CK1009B> from "<U102C><U1009><U1039>"
+collating-element <MMV102CALT0K1009B> from "<U102B><U1009><U1039>"
+collating-element <MMV102DK1009A> from "<U102D><U1009><U103A>"
+collating-element <MMV102DK1009ADot> from "<U102D><U1009><U1037><U103A>"
+collating-element <MMV102DK1009B> from "<U102D><U1009><U1039>"
+collating-element <MMV102EK1009A> from "<U102E><U1009><U103A>"
+collating-element <MMV102EK1009ADot> from "<U102E><U1009><U1037><U103A>"
+collating-element <MMV102EK1009B> from "<U102E><U1009><U1039>"
+collating-element <MMV102FK1009A> from "<U102F><U1009><U103A>"
+collating-element <MMV102FK1009ADot> from "<U102F><U1009><U1037><U103A>"
+collating-element <MMV102FK1009B> from "<U102F><U1009><U1039>"
+collating-element <MMV1030K1009A> from "<U1030><U1009><U103A>"
+collating-element <MMV1030K1009ADot> from "<U1030><U1009><U1037><U103A>"
+collating-element <MMV1030K1009B> from "<U1030><U1009><U1039>"
+collating-element <MMV1031K1009A> from "<U1031><U1009><U103A>"
+collating-element <MMV1031K1009ADot> from "<U1031><U1009><U1037><U103A>"
+collating-element <MMV1031K1009B> from "<U1031><U1009><U1039>"
+collating-element <MMV1032K1009A> from "<U1032><U1009><U103A>"
+collating-element <MMV1032K1009ADot> from "<U1032><U1009><U1037><U103A>"
+collating-element <MMV1032K1009B> from "<U1032><U1009><U1039>"
+collating-element <MMV1031102CK1009A> from "<U1031><U102C><U1009><U103A>"
+collating-element <MMV1031102CK1009ADot> from "<U1031><U102C><U1009><U1037><U103A>"
+collating-element <MMV1031102CALT0K1009A> from "<U1031><U102B><U1009><U103A>"
+collating-element <MMV1031102CALT0K1009ADot> from "<U1031><U102B><U1009><U1037><U103A>"
+collating-element <MMV1031102CK1009B> from "<U1031><U102C><U1009><U1039>"
+collating-element <MMV1031102CALT0K1009B> from "<U1031><U102B><U1009><U1039>"
+collating-element <MMV1036K1009A> from "<U1036><U1009><U103A>"
+collating-element <MMV1036K1009ADot> from "<U1036><U1009><U1037><U103A>"
+collating-element <MMV1036K1009B> from "<U1036><U1009><U1039>"
+collating-element <MMV102D102FK1009A> from "<U102D><U102F><U1009><U103A>"
+collating-element <MMV102D102FK1009ADot> from "<U102D><U102F><U1009><U1037><U103A>"
+collating-element <MMV102D102FK1009B> from "<U102D><U102F><U1009><U1039>"
+collating-element <MMV102CK100AA> from "<U102C><U100A><U103A>"
+collating-element <MMV102CK100AADot> from "<U102C><U100A><U1037><U103A>"
+collating-element <MMV102CALT0K100AA> from "<U102B><U100A><U103A>"
+collating-element <MMV102CALT0K100AADot> from "<U102B><U100A><U1037><U103A>"
+collating-element <MMV102CK100AB> from "<U102C><U100A><U1039>"
+collating-element <MMV102CALT0K100AB> from "<U102B><U100A><U1039>"
+collating-element <MMV102DK100AA> from "<U102D><U100A><U103A>"
+collating-element <MMV102DK100AADot> from "<U102D><U100A><U1037><U103A>"
+collating-element <MMV102DK100AB> from "<U102D><U100A><U1039>"
+collating-element <MMV102EK100AA> from "<U102E><U100A><U103A>"
+collating-element <MMV102EK100AADot> from "<U102E><U100A><U1037><U103A>"
+collating-element <MMV102EK100AB> from "<U102E><U100A><U1039>"
+collating-element <MMV102FK100AA> from "<U102F><U100A><U103A>"
+collating-element <MMV102FK100AADot> from "<U102F><U100A><U1037><U103A>"
+collating-element <MMV102FK100AB> from "<U102F><U100A><U1039>"
+collating-element <MMV1030K100AA> from "<U1030><U100A><U103A>"
+collating-element <MMV1030K100AADot> from "<U1030><U100A><U1037><U103A>"
+collating-element <MMV1030K100AB> from "<U1030><U100A><U1039>"
+collating-element <MMV1031K100AA> from "<U1031><U100A><U103A>"
+collating-element <MMV1031K100AADot> from "<U1031><U100A><U1037><U103A>"
+collating-element <MMV1031K100AB> from "<U1031><U100A><U1039>"
+collating-element <MMV1032K100AA> from "<U1032><U100A><U103A>"
+collating-element <MMV1032K100AADot> from "<U1032><U100A><U1037><U103A>"
+collating-element <MMV1032K100AB> from "<U1032><U100A><U1039>"
+collating-element <MMV1031102CK100AA> from "<U1031><U102C><U100A><U103A>"
+collating-element <MMV1031102CK100AADot> from "<U1031><U102C><U100A><U1037><U103A>"
+collating-element <MMV1031102CALT0K100AA> from "<U1031><U102B><U100A><U103A>"
+collating-element <MMV1031102CALT0K100AADot> from "<U1031><U102B><U100A><U1037><U103A>"
+collating-element <MMV1031102CK100AB> from "<U1031><U102C><U100A><U1039>"
+collating-element <MMV1031102CALT0K100AB> from "<U1031><U102B><U100A><U1039>"
+collating-element <MMV1036K100AA> from "<U1036><U100A><U103A>"
+collating-element <MMV1036K100AADot> from "<U1036><U100A><U1037><U103A>"
+collating-element <MMV1036K100AB> from "<U1036><U100A><U1039>"
+collating-element <MMV102D102FK100AA> from "<U102D><U102F><U100A><U103A>"
+collating-element <MMV102D102FK100AADot> from "<U102D><U102F><U100A><U1037><U103A>"
+collating-element <MMV102D102FK100AB> from "<U102D><U102F><U100A><U1039>"
+collating-element <MMV102CK100BA> from "<U102C><U100B><U103A>"
+collating-element <MMV102CK100BADot> from "<U102C><U100B><U1037><U103A>"
+collating-element <MMV102CALT0K100BA> from "<U102B><U100B><U103A>"
+collating-element <MMV102CALT0K100BADot> from "<U102B><U100B><U1037><U103A>"
+collating-element <MMV102CK100BB> from "<U102C><U100B><U1039>"
+collating-element <MMV102CALT0K100BB> from "<U102B><U100B><U1039>"
+collating-element <MMV102DK100BA> from "<U102D><U100B><U103A>"
+collating-element <MMV102DK100BADot> from "<U102D><U100B><U1037><U103A>"
+collating-element <MMV102DK100BB> from "<U102D><U100B><U1039>"
+collating-element <MMV102EK100BA> from "<U102E><U100B><U103A>"
+collating-element <MMV102EK100BADot> from "<U102E><U100B><U1037><U103A>"
+collating-element <MMV102EK100BB> from "<U102E><U100B><U1039>"
+collating-element <MMV102FK100BA> from "<U102F><U100B><U103A>"
+collating-element <MMV102FK100BADot> from "<U102F><U100B><U1037><U103A>"
+collating-element <MMV102FK100BB> from "<U102F><U100B><U1039>"
+collating-element <MMV1030K100BA> from "<U1030><U100B><U103A>"
+collating-element <MMV1030K100BADot> from "<U1030><U100B><U1037><U103A>"
+collating-element <MMV1030K100BB> from "<U1030><U100B><U1039>"
+collating-element <MMV1031K100BA> from "<U1031><U100B><U103A>"
+collating-element <MMV1031K100BADot> from "<U1031><U100B><U1037><U103A>"
+collating-element <MMV1031K100BB> from "<U1031><U100B><U1039>"
+collating-element <MMV1032K100BA> from "<U1032><U100B><U103A>"
+collating-element <MMV1032K100BADot> from "<U1032><U100B><U1037><U103A>"
+collating-element <MMV1032K100BB> from "<U1032><U100B><U1039>"
+collating-element <MMV1031102CK100BA> from "<U1031><U102C><U100B><U103A>"
+collating-element <MMV1031102CK100BADot> from "<U1031><U102C><U100B><U1037><U103A>"
+collating-element <MMV1031102CALT0K100BA> from "<U1031><U102B><U100B><U103A>"
+collating-element <MMV1031102CALT0K100BADot> from "<U1031><U102B><U100B><U1037><U103A>"
+collating-element <MMV1031102CK100BB> from "<U1031><U102C><U100B><U1039>"
+collating-element <MMV1031102CALT0K100BB> from "<U1031><U102B><U100B><U1039>"
+collating-element <MMV1036K100BA> from "<U1036><U100B><U103A>"
+collating-element <MMV1036K100BADot> from "<U1036><U100B><U1037><U103A>"
+collating-element <MMV1036K100BB> from "<U1036><U100B><U1039>"
+collating-element <MMV102D102FK100BA> from "<U102D><U102F><U100B><U103A>"
+collating-element <MMV102D102FK100BADot> from "<U102D><U102F><U100B><U1037><U103A>"
+collating-element <MMV102D102FK100BB> from "<U102D><U102F><U100B><U1039>"
+collating-element <MMV102CK100CA> from "<U102C><U100C><U103A>"
+collating-element <MMV102CK100CADot> from "<U102C><U100C><U1037><U103A>"
+collating-element <MMV102CALT0K100CA> from "<U102B><U100C><U103A>"
+collating-element <MMV102CALT0K100CADot> from "<U102B><U100C><U1037><U103A>"
+collating-element <MMV102CK100CB> from "<U102C><U100C><U1039>"
+collating-element <MMV102CALT0K100CB> from "<U102B><U100C><U1039>"
+collating-element <MMV102DK100CA> from "<U102D><U100C><U103A>"
+collating-element <MMV102DK100CADot> from "<U102D><U100C><U1037><U103A>"
+collating-element <MMV102DK100CB> from "<U102D><U100C><U1039>"
+collating-element <MMV102EK100CA> from "<U102E><U100C><U103A>"
+collating-element <MMV102EK100CADot> from "<U102E><U100C><U1037><U103A>"
+collating-element <MMV102EK100CB> from "<U102E><U100C><U1039>"
+collating-element <MMV102FK100CA> from "<U102F><U100C><U103A>"
+collating-element <MMV102FK100CADot> from "<U102F><U100C><U1037><U103A>"
+collating-element <MMV102FK100CB> from "<U102F><U100C><U1039>"
+collating-element <MMV1030K100CA> from "<U1030><U100C><U103A>"
+collating-element <MMV1030K100CADot> from "<U1030><U100C><U1037><U103A>"
+collating-element <MMV1030K100CB> from "<U1030><U100C><U1039>"
+collating-element <MMV1031K100CA> from "<U1031><U100C><U103A>"
+collating-element <MMV1031K100CADot> from "<U1031><U100C><U1037><U103A>"
+collating-element <MMV1031K100CB> from "<U1031><U100C><U1039>"
+collating-element <MMV1032K100CA> from "<U1032><U100C><U103A>"
+collating-element <MMV1032K100CADot> from "<U1032><U100C><U1037><U103A>"
+collating-element <MMV1032K100CB> from "<U1032><U100C><U1039>"
+collating-element <MMV1031102CK100CA> from "<U1031><U102C><U100C><U103A>"
+collating-element <MMV1031102CK100CADot> from "<U1031><U102C><U100C><U1037><U103A>"
+collating-element <MMV1031102CALT0K100CA> from "<U1031><U102B><U100C><U103A>"
+collating-element <MMV1031102CALT0K100CADot> from "<U1031><U102B><U100C><U1037><U103A>"
+collating-element <MMV1031102CK100CB> from "<U1031><U102C><U100C><U1039>"
+collating-element <MMV1031102CALT0K100CB> from "<U1031><U102B><U100C><U1039>"
+collating-element <MMV1036K100CA> from "<U1036><U100C><U103A>"
+collating-element <MMV1036K100CADot> from "<U1036><U100C><U1037><U103A>"
+collating-element <MMV1036K100CB> from "<U1036><U100C><U1039>"
+collating-element <MMV102D102FK100CA> from "<U102D><U102F><U100C><U103A>"
+collating-element <MMV102D102FK100CADot> from "<U102D><U102F><U100C><U1037><U103A>"
+collating-element <MMV102D102FK100CB> from "<U102D><U102F><U100C><U1039>"
+collating-element <MMV102CK100DA> from "<U102C><U100D><U103A>"
+collating-element <MMV102CK100DADot> from "<U102C><U100D><U1037><U103A>"
+collating-element <MMV102CALT0K100DA> from "<U102B><U100D><U103A>"
+collating-element <MMV102CALT0K100DADot> from "<U102B><U100D><U1037><U103A>"
+collating-element <MMV102CK100DB> from "<U102C><U100D><U1039>"
+collating-element <MMV102CALT0K100DB> from "<U102B><U100D><U1039>"
+collating-element <MMV102DK100DA> from "<U102D><U100D><U103A>"
+collating-element <MMV102DK100DADot> from "<U102D><U100D><U1037><U103A>"
+collating-element <MMV102DK100DB> from "<U102D><U100D><U1039>"
+collating-element <MMV102EK100DA> from "<U102E><U100D><U103A>"
+collating-element <MMV102EK100DADot> from "<U102E><U100D><U1037><U103A>"
+collating-element <MMV102EK100DB> from "<U102E><U100D><U1039>"
+collating-element <MMV102FK100DA> from "<U102F><U100D><U103A>"
+collating-element <MMV102FK100DADot> from "<U102F><U100D><U1037><U103A>"
+collating-element <MMV102FK100DB> from "<U102F><U100D><U1039>"
+collating-element <MMV1030K100DA> from "<U1030><U100D><U103A>"
+collating-element <MMV1030K100DADot> from "<U1030><U100D><U1037><U103A>"
+collating-element <MMV1030K100DB> from "<U1030><U100D><U1039>"
+collating-element <MMV1031K100DA> from "<U1031><U100D><U103A>"
+collating-element <MMV1031K100DADot> from "<U1031><U100D><U1037><U103A>"
+collating-element <MMV1031K100DB> from "<U1031><U100D><U1039>"
+collating-element <MMV1032K100DA> from "<U1032><U100D><U103A>"
+collating-element <MMV1032K100DADot> from "<U1032><U100D><U1037><U103A>"
+collating-element <MMV1032K100DB> from "<U1032><U100D><U1039>"
+collating-element <MMV1031102CK100DA> from "<U1031><U102C><U100D><U103A>"
+collating-element <MMV1031102CK100DADot> from "<U1031><U102C><U100D><U1037><U103A>"
+collating-element <MMV1031102CALT0K100DA> from "<U1031><U102B><U100D><U103A>"
+collating-element <MMV1031102CALT0K100DADot> from "<U1031><U102B><U100D><U1037><U103A>"
+collating-element <MMV1031102CK100DB> from "<U1031><U102C><U100D><U1039>"
+collating-element <MMV1031102CALT0K100DB> from "<U1031><U102B><U100D><U1039>"
+collating-element <MMV1036K100DA> from "<U1036><U100D><U103A>"
+collating-element <MMV1036K100DADot> from "<U1036><U100D><U1037><U103A>"
+collating-element <MMV1036K100DB> from "<U1036><U100D><U1039>"
+collating-element <MMV102D102FK100DA> from "<U102D><U102F><U100D><U103A>"
+collating-element <MMV102D102FK100DADot> from "<U102D><U102F><U100D><U1037><U103A>"
+collating-element <MMV102D102FK100DB> from "<U102D><U102F><U100D><U1039>"
+collating-element <MMV102CK100EA> from "<U102C><U100E><U103A>"
+collating-element <MMV102CK100EADot> from "<U102C><U100E><U1037><U103A>"
+collating-element <MMV102CALT0K100EA> from "<U102B><U100E><U103A>"
+collating-element <MMV102CALT0K100EADot> from "<U102B><U100E><U1037><U103A>"
+collating-element <MMV102CK100EB> from "<U102C><U100E><U1039>"
+collating-element <MMV102CALT0K100EB> from "<U102B><U100E><U1039>"
+collating-element <MMV102DK100EA> from "<U102D><U100E><U103A>"
+collating-element <MMV102DK100EADot> from "<U102D><U100E><U1037><U103A>"
+collating-element <MMV102DK100EB> from "<U102D><U100E><U1039>"
+collating-element <MMV102EK100EA> from "<U102E><U100E><U103A>"
+collating-element <MMV102EK100EADot> from "<U102E><U100E><U1037><U103A>"
+collating-element <MMV102EK100EB> from "<U102E><U100E><U1039>"
+collating-element <MMV102FK100EA> from "<U102F><U100E><U103A>"
+collating-element <MMV102FK100EADot> from "<U102F><U100E><U1037><U103A>"
+collating-element <MMV102FK100EB> from "<U102F><U100E><U1039>"
+collating-element <MMV1030K100EA> from "<U1030><U100E><U103A>"
+collating-element <MMV1030K100EADot> from "<U1030><U100E><U1037><U103A>"
+collating-element <MMV1030K100EB> from "<U1030><U100E><U1039>"
+collating-element <MMV1031K100EA> from "<U1031><U100E><U103A>"
+collating-element <MMV1031K100EADot> from "<U1031><U100E><U1037><U103A>"
+collating-element <MMV1031K100EB> from "<U1031><U100E><U1039>"
+collating-element <MMV1032K100EA> from "<U1032><U100E><U103A>"
+collating-element <MMV1032K100EADot> from "<U1032><U100E><U1037><U103A>"
+collating-element <MMV1032K100EB> from "<U1032><U100E><U1039>"
+collating-element <MMV1031102CK100EA> from "<U1031><U102C><U100E><U103A>"
+collating-element <MMV1031102CK100EADot> from "<U1031><U102C><U100E><U1037><U103A>"
+collating-element <MMV1031102CALT0K100EA> from "<U1031><U102B><U100E><U103A>"
+collating-element <MMV1031102CALT0K100EADot> from "<U1031><U102B><U100E><U1037><U103A>"
+collating-element <MMV1031102CK100EB> from "<U1031><U102C><U100E><U1039>"
+collating-element <MMV1031102CALT0K100EB> from "<U1031><U102B><U100E><U1039>"
+collating-element <MMV1036K100EA> from "<U1036><U100E><U103A>"
+collating-element <MMV1036K100EADot> from "<U1036><U100E><U1037><U103A>"
+collating-element <MMV1036K100EB> from "<U1036><U100E><U1039>"
+collating-element <MMV102D102FK100EA> from "<U102D><U102F><U100E><U103A>"
+collating-element <MMV102D102FK100EADot> from "<U102D><U102F><U100E><U1037><U103A>"
+collating-element <MMV102D102FK100EB> from "<U102D><U102F><U100E><U1039>"
+collating-element <MMV102CK100FA> from "<U102C><U100F><U103A>"
+collating-element <MMV102CK100FADot> from "<U102C><U100F><U1037><U103A>"
+collating-element <MMV102CALT0K100FA> from "<U102B><U100F><U103A>"
+collating-element <MMV102CALT0K100FADot> from "<U102B><U100F><U1037><U103A>"
+collating-element <MMV102CK100FB> from "<U102C><U100F><U1039>"
+collating-element <MMV102CALT0K100FB> from "<U102B><U100F><U1039>"
+collating-element <MMV102DK100FA> from "<U102D><U100F><U103A>"
+collating-element <MMV102DK100FADot> from "<U102D><U100F><U1037><U103A>"
+collating-element <MMV102DK100FB> from "<U102D><U100F><U1039>"
+collating-element <MMV102EK100FA> from "<U102E><U100F><U103A>"
+collating-element <MMV102EK100FADot> from "<U102E><U100F><U1037><U103A>"
+collating-element <MMV102EK100FB> from "<U102E><U100F><U1039>"
+collating-element <MMV102FK100FA> from "<U102F><U100F><U103A>"
+collating-element <MMV102FK100FADot> from "<U102F><U100F><U1037><U103A>"
+collating-element <MMV102FK100FB> from "<U102F><U100F><U1039>"
+collating-element <MMV1030K100FA> from "<U1030><U100F><U103A>"
+collating-element <MMV1030K100FADot> from "<U1030><U100F><U1037><U103A>"
+collating-element <MMV1030K100FB> from "<U1030><U100F><U1039>"
+collating-element <MMV1031K100FA> from "<U1031><U100F><U103A>"
+collating-element <MMV1031K100FADot> from "<U1031><U100F><U1037><U103A>"
+collating-element <MMV1031K100FB> from "<U1031><U100F><U1039>"
+collating-element <MMV1032K100FA> from "<U1032><U100F><U103A>"
+collating-element <MMV1032K100FADot> from "<U1032><U100F><U1037><U103A>"
+collating-element <MMV1032K100FB> from "<U1032><U100F><U1039>"
+collating-element <MMV1031102CK100FA> from "<U1031><U102C><U100F><U103A>"
+collating-element <MMV1031102CK100FADot> from "<U1031><U102C><U100F><U1037><U103A>"
+collating-element <MMV1031102CALT0K100FA> from "<U1031><U102B><U100F><U103A>"
+collating-element <MMV1031102CALT0K100FADot> from "<U1031><U102B><U100F><U1037><U103A>"
+collating-element <MMV1031102CK100FB> from "<U1031><U102C><U100F><U1039>"
+collating-element <MMV1031102CALT0K100FB> from "<U1031><U102B><U100F><U1039>"
+collating-element <MMV1036K100FA> from "<U1036><U100F><U103A>"
+collating-element <MMV1036K100FADot> from "<U1036><U100F><U1037><U103A>"
+collating-element <MMV1036K100FB> from "<U1036><U100F><U1039>"
+collating-element <MMV102D102FK100FA> from "<U102D><U102F><U100F><U103A>"
+collating-element <MMV102D102FK100FADot> from "<U102D><U102F><U100F><U1037><U103A>"
+collating-element <MMV102D102FK100FB> from "<U102D><U102F><U100F><U1039>"
+collating-element <MMV102CK1010A> from "<U102C><U1010><U103A>"
+collating-element <MMV102CK1010ADot> from "<U102C><U1010><U1037><U103A>"
+collating-element <MMV102CALT0K1010A> from "<U102B><U1010><U103A>"
+collating-element <MMV102CALT0K1010ADot> from "<U102B><U1010><U1037><U103A>"
+collating-element <MMV102CK1010B> from "<U102C><U1010><U1039>"
+collating-element <MMV102CALT0K1010B> from "<U102B><U1010><U1039>"
+collating-element <MMV102DK1010A> from "<U102D><U1010><U103A>"
+collating-element <MMV102DK1010ADot> from "<U102D><U1010><U1037><U103A>"
+collating-element <MMV102DK1010B> from "<U102D><U1010><U1039>"
+collating-element <MMV102EK1010A> from "<U102E><U1010><U103A>"
+collating-element <MMV102EK1010ADot> from "<U102E><U1010><U1037><U103A>"
+collating-element <MMV102EK1010B> from "<U102E><U1010><U1039>"
+collating-element <MMV102FK1010A> from "<U102F><U1010><U103A>"
+collating-element <MMV102FK1010ADot> from "<U102F><U1010><U1037><U103A>"
+collating-element <MMV102FK1010B> from "<U102F><U1010><U1039>"
+collating-element <MMV1030K1010A> from "<U1030><U1010><U103A>"
+collating-element <MMV1030K1010ADot> from "<U1030><U1010><U1037><U103A>"
+collating-element <MMV1030K1010B> from "<U1030><U1010><U1039>"
+collating-element <MMV1031K1010A> from "<U1031><U1010><U103A>"
+collating-element <MMV1031K1010ADot> from "<U1031><U1010><U1037><U103A>"
+collating-element <MMV1031K1010B> from "<U1031><U1010><U1039>"
+collating-element <MMV1032K1010A> from "<U1032><U1010><U103A>"
+collating-element <MMV1032K1010ADot> from "<U1032><U1010><U1037><U103A>"
+collating-element <MMV1032K1010B> from "<U1032><U1010><U1039>"
+collating-element <MMV1031102CK1010A> from "<U1031><U102C><U1010><U103A>"
+collating-element <MMV1031102CK1010ADot> from "<U1031><U102C><U1010><U1037><U103A>"
+collating-element <MMV1031102CALT0K1010A> from "<U1031><U102B><U1010><U103A>"
+collating-element <MMV1031102CALT0K1010ADot> from "<U1031><U102B><U1010><U1037><U103A>"
+collating-element <MMV1031102CK1010B> from "<U1031><U102C><U1010><U1039>"
+collating-element <MMV1031102CALT0K1010B> from "<U1031><U102B><U1010><U1039>"
+collating-element <MMV1036K1010A> from "<U1036><U1010><U103A>"
+collating-element <MMV1036K1010ADot> from "<U1036><U1010><U1037><U103A>"
+collating-element <MMV1036K1010B> from "<U1036><U1010><U1039>"
+collating-element <MMV102D102FK1010A> from "<U102D><U102F><U1010><U103A>"
+collating-element <MMV102D102FK1010ADot> from "<U102D><U102F><U1010><U1037><U103A>"
+collating-element <MMV102D102FK1010B> from "<U102D><U102F><U1010><U1039>"
+collating-element <MMV102CK1011A> from "<U102C><U1011><U103A>"
+collating-element <MMV102CK1011ADot> from "<U102C><U1011><U1037><U103A>"
+collating-element <MMV102CALT0K1011A> from "<U102B><U1011><U103A>"
+collating-element <MMV102CALT0K1011ADot> from "<U102B><U1011><U1037><U103A>"
+collating-element <MMV102CK1011B> from "<U102C><U1011><U1039>"
+collating-element <MMV102CALT0K1011B> from "<U102B><U1011><U1039>"
+collating-element <MMV102DK1011A> from "<U102D><U1011><U103A>"
+collating-element <MMV102DK1011ADot> from "<U102D><U1011><U1037><U103A>"
+collating-element <MMV102DK1011B> from "<U102D><U1011><U1039>"
+collating-element <MMV102EK1011A> from "<U102E><U1011><U103A>"
+collating-element <MMV102EK1011ADot> from "<U102E><U1011><U1037><U103A>"
+collating-element <MMV102EK1011B> from "<U102E><U1011><U1039>"
+collating-element <MMV102FK1011A> from "<U102F><U1011><U103A>"
+collating-element <MMV102FK1011ADot> from "<U102F><U1011><U1037><U103A>"
+collating-element <MMV102FK1011B> from "<U102F><U1011><U1039>"
+collating-element <MMV1030K1011A> from "<U1030><U1011><U103A>"
+collating-element <MMV1030K1011ADot> from "<U1030><U1011><U1037><U103A>"
+collating-element <MMV1030K1011B> from "<U1030><U1011><U1039>"
+collating-element <MMV1031K1011A> from "<U1031><U1011><U103A>"
+collating-element <MMV1031K1011ADot> from "<U1031><U1011><U1037><U103A>"
+collating-element <MMV1031K1011B> from "<U1031><U1011><U1039>"
+collating-element <MMV1032K1011A> from "<U1032><U1011><U103A>"
+collating-element <MMV1032K1011ADot> from "<U1032><U1011><U1037><U103A>"
+collating-element <MMV1032K1011B> from "<U1032><U1011><U1039>"
+collating-element <MMV1031102CK1011A> from "<U1031><U102C><U1011><U103A>"
+collating-element <MMV1031102CK1011ADot> from "<U1031><U102C><U1011><U1037><U103A>"
+collating-element <MMV1031102CALT0K1011A> from "<U1031><U102B><U1011><U103A>"
+collating-element <MMV1031102CALT0K1011ADot> from "<U1031><U102B><U1011><U1037><U103A>"
+collating-element <MMV1031102CK1011B> from "<U1031><U102C><U1011><U1039>"
+collating-element <MMV1031102CALT0K1011B> from "<U1031><U102B><U1011><U1039>"
+collating-element <MMV1036K1011A> from "<U1036><U1011><U103A>"
+collating-element <MMV1036K1011ADot> from "<U1036><U1011><U1037><U103A>"
+collating-element <MMV1036K1011B> from "<U1036><U1011><U1039>"
+collating-element <MMV102D102FK1011A> from "<U102D><U102F><U1011><U103A>"
+collating-element <MMV102D102FK1011ADot> from "<U102D><U102F><U1011><U1037><U103A>"
+collating-element <MMV102D102FK1011B> from "<U102D><U102F><U1011><U1039>"
+collating-element <MMV102CK1012A> from "<U102C><U1012><U103A>"
+collating-element <MMV102CK1012ADot> from "<U102C><U1012><U1037><U103A>"
+collating-element <MMV102CALT0K1012A> from "<U102B><U1012><U103A>"
+collating-element <MMV102CALT0K1012ADot> from "<U102B><U1012><U1037><U103A>"
+collating-element <MMV102CK1012B> from "<U102C><U1012><U1039>"
+collating-element <MMV102CALT0K1012B> from "<U102B><U1012><U1039>"
+collating-element <MMV102DK1012A> from "<U102D><U1012><U103A>"
+collating-element <MMV102DK1012ADot> from "<U102D><U1012><U1037><U103A>"
+collating-element <MMV102DK1012B> from "<U102D><U1012><U1039>"
+collating-element <MMV102EK1012A> from "<U102E><U1012><U103A>"
+collating-element <MMV102EK1012ADot> from "<U102E><U1012><U1037><U103A>"
+collating-element <MMV102EK1012B> from "<U102E><U1012><U1039>"
+collating-element <MMV102FK1012A> from "<U102F><U1012><U103A>"
+collating-element <MMV102FK1012ADot> from "<U102F><U1012><U1037><U103A>"
+collating-element <MMV102FK1012B> from "<U102F><U1012><U1039>"
+collating-element <MMV1030K1012A> from "<U1030><U1012><U103A>"
+collating-element <MMV1030K1012ADot> from "<U1030><U1012><U1037><U103A>"
+collating-element <MMV1030K1012B> from "<U1030><U1012><U1039>"
+collating-element <MMV1031K1012A> from "<U1031><U1012><U103A>"
+collating-element <MMV1031K1012ADot> from "<U1031><U1012><U1037><U103A>"
+collating-element <MMV1031K1012B> from "<U1031><U1012><U1039>"
+collating-element <MMV1032K1012A> from "<U1032><U1012><U103A>"
+collating-element <MMV1032K1012ADot> from "<U1032><U1012><U1037><U103A>"
+collating-element <MMV1032K1012B> from "<U1032><U1012><U1039>"
+collating-element <MMV1031102CK1012A> from "<U1031><U102C><U1012><U103A>"
+collating-element <MMV1031102CK1012ADot> from "<U1031><U102C><U1012><U1037><U103A>"
+collating-element <MMV1031102CALT0K1012A> from "<U1031><U102B><U1012><U103A>"
+collating-element <MMV1031102CALT0K1012ADot> from "<U1031><U102B><U1012><U1037><U103A>"
+collating-element <MMV1031102CK1012B> from "<U1031><U102C><U1012><U1039>"
+collating-element <MMV1031102CALT0K1012B> from "<U1031><U102B><U1012><U1039>"
+collating-element <MMV1036K1012A> from "<U1036><U1012><U103A>"
+collating-element <MMV1036K1012ADot> from "<U1036><U1012><U1037><U103A>"
+collating-element <MMV1036K1012B> from "<U1036><U1012><U1039>"
+collating-element <MMV102D102FK1012A> from "<U102D><U102F><U1012><U103A>"
+collating-element <MMV102D102FK1012ADot> from "<U102D><U102F><U1012><U1037><U103A>"
+collating-element <MMV102D102FK1012B> from "<U102D><U102F><U1012><U1039>"
+collating-element <MMV102CK1013A> from "<U102C><U1013><U103A>"
+collating-element <MMV102CK1013ADot> from "<U102C><U1013><U1037><U103A>"
+collating-element <MMV102CALT0K1013A> from "<U102B><U1013><U103A>"
+collating-element <MMV102CALT0K1013ADot> from "<U102B><U1013><U1037><U103A>"
+collating-element <MMV102CK1013B> from "<U102C><U1013><U1039>"
+collating-element <MMV102CALT0K1013B> from "<U102B><U1013><U1039>"
+collating-element <MMV102DK1013A> from "<U102D><U1013><U103A>"
+collating-element <MMV102DK1013ADot> from "<U102D><U1013><U1037><U103A>"
+collating-element <MMV102DK1013B> from "<U102D><U1013><U1039>"
+collating-element <MMV102EK1013A> from "<U102E><U1013><U103A>"
+collating-element <MMV102EK1013ADot> from "<U102E><U1013><U1037><U103A>"
+collating-element <MMV102EK1013B> from "<U102E><U1013><U1039>"
+collating-element <MMV102FK1013A> from "<U102F><U1013><U103A>"
+collating-element <MMV102FK1013ADot> from "<U102F><U1013><U1037><U103A>"
+collating-element <MMV102FK1013B> from "<U102F><U1013><U1039>"
+collating-element <MMV1030K1013A> from "<U1030><U1013><U103A>"
+collating-element <MMV1030K1013ADot> from "<U1030><U1013><U1037><U103A>"
+collating-element <MMV1030K1013B> from "<U1030><U1013><U1039>"
+collating-element <MMV1031K1013A> from "<U1031><U1013><U103A>"
+collating-element <MMV1031K1013ADot> from "<U1031><U1013><U1037><U103A>"
+collating-element <MMV1031K1013B> from "<U1031><U1013><U1039>"
+collating-element <MMV1032K1013A> from "<U1032><U1013><U103A>"
+collating-element <MMV1032K1013ADot> from "<U1032><U1013><U1037><U103A>"
+collating-element <MMV1032K1013B> from "<U1032><U1013><U1039>"
+collating-element <MMV1031102CK1013A> from "<U1031><U102C><U1013><U103A>"
+collating-element <MMV1031102CK1013ADot> from "<U1031><U102C><U1013><U1037><U103A>"
+collating-element <MMV1031102CALT0K1013A> from "<U1031><U102B><U1013><U103A>"
+collating-element <MMV1031102CALT0K1013ADot> from "<U1031><U102B><U1013><U1037><U103A>"
+collating-element <MMV1031102CK1013B> from "<U1031><U102C><U1013><U1039>"
+collating-element <MMV1031102CALT0K1013B> from "<U1031><U102B><U1013><U1039>"
+collating-element <MMV1036K1013A> from "<U1036><U1013><U103A>"
+collating-element <MMV1036K1013ADot> from "<U1036><U1013><U1037><U103A>"
+collating-element <MMV1036K1013B> from "<U1036><U1013><U1039>"
+collating-element <MMV102D102FK1013A> from "<U102D><U102F><U1013><U103A>"
+collating-element <MMV102D102FK1013ADot> from "<U102D><U102F><U1013><U1037><U103A>"
+collating-element <MMV102D102FK1013B> from "<U102D><U102F><U1013><U1039>"
+collating-element <MMV102CK1014A> from "<U102C><U1014><U103A>"
+collating-element <MMV102CK1014ADot> from "<U102C><U1014><U1037><U103A>"
+collating-element <MMV102CALT0K1014A> from "<U102B><U1014><U103A>"
+collating-element <MMV102CALT0K1014ADot> from "<U102B><U1014><U1037><U103A>"
+collating-element <MMV102CK1014B> from "<U102C><U1014><U1039>"
+collating-element <MMV102CALT0K1014B> from "<U102B><U1014><U1039>"
+collating-element <MMV102DK1014A> from "<U102D><U1014><U103A>"
+collating-element <MMV102DK1014ADot> from "<U102D><U1014><U1037><U103A>"
+collating-element <MMV102DK1014B> from "<U102D><U1014><U1039>"
+collating-element <MMV102EK1014A> from "<U102E><U1014><U103A>"
+collating-element <MMV102EK1014ADot> from "<U102E><U1014><U1037><U103A>"
+collating-element <MMV102EK1014B> from "<U102E><U1014><U1039>"
+collating-element <MMV102FK1014A> from "<U102F><U1014><U103A>"
+collating-element <MMV102FK1014ADot> from "<U102F><U1014><U1037><U103A>"
+collating-element <MMV102FK1014B> from "<U102F><U1014><U1039>"
+collating-element <MMV1030K1014A> from "<U1030><U1014><U103A>"
+collating-element <MMV1030K1014ADot> from "<U1030><U1014><U1037><U103A>"
+collating-element <MMV1030K1014B> from "<U1030><U1014><U1039>"
+collating-element <MMV1031K1014A> from "<U1031><U1014><U103A>"
+collating-element <MMV1031K1014ADot> from "<U1031><U1014><U1037><U103A>"
+collating-element <MMV1031K1014B> from "<U1031><U1014><U1039>"
+collating-element <MMV1032K1014A> from "<U1032><U1014><U103A>"
+collating-element <MMV1032K1014ADot> from "<U1032><U1014><U1037><U103A>"
+collating-element <MMV1032K1014B> from "<U1032><U1014><U1039>"
+collating-element <MMV1031102CK1014A> from "<U1031><U102C><U1014><U103A>"
+collating-element <MMV1031102CK1014ADot> from "<U1031><U102C><U1014><U1037><U103A>"
+collating-element <MMV1031102CALT0K1014A> from "<U1031><U102B><U1014><U103A>"
+collating-element <MMV1031102CALT0K1014ADot> from "<U1031><U102B><U1014><U1037><U103A>"
+collating-element <MMV1031102CK1014B> from "<U1031><U102C><U1014><U1039>"
+collating-element <MMV1031102CALT0K1014B> from "<U1031><U102B><U1014><U1039>"
+collating-element <MMV1036K1014A> from "<U1036><U1014><U103A>"
+collating-element <MMV1036K1014ADot> from "<U1036><U1014><U1037><U103A>"
+collating-element <MMV1036K1014B> from "<U1036><U1014><U1039>"
+collating-element <MMV102D102FK1014A> from "<U102D><U102F><U1014><U103A>"
+collating-element <MMV102D102FK1014ADot> from "<U102D><U102F><U1014><U1037><U103A>"
+collating-element <MMV102D102FK1014B> from "<U102D><U102F><U1014><U1039>"
+collating-element <MMV102CK1015A> from "<U102C><U1015><U103A>"
+collating-element <MMV102CK1015ADot> from "<U102C><U1015><U1037><U103A>"
+collating-element <MMV102CALT0K1015A> from "<U102B><U1015><U103A>"
+collating-element <MMV102CALT0K1015ADot> from "<U102B><U1015><U1037><U103A>"
+collating-element <MMV102CK1015B> from "<U102C><U1015><U1039>"
+collating-element <MMV102CALT0K1015B> from "<U102B><U1015><U1039>"
+collating-element <MMV102DK1015A> from "<U102D><U1015><U103A>"
+collating-element <MMV102DK1015ADot> from "<U102D><U1015><U1037><U103A>"
+collating-element <MMV102DK1015B> from "<U102D><U1015><U1039>"
+collating-element <MMV102EK1015A> from "<U102E><U1015><U103A>"
+collating-element <MMV102EK1015ADot> from "<U102E><U1015><U1037><U103A>"
+collating-element <MMV102EK1015B> from "<U102E><U1015><U1039>"
+collating-element <MMV102FK1015A> from "<U102F><U1015><U103A>"
+collating-element <MMV102FK1015ADot> from "<U102F><U1015><U1037><U103A>"
+collating-element <MMV102FK1015B> from "<U102F><U1015><U1039>"
+collating-element <MMV1030K1015A> from "<U1030><U1015><U103A>"
+collating-element <MMV1030K1015ADot> from "<U1030><U1015><U1037><U103A>"
+collating-element <MMV1030K1015B> from "<U1030><U1015><U1039>"
+collating-element <MMV1031K1015A> from "<U1031><U1015><U103A>"
+collating-element <MMV1031K1015ADot> from "<U1031><U1015><U1037><U103A>"
+collating-element <MMV1031K1015B> from "<U1031><U1015><U1039>"
+collating-element <MMV1032K1015A> from "<U1032><U1015><U103A>"
+collating-element <MMV1032K1015ADot> from "<U1032><U1015><U1037><U103A>"
+collating-element <MMV1032K1015B> from "<U1032><U1015><U1039>"
+collating-element <MMV1031102CK1015A> from "<U1031><U102C><U1015><U103A>"
+collating-element <MMV1031102CK1015ADot> from "<U1031><U102C><U1015><U1037><U103A>"
+collating-element <MMV1031102CALT0K1015A> from "<U1031><U102B><U1015><U103A>"
+collating-element <MMV1031102CALT0K1015ADot> from "<U1031><U102B><U1015><U1037><U103A>"
+collating-element <MMV1031102CK1015B> from "<U1031><U102C><U1015><U1039>"
+collating-element <MMV1031102CALT0K1015B> from "<U1031><U102B><U1015><U1039>"
+collating-element <MMV1036K1015A> from "<U1036><U1015><U103A>"
+collating-element <MMV1036K1015ADot> from "<U1036><U1015><U1037><U103A>"
+collating-element <MMV1036K1015B> from "<U1036><U1015><U1039>"
+collating-element <MMV102D102FK1015A> from "<U102D><U102F><U1015><U103A>"
+collating-element <MMV102D102FK1015ADot> from "<U102D><U102F><U1015><U1037><U103A>"
+collating-element <MMV102D102FK1015B> from "<U102D><U102F><U1015><U1039>"
+collating-element <MMV102CK1016A> from "<U102C><U1016><U103A>"
+collating-element <MMV102CK1016ADot> from "<U102C><U1016><U1037><U103A>"
+collating-element <MMV102CALT0K1016A> from "<U102B><U1016><U103A>"
+collating-element <MMV102CALT0K1016ADot> from "<U102B><U1016><U1037><U103A>"
+collating-element <MMV102CK1016B> from "<U102C><U1016><U1039>"
+collating-element <MMV102CALT0K1016B> from "<U102B><U1016><U1039>"
+collating-element <MMV102DK1016A> from "<U102D><U1016><U103A>"
+collating-element <MMV102DK1016ADot> from "<U102D><U1016><U1037><U103A>"
+collating-element <MMV102DK1016B> from "<U102D><U1016><U1039>"
+collating-element <MMV102EK1016A> from "<U102E><U1016><U103A>"
+collating-element <MMV102EK1016ADot> from "<U102E><U1016><U1037><U103A>"
+collating-element <MMV102EK1016B> from "<U102E><U1016><U1039>"
+collating-element <MMV102FK1016A> from "<U102F><U1016><U103A>"
+collating-element <MMV102FK1016ADot> from "<U102F><U1016><U1037><U103A>"
+collating-element <MMV102FK1016B> from "<U102F><U1016><U1039>"
+collating-element <MMV1030K1016A> from "<U1030><U1016><U103A>"
+collating-element <MMV1030K1016ADot> from "<U1030><U1016><U1037><U103A>"
+collating-element <MMV1030K1016B> from "<U1030><U1016><U1039>"
+collating-element <MMV1031K1016A> from "<U1031><U1016><U103A>"
+collating-element <MMV1031K1016ADot> from "<U1031><U1016><U1037><U103A>"
+collating-element <MMV1031K1016B> from "<U1031><U1016><U1039>"
+collating-element <MMV1032K1016A> from "<U1032><U1016><U103A>"
+collating-element <MMV1032K1016ADot> from "<U1032><U1016><U1037><U103A>"
+collating-element <MMV1032K1016B> from "<U1032><U1016><U1039>"
+collating-element <MMV1031102CK1016A> from "<U1031><U102C><U1016><U103A>"
+collating-element <MMV1031102CK1016ADot> from "<U1031><U102C><U1016><U1037><U103A>"
+collating-element <MMV1031102CALT0K1016A> from "<U1031><U102B><U1016><U103A>"
+collating-element <MMV1031102CALT0K1016ADot> from "<U1031><U102B><U1016><U1037><U103A>"
+collating-element <MMV1031102CK1016B> from "<U1031><U102C><U1016><U1039>"
+collating-element <MMV1031102CALT0K1016B> from "<U1031><U102B><U1016><U1039>"
+collating-element <MMV1036K1016A> from "<U1036><U1016><U103A>"
+collating-element <MMV1036K1016ADot> from "<U1036><U1016><U1037><U103A>"
+collating-element <MMV1036K1016B> from "<U1036><U1016><U1039>"
+collating-element <MMV102D102FK1016A> from "<U102D><U102F><U1016><U103A>"
+collating-element <MMV102D102FK1016ADot> from "<U102D><U102F><U1016><U1037><U103A>"
+collating-element <MMV102D102FK1016B> from "<U102D><U102F><U1016><U1039>"
+collating-element <MMV102CK1017A> from "<U102C><U1017><U103A>"
+collating-element <MMV102CK1017ADot> from "<U102C><U1017><U1037><U103A>"
+collating-element <MMV102CALT0K1017A> from "<U102B><U1017><U103A>"
+collating-element <MMV102CALT0K1017ADot> from "<U102B><U1017><U1037><U103A>"
+collating-element <MMV102CK1017B> from "<U102C><U1017><U1039>"
+collating-element <MMV102CALT0K1017B> from "<U102B><U1017><U1039>"
+collating-element <MMV102DK1017A> from "<U102D><U1017><U103A>"
+collating-element <MMV102DK1017ADot> from "<U102D><U1017><U1037><U103A>"
+collating-element <MMV102DK1017B> from "<U102D><U1017><U1039>"
+collating-element <MMV102EK1017A> from "<U102E><U1017><U103A>"
+collating-element <MMV102EK1017ADot> from "<U102E><U1017><U1037><U103A>"
+collating-element <MMV102EK1017B> from "<U102E><U1017><U1039>"
+collating-element <MMV102FK1017A> from "<U102F><U1017><U103A>"
+collating-element <MMV102FK1017ADot> from "<U102F><U1017><U1037><U103A>"
+collating-element <MMV102FK1017B> from "<U102F><U1017><U1039>"
+collating-element <MMV1030K1017A> from "<U1030><U1017><U103A>"
+collating-element <MMV1030K1017ADot> from "<U1030><U1017><U1037><U103A>"
+collating-element <MMV1030K1017B> from "<U1030><U1017><U1039>"
+collating-element <MMV1031K1017A> from "<U1031><U1017><U103A>"
+collating-element <MMV1031K1017ADot> from "<U1031><U1017><U1037><U103A>"
+collating-element <MMV1031K1017B> from "<U1031><U1017><U1039>"
+collating-element <MMV1032K1017A> from "<U1032><U1017><U103A>"
+collating-element <MMV1032K1017ADot> from "<U1032><U1017><U1037><U103A>"
+collating-element <MMV1032K1017B> from "<U1032><U1017><U1039>"
+collating-element <MMV1031102CK1017A> from "<U1031><U102C><U1017><U103A>"
+collating-element <MMV1031102CK1017ADot> from "<U1031><U102C><U1017><U1037><U103A>"
+collating-element <MMV1031102CALT0K1017A> from "<U1031><U102B><U1017><U103A>"
+collating-element <MMV1031102CALT0K1017ADot> from "<U1031><U102B><U1017><U1037><U103A>"
+collating-element <MMV1031102CK1017B> from "<U1031><U102C><U1017><U1039>"
+collating-element <MMV1031102CALT0K1017B> from "<U1031><U102B><U1017><U1039>"
+collating-element <MMV1036K1017A> from "<U1036><U1017><U103A>"
+collating-element <MMV1036K1017ADot> from "<U1036><U1017><U1037><U103A>"
+collating-element <MMV1036K1017B> from "<U1036><U1017><U1039>"
+collating-element <MMV102D102FK1017A> from "<U102D><U102F><U1017><U103A>"
+collating-element <MMV102D102FK1017ADot> from "<U102D><U102F><U1017><U1037><U103A>"
+collating-element <MMV102D102FK1017B> from "<U102D><U102F><U1017><U1039>"
+collating-element <MMV102CK1018A> from "<U102C><U1018><U103A>"
+collating-element <MMV102CK1018ADot> from "<U102C><U1018><U1037><U103A>"
+collating-element <MMV102CALT0K1018A> from "<U102B><U1018><U103A>"
+collating-element <MMV102CALT0K1018ADot> from "<U102B><U1018><U1037><U103A>"
+collating-element <MMV102CK1018B> from "<U102C><U1018><U1039>"
+collating-element <MMV102CALT0K1018B> from "<U102B><U1018><U1039>"
+collating-element <MMV102DK1018A> from "<U102D><U1018><U103A>"
+collating-element <MMV102DK1018ADot> from "<U102D><U1018><U1037><U103A>"
+collating-element <MMV102DK1018B> from "<U102D><U1018><U1039>"
+collating-element <MMV102EK1018A> from "<U102E><U1018><U103A>"
+collating-element <MMV102EK1018ADot> from "<U102E><U1018><U1037><U103A>"
+collating-element <MMV102EK1018B> from "<U102E><U1018><U1039>"
+collating-element <MMV102FK1018A> from "<U102F><U1018><U103A>"
+collating-element <MMV102FK1018ADot> from "<U102F><U1018><U1037><U103A>"
+collating-element <MMV102FK1018B> from "<U102F><U1018><U1039>"
+collating-element <MMV1030K1018A> from "<U1030><U1018><U103A>"
+collating-element <MMV1030K1018ADot> from "<U1030><U1018><U1037><U103A>"
+collating-element <MMV1030K1018B> from "<U1030><U1018><U1039>"
+collating-element <MMV1031K1018A> from "<U1031><U1018><U103A>"
+collating-element <MMV1031K1018ADot> from "<U1031><U1018><U1037><U103A>"
+collating-element <MMV1031K1018B> from "<U1031><U1018><U1039>"
+collating-element <MMV1032K1018A> from "<U1032><U1018><U103A>"
+collating-element <MMV1032K1018ADot> from "<U1032><U1018><U1037><U103A>"
+collating-element <MMV1032K1018B> from "<U1032><U1018><U1039>"
+collating-element <MMV1031102CK1018A> from "<U1031><U102C><U1018><U103A>"
+collating-element <MMV1031102CK1018ADot> from "<U1031><U102C><U1018><U1037><U103A>"
+collating-element <MMV1031102CALT0K1018A> from "<U1031><U102B><U1018><U103A>"
+collating-element <MMV1031102CALT0K1018ADot> from "<U1031><U102B><U1018><U1037><U103A>"
+collating-element <MMV1031102CK1018B> from "<U1031><U102C><U1018><U1039>"
+collating-element <MMV1031102CALT0K1018B> from "<U1031><U102B><U1018><U1039>"
+collating-element <MMV1036K1018A> from "<U1036><U1018><U103A>"
+collating-element <MMV1036K1018ADot> from "<U1036><U1018><U1037><U103A>"
+collating-element <MMV1036K1018B> from "<U1036><U1018><U1039>"
+collating-element <MMV102D102FK1018A> from "<U102D><U102F><U1018><U103A>"
+collating-element <MMV102D102FK1018ADot> from "<U102D><U102F><U1018><U1037><U103A>"
+collating-element <MMV102D102FK1018B> from "<U102D><U102F><U1018><U1039>"
+collating-element <MMV102CK1019A> from "<U102C><U1019><U103A>"
+collating-element <MMV102CK1019ADot> from "<U102C><U1019><U1037><U103A>"
+collating-element <MMV102CALT0K1019A> from "<U102B><U1019><U103A>"
+collating-element <MMV102CALT0K1019ADot> from "<U102B><U1019><U1037><U103A>"
+collating-element <MMV102CK1019B> from "<U102C><U1019><U1039>"
+collating-element <MMV102CALT0K1019B> from "<U102B><U1019><U1039>"
+collating-element <MMV102DK1019A> from "<U102D><U1019><U103A>"
+collating-element <MMV102DK1019ADot> from "<U102D><U1019><U1037><U103A>"
+collating-element <MMV102DK10191037A> from "<U102D><U1019><U1037><U103A>"
+collating-element <MMV102DK10191037A2> from "<U102D><U1019><U103A><U1037>"
+collating-element <MMV102DK10191038A> from "<U102D><U1019><U103A><U1038>"
+collating-element <MMV102DK1019B> from "<U102D><U1019><U1039>"
+collating-element <MMV102EK1019A> from "<U102E><U1019><U103A>"
+collating-element <MMV102EK1019ADot> from "<U102E><U1019><U1037><U103A>"
+collating-element <MMV102EK1019B> from "<U102E><U1019><U1039>"
+collating-element <MMV102FK1019A> from "<U102F><U1019><U103A>"
+collating-element <MMV102FK1019ADot> from "<U102F><U1019><U1037><U103A>"
+collating-element <MMV102FK10191037A> from "<U102F><U1019><U1037><U103A>"
+collating-element <MMV102FK10191037A2> from "<U102F><U1019><U103A><U1037>"
+collating-element <MMV102FK10191038A> from "<U102F><U1019><U103A><U1038>"
+collating-element <MMV102FK1019B> from "<U102F><U1019><U1039>"
+collating-element <MMV1030K1019A> from "<U1030><U1019><U103A>"
+collating-element <MMV1030K1019ADot> from "<U1030><U1019><U1037><U103A>"
+collating-element <MMV1030K1019B> from "<U1030><U1019><U1039>"
+collating-element <MMV1031K1019A> from "<U1031><U1019><U103A>"
+collating-element <MMV1031K1019ADot> from "<U1031><U1019><U1037><U103A>"
+collating-element <MMV1031K1019B> from "<U1031><U1019><U1039>"
+collating-element <MMV1032K1019A> from "<U1032><U1019><U103A>"
+collating-element <MMV1032K1019ADot> from "<U1032><U1019><U1037><U103A>"
+collating-element <MMV1032K1019B> from "<U1032><U1019><U1039>"
+collating-element <MMV1031102CK1019A> from "<U1031><U102C><U1019><U103A>"
+collating-element <MMV1031102CK1019ADot> from "<U1031><U102C><U1019><U1037><U103A>"
+collating-element <MMV1031102CALT0K1019A> from "<U1031><U102B><U1019><U103A>"
+collating-element <MMV1031102CALT0K1019ADot> from "<U1031><U102B><U1019><U1037><U103A>"
+collating-element <MMV1031102CK1019B> from "<U1031><U102C><U1019><U1039>"
+collating-element <MMV1031102CALT0K1019B> from "<U1031><U102B><U1019><U1039>"
+collating-element <MMV1036K1019A> from "<U1036><U1019><U103A>"
+collating-element <MMV1036K1019ADot> from "<U1036><U1019><U1037><U103A>"
+collating-element <MMV1036K1019B> from "<U1036><U1019><U1039>"
+collating-element <MMV102D102FK1019A> from "<U102D><U102F><U1019><U103A>"
+collating-element <MMV102D102FK1019ADot> from "<U102D><U102F><U1019><U1037><U103A>"
+collating-element <MMV102D102FK1019B> from "<U102D><U102F><U1019><U1039>"
+collating-element <MMV102CK101AA> from "<U102C><U101A><U103A>"
+collating-element <MMV102CK101AADot> from "<U102C><U101A><U1037><U103A>"
+collating-element <MMV102CALT0K101AA> from "<U102B><U101A><U103A>"
+collating-element <MMV102CALT0K101AADot> from "<U102B><U101A><U1037><U103A>"
+collating-element <MMV102CK101AB> from "<U102C><U101A><U1039>"
+collating-element <MMV102CALT0K101AB> from "<U102B><U101A><U1039>"
+collating-element <MMV102DK101AA> from "<U102D><U101A><U103A>"
+collating-element <MMV102DK101AADot> from "<U102D><U101A><U1037><U103A>"
+collating-element <MMV102DK101AB> from "<U102D><U101A><U1039>"
+collating-element <MMV102EK101AA> from "<U102E><U101A><U103A>"
+collating-element <MMV102EK101AADot> from "<U102E><U101A><U1037><U103A>"
+collating-element <MMV102EK101AB> from "<U102E><U101A><U1039>"
+collating-element <MMV102FK101AA> from "<U102F><U101A><U103A>"
+collating-element <MMV102FK101AADot> from "<U102F><U101A><U1037><U103A>"
+collating-element <MMV102FK101AB> from "<U102F><U101A><U1039>"
+collating-element <MMV1030K101AA> from "<U1030><U101A><U103A>"
+collating-element <MMV1030K101AADot> from "<U1030><U101A><U1037><U103A>"
+collating-element <MMV1030K101AB> from "<U1030><U101A><U1039>"
+collating-element <MMV1031K101AA> from "<U1031><U101A><U103A>"
+collating-element <MMV1031K101AADot> from "<U1031><U101A><U1037><U103A>"
+collating-element <MMV1031K101AB> from "<U1031><U101A><U1039>"
+collating-element <MMV1032K101AA> from "<U1032><U101A><U103A>"
+collating-element <MMV1032K101AADot> from "<U1032><U101A><U1037><U103A>"
+collating-element <MMV1032K101AB> from "<U1032><U101A><U1039>"
+collating-element <MMV1031102CK101AA> from "<U1031><U102C><U101A><U103A>"
+collating-element <MMV1031102CK101AADot> from "<U1031><U102C><U101A><U1037><U103A>"
+collating-element <MMV1031102CALT0K101AA> from "<U1031><U102B><U101A><U103A>"
+collating-element <MMV1031102CALT0K101AADot> from "<U1031><U102B><U101A><U1037><U103A>"
+collating-element <MMV1031102CK101AB> from "<U1031><U102C><U101A><U1039>"
+collating-element <MMV1031102CALT0K101AB> from "<U1031><U102B><U101A><U1039>"
+collating-element <MMV1036K101AA> from "<U1036><U101A><U103A>"
+collating-element <MMV1036K101AADot> from "<U1036><U101A><U1037><U103A>"
+collating-element <MMV1036K101AB> from "<U1036><U101A><U1039>"
+collating-element <MMV102D102FK101AA> from "<U102D><U102F><U101A><U103A>"
+collating-element <MMV102D102FK101AADot> from "<U102D><U102F><U101A><U1037><U103A>"
+collating-element <MMV102D102FK101AB> from "<U102D><U102F><U101A><U1039>"
+collating-element <MMV102CK101BA> from "<U102C><U101B><U103A>"
+collating-element <MMV102CK101BADot> from "<U102C><U101B><U1037><U103A>"
+collating-element <MMV102CALT0K101BA> from "<U102B><U101B><U103A>"
+collating-element <MMV102CALT0K101BADot> from "<U102B><U101B><U1037><U103A>"
+collating-element <MMV102CK101BB> from "<U102C><U101B><U1039>"
+collating-element <MMV102CALT0K101BB> from "<U102B><U101B><U1039>"
+collating-element <MMV102DK101BA> from "<U102D><U101B><U103A>"
+collating-element <MMV102DK101BADot> from "<U102D><U101B><U1037><U103A>"
+collating-element <MMV102DK101BB> from "<U102D><U101B><U1039>"
+collating-element <MMV102EK101BA> from "<U102E><U101B><U103A>"
+collating-element <MMV102EK101BADot> from "<U102E><U101B><U1037><U103A>"
+collating-element <MMV102EK101BB> from "<U102E><U101B><U1039>"
+collating-element <MMV102FK101BA> from "<U102F><U101B><U103A>"
+collating-element <MMV102FK101BADot> from "<U102F><U101B><U1037><U103A>"
+collating-element <MMV102FK101BB> from "<U102F><U101B><U1039>"
+collating-element <MMV1030K101BA> from "<U1030><U101B><U103A>"
+collating-element <MMV1030K101BADot> from "<U1030><U101B><U1037><U103A>"
+collating-element <MMV1030K101BB> from "<U1030><U101B><U1039>"
+collating-element <MMV1031K101BA> from "<U1031><U101B><U103A>"
+collating-element <MMV1031K101BADot> from "<U1031><U101B><U1037><U103A>"
+collating-element <MMV1031K101BB> from "<U1031><U101B><U1039>"
+collating-element <MMV1032K101BA> from "<U1032><U101B><U103A>"
+collating-element <MMV1032K101BADot> from "<U1032><U101B><U1037><U103A>"
+collating-element <MMV1032K101BB> from "<U1032><U101B><U1039>"
+collating-element <MMV1031102CK101BA> from "<U1031><U102C><U101B><U103A>"
+collating-element <MMV1031102CK101BADot> from "<U1031><U102C><U101B><U1037><U103A>"
+collating-element <MMV1031102CALT0K101BA> from "<U1031><U102B><U101B><U103A>"
+collating-element <MMV1031102CALT0K101BADot> from "<U1031><U102B><U101B><U1037><U103A>"
+collating-element <MMV1031102CK101BB> from "<U1031><U102C><U101B><U1039>"
+collating-element <MMV1031102CALT0K101BB> from "<U1031><U102B><U101B><U1039>"
+collating-element <MMV1036K101BA> from "<U1036><U101B><U103A>"
+collating-element <MMV1036K101BADot> from "<U1036><U101B><U1037><U103A>"
+collating-element <MMV1036K101BB> from "<U1036><U101B><U1039>"
+collating-element <MMV102D102FK101BA> from "<U102D><U102F><U101B><U103A>"
+collating-element <MMV102D102FK101BADot> from "<U102D><U102F><U101B><U1037><U103A>"
+collating-element <MMV102D102FK101BB> from "<U102D><U102F><U101B><U1039>"
+collating-element <MMV102CK101CA> from "<U102C><U101C><U103A>"
+collating-element <MMV102CK101CADot> from "<U102C><U101C><U1037><U103A>"
+collating-element <MMV102CALT0K101CA> from "<U102B><U101C><U103A>"
+collating-element <MMV102CALT0K101CADot> from "<U102B><U101C><U1037><U103A>"
+collating-element <MMV102CK101CB> from "<U102C><U101C><U1039>"
+collating-element <MMV102CALT0K101CB> from "<U102B><U101C><U1039>"
+collating-element <MMV102DK101CA> from "<U102D><U101C><U103A>"
+collating-element <MMV102DK101CADot> from "<U102D><U101C><U1037><U103A>"
+collating-element <MMV102DK101CB> from "<U102D><U101C><U1039>"
+collating-element <MMV102EK101CA> from "<U102E><U101C><U103A>"
+collating-element <MMV102EK101CADot> from "<U102E><U101C><U1037><U103A>"
+collating-element <MMV102EK101CB> from "<U102E><U101C><U1039>"
+collating-element <MMV102FK101CA> from "<U102F><U101C><U103A>"
+collating-element <MMV102FK101CADot> from "<U102F><U101C><U1037><U103A>"
+collating-element <MMV102FK101CB> from "<U102F><U101C><U1039>"
+collating-element <MMV1030K101CA> from "<U1030><U101C><U103A>"
+collating-element <MMV1030K101CADot> from "<U1030><U101C><U1037><U103A>"
+collating-element <MMV1030K101CB> from "<U1030><U101C><U1039>"
+collating-element <MMV1031K101CA> from "<U1031><U101C><U103A>"
+collating-element <MMV1031K101CADot> from "<U1031><U101C><U1037><U103A>"
+collating-element <MMV1031K101CB> from "<U1031><U101C><U1039>"
+collating-element <MMV1032K101CA> from "<U1032><U101C><U103A>"
+collating-element <MMV1032K101CADot> from "<U1032><U101C><U1037><U103A>"
+collating-element <MMV1032K101CB> from "<U1032><U101C><U1039>"
+collating-element <MMV1031102CK101CA> from "<U1031><U102C><U101C><U103A>"
+collating-element <MMV1031102CK101CADot> from "<U1031><U102C><U101C><U1037><U103A>"
+collating-element <MMV1031102CALT0K101CA> from "<U1031><U102B><U101C><U103A>"
+collating-element <MMV1031102CALT0K101CADot> from "<U1031><U102B><U101C><U1037><U103A>"
+collating-element <MMV1031102CK101CB> from "<U1031><U102C><U101C><U1039>"
+collating-element <MMV1031102CALT0K101CB> from "<U1031><U102B><U101C><U1039>"
+collating-element <MMV1036K101CA> from "<U1036><U101C><U103A>"
+collating-element <MMV1036K101CADot> from "<U1036><U101C><U1037><U103A>"
+collating-element <MMV1036K101CB> from "<U1036><U101C><U1039>"
+collating-element <MMV102D102FK101CA> from "<U102D><U102F><U101C><U103A>"
+collating-element <MMV102D102FK101CADot> from "<U102D><U102F><U101C><U1037><U103A>"
+collating-element <MMV102D102FK101CB> from "<U102D><U102F><U101C><U1039>"
+collating-element <MMV102CK101DA> from "<U102C><U101D><U103A>"
+collating-element <MMV102CK101DADot> from "<U102C><U101D><U1037><U103A>"
+collating-element <MMV102CALT0K101DA> from "<U102B><U101D><U103A>"
+collating-element <MMV102CALT0K101DADot> from "<U102B><U101D><U1037><U103A>"
+collating-element <MMV102CK101DB> from "<U102C><U101D><U1039>"
+collating-element <MMV102CALT0K101DB> from "<U102B><U101D><U1039>"
+collating-element <MMV102DK101DA> from "<U102D><U101D><U103A>"
+collating-element <MMV102DK101DADot> from "<U102D><U101D><U1037><U103A>"
+collating-element <MMV102DK101DB> from "<U102D><U101D><U1039>"
+collating-element <MMV102EK101DA> from "<U102E><U101D><U103A>"
+collating-element <MMV102EK101DADot> from "<U102E><U101D><U1037><U103A>"
+collating-element <MMV102EK101DB> from "<U102E><U101D><U1039>"
+collating-element <MMV102FK101DA> from "<U102F><U101D><U103A>"
+collating-element <MMV102FK101DADot> from "<U102F><U101D><U1037><U103A>"
+collating-element <MMV102FK101DB> from "<U102F><U101D><U1039>"
+collating-element <MMV1030K101DA> from "<U1030><U101D><U103A>"
+collating-element <MMV1030K101DADot> from "<U1030><U101D><U1037><U103A>"
+collating-element <MMV1030K101DB> from "<U1030><U101D><U1039>"
+collating-element <MMV1031K101DA> from "<U1031><U101D><U103A>"
+collating-element <MMV1031K101DADot> from "<U1031><U101D><U1037><U103A>"
+collating-element <MMV1031K101DB> from "<U1031><U101D><U1039>"
+collating-element <MMV1032K101DA> from "<U1032><U101D><U103A>"
+collating-element <MMV1032K101DADot> from "<U1032><U101D><U1037><U103A>"
+collating-element <MMV1032K101DB> from "<U1032><U101D><U1039>"
+collating-element <MMV1031102CK101DA> from "<U1031><U102C><U101D><U103A>"
+collating-element <MMV1031102CK101DADot> from "<U1031><U102C><U101D><U1037><U103A>"
+collating-element <MMV1031102CALT0K101DA> from "<U1031><U102B><U101D><U103A>"
+collating-element <MMV1031102CALT0K101DADot> from "<U1031><U102B><U101D><U1037><U103A>"
+collating-element <MMV1031102CK101DB> from "<U1031><U102C><U101D><U1039>"
+collating-element <MMV1031102CALT0K101DB> from "<U1031><U102B><U101D><U1039>"
+collating-element <MMV1036K101DA> from "<U1036><U101D><U103A>"
+collating-element <MMV1036K101DADot> from "<U1036><U101D><U1037><U103A>"
+collating-element <MMV1036K101DB> from "<U1036><U101D><U1039>"
+collating-element <MMV102D102FK101DA> from "<U102D><U102F><U101D><U103A>"
+collating-element <MMV102D102FK101DADot> from "<U102D><U102F><U101D><U1037><U103A>"
+collating-element <MMV102D102FK101DB> from "<U102D><U102F><U101D><U1039>"
+collating-element <MMV102CK101EA> from "<U102C><U101E><U103A>"
+collating-element <MMV102CK101EADot> from "<U102C><U101E><U1037><U103A>"
+collating-element <MMV102CALT0K101EA> from "<U102B><U101E><U103A>"
+collating-element <MMV102CALT0K101EADot> from "<U102B><U101E><U1037><U103A>"
+collating-element <MMV102CK101EB> from "<U102C><U101E><U1039>"
+collating-element <MMV102CALT0K101EB> from "<U102B><U101E><U1039>"
+collating-element <MMV102CK101EC> from "<U102C><U103F>"
+collating-element <MMV102DK101EA> from "<U102D><U101E><U103A>"
+collating-element <MMV102DK101EADot> from "<U102D><U101E><U1037><U103A>"
+collating-element <MMV102DK101EB> from "<U102D><U101E><U1039>"
+collating-element <MMV102DK101EC> from "<U102D><U103F>"
+collating-element <MMV102EK101EA> from "<U102E><U101E><U103A>"
+collating-element <MMV102EK101EADot> from "<U102E><U101E><U1037><U103A>"
+collating-element <MMV102EK101EB> from "<U102E><U101E><U1039>"
+collating-element <MMV102EK101EC> from "<U102E><U103F>"
+collating-element <MMV102FK101EA> from "<U102F><U101E><U103A>"
+collating-element <MMV102FK101EADot> from "<U102F><U101E><U1037><U103A>"
+collating-element <MMV102FK101EB> from "<U102F><U101E><U1039>"
+collating-element <MMV102FK101EC> from "<U102F><U103F>"
+collating-element <MMV1030K101EA> from "<U1030><U101E><U103A>"
+collating-element <MMV1030K101EADot> from "<U1030><U101E><U1037><U103A>"
+collating-element <MMV1030K101EB> from "<U1030><U101E><U1039>"
+collating-element <MMV1030K101EC> from "<U1030><U103F>"
+collating-element <MMV1031K101EA> from "<U1031><U101E><U103A>"
+collating-element <MMV1031K101EADot> from "<U1031><U101E><U1037><U103A>"
+collating-element <MMV1031K101EB> from "<U1031><U101E><U1039>"
+collating-element <MMV1031K101EC> from "<U1031><U103F>"
+collating-element <MMV1032K101EA> from "<U1032><U101E><U103A>"
+collating-element <MMV1032K101EADot> from "<U1032><U101E><U1037><U103A>"
+collating-element <MMV1032K101EB> from "<U1032><U101E><U1039>"
+collating-element <MMV1032K101EC> from "<U1032><U103F>"
+collating-element <MMV1031102CK101EA> from "<U1031><U102C><U101E><U103A>"
+collating-element <MMV1031102CK101EADot> from "<U1031><U102C><U101E><U1037><U103A>"
+collating-element <MMV1031102CALT0K101EA> from "<U1031><U102B><U101E><U103A>"
+collating-element <MMV1031102CALT0K101EADot> from "<U1031><U102B><U101E><U1037><U103A>"
+collating-element <MMV1031102CK101EB> from "<U1031><U102C><U101E><U1039>"
+collating-element <MMV1031102CALT0K101EB> from "<U1031><U102B><U101E><U1039>"
+collating-element <MMV1031102CK101EC> from "<U1031><U102C><U103F>"
+collating-element <MMV1036K101EA> from "<U1036><U101E><U103A>"
+collating-element <MMV1036K101EADot> from "<U1036><U101E><U1037><U103A>"
+collating-element <MMV1036K101EB> from "<U1036><U101E><U1039>"
+collating-element <MMV1036K101EC> from "<U1036><U103F>"
+collating-element <MMV102D102FK101EA> from "<U102D><U102F><U101E><U103A>"
+collating-element <MMV102D102FK101EADot> from "<U102D><U102F><U101E><U1037><U103A>"
+collating-element <MMV102D102FK101EB> from "<U102D><U102F><U101E><U1039>"
+collating-element <MMV102D102FK101EC> from "<U102D><U102F><U103F>"
+collating-element <MMV102CK101FA> from "<U102C><U101F><U103A>"
+collating-element <MMV102CK101FADot> from "<U102C><U101F><U1037><U103A>"
+collating-element <MMV102CALT0K101FA> from "<U102B><U101F><U103A>"
+collating-element <MMV102CALT0K101FADot> from "<U102B><U101F><U1037><U103A>"
+collating-element <MMV102CK101FB> from "<U102C><U101F><U1039>"
+collating-element <MMV102CALT0K101FB> from "<U102B><U101F><U1039>"
+collating-element <MMV102DK101FA> from "<U102D><U101F><U103A>"
+collating-element <MMV102DK101FADot> from "<U102D><U101F><U1037><U103A>"
+collating-element <MMV102DK101FB> from "<U102D><U101F><U1039>"
+collating-element <MMV102EK101FA> from "<U102E><U101F><U103A>"
+collating-element <MMV102EK101FADot> from "<U102E><U101F><U1037><U103A>"
+collating-element <MMV102EK101FB> from "<U102E><U101F><U1039>"
+collating-element <MMV102FK101FA> from "<U102F><U101F><U103A>"
+collating-element <MMV102FK101FADot> from "<U102F><U101F><U1037><U103A>"
+collating-element <MMV102FK101FB> from "<U102F><U101F><U1039>"
+collating-element <MMV1030K101FA> from "<U1030><U101F><U103A>"
+collating-element <MMV1030K101FADot> from "<U1030><U101F><U1037><U103A>"
+collating-element <MMV1030K101FB> from "<U1030><U101F><U1039>"
+collating-element <MMV1031K101FA> from "<U1031><U101F><U103A>"
+collating-element <MMV1031K101FADot> from "<U1031><U101F><U1037><U103A>"
+collating-element <MMV1031K101FB> from "<U1031><U101F><U1039>"
+collating-element <MMV1032K101FA> from "<U1032><U101F><U103A>"
+collating-element <MMV1032K101FADot> from "<U1032><U101F><U1037><U103A>"
+collating-element <MMV1032K101FB> from "<U1032><U101F><U1039>"
+collating-element <MMV1031102CK101FA> from "<U1031><U102C><U101F><U103A>"
+collating-element <MMV1031102CK101FADot> from "<U1031><U102C><U101F><U1037><U103A>"
+collating-element <MMV1031102CALT0K101FA> from "<U1031><U102B><U101F><U103A>"
+collating-element <MMV1031102CALT0K101FADot> from "<U1031><U102B><U101F><U1037><U103A>"
+collating-element <MMV1031102CK101FB> from "<U1031><U102C><U101F><U1039>"
+collating-element <MMV1031102CALT0K101FB> from "<U1031><U102B><U101F><U1039>"
+collating-element <MMV1036K101FA> from "<U1036><U101F><U103A>"
+collating-element <MMV1036K101FADot> from "<U1036><U101F><U1037><U103A>"
+collating-element <MMV1036K101FB> from "<U1036><U101F><U1039>"
+collating-element <MMV102D102FK101FA> from "<U102D><U102F><U101F><U103A>"
+collating-element <MMV102D102FK101FADot> from "<U102D><U102F><U101F><U1037><U103A>"
+collating-element <MMV102D102FK101FB> from "<U102D><U102F><U101F><U1039>"
+collating-element <MMV102CK1020A> from "<U102C><U1020><U103A>"
+collating-element <MMV102CK1020ADot> from "<U102C><U1020><U1037><U103A>"
+collating-element <MMV102CALT0K1020A> from "<U102B><U1020><U103A>"
+collating-element <MMV102CALT0K1020ADot> from "<U102B><U1020><U1037><U103A>"
+collating-element <MMV102CK1020B> from "<U102C><U1020><U1039>"
+collating-element <MMV102CALT0K1020B> from "<U102B><U1020><U1039>"
+collating-element <MMV102DK1020A> from "<U102D><U1020><U103A>"
+collating-element <MMV102DK1020ADot> from "<U102D><U1020><U1037><U103A>"
+collating-element <MMV102DK1020B> from "<U102D><U1020><U1039>"
+collating-element <MMV102EK1020A> from "<U102E><U1020><U103A>"
+collating-element <MMV102EK1020ADot> from "<U102E><U1020><U1037><U103A>"
+collating-element <MMV102EK1020B> from "<U102E><U1020><U1039>"
+collating-element <MMV102FK1020A> from "<U102F><U1020><U103A>"
+collating-element <MMV102FK1020ADot> from "<U102F><U1020><U1037><U103A>"
+collating-element <MMV102FK1020B> from "<U102F><U1020><U1039>"
+collating-element <MMV1030K1020A> from "<U1030><U1020><U103A>"
+collating-element <MMV1030K1020ADot> from "<U1030><U1020><U1037><U103A>"
+collating-element <MMV1030K1020B> from "<U1030><U1020><U1039>"
+collating-element <MMV1031K1020A> from "<U1031><U1020><U103A>"
+collating-element <MMV1031K1020ADot> from "<U1031><U1020><U1037><U103A>"
+collating-element <MMV1031K1020B> from "<U1031><U1020><U1039>"
+collating-element <MMV1032K1020A> from "<U1032><U1020><U103A>"
+collating-element <MMV1032K1020ADot> from "<U1032><U1020><U1037><U103A>"
+collating-element <MMV1032K1020B> from "<U1032><U1020><U1039>"
+collating-element <MMV1031102CK1020A> from "<U1031><U102C><U1020><U103A>"
+collating-element <MMV1031102CK1020ADot> from "<U1031><U102C><U1020><U1037><U103A>"
+collating-element <MMV1031102CALT0K1020A> from "<U1031><U102B><U1020><U103A>"
+collating-element <MMV1031102CALT0K1020ADot> from "<U1031><U102B><U1020><U1037><U103A>"
+collating-element <MMV1031102CK1020B> from "<U1031><U102C><U1020><U1039>"
+collating-element <MMV1031102CALT0K1020B> from "<U1031><U102B><U1020><U1039>"
+collating-element <MMV1036K1020A> from "<U1036><U1020><U103A>"
+collating-element <MMV1036K1020ADot> from "<U1036><U1020><U1037><U103A>"
+collating-element <MMV1036K1020B> from "<U1036><U1020><U1039>"
+collating-element <MMV102D102FK1020A> from "<U102D><U102F><U1020><U103A>"
+collating-element <MMV102D102FK1020ADot> from "<U102D><U102F><U1020><U1037><U103A>"
+collating-element <MMV102D102FK1020B> from "<U102D><U102F><U1020><U1039>"
+collating-element <MMV102DK1019C> from "<U102D><U1036>"
+collating-element <MMV102DK10191037C> from "<U102D><U1036><U1037>"
+collating-element <MMV102DK10191038C> from "<U102D><U1036><U1038>"
+collating-element <MMV102FK1019C> from "<U102F><U1036>"
+collating-element <MMV102FK10191037C> from "<U102F><U1036><U1037>"
+collating-element <MMV102FK10191038C> from "<U102F><U1036><U1038>"
+collating-element <MMK1000A> from "<U1000><U1039>"
+collating-element <MMK1000B> from "<U1000><U103A>"
+collating-element <MMK1000BDot> from "<U1000><U1037><U103A>"
+collating-element <MMK1001A> from "<U1001><U1039>"
+collating-element <MMK1001B> from "<U1001><U103A>"
+collating-element <MMK1001BDot> from "<U1001><U1037><U103A>"
+collating-element <MMK1002A> from "<U1002><U1039>"
+collating-element <MMK1002B> from "<U1002><U103A>"
+collating-element <MMK1002BDot> from "<U1002><U1037><U103A>"
+collating-element <MMK1003A> from "<U1003><U1039>"
+collating-element <MMK1003B> from "<U1003><U103A>"
+collating-element <MMK1003BDot> from "<U1003><U1037><U103A>"
+collating-element <MMK1004A> from "<U1004><U1039>"
+collating-element <MMK1004B> from "<U1004><U103A>"
+collating-element <MMK1004BDot> from "<U1004><U1037><U103A>"
+collating-element <MMK1005A> from "<U1005><U1039>"
+collating-element <MMK1005B> from "<U1005><U103A>"
+collating-element <MMK1005BDot> from "<U1005><U1037><U103A>"
+collating-element <MMK1006A> from "<U1006><U1039>"
+collating-element <MMK1006B> from "<U1006><U103A>"
+collating-element <MMK1006BDot> from "<U1006><U1037><U103A>"
+collating-element <MMK1007A> from "<U1007><U1039>"
+collating-element <MMK1007B> from "<U1007><U103A>"
+collating-element <MMK1007BDot> from "<U1007><U1037><U103A>"
+collating-element <MMK1009A> from "<U1009><U1039>"
+collating-element <MMK1009B> from "<U1009><U103A>"
+collating-element <MMK1009BDot> from "<U1009><U1037><U103A>"
+collating-element <MMK100AA> from "<U100A><U1039>"
+collating-element <MMK100AB> from "<U100A><U103A>"
+collating-element <MMK100ABDot> from "<U100A><U1037><U103A>"
+collating-element <MMK100BA> from "<U100B><U1039>"
+collating-element <MMK100BB> from "<U100B><U103A>"
+collating-element <MMK100BBDot> from "<U100B><U1037><U103A>"
+collating-element <MMK100CA> from "<U100C><U1039>"
+collating-element <MMK100CB> from "<U100C><U103A>"
+collating-element <MMK100CBDot> from "<U100C><U1037><U103A>"
+collating-element <MMK100DA> from "<U100D><U1039>"
+collating-element <MMK100DB> from "<U100D><U103A>"
+collating-element <MMK100DBDot> from "<U100D><U1037><U103A>"
+collating-element <MMK100EA> from "<U100E><U1039>"
+collating-element <MMK100EB> from "<U100E><U103A>"
+collating-element <MMK100EBDot> from "<U100E><U1037><U103A>"
+collating-element <MMK100FA> from "<U100F><U1039>"
+collating-element <MMK100FB> from "<U100F><U103A>"
+collating-element <MMK100FBDot> from "<U100F><U1037><U103A>"
+collating-element <MMK1010A> from "<U1010><U1039>"
+collating-element <MMK1010B> from "<U1010><U103A>"
+collating-element <MMK1010BDot> from "<U1010><U1037><U103A>"
+collating-element <MMK1011A> from "<U1011><U1039>"
+collating-element <MMK1011B> from "<U1011><U103A>"
+collating-element <MMK1011BDot> from "<U1011><U1037><U103A>"
+collating-element <MMK1012A> from "<U1012><U1039>"
+collating-element <MMK1012B> from "<U1012><U103A>"
+collating-element <MMK1012BDot> from "<U1012><U1037><U103A>"
+collating-element <MMK1013A> from "<U1013><U1039>"
+collating-element <MMK1013B> from "<U1013><U103A>"
+collating-element <MMK1013BDot> from "<U1013><U1037><U103A>"
+collating-element <MMK1014A> from "<U1014><U1039>"
+collating-element <MMK1014B> from "<U1014><U103A>"
+collating-element <MMK1014BDot> from "<U1014><U1037><U103A>"
+collating-element <MMK1015A> from "<U1015><U1039>"
+collating-element <MMK1015B> from "<U1015><U103A>"
+collating-element <MMK1015BDot> from "<U1015><U1037><U103A>"
+collating-element <MMK1016A> from "<U1016><U1039>"
+collating-element <MMK1016B> from "<U1016><U103A>"
+collating-element <MMK1016BDot> from "<U1016><U1037><U103A>"
+collating-element <MMK1017A> from "<U1017><U1039>"
+collating-element <MMK1017B> from "<U1017><U103A>"
+collating-element <MMK1017BDot> from "<U1017><U1037><U103A>"
+collating-element <MMK1018A> from "<U1018><U1039>"
+collating-element <MMK1018B> from "<U1018><U103A>"
+collating-element <MMK1018BDot> from "<U1018><U1037><U103A>"
+collating-element <MMK1019A> from "<U1019><U1039>"
+collating-element <MMK1019B> from "<U1019><U103A>"
+collating-element <MMK1019BDot> from "<U1019><U1037><U103A>"
+collating-element <MMK101AA> from "<U101A><U1039>"
+collating-element <MMK101AB> from "<U101A><U103A>"
+collating-element <MMK101ABDot> from "<U101A><U1037><U103A>"
+collating-element <MMK101BA> from "<U101B><U1039>"
+collating-element <MMK101BB> from "<U101B><U103A>"
+collating-element <MMK101BBDot> from "<U101B><U1037><U103A>"
+collating-element <MMK101CA> from "<U101C><U1039>"
+collating-element <MMK101CB> from "<U101C><U103A>"
+collating-element <MMK101CBDot> from "<U101C><U1037><U103A>"
+collating-element <MMK101DA> from "<U101D><U1039>"
+collating-element <MMK101DB> from "<U101D><U103A>"
+collating-element <MMK101DBDot> from "<U101D><U1037><U103A>"
+collating-element <MMK101EA> from "<U101E><U1039>"
+collating-element <MMK101EB> from "<U101E><U103A>"
+collating-element <MMK101EBDot> from "<U101E><U1037><U103A>"
+collating-element <MMK101FA> from "<U101F><U1039>"
+collating-element <MMK101FB> from "<U101F><U103A>"
+collating-element <MMK101FBDot> from "<U101F><U1037><U103A>"
+collating-element <MMK1020A> from "<U1020><U1039>"
+collating-element <MMK1020B> from "<U1020><U103A>"
+collating-element <MMK1020BDot> from "<U1020><U1037><U103A>"
+collating-element <MMV102C> from "<U102C>"
+collating-element <MMV102CALT0> from "<U102B>"
+collating-element <MMV1083> from "<U1083>"
+collating-element <MMV1072> from "<U1072>"
+collating-element <MMV102D> from "<U102D>"
+collating-element <MMV1071> from "<U1071>"
+collating-element <MMV102E> from "<U102E>"
+collating-element <MMV1062> from "<U1062>"
+collating-element <MMV1067> from "<U1067>"
+collating-element <MMV1068> from "<U1068>"
+collating-element <MMV1033> from "<U1033>"
+collating-element <MMV102F> from "<U102F>"
+collating-element <MMV1073> from "<U1073>"
+collating-element <MMV1074> from "<U1074>"
+collating-element <MMV1030> from "<U1030>"
+collating-element <MMV1056> from "<U1056>"
+collating-element <MMV1057> from "<U1057>"
+collating-element <MMV1058> from "<U1058>"
+collating-element <MMV1059> from "<U1059>"
+collating-element <MMV1031> from "<U1031>"
+collating-element <MMV1035> from "<U1035>"
+collating-element <MMV1084> from "<U1084>"
+collating-element <MMV1085> from "<U1085>"
+collating-element <MMV1032> from "<U1032>"
+collating-element <MMV1031102C> from "<U1031><U102C>"
+collating-element <MMV1031102CALT0> from "<U1031><U102B>"
+collating-element <MMV1031102C103A> from "<U1031><U102C><U103A>"
+collating-element <MMV1031102C103AALT0> from "<U1031><U102B><U103A>"
+collating-element <MMV1034> from "<U1034>"
+collating-element <MMV1036> from "<U1036>"
+collating-element <MMV102D102F> from "<U102D><U102F>"
+collating-element <MMV1063> from "<U1063>"
+collating-element <MMV1086> from "<U1086>"
+collating-element <MMT1069> from "<U1069>"
+collating-element <MMT1037> from "<U1037>"
+collating-element <MMT1087> from "<U1087>"
+collating-element <MMT108B> from "<U108B>"
+collating-element <MMT106A> from "<U106A>"
+collating-element <MMT1062103A> from "<U1062><U103A>"
+collating-element <MMT1088> from "<U1088>"
+collating-element <MMT108C> from "<U108C>"
+collating-element <MMT106B> from "<U106B>"
+collating-element <MMT106C> from "<U106C>"
+collating-element <MMT106D> from "<U106D>"
+collating-element <MMT10691037> from "<U1069><U1037>"
+collating-element <MMT106B1037> from "<U106B><U1037>"
+collating-element <MMT106A1037> from "<U106A><U1037>"
+collating-element <MMT102C103A> from "<U102C><U103A>"
+collating-element <MMT1038> from "<U1038>"
+collating-element <MMT10371038> from "<U1037><U1038>"
+collating-element <MMT1089> from "<U1089>"
+collating-element <MMT1063103A> from "<U1063><U103A>"
+collating-element <MMT108A> from "<U108A>"
+collating-element <MMT108D> from "<U108D>"
+collating-element <MMT108F> from "<U108F>"
+collating-element <MMT1064> from "<U1064>"
+collating-element <MMI1025102E> from "<U1025><U102E>"
+collating-element <MMI1023K1005A> from "<U1023><U1005><U1039>"
+collating-element <MMI1023K1005B> from "<U1023><U1005><U103A>"
+collating-element <MMI1023K1005BDot> from "<U1023><U1005><U1037><U103A>"
+collating-element <MMI1023K100BA> from "<U1023><U100B><U1039>"
+collating-element <MMI1023K100BB> from "<U1023><U100B><U103A>"
+collating-element <MMI1023K100BBDot> from "<U1023><U100B><U1037><U103A>"
+collating-element <MMI1023K1010A> from "<U1023><U1010><U1039>"
+collating-element <MMI1023K1010B> from "<U1023><U1010><U103A>"
+collating-element <MMI1023K1010BDot> from "<U1023><U1010><U1037><U103A>"
+collating-element <MMI1023K1012A> from "<U1023><U1012><U1039>"
+collating-element <MMI1023K1012B> from "<U1023><U1012><U103A>"
+collating-element <MMI1023K1012BDot> from "<U1023><U1012><U1037><U103A>"
+collating-element <MMI1023K1014A> from "<U1023><U1014><U1039>"
+collating-element <MMI1023K1014B> from "<U1023><U1014><U103A>"
+collating-element <MMI1023K1014BDot> from "<U1023><U1014><U1037><U103A>"
+collating-element <MMI1023K1019A> from "<U1023><U1019><U1039>"
+collating-element <MMI1023K1019B> from "<U1023><U1019><U103A>"
+collating-element <MMI1023K1019BDot> from "<U1023><U1019><U1037><U103A>"
+collating-element <MMI1023K101EA> from "<U1023><U101E><U1039>"
+collating-element <MMI1023K101EB> from "<U1023><U101E><U103A>"
+collating-element <MMI1023K101EBDot> from "<U1023><U101E><U1037><U103A>"
+collating-element <MMI1023K101E> from "<U1023><U103F>"
+collating-element <MMI1025K1000A> from "<U1025><U1000><U1039>"
+collating-element <MMI1025K1000B> from "<U1025><U1000><U103A>"
+collating-element <MMI1025K1000BDot> from "<U1025><U1000><U1037><U103A>"
+collating-element <MMI1025K1005A> from "<U1025><U1005><U1039>"
+collating-element <MMI1025K1005B> from "<U1025><U1005><U103A>"
+collating-element <MMI1025K1005BDot> from "<U1025><U1005><U1037><U103A>"
+collating-element <MMI1025K100AA> from "<U1025><U100A><U1039>"
+collating-element <MMI1025K100AB> from "<U1025><U100A><U103A>"
+collating-element <MMI1025K100ABDot> from "<U1025><U100A><U1037><U103A>"
+collating-element <MMI1025K100FA> from "<U1025><U100F><U1039>"
+collating-element <MMI1025K100FB> from "<U1025><U100F><U103A>"
+collating-element <MMI1025K100FBDot> from "<U1025><U100F><U1037><U103A>"
+collating-element <MMI1025K1010A> from "<U1025><U1010><U1039>"
+collating-element <MMI1025K1010B> from "<U1025><U1010><U103A>"
+collating-element <MMI1025K1010BDot> from "<U1025><U1010><U1037><U103A>"
+collating-element <MMI1025K1012A> from "<U1025><U1012><U1039>"
+collating-element <MMI1025K1012B> from "<U1025><U1012><U103A>"
+collating-element <MMI1025K1012BDot> from "<U1025><U1012><U1037><U103A>"
+collating-element <MMI1025K1014A> from "<U1025><U1014><U1039>"
+collating-element <MMI1025K1014B> from "<U1025><U1014><U103A>"
+collating-element <MMI1025K1014BDot> from "<U1025><U1014><U1037><U103A>"
+collating-element <MMI1025K1015A> from "<U1025><U1015><U1039>"
+collating-element <MMI1025K1015B> from "<U1025><U1015><U103A>"
+collating-element <MMI1025K1015BDot> from "<U1025><U1015><U1037><U103A>"
+collating-element <MMI1025K1019A> from "<U1025><U1019><U1039>"
+collating-element <MMI1025K1019B> from "<U1025><U1019><U103A>"
+collating-element <MMI1025K1019BDot> from "<U1025><U1019><U1037><U103A>"
+collating-element <MMI1025K1036> from "<U1025><U102F><U1036>"
+collating-element <MMI1025K101E> from "<U1025><U103F>"
+collating-element <MMI1025K101EA> from "<U1025><U101E><U1039>"
+collating-element <MMI1025K101EB> from "<U1025><U101E><U103A>"
+collating-element <MMI1025K101EBDot> from "<U1025><U101E><U1037><U103A>"
+collating-element <MMI1027K100AA> from "<U1027><U100A><U1039>"
+collating-element <MMI1027K100AB> from "<U1027><U100A><U103A>"
+collating-element <MMI1027K100ABDot> from "<U1027><U100A><U1037><U103A>"
+collating-element <MMI1029K100BA> from "<U1029><U100B><U1039>"
+collating-element <MMI1029K100BB> from "<U1029><U100B><U103A>"
+collating-element <MMI1029K100BBDot> from "<U1029><U100B><U1037><U103A>"
+collating-element <MMI1029K1010A> from "<U1029><U1010><U1039>"
+collating-element <MMI1029K1010B> from "<U1029><U1010><U103A>"
+collating-element <MMI1029K1010BDot> from "<U1029><U1010><U1037><U103A>"
+collating-element <MMI10291031102CK1004A> from "<U1029><U1031><U102C><U1004><U1039>"
+collating-element <MMI10291031102CK1004B> from "<U1029><U1031><U102C><U1004><U103A>"
+collating-element <MMI10291031102CK1004BDot> from "<U1029><U1031><U102C><U1004><U1037><U103A>"
+
+collating-element <MM_Man> from "<U101A><U1031><U102C><U1000><U103A><U103B><U102C><U1038>"
+collating-element <MM_FirstPerson> from "<U1000><U103B><U103D><U1014><U103A><U102F><U1015><U103A>"
+collating-element <MM_RightPali> from "<U101C><U1000><U103A><U103B><U102C>"
+collating-element <MM_Daughter> from "<U101E><U1039><U1019><U102E>"
+collating-element <MM_Rice> from "<U1011><U1039><U1019><U1004><U103A><U1038>"
+collating-element <MM_Tea> from "<U101C><U1039><U1018><U1000><U103A>"
+collating-symbol <CSMMC1000>
+collating-symbol <CSMMC1075>
+collating-symbol <CSMMC1001>
+collating-symbol <CSMMC1076>
+collating-symbol <CSMMC1002>
+collating-symbol <CSMMC1077>
+collating-symbol <CSMMC1003>
+collating-symbol <CSMMC1004>
+collating-symbol <CSMMC105A>
+collating-symbol <CSMMC1005>
+collating-symbol <CSMMC1078>
+collating-symbol <CSMMC1006>
+collating-symbol <CSMMC1007>
+collating-symbol <CSMMC1079>
+collating-symbol <CSMMC1008>
+collating-symbol <CSMMC105B>
+collating-symbol <CSMMC1061>
+collating-symbol <CSMMC1009>
+collating-symbol <CSMMC107A>
+collating-symbol <CSMMC100A>
+collating-symbol <CSMMC100B>
+collating-symbol <CSMMC100C>
+collating-symbol <CSMMC100D>
+collating-symbol <CSMMC100E>
+collating-symbol <CSMMC100F>
+collating-symbol <CSMMC106E>
+collating-symbol <CSMMC1010>
+collating-symbol <CSMMC1011>
+collating-symbol <CSMMC1012>
+collating-symbol <CSMMC107B>
+collating-symbol <CSMMC1013>
+collating-symbol <CSMMC1014>
+collating-symbol <CSMMC107C>
+collating-symbol <CSMMC1015>
+collating-symbol <CSMMC1016>
+collating-symbol <CSMMC107D>
+collating-symbol <CSMMC107E>
+collating-symbol <CSMMC108E>
+collating-symbol <CSMMC1017>
+collating-symbol <CSMMC107F>
+collating-symbol <CSMMC1018>
+collating-symbol <CSMMC1019>
+collating-symbol <CSMMC101A>
+collating-symbol <CSMMC101B>
+collating-symbol <CSMMC101C>
+collating-symbol <CSMMC101D>
+collating-symbol <CSMMC1080>
+collating-symbol <CSMMC1050>
+collating-symbol <CSMMC1051>
+collating-symbol <CSMMC1065>
+collating-symbol <CSMMC101E>
+collating-symbol <CSMMC101F>
+collating-symbol <CSMMC1081>
+collating-symbol <CSMMC1020>
+collating-symbol <CSMMC105C>
+collating-symbol <CSMMC105D>
+collating-symbol <CSMMC106F>
+collating-symbol <CSMMC1070>
+collating-symbol <CSMMC1066>
+collating-symbol <CSMMC1021>
+collating-symbol <CSMMC1022>
+collating-symbol <CSMMC1052>
+collating-symbol <CSMMC1053>
+collating-symbol <CSMMC1054>
+collating-symbol <CSMMC1055>
+collating-symbol <CSMMS01>
+collating-symbol <CSMMS02>
+collating-symbol <CSMMS03>
+collating-symbol <CSMMS04>
+collating-symbol <CSMMYRWH105E>
+collating-symbol <CSMMYRWH105F>
+collating-symbol <CSMMYRWH103B>
+collating-symbol <CSMMYRWH103C>
+collating-symbol <CSMMYRWH1060>
+collating-symbol <CSMMYRWH103D>
+collating-symbol <CSMMYRWH1082>
+collating-symbol <CSMMYRWH103E>
+collating-symbol <CSMMYRWH103B103D>
+collating-symbol <CSMMYRWH103C103D>
+collating-symbol <CSMMYRWH103B103E>
+collating-symbol <CSMMYRWH103C103E>
+collating-symbol <CSMMYRWH103D103E>
+collating-symbol <CSMMYRWH103B103D103E>
+collating-symbol <CSMMYRWH103C103D103E>
+collating-symbol <CSMMCK1000>
+collating-symbol <CSMMCK1001>
+collating-symbol <CSMMCK1002>
+collating-symbol <CSMMCK1003>
+collating-symbol <CSMMCK1004>
+collating-symbol <CSMMCK1005>
+collating-symbol <CSMMCK1006>
+collating-symbol <CSMMCK1007>
+collating-symbol <CSMMCK1009>
+collating-symbol <CSMMCK100A>
+collating-symbol <CSMMCK100B>
+collating-symbol <CSMMCK100C>
+collating-symbol <CSMMCK100D>
+collating-symbol <CSMMCK100E>
+collating-symbol <CSMMCK100F>
+collating-symbol <CSMMCK1010>
+collating-symbol <CSMMCK1011>
+collating-symbol <CSMMCK1012>
+collating-symbol <CSMMCK1013>
+collating-symbol <CSMMCK1014>
+collating-symbol <CSMMCK1015>
+collating-symbol <CSMMCK1016>
+collating-symbol <CSMMCK1017>
+collating-symbol <CSMMCK1018>
+collating-symbol <CSMMCK1019>
+collating-symbol <CSMMCK102D1019>
+collating-symbol <CSMMCK102D1036>
+collating-symbol <CSMMCK102D10191037>
+collating-symbol <CSMMCK102D10361037>
+collating-symbol <CSMMCK102D10191038>
+collating-symbol <CSMMCK102D10361038>
+collating-symbol <CSMMCK102F1019>
+collating-symbol <CSMMCK102F1036>
+collating-symbol <CSMMCK102F10191037>
+collating-symbol <CSMMCK102F10361037>
+collating-symbol <CSMMCK102F10191038>
+collating-symbol <CSMMCK102F10361038>
+collating-symbol <CSMMCK101A>
+collating-symbol <CSMMCK101B>
+collating-symbol <CSMMCK101C>
+collating-symbol <CSMMCK101D>
+collating-symbol <CSMMCK101E>
+collating-symbol <CSMMCK101F>
+collating-symbol <CSMMCK1020>
+collating-symbol <CSMMV>
+collating-symbol <CSMMV102C>
+collating-symbol <CSMMV1083>
+collating-symbol <CSMMV1072>
+collating-symbol <CSMMV102D>
+collating-symbol <CSMMV1071>
+collating-symbol <CSMMV102E>
+collating-symbol <CSMMV1062>
+collating-symbol <CSMMV1067>
+collating-symbol <CSMMV1068>
+collating-symbol <CSMMV1033>
+collating-symbol <CSMMV102F>
+collating-symbol <CSMMV1073>
+collating-symbol <CSMMV1074>
+collating-symbol <CSMMV1030>
+collating-symbol <CSMMV1056>
+collating-symbol <CSMMV1057>
+collating-symbol <CSMMV1058>
+collating-symbol <CSMMV1059>
+collating-symbol <CSMMV1031>
+collating-symbol <CSMMV1035>
+collating-symbol <CSMMV1084>
+collating-symbol <CSMMV1085>
+collating-symbol <CSMMV1032>
+collating-symbol <CSMMV1031102C>
+collating-symbol <CSMMV1031102C103A>
+collating-symbol <CSMMV1034>
+collating-symbol <CSMMV1036>
+collating-symbol <CSMMV102D102F>
+collating-symbol <CSMMV1063>
+collating-symbol <CSMMV1086>
+collating-symbol <CSMMT1069>
+collating-symbol <CSMMT1037>
+collating-symbol <CSMMT1087>
+collating-symbol <CSMMT108B>
+collating-symbol <CSMMT106A>
+collating-symbol <CSMMT1062103A>
+collating-symbol <CSMMT1088>
+collating-symbol <CSMMT108C>
+collating-symbol <CSMMT106B>
+collating-symbol <CSMMT106C>
+collating-symbol <CSMMT106D>
+collating-symbol <CSMMT10691037>
+collating-symbol <CSMMT106B1037>
+collating-symbol <CSMMT106A1037>
+collating-symbol <CSMMT102C103A>
+collating-symbol <CSMMT1038>
+collating-symbol <CSMMT10371038>
+collating-symbol <CSMMT1089>
+collating-symbol <CSMMT1063103A>
+collating-symbol <CSMMT108A>
+collating-symbol <CSMMT108D>
+collating-symbol <CSMMT108F>
+collating-symbol <CSMMT1064>
+collating-symbol <MYANMAR>
+collating-symbol <MON>
+collating-symbol <MYIV>
+collating-symbol <MMALT>
+collating-symbol <MMKILLED>
+collating-symbol <MMSTACK>
# Ordre des symboles internes / Order of internal symbols
#
@@ -1465,12 +3277,12 @@ collating-symbol <k-ai_lenght_mark>
<g-ya>
<g-ra>
<g-la>
-<g-lla>
<g-va>
<g-sha>
<g-ssa>
<g-sa>
<g-ha>
+<g-lla>
<g-ksha>
<g-dnya>
<g-shra>
@@ -1733,6 +3545,349 @@ collating-symbol <k-ai_lenght_mark>
<k-halant>
<k-lenght_mark>
<k-ai_lenght_mark>
+#
+# <MALAYALAM>
+#
+# collation weights in order
+<mlvw-shorta>
+<mlvw-aa>
+<mlvw-i>
+<mlvw-ii>
+<mlvw-u>
+<mlvw-uu>
+<mlvw-vocalicr>
+<mlvw-vocalicrr>
+<mlvw-vocalicl>
+<mlvw-vocalicll>
+<mlvw-shorte>
+<mlvw-e>
+<mlvw-ai>
+<mlvw-shorto>
+<mlvw-o>
+<mlvw-au>
+<ml-ka>
+<ml-kha>
+<ml-ga>
+<ml-gga>
+<ml-gha>
+<ml-nga>
+<ml-cha>
+<ml-chha>
+<ml-ja>
+<ml-jja>
+<ml-jha>
+<ml-nya>
+<ml-ta>
+<ml-tta>
+<ml-da>
+<ml-dha>
+<ml-nna>
+<ml-tha>
+<ml-thha>
+<ml-dda>
+<ml-ddha>
+<ml-na>
+<ml-pa>
+<ml-pha>
+<ml-ba>
+<ml-bba>
+<ml-bha>
+<ml-ma>
+<ml-ya>
+<ml-ra>
+<ml-la>
+<ml-va>
+<ml-ssa>
+<ml-sha>
+<ml-sa>
+<ml-ha>
+<ml-lla>
+<ml-zha>
+<ml-rra>
+<ml-avagrah>
+<ml-virama>
+<mlvs-aa>
+<mlvs-i>
+<mlvs-ii>
+<mlvs-u>
+<mlvs-uu>
+<mlvs-vocalicr>
+<mlvs-vocalicrr>
+<mlvs-vocalicl>
+<mlvs-vocalicll>
+<mlvs-shorte>
+<mlvs-e>
+<mlvs-ai>
+<mlvs-shorto>
+<mlvs-o>
+<mlvs-au>
+<ml-visarga>
+#
+# <BENGALI>
+#
+# collation weights in order
+<U_09F8>
+<U_09F9>
+<U_09FA>
+<bnw-a>
+<bnw-aa>
+<bnw-i>
+<bnw-ii>
+<bnw-u>
+<bnw-uu>
+<bnw-vocalicr>
+<bnw-vocalicrr>
+<bnw-vocalicl>
+<bnw-vocalicll>
+<bnw-e>
+<bnw-ai>
+<bnw-o>
+<bnw-au>
+<bvd-anuswara>
+<bvd-visarg>
+<bvd-chandrabindu>
+<b_ka>
+<b_kha>
+<b_ga>
+<b_gha>
+<b_nga>
+<b_ca>
+<b_cha>
+<b_ja>
+<b_jha>
+<b_nya>
+<b_tta>
+<b_ttha>
+<b_dda>
+<b_ddha>
+<b_nna>
+<b_ta>
+<b_khand_ta>
+<b_tha>
+<b_da>
+<b_dha>
+<b_na>
+<b_pa>
+<b_pha>
+<b_va>
+<b_bha>
+<b_ma>
+<b_ya>
+<b_ra>
+<b_ra_diagonal>
+<b_la>
+<b_ra_lower_diagonal>
+<b_sha>
+<b_ssa>
+<b_sa>
+<b_ha>
+<b_avagrah>
+<bm-aa>
+<bm-i>
+<bm-ii>
+<bm-u>
+<bm-uu>
+<bm-vocalicr>
+<bm-vocalicrr>
+<bm-vocalicl>
+<bm-vocalicll>
+<bm-e>
+<bm-ai>
+<bm-o>
+<bm-au>
+<b_halant>
+<bm_au_lenght>
+#
+# <MYANMAR>
+#
+<MYANMAR>
+<MON>
+<MYIV>
+<MMALT>
+<MMKILLED>
+<MMSTACK>
+<CSMMC1000>
+<CSMMC1075>
+<CSMMC1001>
+<CSMMC1076>
+<CSMMC1002>
+<CSMMC1077>
+<CSMMC1003>
+<CSMMC1004>
+<CSMMC105A>
+<CSMMC1005>
+<CSMMC1078>
+<CSMMC1006>
+<CSMMC1007>
+<CSMMC1079>
+<CSMMC1008>
+<CSMMC105B>
+<CSMMC1061>
+<CSMMC1009>
+<CSMMC107A>
+<CSMMC100A>
+<CSMMC100B>
+<CSMMC100C>
+<CSMMC100D>
+<CSMMC100E>
+<CSMMC100F>
+<CSMMC106E>
+<CSMMC1010>
+<CSMMC1011>
+<CSMMC1012>
+<CSMMC107B>
+<CSMMC1013>
+<CSMMC1014>
+<CSMMC107C>
+<CSMMC1015>
+<CSMMC1016>
+<CSMMC107D>
+<CSMMC107E>
+<CSMMC108E>
+<CSMMC1017>
+<CSMMC107F>
+<CSMMC1018>
+<CSMMC1019>
+<CSMMC101A>
+<CSMMC101B>
+<CSMMC101C>
+<CSMMC101D>
+<CSMMC1080>
+<CSMMC1050>
+<CSMMC1051>
+<CSMMC1065>
+<CSMMC101E>
+<CSMMC101F>
+<CSMMC1081>
+<CSMMC1020>
+<CSMMC105C>
+<CSMMC105D>
+<CSMMC106F>
+<CSMMC1070>
+<CSMMC1066>
+<CSMMC1021>
+<CSMMC1022>
+<CSMMC1052>
+<CSMMC1053>
+<CSMMC1054>
+<CSMMC1055>
+<CSMMS01>
+<CSMMS02>
+<CSMMS03>
+<CSMMS04>
+<CSMMT1069>
+<CSMMT1037>
+<CSMMT1087>
+<CSMMT108B>
+<CSMMT106A>
+<CSMMT1062103A>
+<CSMMT1088>
+<CSMMT108C>
+<CSMMT106B>
+<CSMMT106C>
+<CSMMT106D>
+<CSMMT10691037>
+<CSMMT106B1037>
+<CSMMT106A1037>
+<CSMMT102C103A>
+<CSMMT1038>
+<CSMMT10371038>
+<CSMMT1089>
+<CSMMT1063103A>
+<CSMMT108A>
+<CSMMT108D>
+<CSMMT108F>
+<CSMMT1064>
+<CSMMV>
+<CSMMV102C>
+<CSMMV1083>
+<CSMMV1072>
+<CSMMV102D>
+<CSMMV1071>
+<CSMMV102E>
+<CSMMV1062>
+<CSMMV1067>
+<CSMMV1068>
+<CSMMV1033>
+<CSMMV102F>
+<CSMMV1073>
+<CSMMV1074>
+<CSMMV1030>
+<CSMMV1056>
+<CSMMV1057>
+<CSMMV1058>
+<CSMMV1059>
+<CSMMV1031>
+<CSMMV1035>
+<CSMMV1084>
+<CSMMV1085>
+<CSMMV1032>
+<CSMMV1031102C>
+<CSMMV1031102C103A>
+<CSMMV1034>
+<CSMMV1036>
+<CSMMV102D102F>
+<CSMMV1063>
+<CSMMV1086>
+<CSMMCK1000>
+<CSMMCK1001>
+<CSMMCK1002>
+<CSMMCK1003>
+<CSMMCK1004>
+<CSMMCK1005>
+<CSMMCK1006>
+<CSMMCK1007>
+<CSMMCK1009>
+<CSMMCK100A>
+<CSMMCK100B>
+<CSMMCK100C>
+<CSMMCK100D>
+<CSMMCK100E>
+<CSMMCK100F>
+<CSMMCK1010>
+<CSMMCK1011>
+<CSMMCK1012>
+<CSMMCK1013>
+<CSMMCK1014>
+<CSMMCK1015>
+<CSMMCK1016>
+<CSMMCK1017>
+<CSMMCK1018>
+<CSMMCK1019>
+<CSMMCK102D1019>
+<CSMMCK102D1036>
+<CSMMCK102D10191037>
+<CSMMCK102D10361037>
+<CSMMCK102D10191038>
+<CSMMCK102D10361038>
+<CSMMCK102F1019>
+<CSMMCK102F1036>
+<CSMMCK102F10191037>
+<CSMMCK102F10361037>
+<CSMMCK102F10191038>
+<CSMMCK102F10361038>
+<CSMMCK101A>
+<CSMMCK101B>
+<CSMMCK101C>
+<CSMMCK101D>
+<CSMMCK101E>
+<CSMMCK101F>
+<CSMMCK1020>
+<CSMMYRWH105E>
+<CSMMYRWH105F>
+<CSMMYRWH103B>
+<CSMMYRWH103C>
+<CSMMYRWH1060>
+<CSMMYRWH103D>
+<CSMMYRWH1082>
+<CSMMYRWH103E>
+<CSMMYRWH103B103D>
+<CSMMYRWH103C103D>
+<CSMMYRWH103B103E>
+<CSMMYRWH103C103E>
+<CSMMYRWH103D103E>
+<CSMMYRWH103B103D103E>
+<CSMMYRWH103C103D103E>
order_start <SPECIAL>;forward;backward;forward;forward,position
#
@@ -2161,7 +4316,6 @@ endif
<U1E33> <k>;<BPT>;<MIN>;IGNORE # 337 ḳ
<U1E35> <k>;<BMA>;<MIN>;IGNORE # 338 ḵ
<U0199> <k>;<CRL>;<MIN>;IGNORE # 339 Æ™
-<U0138> <k>;<PCL>;<MIN>;IGNORE # 340 <kk>
<U006C> <l>;<BAS>;<MIN>;IGNORE # 341 l
<U013A> <l>;<ACA>;<MIN>;IGNORE # 342 <l'>
<U013E> <l>;<CAR>;<MIN>;IGNORE # 343 <l<>
@@ -2235,6 +4389,7 @@ endif
<U1E55> <p>;<ACA>;<MIN>;IGNORE # 411 <p'>
<U1E57> <p>;<PCT>;<MIN>;IGNORE # 412 <p.>
<U0071> <q>;<BAS>;<MIN>;IGNORE # 413 q
+<U0138> <q>;<PCL>;<MIN>;IGNORE # 340 <kk>
<U0072> <r>;<BAS>;<MIN>;IGNORE # 414 r
<U0155> <r>;<ACA>;<MIN>;IGNORE # 415 <r'>
<U0159> <r>;<CAR>;<MIN>;IGNORE # 416 <r<>
@@ -3666,12 +5821,12 @@ order_start <GUJARATI>;forward;forward;forward;forward,position
<U0AAF> <g-ya>;<BAS>;<MIN>;IGNORE
<U0AB0> <g-ra>;<BAS>;<MIN>;IGNORE
<U0AB2> <g-la>;<BAS>;<MIN>;IGNORE
-<U0AB3> <g-lla>;<BAS>;<MIN>;IGNORE
<U0AB5> <g-va>;<BAS>;<MIN>;IGNORE
<U0AB6> <g-sha>;<BAS>;<MIN>;IGNORE
<U0AB7> <g-ssa>;<BAS>;<MIN>;IGNORE
<U0AB8> <g-sa>;<BAS>;<MIN>;IGNORE
-<U0AB9> <g-ha>;<BAS>;<MIN>;IGNORE
+<U0AB9> <g-ha>;<BAS>;<MIN>;IGNORE
+<U0AB3> <g-lla>;<BAS>;<MIN>;IGNORE
<gu-ksha> <g-ksha>;<BAS>;<MIN>;IGNORE
<gu-dnya> <g-dnya>;<BAS>;<MIN>;IGNORE
<gu-shra> <g-shra>;<BAS>;<MIN>;IGNORE
@@ -4052,6 +6207,1707 @@ order_start <SINHALA>;forward;forward;forward;forward,position
<U0DDE> <U0DDE>;<BAS>;<MIN>;IGNORE
<U0DCA> <U0DCA>;<BAS>;<MIN>;IGNORE
+order_start <MALAYALAM>;forward;forward;forward;forward,position
+<U0D66> <0>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0D67> <1>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0D68> <2>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0D69> <3>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0D6A> <4>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0D6B> <5>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0D6C> <6>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0D6D> <7>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0D6E> <8>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0D6F> <9>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0D05> <mlvw-shorta> ;<BAS>;<MIN>;IGNORE
+<U0D06> <mlvw-aa> ;<BAS>;<MIN>;IGNORE
+<U0D07> <mlvw-i> ;<BAS>;<MIN>;IGNORE
+<U0D08> <mlvw-ii> ;<BAS>;<MIN>;IGNORE
+<U0D09> <mlvw-u> ;<BAS>;<MIN>;IGNORE
+<U0D0A> <mlvw-uu>;<BAS>;<MIN>;IGNORE
+<U0D0B> <mlvw-vocalicr>;<BAS>;<MIN>;IGNORE
+<U0D60> <mlvw-vocalicrr>;<BAS>;<MIN>;IGNORE
+<U0D0C> <mlvw-vocalicl>;<BAS>;<MIN>;IGNORE
+<U0D61> <mlvw-vocalicll>;<BAS>;<MIN>;IGNORE
+<U0D0E> <mlvw-shorte>;<BAS>;<MIN>;IGNORE
+<U0D0F> <mlvw-e>;<BAS>;<MIN>;IGNORE
+<U0D10> <mlvw-ai>;<BAS>;<MIN>;IGNORE
+<U0D12> <mlvw-shorto>;<BAS>;<MIN>;IGNORE
+<U0D13> <mlvw-o>;<BAS>;<MIN>;IGNORE
+<U0D14> <mlvw-au>;<BAS>;<MIN>;IGNORE
+<ml-chillu-k> "<ml-ka><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D15> "<ml-ka><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-kh> "<ml-kha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D16> "<ml-kha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-g> "<ml-ga><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D17> "<ml-ga><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-gh> "<ml-gha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D18> "<ml-gha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-ng> "<ml-nga><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D19> "<ml-nga><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-ch> "<ml-cha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D1A> "<ml-cha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-chh> "<ml-chha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D1B> "<ml-chha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-j> "<ml-ja><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D1C> "<ml-ja><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-jh> "<ml-jha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D1D> "<ml-jha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-ny> "<ml-nya><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D1E> "<ml-nya><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-t> "<ml-ta><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D1F> "<ml-ta><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-tt> "<ml-tta><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D20> "<ml-tta><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-d> "<ml-da><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D21> "<ml-da><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-dh> "<ml-dha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D22> "<ml-dha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-chillu-nn> "<ml-nna><ml-virama>";<BAS>;<MIN>;IGNORE # à´£àµâ€ = à´£ + ൠ+ zwj
+<U0D23> "<ml-nna><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE # ണ = ണ + ൠ+ അ
+<ml-th> "<ml-tha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D24> "<ml-tha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-thh> "<ml-thha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D25> "<ml-thha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-dd> "<ml-dda><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D26> "<ml-dda><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-ddh> "<ml-ddha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D27> "<ml-ddha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-chillu-n> "<ml-chillu-n>";<BAS>;<MIN>;IGNORE # à´¨àµâ€= à´¨ + ൠ+ zwj
+<U0D28> "<ml-chillu-n><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE #ന = ന + ൠ+ അ
+<ml-p> "<ml-pa><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D2A> "<ml-pa><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-ph> "<ml-pha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D2B> "<ml-pha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-b> "<ml-ba><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D2C> "<ml-ba><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-bh> "<ml-bha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D2D> "<ml-bha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<U0D02> "<ml-ma><ml-virama>";<BAS>;<MIN>;IGNORE # à´‚ = à´® + àµ
+<ml-m> "<ml-ma><ml-virama>";"<BAS><ml-virama>";<MIN>;IGNORE # à´‚ = à´® + àµ
+<U0D2E> "<ml-ma><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE # മ = മ + ൠ+ അ
+<ml-y> "<ml-ya><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D2F> "<ml-ya><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-chillu-r> "<ml-ra><ml-virama>";<BAS>;<MIN>;IGNORE # ര = ര + ൠ+ zwj
+<U0D30> "<ml-ra><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE # ര = ര + ൠ+ അ
+<ml-chillu-l> <ml-la>;<BAS>;<MIN>;IGNORE # à´²àµâ€ = à´² + ൠ+ zwj
+<U0D32> "<ml-la><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE # ല = ല + ൠ+ അ
+<ml-v> "<ml-va><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D35> "<ml-va><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-ss> "<ml-ssa><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D37> "<ml-ssa><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-sh> "<ml-sha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D36> "<ml-sha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-s> "<ml-sa><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D38> "<ml-sa><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-h> "<ml-ha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D39> "<ml-ha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-chillu-ll> "<ml-lla><ml-virama>";<BAS>;<MIN>;IGNORE # à´³àµâ€ = à´³ + ൠ+ zwj
+<U0D33> "<ml-lla><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE # ള = ള + ൠ+ അ
+<ml-zh> "<ml-zha><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D34> "<ml-zha><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<ml-rr> "<ml-rra><ml-virama>";<BAS>;<MIN>;IGNORE
+<U0D31> "<ml-rra><ml-virama><mlvw-shorta>";<BAS>;<MIN>;IGNORE
+<U0D3D> <ml-avagrah>;<BAS>;<MIN>;IGNORE
+<U0D3E> <mlvs-aa>;<BAS>;<MIN>;IGNORE
+<U0D3F> <mlvs-i>;<BAS>;<MIN>;IGNORE
+<U0D40> <mlvs-ii>;<BAS>;<MIN>;IGNORE
+<ml-samvruthokaram> <mlvs-u>;<BAS>;<MIN>;IGNORE
+<U0D41> <mlvs-u>;"<BAS><ml-samvruthokaram>";<MIN>;IGNORE # sort it after samvruthokaram
+<U0D42> <mlvs-uu>;<BAS>;<MIN>;IGNORE
+<U0D43> <mlvs-vocalicr>;<BAS>;<MIN>;IGNORE
+<U0D44> <mlvs-vocalicrr>;<BAS>;<MIN>;IGNORE
+<U0D62> <mlvs-vocalicl>;<BAS>;<MIN>;IGNORE
+<U0D63> <mlvs-vocalicll>;<BAS>;<MIN>;IGNORE
+<U0D46> <mlvs-shorte>;<BAS>;<MIN>;IGNORE
+<U0D47> <mlvs-e>;<BAS>;<MIN>;IGNORE
+<U0D48> <mlvs-ai>;<BAS>;<MIN>;IGNORE
+<U0D4A> <mlvs-shorto>;<BAS>;<MIN>;IGNORE
+<U0D4B> <mlvs-o>;<BAS>;<MIN>;IGNORE
+<U0D4C> <mlvs-au>;<BAS>;<MIN>;IGNORE
+<U0D57> <mlvs-au>;<BAS>;<MIN>;IGNORE
+<U0D4D> <ml-virama>;<BAS>;<MIN>;IGNORE
+<U0D03> <ml-visarga>;<BAS>;<MIN>;IGNORE
+<ml-split-o> <mlvs-shorto>;<BAS>;<MIN>;IGNORE
+<ml-split-oo> <mlvs-o>;<BAS>;<MIN>;IGNORE
+<ml-split-au> <mlvs-au>;<BAS>;<MIN>;IGNORE
+
+order_start <BENGALI>;forward;forward;forward;forward,position
+<U09F2> IGNORE;IGNORE;IGNORE;<U09F2> # BENGALI RUPEE MARK
+<U09F3> IGNORE;IGNORE;IGNORE;<U09F3> # BENGALI RUPEE SIGN
+<U09F8> <U_09F8>;<BAS>;<MIN>;IGNORE # BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
+<U09F9> <U_09F9>;<BAS>;<MIN>;IGNORE # BENGALI CURRENCY DENOMINATOR SIXTEEN
+<U09FA> <U_09FA>;<BAS>;<MIN>;IGNORE # BENGALI ISSHAR
+#Fix Require for <U09F4>..<U09F9>
+<U09E6> <0>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U09E7> <1>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U09E8> <2>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U09E9> <3>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U09EA> <4>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U09EB> <5>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U09EC> <6>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U09ED> <7>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U09EE> <8>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U09EF> <9>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0985> <bnw-a> ;<BAS>;<MIN>;IGNORE
+<U0986> <bnw-aa> ;<BAS>;<MIN>;IGNORE
+<U0987> <bnw-i> ;<BAS>;<MIN>;IGNORE
+<U0988> <bnw-ii> ;<BAS>;<MIN>;IGNORE
+<U0989> <bnw-u> ;<BAS>;<MIN>;IGNORE
+<U098A> <bnw-uu>;<BAS>;<MIN>;IGNORE
+<U098B> <bnw-vocalicr>;<BAS>;<MIN>;IGNORE
+<U09E0> <bnw-vocalicrr>;<BAS>;<MIN>;IGNORE
+<U098C> <bnw-vocalicl>;<BAS>;<MIN>;IGNORE
+<U09E1> <bnw-vocalicll>;<BAS>;<MIN>;IGNORE
+<U098F> <bnw-e>;<BAS>;<MIN>;IGNORE
+<U0990> <bnw-ai>;<BAS>;<MIN>;IGNORE
+<U0993> <bnw-o>;<BAS>;<MIN>;IGNORE
+<U0994> <bnw-au>;<BAS>;<MIN>;IGNORE
+<U0982> <bvd-anuswara>;<BAS>;<MIN>;IGNORE
+<U0983> <bvd-visarg>;<BAS>;<MIN>;IGNORE
+<U0981> <bvd-chandrabindu>;<BAS>;<MIN>;IGNORE
+<U0995> <b_ka>;<BAS>;<MIN>;IGNORE
+<U0996> <b_kha>;<BAS>;<MIN>;IGNORE
+<U0997> <b_ga>;<BAS>;<MIN>;IGNORE
+<U0998> <b_gha>;<BAS>;<MIN>;IGNORE
+<U0999> <b_nga>;<BAS>;<MIN>;IGNORE
+<U099A> <b_ca>;<BAS>;<MIN>;IGNORE
+<U099B> <b_cha>;<BAS>;<MIN>;IGNORE
+<U099C> <b_ja>;<BAS>;<MIN>;IGNORE
+<U099D> <b_jha>;<BAS>;<MIN>;IGNORE
+<U099E> <b_nya>;<BAS>;<MIN>;IGNORE
+<U099F> <b_tta>;<BAS>;<MIN>;IGNORE
+<U09A0> <b_ttha>;<BAS>;<MIN>;IGNORE
+<U09A1> <b_dda>;<BAS>;<MIN>;IGNORE
+<U09DC> <b_dda>;"<BAS><NKT>";"<MIN><MIN>";IGNORE
+<U09A2> <b_ddha>;<BAS>;<MIN>;IGNORE
+<U09DD> <b_ddha>;"<BAS><NKT>";"<MIN><MIN>";IGNORE
+<U09A3> <b_nna>;<BAS>;<MIN>;IGNORE
+<U09A4> <b_ta>;<BAS>;<MIN>;IGNORE
+<U09CE> <b_khand_ta>;<BAS>;<MIN>;IGNORE
+<U09A5> <b_tha>;<BAS>;<MIN>;IGNORE
+<U09A6> <b_da>;<BAS>;<MIN>;IGNORE
+<U09A7> <b_dha>;<BAS>;<MIN>;IGNORE
+<U09A8> <b_na>;<BAS>;<MIN>;IGNORE
+<U09AA> <b_pa>;<BAS>;<MIN>;IGNORE
+<U09AB> <b_pha>;<BAS>;<MIN>;IGNORE
+<U09AC> <b_va>;<BAS>;<MIN>;IGNORE
+<U09AD> <b_bha>;<BAS>;<MIN>;IGNORE
+<U09AE> <b_ma>;<BAS>;<MIN>;IGNORE
+<U09AF> <b_ya>;<BAS>;<MIN>;IGNORE
+<U09DF> <b_ya>;"<BAS><NKT>";"<MIN><MIN>";IGNORE
+<U09B0> <b_ra>;<BAS>;<MIN>;IGNORE
+<U09F0> <b_ra_diagonal>;<BAS>;<MIN>;IGNORE
+<U09B2> <b_la>;<BAS>;<MIN>;IGNORE
+<U09F1> <b_ra_lower_diagonal>;<BAS>;<MIN>;IGNORE
+<U09B6> <b_sha>;<BAS>;<MIN>;IGNORE
+<U09B7> <b_ssa>;<BAS>;<MIN>;IGNORE
+<U09B8> <b_sa>;<BAS>;<MIN>;IGNORE
+<U09B9> <b_ha>;<BAS>;<MIN>;IGNORE
+<U09BD> <b_avagrah>;<BAS>;<MIN>;IGNORE
+<U09BE> <bm-aa>;<BAS>;<MIN>;IGNORE
+<U09BF> <bm-i>;<BAS>;<MIN>;IGNORE
+<U09C0> <bm-ii>;<BAS>;<MIN>;IGNORE
+<U09C1> <bm-u>;<BAS>;<MIN>;IGNORE
+<U09C2> <bm-uu>;<BAS>;<MIN>;IGNORE
+<U09C3> <bm-vocalicr>;<BAS>;<MIN>;IGNORE
+<U09C4> <bm-vocalicrr>;<BAS>;<MIN>;IGNORE
+<U09E2> <bm-vocalicl>;<BAS>;<MIN>;IGNORE
+<U09E3> <bm-vocalicll>;<BAS>;<MIN>;IGNORE
+<U09C7> <bm-e>;<BAS>;<MIN>;IGNORE
+<U09C8> <bm-ai>;<BAS>;<MIN>;IGNORE
+<U09CB> <bm-o>;<BAS>;<MIN>;IGNORE
+<U09CC> <bm-au>;<BAS>;<MIN>;IGNORE
+<U09CD> <b_halant>;<BAS>;<MIN>;IGNORE
+<U09D7> <bm_au_lenght>;<BAS>;<MIN>;IGNORE
+<U09BC> IGNORE;<NKT>;<MIN>;IGNORE
+
+order_start <MYANMAR>;forward;forward;forward;forward,position
+<MMV102CK1000A> "<CSMMCK1000><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1000ADot> "<CSMMCK1000><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1000B> "<CSMMCK1000><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1000A> "<CSMMCK1000><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1000ADot> "<CSMMCK1000><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1000B> "<CSMMCK1000><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1000A> "<CSMMCK1000><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1000ADot> "<CSMMCK1000><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1000B> "<CSMMCK1000><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1000A> "<CSMMCK1000><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1000ADot> "<CSMMCK1000><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1000B> "<CSMMCK1000><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1000A> "<CSMMCK1000><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1000ADot> "<CSMMCK1000><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1000B> "<CSMMCK1000><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1000A> "<CSMMCK1000><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1000ADot> "<CSMMCK1000><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1000B> "<CSMMCK1000><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1000A> "<CSMMCK1000><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1000ADot> "<CSMMCK1000><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1000B> "<CSMMCK1000><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1000A> "<CSMMCK1000><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1000ADot> "<CSMMCK1000><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1000B> "<CSMMCK1000><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1000A> "<CSMMCK1000><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1000ADot> "<CSMMCK1000><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1000B> "<CSMMCK1000><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1000A> "<CSMMCK1000><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1000ADot> "<CSMMCK1000><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1000B> "<CSMMCK1000><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1000A> "<CSMMCK1000><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1000ADot> "<CSMMCK1000><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1000B> "<CSMMCK1000><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1000A> "<CSMMCK1000><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1000ADot> "<CSMMCK1000><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1000B> "<CSMMCK1000><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1001A> "<CSMMCK1001><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1001ADot> "<CSMMCK1001><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1001B> "<CSMMCK1001><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1001A> "<CSMMCK1001><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1001ADot> "<CSMMCK1001><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1001B> "<CSMMCK1001><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1001A> "<CSMMCK1001><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1001ADot> "<CSMMCK1001><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1001B> "<CSMMCK1001><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1001A> "<CSMMCK1001><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1001ADot> "<CSMMCK1001><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1001B> "<CSMMCK1001><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1001A> "<CSMMCK1001><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1001ADot> "<CSMMCK1001><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1001B> "<CSMMCK1001><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1001A> "<CSMMCK1001><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1001ADot> "<CSMMCK1001><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1001B> "<CSMMCK1001><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1001A> "<CSMMCK1001><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1001ADot> "<CSMMCK1001><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1001B> "<CSMMCK1001><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1001A> "<CSMMCK1001><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1001ADot> "<CSMMCK1001><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1001B> "<CSMMCK1001><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1001A> "<CSMMCK1001><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1001ADot> "<CSMMCK1001><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1001B> "<CSMMCK1001><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1001A> "<CSMMCK1001><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1001ADot> "<CSMMCK1001><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1001B> "<CSMMCK1001><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1001A> "<CSMMCK1001><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1001ADot> "<CSMMCK1001><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1001B> "<CSMMCK1001><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1001A> "<CSMMCK1001><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1001ADot> "<CSMMCK1001><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1001B> "<CSMMCK1001><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1002A> "<CSMMCK1002><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1002ADot> "<CSMMCK1002><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1002B> "<CSMMCK1002><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1002A> "<CSMMCK1002><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1002ADot> "<CSMMCK1002><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1002B> "<CSMMCK1002><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1002A> "<CSMMCK1002><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1002ADot> "<CSMMCK1002><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1002B> "<CSMMCK1002><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1002A> "<CSMMCK1002><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1002ADot> "<CSMMCK1002><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1002B> "<CSMMCK1002><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1002A> "<CSMMCK1002><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1002ADot> "<CSMMCK1002><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1002B> "<CSMMCK1002><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1002A> "<CSMMCK1002><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1002ADot> "<CSMMCK1002><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1002B> "<CSMMCK1002><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1002A> "<CSMMCK1002><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1002ADot> "<CSMMCK1002><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1002B> "<CSMMCK1002><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1002A> "<CSMMCK1002><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1002ADot> "<CSMMCK1002><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1002B> "<CSMMCK1002><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1002A> "<CSMMCK1002><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1002ADot> "<CSMMCK1002><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1002B> "<CSMMCK1002><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1002A> "<CSMMCK1002><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1002ADot> "<CSMMCK1002><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1002B> "<CSMMCK1002><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1002A> "<CSMMCK1002><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1002ADot> "<CSMMCK1002><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1002B> "<CSMMCK1002><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1002A> "<CSMMCK1002><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1002ADot> "<CSMMCK1002><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1002B> "<CSMMCK1002><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1003A> "<CSMMCK1003><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1003ADot> "<CSMMCK1003><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1003B> "<CSMMCK1003><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1003A> "<CSMMCK1003><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1003ADot> "<CSMMCK1003><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1003B> "<CSMMCK1003><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1003A> "<CSMMCK1003><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1003ADot> "<CSMMCK1003><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1003B> "<CSMMCK1003><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1003A> "<CSMMCK1003><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1003ADot> "<CSMMCK1003><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1003B> "<CSMMCK1003><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1003A> "<CSMMCK1003><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1003ADot> "<CSMMCK1003><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1003B> "<CSMMCK1003><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1003A> "<CSMMCK1003><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1003ADot> "<CSMMCK1003><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1003B> "<CSMMCK1003><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1003A> "<CSMMCK1003><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1003ADot> "<CSMMCK1003><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1003B> "<CSMMCK1003><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1003A> "<CSMMCK1003><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1003ADot> "<CSMMCK1003><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1003B> "<CSMMCK1003><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1003A> "<CSMMCK1003><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1003ADot> "<CSMMCK1003><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1003B> "<CSMMCK1003><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1003A> "<CSMMCK1003><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1003ADot> "<CSMMCK1003><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1003B> "<CSMMCK1003><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1003A> "<CSMMCK1003><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1003ADot> "<CSMMCK1003><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1003B> "<CSMMCK1003><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1003A> "<CSMMCK1003><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1003ADot> "<CSMMCK1003><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1003B> "<CSMMCK1003><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1004A> "<CSMMCK1004><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1004ADot> "<CSMMCK1004><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1004B> "<CSMMCK1004><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1004A> "<CSMMCK1004><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1004ADot> "<CSMMCK1004><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1004B> "<CSMMCK1004><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1004A> "<CSMMCK1004><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1004ADot> "<CSMMCK1004><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1004B> "<CSMMCK1004><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1004A> "<CSMMCK1004><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1004ADot> "<CSMMCK1004><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1004B> "<CSMMCK1004><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1004A> "<CSMMCK1004><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1004ADot> "<CSMMCK1004><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1004B> "<CSMMCK1004><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1004A> "<CSMMCK1004><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1004ADot> "<CSMMCK1004><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1004B> "<CSMMCK1004><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1004A> "<CSMMCK1004><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1004ADot> "<CSMMCK1004><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1004B> "<CSMMCK1004><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1004A> "<CSMMCK1004><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1004ADot> "<CSMMCK1004><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1004B> "<CSMMCK1004><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1004A> "<CSMMCK1004><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1004ADot> "<CSMMCK1004><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1004B> "<CSMMCK1004><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1004A> "<CSMMCK1004><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1004ADot> "<CSMMCK1004><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1004B> "<CSMMCK1004><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1004A> "<CSMMCK1004><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1004ADot> "<CSMMCK1004><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1004B> "<CSMMCK1004><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1004A> "<CSMMCK1004><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1004ADot> "<CSMMCK1004><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1004B> "<CSMMCK1004><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1005A> "<CSMMCK1005><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1005ADot> "<CSMMCK1005><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1005B> "<CSMMCK1005><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1005A> "<CSMMCK1005><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1005ADot> "<CSMMCK1005><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1005B> "<CSMMCK1005><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1005A> "<CSMMCK1005><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1005ADot> "<CSMMCK1005><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1005B> "<CSMMCK1005><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1005A> "<CSMMCK1005><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1005ADot> "<CSMMCK1005><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1005B> "<CSMMCK1005><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1005A> "<CSMMCK1005><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1005ADot> "<CSMMCK1005><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1005B> "<CSMMCK1005><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1005A> "<CSMMCK1005><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1005ADot> "<CSMMCK1005><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1005B> "<CSMMCK1005><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1005A> "<CSMMCK1005><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1005ADot> "<CSMMCK1005><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1005B> "<CSMMCK1005><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1005A> "<CSMMCK1005><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1005ADot> "<CSMMCK1005><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1005B> "<CSMMCK1005><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1005A> "<CSMMCK1005><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1005ADot> "<CSMMCK1005><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1005B> "<CSMMCK1005><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1005A> "<CSMMCK1005><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1005ADot> "<CSMMCK1005><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1005B> "<CSMMCK1005><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1005A> "<CSMMCK1005><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1005ADot> "<CSMMCK1005><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1005B> "<CSMMCK1005><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1005A> "<CSMMCK1005><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1005ADot> "<CSMMCK1005><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1005B> "<CSMMCK1005><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1006A> "<CSMMCK1006><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1006ADot> "<CSMMCK1006><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1006B> "<CSMMCK1006><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1006A> "<CSMMCK1006><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1006ADot> "<CSMMCK1006><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1006B> "<CSMMCK1006><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1006A> "<CSMMCK1006><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1006ADot> "<CSMMCK1006><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1006B> "<CSMMCK1006><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1006A> "<CSMMCK1006><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1006ADot> "<CSMMCK1006><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1006B> "<CSMMCK1006><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1006A> "<CSMMCK1006><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1006ADot> "<CSMMCK1006><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1006B> "<CSMMCK1006><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1006A> "<CSMMCK1006><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1006ADot> "<CSMMCK1006><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1006B> "<CSMMCK1006><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1006A> "<CSMMCK1006><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1006ADot> "<CSMMCK1006><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1006B> "<CSMMCK1006><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1006A> "<CSMMCK1006><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1006ADot> "<CSMMCK1006><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1006B> "<CSMMCK1006><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1006A> "<CSMMCK1006><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1006ADot> "<CSMMCK1006><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1006B> "<CSMMCK1006><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1006A> "<CSMMCK1006><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1006ADot> "<CSMMCK1006><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1006B> "<CSMMCK1006><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1006A> "<CSMMCK1006><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1006ADot> "<CSMMCK1006><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1006B> "<CSMMCK1006><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1006A> "<CSMMCK1006><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1006ADot> "<CSMMCK1006><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1006B> "<CSMMCK1006><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1007A> "<CSMMCK1007><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1007ADot> "<CSMMCK1007><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1007B> "<CSMMCK1007><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1007A> "<CSMMCK1007><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1007ADot> "<CSMMCK1007><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1007B> "<CSMMCK1007><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1007A> "<CSMMCK1007><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1007ADot> "<CSMMCK1007><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1007B> "<CSMMCK1007><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1007A> "<CSMMCK1007><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1007ADot> "<CSMMCK1007><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1007B> "<CSMMCK1007><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1007A> "<CSMMCK1007><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1007ADot> "<CSMMCK1007><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1007B> "<CSMMCK1007><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1007A> "<CSMMCK1007><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1007ADot> "<CSMMCK1007><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1007B> "<CSMMCK1007><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1007A> "<CSMMCK1007><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1007ADot> "<CSMMCK1007><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1007B> "<CSMMCK1007><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1007A> "<CSMMCK1007><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1007ADot> "<CSMMCK1007><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1007B> "<CSMMCK1007><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1007A> "<CSMMCK1007><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1007ADot> "<CSMMCK1007><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1007B> "<CSMMCK1007><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1007A> "<CSMMCK1007><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1007ADot> "<CSMMCK1007><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1007B> "<CSMMCK1007><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1007A> "<CSMMCK1007><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1007ADot> "<CSMMCK1007><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1007B> "<CSMMCK1007><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1007A> "<CSMMCK1007><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1007ADot> "<CSMMCK1007><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1007B> "<CSMMCK1007><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1009A> "<CSMMCK1009><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1009ADot> "<CSMMCK1009><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1009B> "<CSMMCK1009><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1009A> "<CSMMCK1009><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1009ADot> "<CSMMCK1009><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1009B> "<CSMMCK1009><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1009A> "<CSMMCK1009><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1009ADot> "<CSMMCK1009><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1009B> "<CSMMCK1009><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1009A> "<CSMMCK1009><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1009ADot> "<CSMMCK1009><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1009B> "<CSMMCK1009><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1009A> "<CSMMCK1009><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1009ADot> "<CSMMCK1009><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1009B> "<CSMMCK1009><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1009A> "<CSMMCK1009><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1009ADot> "<CSMMCK1009><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1009B> "<CSMMCK1009><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1009A> "<CSMMCK1009><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1009ADot> "<CSMMCK1009><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1009B> "<CSMMCK1009><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1009A> "<CSMMCK1009><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1009ADot> "<CSMMCK1009><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1009B> "<CSMMCK1009><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1009A> "<CSMMCK1009><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1009ADot> "<CSMMCK1009><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1009B> "<CSMMCK1009><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1009A> "<CSMMCK1009><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1009ADot> "<CSMMCK1009><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1009B> "<CSMMCK1009><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1009A> "<CSMMCK1009><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1009ADot> "<CSMMCK1009><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1009B> "<CSMMCK1009><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1009A> "<CSMMCK1009><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1009ADot> "<CSMMCK1009><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1009B> "<CSMMCK1009><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK100AA> "<CSMMCK100A><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK100AADot> "<CSMMCK100A><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK100AB> "<CSMMCK100A><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K100AA> "<CSMMCK100A><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K100AADot> "<CSMMCK100A><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K100AB> "<CSMMCK100A><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK100AA> "<CSMMCK100A><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK100AADot> "<CSMMCK100A><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK100AB> "<CSMMCK100A><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK100AA> "<CSMMCK100A><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK100AADot> "<CSMMCK100A><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK100AB> "<CSMMCK100A><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK100AA> "<CSMMCK100A><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK100AADot> "<CSMMCK100A><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK100AB> "<CSMMCK100A><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K100AA> "<CSMMCK100A><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K100AADot> "<CSMMCK100A><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K100AB> "<CSMMCK100A><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K100AA> "<CSMMCK100A><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K100AADot> "<CSMMCK100A><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K100AB> "<CSMMCK100A><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K100AA> "<CSMMCK100A><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K100AADot> "<CSMMCK100A><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K100AB> "<CSMMCK100A><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK100AA> "<CSMMCK100A><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK100AADot> "<CSMMCK100A><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK100AB> "<CSMMCK100A><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K100AA> "<CSMMCK100A><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K100AADot> "<CSMMCK100A><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K100AB> "<CSMMCK100A><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K100AA> "<CSMMCK100A><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K100AADot> "<CSMMCK100A><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K100AB> "<CSMMCK100A><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK100AA> "<CSMMCK100A><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK100AADot> "<CSMMCK100A><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK100AB> "<CSMMCK100A><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK100BA> "<CSMMCK100B><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK100BADot> "<CSMMCK100B><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK100BB> "<CSMMCK100B><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K100BA> "<CSMMCK100B><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K100BADot> "<CSMMCK100B><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K100BB> "<CSMMCK100B><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK100BA> "<CSMMCK100B><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK100BADot> "<CSMMCK100B><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK100BB> "<CSMMCK100B><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK100BA> "<CSMMCK100B><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK100BADot> "<CSMMCK100B><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK100BB> "<CSMMCK100B><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK100BA> "<CSMMCK100B><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK100BADot> "<CSMMCK100B><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK100BB> "<CSMMCK100B><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K100BA> "<CSMMCK100B><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K100BADot> "<CSMMCK100B><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K100BB> "<CSMMCK100B><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K100BA> "<CSMMCK100B><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K100BADot> "<CSMMCK100B><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K100BB> "<CSMMCK100B><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K100BA> "<CSMMCK100B><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K100BADot> "<CSMMCK100B><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K100BB> "<CSMMCK100B><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK100BA> "<CSMMCK100B><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK100BADot> "<CSMMCK100B><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK100BB> "<CSMMCK100B><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K100BA> "<CSMMCK100B><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K100BADot> "<CSMMCK100B><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K100BB> "<CSMMCK100B><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K100BA> "<CSMMCK100B><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K100BADot> "<CSMMCK100B><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K100BB> "<CSMMCK100B><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK100BA> "<CSMMCK100B><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK100BADot> "<CSMMCK100B><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK100BB> "<CSMMCK100B><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK100CA> "<CSMMCK100C><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK100CADot> "<CSMMCK100C><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK100CB> "<CSMMCK100C><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K100CA> "<CSMMCK100C><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K100CADot> "<CSMMCK100C><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K100CB> "<CSMMCK100C><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK100CA> "<CSMMCK100C><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK100CADot> "<CSMMCK100C><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK100CB> "<CSMMCK100C><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK100CA> "<CSMMCK100C><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK100CADot> "<CSMMCK100C><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK100CB> "<CSMMCK100C><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK100CA> "<CSMMCK100C><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK100CADot> "<CSMMCK100C><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK100CB> "<CSMMCK100C><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K100CA> "<CSMMCK100C><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K100CADot> "<CSMMCK100C><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K100CB> "<CSMMCK100C><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K100CA> "<CSMMCK100C><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K100CADot> "<CSMMCK100C><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K100CB> "<CSMMCK100C><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K100CA> "<CSMMCK100C><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K100CADot> "<CSMMCK100C><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K100CB> "<CSMMCK100C><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK100CA> "<CSMMCK100C><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK100CADot> "<CSMMCK100C><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK100CB> "<CSMMCK100C><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K100CA> "<CSMMCK100C><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K100CADot> "<CSMMCK100C><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K100CB> "<CSMMCK100C><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K100CA> "<CSMMCK100C><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K100CADot> "<CSMMCK100C><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K100CB> "<CSMMCK100C><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK100CA> "<CSMMCK100C><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK100CADot> "<CSMMCK100C><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK100CB> "<CSMMCK100C><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK100DA> "<CSMMCK100D><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK100DADot> "<CSMMCK100D><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK100DB> "<CSMMCK100D><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K100DA> "<CSMMCK100D><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K100DADot> "<CSMMCK100D><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K100DB> "<CSMMCK100D><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK100DA> "<CSMMCK100D><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK100DADot> "<CSMMCK100D><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK100DB> "<CSMMCK100D><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK100DA> "<CSMMCK100D><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK100DADot> "<CSMMCK100D><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK100DB> "<CSMMCK100D><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK100DA> "<CSMMCK100D><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK100DADot> "<CSMMCK100D><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK100DB> "<CSMMCK100D><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K100DA> "<CSMMCK100D><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K100DADot> "<CSMMCK100D><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K100DB> "<CSMMCK100D><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K100DA> "<CSMMCK100D><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K100DADot> "<CSMMCK100D><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K100DB> "<CSMMCK100D><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K100DA> "<CSMMCK100D><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K100DADot> "<CSMMCK100D><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K100DB> "<CSMMCK100D><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK100DA> "<CSMMCK100D><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK100DADot> "<CSMMCK100D><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK100DB> "<CSMMCK100D><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K100DA> "<CSMMCK100D><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K100DADot> "<CSMMCK100D><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K100DB> "<CSMMCK100D><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K100DA> "<CSMMCK100D><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K100DADot> "<CSMMCK100D><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K100DB> "<CSMMCK100D><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK100DA> "<CSMMCK100D><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK100DADot> "<CSMMCK100D><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK100DB> "<CSMMCK100D><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK100EA> "<CSMMCK100E><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK100EADot> "<CSMMCK100E><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK100EB> "<CSMMCK100E><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K100EA> "<CSMMCK100E><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K100EADot> "<CSMMCK100E><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K100EB> "<CSMMCK100E><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK100EA> "<CSMMCK100E><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK100EADot> "<CSMMCK100E><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK100EB> "<CSMMCK100E><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK100EA> "<CSMMCK100E><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK100EADot> "<CSMMCK100E><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK100EB> "<CSMMCK100E><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK100EA> "<CSMMCK100E><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK100EADot> "<CSMMCK100E><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK100EB> "<CSMMCK100E><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K100EA> "<CSMMCK100E><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K100EADot> "<CSMMCK100E><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K100EB> "<CSMMCK100E><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K100EA> "<CSMMCK100E><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K100EADot> "<CSMMCK100E><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K100EB> "<CSMMCK100E><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K100EA> "<CSMMCK100E><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K100EADot> "<CSMMCK100E><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K100EB> "<CSMMCK100E><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK100EA> "<CSMMCK100E><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK100EADot> "<CSMMCK100E><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK100EB> "<CSMMCK100E><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K100EA> "<CSMMCK100E><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K100EADot> "<CSMMCK100E><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K100EB> "<CSMMCK100E><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K100EA> "<CSMMCK100E><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K100EADot> "<CSMMCK100E><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K100EB> "<CSMMCK100E><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK100EA> "<CSMMCK100E><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK100EADot> "<CSMMCK100E><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK100EB> "<CSMMCK100E><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK100FA> "<CSMMCK100F><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK100FADot> "<CSMMCK100F><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK100FB> "<CSMMCK100F><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K100FA> "<CSMMCK100F><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K100FADot> "<CSMMCK100F><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K100FB> "<CSMMCK100F><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK100FA> "<CSMMCK100F><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK100FADot> "<CSMMCK100F><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK100FB> "<CSMMCK100F><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK100FA> "<CSMMCK100F><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK100FADot> "<CSMMCK100F><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK100FB> "<CSMMCK100F><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK100FA> "<CSMMCK100F><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK100FADot> "<CSMMCK100F><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK100FB> "<CSMMCK100F><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K100FA> "<CSMMCK100F><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K100FADot> "<CSMMCK100F><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K100FB> "<CSMMCK100F><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K100FA> "<CSMMCK100F><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K100FADot> "<CSMMCK100F><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K100FB> "<CSMMCK100F><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K100FA> "<CSMMCK100F><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K100FADot> "<CSMMCK100F><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K100FB> "<CSMMCK100F><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK100FA> "<CSMMCK100F><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK100FADot> "<CSMMCK100F><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK100FB> "<CSMMCK100F><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K100FA> "<CSMMCK100F><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K100FADot> "<CSMMCK100F><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K100FB> "<CSMMCK100F><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K100FA> "<CSMMCK100F><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K100FADot> "<CSMMCK100F><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K100FB> "<CSMMCK100F><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK100FA> "<CSMMCK100F><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK100FADot> "<CSMMCK100F><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK100FB> "<CSMMCK100F><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1010A> "<CSMMCK1010><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1010ADot> "<CSMMCK1010><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1010B> "<CSMMCK1010><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1010A> "<CSMMCK1010><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1010ADot> "<CSMMCK1010><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1010B> "<CSMMCK1010><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1010A> "<CSMMCK1010><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1010ADot> "<CSMMCK1010><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1010B> "<CSMMCK1010><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1010A> "<CSMMCK1010><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1010ADot> "<CSMMCK1010><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1010B> "<CSMMCK1010><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1010A> "<CSMMCK1010><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1010ADot> "<CSMMCK1010><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1010B> "<CSMMCK1010><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1010A> "<CSMMCK1010><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1010ADot> "<CSMMCK1010><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1010B> "<CSMMCK1010><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1010A> "<CSMMCK1010><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1010ADot> "<CSMMCK1010><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1010B> "<CSMMCK1010><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1010A> "<CSMMCK1010><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1010ADot> "<CSMMCK1010><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1010B> "<CSMMCK1010><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1010A> "<CSMMCK1010><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1010ADot> "<CSMMCK1010><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1010B> "<CSMMCK1010><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1010A> "<CSMMCK1010><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1010ADot> "<CSMMCK1010><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1010B> "<CSMMCK1010><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1010A> "<CSMMCK1010><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1010ADot> "<CSMMCK1010><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1010B> "<CSMMCK1010><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1010A> "<CSMMCK1010><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1010ADot> "<CSMMCK1010><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1010B> "<CSMMCK1010><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1011A> "<CSMMCK1011><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1011ADot> "<CSMMCK1011><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1011B> "<CSMMCK1011><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1011A> "<CSMMCK1011><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1011ADot> "<CSMMCK1011><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1011B> "<CSMMCK1011><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1011A> "<CSMMCK1011><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1011ADot> "<CSMMCK1011><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1011B> "<CSMMCK1011><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1011A> "<CSMMCK1011><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1011ADot> "<CSMMCK1011><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1011B> "<CSMMCK1011><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1011A> "<CSMMCK1011><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1011ADot> "<CSMMCK1011><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1011B> "<CSMMCK1011><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1011A> "<CSMMCK1011><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1011ADot> "<CSMMCK1011><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1011B> "<CSMMCK1011><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1011A> "<CSMMCK1011><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1011ADot> "<CSMMCK1011><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1011B> "<CSMMCK1011><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1011A> "<CSMMCK1011><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1011ADot> "<CSMMCK1011><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1011B> "<CSMMCK1011><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1011A> "<CSMMCK1011><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1011ADot> "<CSMMCK1011><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1011B> "<CSMMCK1011><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1011A> "<CSMMCK1011><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1011ADot> "<CSMMCK1011><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1011B> "<CSMMCK1011><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1011A> "<CSMMCK1011><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1011ADot> "<CSMMCK1011><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1011B> "<CSMMCK1011><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1011A> "<CSMMCK1011><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1011ADot> "<CSMMCK1011><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1011B> "<CSMMCK1011><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1012A> "<CSMMCK1012><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1012ADot> "<CSMMCK1012><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1012B> "<CSMMCK1012><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1012A> "<CSMMCK1012><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1012ADot> "<CSMMCK1012><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1012B> "<CSMMCK1012><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1012A> "<CSMMCK1012><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1012ADot> "<CSMMCK1012><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1012B> "<CSMMCK1012><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1012A> "<CSMMCK1012><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1012ADot> "<CSMMCK1012><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1012B> "<CSMMCK1012><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1012A> "<CSMMCK1012><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1012ADot> "<CSMMCK1012><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1012B> "<CSMMCK1012><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1012A> "<CSMMCK1012><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1012ADot> "<CSMMCK1012><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1012B> "<CSMMCK1012><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1012A> "<CSMMCK1012><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1012ADot> "<CSMMCK1012><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1012B> "<CSMMCK1012><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1012A> "<CSMMCK1012><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1012ADot> "<CSMMCK1012><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1012B> "<CSMMCK1012><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1012A> "<CSMMCK1012><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1012ADot> "<CSMMCK1012><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1012B> "<CSMMCK1012><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1012A> "<CSMMCK1012><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1012ADot> "<CSMMCK1012><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1012B> "<CSMMCK1012><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1012A> "<CSMMCK1012><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1012ADot> "<CSMMCK1012><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1012B> "<CSMMCK1012><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1012A> "<CSMMCK1012><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1012ADot> "<CSMMCK1012><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1012B> "<CSMMCK1012><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1013A> "<CSMMCK1013><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1013ADot> "<CSMMCK1013><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1013B> "<CSMMCK1013><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1013A> "<CSMMCK1013><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1013ADot> "<CSMMCK1013><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1013B> "<CSMMCK1013><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1013A> "<CSMMCK1013><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1013ADot> "<CSMMCK1013><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1013B> "<CSMMCK1013><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1013A> "<CSMMCK1013><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1013ADot> "<CSMMCK1013><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1013B> "<CSMMCK1013><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1013A> "<CSMMCK1013><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1013ADot> "<CSMMCK1013><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1013B> "<CSMMCK1013><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1013A> "<CSMMCK1013><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1013ADot> "<CSMMCK1013><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1013B> "<CSMMCK1013><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1013A> "<CSMMCK1013><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1013ADot> "<CSMMCK1013><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1013B> "<CSMMCK1013><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1013A> "<CSMMCK1013><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1013ADot> "<CSMMCK1013><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1013B> "<CSMMCK1013><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1013A> "<CSMMCK1013><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1013ADot> "<CSMMCK1013><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1013B> "<CSMMCK1013><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1013A> "<CSMMCK1013><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1013ADot> "<CSMMCK1013><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1013B> "<CSMMCK1013><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1013A> "<CSMMCK1013><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1013ADot> "<CSMMCK1013><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1013B> "<CSMMCK1013><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1013A> "<CSMMCK1013><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1013ADot> "<CSMMCK1013><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1013B> "<CSMMCK1013><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1014A> "<CSMMCK1014><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1014ADot> "<CSMMCK1014><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1014B> "<CSMMCK1014><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1014A> "<CSMMCK1014><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1014ADot> "<CSMMCK1014><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1014B> "<CSMMCK1014><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1014A> "<CSMMCK1014><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1014ADot> "<CSMMCK1014><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1014B> "<CSMMCK1014><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1014A> "<CSMMCK1014><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1014ADot> "<CSMMCK1014><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1014B> "<CSMMCK1014><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1014A> "<CSMMCK1014><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1014ADot> "<CSMMCK1014><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1014B> "<CSMMCK1014><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1014A> "<CSMMCK1014><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1014ADot> "<CSMMCK1014><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1014B> "<CSMMCK1014><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1014A> "<CSMMCK1014><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1014ADot> "<CSMMCK1014><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1014B> "<CSMMCK1014><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1014A> "<CSMMCK1014><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1014ADot> "<CSMMCK1014><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1014B> "<CSMMCK1014><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1014A> "<CSMMCK1014><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1014ADot> "<CSMMCK1014><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1014B> "<CSMMCK1014><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1014A> "<CSMMCK1014><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1014ADot> "<CSMMCK1014><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1014B> "<CSMMCK1014><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1014A> "<CSMMCK1014><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1014ADot> "<CSMMCK1014><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1014B> "<CSMMCK1014><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1014A> "<CSMMCK1014><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1014ADot> "<CSMMCK1014><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1014B> "<CSMMCK1014><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1015A> "<CSMMCK1015><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1015ADot> "<CSMMCK1015><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1015B> "<CSMMCK1015><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1015A> "<CSMMCK1015><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1015ADot> "<CSMMCK1015><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1015B> "<CSMMCK1015><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1015A> "<CSMMCK1015><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1015ADot> "<CSMMCK1015><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1015B> "<CSMMCK1015><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1015A> "<CSMMCK1015><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1015ADot> "<CSMMCK1015><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1015B> "<CSMMCK1015><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1015A> "<CSMMCK1015><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1015ADot> "<CSMMCK1015><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1015B> "<CSMMCK1015><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1015A> "<CSMMCK1015><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1015ADot> "<CSMMCK1015><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1015B> "<CSMMCK1015><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1015A> "<CSMMCK1015><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1015ADot> "<CSMMCK1015><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1015B> "<CSMMCK1015><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1015A> "<CSMMCK1015><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1015ADot> "<CSMMCK1015><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1015B> "<CSMMCK1015><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1015A> "<CSMMCK1015><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1015ADot> "<CSMMCK1015><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1015B> "<CSMMCK1015><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1015A> "<CSMMCK1015><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1015ADot> "<CSMMCK1015><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1015B> "<CSMMCK1015><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1015A> "<CSMMCK1015><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1015ADot> "<CSMMCK1015><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1015B> "<CSMMCK1015><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1015A> "<CSMMCK1015><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1015ADot> "<CSMMCK1015><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1015B> "<CSMMCK1015><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1016A> "<CSMMCK1016><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1016ADot> "<CSMMCK1016><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1016B> "<CSMMCK1016><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1016A> "<CSMMCK1016><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1016ADot> "<CSMMCK1016><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1016B> "<CSMMCK1016><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1016A> "<CSMMCK1016><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1016ADot> "<CSMMCK1016><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1016B> "<CSMMCK1016><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1016A> "<CSMMCK1016><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1016ADot> "<CSMMCK1016><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1016B> "<CSMMCK1016><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1016A> "<CSMMCK1016><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1016ADot> "<CSMMCK1016><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1016B> "<CSMMCK1016><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1016A> "<CSMMCK1016><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1016ADot> "<CSMMCK1016><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1016B> "<CSMMCK1016><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1016A> "<CSMMCK1016><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1016ADot> "<CSMMCK1016><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1016B> "<CSMMCK1016><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1016A> "<CSMMCK1016><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1016ADot> "<CSMMCK1016><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1016B> "<CSMMCK1016><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1016A> "<CSMMCK1016><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1016ADot> "<CSMMCK1016><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1016B> "<CSMMCK1016><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1016A> "<CSMMCK1016><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1016ADot> "<CSMMCK1016><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1016B> "<CSMMCK1016><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1016A> "<CSMMCK1016><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1016ADot> "<CSMMCK1016><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1016B> "<CSMMCK1016><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1016A> "<CSMMCK1016><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1016ADot> "<CSMMCK1016><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1016B> "<CSMMCK1016><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1017A> "<CSMMCK1017><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1017ADot> "<CSMMCK1017><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1017B> "<CSMMCK1017><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1017A> "<CSMMCK1017><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1017ADot> "<CSMMCK1017><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1017B> "<CSMMCK1017><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1017A> "<CSMMCK1017><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1017ADot> "<CSMMCK1017><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1017B> "<CSMMCK1017><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1017A> "<CSMMCK1017><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1017ADot> "<CSMMCK1017><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1017B> "<CSMMCK1017><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1017A> "<CSMMCK1017><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1017ADot> "<CSMMCK1017><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1017B> "<CSMMCK1017><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1017A> "<CSMMCK1017><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1017ADot> "<CSMMCK1017><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1017B> "<CSMMCK1017><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1017A> "<CSMMCK1017><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1017ADot> "<CSMMCK1017><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1017B> "<CSMMCK1017><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1017A> "<CSMMCK1017><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1017ADot> "<CSMMCK1017><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1017B> "<CSMMCK1017><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1017A> "<CSMMCK1017><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1017ADot> "<CSMMCK1017><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1017B> "<CSMMCK1017><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1017A> "<CSMMCK1017><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1017ADot> "<CSMMCK1017><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1017B> "<CSMMCK1017><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1017A> "<CSMMCK1017><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1017ADot> "<CSMMCK1017><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1017B> "<CSMMCK1017><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1017A> "<CSMMCK1017><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1017ADot> "<CSMMCK1017><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1017B> "<CSMMCK1017><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1018A> "<CSMMCK1018><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1018ADot> "<CSMMCK1018><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1018B> "<CSMMCK1018><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1018A> "<CSMMCK1018><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1018ADot> "<CSMMCK1018><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1018B> "<CSMMCK1018><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1018A> "<CSMMCK1018><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1018ADot> "<CSMMCK1018><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1018B> "<CSMMCK1018><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1018A> "<CSMMCK1018><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1018ADot> "<CSMMCK1018><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1018B> "<CSMMCK1018><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1018A> "<CSMMCK1018><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1018ADot> "<CSMMCK1018><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1018B> "<CSMMCK1018><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1018A> "<CSMMCK1018><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1018ADot> "<CSMMCK1018><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1018B> "<CSMMCK1018><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1018A> "<CSMMCK1018><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1018ADot> "<CSMMCK1018><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1018B> "<CSMMCK1018><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1018A> "<CSMMCK1018><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1018ADot> "<CSMMCK1018><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1018B> "<CSMMCK1018><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1018A> "<CSMMCK1018><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1018ADot> "<CSMMCK1018><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1018B> "<CSMMCK1018><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1018A> "<CSMMCK1018><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1018ADot> "<CSMMCK1018><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1018B> "<CSMMCK1018><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1018A> "<CSMMCK1018><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1018ADot> "<CSMMCK1018><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1018B> "<CSMMCK1018><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1018A> "<CSMMCK1018><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1018ADot> "<CSMMCK1018><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1018B> "<CSMMCK1018><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1019A> "<CSMMCK1019><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1019ADot> "<CSMMCK1019><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1019B> "<CSMMCK1019><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1019A> "<CSMMCK1019><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1019ADot> "<CSMMCK1019><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1019B> "<CSMMCK1019><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1019A> "<CSMMCK102D1019>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1019B> "<CSMMCK102D1019>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102DK1019C> "<CSMMCK102D1036>";IGNORE;IGNORE;IGNORE
+<MMV102DK10191037A> "<CSMMCK102D10191037><CSMMV>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK10191037A2> "<CSMMCK102D10191037><CSMMV>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK10191037C> "<CSMMCK102D10361037><CSMMV>";IGNORE;IGNORE;IGNORE
+<MMV102DK10191038A> "<CSMMCK102D10191038><CSMMV>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK10191038C> "<CSMMCK102D10361038><CSMMV>";IGNORE;IGNORE;IGNORE
+<MMV102EK1019A> "<CSMMCK1019><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1019ADot> "<CSMMCK1019><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1019B> "<CSMMCK1019><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1019A> "<CSMMCK102F1019>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1019B> "<CSMMCK102F1019>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1019C> "<CSMMCK102F1036>";IGNORE;IGNORE;IGNORE
+<MMV102FK10191037A> "<CSMMCK102F10191037><CSMMV>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK10191037A2> "<CSMMCK102F10191037><CSMMV>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK10191037C> "<CSMMCK102F10361037><CSMMV>";IGNORE;IGNORE;IGNORE
+<MMV102FK10191038A> "<CSMMCK102F10191038><CSMMV>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK10191038C> "<CSMMCK102F10361038><CSMMV>";IGNORE;IGNORE;IGNORE
+<MMV1030K1019A> "<CSMMCK1019><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1019ADot> "<CSMMCK1019><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1019B> "<CSMMCK1019><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1019A> "<CSMMCK1019><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1019ADot> "<CSMMCK1019><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1019B> "<CSMMCK1019><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1019A> "<CSMMCK1019><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1019ADot> "<CSMMCK1019><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1019B> "<CSMMCK1019><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1019A> "<CSMMCK1019><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1019ADot> "<CSMMCK1019><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1019B> "<CSMMCK1019><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1019A> "<CSMMCK1019><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1019ADot> "<CSMMCK1019><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1019B> "<CSMMCK1019><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1019A> "<CSMMCK1019><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1019ADot> "<CSMMCK1019><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1019B> "<CSMMCK1019><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1019A> "<CSMMCK1019><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1019ADot> "<CSMMCK1019><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1019B> "<CSMMCK1019><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK101AA> "<CSMMCK101A><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK101AADot> "<CSMMCK101A><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK101AB> "<CSMMCK101A><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K101AA> "<CSMMCK101A><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K101AADot> "<CSMMCK101A><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K101AB> "<CSMMCK101A><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK101AA> "<CSMMCK101A><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK101AADot> "<CSMMCK101A><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK101AB> "<CSMMCK101A><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK101AA> "<CSMMCK101A><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK101AADot> "<CSMMCK101A><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK101AB> "<CSMMCK101A><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK101AA> "<CSMMCK101A><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK101AADot> "<CSMMCK101A><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK101AB> "<CSMMCK101A><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K101AA> "<CSMMCK101A><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K101AADot> "<CSMMCK101A><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K101AB> "<CSMMCK101A><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K101AA> "<CSMMCK101A><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K101AADot> "<CSMMCK101A><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K101AB> "<CSMMCK101A><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K101AA> "<CSMMCK101A><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K101AADot> "<CSMMCK101A><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K101AB> "<CSMMCK101A><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK101AA> "<CSMMCK101A><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK101AADot> "<CSMMCK101A><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK101AB> "<CSMMCK101A><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K101AA> "<CSMMCK101A><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K101AADot> "<CSMMCK101A><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K101AB> "<CSMMCK101A><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K101AA> "<CSMMCK101A><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K101AADot> "<CSMMCK101A><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K101AB> "<CSMMCK101A><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK101AA> "<CSMMCK101A><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK101AADot> "<CSMMCK101A><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK101AB> "<CSMMCK101A><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK101BA> "<CSMMCK101B><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK101BADot> "<CSMMCK101B><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK101BB> "<CSMMCK101B><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K101BA> "<CSMMCK101B><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K101BADot> "<CSMMCK101B><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K101BB> "<CSMMCK101B><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK101BA> "<CSMMCK101B><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK101BADot> "<CSMMCK101B><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK101BB> "<CSMMCK101B><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK101BA> "<CSMMCK101B><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK101BADot> "<CSMMCK101B><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK101BB> "<CSMMCK101B><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK101BA> "<CSMMCK101B><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK101BADot> "<CSMMCK101B><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK101BB> "<CSMMCK101B><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K101BA> "<CSMMCK101B><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K101BADot> "<CSMMCK101B><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K101BB> "<CSMMCK101B><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K101BA> "<CSMMCK101B><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K101BADot> "<CSMMCK101B><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K101BB> "<CSMMCK101B><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K101BA> "<CSMMCK101B><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K101BADot> "<CSMMCK101B><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K101BB> "<CSMMCK101B><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK101BA> "<CSMMCK101B><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK101BADot> "<CSMMCK101B><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK101BB> "<CSMMCK101B><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K101BA> "<CSMMCK101B><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K101BADot> "<CSMMCK101B><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K101BB> "<CSMMCK101B><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K101BA> "<CSMMCK101B><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K101BADot> "<CSMMCK101B><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K101BB> "<CSMMCK101B><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK101BA> "<CSMMCK101B><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK101BADot> "<CSMMCK101B><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK101BB> "<CSMMCK101B><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK101CA> "<CSMMCK101C><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK101CADot> "<CSMMCK101C><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK101CB> "<CSMMCK101C><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K101CA> "<CSMMCK101C><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K101CADot> "<CSMMCK101C><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K101CB> "<CSMMCK101C><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK101CA> "<CSMMCK101C><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK101CADot> "<CSMMCK101C><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK101CB> "<CSMMCK101C><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK101CA> "<CSMMCK101C><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK101CADot> "<CSMMCK101C><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK101CB> "<CSMMCK101C><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK101CA> "<CSMMCK101C><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK101CADot> "<CSMMCK101C><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK101CB> "<CSMMCK101C><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K101CA> "<CSMMCK101C><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K101CADot> "<CSMMCK101C><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K101CB> "<CSMMCK101C><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K101CA> "<CSMMCK101C><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K101CADot> "<CSMMCK101C><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K101CB> "<CSMMCK101C><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K101CA> "<CSMMCK101C><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K101CADot> "<CSMMCK101C><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K101CB> "<CSMMCK101C><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK101CA> "<CSMMCK101C><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK101CADot> "<CSMMCK101C><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK101CB> "<CSMMCK101C><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K101CA> "<CSMMCK101C><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K101CADot> "<CSMMCK101C><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K101CB> "<CSMMCK101C><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K101CA> "<CSMMCK101C><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K101CADot> "<CSMMCK101C><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K101CB> "<CSMMCK101C><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK101CA> "<CSMMCK101C><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK101CADot> "<CSMMCK101C><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK101CB> "<CSMMCK101C><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK101DA> "<CSMMCK101D><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK101DADot> "<CSMMCK101D><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK101DB> "<CSMMCK101D><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K101DA> "<CSMMCK101D><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K101DADot> "<CSMMCK101D><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K101DB> "<CSMMCK101D><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK101DA> "<CSMMCK101D><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK101DADot> "<CSMMCK101D><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK101DB> "<CSMMCK101D><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK101DA> "<CSMMCK101D><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK101DADot> "<CSMMCK101D><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK101DB> "<CSMMCK101D><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK101DA> "<CSMMCK101D><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK101DADot> "<CSMMCK101D><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK101DB> "<CSMMCK101D><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K101DA> "<CSMMCK101D><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K101DADot> "<CSMMCK101D><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K101DB> "<CSMMCK101D><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K101DA> "<CSMMCK101D><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K101DADot> "<CSMMCK101D><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K101DB> "<CSMMCK101D><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K101DA> "<CSMMCK101D><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K101DADot> "<CSMMCK101D><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K101DB> "<CSMMCK101D><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK101DA> "<CSMMCK101D><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK101DADot> "<CSMMCK101D><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK101DB> "<CSMMCK101D><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K101DA> "<CSMMCK101D><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K101DADot> "<CSMMCK101D><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K101DB> "<CSMMCK101D><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K101DA> "<CSMMCK101D><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K101DADot> "<CSMMCK101D><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K101DB> "<CSMMCK101D><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK101DA> "<CSMMCK101D><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK101DADot> "<CSMMCK101D><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK101DB> "<CSMMCK101D><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK101EA> "<CSMMCK101E><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK101EADot> "<CSMMCK101E><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK101EB> "<CSMMCK101E><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K101EA> "<CSMMCK101E><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K101EADot> "<CSMMCK101E><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K101EB> "<CSMMCK101E><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102CK101EC> "<CSMMCK101E><CSMMV102C><U101E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102DK101EA> "<CSMMCK101E><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK101EADot> "<CSMMCK101E><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK101EB> "<CSMMCK101E><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102DK101EC> "<CSMMCK101E><CSMMV102D><U101E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK101EA> "<CSMMCK101E><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK101EADot> "<CSMMCK101E><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK101EB> "<CSMMCK101E><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK101EC> "<CSMMCK101E><CSMMV102E><U101E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK101EA> "<CSMMCK101E><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK101EADot> "<CSMMCK101E><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK101EB> "<CSMMCK101E><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK101EC> "<CSMMCK101E><CSMMV102F><U101E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K101EA> "<CSMMCK101E><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K101EADot> "<CSMMCK101E><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K101EB> "<CSMMCK101E><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K101EC> "<CSMMCK101E><CSMMV1030><U101E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K101EA> "<CSMMCK101E><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K101EADot> "<CSMMCK101E><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K101EB> "<CSMMCK101E><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K101EC> "<CSMMCK101E><CSMMV1031><U101E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K101EA> "<CSMMCK101E><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K101EADot> "<CSMMCK101E><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K101EB> "<CSMMCK101E><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K101EC> "<CSMMCK101E><CSMMV1032><U101E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK101EA> "<CSMMCK101E><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK101EADot> "<CSMMCK101E><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK101EB> "<CSMMCK101E><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K101EA> "<CSMMCK101E><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K101EADot> "<CSMMCK101E><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K101EB> "<CSMMCK101E><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1031102CK101EC> "<CSMMCK101E><CSMMV1031102C><U101E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1036K101EA> "<CSMMCK101E><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K101EADot> "<CSMMCK101E><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K101EB> "<CSMMCK101E><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1036K101EC> "<CSMMCK101E><CSMMV1036><U101E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK101EA> "<CSMMCK101E><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK101EADot> "<CSMMCK101E><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK101EB> "<CSMMCK101E><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK101EC> "<CSMMCK101E><CSMMV102D102F><U101E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK101FA> "<CSMMCK101F><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK101FADot> "<CSMMCK101F><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK101FB> "<CSMMCK101F><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K101FA> "<CSMMCK101F><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K101FADot> "<CSMMCK101F><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K101FB> "<CSMMCK101F><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK101FA> "<CSMMCK101F><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK101FADot> "<CSMMCK101F><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK101FB> "<CSMMCK101F><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK101FA> "<CSMMCK101F><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK101FADot> "<CSMMCK101F><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK101FB> "<CSMMCK101F><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK101FA> "<CSMMCK101F><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK101FADot> "<CSMMCK101F><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK101FB> "<CSMMCK101F><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K101FA> "<CSMMCK101F><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K101FADot> "<CSMMCK101F><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K101FB> "<CSMMCK101F><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K101FA> "<CSMMCK101F><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K101FADot> "<CSMMCK101F><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K101FB> "<CSMMCK101F><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K101FA> "<CSMMCK101F><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K101FADot> "<CSMMCK101F><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K101FB> "<CSMMCK101F><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK101FA> "<CSMMCK101F><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK101FADot> "<CSMMCK101F><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK101FB> "<CSMMCK101F><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K101FA> "<CSMMCK101F><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K101FADot> "<CSMMCK101F><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K101FB> "<CSMMCK101F><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K101FA> "<CSMMCK101F><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K101FADot> "<CSMMCK101F><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K101FB> "<CSMMCK101F><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK101FA> "<CSMMCK101F><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK101FADot> "<CSMMCK101F><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK101FB> "<CSMMCK101F><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CK1020A> "<CSMMCK1020><CSMMV102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1020ADot> "<CSMMCK1020><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102CK1020B> "<CSMMCK1020><CSMMV102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102CALT0K1020A> "<CSMMCK1020><CSMMV102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1020ADot> "<CSMMCK1020><CSMMV102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV102CALT0K1020B> "<CSMMCK1020><CSMMV102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV102DK1020A> "<CSMMCK1020><CSMMV102D>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1020ADot> "<CSMMCK1020><CSMMV102D><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102DK1020B> "<CSMMCK1020><CSMMV102D>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102EK1020A> "<CSMMCK1020><CSMMV102E>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1020ADot> "<CSMMCK1020><CSMMV102E><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102EK1020B> "<CSMMCK1020><CSMMV102E>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102FK1020A> "<CSMMCK1020><CSMMV102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1020ADot> "<CSMMCK1020><CSMMV102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102FK1020B> "<CSMMCK1020><CSMMV102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1030K1020A> "<CSMMCK1020><CSMMV1030>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1020ADot> "<CSMMCK1020><CSMMV1030><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1030K1020B> "<CSMMCK1020><CSMMV1030>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031K1020A> "<CSMMCK1020><CSMMV1031>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1020ADot> "<CSMMCK1020><CSMMV1031><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031K1020B> "<CSMMCK1020><CSMMV1031>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1032K1020A> "<CSMMCK1020><CSMMV1032>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1020ADot> "<CSMMCK1020><CSMMV1032><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1032K1020B> "<CSMMCK1020><CSMMV1032>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CK1020A> "<CSMMCK1020><CSMMV1031102C>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1020ADot> "<CSMMCK1020><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1031102CK1020B> "<CSMMCK1020><CSMMV1031102C>";"<MMSTACK>";IGNORE;IGNORE
+<MMV1031102CALT0K1020A> "<CSMMCK1020><CSMMV1031102C>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1020ADot> "<CSMMCK1020><CSMMV1031102C><CSMMT1037>";"<MMKILLED>";IGNORE;<MMALT>
+<MMV1031102CALT0K1020B> "<CSMMCK1020><CSMMV1031102C>";"<MMSTACK>";IGNORE;<MMALT>
+<MMV1036K1020A> "<CSMMCK1020><CSMMV1036>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1020ADot> "<CSMMCK1020><CSMMV1036><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV1036K1020B> "<CSMMCK1020><CSMMV1036>";"<MMSTACK>";IGNORE;IGNORE
+<MMV102D102FK1020A> "<CSMMCK1020><CSMMV102D102F>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1020ADot> "<CSMMCK1020><CSMMV102D102F><CSMMT1037>";"<MMKILLED>";IGNORE;IGNORE
+<MMV102D102FK1020B> "<CSMMCK1020><CSMMV102D102F>";"<MMSTACK>";IGNORE;IGNORE
+<MMK1000A> <CSMMCK1000>;<MMSTACK>;IGNORE;IGNORE
+<MMK1000B> <CSMMCK1000>;<MMKILLED>;IGNORE;IGNORE
+<MMK1000BDot> "<CSMMCK1000><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1001A> <CSMMCK1001>;<MMSTACK>;IGNORE;IGNORE
+<MMK1001B> <CSMMCK1001>;<MMKILLED>;IGNORE;IGNORE
+<MMK1001BDot> "<CSMMCK1001><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1002A> <CSMMCK1002>;<MMSTACK>;IGNORE;IGNORE
+<MMK1002B> <CSMMCK1002>;<MMKILLED>;IGNORE;IGNORE
+<MMK1002BDot> "<CSMMCK1002><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1003A> <CSMMCK1003>;<MMSTACK>;IGNORE;IGNORE
+<MMK1003B> <CSMMCK1003>;<MMKILLED>;IGNORE;IGNORE
+<MMK1003BDot> "<CSMMCK1003><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1004A> <CSMMCK1004>;<MMSTACK>;IGNORE;IGNORE
+<MMK1004B> <CSMMCK1004>;<MMKILLED>;IGNORE;IGNORE
+<MMK1004BDot> "<CSMMCK1004><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1005A> <CSMMCK1005>;<MMSTACK>;IGNORE;IGNORE
+<MMK1005B> <CSMMCK1005>;<MMKILLED>;IGNORE;IGNORE
+<MMK1005BDot> "<CSMMCK1005><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1006A> <CSMMCK1006>;<MMSTACK>;IGNORE;IGNORE
+<MMK1006B> <CSMMCK1006>;<MMKILLED>;IGNORE;IGNORE
+<MMK1006BDot> "<CSMMCK1006><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1007A> <CSMMCK1007>;<MMSTACK>;IGNORE;IGNORE
+<MMK1007B> <CSMMCK1007>;<MMKILLED>;IGNORE;IGNORE
+<MMK1007BDot> "<CSMMCK1007><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1009A> <CSMMCK1009>;<MMSTACK>;IGNORE;IGNORE
+<MMK1009B> <CSMMCK1009>;<MMKILLED>;IGNORE;IGNORE
+<MMK1009BDot> "<CSMMCK1009><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK100AA> <CSMMCK100A>;<MMSTACK>;IGNORE;IGNORE
+<MMK100AB> <CSMMCK100A>;<MMKILLED>;IGNORE;IGNORE
+<MMK100ABDot> "<CSMMCK100A><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK100BA> <CSMMCK100B>;<MMSTACK>;IGNORE;IGNORE
+<MMK100BB> <CSMMCK100B>;<MMKILLED>;IGNORE;IGNORE
+<MMK100BBDot> "<CSMMCK100B><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK100CA> <CSMMCK100C>;<MMSTACK>;IGNORE;IGNORE
+<MMK100CB> <CSMMCK100C>;<MMKILLED>;IGNORE;IGNORE
+<MMK100CBDot> "<CSMMCK100C><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK100DA> <CSMMCK100D>;<MMSTACK>;IGNORE;IGNORE
+<MMK100DB> <CSMMCK100D>;<MMKILLED>;IGNORE;IGNORE
+<MMK100DBDot> "<CSMMCK100D><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK100EA> <CSMMCK100E>;<MMSTACK>;IGNORE;IGNORE
+<MMK100EB> <CSMMCK100E>;<MMKILLED>;IGNORE;IGNORE
+<MMK100EBDot> "<CSMMCK100E><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK100FA> <CSMMCK100F>;<MMSTACK>;IGNORE;IGNORE
+<MMK100FB> <CSMMCK100F>;<MMKILLED>;IGNORE;IGNORE
+<MMK100FBDot> "<CSMMCK100F><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1010A> <CSMMCK1010>;<MMSTACK>;IGNORE;IGNORE
+<MMK1010B> <CSMMCK1010>;<MMKILLED>;IGNORE;IGNORE
+<MMK1010BDot> "<CSMMCK1010><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1011A> <CSMMCK1011>;<MMSTACK>;IGNORE;IGNORE
+<MMK1011B> <CSMMCK1011>;<MMKILLED>;IGNORE;IGNORE
+<MMK1011BDot> "<CSMMCK1011><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1012A> <CSMMCK1012>;<MMSTACK>;IGNORE;IGNORE
+<MMK1012B> <CSMMCK1012>;<MMKILLED>;IGNORE;IGNORE
+<MMK1012BDot> "<CSMMCK1012><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1013A> <CSMMCK1013>;<MMSTACK>;IGNORE;IGNORE
+<MMK1013B> <CSMMCK1013>;<MMKILLED>;IGNORE;IGNORE
+<MMK1013BDot> "<CSMMCK1013><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1014A> <CSMMCK1014>;<MMSTACK>;IGNORE;IGNORE
+<MMK1014B> <CSMMCK1014>;<MMKILLED>;IGNORE;IGNORE
+<MMK1014BDot> "<CSMMCK1014><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1015A> <CSMMCK1015>;<MMSTACK>;IGNORE;IGNORE
+<MMK1015B> <CSMMCK1015>;<MMKILLED>;IGNORE;IGNORE
+<MMK1015BDot> "<CSMMCK1015><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1016A> <CSMMCK1016>;<MMSTACK>;IGNORE;IGNORE
+<MMK1016B> <CSMMCK1016>;<MMKILLED>;IGNORE;IGNORE
+<MMK1016BDot> "<CSMMCK1016><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1017A> <CSMMCK1017>;<MMSTACK>;IGNORE;IGNORE
+<MMK1017B> <CSMMCK1017>;<MMKILLED>;IGNORE;IGNORE
+<MMK1017BDot> "<CSMMCK1017><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1018A> <CSMMCK1018>;<MMSTACK>;IGNORE;IGNORE
+<MMK1018B> <CSMMCK1018>;<MMKILLED>;IGNORE;IGNORE
+<MMK1018BDot> "<CSMMCK1018><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1019A> <CSMMCK1019>;<MMSTACK>;IGNORE;IGNORE
+<MMK1019B> <CSMMCK1019>;<MMKILLED>;IGNORE;IGNORE
+<MMK1019BDot> "<CSMMCK1019><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK101AA> <CSMMCK101A>;<MMSTACK>;IGNORE;IGNORE
+<MMK101AB> <CSMMCK101A>;<MMKILLED>;IGNORE;IGNORE
+<MMK101ABDot> "<CSMMCK101A><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK101BA> <CSMMCK101B>;<MMSTACK>;IGNORE;IGNORE
+<MMK101BB> <CSMMCK101B>;<MMKILLED>;IGNORE;IGNORE
+<MMK101BBDot> "<CSMMCK101B><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK101CA> <CSMMCK101C>;<MMSTACK>;IGNORE;IGNORE
+<MMK101CB> <CSMMCK101C>;<MMKILLED>;IGNORE;IGNORE
+<MMK101CBDot> "<CSMMCK101C><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK101DA> <CSMMCK101D>;<MMSTACK>;IGNORE;IGNORE
+<MMK101DB> <CSMMCK101D>;<MMKILLED>;IGNORE;IGNORE
+<MMK101DBDot> "<CSMMCK101D><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK101EA> <CSMMCK101E>;<MMSTACK>;IGNORE;IGNORE
+<MMK101EB> <CSMMCK101E>;<MMKILLED>;IGNORE;IGNORE
+<MMK101EBDot> "<CSMMCK101E><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK101FA> <CSMMCK101F>;<MMSTACK>;IGNORE;IGNORE
+<MMK101FB> <CSMMCK101F>;<MMKILLED>;IGNORE;IGNORE
+<MMK101FBDot> "<CSMMCK101F><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<MMK1020A> <CSMMCK1020>;<MMSTACK>;IGNORE;IGNORE
+<MMK1020B> <CSMMCK1020>;<MMKILLED>;IGNORE;IGNORE
+<MMK1020BDot> "<CSMMCK1020><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<U1000> <CSMMC1000>;IGNORE;IGNORE;IGNORE
+<U1075> <CSMMC1075>;IGNORE;IGNORE;IGNORE
+<U1001> <CSMMC1001>;IGNORE;IGNORE;IGNORE
+<U1076> <CSMMC1076>;IGNORE;IGNORE;IGNORE
+<U1002> <CSMMC1002>;IGNORE;IGNORE;IGNORE
+<U1077> <CSMMC1077>;IGNORE;IGNORE;IGNORE
+<U1003> <CSMMC1003>;IGNORE;IGNORE;IGNORE
+<U1004> <CSMMC1004>;IGNORE;IGNORE;IGNORE
+<U105A> <CSMMC105A>;IGNORE;IGNORE;IGNORE
+<U1005> <CSMMC1005>;IGNORE;IGNORE;IGNORE
+<U1078> <CSMMC1078>;IGNORE;IGNORE;IGNORE
+<U1006> <CSMMC1006>;IGNORE;IGNORE;IGNORE
+<U1007> <CSMMC1007>;IGNORE;IGNORE;IGNORE
+<U1079> <CSMMC1079>;IGNORE;IGNORE;IGNORE
+<U1008> <CSMMC1008>;IGNORE;IGNORE;IGNORE
+<U105B> <CSMMC105B>;IGNORE;IGNORE;IGNORE
+<U1061> <CSMMC1061>;IGNORE;IGNORE;IGNORE
+<U1009> <CSMMC1009>;IGNORE;IGNORE;IGNORE
+<U107A> <CSMMC107A>;IGNORE;IGNORE;IGNORE
+<U100A> <CSMMC100A>;IGNORE;IGNORE;IGNORE
+<U100B> <CSMMC100B>;IGNORE;IGNORE;IGNORE
+<U100C> <CSMMC100C>;IGNORE;IGNORE;IGNORE
+<U100D> <CSMMC100D>;IGNORE;IGNORE;IGNORE
+<U100E> <CSMMC100E>;IGNORE;IGNORE;IGNORE
+<U100F> <CSMMC100F>;IGNORE;IGNORE;IGNORE
+<U106E> <CSMMC106E>;IGNORE;IGNORE;IGNORE
+<U1010> <CSMMC1010>;IGNORE;IGNORE;IGNORE
+<U1011> <CSMMC1011>;IGNORE;IGNORE;IGNORE
+<U1012> <CSMMC1012>;IGNORE;IGNORE;IGNORE
+<U107B> <CSMMC107B>;IGNORE;IGNORE;IGNORE
+<U1013> <CSMMC1013>;IGNORE;IGNORE;IGNORE
+<U1014> <CSMMC1014>;IGNORE;IGNORE;IGNORE
+<U107C> <CSMMC107C>;IGNORE;IGNORE;IGNORE
+<U1015> <CSMMC1015>;IGNORE;IGNORE;IGNORE
+<U1016> <CSMMC1016>;IGNORE;IGNORE;IGNORE
+<U107D> <CSMMC107D>;IGNORE;IGNORE;IGNORE
+<U107E> <CSMMC107E>;IGNORE;IGNORE;IGNORE
+<U108E> <CSMMC108E>;IGNORE;IGNORE;IGNORE
+<U1017> <CSMMC1017>;IGNORE;IGNORE;IGNORE
+<U107F> <CSMMC107F>;IGNORE;IGNORE;IGNORE
+<U1018> <CSMMC1018>;IGNORE;IGNORE;IGNORE
+<U1019> <CSMMC1019>;IGNORE;IGNORE;IGNORE
+<U101A> <CSMMC101A>;IGNORE;IGNORE;IGNORE
+<U101B> <CSMMC101B>;IGNORE;IGNORE;IGNORE
+<U101C> <CSMMC101C>;IGNORE;IGNORE;IGNORE
+<U101D> <CSMMC101D>;IGNORE;IGNORE;IGNORE
+<U1080> <CSMMC1080>;IGNORE;IGNORE;IGNORE
+<U1050> <CSMMC1050>;IGNORE;IGNORE;IGNORE
+<U1051> <CSMMC1051>;IGNORE;IGNORE;IGNORE
+<U1065> <CSMMC1065>;IGNORE;IGNORE;IGNORE
+<U101E> <CSMMC101E>;IGNORE;IGNORE;IGNORE
+<U101F> <CSMMC101F>;IGNORE;IGNORE;IGNORE
+<U1081> <CSMMC1081>;IGNORE;IGNORE;IGNORE
+<U1020> <CSMMC1020>;IGNORE;IGNORE;IGNORE
+<U105C> <CSMMC105C>;IGNORE;IGNORE;IGNORE
+<U105D> <CSMMC105D>;IGNORE;IGNORE;IGNORE
+<U106F> <CSMMC106F>;IGNORE;IGNORE;IGNORE
+<U1070> <CSMMC1070>;IGNORE;IGNORE;IGNORE
+<U1066> <CSMMC1066>;IGNORE;IGNORE;IGNORE
+<U1021> <CSMMC1021>;IGNORE;IGNORE;IGNORE
+<U1022> <CSMMC1022>;IGNORE;IGNORE;IGNORE
+<U1052> <CSMMC1052>;IGNORE;IGNORE;IGNORE
+<U1053> <CSMMC1053>;IGNORE;IGNORE;IGNORE
+<U1054> <CSMMC1054>;IGNORE;IGNORE;IGNORE
+<U1055> <CSMMC1055>;IGNORE;IGNORE;IGNORE
+<MMYRWH105E> "<CSMMYRWH105E>";IGNORE;IGNORE;IGNORE
+<MMYRWH105F> "<CSMMYRWH105F>";IGNORE;IGNORE;IGNORE
+<MMYRWH103B> "<CSMMYRWH103B>";IGNORE;IGNORE;IGNORE
+<MMYRWH103C> "<CSMMYRWH103C>";IGNORE;IGNORE;IGNORE
+<MMYRWH1060> "<CSMMYRWH1060>";IGNORE;IGNORE;IGNORE
+<MMYRWH103D> "<CSMMYRWH103D>";IGNORE;IGNORE;IGNORE
+<MMYRWH1082> "<CSMMYRWH1082>";IGNORE;IGNORE;IGNORE
+<MMYRWH103E> "<CSMMYRWH103E>";IGNORE;IGNORE;IGNORE
+<MMYRWH103B103D> "<CSMMYRWH103B103D>";IGNORE;IGNORE;IGNORE
+<MMYRWH103C103D> "<CSMMYRWH103C103D>";IGNORE;IGNORE;IGNORE
+<MMYRWH103B103E> "<CSMMYRWH103B103E>";IGNORE;IGNORE;IGNORE
+<MMYRWH103C103E> "<CSMMYRWH103C103E>";IGNORE;IGNORE;IGNORE
+<MMYRWH103D103E> "<CSMMYRWH103D103E>";IGNORE;IGNORE;IGNORE
+<MMYRWH103B103D103E> "<CSMMYRWH103B103D103E>";IGNORE;IGNORE;IGNORE
+<MMYRWH103C103D103E> "<CSMMYRWH103C103D103E>";IGNORE;IGNORE;IGNORE
+<MMV102C> <CSMMV102C>;IGNORE;IGNORE;IGNORE
+<MMV102CALT0> <CSMMV102C>;IGNORE;IGNORE;<MMALT>
+<MMV1083> <CSMMV1083>;IGNORE;IGNORE;IGNORE
+<MMV1072> <CSMMV1072>;IGNORE;IGNORE;IGNORE
+<MMV102D> <CSMMV102D>;IGNORE;IGNORE;IGNORE
+<MMV1071> <CSMMV1071>;IGNORE;IGNORE;IGNORE
+<MMV102E> <CSMMV102E>;IGNORE;IGNORE;IGNORE
+<MMV1062> <CSMMV1062>;IGNORE;IGNORE;IGNORE
+<MMV1067> <CSMMV1067>;IGNORE;IGNORE;IGNORE
+<MMV1068> <CSMMV1068>;IGNORE;IGNORE;IGNORE
+<MMV1033> <CSMMV1033>;IGNORE;IGNORE;IGNORE
+<MMV102F> <CSMMV102F>;IGNORE;IGNORE;IGNORE
+<MMV1073> <CSMMV1073>;IGNORE;IGNORE;IGNORE
+<MMV1074> <CSMMV1074>;IGNORE;IGNORE;IGNORE
+<MMV1030> <CSMMV1030>;IGNORE;IGNORE;IGNORE
+<MMV1056> <CSMMV1056>;IGNORE;IGNORE;IGNORE
+<MMV1057> <CSMMV1057>;IGNORE;IGNORE;IGNORE
+<MMV1058> <CSMMV1058>;IGNORE;IGNORE;IGNORE
+<MMV1059> <CSMMV1059>;IGNORE;IGNORE;IGNORE
+<MMV1031> <CSMMV1031>;IGNORE;IGNORE;IGNORE
+<MMV1035> <CSMMV1035>;IGNORE;IGNORE;IGNORE
+<MMV1084> <CSMMV1084>;IGNORE;IGNORE;IGNORE
+<MMV1085> <CSMMV1085>;IGNORE;IGNORE;IGNORE
+<MMV1032> <CSMMV1032>;IGNORE;IGNORE;IGNORE
+<MMV1031102C> <CSMMV1031102C>;IGNORE;IGNORE;IGNORE
+<MMV1031102CALT0> <CSMMV1031102C>;IGNORE;IGNORE;<MMALT>
+<MMV1031102C103A> <CSMMV1031102C103A>;IGNORE;IGNORE;IGNORE
+<MMV1031102C103AALT0> <CSMMV1031102C103A>;IGNORE;IGNORE;<MMALT>
+<MMV1034> <CSMMV1034>;IGNORE;IGNORE;IGNORE
+<MMV1036> <CSMMV1036>;IGNORE;IGNORE;IGNORE
+<MMV102D102F> <CSMMV102D102F>;IGNORE;IGNORE;IGNORE
+<MMV1063> <CSMMV1063>;IGNORE;IGNORE;IGNORE
+<MMV1086> <CSMMV1086>;IGNORE;IGNORE;IGNORE
+<MMT1069> <CSMMT1069>;IGNORE;IGNORE;IGNORE
+<MMT1037> <CSMMT1037>;IGNORE;IGNORE;IGNORE
+<MMT1087> <CSMMT1087>;IGNORE;IGNORE;IGNORE
+<MMT108B> <CSMMT108B>;IGNORE;IGNORE;IGNORE
+<MMT106A> <CSMMT106A>;IGNORE;IGNORE;IGNORE
+<MMT1062103A> <CSMMT1062103A>;IGNORE;IGNORE;IGNORE
+<MMT1088> <CSMMT1088>;IGNORE;IGNORE;IGNORE
+<MMT108C> <CSMMT108C>;IGNORE;IGNORE;IGNORE
+<MMT106B> <CSMMT106B>;IGNORE;IGNORE;IGNORE
+<MMT106C> <CSMMT106C>;IGNORE;IGNORE;IGNORE
+<MMT106D> <CSMMT106D>;IGNORE;IGNORE;IGNORE
+<MMT10691037> <CSMMT10691037>;IGNORE;IGNORE;IGNORE
+<MMT106B1037> <CSMMT106B1037>;IGNORE;IGNORE;IGNORE
+<MMT106A1037> <CSMMT106A1037>;IGNORE;IGNORE;IGNORE
+<MMT102C103A> <CSMMT102C103A>;IGNORE;IGNORE;IGNORE
+<MMT1038> <CSMMT1038>;IGNORE;IGNORE;IGNORE
+<MMT10371038> <CSMMT10371038>;IGNORE;IGNORE;IGNORE
+<MMT1089> <CSMMT1089>;IGNORE;IGNORE;IGNORE
+<MMT1063103A> <CSMMT1063103A>;IGNORE;IGNORE;IGNORE
+<MMT108A> <CSMMT108A>;IGNORE;IGNORE;IGNORE
+<MMT108D> <CSMMT108D>;IGNORE;IGNORE;IGNORE
+<MMT108F> <CSMMT108F>;IGNORE;IGNORE;IGNORE
+<MMT1064> <CSMMT1064>;IGNORE;IGNORE;IGNORE
+<U103F> "<CSMMCK101E><CSMMC101E>";<MMSTACK>;IGNORE;IGNORE
+<U1023> "<CSMMC1021><CSMMV102D>";<MYIV>;<MYIV>;<MYIV>
+<U1024> "<CSMMC1021><CSMMV102E>";<MYIV>;<MYIV>;<MYIV>
+<U1025> "<CSMMC1021><CSMMV102F>";<MYIV>;<MYIV>;<MYIV>
+<U1026> "<CSMMC1021><CSMMV1030>";<MYIV>;<MYIV>;<MYIV>
+<MMI1025102E> "<CSMMC1021><CSMMV1030>";<MYIV>;<MYIV>;<MYIV>
+<U1027> "<CSMMC1021><CSMMV1031>";<MYANMAR>;<MYIV>;<MYIV>
+<U1028> "<CSMMC1021><CSMMV1031>";<MON>;<MYIV>;<MYIV>
+<U1029> "<CSMMC1021><CSMMV1031102C>";<MYIV>;<MYIV>;<MYIV>
+<U102A> "<CSMMC1021><CSMMV1031102C103A>";<MYIV>;<MYIV>;<MYIV>
+
+<MMI1023K1005A> "<CSMMC1021><CSMMCK1005><CSMMV102D>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1023K1005B> "<CSMMC1021><CSMMCK1005><CSMMV102D>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1023K1005BDot> "<CSMMC1021><CSMMCK1005><CSMMV102D>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1023K100BA> "<CSMMC1021><CSMMCK100B><CSMMV102D>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1023K100BB> "<CSMMC1021><CSMMCK100B><CSMMV102D>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1023K100BBDot> "<CSMMC1021><CSMMCK100B><CSMMV102D>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1023K1010A> "<CSMMC1021><CSMMCK1010><CSMMV102D>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1023K1010B> "<CSMMC1021><CSMMCK1010><CSMMV102D>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1023K1010BDot> "<CSMMC1021><CSMMCK1010><CSMMV102D>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1023K1012A> "<CSMMC1021><CSMMCK1012><CSMMV102D>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1023K1012B> "<CSMMC1021><CSMMCK1012><CSMMV102D>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1023K1012BDot> "<CSMMC1021><CSMMCK1012><CSMMV102D>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1023K1014A> "<CSMMC1021><CSMMCK1014><CSMMV102D>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1023K1014B> "<CSMMC1021><CSMMCK1014><CSMMV102D>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1023K1014BDot> "<CSMMC1021><CSMMCK1014><CSMMV102D>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1023K1019A> "<CSMMC1021><CSMMCK102D1019>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1023K1019B> "<CSMMC1021><CSMMCK102D1019>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1023K1019BDot> "<CSMMC1021><CSMMCK102D1019>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1023K101E> "<CSMMC1021><CSMMCK101E><CSMMV102D><CSMMC101E>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1025K1000A> "<CSMMC1021><CSMMCK1000><CSMMV102F>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1025K1000B> "<CSMMC1021><CSMMCK1000><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1000BDot> "<CSMMC1021><CSMMCK1000><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1005A> "<CSMMC1021><CSMMCK1005><CSMMV102F>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1025K1005B> "<CSMMC1021><CSMMCK1005><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1005BDot> "<CSMMC1021><CSMMCK1005><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K100AA> "<CSMMC1021><CSMMCK100A><CSMMV102F>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1025K100AB> "<CSMMC1021><CSMMCK100A><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K100ABDot> "<CSMMC1021><CSMMCK100A><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K100FA> "<CSMMC1021><CSMMCK100F><CSMMV102F>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1025K100FB> "<CSMMC1021><CSMMCK100F><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K100FBDot> "<CSMMC1021><CSMMCK100F><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1010A> "<CSMMC1021><CSMMCK1010><CSMMV102F>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1025K1010B> "<CSMMC1021><CSMMCK1010><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1010BDot> "<CSMMC1021><CSMMCK1010><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1012A> "<CSMMC1021><CSMMCK1012><CSMMV102F>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1025K1012B> "<CSMMC1021><CSMMCK1012><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1012BDot> "<CSMMC1021><CSMMCK1012><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1014A> "<CSMMC1021><CSMMCK1014><CSMMV102F>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1025K1014B> "<CSMMC1021><CSMMCK1014><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1014BDot> "<CSMMC1021><CSMMCK1014><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1015A> "<CSMMC1021><CSMMCK1015><CSMMV102F>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1025K1015B> "<CSMMC1021><CSMMCK1015><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1015BDot> "<CSMMC1021><CSMMCK1015><CSMMV102F>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1019A> "<CSMMC1021><CSMMCK102F1019>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1025K1019B> "<CSMMC1021><CSMMCK102F1019>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1019BDot> "<CSMMC1021><CSMMCK102F1019>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K1036> "<CSMMC1021><CSMMCK102F1036>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1025K101E> "<CSMMC1021><CSMMCK101E><CSMMV102F><CSMMC101E>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1027K100AA> "<CSMMC1021><CSMMCK100A><CSMMV1031>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1027K100AB> "<CSMMC1021><CSMMCK100A><CSMMV1031>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1027K100ABDot> "<CSMMC1021><CSMMCK100A><CSMMV1031>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1029K100BA> "<CSMMC1021><CSMMCK100B><CSMMV1031102C>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1029K100BB> "<CSMMC1021><CSMMCK100B><CSMMV1031102C>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1029K100BBDot> "<CSMMC1021><CSMMCK100B><CSMMV1031102C>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1029K1010A> "<CSMMC1021><CSMMCK1010><CSMMV1031102C>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI1029K1010B> "<CSMMC1021><CSMMCK1010><CSMMV1031102C>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI1029K1010BDot> "<CSMMC1021><CSMMCK1010><CSMMV1031102C>";<MMKILLED>;<MYIV>;<MYIV>
+<MMI10291031102CK1004A> "<CSMMC1021><CSMMCK1004><CSMMV1031102C>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI10291031102CK1004B> "<CSMMC1021><CSMMCK1004><CSMMV1031102C>";<MMSTACK>;<MYIV>;<MYIV>
+<MMI10291031102CK1004BDot> "<CSMMC1021><CSMMCK1004><CSMMV1031102C>";<MMSTACK>;<MYIV>;<MYIV>
+<MM_Man> "<CSMMC101A><CSMMCK1000><CSMMV1031102C><CSMMC1000><CSMMYRWH103B><CSMMV102C><CSMMT1037>";IGNORE;IGNORE;IGNORE
+<MM_FirstPerson> "<CSMMC1000><CSMMYRWH103B103D><CSMMCK1014><CSMMC1014><CSMMCK1015><CSMMV102F>";IGNORE;IGNORE;IGNORE
+<MM_RightPali> "<CSMMC101C><CSMMCK1000><CSMMC101A><CSMMV102C>";<MMALT>;IGNORE;IGNORE
+<MM_Daughter> "<CSMMC101E><CSMMC1019><CSMMV102E>";<MMALT>;IGNORE;IGNORE
+<MM_Rice> "<CSMMC1011><CSMMC1019><CSMMCK1004><CSMMT1038>";<MMALT>;IGNORE;IGNORE
+<MM_Tea> "<CSMMC101C><CSMMCK1000><CSMMC1018><CSMMCK1000>";<MMALT>;IGNORE;IGNORE
+<U104C> "<CSMMC1014><CSMMYRWH103E><CSMMCK1000><CSMMV102D102F>";<MMKILLED>;IGNORE;IGNORE
+<U104D> "<CSMMC101B><CSMMYRWH103D><CSMMV1031><CSMMT1037>";<MMKILLED>;IGNORE;IGNORE
+<U104E> "<CSMMC101C><CSMMCK100A><MMT1038><CSMMC1000><CSMMCK1004><CSMMV1031102C><MMT1038>";<MMALT>;IGNORE;IGNORE
+<U104F> "<CSMMC1021><CSMMV102D>";<MMALT>;IGNORE;IGNORE
+
order_end
END LC_COLLATE
diff --git a/localedata/locales/it_CH b/localedata/locales/it_CH
index 4fdc50a4b8..51a28464c0 100644
--- a/localedata/locales/it_CH
+++ b/localedata/locales/it_CH
@@ -64,42 +64,42 @@ END LC_NUMERIC
LC_TIME
abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/
- "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/
- "<U0067><U0069><U006F>";"<U0076><U0065><U006E>";/
- "<U0073><U0061><U0062>"
+ "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/
+ "<U0067><U0069><U006F>";"<U0076><U0065><U006E>";/
+ "<U0073><U0061><U0062>"
day "<U0064><U006F><U006D><U0065><U006E><U0069><U0063><U0061>";/
- "<U006C><U0075><U006E><U0065><U0064><U00EC>";/
- "<U006D><U0061><U0072><U0074><U0065><U0064><U00EC>";/
- "<U006D><U0065><U0072><U0063><U006F><U006C><U0065><U0064><U00EC>";/
- "<U0067><U0069><U006F><U0076><U0065><U0064><U00EC>";/
- "<U0076><U0065><U006E><U0065><U0072><U0064><U00EC>";/
- "<U0073><U0061><U0062><U0061><U0074><U006F>"
+ "<U006C><U0075><U006E><U0065><U0064><U00EC>";/
+ "<U006D><U0061><U0072><U0074><U0065><U0064><U00EC>";/
+ "<U006D><U0065><U0072><U0063><U006F><U006C><U0065><U0064><U00EC>";/
+ "<U0067><U0069><U006F><U0076><U0065><U0064><U00EC>";/
+ "<U0076><U0065><U006E><U0065><U0072><U0064><U00EC>";/
+ "<U0073><U0061><U0062><U0061><U0074><U006F>"
abmon "<U0067><U0065><U006E>";"<U0066><U0065><U0062>";/
- "<U006D><U0061><U0072>";"<U0061><U0070><U0072>";/
- "<U006D><U0061><U0067>";"<U0067><U0069><U0075>";/
- "<U006C><U0075><U0067>";"<U0061><U0067><U006F>";/
- "<U0073><U0065><U0074>";"<U006F><U0074><U0074>";/
- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>"
+ "<U006D><U0061><U0072>";"<U0061><U0070><U0072>";/
+ "<U006D><U0061><U0067>";"<U0067><U0069><U0075>";/
+ "<U006C><U0075><U0067>";"<U0061><U0067><U006F>";/
+ "<U0073><U0065><U0074>";"<U006F><U0074><U0074>";/
+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>"
mon "<U0067><U0065><U006E><U006E><U0061><U0069><U006F>";/
- "<U0066><U0065><U0062><U0062><U0072><U0061><U0069><U006F>";/
- "<U006D><U0061><U0072><U007A><U006F>";/
- "<U0061><U0070><U0072><U0069><U006C><U0065>";/
- "<U006D><U0061><U0067><U0067><U0069><U006F>";/
- "<U0067><U0069><U0075><U0067><U006E><U006F>";/
- "<U006C><U0075><U0067><U006C><U0069><U006F>";/
- "<U0061><U0067><U006F><U0073><U0074><U006F>";/
- "<U0073><U0065><U0074><U0074><U0065><U006D><U0062><U0072><U0065>";/
- "<U006F><U0074><U0074><U006F><U0062><U0072><U0065>";/
- "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/
- "<U0064><U0069><U0063><U0065><U006D><U0062><U0072><U0065>"
+ "<U0066><U0065><U0062><U0062><U0072><U0061><U0069><U006F>";/
+ "<U006D><U0061><U0072><U007A><U006F>";/
+ "<U0061><U0070><U0072><U0069><U006C><U0065>";/
+ "<U006D><U0061><U0067><U0067><U0069><U006F>";/
+ "<U0067><U0069><U0075><U0067><U006E><U006F>";/
+ "<U006C><U0075><U0067><U006C><U0069><U006F>";/
+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/
+ "<U0073><U0065><U0074><U0074><U0065><U006D><U0062><U0072><U0065>";/
+ "<U006F><U0074><U0074><U006F><U0062><U0072><U0065>";/
+ "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/
+ "<U0064><U0069><U0063><U0065><U006D><U0062><U0072><U0065>"
d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
d_fmt "<U0025><U0064><U002E><U0020><U0025><U006D><U002E><U0020><U0025><U0079>"
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
-date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
-<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
-<U0025><U005A><U0020><U0025><U0059>"
+date_fmt "<U0025><U0061><U0020><U0025><U0065><U0020><U0025>/
+<U0062><U0020><U0025><U0059><U002C><U0020><U0025><U0048><U002E>/
+<U0025><U004D><U002E><U0025><U0053><U002C><U0020><U0025><U005A>"
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/it_IT b/localedata/locales/it_IT
index 105f40c9f4..31acd53595 100644
--- a/localedata/locales/it_IT
+++ b/localedata/locales/it_IT
@@ -88,42 +88,42 @@ END LC_NUMERIC
LC_TIME
abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/
- "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/
- "<U0067><U0069><U006F>";"<U0076><U0065><U006E>";/
- "<U0073><U0061><U0062>"
+ "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/
+ "<U0067><U0069><U006F>";"<U0076><U0065><U006E>";/
+ "<U0073><U0061><U0062>"
day "<U0064><U006F><U006D><U0065><U006E><U0069><U0063><U0061>";/
- "<U006C><U0075><U006E><U0065><U0064><U00EC>";/
- "<U006D><U0061><U0072><U0074><U0065><U0064><U00EC>";/
- "<U006D><U0065><U0072><U0063><U006F><U006C><U0065><U0064><U00EC>";/
- "<U0067><U0069><U006F><U0076><U0065><U0064><U00EC>";/
- "<U0076><U0065><U006E><U0065><U0072><U0064><U00EC>";/
- "<U0073><U0061><U0062><U0061><U0074><U006F>"
+ "<U006C><U0075><U006E><U0065><U0064><U00EC>";/
+ "<U006D><U0061><U0072><U0074><U0065><U0064><U00EC>";/
+ "<U006D><U0065><U0072><U0063><U006F><U006C><U0065><U0064><U00EC>";/
+ "<U0067><U0069><U006F><U0076><U0065><U0064><U00EC>";/
+ "<U0076><U0065><U006E><U0065><U0072><U0064><U00EC>";/
+ "<U0073><U0061><U0062><U0061><U0074><U006F>"
abmon "<U0067><U0065><U006E>";"<U0066><U0065><U0062>";/
- "<U006D><U0061><U0072>";"<U0061><U0070><U0072>";/
- "<U006D><U0061><U0067>";"<U0067><U0069><U0075>";/
- "<U006C><U0075><U0067>";"<U0061><U0067><U006F>";/
- "<U0073><U0065><U0074>";"<U006F><U0074><U0074>";/
- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>"
+ "<U006D><U0061><U0072>";"<U0061><U0070><U0072>";/
+ "<U006D><U0061><U0067>";"<U0067><U0069><U0075>";/
+ "<U006C><U0075><U0067>";"<U0061><U0067><U006F>";/
+ "<U0073><U0065><U0074>";"<U006F><U0074><U0074>";/
+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>"
mon "<U0067><U0065><U006E><U006E><U0061><U0069><U006F>";/
- "<U0066><U0065><U0062><U0062><U0072><U0061><U0069><U006F>";/
- "<U006D><U0061><U0072><U007A><U006F>";/
- "<U0061><U0070><U0072><U0069><U006C><U0065>";/
- "<U006D><U0061><U0067><U0067><U0069><U006F>";/
- "<U0067><U0069><U0075><U0067><U006E><U006F>";/
- "<U006C><U0075><U0067><U006C><U0069><U006F>";/
- "<U0061><U0067><U006F><U0073><U0074><U006F>";/
- "<U0073><U0065><U0074><U0074><U0065><U006D><U0062><U0072><U0065>";/
- "<U006F><U0074><U0074><U006F><U0062><U0072><U0065>";/
- "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/
- "<U0064><U0069><U0063><U0065><U006D><U0062><U0072><U0065>"
+ "<U0066><U0065><U0062><U0062><U0072><U0061><U0069><U006F>";/
+ "<U006D><U0061><U0072><U007A><U006F>";/
+ "<U0061><U0070><U0072><U0069><U006C><U0065>";/
+ "<U006D><U0061><U0067><U0067><U0069><U006F>";/
+ "<U0067><U0069><U0075><U0067><U006E><U006F>";/
+ "<U006C><U0075><U0067><U006C><U0069><U006F>";/
+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/
+ "<U0073><U0065><U0074><U0074><U0065><U006D><U0062><U0072><U0065>";/
+ "<U006F><U0074><U0074><U006F><U0062><U0072><U0065>";/
+ "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/
+ "<U0064><U0069><U0063><U0065><U006D><U0062><U0072><U0065>"
d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
-date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
-<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
-<U0025><U005A><U0020><U0025><U0059>"
+date_fmt "<U0025><U0061><U0020><U0025><U0065><U0020><U0025>/
+<U0062><U0020><U0025><U0059><U002C><U0020><U0025><U0048><U002E>/
+<U0025><U004D><U002E><U0025><U0053><U002C><U0020><U0025><U005A>"
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/iu_CA b/localedata/locales/iu_CA
index da08366ddb..cb91f3ddfd 100644
--- a/localedata/locales/iu_CA
+++ b/localedata/locales/iu_CA
@@ -119,10 +119,8 @@ yesexpr "<U005B><U0079><U0059><U0073><U0053><U005D><U002E><U002A>"
noexpr "<U005B><U006E><U004E><U005D><U002E><U002A>"
END LC_MESSAGES
-% Default paper: A4
LC_PAPER
-height 297
-width 210
+copy "en_CA"
END LC_PAPER
% FIXME
diff --git a/localedata/locales/kn_IN b/localedata/locales/kn_IN
index 53c5fcac71..4a0a2e3409 100644
--- a/localedata/locales/kn_IN
+++ b/localedata/locales/kn_IN
@@ -36,6 +36,23 @@ END LC_IDENTIFICATION
LC_CTYPE
copy "i18n"
+% Kannada uses the alternate digits U+0CE6..U+0CEF
+outdigit <U0CE6>..<U0CEF>
+
+% This is used in the scanf family of functions to read Kannada numbers
+% using "%Id" and such.
+map to_inpunct; /
+ (<U0030>,<U0CE6>); /
+ (<U0031>,<U0CE7>); /
+ (<U0032>,<U0CE8>); /
+ (<U0033>,<U0CE9>); /
+ (<U0034>,<U0CEA>); /
+ (<U0035>,<U0CEB>); /
+ (<U0036>,<U0CEC>); /
+ (<U0037>,<U0CED>); /
+ (<U0038>,<U0CEE>); /
+ (<U0039>,<U0CEF>);
+
translit_start
include "translit_combining";""
translit_end
diff --git a/localedata/locales/ko_KR b/localedata/locales/ko_KR
index 43915c2a82..59653ad188 100644
--- a/localedata/locales/ko_KR
+++ b/localedata/locales/ko_KR
@@ -6202,7 +6202,9 @@ LC_MESSAGES
yesexpr "<U005E><U005B><U0079><U0059><UC608><U005D>"
-noexpr "<U005E><U005B><U006E><U004E><UC544><UB2C8><UC624><U005D>"
+noexpr "<U005E><U005B><U006E><U004E><UC544><U005D>"
+
+nostr "<UC544><UB2C8><UC624>"
END LC_MESSAGES
diff --git a/localedata/locales/ks_IN b/localedata/locales/ks_IN
new file mode 100644
index 0000000000..5d53c934a1
--- /dev/null
+++ b/localedata/locales/ks_IN
@@ -0,0 +1,211 @@
+comment_char %
+escape_char /
+% Kashmiri language locale for India.
+% Contributed by Pravin Satpute <psatpute@redhat.com> and
+% Mr. Mohammad Nayeem <mohammad.nayeem@gmail.com>
+
+LC_IDENTIFICATION
+
+title "Kashmiri language locale for India"
+source "Red Hat, Pune"
+address "Marisfot III, Marigold Premises, East-Wing, Kalyaninagar, Pune, India-411014"
+contact ""
+email "bug-glibc-locales@gnu.org"
+tel ""
+fax ""
+language "Kashmiri"
+territory "India"
+revision "1.0"
+date "2009,April,06"
+%
+category "ks_IN:2009";LC_IDENTIFICATION
+category "ks_IN:2009";LC_CTYPE
+category "ks_IN:2009";LC_COLLATE
+category "ks_IN:2009";LC_TIME
+category "ks_IN:2009";LC_NUMERIC
+category "ks_IN:2009";LC_MONETARY
+category "ks_IN:2009";LC_MESSAGES
+category "ks_IN:2009";LC_PAPER
+category "ks_IN:2009";LC_NAME
+category "ks_IN:2009";LC_ADDRESS
+category "ks_IN:2009";LC_TELEPHONE
+
+
+END LC_IDENTIFICATION
+
+
+LC_CTYPE
+copy "i18n"
+
+translit_start
+include "translit_combining";""
+translit_end
+END LC_CTYPE
+
+
+LC_COLLATE
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
+END LC_COLLATE
+
+
+LC_MONETARY
+% This is the POSIX Locale definition the LC_MONETARY category
+% generated by IBM Basic CountryPack Transformer.
+% These are generated based on XML base Locale defintion file
+% for IBM Class for Unicode.
+%
+int_curr_symbol "<U0049><U004E><U0052><U0020>"
+currency_symbol "<U20A8>"
+mon_decimal_point "<U002E>"
+mon_thousands_sep "<U002C>"
+mon_grouping 3
+positive_sign ""
+negative_sign "<U002D>"
+int_frac_digits 2
+frac_digits 2
+p_cs_precedes 1
+p_sep_by_space 1
+n_cs_precedes 1
+n_sep_by_space 1
+p_sign_posn 1
+n_sign_posn 1
+%
+END LC_MONETARY
+
+
+LC_NUMERIC
+copy "hi_IN"
+END LC_NUMERIC
+
+
+LC_TIME
+% This is the POSIX Locale definition for the LC_TIME category
+% generated by IBM Basic CountryPack Transformer.
+% These are generated based on XML base Locale definition file
+% for IBM Class for Unicode.
+%
+% Abbreviated weekday names (%a)
+abday "<U0622><U062A><U0647><U0648><U0627><U0631>";/
+ "<U0698><U0621><U0646><U062A><U0631><U0648><U0627><U0631>";/
+ "<U0628><U0648><U0621><U06BA><U0648><U0627><U0631>";/
+ "<U0628><U0648><U062F><U0647><U0648><U0627><U0631>";/
+ "<U0628><U0631><U0649><U0633><U0648><U0627><U0631>";/
+ "<U062C><U0645><U0639>";"<U0628><U0679><U0648><U0627><U0631>"
+%
+% Full weekday names (%A)
+day "<U0622><U062A><U0647><U0648><U0627><U0631>";/
+ "<U0698><U0621><U0646><U062F><U0631><U0648><U0627><U0631>";/
+ "<U0628><U0648><U0621><U06BA><U0648><U0627><U0631>";/
+ "<U0628><U0648><U062F><U0647><U0648><U0627><U0631>";/
+ "<U0628><U0631><U0649><U0633><U0648><U0627><U0631>";/
+ "<U062C><U0645><U0639>";"<U0628><U0679><U0648><U0627><U0631>"
+%
+% Abbreviated month names (%b)
+abmon "<U062C><U0646><U0648><U0631><U06CC>";/
+ "<U0641><U0631><U0648><U0631><U06CC>";/
+ "<U0645><U0627><U0631><U0686>";/
+ "<U0627><U067E><U0631><U06CC><U0644>";/
+ "<U0645><U0626>";/
+ "<U062C><U0648><U0646>";/
+ "<U062C><U064F><U0644><U0626>";/
+ "<U0627><U06AF><U0633><U062A>";/
+ "<U0633><U062A><U0646><U0628><U0631>";/
+ "<U0627><U06A9><U062A><U0648><U0628><U0631>";/
+ "<U0646><U0648><U06BA><U0628><U0631>";/
+ "<U062F><U0633><U0646><U0628><U0631>"
+%
+% Full month names (%B)
+mon "<U062C><U0646><U0648><U0631><U06CC>";/
+ "<U0641><U0631><U0648><U0631><U06CC>";/
+ "<U0645><U0627><U0631><U0686>";/
+ "<U0627><U067E><U0631><U06CC><U0644>";/
+ "<U0645><U0626>";/
+ "<U062C><U0648><U0646>";/
+ "<U062C><U064F><U0644><U0626>";/
+ "<U0627><U06AF><U0633><U062A>";/
+ "<U0633><U062A><U0646><U0628><U0631>";/
+ "<U0627><U06A9><U062A><U0648><U0628><U0631>";/
+ "<U0646><U0648><U06BA><U0628><U0631>";/
+ "<U062F><U0633><U0646><U0628><U0631>"
+%
+% Equivalent of AM PM
+am_pm "<U062F><U0648><U067E><U06BE><U0631><U0628><U0631><U0648><U0646><U06BE>";/
+ "<U062F><U0648><U067E><U06BE><U0631><U067E><U062A><U06BE>"
+%
+% Appropriate date and time representation
+% %A %d %b %Y%I:%M:%S %Z
+d_t_fmt "<U0025><U0041><U0020><U0025><U0064><U0020><U0025><U0062>/
+<U0020><U0025><U0059><U0020><U0025><U0049><U003A><U0025><U004D><U003A>/
+<U0025><U0053><U0020><U0025><U0070><U0020><U0025><U005A>"
+%
+% Appropriate date representation
+% %A %d %b %Y
+d_fmt "<U0025><U0041><U0020><U0025><U0064><U0020><U0025><U0062>/
+<U0020><U0025><U0059>"
+%
+% Appropriate time representation
+% %I:%M:%S %Z
+t_fmt "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053>/
+<U0020><U0020><U0025><U005A>"
+%
+% Appropriate 12 h time representation (%r)
+t_fmt_ampm "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053>/
+<U0020><U0025><U0070><U0020><U0025><U005A>"
+%
+% Appropriate date representation (date(1)) "%a %b %e %H:%M:%S %Z %Y"
+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
+<U0025><U005A><U0020><U0025><U0059>"
+END LC_TIME
+
+
+LC_MESSAGES
+yesexpr "<U005E><U005B><U0622><U0079><U0059><U005D><U002E><U002A>"
+noexpr "<U005E><U005B><U0646><U006E><U004E><U005D><U002E><U002A>"
+
+yesstr "<U0622>"
+nostr "<U0646><U0639>"
+END LC_MESSAGES
+
+
+LC_PAPER
+copy "hi_IN"
+END LC_PAPER
+
+
+LC_NAME
+% This is the ISO_IEC TR14652 Locale definition for the LC_NAME category
+% generated by IBM Basic CountryPack Transformer.
+%
+%
+name_fmt "<U0025><U0070><U0025><U0074><U0025><U0066><U0025><U0074><U0025><U0067>"
+name_gen ""
+name_mr "<U062C><U0646><U0627><U0628>"
+name_mrs "<U0645><U0633><U0645><U0627><U062A>"
+name_miss "<U0645><U0633><U0645><U0627><U062A>"
+name_ms "<U0645><U062d><U062a><U0631><U0645><U0647>"
+
+END LC_NAME
+
+
+LC_ADDRESS
+% This is the ISO_IEC TR14652 Locale definition for the LC_ADDRESS category
+% generated by IBM Basic CountryPack Transformer.
+postal_fmt "<U0025><U007A><U0025><U0063><U0025><U0054><U0025><U0073><U0025><U0062><U0025><U0065><U0025><U0072>"
+country_ab2 "<U0049><U004E>"
+country_ab3 "<U0049><U004E><U0044>"
+country_num 356
+
+END LC_ADDRESS
+
+
+LC_TELEPHONE
+copy "hi_IN"
+END LC_TELEPHONE
+
+
+LC_MEASUREMENT
+copy "hi_IN"
+END LC_MEASUREMENT
diff --git a/localedata/locales/ks_IN@devanagari b/localedata/locales/ks_IN@devanagari
index 2e55de75bf..ebc523481c 100644
--- a/localedata/locales/ks_IN@devanagari
+++ b/localedata/locales/ks_IN@devanagari
@@ -1,11 +1,11 @@
comment_char %
escape_char /
-% Kashmiri language locale for India.
+% Kashmiri(devanagari) language locale for India.
% Contributed by Rakesh Pandit <rakesh.pandit@gmail.com> and
% Pravin Satpute <psatpute@redhat.com>
LC_IDENTIFICATION
-title "Kashmiri language locale for India"
+title "Kashmiri(devanagari) language locale for India"
source ""
address ""
contact ""
@@ -32,51 +32,20 @@ category "ks_IN@devanagari:2008";LC_TELEPHONE
END LC_IDENTIFICATION
LC_CTYPE
-copy "i18n"
-
-translit_start
-include "translit_combining";""
-translit_end
+copy "ks_IN"
END LC_CTYPE
LC_COLLATE
-
-% Copy the template from ISO/IEC 14651
-copy "iso14651_t1"
-
+copy "ks_IN"
END LC_COLLATE
LC_MONETARY
-% This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
-% for IBM Class for Unicode/Java
-%
-int_curr_symbol "<U0049><U004E><U0052><U0020>"
-currency_symbol "<U0930><U0942>"
-mon_decimal_point "<U002E>"
-mon_thousands_sep "<U002C>"
-mon_grouping 3
-positive_sign ""
-negative_sign "<U002D>"
-int_frac_digits 2
-frac_digits 2
-p_cs_precedes 1
-p_sep_by_space 1
-n_cs_precedes 1
-n_sep_by_space 1
-p_sign_posn 1
-n_sign_posn 1
-%
+copy "ks_IN"
END LC_MONETARY
LC_NUMERIC
-% This is the POSIX Locale definition for the LC_NUMERIC category.
-%
-decimal_point "<U002E>"
-thousands_sep "<U002C>"
-grouping 3
-%
+copy "ks_IN"
END LC_NUMERIC
@@ -185,12 +154,7 @@ END LC_NAME
LC_ADDRESS
-postal_fmt "<U0025><U007A><U0025><U0063><U0025><U0054><U0025><U0073>/
-<U0025><U0062><U0025><U0065><U0025><U0072>"
-
-country_ab2 "<U0049><U004E>"
-country_ab3 "<U0049><U004E><U0044>"
-country_num 356
+copy "ks_IN"
END LC_ADDRESS
diff --git a/localedata/locales/li_BE b/localedata/locales/li_BE
index eea6bdbab8..7896092a75 100644
--- a/localedata/locales/li_BE
+++ b/localedata/locales/li_BE
@@ -126,7 +126,7 @@ d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
diff --git a/localedata/locales/li_NL b/localedata/locales/li_NL
index 21c5044904..d0a710a7a0 100644
--- a/localedata/locales/li_NL
+++ b/localedata/locales/li_NL
@@ -127,7 +127,7 @@ d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
diff --git a/localedata/locales/mk_MK b/localedata/locales/mk_MK
index 3157b4940d..8c137a6502 100644
--- a/localedata/locales/mk_MK
+++ b/localedata/locales/mk_MK
@@ -85,9 +85,9 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U002C><U0020><U0025><U0064><U0020><U0025><U0062>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1 % Monday
-first_workday 1 % Monday
+week 7;19971130;4
+first_weekday 2 % Monday
+first_workday 2 % Monday
END LC_TIME
LC_MONETARY
diff --git a/localedata/locales/ml_IN b/localedata/locales/ml_IN
index 1f57845813..18196bb5de 100644
--- a/localedata/locales/ml_IN
+++ b/localedata/locales/ml_IN
@@ -32,6 +32,24 @@ category "ml_IN:2000";LC_MEASUREMENT
END LC_IDENTIFICATION
LC_CTYPE
copy "i18n"
+
+% Malayalam uses the alternate digits U+0D66..U+0D6F
+outdigit <U0D66>..<U0D6F>
+
+% This is used in the scanf family of functions to read Malayalam numbers
+% using "%Id" and such.
+map to_inpunct; /
+ (<U0030>,<U0D66>); /
+ (<U0031>,<U0D67>); /
+ (<U0032>,<U0D68>); /
+ (<U0033>,<U0D69>); /
+ (<U0034>,<U0D6A>); /
+ (<U0035>,<U0D6B>); /
+ (<U0036>,<U0D6C>); /
+ (<U0037>,<U0D6D>); /
+ (<U0038>,<U0D6E>); /
+ (<U0039>,<U0D6F>);
+
translit_start
include "translit_combining";""
translit_end
diff --git a/localedata/locales/mr_IN b/localedata/locales/mr_IN
index ba3b3d6148..174e0e3f1d 100644
--- a/localedata/locales/mr_IN
+++ b/localedata/locales/mr_IN
@@ -32,11 +32,7 @@ category "mr_IN:2000";LC_TELEPHONE
END LC_IDENTIFICATION
LC_CTYPE
-copy "i18n"
-
-translit_start
-include "translit_combining";""
-translit_end
+copy "hi_IN"
END LC_CTYPE
LC_COLLATE
diff --git a/localedata/locales/mt_MT b/localedata/locales/mt_MT
index a882de478a..d6af96b1ef 100644
--- a/localedata/locales/mt_MT
+++ b/localedata/locales/mt_MT
@@ -131,8 +131,8 @@ LC_MONETARY
% These are generated based on XML base Locale defintion file
% for IBM Class for Unicode.
%
-int_curr_symbol "<U004D><U0054><U004C><U0020>"
-currency_symbol "<U004C><U006D>"
+int_curr_symbol "<U0045><U0055><U0052><U0020>"
+currency_symbol "<U20AC>"
mon_decimal_point "<U002E>"
mon_thousands_sep "<U002C>"
mon_grouping 3
@@ -140,9 +140,9 @@ positive_sign ""
negative_sign "<U002D>"
int_frac_digits 2
frac_digits 2
-p_cs_precedes 1
+p_cs_precedes 0
p_sep_by_space 0
-n_cs_precedes 1
+n_cs_precedes 0
n_sep_by_space 0
p_sign_posn 1
n_sign_posn 0
@@ -188,7 +188,7 @@ day "<U0069><U006C><U002D><U0126><U0061><U0064><U0064>";/
abmon "<U004A><U0061><U006E>";"<U0046><U0072><U0061>";/
"<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
"<U004D><U0065><U006A>";"<U0120><U0075><U006E>";/
- "<U004C><U0075><U006C>";"<U0041><U0077><U0069>";/
+ "<U004C><U0075><U006C>";"<U0041><U0077><U0077>";/
"<U0053><U0065><U0074>";"<U004F><U0074><U0074>";/
"<U004E><U006F><U0076>";"<U0044><U0069><U010B>"
%
@@ -200,7 +200,7 @@ mon "<U004A><U0061><U006E><U006E><U0061><U0072>";/
"<U004D><U0065><U006A><U006A><U0075>";/
"<U0120><U0075><U006E><U006A><U0075>";/
"<U004C><U0075><U006C><U006A><U0075>";/
- "<U0041><U0077><U0069><U0073><U0073><U0075>";/
+ "<U0041><U0077><U0077><U0069><U0073><U0073><U0075>";/
"<U0053><U0065><U0074><U0074><U0065><U006D><U0062><U0072><U0075>";/
"<U004F><U0074><U0074><U0075><U0062><U0072><U0075>";/
"<U004E><U006F><U0076><U0065><U006D><U0062><U0072><U0075>";/
diff --git a/localedata/locales/my_MM b/localedata/locales/my_MM
new file mode 100644
index 0000000000..d9bd5ba8b1
--- /dev/null
+++ b/localedata/locales/my_MM
@@ -0,0 +1,319 @@
+escape_char /
+comment_char %
+% This is the locale definition file for Myanmar Burmese
+% It is derived from the locale by Ngwe Tun <ngwestar@etrademyanmar.com> and
+% Members of the Solveware Solution Team. http://www.myazedi.com
+% It was updated to Unicode 5.1 with some modifications by
+% Keith Stribley <devel@thanlwinsoft.org> http://www.thanlwinsoft.org
+
+LC_IDENTIFICATION
+title "Burmese language locale for Myanmar"
+source "ThanLwinSoft http://www.thanlwinsoft.org"
+address "Yangon, Myanmar"
+contact "Keith Stribley"
+email "devel@thanlwinsoft.org"
+tel ""
+fax ""
+language "Burmese"
+territory "Myanmar"
+revision "1.3"
+date "2009-10-02"
+
+category "my_MM:2006";LC_IDENTIFICATION
+category "my_MM:2006";LC_COLLATE
+category "my_MM:2006";LC_CTYPE
+category "my_MM:2006";LC_MESSAGES
+category "my_MM:2006";LC_MONETARY
+category "my_MM:2006";LC_NUMERIC
+category "my_MM:2006";LC_TIME
+category "my_MM:2006";LC_PAPER
+category "my_MM:2006";LC_MEASUREMENT
+category "my_MM:2006";LC_TELEPHONE
+category "my_MM:2006";LC_ADDRESS
+category "my_MM:2006";LC_NAME
+END LC_IDENTIFICATION
+
+
+LC_CTYPE
+copy "i18n"
+outdigit <U1040>..<U1049>
+map to_inpunct; /
+ (<U0030>,<U1040>); /
+ (<U0031>,<U1041>); /
+ (<U0032>,<U1042>); /
+ (<U0033>,<U1043>); /
+ (<U0034>,<U1044>); /
+ (<U0035>,<U1045>); /
+ (<U0036>,<U1046>); /
+ (<U0037>,<U1047>); /
+ (<U0038>,<U1048>); /
+ (<U0039>,<U1049>);
+
+END LC_CTYPE
+
+LC_COLLATE
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
+END LC_COLLATE
+
+
+LC_MONETARY
+% MMK
+int_curr_symbol "<U004D><U004D><U004B><U0020>"
+% Kyat in Burmese - it would be better to use this if Myanmar digits are used
+% currency_symbol "<U1000><U103B><U1015><U103A>"
+% Ks
+currency_symbol "<U004B><U0073>"
+mon_decimal_point "<U002E>"
+mon_thousands_sep "<U002C>"
+mon_grouping 3;3
+positive_sign ""
+negative_sign "<U002D>"
+int_frac_digits 2
+frac_digits 2
+p_cs_precedes 0
+p_sep_by_space 0
+n_cs_precedes 0
+n_sep_by_space 0
+p_sign_posn 1
+n_sign_posn 1
+%
+END LC_MONETARY
+
+LC_NUMERIC
+% This is the POSIX Locale definition for the LC_NUMERIC category
+% generated by IBM Basic CountryPack Transformer.
+% These are generated based on XML base Locale defintion file
+% for IBM Class for Unicode.
+%
+decimal_point "<U002E>"
+thousands_sep "<U002C>"
+grouping 3;3
+%
+END LC_NUMERIC
+
+
+LC_TIME
+% This is the POSIX Locale definition for the LC_TIME category
+% generated by IBM Basic CountryPack Transformer.
+% These are generated based on XML base Locale difintion file
+% for IBM Class for Unicode.
+%
+% Abbreviated weekday names (%a)
+abday "<U1014><U103D><U1031>";"<U101C><U102C>";/
+ "<U1002><U102B>";"<U101F><U1030><U1038>";/
+ "<U1010><U1031><U1038>";"<U101E><U1031><U102C>";/
+ "<U1014><U1031>"
+
+
+%
+% Full weekday names (%A)
+day "<U1010><U1014><U1004><U103A><U1039><U1002><U1014><U103D><U1031>";/
+ "<U1010><U1014><U1004><U103A><U1039><U101C><U102C>";/
+ "<U1021><U1004><U103A><U1039><U1002><U102B>";/
+ "<U1017><U102F><U1012><U1039><U1013><U101F><U1030><U1038>";/
+ "<U1000><U103C><U102C><U101E><U1015><U1010><U1031><U1038>";/
+ "<U101E><U1031><U102C><U1000><U103C><U102C>";/
+ "<U1005><U1014><U1031>"
+
+% Abbreviated month names (%b)
+abmon "<U1007><U1014><U103A>";/
+ "<U1016><U1031>";/
+ "<U1019><U1010><U103A>";/
+ "<U1027><U1015><U103C><U102E>";/
+ "<U1019><U1031>";/
+ "<U1007><U103D><U1014><U103A>";/
+ "<U1007><U1030>";/
+ "<U1029>";/
+ "<U1005><U1000><U103A>";/
+ "<U1021><U1031><U102C><U1000><U103A>";/
+ "<U1014><U102D><U102F>";/
+ "<U1012><U102E>"
+
+% Full month names (%B)
+mon "<U1007><U1014><U103A><U1014><U101D><U102B><U101B><U102E>";/
+ "<U1016><U1031><U1016><U1031><U102C><U103A><U101D><U102B><U101B><U102E>";/
+ "<U1019><U1010><U103A>";/
+ "<U1027><U1015><U103C><U102E>";/
+ "<U1019><U1031>";/
+ "<U1007><U103D><U1014><U103A>";/
+ "<U1007><U1030><U101C><U102D><U102F><U1004><U103A>";/
+ "<U1029><U1002><U102F><U1010><U103A>";/
+ "<U1005><U1000><U103A><U1010><U1004><U103A><U1018><U102C>";/
+ "<U1021><U1031><U102C><U1000><U103A><U1010><U102D><U102F><U1018><U102C>";/
+ "<U1014><U102D><U102F><U101D><U1004><U103A><U1018><U102C>";/
+ "<U1012><U102E><U1007><U1004><U103A><U1018><U102C>"
+
+am_pm "<U1014><U1036><U1014><U1000><U103A>";"<U100A><U1014><U1031>"
+% %OC%Oy %b %Od %A %OI:%OM:%OS %Op %Z
+d_t_fmt "<U0025><U004F><U0043><U0025><U004F><U0079><U0020><U0025><U0062><U0020><U0025><U004F><U0064><U0020><U0025><U0041><U0020><U0025><U004F><U0049><U003A><U0025><U004F><U004D><U003A><U0025><U004F><U0053><U0020><U0025><U004F><U0070><U0020><U0025><U005A>"
+% Note: the use of %OC requires a patch to strftime_l.h
+% %OC%Oy %b %Od %A
+d_fmt "<U0025><U004F><U0043><U0025><U004F><U0079><U0020><U0025><U0062><U0020><U0025><U004F><U0064><U0020><U0025><U0041>"
+% %OH:%OM:%OS %p
+t_fmt "<U0025><U004F><U0049><U003A><U0025><U004F><U004D><U003A><U0025><U004F><U0053><U0020><U0025><U0070>"
+% %OI:%OM:%OS %p
+t_fmt_ampm "<U0025><U004F><U0049><U003A><U0025><U004F><U004D><U003A><U0025><U004F><U0053><U0020><U0025><U0070>"
+
+% MMT-6.5MMT-6.5
+timezone "<U004D><U004D><U0054><U002D><U0036><U002E><U0035><U004D><U004D><U0054><U002D><U0036><U002E><U0035>"
+
+alt_digits "<U1040><U1040>";/
+ "<U1040><U1041>";/
+ "<U1040><U1042>";/
+ "<U1040><U1043>";/
+ "<U1040><U1044>";/
+ "<U1040><U1045>";/
+ "<U1040><U1046>";/
+ "<U1040><U1047>";/
+ "<U1040><U1048>";/
+ "<U1040><U1049>";/
+ "<U1041><U1040>";/
+ "<U1041><U1041>";/
+ "<U1041><U1042>";/
+ "<U1041><U1043>";/
+ "<U1041><U1044>";/
+ "<U1041><U1045>";/
+ "<U1041><U1046>";/
+ "<U1041><U1047>";/
+ "<U1041><U1048>";/
+ "<U1041><U1049>";/
+ "<U1042><U1040>";/
+ "<U1042><U1041>";/
+ "<U1042><U1042>";/
+ "<U1042><U1043>";/
+ "<U1042><U1044>";/
+ "<U1042><U1045>";/
+ "<U1042><U1046>";/
+ "<U1042><U1047>";/
+ "<U1042><U1048>";/
+ "<U1042><U1049>";/
+ "<U1043><U1040>";/
+ "<U1043><U1041>";/
+ "<U1043><U1042>";/
+ "<U1043><U1043>";/
+ "<U1043><U1044>";/
+ "<U1043><U1045>";/
+ "<U1043><U1046>";/
+ "<U1043><U1047>";/
+ "<U1043><U1048>";/
+ "<U1043><U1049>";/
+ "<U1044><U1040>";/
+ "<U1044><U1041>";/
+ "<U1044><U1042>";/
+ "<U1044><U1043>";/
+ "<U1044><U1044>";/
+ "<U1044><U1045>";/
+ "<U1044><U1046>";/
+ "<U1044><U1047>";/
+ "<U1044><U1048>";/
+ "<U1044><U1049>";/
+ "<U1045><U1040>";/
+ "<U1045><U1041>";/
+ "<U1045><U1042>";/
+ "<U1045><U1043>";/
+ "<U1045><U1044>";/
+ "<U1045><U1045>";/
+ "<U1045><U1046>";/
+ "<U1045><U1047>";/
+ "<U1045><U1048>";/
+ "<U1045><U1049>";/
+ "<U1046><U1040>";/
+ "<U1046><U1041>";/
+ "<U1046><U1042>";/
+ "<U1046><U1043>";/
+ "<U1046><U1044>";/
+ "<U1046><U1045>";/
+ "<U1046><U1046>";/
+ "<U1046><U1047>";/
+ "<U1046><U1048>";/
+ "<U1046><U1049>";/
+ "<U1047><U1040>";/
+ "<U1047><U1041>";/
+ "<U1047><U1042>";/
+ "<U1047><U1043>";/
+ "<U1047><U1044>";/
+ "<U1047><U1045>";/
+ "<U1047><U1046>";/
+ "<U1047><U1047>";/
+ "<U1047><U1048>";/
+ "<U1047><U1049>";/
+ "<U1048><U1040>";/
+ "<U1048><U1041>";/
+ "<U1048><U1042>";/
+ "<U1048><U1043>";/
+ "<U1048><U1044>";/
+ "<U1048><U1045>";/
+ "<U1048><U1046>";/
+ "<U1048><U1047>";/
+ "<U1048><U1048>";/
+ "<U1048><U1049>";/
+ "<U1049><U1040>";/
+ "<U1049><U1041>";/
+ "<U1049><U1042>";/
+ "<U1049><U1043>";/
+ "<U1049><U1044>";/
+ "<U1049><U1045>";/
+ "<U1049><U1046>";/
+ "<U1049><U1047>";/
+ "<U1049><U1048>";/
+ "<U1049><U1049>"
+
+END LC_TIME
+
+
+LC_MESSAGES
+% ^[yY\x{101F}].*
+yesexpr "<U005E><U005B><U0079><U0059><U101F><U005D><U002E><U002A>"
+% ^[nN\x{1019}].*
+noexpr "<U005E><U005B><U006E><U004E><U1019><U005D><U002E><U002A>"
+yesstr "<U101F><U102F><U1010><U103A><U1010><U101A><U103A>"
+nostr "<U1019><U101F><U102F><U1010><U103A><U1018><U1030><U1038>"
+END LC_MESSAGES
+
+
+% Metric Measurement system (ISO 1000)
+LC_MEASUREMENT
+measurement 1
+END LC_MEASUREMENT
+
+% Default paper: A4
+LC_PAPER
+height 297
+width 210
+END LC_PAPER
+
+LC_TELEPHONE
+% +%c %a %l
+tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025><U006C>"
+% %a %l
+tel_dom_fmt "<U0025><U0061><U0020><U0025><U006C>"
+int_select "<U0030>"
+int_prefix "<U0039><U0035>"
+END LC_TELEPHONE
+
+LC_NAME
+% [profession] Given_Name [middle_name] Family_Name
+% %p%t%g%t%m%t%f
+name_fmt "<U0025><U0070><U0025><U0074><U0025><U0067><U0025><U0074><U0025><U006D><U0025><U0074><U0025><U0066>"
+name_gen ""
+% name_gen "<U1026><U1038>"
+name_mr "<U1026><U1038>"
+% name_mr "<U1000><U102D><U102F>"
+name_mrs "<U1012><U1031><U102B><U103A>"
+name_ms "<U1012><U1031><U102B><U103A>"
+name_miss "<U1019>"
+END LC_NAME
+
+LC_ADDRESS
+postal_fmt "<U0025><U0061><U0025><U004E><U0025><U0064><U0025><U004E><U0025><U0066><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0068><U0025><U0074><U0025><U0072><U0025><U0074><U0025><U0065><U0025><U0074><U0025><U0073><U0025><U004E><U0025><U0054><U0025><U0074><U0025><U007A><U0025><U004E><U0025><U0063><U0025><U004E>"
+country_name "<U1019><U103C><U1014><U103A><U1019><U102C>"
+country_post "<U004D><U0079><U0061><U006E><U006D><U0061><U0072>"
+country_ab2 "<U004D><U004D>"
+lang_ab "<U006D><U0079>"
+lang_name "<U1017><U1019><U102C>"
+lang_term "<U006D><U0079><U0061>"
+lang_lib "<U006D><U0079><U0061>"
+END LC_ADDRESS
diff --git a/localedata/locales/nan_TW@latin b/localedata/locales/nan_TW@latin
new file mode 100644
index 0000000000..bf8a6cd903
--- /dev/null
+++ b/localedata/locales/nan_TW@latin
@@ -0,0 +1,205 @@
+comment_char %
+escape_char /
+%
+% Minnan Language Locale for Taiwan
+% Source:
+% Contact: Arne Goetje
+% Email: arne@ubuntu.com
+% Language: nan
+% Territory: TW
+% Revision: 0.1
+% Date: 2008-06-16
+% Users: general
+% Charset: UTF-8
+% Distribution and use is free, also
+% for commercial purposes.
+
+LC_IDENTIFICATION
+title "Minnan language locale for Taiwan"
+source ""
+address ""
+contact "Arne Goetje"
+email "arne@canonical.com"
+tel ""
+fax ""
+language "Minnan"
+territory "Taiwan"
+revision "0.1"
+date "2008-06-16"
+
+category "nan_TW@latin:2000";LC_IDENTIFICATION
+category "nan_TW@latin:2000";LC_CTYPE
+category "nan_TW@latin:2000";LC_COLLATE
+category "nan_TW@latin:2000";LC_TIME
+category "nan_TW@latin:2000";LC_NUMERIC
+category "nan_TW@latin:2000";LC_PAPER
+category "nan_TW@latin:2000";LC_TELEPHONE
+category "nan_TW@latin:2000";LC_MEASUREMENT
+category "nan_TW@latin:2000";LC_ADDRESS
+category "nan_TW@latin:2000";LC_MESSAGES
+category "nan_TW@latin:2000";LC_MONETARY
+
+END LC_IDENTIFICATION
+
+LC_CTYPE
+copy "i18n"
+
+translit_start
+
+% accents are simply omitted if they cannot be represented.
+include "translit_combining";""
+
+translit_end
+
+END LC_CTYPE
+
+LC_COLLATE
+copy "iso14651_t1"
+
+%% a b c d e f g h i j k l m n o o͘ p q r s t u v w x y z â¿
+
+collating-element <oo> from "<U006F><U0358>"
+collating-element <OO> from "<U004F><U0358>"
+collating-element <nn> from "<U207F>"
+
+collating-symbol <CAP-MIN>
+collating-symbol <MIN-CAP>
+
+reorder-after <MIN>
+<MIN-CAP>
+reorder-after <CAP>
+<CAP-MIN>
+
+reorder-after <U006E>
+<oo>
+reorder-after <U004E>
+<OO>
+reorder-after <U007A>
+<nn>
+reorder-after <U005A>
+<nn>
+
+reorder-end
+
+END LC_COLLATE
+
+LC_MONETARY
+copy "zh_TW"
+END LC_MONETARY
+
+LC_NUMERIC
+copy "zh_TW"
+END LC_NUMERIC
+
+LC_TIME
+abday "<U006C><U0070>";/
+ "<U0070><U0031>";/
+ "<U0070><U0032>";/
+ "<U0070><U0033>";/
+ "<U0070><U0034>";/
+ "<U0070><U0035>";/
+ "<U0070><U0036>"
+day "<U006C><U00E9><U002D><U0070><U00E0><U0069><U002D><U006A><U0069><U030D><U0074>";/
+ "<U0070><U00E0><U0069><U002D><U0069><U0074>";/
+ "<U0070><U00E0><U0069><U002D><U006A><U012B>";/
+ "<U0070><U00E0><U0069><U002D><U0073><U0061><U207F>";/
+ "<U0070><U00E0><U0069><U002D><U0073><U00EC>";/
+ "<U0070><U00E0><U0069><U002D><U0067><U014D><U0358>";/
+ "<U0070><U00E0><U0069><U002D><U006C><U0061><U030D><U006B>"
+abmon "<U0031><U0067>";/
+ "<U0032><U0067>";/
+ "<U0033><U0067>";/
+ "<U0034><U0067>";/
+ "<U0035><U0067>";/
+ "<U0036><U0067>";/
+ "<U0037><U0067>";/
+ "<U0038><U0067>";/
+ "<U0039><U0067>";/
+ "<U0031><U0030><U0067>";/
+ "<U0031><U0031><U0067>";/
+ "<U0031><U0032><U0067>"
+mon "<U0031><U0067><U006F><U0065><U030D><U0068>";/
+ "<U0032><U0067><U006F><U0065><U030D><U0068>";/
+ "<U0033><U0067><U006F><U0065><U030D><U0068>";/
+ "<U0034><U0067><U006F><U0065><U030D><U0068>";/
+ "<U0035><U0067><U006F><U0065><U030D><U0068>";/
+ "<U0036><U0067><U006F><U0065><U030D><U0068>";/
+ "<U0037><U0067><U006F><U0065><U030D><U0068>";/
+ "<U0038><U0067><U006F><U0065><U030D><U0068>";/
+ "<U0039><U0067><U006F><U0065><U030D><U0068>";/
+ "<U0031><U0030><U0067><U006F><U0065><U030D><U0068>";/
+ "<U0031><U0031><U0067><U006F><U0065><U030D><U0068>";/
+ "<U0031><U0032><U0067><U006F><U0065><U030D><U0068>"
+%
+d_t_fmt "<U0025><U0059><U0020><U0025><U0062><U0020><U0025><U0064><U0020><U0028><U0025><U0061><U0029><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A>"
+d_fmt "<U0025><U0046>"
+t_fmt "<U0025><U0072>"
+am_pm "<U0074><U00E9><U006E><U0067><U002D><U0070><U006F><U0358>";"<U0113><U002D><U0070><U006F><U0358>"
+t_fmt_ampm "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0070>"
+timezone "<U0054><U0053><U0054><U002D><U0038>"
+date_fmt "<U0025><U0059><U0020><U0025><U0062><U0020><U0025><U0064><U0020><U0028><U0025><U0061><U0029><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A>"
+END LC_TIME
+
+LC_MESSAGES
+
+% "^[sS].*" for "Yes"
+yesexpr "<U005E><U005B><U0073><U0053><U005D><U002E><U002A>"
+
+% "^[mM].*" for "No"
+noexpr "<U005E><U005B><U006D><U004D><U005D><U002E><U002A>"
+
+% "SÄ«" for "Yes"
+yesstr "<U0053><U012B>"
+
+% "M̄-sī" for "No"
+nostr "<U004D><U0304><U002D><U0053><U012B>"
+
+END LC_MESSAGES
+
+LC_PAPER
+height 297
+width 210
+END LC_PAPER
+
+LC_MEASUREMENT
+measurement 1
+END LC_MEASUREMENT
+
+LC_NAME
+%FIXME
+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
+<U0025><U006D><U0025><U0074><U0025><U0066>"
+name_miss "<U006B><U006F><U0358><U002D><U006E><U0069><U00FB>"
+name_mr "<U0073><U0069><U0061><U006E><U002D><U0073><U0069><U207F>"
+name_mrs "<U006C><U00FA><U002D><U0073><U016B>"
+name_ms "<U0073><U0069><U00F3><U002D><U0063><U0068><U0069><U00E1>"
+END LC_NAME
+
+LC_ADDRESS
+% postal_fmt: "%f%N%a%N%d%N%b%N%r %e %h %s%N%z %T%N%c%N"
+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0072>/
+<U0020><U0025><U0065><U0020><U0025><U0068><U0020><U0025><U0073><U0025>/
+<U004E><U0025><U007A><U0020><U0025><U0054><U0025>/
+<U004E><U0025><U0063><U0025><U004E>"
+% Reference: http://www.un.org/Depts/unsd/methods/m49alpha.htm
+% http://www.isbn.spk-berlin.de/html/prefix.htm
+% country_ab2: TW
+% country_ab3: TWN
+% country_isbn: 957
+country_name "<U0054><U00E2><U0069><U002D><U006F><U00E2><U006E>"
+%country_post "FIXME"
+country_ab2 "<U0054><U0057>"
+country_ab3 "<U0054><U0057><U004E>"
+country_num 158
+%country_car "FIXME"
+country_isbn "<U0039><U0035><U0037>"
+%lang_name "Bân-lâm-gú, HÅ-ló-oÄ“"
+lang_name "<U0042><U00E2><U006E><U002D><U006C><U00E2><U006D><U002D><U0067><U00FA><U002C><U0020><U0048><U014D><U002D><U006C><U00F3><U002D><U006F><U0113>"
+lang_term "<U006E><U0061><U006E>"
+lang_lib "<U006E><U0061><U006E>"
+END LC_ADDRESS
+
+LC_TELEPHONE
+copy "zh_TW"
+END LC_TELEPHONE
diff --git a/localedata/locales/nb_NO b/localedata/locales/nb_NO
index 2604676739..e4916438c6 100644
--- a/localedata/locales/nb_NO
+++ b/localedata/locales/nb_NO
@@ -201,9 +201,9 @@ date_fmt "<U0025><U0061><U0020><U0025><U0064><U002E><U0020><U0025>/
<U0062><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>/
<U0020><U0025><U007A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_MESSAGES
diff --git a/localedata/locales/nds_DE b/localedata/locales/nds_DE
index 5c37f317b5..02c1b1a451 100644
--- a/localedata/locales/nds_DE
+++ b/localedata/locales/nds_DE
@@ -125,7 +125,7 @@ d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
diff --git a/localedata/locales/nds_NL b/localedata/locales/nds_NL
index 51ac58329d..38579472df 100644
--- a/localedata/locales/nds_NL
+++ b/localedata/locales/nds_NL
@@ -124,7 +124,7 @@ d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
diff --git a/localedata/locales/nl_NL b/localedata/locales/nl_NL
index 9719cec5f6..6f832927a3 100644
--- a/localedata/locales/nl_NL
+++ b/localedata/locales/nl_NL
@@ -88,33 +88,33 @@ END LC_NUMERIC
LC_TIME
abday "<U007A><U006F>";"<U006D><U0061>";"<U0064><U0069>";/
- "<U0077><U006F>";"<U0064><U006F>";"<U0076><U0072>";/
- "<U007A><U0061>"
+ "<U0077><U006F>";"<U0064><U006F>";"<U0076><U0072>";/
+ "<U007A><U0061>"
day "<U007A><U006F><U006E><U0064><U0061><U0067>";/
- "<U006D><U0061><U0061><U006E><U0064><U0061><U0067>";/
- "<U0064><U0069><U006E><U0073><U0064><U0061><U0067>";/
- "<U0077><U006F><U0065><U006E><U0073><U0064><U0061><U0067>";/
- "<U0064><U006F><U006E><U0064><U0065><U0072><U0064><U0061><U0067>";/
- "<U0076><U0072><U0069><U006A><U0064><U0061><U0067>";/
- "<U007A><U0061><U0074><U0065><U0072><U0064><U0061><U0067>"
+ "<U006D><U0061><U0061><U006E><U0064><U0061><U0067>";/
+ "<U0064><U0069><U006E><U0073><U0064><U0061><U0067>";/
+ "<U0077><U006F><U0065><U006E><U0073><U0064><U0061><U0067>";/
+ "<U0064><U006F><U006E><U0064><U0065><U0072><U0064><U0061><U0067>";/
+ "<U0076><U0072><U0069><U006A><U0064><U0061><U0067>";/
+ "<U007A><U0061><U0074><U0065><U0072><U0064><U0061><U0067>"
abmon "<U006A><U0061><U006E>";"<U0066><U0065><U0062>";/
- "<U006D><U0072><U0074>";"<U0061><U0070><U0072>";/
- "<U006D><U0065><U0069>";"<U006A><U0075><U006E>";/
- "<U006A><U0075><U006C>";"<U0061><U0075><U0067>";/
- "<U0073><U0065><U0070>";"<U006F><U006B><U0074>";/
- "<U006E><U006F><U0076>";"<U0064><U0065><U0063>"
+ "<U006D><U0072><U0074>";"<U0061><U0070><U0072>";/
+ "<U006D><U0065><U0069>";"<U006A><U0075><U006E>";/
+ "<U006A><U0075><U006C>";"<U0061><U0075><U0067>";/
+ "<U0073><U0065><U0070>";"<U006F><U006B><U0074>";/
+ "<U006E><U006F><U0076>";"<U0064><U0065><U0063>"
mon "<U006A><U0061><U006E><U0075><U0061><U0072><U0069>";/
- "<U0066><U0065><U0062><U0072><U0075><U0061><U0072><U0069>";/
- "<U006D><U0061><U0061><U0072><U0074>";/
- "<U0061><U0070><U0072><U0069><U006C>";/
- "<U006D><U0065><U0069>";/
- "<U006A><U0075><U006E><U0069>";/
- "<U006A><U0075><U006C><U0069>";/
- "<U0061><U0075><U0067><U0075><U0073><U0074><U0075><U0073>";/
- "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
- "<U006F><U006B><U0074><U006F><U0062><U0065><U0072>";/
- "<U006E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
- "<U0064><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
+ "<U0066><U0065><U0062><U0072><U0075><U0061><U0072><U0069>";/
+ "<U006D><U0061><U0061><U0072><U0074>";/
+ "<U0061><U0070><U0072><U0069><U006C>";/
+ "<U006D><U0065><U0069>";/
+ "<U006A><U0075><U006E><U0069>";/
+ "<U006A><U0075><U006C><U0069>";/
+ "<U0061><U0075><U0067><U0075><U0073><U0074><U0075><U0073>";/
+ "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
+ "<U006F><U006B><U0074><U006F><U0062><U0065><U0072>";/
+ "<U006E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
+ "<U0064><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
d_fmt "<U0025><U0064><U002D><U0025><U006D><U002D><U0025><U0079>"
t_fmt "<U0025><U0054>"
@@ -123,6 +123,10 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
+
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/nn_NO b/localedata/locales/nn_NO
index ea223398bf..50950673c5 100644
--- a/localedata/locales/nn_NO
+++ b/localedata/locales/nn_NO
@@ -128,9 +128,9 @@ date_fmt "<U0025><U0061><U0020><U0025><U0064><U002E><U0020><U0025>/
<U0062><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>/
<U0020><U0025><U007A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
diff --git a/localedata/locales/or_IN b/localedata/locales/or_IN
index 86754b2e2f..22ee03108a 100644
--- a/localedata/locales/or_IN
+++ b/localedata/locales/or_IN
@@ -35,6 +35,23 @@ END LC_IDENTIFICATION
LC_CTYPE
copy "i18n"
+% Oriya uses the alternate digits U+0B66..U+0B6F
+outdigit <U0B66>..<U0B6F>
+
+% This is used in the scanf family of functions to read Oriya numbers
+% using "%Id" and such.
+map to_inpunct; /
+ (<U0030>,<U0B66>); /
+ (<U0031>,<U0B67>); /
+ (<U0032>,<U0B68>); /
+ (<U0033>,<U0B69>); /
+ (<U0034>,<U0B6A>); /
+ (<U0035>,<U0B6B>); /
+ (<U0036>,<U0B6C>); /
+ (<U0037>,<U0B6D>); /
+ (<U0038>,<U0B6E>); /
+ (<U0039>,<U0B6F>);
+
translit_start
include "translit_combining";""
translit_end
diff --git a/localedata/locales/pa_IN b/localedata/locales/pa_IN
index b269472d4e..c4c4732349 100644
--- a/localedata/locales/pa_IN
+++ b/localedata/locales/pa_IN
@@ -31,7 +31,28 @@ category "pa_IN:2000";LC_TELEPHONE
END LC_IDENTIFICATION
LC_CTYPE
-copy "pa_PK"
+copy "i18n"
+
+% Punjabi uses the alternate digits U+0A66..U+0A6F
+outdigit <U0A66>..<U0A6F>
+
+% This is used in the scanf family of functions to read Punjabi numbers
+% using "%Id" and such.
+map to_inpunct; /
+ (<U0030>,<U0A66>); /
+ (<U0031>,<U0A67>); /
+ (<U0032>,<U0A68>); /
+ (<U0033>,<U0A69>); /
+ (<U0034>,<U0A6A>); /
+ (<U0035>,<U0A6B>); /
+ (<U0036>,<U0A6C>); /
+ (<U0037>,<U0A6D>); /
+ (<U0038>,<U0A6E>); /
+ (<U0039>,<U0A6F>);
+
+translit_start
+include "translit_combining";""
+translit_end
END LC_CTYPE
diff --git a/localedata/locales/pl_PL b/localedata/locales/pl_PL
index 37f9e5c5cd..1bce8f5b30 100644
--- a/localedata/locales/pl_PL
+++ b/localedata/locales/pl_PL
@@ -2196,9 +2196,9 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U002C><U0020>/
<U0025><U002D><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U002C><U0020>/
<U0025><U0054><U0020><U0025><U005A>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/ps_AF b/localedata/locales/ps_AF
new file mode 100644
index 0000000000..7f686abbb5
--- /dev/null
+++ b/localedata/locales/ps_AF
@@ -0,0 +1,282 @@
+escape_char /
+comment_char %
+
+%%%%%%%%%%%%%%%%%%%%%%% locale definition file "ps_AF" %%%%%%%%%%%%%%%%%%%%%%
+
+% Pashto Locale for Afghanistan
+% Filename: ps_AF
+% Locale name: ps_AF.UTF-8
+% Language: Pashto
+% Territory: Afghanistan
+% Charset: UTF-8
+% Revision: 0.1
+% By: Nasir Gulzade<nasirgulzade@hotmail.com>
+% Creation Date: Thu, 15 Jan 2009 18:16:15 +0500 GMT
+% Last Modification Date: Fri, 16 Jan 2009 20:33:40 +0500 GMT
+%
+
+
+LC_IDENTIFICATION
+ title "Pashto locale for Afghanistan"
+ source "Nasir Gulzade"
+ address "see e-mail."
+ contact "Nasir Gulzade"
+ email "nasirgulzade@hotmail.com"
+ tel "+93 700530286"
+ fax ""
+ language "Pashto"
+ territory "Afghanistan"
+ revision "0.2"
+ date "2009-01-16"
+
+ category "ps_AF:2007";LC_IDENTIFICATION
+ category "ps_AF:2007";LC_CTYPE
+ category "ps_AF:2007";LC_COLLATE
+ category "ps_AF:2007";LC_TIME
+ category "ps_AF:2007";LC_NUMERIC
+ category "ps_AF:2007";LC_MONETARY
+ category "ps_AF:2007";LC_MESSAGES
+ category "ps_AF:2007";LC_MEASUREMENT
+ category "ps_AF:2007";LC_PAPER
+ category "ps_AF:2007";LC_NAME
+ category "ps_AF:2007";LC_ADDRESS
+ category "ps_AF:2007";LC_TELEPHONE
+END LC_IDENTIFICATION
+
+LC_CTYPE
+ copy "i18n"
+ outdigit <U0660>..<U0663>;<U06F4>;<U0665>..<U0669>
+ map to_outpunct; (<U002E>,<U066B>);(<U002C>,<U066C>)
+END LC_CTYPE
+
+LC_COLLATE
+% Collation rules updated as per requirement of glibc by Pravin Satpute <psatpute@redhat.com>
+% see rh bug 482881
+copy "iso14651_t1"
+
+collating-symbol <teh_with_ring>
+collating-symbol <hah_with_hamza_above>
+collating-symbol <hah_with_three_dots>
+collating-symbol <dal_with_ring>
+collating-symbol <reh_with_ring>
+collating-symbol <reh_with_dot_below_and_above>
+collating-symbol <seen_with_dot_below_and_above>
+collating-symbol <kaaf_with_ring>
+collating-symbol <noon_with_ring>
+collating-symbol <farsi_yeh>
+collating-symbol <arabic_letter_e>
+collating-symbol <yeh_with_tail>
+
+reorder-after <teh>
+<teh_with_ring>
+
+reorder-after <jeem>
+<hah_with_hamza_above>
+
+reorder-after <tcheh>
+<hah_with_three_dots>
+
+reorder-after <dal>
+<dal_with_ring>
+
+reorder-after <reh>
+<reh_with_ring>
+
+reorder-after <jeh>
+<reh_with_dot_below_and_above>
+
+reorder-after <sheen>
+<seen_with_dot_below_and_above>
+
+reorder-after <keheh>
+<kaaf_with_ring>
+
+reorder-after <noon>
+<noon_with_ring>
+
+reorder-after <heh>
+<farsi_yeh>
+
+reorder-after <alef_maksura>
+<arabic_letter_e>
+<yeh_with_tail>
+
+
+reorder-after <U062A>
+<U067C> <teh_with_ring>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U062C>
+<U0681> <hah_with_hamza_above>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U0686>
+<U0685> <hah_with_three_dots>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U062F>
+<U0689> <dal_with_ring>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U0631>
+<U0693> <reh_with_ring>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U0698>
+<U0696> <reh_with_dot_below_and_above>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U0634>
+<U069A> <seen_with_dot_below_and_above>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U06A9>
+<U06AB> <kaaf_with_ring>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U0646>
+<U06BC> <noon_with_ring>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U0648>
+<U0647> <heh>;<BAS>;<MIN>;IGNORE
+<U06CC> <farsi_yeh>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U064A>
+<U06D0> <arabic_letter_e>;<AYE>;<MIN>;IGNORE
+<U0626> "<alef_maksura><hamza>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+<U06CD> <yeh_with_tail>;<AYE>;<MIN>;IGNORE
+
+reorder-end
+
+END LC_COLLATE
+
+LC_TIME
+ abday "<U06CC><U002E>";/
+ "<U062F><U002E>";/
+ "<U0633><U002E>";/
+ "<U0686><U002E>";/
+ "<U067E><U002E>";/
+ "<U062C><U002E>";/
+ "<U0634><U002E>"
+ day "<U06CC><U06A9><U0634><U0646><U0628><U0647>";/
+ "<U062F><U0648><U0634><U0646><U0628><U0647>";/
+ "<U0633><U0647><U200C><U0634><U0646><U0628><U0647>";/
+ "<U0686><U0627><U0631><U0634><U0646><U0628><U0647>";/
+ "<U067E><U0646><U062C><U0634><U0646><U0628><U0647>";/
+ "<U062C><U0645><U0639><U0647>";/
+ "<U0634><U0646><U0628><U0647>"
+ abmon "<U062C><U0646><U0648>";/
+ "<U0641><U0628><U0631>";/
+ "<U0645><U0627><U0631>";/
+ "<U0627><U067E><U0631>";/
+ "<U0645><U0640><U06D0>";/
+ "<U062C><U0648><U0646>";/
+ "<U062C><U0648><U0644>";/
+ "<U0627><U06AB><U0633>";/
+ "<U0633><U067E><U062A>";/
+ "<U0627><U06A9><U062A>";/
+ "<U0646><U0648><U0645>";/
+ "<U062F><U0633><U0645>"
+ mon "<U062C><U0646><U0648><U0631><U064A>";/
+ "<U0641><U0628><U0631><U0648><U0631><U064A>";/
+ "<U0645><U0627><U0631><U0686>";/
+ "<U0627><U067E><U0631><U06CC><U0644>";/
+ "<U0645><U06D0>";/
+ "<U062C><U0648><U0646>";/
+ "<U062C><U0648><U0644><U0627><U064A>";/
+ "<U0627><U06AB><U0633><U062A>";/
+ "<U0633><U067E><U062A><U0645><U0628><U0631>";/
+ "<U0627><U06A9><U062A><U0648><U0628><U0631>";/
+ "<U0646><U0648><U0645><U0628><U0631>";/
+ "<U062F><U0633><U0645><U0628><U0631>"
+ d_t_fmt "<U0025><U0041><U0020><U062F><U0020><U0025><U0059>/
+<U0020><U062F><U0020><U0025><U0042><U0020><U0025><U0065><U060C>/
+<U0020><U0025><U005A><U0020><U0025><U0048><U003A><U0025><U004D>/
+<U003A><U0025><U0053>"
+ d_fmt "<U062F><U0020><U0025><U0059><U0020><U062F><U0020>/
+<U0025><U0042><U0020><U0025><U0065>"
+ t_fmt "<U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>"
+ am_pm "<U063A><U002E><U0645><U002E>";/
+ "<U063A><U002E><U0648><U002E>"
+ t_fmt_ampm "<U202B><U0025><U0049><U003A><U0025><U004D><U003A>/
+<U0025><U0053><U0020><U0025><U0070><U202C>"
+ first_weekday 7
+ first_workday 7
+ cal_direction 3
+END LC_TIME
+
+LC_NUMERIC
+ decimal_point "<U066B>"
+ thousands_sep "<U066C>"
+ grouping 3
+END LC_NUMERIC
+
+LC_MONETARY
+ int_curr_symbol "<U0041><U0046><U004E><U0020>"
+ currency_symbol "<U0627><U0641><U063A><U0627><U0646><U06CD>"
+ mon_decimal_point "<U066B>"
+ mon_thousands_sep "<U066C>"
+ mon_grouping 3
+ positive_sign ""
+ negative_sign "<U002D>"
+ int_frac_digits 0
+ frac_digits 0
+ p_cs_precedes 0
+ p_sep_by_space 1
+ n_cs_precedes 0
+ n_sep_by_space 1
+ p_sign_posn 1
+ n_sign_posn 1
+END LC_MONETARY
+
+LC_MESSAGES
+ yesexpr "<U005E><U005B><U0079><U0059><U0628>/
+<U0066><U005D><U002E><U002A>"
+ noexpr "<U005E><U005B><U006E><U004E><U062E>/
+<U0646><U006F><U005D><U002E><U002A>"
+END LC_MESSAGES
+
+LC_MEASUREMENT
+ measurement 1
+END LC_MEASUREMENT
+
+LC_PAPER
+ height 297
+ width 210
+END LC_PAPER
+
+LC_NAME
+ name_fmt "<U0025><U0073><U0025><U0074><U0025><U0070><U0025>/
+<U0074><U0025><U0067><U0025><U0074><U0025><U006D><U0025><U0074><U0025><U0066>"
+ name_gen "" % No general salutation for all persons in Pashto.
+ name_mr "<U069A><U0627><U063A><U0644><U06D0>"
+ name_mrs "<U0628><U064A><U0020><U0628><U064A>"
+ name_miss "<U0628><U064A><U0020><U0628><U064A>"
+ name_ms "<U0628><U064A><U0020><U0628><U064A>"
+END LC_NAME
+
+LC_ADDRESS
+ postal_fmt "<U0025><U0061><U0025><U004E><U0025><U0066><U0025>/
+<U004E><U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025>/
+<U0073><U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072>/
+<U0025><U004E><U0025><U0043><U002D><U0025><U007A><U0020><U0025><U0054>/
+<U0025><U004E><U0025><U0063><U0025><U004E>"
+ country_name "<U0627><U0641><U063A><U0627><U0646>/
+<U0633><U062A><U0627><U0646>"
+ %country_post "<U0041><U0046><U0047>" % FIXME: Not confirmed.
+ country_ab2 "<U0041><U0046>"
+ country_ab3 "<U0041><U0046><U0047>"
+ country_num 004
+ country_car "<U0041><U0046><U0047>"
+
+ %country_isbn "" % Unfortunately not yet assigned :-(
+ % Since to date there is no ISBN agency working
+ % in Afghanistan.
+
+ lang_name "<U067E><U069A><U062A><U0648>"
+ lang_ab "<U0070><U0073>"
+ lang_term "<U0070><U0075><U0073>"
+ lang_lib "<U0070><U0075><U0073>"
+END LC_ADDRESS
+
+LC_TELEPHONE
+ tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020>/
+<U0025><U006C>"
+ tel_dom_fmt "<U0025><U0041><U2012><U0025><U006C>"
+ int_select "<U0030><U0030>"
+ int_prefix "<U0039><U0033>"
+END LC_TELEPHONE
+
+%%%%%%%%%%%%%%%%%%%% locale definition file "ps_AF" ends %%%%%%%%%%%%%%%%%%%%%
diff --git a/localedata/locales/sc_IT b/localedata/locales/sc_IT
index 0309d56f63..f0b99d292d 100644
--- a/localedata/locales/sc_IT
+++ b/localedata/locales/sc_IT
@@ -110,9 +110,9 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/sd_IN b/localedata/locales/sd_IN
index 52f069b004..4688ddc794 100644
--- a/localedata/locales/sd_IN
+++ b/localedata/locales/sd_IN
@@ -7,7 +7,7 @@ escape_char /
LC_IDENTIFICATION
title "Sindhi language locale for India"
-source "Redhat, Pune"
+source "Red Hat, Pune"
address "Marisfot III, Marigold Premises, East-Wing, Kalyaninagar, Pune, India-411014"
contact ""
email "bug-glibc-locales@gnu.org"
diff --git a/localedata/locales/sd_IN@devanagari b/localedata/locales/sd_IN@devanagari
index ce029376e6..7a211c4a23 100644
--- a/localedata/locales/sd_IN@devanagari
+++ b/localedata/locales/sd_IN@devanagari
@@ -6,7 +6,7 @@ escape_char /
LC_IDENTIFICATION
title "Sindhi language locale for India"
-source "Redhat, Pune"
+source "Red Hat, Pune"
address "Marisfot III, Marigold Premises, East-Wing, Kalyaninagar, Pune, India-411014"
contact ""
email "bug-glibc-locales@gnu.org"
diff --git a/localedata/locales/shs_CA b/localedata/locales/shs_CA
index e6c52c7672..6c1b77f19d 100644
--- a/localedata/locales/shs_CA
+++ b/localedata/locales/shs_CA
@@ -55,10 +55,10 @@ reorder-after <RES-1>
% Present in iso14651_t1, but these definitions seem to have been
% removed from latest iso14651 tables.
reorder-after <U0041>
-<U00C6> "<a><e>";"<LIG><LIG>";"<CAP><CAP>";IGNORE
+<U00C6> "<U003C><U0061><U003E><U003C><U0065><U003E>";"<U003C><U004C><U0049><U0047><U003E><U003C><U004C><U0049><U0047><U003E>";"<U003C><U0043><U0041><U0050><U003E><U003C><U0043><U0041><U0050><U003E>";IGNORE
reorder-after <U0061>
-<U00E6> "<a><e>";"<LIG><LIG>";"<MIN><MIN>";IGNORE
+<U00E6> "<U003C><U0061><U003E><U003C><U0065><U003E>";"<U003C><U004C><U0049><U0047><U003E><U003C><U004C><U0049><U0047><U003E>";"<U003C><U004D><U0049><U004E><U003E><U003C><U004D><U0049><U004E><U003E>";IGNORE
reorder-end
@@ -80,41 +80,41 @@ LC_TIME
abday "<U0053><U0078><U0065>";/
"<U0053><U0070><U0065>";/
"<U0053><U0065><U006C>";/
- "<U004B><U0065><U006C>";/
- "<U004D><U0065><U0073>";/
- "<U0054><U0073><U0065>";/
- "<U0054><U0071><U006D>"
-day "<U0053><U0078><U0065><U0074><U0073><U0070><U0065><U0073><U0071><U0027><U0074>";/
- "<U0053><U0070><U0065><U0074><U006B><U0065><U0073><U0071><U0027><U0074>";/
- "<U0053><U0065><U006C><U0065><U0073><U0071><U0027><U0074>";/
- "<U0053><U006B><U0065><U006C><U006C><U0065><U0073><U0071><U0027><U0074>";/
- "<U0053><U006D><U0065><U0073><U0065><U0073><U0071><U0027><U0074>";/
- "<U0053><U0074><U0073><U0065><U006C><U006B><U0073><U0074><U0065><U0073><U0071><U0027><U0074>";/
- "<U0053><U0074><U0071><U006D><U0065><U006B><U0073><U0074><U0065><U0073><U0071><U0027><U0074>"
+ "<U0053><U006B><U0065>";/
+ "<U0053><U006D><U0065>";/
+ "<U0053><U0074><U0073>";/
+ "<U0053><U0074><U0071>"
+day "<U0053><U0078><U0065><U0074><U0073><U0070><U0065><U0073><U0071><U0313><U0074>";/
+ "<U0053><U0070><U0065><U0074><U006B><U0065><U0073><U0071><U0313><U0074>";/
+ "<U0053><U0065><U006C><U0065><U0073><U0071><U0313><U0074>";/
+ "<U0053><U006B><U0065><U006C><U006C><U0065><U0073><U0071><U0313><U0074>";/
+ "<U0053><U006D><U0065><U0073><U0065><U0073><U0071><U0313><U0074>";/
+ "<U0053><U0074><U0073><U0065><U006C><U006B><U0073><U0074><U0065><U0073><U0071><U0313><U0074>";/
+ "<U0053><U0074><U0071><U006D><U0065><U006B><U0073><U0074><U0065><U0073><U0071><U0313><U0074>"
abmon "<U004B><U0077><U0065>";/
"<U0054><U0073><U0069>";/
"<U0053><U0071><U0065>";/
- "<U0045><U0027><U0077>";/
+ "<U00C9><U0077><U0074>";/
"<U0045><U006C><U006C>";/
"<U0054><U0073><U0070>";/
"<U0054><U0071><U0077>";/
- "<U0043><U0074><U0027>";/
+ "<U0043><U0074><U0313><U00E9>";/
"<U0051><U0065><U006C>";/
- "<U0057><U0065><U006C>";/
+ "<U0057><U00E9><U006C>";/
"<U0055><U0037><U006C>";/
"<U0054><U0065><U0074>"
-mon "<U0050><U0065><U006C><U006C><U006B><U0077><U0065><U0074><U0027><U006D><U0069><U006E>";/
- "<U0050><U0065><U006C><U0063><U0074><U0073><U0069><U0070><U0077><U0065><U006E><U0027><U0074><U0065><U006E>";/
- "<U0050><U0065><U006C><U006C><U0073><U0071><U0065><U0027><U0070><U0074><U0073>";/
- "<U0050><U0065><U0073><U006C><U006C><U0065><U0027><U0077><U0074><U0065><U006E>";/
- "<U0050><U0065><U006C><U006C><U0037><U0065><U006C><U006C><U0037><U0065><U0027><U0037><U006C><U006C><U0071><U0074><U0065><U006E>";/
- "<U0050><U0065><U006C><U006C><U0074><U0073><U0070><U0065><U0027><U006E><U0074><U0073><U006B>";/
- "<U0050><U0065><U006C><U006C><U0074><U0071><U0077><U0065><U006C><U0071><U0027><U0077><U0065><U0027><U006C><U0027><U0074>";/
- "<U0050><U0065><U006C><U006C><U0063><U0074><U0027><U0065><U0027><U0078><U0065><U006C><U0027><U0063><U0074><U0065><U006E>";/
- "<U0050><U0065><U0073><U0071><U0065><U006C><U0071><U006C><U0065><U0027><U006C><U0074><U0065><U006E>";/
- "<U0050><U0065><U0073><U006C><U006C><U0077><U0065><U0027><U006C><U0073><U0074><U0065><U006E>";/
- "<U0050><U0065><U006C><U006C><U0063><U0037><U0065><U006C><U006C><U0037><U0075><U0027><U0037><U006C><U006C><U0063><U0077><U0074><U0065><U006E><U0027>";/
- "<U0050><U0065><U006C><U006C><U0074><U0065><U0074><U0065><U0027><U0074><U0071><U0027><U0065><U006D>"
+mon "<U0050><U0065><U006C><U006C><U006B><U0077><U0065><U0074><U0313><U006D><U0069><U006E>";/
+ "<U0050><U0065><U006C><U0063><U0074><U0073><U0069><U0070><U0077><U0065><U006E><U0313><U0074><U0065><U006E>";/
+ "<U0050><U0065><U006C><U006C><U0073><U0071><U00E9><U0070><U0074><U0073>";/
+ "<U0050><U0065><U0073><U006C><U006C><U00E9><U0077><U0074><U0065><U006E>";/
+ "<U0050><U0065><U006C><U006C><U0037><U0065><U006C><U006C><U0037><U00E9><U0037><U006C><U006C><U0071><U0074><U0065><U006E>";/
+ "<U0050><U0065><U006C><U006C><U0074><U0073><U0070><U00E9><U006E><U0074><U0073><U006B>";/
+ "<U0050><U0065><U006C><U006C><U0074><U0071><U0077><U0065><U006C><U0071><U0313><U0077><U00E9><U006C><U0313><U0074>";/
+ "<U0050><U0065><U006C><U006C><U0063><U0074><U0313><U00E9><U0078><U0065><U006C><U0313><U0063><U0074><U0065><U006E>";/
+ "<U0050><U0065><U0073><U0071><U0065><U006C><U0071><U006C><U00E9><U006C><U0074><U0065><U006E>";/
+ "<U0050><U0065><U0073><U006C><U006C><U0077><U00E9><U006C><U0073><U0074><U0065><U006E>";/
+ "<U0050><U0065><U006C><U006C><U0063><U0037><U0065><U006C><U006C><U0037><U00E9><U0037><U006C><U006C><U0063><U0077><U0074><U0065><U006E><U0313>";/
+ "<U0050><U0065><U006C><U006C><U0074><U0065><U0074><U00E9><U0074><U0071><U0313><U0065><U006D>"
d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0072><U0020><U0025><U005A>"
d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
t_fmt "<U0025><U0072>"
diff --git a/localedata/locales/sk_SK b/localedata/locales/sk_SK
index 45d7da87eb..0b737a0b1f 100644
--- a/localedata/locales/sk_SK
+++ b/localedata/locales/sk_SK
@@ -91,8 +91,8 @@ END LC_MESSAGES
LC_MONETARY
-int_curr_symbol "<U0053><U004B><U004B><U0020>"
-currency_symbol "<U0053><U006B>"
+int_curr_symbol "<U0045><U0055><U0052><U0020>"
+currency_symbol "<U20AC>"
mon_decimal_point "<U002C>"
mon_thousands_sep "<U00A0>"
mon_grouping 3;3
@@ -183,9 +183,9 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
-first_weekday 1
-first_workday 1
+week 7;19971130;4
+first_weekday 2
+first_workday 2
END LC_TIME
diff --git a/localedata/locales/sr_ME b/localedata/locales/sr_ME
index ed12002e54..231efb111e 100644
--- a/localedata/locales/sr_ME
+++ b/localedata/locales/sr_ME
@@ -120,7 +120,7 @@ t_fmt_ampm "<U0025><U0054>"
date_fmt "<U0025><U0061><U002c><U0020><U0025><U0065><U002E><U0020>/
<U0025><U0062><U0020><U0025><U0059><U002E><U0020><U0020><U0025><U0048>/
<U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U000A>"
-% week 7;19971201;4
+week 7;19971130;4
first_weekday 2
first_workday 2
END LC_TIME
diff --git a/localedata/locales/sr_RS b/localedata/locales/sr_RS
index 90d54aa2e7..3028e35707 100644
--- a/localedata/locales/sr_RS
+++ b/localedata/locales/sr_RS
@@ -301,7 +301,7 @@ t_fmt_ampm "<U0025><U0054>"
date_fmt "<U0025><U0061><U002C><U0020><U0025><U0065><U002E><U0020>/
<U0025><U0062><U0020><U0025><U0059><U002E><U0020><U0020><U0025><U0048>/
<U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U000A>"
-% week 7;19971201;4
+week 7;19971130;4
first_weekday 2
first_workday 2
END LC_TIME
diff --git a/localedata/locales/sr_RS@latin b/localedata/locales/sr_RS@latin
index 207f515180..6bc402a85f 100644
--- a/localedata/locales/sr_RS@latin
+++ b/localedata/locales/sr_RS@latin
@@ -121,7 +121,7 @@ t_fmt_ampm "<U0025><U0054>"
date_fmt "<U0025><U0061><U002c><U0020><U0025><U0065><U002E><U0020>/
<U0025><U0062><U0020><U0025><U0059><U002E><U0020><U0020><U0025><U0048>/
<U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U000A>"
-% week 7;19971201;4
+week 7;19971130;4
first_weekday 2
first_workday 2
END LC_TIME
diff --git a/localedata/locales/sv_FI b/localedata/locales/sv_FI
index bdda16d44b..af9ec123ea 100644
--- a/localedata/locales/sv_FI
+++ b/localedata/locales/sv_FI
@@ -97,14 +97,16 @@ mon "<U006A><U0061><U006E><U0075><U0061><U0072><U0069>";/
"<U006F><U006B><U0074><U006F><U0062><U0065><U0072>";/
"<U006E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
"<U0064><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
-d_t_fmt "<U0025><U0061><U0020><U0025><U0065><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0048><U002E><U0025><U004D><U002E><U0025><U0053>"
-d_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064>"
+d_t_fmt "<U0025><U0061><U0020><U0025><U0065><U002E><U0020><U0025><U0042>/
+<U0074><U0061><U0020><U0025><U0059><U0020><U0025><U0048><U002E><U0025>/
+<U004D><U002E><U0025><U0053>"
+d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
t_fmt "<U0025><U0048><U002E><U0025><U004D><U002E><U0025><U0053>"
am_pm "";""
t_fmt_ampm ""
-date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
-<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
-<U0025><U005A><U0020><U0025><U0059>"
+date_fmt "<U0025><U0061><U0020><U0025><U002D><U0064><U002E><U0025>/
+<U002D><U006D><U002E><U0025><U0059><U0020><U0025><U0048><U002E><U0025>/
+<U004D><U002E><U0025><U0053><U0020><U0025><U007A>"
END LC_TIME
LC_PAPER
diff --git a/localedata/locales/ta_IN b/localedata/locales/ta_IN
index df68390261..51a4fff35f 100644
--- a/localedata/locales/ta_IN
+++ b/localedata/locales/ta_IN
@@ -37,6 +37,23 @@ END LC_IDENTIFICATION
LC_CTYPE
copy "i18n"
+% Tamil uses the alternate digits U+0BE6..U+0BEF
+outdigit <U0BE6>..<U0BEF>
+
+% This is used in the scanf family of functions to read Tamil numbers
+% using "%Id" and such.
+map to_inpunct; /
+ (<U0030>,<U0BE6>); /
+ (<U0031>,<U0BE7>); /
+ (<U0032>,<U0BE8>); /
+ (<U0033>,<U0BE9>); /
+ (<U0034>,<U0BEA>); /
+ (<U0035>,<U0BEB>); /
+ (<U0036>,<U0BEC>); /
+ (<U0037>,<U0BED>); /
+ (<U0038>,<U0BEE>); /
+ (<U0039>,<U0BEF>);
+
translit_start
include "translit_combining";""
translit_end
diff --git a/localedata/locales/te_IN b/localedata/locales/te_IN
index f833651a82..d3456244b0 100644
--- a/localedata/locales/te_IN
+++ b/localedata/locales/te_IN
@@ -36,6 +36,23 @@ END LC_IDENTIFICATION
LC_CTYPE
copy "i18n"
+% Telugu uses the alternate digits U+0C66..U+0C6F
+outdigit <U0C66>..<U0C6F>
+
+% This is used in the scanf family of functions to read Telugu numbers
+% using "%Id" and such.
+map to_inpunct; /
+ (<U0030>,<U0C66>); /
+ (<U0031>,<U0C67>); /
+ (<U0032>,<U0C68>); /
+ (<U0033>,<U0C69>); /
+ (<U0034>,<U0C6A>); /
+ (<U0035>,<U0C6B>); /
+ (<U0036>,<U0C6C>); /
+ (<U0037>,<U0C6D>); /
+ (<U0038>,<U0C6E>); /
+ (<U0039>,<U0C6F>);
+
translit_start
include "translit_combining";""
translit_end
diff --git a/localedata/locales/tl_PH b/localedata/locales/tl_PH
index 250f276298..40c6a715ad 100644
--- a/localedata/locales/tl_PH
+++ b/localedata/locales/tl_PH
@@ -144,8 +144,8 @@ copy "en_US"
END LC_MESSAGES
LC_PAPER
-height 297
-width 210
+height 279
+width 216
END LC_PAPER
LC_MEASUREMENT
diff --git a/localedata/locales/uk_UA b/localedata/locales/uk_UA
index 80f1f7b6b1..b5f5381317 100644
--- a/localedata/locales/uk_UA
+++ b/localedata/locales/uk_UA
@@ -901,7 +901,9 @@ LC_TIME
%
% ISO 8601 conforming applications should use the values 7, 19971201 (a
% Monday), and 4 (Thursday), respectively.
-week 7;19971201;4
+% week 7;19971201;4
+% But see BUG below.
+week 7;19971130;4
% A list of abbreviated weekday names. (%a)
%
@@ -1015,10 +1017,10 @@ am_pm "";""
% Define the first day of the week to be displayed in a calendar.
% This weekday is relative to the date defined in the <week> keyword.
-first_weekday 1
+first_weekday 2
% Define the first workday relative to the <week> keyword
-first_workday 1
+first_workday 2
% Zymovyj CHas (winter time) or z.ch. (or nothing)
% Litnij CHas (summer time) or l.ch.
diff --git a/localedata/locales/ur_IN b/localedata/locales/ur_IN
new file mode 100644
index 0000000000..3ac8c737ea
--- /dev/null
+++ b/localedata/locales/ur_IN
@@ -0,0 +1,184 @@
+comment_char %
+escape_char /
+% Urdu language locale for India.
+% Contributed by Pravin Satpute <psatpute@redhat.com> and
+% Mrs. Nasreen Khan
+
+LC_IDENTIFICATION
+
+title "Urdu language locale for India"
+source "Red Hat, Pune"
+address "Marisfot III, Marigold Premises, East-Wing, Kalyaninagar, Pune, India-411014"
+contact ""
+email "bug-glibc-locales@gnu.org"
+tel ""
+fax ""
+language "Urdu"
+territory "India"
+revision "1.0"
+date "2009,June,09"
+%
+category "ur_IN:2009";LC_IDENTIFICATION
+category "ur_IN:2009";LC_CTYPE
+category "ur_IN:2009";LC_COLLATE
+category "ur_IN:2009";LC_TIME
+category "ur_IN:2009";LC_NUMERIC
+category "ur_IN:2009";LC_MONETARY
+category "ur_IN:2009";LC_MESSAGES
+category "ur_IN:2009";LC_PAPER
+category "ur_IN:2009";LC_NAME
+category "ur_IN:2009";LC_ADDRESS
+category "ur_IN:2009";LC_TELEPHONE
+
+
+END LC_IDENTIFICATION
+
+
+LC_CTYPE
+copy "i18n"
+
+translit_start
+include "translit_combining";""
+translit_end
+END LC_CTYPE
+
+
+LC_COLLATE
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
+END LC_COLLATE
+
+
+LC_MONETARY
+copy "ar_IN"
+END LC_MONETARY
+
+
+LC_NUMERIC
+copy "hi_IN"
+END LC_NUMERIC
+
+
+LC_TIME
+% This is the POSIX Locale definition for the LC_TIME category
+% generated by IBM Basic CountryPack Transformer.
+% These are generated based on XML base Locale definition file
+% for IBM Class for Unicode.
+%
+% Abbreviated weekday names (%a)
+abday "<U0627><U062A><U0648><U0627><U0631>";/
+ "<U067E><U06CC><U0631>";/
+ "<U0645><U0646><U06AF><U0644>";/
+ "<U0628><U062f><U06be>";/
+ "<U062C><U0645><U0639><U0631><U0627><U062A>";/
+ "<U062C><U0645><U0639><U06C1>";"<U0633><U0646><U06CC><U0686><U0631>"
+%
+% Full weekday names (%A)
+day "<U0627><U062A><U0648><U0627><U0631>";/
+ "<U067E><U06CC><U0631>";/
+ "<U0645><U0646><U06AF><U0644>";/
+ "<U0628><U062f><U06be>";/
+ "<U062C><U0645><U0639><U0631><U0627><U062A>";/
+ "<U062C><U0645><U0639><U06C1>";"<U0633><U0646><U06CC><U0686><U0631>"
+%
+% Abbreviated month names (%b)
+abmon "<U062C><U0646><U0648><U0631><U06CC>";/
+ "<U0641><U0631><U0648><U0631><U06CC>";/
+ "<U0645><U0627><U0631><U0686>";/
+ "<U0627><U067E><U0631><U06CC><U0644>";/
+ "<U0645><U0626><U06CC>";/
+ "<U062C><U0648><U0646>";/
+ "<U062C><U0648><U0644><U0627><U0626><U06CC>";/
+ "<U0627><U06AF><U0633><U062A>";/
+ "<U0633><U062A><U0645><U0628><U0631>";/
+ "<U0627><U0643><U062A><U0648><U0628><U0631>";/
+ "<U0646><U0648><U0645><U0628><U0631>";/
+ "<U062F><U0633><U0645><U0628><U0631>"
+%
+% Full month names (%B)
+mon "<U062C><U0646><U0648><U0631><U06CC>";/
+ "<U0641><U0631><U0648><U0631><U06CC>";/
+ "<U0645><U0627><U0631><U0686>";/
+ "<U0627><U067E><U0631><U06CC><U0644>";/
+ "<U0645><U0626><U06CC>";/
+ "<U062C><U0648><U0646>";/
+ "<U062C><U0648><U0644><U0627><U0626><U06CC>";/
+ "<U0627><U06AF><U0633><U062A>";/
+ "<U0633><U062A><U0645><U0628><U0631>";/
+ "<U0627><U0643><U062A><U0648><U0628><U0631>";/
+ "<U0646><U0648><U0645><U0628><U0631>";/
+ "<U062F><U0633><U0645><U0628><U0631>"
+%
+% Equivalent of AM PM
+am_pm "<U0041><U004D>";"<U0050><U004D>"
+%
+% Appropriate date and time representation
+% %A %d %b %Y%I:%M:%S %Z
+d_t_fmt "<U0025><U0041><U0020><U0025><U0064><U0020><U0025><U0062>/
+<U0020><U0025><U0059><U0020><U0025><U0049><U003A><U0025><U004D><U003A>/
+<U0025><U0053><U0020><U0025><U0070><U0020><U0025><U005A>"
+%
+% Appropriate date representation
+% %A %d %b %Y
+d_fmt "<U0025><U0041><U0020><U0025><U0064><U0020><U0025><U0062>/
+<U0020><U0025><U0059>"
+%
+% Appropriate time representation
+% %I:%M:%S %Z
+t_fmt "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053>/
+<U0020><U0020><U0025><U005A>"
+%
+% Appropriate 12 h time representation (%r)
+t_fmt_ampm "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053>/
+<U0020><U0025><U0070><U0020><U0025><U005A>"
+%
+% Appropriate date representation (date(1)) "%a %b %e %H:%M:%S %Z %Y"
+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
+<U0025><U005A><U0020><U0025><U0059>"
+END LC_TIME
+
+
+LC_MESSAGES
+yesexpr "<U005E><U005B><U06C1><U0079><U0059><U005D><U002E><U002A>"
+noexpr "<U005E><U005B><U0646><U006E><U004E><U005D><U002E><U002A>"
+
+yesstr "<U06C1><U0627><U06BA>"
+nostr "<U0646><U06C1><U06CC><U06BA>"
+END LC_MESSAGES
+
+
+LC_PAPER
+copy "hi_IN"
+END LC_PAPER
+
+
+LC_NAME
+% This is the ISO_IEC TR14652 Locale definition for the LC_NAME category
+% generated by IBM Basic CountryPack Transformer.
+%
+%
+name_fmt "<U0025><U0070><U0025><U0074><U0025><U0066><U0025><U0074><U0025><U0067>"
+name_gen ""
+name_mr "<U062C><U0646><U0627><U0628>"
+name_mrs "<U0645><U062D><U062A><U0631><U0645><U06C1>"
+name_miss "<U06AA><U0645><U0627><U0631><U064A>"
+name_ms "<U06AA><U0645><U0627><U0631>"
+
+END LC_NAME
+
+
+LC_ADDRESS
+copy "hi_IN"
+END LC_ADDRESS
+
+
+LC_TELEPHONE
+copy "hi_IN"
+END LC_TELEPHONE
+
+
+LC_MEASUREMENT
+copy "hi_IN"
+END LC_MEASUREMENT
diff --git a/localedata/tests-mbwc/tst_types.h b/localedata/tests-mbwc/tst_types.h
index 3d18279411..7a5db4f75e 100644
--- a/localedata/tests-mbwc/tst_types.h
+++ b/localedata/tests-mbwc/tst_types.h
@@ -122,7 +122,7 @@ typedef struct
int t_flg;
int t_init;
}
- seq[WCSTOK_SEQNUM];
+ seq[MBRLEN_SEQNUM];
}
TIN_MBRLEN_REC;
diff --git a/login/Makefile b/login/Makefile
index b02d385b66..beb2a5c3a8 100644
--- a/login/Makefile
+++ b/login/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1996-1998,2000-2002,2003,2007 Free Software Foundation, Inc.
+# Copyright (C) 1996-1998,2000-2003,2007, 2009 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
@@ -54,6 +54,24 @@ otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
$(resolvobjdir)/libresolv.a $(common-objpfx)libc.a
endif
+ifeq (yesyes,$(have-fpie)$(build-shared))
+pt_chown-cflags += $(pie-ccflag)
+endif
+ifeq (yes,$(have-ssp))
+pt_chown-cflags += -fstack-protector
+endif
+ifeq (yes,$(have-libcap))
+libcap = -lcap
+endif
+CFLAGS-pt_chown.c = $(pt_chown-cflags)
+LDLIBS-pt_chown = $(libcap)
+ifeq (yesyes,$(have-fpie)$(build-shared))
+LDFLAGS-pt_chown = -Wl,-z,now
+
+$(objpfx)pt_chown: $(objpfx)pt_chown.o
+ $(+link-pie)
+endif
+
# pt_chown needs to be setuid root.
$(inst_libexecdir)/pt_chown: $(objpfx)pt_chown $(+force)
$(make-target-directory)
diff --git a/login/programs/pt_chown.c b/login/programs/pt_chown.c
index 485eddabc9..4c36f2ceac 100644
--- a/login/programs/pt_chown.c
+++ b/login/programs/pt_chown.c
@@ -1,5 +1,5 @@
/* pt_chmod - helper program for `grantpt'.
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by C. Scott Ananian <cananian@alumni.princeton.edu>, 1998.
@@ -29,6 +29,10 @@
#include <string.h>
#include <sys/stat.h>
#include <unistd.h>
+#ifdef HAVE_LIBCAP
+# include <sys/capability.h>
+# include <sys/prctl.h>
+#endif
#include "pty-private.h"
@@ -99,7 +103,7 @@ static int
do_pt_chown (void)
{
char *pty;
- struct stat st;
+ struct stat64 st;
struct group *p;
gid_t gid;
@@ -110,7 +114,7 @@ do_pt_chown (void)
/* Check that the returned slave pseudo terminal is a
character device. */
- if (stat (pty, &st) < 0 || !S_ISCHR(st.st_mode))
+ if (stat64 (pty, &st) < 0 || !S_ISCHR (st.st_mode))
return FAIL_EINVAL;
/* Get the group ID of the special `tty' group. */
@@ -119,12 +123,13 @@ do_pt_chown (void)
/* Set the owner to the real user ID, and the group to that special
group ID. */
- if (chown (pty, getuid (), gid) < 0)
+ if (st.st_gid != gid && chown (pty, getuid (), gid) < 0)
return FAIL_EACCES;
/* Set the permission mode to readable and writable by the owner,
and writable by the group. */
- if (chmod (pty, S_IRUSR|S_IWUSR|S_IWGRP) < 0)
+ if ((st.st_mode & ACCESSPERMS) != (S_IRUSR|S_IWUSR|S_IWGRP)
+ && chmod (pty, S_IRUSR|S_IWUSR|S_IWGRP) < 0)
return FAIL_EACCES;
return 0;
@@ -135,16 +140,42 @@ int
main (int argc, char *argv[])
{
uid_t euid = geteuid ();
+ uid_t uid = getuid ();
int remaining;
- /* Normal invocation of this program is with no arguments and
- with privileges.
- FIXME: Should use capable (CAP_CHOWN|CAP_FOWNER). */
if (argc == 1 && euid == 0)
- return do_pt_chown ();
+ {
+#ifdef HAVE_LIBCAP
+ /* Drop privileges. */
+ if (uid != euid)
+ {
+ static const cap_value_t cap_list[] =
+ { CAP_CHOWN, CAP_FOWNER };
+# define ncap_list (sizeof (cap_list) / sizeof (cap_list[0]))
+ cap_t caps = cap_init ();
+ if (caps == NULL)
+ return FAIL_ENOMEM;
+
+ /* There is no reason why these should not work. */
+ cap_set_flag (caps, CAP_PERMITTED, ncap_list, cap_list, CAP_SET);
+ cap_set_flag (caps, CAP_EFFECTIVE, ncap_list, cap_list, CAP_SET);
+
+ int res = cap_set_proc (caps);
+
+ cap_free (caps);
+
+ if (__builtin_expect (res != 0, 0))
+ return FAIL_EXEC;
+ }
+#endif
+
+ /* Normal invocation of this program is with no arguments and
+ with privileges. */
+ return do_pt_chown ();
+ }
/* We aren't going to be using privileges, so drop them right now. */
- setuid (getuid ());
+ setuid (uid);
/* Set locale via LC_ALL. */
setlocale (LC_ALL, "");
diff --git a/login/utmp_file.c b/login/utmp_file.c
index 9033f72a4e..d19a2c9c4d 100644
--- a/login/utmp_file.c
+++ b/login/utmp_file.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2004, 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2004, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>
and Paul Janzen <pcj@primenet.com>, 1996.
@@ -36,6 +36,7 @@
/* Descriptor for the file and position. */
static int file_fd = -1;
+static bool file_writable;
static off64_t file_offset;
/* Cache for the last read entry. */
@@ -44,7 +45,7 @@ static struct utmp last_entry;
/* Locking timeout. */
#ifndef TIMEOUT
-# define TIMEOUT 1
+# define TIMEOUT 10
#endif
/* Do-nothing handler for locking timeout. */
@@ -138,7 +139,6 @@ setutent_file (void)
if (file_fd < 0)
{
const char *file_name;
- int result;
file_name = TRANSFORM_UTMP_FILE_NAME (__libc_utmp_file_name);
@@ -147,14 +147,10 @@ setutent_file (void)
#else
# define O_flags O_LARGEFILE
#endif
- file_fd = open_not_cancel_2 (file_name, O_RDWR | O_flags);
+ file_writable = false;
+ file_fd = open_not_cancel_2 (file_name, O_RDONLY | O_flags);
if (file_fd == -1)
- {
- /* Hhm, read-write access did not work. Try read-only. */
- file_fd = open_not_cancel_2 (file_name, O_RDONLY | O_flags);
- if (file_fd == -1)
- return 0;
- }
+ return 0;
#ifndef __ASSUME_O_CLOEXEC
# ifdef O_CLOEXEC
@@ -162,7 +158,7 @@ setutent_file (void)
# endif
{
/* We have to make sure the file is `closed on exec'. */
- result = fcntl_not_cancel (file_fd, F_GETFD, 0);
+ int result = fcntl_not_cancel (file_fd, F_GETFD, 0);
if (result >= 0)
{
# ifdef O_CLOEXEC
@@ -404,6 +400,52 @@ pututline_file (const struct utmp *data)
assert (file_fd >= 0);
+ if (! file_writable)
+ {
+ /* We must make the file descriptor writable before going on. */
+ const char *file_name = TRANSFORM_UTMP_FILE_NAME (__libc_utmp_file_name);
+
+ int new_fd = open_not_cancel_2 (file_name, O_RDWR | O_flags);
+ if (new_fd == -1)
+ return NULL;
+
+#ifndef __ASSUME_O_CLOEXEC
+# ifdef O_CLOEXEC
+ if (__have_o_cloexec <= 0)
+# endif
+ {
+ /* We have to make sure the file is `closed on exec'. */
+ int result = fcntl_not_cancel (file_fd, F_GETFD, 0);
+ if (result >= 0)
+ {
+# ifdef O_CLOEXEC
+ if (__have_o_cloexec == 0)
+ __have_o_cloexec = (result & FD_CLOEXEC) ? 1 : -1;
+
+ if (__have_o_cloexec < 0)
+# endif
+ result = fcntl_not_cancel (file_fd, F_SETFD,
+ result | FD_CLOEXEC);
+ }
+
+ if (result == -1)
+ {
+ close_not_cancel_no_status (file_fd);
+ return NULL;
+ }
+ }
+#endif
+
+ if (__lseek64 (new_fd, __lseek64 (file_fd, 0, SEEK_CUR), SEEK_SET) == -1
+ || __dup2 (new_fd, file_fd) < 0)
+ {
+ close_not_cancel_no_status (new_fd);
+ return NULL;
+ }
+ close_not_cancel_no_status (new_fd);
+ file_writable = true;
+ }
+
/* Find the correct place to insert the data. */
if (file_offset > 0
&& (
diff --git a/mach/.cvsignore b/mach/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/mach/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/malloc/Makefile b/malloc/Makefile
index 22b14eac77..e7ec1abf93 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007
+# Copyright (C) 1991-1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2009
# Free Software Foundation, Inc.
# This file is part of the GNU C Library.
@@ -104,6 +104,7 @@ $(objpfx)memusagestat: $(memusagestat-modules:%=$(objpfx)%.o)
include ../Rules
CFLAGS-mcheck-init.c = $(PIC-ccflag)
+CFLAGS-obstack.c = $(uses-callbacks)
$(objpfx)libmcheck.a: $(objpfx)mcheck-init.o
-rm -f $@
@@ -124,6 +125,9 @@ endif
tst-mcheck-ENV = MALLOC_CHECK_=3
+ifeq ($(experimental-malloc),yes)
+CPPFLAGS-malloc.c += -DPER_THREAD -DATOMIC_FASTBINS
+endif
# Uncomment this for test releases. For public releases it is too expensive.
#CPPFLAGS-malloc.o += -DMALLOC_DEBUG=1
diff --git a/malloc/Versions b/malloc/Versions
index 0c578f95b6..cf0b1e559a 100644
--- a/malloc/Versions
+++ b/malloc/Versions
@@ -55,6 +55,9 @@ libc {
# p*
posix_memalign;
}
+ GLIBC_2.10 {
+ malloc_info;
+ }
GLIBC_PRIVATE {
# Internal startup hook for libpthread.
__libc_malloc_pthread_startup;
diff --git a/malloc/arena.c b/malloc/arena.c
index 9932ee049b..4d0deefe19 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -1,5 +1,5 @@
/* Malloc implementation for multiple threads without lock contention.
- Copyright (C) 2001,2002,2003,2004,2005,2006,2007
+ Copyright (C) 2001,2002,2003,2004,2005,2006,2007,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
@@ -78,6 +78,10 @@ extern int sanity_check_heap_info_alignment[(sizeof (heap_info)
static tsd_key_t arena_key;
static mutex_t list_lock;
+#ifdef PER_THREAD
+static size_t narenas;
+static mstate free_list;
+#endif
#if THREAD_STATS
static int stat_n_heaps;
@@ -105,13 +109,30 @@ int __malloc_initialized = -1;
in the new arena. */
#define arena_get(ptr, size) do { \
+ arena_lookup(ptr); \
+ arena_lock(ptr, size); \
+} while(0)
+
+#define arena_lookup(ptr) do { \
Void_t *vptr = NULL; \
ptr = (mstate)tsd_getspecific(arena_key, vptr); \
+} while(0)
+
+#ifdef PER_THREAD
+#define arena_lock(ptr, size) do { \
+ if(ptr) \
+ (void)mutex_lock(&ptr->mutex); \
+ else \
+ ptr = arena_get2(ptr, (size)); \
+} while(0)
+#else
+#define arena_lock(ptr, size) do { \
if(ptr && !mutex_trylock(&ptr->mutex)) { \
THREAD_STAT(++(ptr->stat_lock_direct)); \
} else \
ptr = arena_get2(ptr, (size)); \
} while(0)
+#endif
/* find the heap and corresponding arena for a given ptr */
@@ -219,13 +240,19 @@ free_atfork(Void_t* mem, const Void_t *caller)
}
#endif
+#ifdef ATOMIC_FASTBINS
+ ar_ptr = arena_for_chunk(p);
+ tsd_getspecific(arena_key, vptr);
+ _int_free(ar_ptr, p, vptr == ATFORK_ARENA_PTR);
+#else
ar_ptr = arena_for_chunk(p);
tsd_getspecific(arena_key, vptr);
if(vptr != ATFORK_ARENA_PTR)
(void)mutex_lock(&ar_ptr->mutex);
- _int_free(ar_ptr, mem);
+ _int_free(ar_ptr, p);
if(vptr != ATFORK_ARENA_PTR)
(void)mutex_unlock(&ar_ptr->mutex);
+#endif
}
@@ -312,8 +339,17 @@ ptmalloc_unlock_all2 (void)
__malloc_hook = save_malloc_hook;
__free_hook = save_free_hook;
#endif
+#ifdef PER_THREAD
+ free_list = NULL;
+#endif
for(ar_ptr = &main_arena;;) {
mutex_init(&ar_ptr->mutex);
+#ifdef PER_THREAD
+ if (ar_ptr != save_arena) {
+ ar_ptr->next_free = free_list;
+ free_list = ar_ptr;
+ }
+#endif
ar_ptr = ar_ptr->next;
if(ar_ptr == &main_arena) break;
}
@@ -377,6 +413,11 @@ ptmalloc_init_minimal (void)
mp_.mmap_threshold = DEFAULT_MMAP_THRESHOLD;
mp_.trim_threshold = DEFAULT_TRIM_THRESHOLD;
mp_.pagesize = malloc_getpagesize;
+#ifdef PER_THREAD
+# define NARENAS_FROM_NCORES(n) ((n) * (sizeof(long) == 4 ? 2 : 8))
+ mp_.arena_test = NARENAS_FROM_NCORES (1);
+ narenas = 1;
+#endif
}
@@ -529,9 +570,25 @@ ptmalloc_init (void)
}
break;
case 9:
- if (! secure && memcmp (envline, "MMAP_MAX_", 9) == 0)
- mALLOPt(M_MMAP_MAX, atoi(&envline[10]));
+ if (! secure)
+ {
+ if (memcmp (envline, "MMAP_MAX_", 9) == 0)
+ mALLOPt(M_MMAP_MAX, atoi(&envline[10]));
+#ifdef PER_THREAD
+ else if (memcmp (envline, "ARENA_MAX", 9) == 0)
+ mALLOPt(M_ARENA_MAX, atoi(&envline[10]));
+#endif
+ }
break;
+#ifdef PER_THREAD
+ case 10:
+ if (! secure)
+ {
+ if (memcmp (envline, "ARENA_TEST", 10) == 0)
+ mALLOPt(M_ARENA_TEST, atoi(&envline[11]));
+ }
+ break;
+#endif
case 15:
if (! secure)
{
@@ -567,8 +624,9 @@ ptmalloc_init (void)
if (check_action != 0)
__malloc_check_init();
}
- if(__malloc_initialize_hook != NULL)
- (*__malloc_initialize_hook)();
+ void (*hook) (void) = force_reg (__malloc_initialize_hook);
+ if (hook != NULL)
+ (*hook)();
__malloc_initialized = 1;
}
@@ -875,9 +933,110 @@ _int_new_arena(size_t size)
top(a) = (mchunkptr)ptr;
set_head(top(a), (((char*)h + h->size) - ptr) | PREV_INUSE);
+ tsd_setspecific(arena_key, (Void_t *)a);
+ mutex_init(&a->mutex);
+ (void)mutex_lock(&a->mutex);
+
+#ifdef PER_THREAD
+ (void)mutex_lock(&list_lock);
+#endif
+
+ /* Add the new arena to the global list. */
+ a->next = main_arena.next;
+ atomic_write_barrier ();
+ main_arena.next = a;
+
+#ifdef PER_THREAD
+ ++narenas;
+
+ (void)mutex_unlock(&list_lock);
+#endif
+
+ THREAD_STAT(++(a->stat_lock_loop));
+
return a;
}
+
+#ifdef PER_THREAD
+static mstate
+get_free_list (void)
+{
+ mstate result = free_list;
+ if (result != NULL)
+ {
+ (void)mutex_lock(&list_lock);
+ result = free_list;
+ if (result != NULL)
+ free_list = result->next_free;
+ (void)mutex_unlock(&list_lock);
+
+ if (result != NULL)
+ {
+ (void)mutex_lock(&result->mutex);
+ tsd_setspecific(arena_key, (Void_t *)result);
+ THREAD_STAT(++(result->stat_lock_loop));
+ }
+ }
+
+ return result;
+}
+
+
+static mstate
+reused_arena (void)
+{
+ if (narenas <= mp_.arena_test)
+ return NULL;
+
+ static int narenas_limit;
+ if (narenas_limit == 0)
+ {
+ if (mp_.arena_max != 0)
+ narenas_limit = mp_.arena_max;
+ else
+ {
+ int n = __get_nprocs ();
+
+ if (n >= 1)
+ narenas_limit = NARENAS_FROM_NCORES (n);
+ else
+ /* We have no information about the system. Assume two
+ cores. */
+ narenas_limit = NARENAS_FROM_NCORES (2);
+ }
+ }
+
+ if (narenas < narenas_limit)
+ return NULL;
+
+ mstate result;
+ static mstate next_to_use;
+ if (next_to_use == NULL)
+ next_to_use = &main_arena;
+
+ result = next_to_use;
+ do
+ {
+ if (!mutex_trylock(&result->mutex))
+ goto out;
+
+ result = result->next;
+ }
+ while (result != next_to_use);
+
+ /* No arena available. Wait for the next in line. */
+ (void)mutex_lock(&result->mutex);
+
+ out:
+ tsd_setspecific(arena_key, (Void_t *)result);
+ THREAD_STAT(++(result->stat_lock_loop));
+ next_to_use = result->next;
+
+ return result;
+}
+#endif
+
static mstate
internal_function
#if __STD_C
@@ -888,6 +1047,12 @@ arena_get2(a_tsd, size) mstate a_tsd; size_t size;
{
mstate a;
+#ifdef PER_THREAD
+ if ((a = get_free_list ()) == NULL
+ && (a = reused_arena ()) == NULL)
+ /* Nothing immediately available, so generate a new arena. */
+ a = _int_new_arena(size);
+#else
if(!a_tsd)
a = a_tsd = &main_arena;
else {
@@ -930,24 +1095,31 @@ arena_get2(a_tsd, size) mstate a_tsd; size_t size;
/* Nothing immediately available, so generate a new arena. */
a = _int_new_arena(size);
- if(a)
- {
- tsd_setspecific(arena_key, (Void_t *)a);
- mutex_init(&a->mutex);
- mutex_lock(&a->mutex); /* remember result */
-
- /* Add the new arena to the global list. */
- a->next = main_arena.next;
- atomic_write_barrier ();
- main_arena.next = a;
-
- THREAD_STAT(++(a->stat_lock_loop));
- }
(void)mutex_unlock(&list_lock);
+#endif
return a;
}
+#ifdef PER_THREAD
+static void __attribute__ ((section ("__libc_thread_freeres_fn")))
+arena_thread_freeres (void)
+{
+ Void_t *vptr = NULL;
+ mstate a = tsd_getspecific(arena_key, vptr);
+ tsd_setspecific(arena_key, NULL);
+
+ if (a != NULL)
+ {
+ (void)mutex_lock(&list_lock);
+ a->next_free = free_list;
+ free_list = a;
+ (void)mutex_unlock(&list_lock);
+ }
+}
+text_set_element (__libc_thread_subfreeres, arena_thread_freeres);
+#endif
+
#endif /* USE_ARENAS */
/*
diff --git a/malloc/hooks.c b/malloc/hooks.c
index c88937665c..28845eeb49 100644
--- a/malloc/hooks.c
+++ b/malloc/hooks.c
@@ -1,5 +1,5 @@
/* Malloc implementation for multiple threads without lock contention.
- Copyright (C) 2001-2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2001-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
@@ -162,8 +162,8 @@ mem2chunk_check(mem, magic_p) Void_t* mem; unsigned char **magic_p;
((char*)p + sz)>=(mp_.sbrk_base+main_arena.system_mem) )) ||
sz<MINSIZE || sz&MALLOC_ALIGN_MASK || !inuse(p) ||
( !prev_inuse(p) && (p->prev_size&MALLOC_ALIGN_MASK ||
- (contig && (char*)prev_chunk(p)<mp_.sbrk_base) ||
- next_chunk(prev_chunk(p))!=p) ))
+ (contig && (char*)prev_chunk(p)<mp_.sbrk_base) ||
+ next_chunk(prev_chunk(p))!=p) ))
return NULL;
magic = MAGICBYTE(p);
for(sz += SIZE_SZ-1; (c = ((unsigned char*)p)[sz]) != magic; sz -= c) {
@@ -177,9 +177,9 @@ mem2chunk_check(mem, magic_p) Void_t* mem; unsigned char **magic_p;
first. */
offset = (unsigned long)mem & page_mask;
if((offset!=MALLOC_ALIGNMENT && offset!=0 && offset!=0x10 &&
- offset!=0x20 && offset!=0x40 && offset!=0x80 && offset!=0x100 &&
- offset!=0x200 && offset!=0x400 && offset!=0x800 && offset!=0x1000 &&
- offset<0x2000) ||
+ offset!=0x20 && offset!=0x40 && offset!=0x80 && offset!=0x100 &&
+ offset!=0x200 && offset!=0x400 && offset!=0x800 && offset!=0x1000 &&
+ offset<0x2000) ||
!chunk_is_mmapped(p) || (p->size & PREV_INUSE) ||
( (((unsigned long)p - p->prev_size) & page_mask) != 0 ) ||
( (sz = chunksize(p)), ((p->prev_size + sz) & page_mask) != 0 ) )
@@ -235,8 +235,9 @@ top_check()
return -1;
}
/* Call the `morecore' hook if necessary. */
- if (__after_morecore_hook)
- (*__after_morecore_hook) ();
+ void (*hook) (void) = force_reg (__after_morecore_hook);
+ if (hook)
+ (*hook) ();
main_arena.system_mem = (new_brk - mp_.sbrk_base) + sbrk_size;
top(&main_arena) = (mchunkptr)(brk + front_misalign);
@@ -293,7 +294,11 @@ free_check(mem, caller) Void_t* mem; const Void_t *caller;
#if 0 /* Erase freed memory. */
memset(mem, 0, chunksize(p) - (SIZE_SZ+1));
#endif
- _int_free(&main_arena, mem);
+#ifdef ATOMIC_FASTBINS
+ _int_free(&main_arena, p, 1);
+#else
+ _int_free(&main_arena, p);
+#endif
(void)mutex_unlock(&main_arena.mutex);
}
@@ -305,8 +310,7 @@ realloc_check(oldmem, bytes, caller)
Void_t* oldmem; size_t bytes; const Void_t *caller;
#endif
{
- mchunkptr oldp;
- INTERNAL_SIZE_T nb, oldsize;
+ INTERNAL_SIZE_T nb;
Void_t* newmem = 0;
unsigned char *magic_p;
@@ -320,13 +324,13 @@ realloc_check(oldmem, bytes, caller)
return NULL;
}
(void)mutex_lock(&main_arena.mutex);
- oldp = mem2chunk_check(oldmem, &magic_p);
+ const mchunkptr oldp = mem2chunk_check(oldmem, &magic_p);
(void)mutex_unlock(&main_arena.mutex);
if(!oldp) {
malloc_printerr(check_action, "realloc(): invalid pointer", oldmem);
return malloc_check(bytes, NULL);
}
- oldsize = chunksize(oldp);
+ const INTERNAL_SIZE_T oldsize = chunksize(oldp);
checked_request2size(bytes+1, nb);
(void)mutex_lock(&main_arena.mutex);
@@ -344,26 +348,29 @@ realloc_check(oldmem, bytes, caller)
if(oldsize - SIZE_SZ >= nb)
newmem = oldmem; /* do nothing */
else {
- /* Must alloc, copy, free. */
- if (top_check() >= 0)
+ /* Must alloc, copy, free. */
+ if (top_check() >= 0)
newmem = _int_malloc(&main_arena, bytes+1);
- if (newmem) {
- MALLOC_COPY(BOUNDED_N(newmem, bytes+1), oldmem, oldsize - 2*SIZE_SZ);
- munmap_chunk(oldp);
- }
+ if (newmem) {
+ MALLOC_COPY(BOUNDED_N(newmem, bytes+1), oldmem, oldsize - 2*SIZE_SZ);
+ munmap_chunk(oldp);
+ }
}
}
} else {
#endif /* HAVE_MMAP */
- if (top_check() >= 0)
- newmem = _int_realloc(&main_arena, oldmem, bytes+1);
+ if (top_check() >= 0) {
+ INTERNAL_SIZE_T nb;
+ checked_request2size(bytes + 1, nb);
+ newmem = _int_realloc(&main_arena, oldp, oldsize, nb);
+ }
#if 0 /* Erase freed memory. */
if(newmem)
newp = mem2chunk(newmem);
nb = chunksize(newp);
if(oldp<newp || oldp>=chunk_at_offset(newp, nb)) {
memset((char*)oldmem + 2*sizeof(mbinptr), 0,
- oldsize - (2*sizeof(mbinptr)+2*SIZE_SZ+1));
+ oldsize - (2*sizeof(mbinptr)+2*SIZE_SZ+1));
} else if(nb > oldsize+SIZE_SZ) {
memset((char*)BOUNDED_N(chunk2mem(newp), bytes) + oldsize,
0, nb - (oldsize+SIZE_SZ));
@@ -470,7 +477,11 @@ free_starter(mem, caller) Void_t* mem; const Void_t *caller;
return;
}
#endif
- _int_free(&main_arena, mem);
+#ifdef ATOMIC_FASTBINS
+ _int_free(&main_arena, p, 1);
+#else
+ _int_free(&main_arena, p);
+#endif
}
# endif /* !defiend NO_STARTER */
@@ -494,7 +505,7 @@ free_starter(mem, caller) Void_t* mem; const Void_t *caller;
then the hooks are reset to 0. */
#define MALLOC_STATE_MAGIC 0x444c4541l
-#define MALLOC_STATE_VERSION (0*0x100l + 3l) /* major*0x100 + minor */
+#define MALLOC_STATE_VERSION (0*0x100l + 4l) /* major*0x100 + minor */
struct malloc_save_state {
long magic;
@@ -514,6 +525,10 @@ struct malloc_save_state {
unsigned long mmapped_mem;
unsigned long max_mmapped_mem;
int using_malloc_checking;
+ unsigned long max_fast;
+ unsigned long arena_test;
+ unsigned long arena_max;
+ unsigned long narenas;
};
Void_t*
@@ -561,6 +576,12 @@ public_gET_STATe(void)
ms->mmapped_mem = mp_.mmapped_mem;
ms->max_mmapped_mem = mp_.max_mmapped_mem;
ms->using_malloc_checking = using_malloc_checking;
+ ms->max_fast = get_max_fast();
+#ifdef PER_THREAD
+ ms->arena_test = mp_.arena_test;
+ ms->arena_max = mp_.arena_max;
+ ms->narenas = narenas;
+#endif
(void)mutex_unlock(&main_arena.mutex);
return (Void_t*)ms;
}
@@ -580,9 +601,12 @@ public_sET_STATe(Void_t* msptr)
(void)mutex_lock(&main_arena.mutex);
/* There are no fastchunks. */
clear_fastchunks(&main_arena);
- set_max_fast(DEFAULT_MXFAST);
+ if (ms->version >= 4)
+ set_max_fast(ms->max_fast);
+ else
+ set_max_fast(64); /* 64 used to be the value we always used. */
for (i=0; i<NFASTBINS; ++i)
- main_arena.fastbins[i] = 0;
+ fastbin (&main_arena, i) = 0;
for (i=0; i<BINMAPSIZE; ++i)
main_arena.binmap[i] = 0;
top(&main_arena) = ms->av[2];
@@ -605,7 +629,7 @@ public_sET_STATe(Void_t* msptr)
mark_bin(&main_arena, i);
} else {
/* Oops, index computation from chunksize must have changed.
- Link the whole list into unsorted_chunks. */
+ Link the whole list into unsorted_chunks. */
first(b) = last(b) = b;
b = unsorted_chunks(&main_arena);
ms->av[2*i+2]->bk = b;
@@ -646,16 +670,23 @@ public_sET_STATe(Void_t* msptr)
/* Check whether it is safe to enable malloc checking, or whether
it is necessary to disable it. */
if (ms->using_malloc_checking && !using_malloc_checking &&
- !disallow_malloc_check)
+ !disallow_malloc_check)
__malloc_check_init ();
else if (!ms->using_malloc_checking && using_malloc_checking) {
- __malloc_hook = 0;
- __free_hook = 0;
- __realloc_hook = 0;
- __memalign_hook = 0;
+ __malloc_hook = NULL;
+ __free_hook = NULL;
+ __realloc_hook = NULL;
+ __memalign_hook = NULL;
using_malloc_checking = 0;
}
}
+ if (ms->version >= 4) {
+#ifdef PER_THREAD
+ mp_.arena_test = ms->arena_test;
+ mp_.arena_max = ms->arena_max;
+ narenas = ms->narenas;
+#endif
+ }
check_malloc_state(&main_arena);
(void)mutex_unlock(&main_arena.mutex);
diff --git a/malloc/malloc.c b/malloc/malloc.c
index d6102a4528..b43e454f6e 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -1,5 +1,5 @@
/* Malloc implementation for multiple threads without lock contention.
- Copyright (C) 1996-2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1996-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Wolfram Gloger <wg@malloc.de>
and Doug Lea <dl@cs.oswego.edu>, 2001.
@@ -23,6 +23,10 @@
This is a version (aka ptmalloc2) of malloc/free/realloc written by
Doug Lea and adapted to multiple threads/arenas by Wolfram Gloger.
+ There have been substantial changesmade after the integration into
+ glibc in all parts of the code. Do not look for much commonality
+ with the ptmalloc2 version.
+
* Version ptmalloc2-20011215
based on:
VERSION 2.7.0 Sun Mar 11 14:14:06 2001 Doug Lea (dl at gee)
@@ -103,7 +107,7 @@
and status information.
Minimum allocated size: 4-byte ptrs: 16 bytes (including 4 overhead)
- 8-byte ptrs: 24/32 bytes (including, 4/8 overhead)
+ 8-byte ptrs: 24/32 bytes (including, 4/8 overhead)
When a chunk is freed, 12 (for 4byte ptrs) or 20 (for 8 byte
ptrs but 4 byte size) or 24 (for 8/8) additional bytes are
@@ -122,7 +126,7 @@
minimal mmap unit); typically 4096 or 8192 bytes.
Maximum allocated size: 4-byte size_t: 2^32 minus about two pages
- 8-byte size_t: 2^64 minus about two pages
+ 8-byte size_t: 2^64 minus about two pages
It is assumed that (possibly signed) size_t values suffice to
represent chunk sizes. `Possibly signed' is due to the fact
@@ -208,7 +212,7 @@
Tuning options that are also dynamically changeable via mallopt:
- DEFAULT_MXFAST 64
+ DEFAULT_MXFAST 64 (for 32bit), 128 (for 64bit)
DEFAULT_TRIM_THRESHOLD 128 * 1024
DEFAULT_TOP_PAD 0
DEFAULT_MMAP_THRESHOLD 128 * 1024
@@ -254,8 +258,12 @@
#include <malloc-machine.h>
#ifdef _LIBC
+#ifdef ATOMIC_FASTBINS
+#include <atomic.h>
+#endif
#include <stdio-common/_itoa.h>
#include <bits/wordsize.h>
+#include <sys/sysinfo.h>
#endif
#ifdef __cplusplus
@@ -321,11 +329,28 @@ extern "C" {
or other mallocs available that do this.
*/
-#if MALLOC_DEBUG
-#include <assert.h>
+#ifdef NDEBUG
+# define assert(expr) ((void) 0)
#else
-#undef assert
-#define assert(x) ((void)0)
+# define assert(expr) \
+ ((expr) \
+ ? ((void) 0) \
+ : __malloc_assert (__STRING (expr), __FILE__, __LINE__, __func__))
+
+extern const char *__progname;
+
+static void
+__malloc_assert (const char *assertion, const char *file, unsigned int line,
+ const char *function)
+{
+ (void) __fxprintf (NULL, "%s%s%s:%u: %s%sAssertion `%s' failed.\n",
+ __progname, __progname[0] ? ": " : "",
+ file, line,
+ function ? function : "", function ? ": " : "",
+ assertion);
+ fflush (stderr);
+ abort ();
+}
#endif
@@ -565,6 +590,13 @@ Void_t* memcpy();
#endif
#endif
+
+/* Force a value to be in a register and stop the compiler referring
+ to the source (mostly memory location) again. */
+#define force_reg(val) \
+ ({ __typeof (val) _v; asm ("" : "=r" (_v) : "0" (val)); _v; })
+
+
/*
MALLOC_FAILURE_ACTION is the action to take before "return 0" when
malloc fails to be able to return memory, either because memory is
@@ -990,17 +1022,17 @@ int public_mALLOPt();
arena: current total non-mmapped bytes allocated from system
ordblks: the number of free chunks
smblks: the number of fastbin blocks (i.e., small chunks that
- have been freed but not use resused or consolidated)
+ have been freed but not use resused or consolidated)
hblks: current number of mmapped regions
hblkhd: total bytes held in mmapped regions
usmblks: the maximum total allocated space. This will be greater
- than current total if trimming has occurred.
+ than current total if trimming has occurred.
fsmblks: total bytes held in fastbin blocks
uordblks: current total allocated space (normal or mmapped)
fordblks: total free space
keepcost: the maximum number of bytes that could ideally be released
- back to system via malloc_trim. ("ideally" means that
- it ignores page restrictions etc.)
+ back to system via malloc_trim. ("ideally" means that
+ it ignores page restrictions etc.)
Because these fields are ints, but internal bookkeeping may
be kept as longs, the reported values may wrap around zero and
@@ -1308,7 +1340,7 @@ int __posix_memalign(void **, size_t, size_t);
#endif
#ifndef DEFAULT_MXFAST
-#define DEFAULT_MXFAST 64
+#define DEFAULT_MXFAST (64 * SIZE_SZ / 4)
#endif
@@ -1581,11 +1613,16 @@ typedef struct malloc_chunk* mchunkptr;
#if __STD_C
-Void_t* _int_malloc(mstate, size_t);
-void _int_free(mstate, Void_t*);
-Void_t* _int_realloc(mstate, Void_t*, size_t);
-Void_t* _int_memalign(mstate, size_t, size_t);
-Void_t* _int_valloc(mstate, size_t);
+static Void_t* _int_malloc(mstate, size_t);
+#ifdef ATOMIC_FASTBINS
+static void _int_free(mstate, mchunkptr, int);
+#else
+static void _int_free(mstate, mchunkptr);
+#endif
+static Void_t* _int_realloc(mstate, mchunkptr, INTERNAL_SIZE_T,
+ INTERNAL_SIZE_T);
+static Void_t* _int_memalign(mstate, size_t, size_t);
+static Void_t* _int_valloc(mstate, size_t);
static Void_t* _int_pvalloc(mstate, size_t);
/*static Void_t* cALLOc(size_t, size_t);*/
#ifndef _LIBC
@@ -1632,12 +1669,12 @@ static void free_atfork(Void_t* mem, const Void_t *caller);
#else
-Void_t* _int_malloc();
-void _int_free();
-Void_t* _int_realloc();
-Void_t* _int_memalign();
-Void_t* _int_valloc();
-Void_t* _int_pvalloc();
+static Void_t* _int_malloc();
+static void _int_free();
+static Void_t* _int_realloc();
+static Void_t* _int_memalign();
+static Void_t* _int_valloc();
+static Void_t* _int_pvalloc();
/*static Void_t* cALLOc();*/
static Void_t** _int_icalloc();
static Void_t** _int_icomalloc();
@@ -1802,17 +1839,17 @@ struct malloc_chunk {
chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Size of previous chunk, if allocated | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Size of chunk, in bytes |M|P|
+ | Size of previous chunk, if allocated | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Size of chunk, in bytes |M|P|
mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | User data starts here... .
- . .
- . (malloc_usable_size() bytes) .
- . |
+ | User data starts here... .
+ . .
+ . (malloc_usable_size() bytes) .
+ . |
nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Size of chunk |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Size of chunk |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where "chunk" is the front of the chunk for the purpose of most of
@@ -1826,20 +1863,20 @@ nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Free chunks are stored in circular doubly-linked lists, and look like this:
chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Size of previous chunk |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Size of previous chunk |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
`head:' | Size of chunk, in bytes |P|
mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Forward pointer to next chunk in list |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Back pointer to previous chunk in list |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Unused space (may be 0 bytes long) .
- . .
- . |
+ | Forward pointer to next chunk in list |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Back pointer to previous chunk in list |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Unused space (may be 0 bytes long) .
+ . .
+ . |
nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
`foot:' | Size of chunk, in bytes |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The P (PREV_INUSE) bit, stored in the unused low-order bit of the
chunk size (which is always a multiple of two words), is an in-use
@@ -1860,14 +1897,14 @@ nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The two exceptions to all this are
1. The special chunk `top' doesn't bother using the
- trailing size field since there is no next contiguous chunk
- that would have to index off it. After initialization, `top'
- is forced to always exist. If it would become less than
- MINSIZE bytes long, it is replenished.
+ trailing size field since there is no next contiguous chunk
+ that would have to index off it. After initialization, `top'
+ is forced to always exist. If it would become less than
+ MINSIZE bytes long, it is replenished.
2. Chunks allocated via mmap, which have the second-lowest-order
- bit M (IS_MMAPPED) set in their size fields. Because they are
- allocated one-by-one, each must contain its own trailing size field.
+ bit M (IS_MMAPPED) set in their size fields. Because they are
+ allocated one-by-one, each must contain its own trailing size field.
*/
@@ -2140,7 +2177,7 @@ typedef struct malloc_chunk* mbinptr;
((((unsigned long)(sz)) >> 12) <= 10)? 110 + (((unsigned long)(sz)) >> 12): \
((((unsigned long)(sz)) >> 15) <= 4)? 119 + (((unsigned long)(sz)) >> 15): \
((((unsigned long)(sz)) >> 18) <= 2)? 124 + (((unsigned long)(sz)) >> 18): \
- 126)
+ 126)
// XXX It remains to be seen whether it is good to keep the widths of
// XXX the buckets the same or whether it should be scaled by a factor
@@ -2151,7 +2188,7 @@ typedef struct malloc_chunk* mbinptr;
((((unsigned long)(sz)) >> 12) <= 10)? 110 + (((unsigned long)(sz)) >> 12): \
((((unsigned long)(sz)) >> 15) <= 4)? 119 + (((unsigned long)(sz)) >> 15): \
((((unsigned long)(sz)) >> 18) <= 2)? 124 + (((unsigned long)(sz)) >> 18): \
- 126)
+ 126)
#define largebin_index(sz) \
(SIZE_SZ == 8 ? largebin_index_64 (sz) : largebin_index_32 (sz))
@@ -2239,12 +2276,15 @@ typedef struct malloc_chunk* mbinptr;
*/
typedef struct malloc_chunk* mfastbinptr;
+#define fastbin(ar_ptr, idx) ((ar_ptr)->fastbinsY[idx])
/* offset 2 to use otherwise unindexable first 2 bins */
-#define fastbin_index(sz) ((((unsigned int)(sz)) >> 3) - 2)
+#define fastbin_index(sz) \
+ ((((unsigned int)(sz)) >> (SIZE_SZ == 8 ? 4 : 3)) - 2)
+
/* The maximum fastbin request size we support */
-#define MAX_FAST_SIZE 80
+#define MAX_FAST_SIZE (80 * SIZE_SZ / 4)
#define NFASTBINS (fastbin_index(request2size(MAX_FAST_SIZE))+1)
@@ -2279,8 +2319,13 @@ typedef struct malloc_chunk* mfastbinptr;
#define FASTCHUNKS_BIT (1U)
#define have_fastchunks(M) (((M)->flags & FASTCHUNKS_BIT) == 0)
+#ifdef ATOMIC_FASTBINS
+#define clear_fastchunks(M) catomic_or (&(M)->flags, FASTCHUNKS_BIT)
+#define set_fastchunks(M) catomic_and (&(M)->flags, ~FASTCHUNKS_BIT)
+#else
#define clear_fastchunks(M) ((M)->flags |= FASTCHUNKS_BIT)
#define set_fastchunks(M) ((M)->flags &= ~FASTCHUNKS_BIT)
+#endif
/*
NONCONTIGUOUS_BIT indicates that MORECORE does not return contiguous
@@ -2327,7 +2372,7 @@ struct malloc_state {
#endif
/* Fastbins */
- mfastbinptr fastbins[NFASTBINS];
+ mfastbinptr fastbinsY[NFASTBINS];
/* Base of the topmost chunk -- not otherwise kept in a bin */
mchunkptr top;
@@ -2344,6 +2389,11 @@ struct malloc_state {
/* Linked list */
struct malloc_state *next;
+#ifdef PER_THREAD
+ /* Linked list for free arenas. */
+ struct malloc_state *next_free;
+#endif
+
/* Memory allocated from the system in this arena. */
INTERNAL_SIZE_T system_mem;
INTERNAL_SIZE_T max_system_mem;
@@ -2354,6 +2404,10 @@ struct malloc_par {
unsigned long trim_threshold;
INTERNAL_SIZE_T top_pad;
INTERNAL_SIZE_T mmap_threshold;
+#ifdef PER_THREAD
+ INTERNAL_SIZE_T arena_test;
+ INTERNAL_SIZE_T arena_max;
+#endif
/* Memory map support */
int n_mmaps;
@@ -2391,6 +2445,13 @@ static struct malloc_state main_arena;
static struct malloc_par mp_;
+#ifdef PER_THREAD
+/* Non public mallopt parameters. */
+#define M_ARENA_TEST -7
+#define M_ARENA_MAX -8
+#endif
+
+
/* Maximum size of memory handled in fastbins. */
static INTERNAL_SIZE_T global_max_fast;
@@ -2553,8 +2614,8 @@ static void do_check_chunk(av, p) mstate av; mchunkptr p;
/* Has legal address ... */
if (p != av->top) {
if (contiguous(av)) {
- assert(((char*)p) >= min_address);
- assert(((char*)p + sz) <= ((char*)(av->top)));
+ assert(((char*)p) >= min_address);
+ assert(((char*)p + sz) <= ((char*)(av->top)));
}
}
else {
@@ -2811,9 +2872,9 @@ static void do_check_malloc_state(mstate av)
unsigned int binbit = get_binmap(av,i);
int empty = last(b) == b;
if (!binbit)
- assert(empty);
+ assert(empty);
else if (!empty)
- assert(binbit);
+ assert(binbit);
}
for (p = last(b); p != b; p = p->bk) {
@@ -2822,12 +2883,12 @@ static void do_check_malloc_state(mstate av)
size = chunksize(p);
total += size;
if (i >= 2) {
- /* chunk belongs in bin */
- idx = bin_index(size);
- assert(idx == i);
- /* lists are sorted */
- assert(p->bk == b ||
- (unsigned long)chunksize(p->bk) >= (unsigned long)chunksize(p));
+ /* chunk belongs in bin */
+ idx = bin_index(size);
+ assert(idx == i);
+ /* lists are sorted */
+ assert(p->bk == b ||
+ (unsigned long)chunksize(p->bk) >= (unsigned long)chunksize(p));
if (!in_smallbin_range(size))
{
@@ -2855,10 +2916,10 @@ static void do_check_malloc_state(mstate av)
assert (p->fd_nextsize == NULL && p->bk_nextsize == NULL);
/* chunk is followed by a legal chain of inuse chunks */
for (q = next_chunk(p);
- (q != av->top && inuse(q) &&
- (unsigned long)(chunksize(q)) >= MINSIZE);
- q = next_chunk(q))
- do_check_inuse_chunk(av, q);
+ (q != av->top && inuse(q) &&
+ (unsigned long)(chunksize(q)) >= MINSIZE);
+ q = next_chunk(q))
+ do_check_inuse_chunk(av, q);
}
}
@@ -2874,14 +2935,14 @@ static void do_check_malloc_state(mstate av)
assert(mp_.n_mmaps <= mp_.max_n_mmaps);
assert((unsigned long)(av->system_mem) <=
- (unsigned long)(av->max_system_mem));
+ (unsigned long)(av->max_system_mem));
assert((unsigned long)(mp_.mmapped_mem) <=
- (unsigned long)(mp_.max_mmapped_mem));
+ (unsigned long)(mp_.max_mmapped_mem));
#ifdef NO_THREADS
assert((unsigned long)(mp_.max_total_mem) >=
- (unsigned long)(mp_.mmapped_mem) + (unsigned long)(av->system_mem));
+ (unsigned long)(mp_.mmapped_mem) + (unsigned long)(av->system_mem));
#endif
}
#endif
@@ -2966,51 +3027,51 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av;
if (mm != MAP_FAILED) {
- /*
- The offset to the start of the mmapped region is stored
- in the prev_size field of the chunk. This allows us to adjust
- returned start address to meet alignment requirements here
- and in memalign(), and still be able to compute proper
- address argument for later munmap in free() and realloc().
- */
+ /*
+ The offset to the start of the mmapped region is stored
+ in the prev_size field of the chunk. This allows us to adjust
+ returned start address to meet alignment requirements here
+ and in memalign(), and still be able to compute proper
+ address argument for later munmap in free() and realloc().
+ */
#if 1
/* For glibc, chunk2mem increases the address by 2*SIZE_SZ and
MALLOC_ALIGN_MASK is 2*SIZE_SZ-1. Each mmap'ed area is page
aligned and therefore definitely MALLOC_ALIGN_MASK-aligned. */
- assert (((INTERNAL_SIZE_T)chunk2mem(mm) & MALLOC_ALIGN_MASK) == 0);
+ assert (((INTERNAL_SIZE_T)chunk2mem(mm) & MALLOC_ALIGN_MASK) == 0);
#else
- front_misalign = (INTERNAL_SIZE_T)chunk2mem(mm) & MALLOC_ALIGN_MASK;
- if (front_misalign > 0) {
- correction = MALLOC_ALIGNMENT - front_misalign;
- p = (mchunkptr)(mm + correction);
- p->prev_size = correction;
- set_head(p, (size - correction) |IS_MMAPPED);
- }
- else
+ front_misalign = (INTERNAL_SIZE_T)chunk2mem(mm) & MALLOC_ALIGN_MASK;
+ if (front_misalign > 0) {
+ correction = MALLOC_ALIGNMENT - front_misalign;
+ p = (mchunkptr)(mm + correction);
+ p->prev_size = correction;
+ set_head(p, (size - correction) |IS_MMAPPED);
+ }
+ else
#endif
{
p = (mchunkptr)mm;
set_head(p, size|IS_MMAPPED);
}
- /* update statistics */
+ /* update statistics */
- if (++mp_.n_mmaps > mp_.max_n_mmaps)
- mp_.max_n_mmaps = mp_.n_mmaps;
+ if (++mp_.n_mmaps > mp_.max_n_mmaps)
+ mp_.max_n_mmaps = mp_.n_mmaps;
- sum = mp_.mmapped_mem += size;
- if (sum > (unsigned long)(mp_.max_mmapped_mem))
- mp_.max_mmapped_mem = sum;
+ sum = mp_.mmapped_mem += size;
+ if (sum > (unsigned long)(mp_.max_mmapped_mem))
+ mp_.max_mmapped_mem = sum;
#ifdef NO_THREADS
- sum += av->system_mem;
- if (sum > (unsigned long)(mp_.max_total_mem))
- mp_.max_total_mem = sum;
+ sum += av->system_mem;
+ if (sum > (unsigned long)(mp_.max_total_mem))
+ mp_.max_total_mem = sum;
#endif
- check_chunk(av, p);
+ check_chunk(av, p);
- return chunk2mem(p);
+ return chunk2mem(p);
}
}
}
@@ -3030,15 +3091,17 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av;
*/
assert((old_top == initial_top(av) && old_size == 0) ||
- ((unsigned long) (old_size) >= MINSIZE &&
- prev_inuse(old_top) &&
+ ((unsigned long) (old_size) >= MINSIZE &&
+ prev_inuse(old_top) &&
((unsigned long)old_end & pagemask) == 0));
/* Precondition: not enough current space to satisfy nb request */
assert((unsigned long)(old_size) < (unsigned long)(nb + MINSIZE));
+#ifndef ATOMIC_FASTBINS
/* Precondition: all fastbins are consolidated */
assert(!have_fastchunks(av));
+#endif
if (av != &main_arena) {
@@ -3055,7 +3118,7 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av;
arena_mem += old_heap->size - old_heap_size;
#if 0
if(mmapped_mem + arena_mem + sbrked_mem > max_total_mem)
- max_total_mem = mmapped_mem + arena_mem + sbrked_mem;
+ max_total_mem = mmapped_mem + arena_mem + sbrked_mem;
#endif
set_head(old_top, (((char *)old_heap + old_heap->size) - (char *)old_top)
| PREV_INUSE);
@@ -3084,7 +3147,11 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av;
set_head(chunk_at_offset(old_top, old_size), (2*SIZE_SZ)|PREV_INUSE);
set_foot(chunk_at_offset(old_top, old_size), (2*SIZE_SZ));
set_head(old_top, old_size|PREV_INUSE|NON_MAIN_ARENA);
- _int_free(av, chunk2mem(old_top));
+#ifdef ATOMIC_FASTBINS
+ _int_free(av, old_top, 1);
+#else
+ _int_free(av, old_top);
+#endif
} else {
set_head(old_top, (old_size + 2*SIZE_SZ)|PREV_INUSE);
set_foot(old_top, (old_size + 2*SIZE_SZ));
@@ -3131,8 +3198,9 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av;
if (brk != (char*)(MORECORE_FAILURE)) {
/* Call the `morecore' hook if necessary. */
- if (__after_morecore_hook)
- (*__after_morecore_hook) ();
+ void (*hook) (void) = force_reg (__after_morecore_hook);
+ if (__builtin_expect (hook != NULL, 0))
+ (*hook) ();
} else {
/*
If have mmap, try using it as a backup when MORECORE fails or
@@ -3159,17 +3227,17 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av;
if (mbrk != MAP_FAILED) {
- /* We do not need, and cannot use, another sbrk call to find end */
- brk = mbrk;
- snd_brk = brk + size;
-
- /*
- Record that we no longer have a contiguous sbrk region.
- After the first time mmap is used as backup, we do not
- ever rely on contiguous space since this could incorrectly
- bridge regions.
- */
- set_noncontiguous(av);
+ /* We do not need, and cannot use, another sbrk call to find end */
+ brk = mbrk;
+ snd_brk = brk + size;
+
+ /*
+ Record that we no longer have a contiguous sbrk region.
+ After the first time mmap is used as backup, we do not
+ ever rely on contiguous space since this could incorrectly
+ bridge regions.
+ */
+ set_noncontiguous(av);
}
}
#endif
@@ -3189,26 +3257,26 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av;
else if (contiguous(av) && old_size && brk < old_end) {
/* Oops! Someone else killed our space.. Can't touch anything. */
- assert(0);
+ malloc_printerr (3, "break adjusted to free malloc space", brk);
}
/*
Otherwise, make adjustments:
* If the first time through or noncontiguous, we need to call sbrk
- just to find out where the end of memory lies.
+ just to find out where the end of memory lies.
* We need to ensure that all returned chunks from malloc will meet
- MALLOC_ALIGNMENT
+ MALLOC_ALIGNMENT
* If there was an intervening foreign sbrk, we need to adjust sbrk
- request size to account for fact that we will not be able to
- combine new space with existing space in old_top.
+ request size to account for fact that we will not be able to
+ combine new space with existing space in old_top.
* Almost all systems internally allocate whole pages at a time, in
- which case we might as well use the whole last page of request.
- So we allocate enough more memory to hit a page boundary now,
- which in turn causes future contiguous calls to page-align.
+ which case we might as well use the whole last page of request.
+ So we allocate enough more memory to hit a page boundary now,
+ which in turn causes future contiguous calls to page-align.
*/
else {
@@ -3224,109 +3292,115 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av;
if (old_size)
av->system_mem += brk - old_end;
- /* Guarantee alignment of first new chunk made from this space */
+ /* Guarantee alignment of first new chunk made from this space */
- front_misalign = (INTERNAL_SIZE_T)chunk2mem(brk) & MALLOC_ALIGN_MASK;
- if (front_misalign > 0) {
+ front_misalign = (INTERNAL_SIZE_T)chunk2mem(brk) & MALLOC_ALIGN_MASK;
+ if (front_misalign > 0) {
- /*
- Skip over some bytes to arrive at an aligned position.
- We don't need to specially mark these wasted front bytes.
- They will never be accessed anyway because
- prev_inuse of av->top (and any chunk created from its start)
- is always true after initialization.
- */
+ /*
+ Skip over some bytes to arrive at an aligned position.
+ We don't need to specially mark these wasted front bytes.
+ They will never be accessed anyway because
+ prev_inuse of av->top (and any chunk created from its start)
+ is always true after initialization.
+ */
- correction = MALLOC_ALIGNMENT - front_misalign;
- aligned_brk += correction;
- }
+ correction = MALLOC_ALIGNMENT - front_misalign;
+ aligned_brk += correction;
+ }
- /*
- If this isn't adjacent to existing space, then we will not
- be able to merge with old_top space, so must add to 2nd request.
- */
+ /*
+ If this isn't adjacent to existing space, then we will not
+ be able to merge with old_top space, so must add to 2nd request.
+ */
- correction += old_size;
+ correction += old_size;
- /* Extend the end address to hit a page boundary */
- end_misalign = (INTERNAL_SIZE_T)(brk + size + correction);
- correction += ((end_misalign + pagemask) & ~pagemask) - end_misalign;
+ /* Extend the end address to hit a page boundary */
+ end_misalign = (INTERNAL_SIZE_T)(brk + size + correction);
+ correction += ((end_misalign + pagemask) & ~pagemask) - end_misalign;
- assert(correction >= 0);
- snd_brk = (char*)(MORECORE(correction));
+ assert(correction >= 0);
+ snd_brk = (char*)(MORECORE(correction));
- /*
- If can't allocate correction, try to at least find out current
- brk. It might be enough to proceed without failing.
+ /*
+ If can't allocate correction, try to at least find out current
+ brk. It might be enough to proceed without failing.
- Note that if second sbrk did NOT fail, we assume that space
- is contiguous with first sbrk. This is a safe assumption unless
- program is multithreaded but doesn't use locks and a foreign sbrk
- occurred between our first and second calls.
- */
+ Note that if second sbrk did NOT fail, we assume that space
+ is contiguous with first sbrk. This is a safe assumption unless
+ program is multithreaded but doesn't use locks and a foreign sbrk
+ occurred between our first and second calls.
+ */
- if (snd_brk == (char*)(MORECORE_FAILURE)) {
- correction = 0;
- snd_brk = (char*)(MORECORE(0));
- } else
+ if (snd_brk == (char*)(MORECORE_FAILURE)) {
+ correction = 0;
+ snd_brk = (char*)(MORECORE(0));
+ } else {
/* Call the `morecore' hook if necessary. */
- if (__after_morecore_hook)
- (*__after_morecore_hook) ();
+ void (*hook) (void) = force_reg (__after_morecore_hook);
+ if (__builtin_expect (hook != NULL, 0))
+ (*hook) ();
+ }
}
/* handle non-contiguous cases */
else {
- /* MORECORE/mmap must correctly align */
- assert(((unsigned long)chunk2mem(brk) & MALLOC_ALIGN_MASK) == 0);
+ /* MORECORE/mmap must correctly align */
+ assert(((unsigned long)chunk2mem(brk) & MALLOC_ALIGN_MASK) == 0);
- /* Find out current end of memory */
- if (snd_brk == (char*)(MORECORE_FAILURE)) {
- snd_brk = (char*)(MORECORE(0));
- }
+ /* Find out current end of memory */
+ if (snd_brk == (char*)(MORECORE_FAILURE)) {
+ snd_brk = (char*)(MORECORE(0));
+ }
}
/* Adjust top based on results of second sbrk */
if (snd_brk != (char*)(MORECORE_FAILURE)) {
- av->top = (mchunkptr)aligned_brk;
- set_head(av->top, (snd_brk - aligned_brk + correction) | PREV_INUSE);
- av->system_mem += correction;
-
- /*
- If not the first time through, we either have a
- gap due to foreign sbrk or a non-contiguous region. Insert a
- double fencepost at old_top to prevent consolidation with space
- we don't own. These fenceposts are artificial chunks that are
- marked as inuse and are in any case too small to use. We need
- two to make sizes and alignments work out.
- */
-
- if (old_size != 0) {
- /*
- Shrink old_top to insert fenceposts, keeping size a
- multiple of MALLOC_ALIGNMENT. We know there is at least
- enough space in old_top to do this.
- */
- old_size = (old_size - 4*SIZE_SZ) & ~MALLOC_ALIGN_MASK;
- set_head(old_top, old_size | PREV_INUSE);
-
- /*
- Note that the following assignments completely overwrite
- old_top when old_size was previously MINSIZE. This is
- intentional. We need the fencepost, even if old_top otherwise gets
- lost.
- */
- chunk_at_offset(old_top, old_size )->size =
- (2*SIZE_SZ)|PREV_INUSE;
-
- chunk_at_offset(old_top, old_size + 2*SIZE_SZ)->size =
- (2*SIZE_SZ)|PREV_INUSE;
-
- /* If possible, release the rest. */
- if (old_size >= MINSIZE) {
- _int_free(av, chunk2mem(old_top));
- }
-
- }
+ av->top = (mchunkptr)aligned_brk;
+ set_head(av->top, (snd_brk - aligned_brk + correction) | PREV_INUSE);
+ av->system_mem += correction;
+
+ /*
+ If not the first time through, we either have a
+ gap due to foreign sbrk or a non-contiguous region. Insert a
+ double fencepost at old_top to prevent consolidation with space
+ we don't own. These fenceposts are artificial chunks that are
+ marked as inuse and are in any case too small to use. We need
+ two to make sizes and alignments work out.
+ */
+
+ if (old_size != 0) {
+ /*
+ Shrink old_top to insert fenceposts, keeping size a
+ multiple of MALLOC_ALIGNMENT. We know there is at least
+ enough space in old_top to do this.
+ */
+ old_size = (old_size - 4*SIZE_SZ) & ~MALLOC_ALIGN_MASK;
+ set_head(old_top, old_size | PREV_INUSE);
+
+ /*
+ Note that the following assignments completely overwrite
+ old_top when old_size was previously MINSIZE. This is
+ intentional. We need the fencepost, even if old_top otherwise gets
+ lost.
+ */
+ chunk_at_offset(old_top, old_size )->size =
+ (2*SIZE_SZ)|PREV_INUSE;
+
+ chunk_at_offset(old_top, old_size + 2*SIZE_SZ)->size =
+ (2*SIZE_SZ)|PREV_INUSE;
+
+ /* If possible, release the rest. */
+ if (old_size >= MINSIZE) {
+#ifdef ATOMIC_FASTBINS
+ _int_free(av, old_top, 1);
+#else
+ _int_free(av, old_top);
+#endif
+ }
+
+ }
}
}
@@ -3404,31 +3478,32 @@ static int sYSTRIm(pad, av) size_t pad; mstate av;
if (current_brk == (char*)(av->top) + top_size) {
/*
- Attempt to release memory. We ignore MORECORE return value,
- and instead call again to find out where new end of memory is.
- This avoids problems if first call releases less than we asked,
- of if failure somehow altered brk value. (We could still
- encounter problems if it altered brk in some very bad way,
- but the only thing we can do is adjust anyway, which will cause
- some downstream failure.)
+ Attempt to release memory. We ignore MORECORE return value,
+ and instead call again to find out where new end of memory is.
+ This avoids problems if first call releases less than we asked,
+ of if failure somehow altered brk value. (We could still
+ encounter problems if it altered brk in some very bad way,
+ but the only thing we can do is adjust anyway, which will cause
+ some downstream failure.)
*/
MORECORE(-extra);
/* Call the `morecore' hook if necessary. */
- if (__after_morecore_hook)
- (*__after_morecore_hook) ();
+ void (*hook) (void) = force_reg (__after_morecore_hook);
+ if (__builtin_expect (hook != NULL, 0))
+ (*hook) ();
new_brk = (char*)(MORECORE(0));
if (new_brk != (char*)MORECORE_FAILURE) {
- released = (long)(current_brk - new_brk);
-
- if (released != 0) {
- /* Success. Adjust top. */
- av->system_mem -= released;
- set_head(av->top, (top_size - released) | PREV_INUSE);
- check_malloc_state(av);
- return 1;
- }
+ released = (long)(current_brk - new_brk);
+
+ if (released != 0) {
+ /* Success. Adjust top. */
+ av->system_mem -= released;
+ set_head(av->top, (top_size - released) | PREV_INUSE);
+ check_malloc_state(av);
+ return 1;
+ }
}
}
}
@@ -3506,7 +3581,7 @@ mremap_chunk(p, new_size) mchunkptr p; size_t new_size;
return p;
cp = (char *)mremap((char *)p - offset, size + offset, new_size,
- MREMAP_MAYMOVE);
+ MREMAP_MAYMOVE);
if (cp == MAP_FAILED) return 0;
@@ -3541,11 +3616,45 @@ public_mALLOc(size_t bytes)
mstate ar_ptr;
Void_t *victim;
- __malloc_ptr_t (*hook) (size_t, __const __malloc_ptr_t) = __malloc_hook;
- if (hook != NULL)
+ __malloc_ptr_t (*hook) (size_t, __const __malloc_ptr_t)
+ = force_reg (__malloc_hook);
+ if (__builtin_expect (hook != NULL, 0))
return (*hook)(bytes, RETURN_ADDRESS (0));
- arena_get(ar_ptr, bytes);
+ arena_lookup(ar_ptr);
+#if 0
+ // XXX We need double-word CAS and fastbins must be extended to also
+ // XXX hold a generation counter for each entry.
+ if (ar_ptr) {
+ INTERNAL_SIZE_T nb; /* normalized request size */
+ checked_request2size(bytes, nb);
+ if (nb <= get_max_fast ()) {
+ long int idx = fastbin_index(nb);
+ mfastbinptr* fb = &fastbin (ar_ptr, idx);
+ mchunkptr pp = *fb;
+ mchunkptr v;
+ do
+ {
+ v = pp;
+ if (v == NULL)
+ break;
+ }
+ while ((pp = catomic_compare_and_exchange_val_acq (fb, v->fd, v)) != v);
+ if (v != 0) {
+ if (__builtin_expect (fastbin_index (chunksize (v)) != idx, 0))
+ malloc_printerr (check_action, "malloc(): memory corruption (fast)",
+ chunk2mem (v));
+ check_remalloced_chunk(ar_ptr, v, nb);
+ void *p = chunk2mem(v);
+ if (__builtin_expect (perturb_byte, 0))
+ alloc_perturb (p, bytes);
+ return p;
+ }
+ }
+ }
+#endif
+
+ arena_lock(ar_ptr, bytes);
if(!ar_ptr)
return 0;
victim = _int_malloc(ar_ptr, bytes);
@@ -3563,8 +3672,8 @@ public_mALLOc(size_t bytes)
ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes);
(void)mutex_unlock(&main_arena.mutex);
if(ar_ptr) {
- victim = _int_malloc(ar_ptr, bytes);
- (void)mutex_unlock(&ar_ptr->mutex);
+ victim = _int_malloc(ar_ptr, bytes);
+ (void)mutex_unlock(&ar_ptr->mutex);
}
#endif
}
@@ -3584,8 +3693,9 @@ public_fREe(Void_t* mem)
mstate ar_ptr;
mchunkptr p; /* chunk corresponding to mem */
- void (*hook) (__malloc_ptr_t, __const __malloc_ptr_t) = __free_hook;
- if (hook != NULL) {
+ void (*hook) (__malloc_ptr_t, __const __malloc_ptr_t)
+ = force_reg (__free_hook);
+ if (__builtin_expect (hook != NULL, 0)) {
(*hook)(mem, RETURN_ADDRESS (0));
return;
}
@@ -3601,7 +3711,7 @@ public_fREe(Void_t* mem)
/* see if the dynamic brk/mmap threshold needs adjusting */
if (!mp_.no_dyn_threshold
&& p->size > mp_.mmap_threshold
- && p->size <= DEFAULT_MMAP_THRESHOLD_MAX)
+ && p->size <= DEFAULT_MMAP_THRESHOLD_MAX)
{
mp_.mmap_threshold = chunksize (p);
mp_.trim_threshold = 2 * mp_.mmap_threshold;
@@ -3612,18 +3722,22 @@ public_fREe(Void_t* mem)
#endif
ar_ptr = arena_for_chunk(p);
-#if THREAD_STATS
+#ifdef ATOMIC_FASTBINS
+ _int_free(ar_ptr, p, 0);
+#else
+# if THREAD_STATS
if(!mutex_trylock(&ar_ptr->mutex))
++(ar_ptr->stat_lock_direct);
else {
(void)mutex_lock(&ar_ptr->mutex);
++(ar_ptr->stat_lock_wait);
}
-#else
+# else
(void)mutex_lock(&ar_ptr->mutex);
-#endif
- _int_free(ar_ptr, mem);
+# endif
+ _int_free(ar_ptr, p);
(void)mutex_unlock(&ar_ptr->mutex);
+#endif
}
#ifdef libc_hidden_def
libc_hidden_def (public_fREe)
@@ -3635,14 +3749,11 @@ public_rEALLOc(Void_t* oldmem, size_t bytes)
mstate ar_ptr;
INTERNAL_SIZE_T nb; /* padded request size */
- mchunkptr oldp; /* chunk corresponding to oldmem */
- INTERNAL_SIZE_T oldsize; /* its size */
-
Void_t* newp; /* chunk to return */
__malloc_ptr_t (*hook) (__malloc_ptr_t, size_t, __const __malloc_ptr_t) =
- __realloc_hook;
- if (hook != NULL)
+ force_reg (__realloc_hook);
+ if (__builtin_expect (hook != NULL, 0))
return (*hook)(oldmem, bytes, RETURN_ADDRESS (0));
#if REALLOC_ZERO_BYTES_FREES
@@ -3652,8 +3763,10 @@ public_rEALLOc(Void_t* oldmem, size_t bytes)
/* realloc of null is supposed to be same as malloc */
if (oldmem == 0) return public_mALLOc(bytes);
- oldp = mem2chunk(oldmem);
- oldsize = chunksize(oldp);
+ /* chunk corresponding to oldmem */
+ const mchunkptr oldp = mem2chunk(oldmem);
+ /* its size */
+ const INTERNAL_SIZE_T oldsize = chunksize(oldp);
/* Little security check which won't hurt performance: the
allocator never wrapps around at the end of the address space.
@@ -3700,12 +3813,12 @@ public_rEALLOc(Void_t* oldmem, size_t bytes)
(void)mutex_lock(&ar_ptr->mutex);
#endif
-#ifndef NO_THREADS
+#if !defined NO_THREADS && !defined PER_THREAD
/* As in malloc(), remember this arena for the next allocation. */
tsd_setspecific(arena_key, (Void_t *)ar_ptr);
#endif
- newp = _int_realloc(ar_ptr, oldmem, bytes);
+ newp = _int_realloc(ar_ptr, oldp, oldsize, nb);
(void)mutex_unlock(&ar_ptr->mutex);
assert(!newp || chunk_is_mmapped(mem2chunk(newp)) ||
@@ -3718,18 +3831,22 @@ public_rEALLOc(Void_t* oldmem, size_t bytes)
if (newp != NULL)
{
MALLOC_COPY (newp, oldmem, oldsize - SIZE_SZ);
-#if THREAD_STATS
+#ifdef ATOMIC_FASTBINS
+ _int_free(ar_ptr, oldp, 0);
+#else
+# if THREAD_STATS
if(!mutex_trylock(&ar_ptr->mutex))
++(ar_ptr->stat_lock_direct);
else {
(void)mutex_lock(&ar_ptr->mutex);
++(ar_ptr->stat_lock_wait);
}
-#else
+# else
(void)mutex_lock(&ar_ptr->mutex);
-#endif
- _int_free(ar_ptr, oldmem);
+# endif
+ _int_free(ar_ptr, oldp);
(void)mutex_unlock(&ar_ptr->mutex);
+#endif
}
}
@@ -3747,8 +3864,8 @@ public_mEMALIGn(size_t alignment, size_t bytes)
__malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
__const __malloc_ptr_t)) =
- __memalign_hook;
- if (hook != NULL)
+ force_reg (__memalign_hook);
+ if (__builtin_expect (hook != NULL, 0))
return (*hook)(alignment, bytes, RETURN_ADDRESS (0));
/* If need less alignment than we give anyway, just relay to malloc */
@@ -3776,8 +3893,8 @@ public_mEMALIGn(size_t alignment, size_t bytes)
(void)mutex_unlock(&ar_ptr->mutex);
ar_ptr = arena_get2(prev, bytes);
if(ar_ptr) {
- p = _int_memalign(ar_ptr, alignment, bytes);
- (void)mutex_unlock(&ar_ptr->mutex);
+ p = _int_memalign(ar_ptr, alignment, bytes);
+ (void)mutex_unlock(&ar_ptr->mutex);
}
#endif
}
@@ -3804,8 +3921,8 @@ public_vALLOc(size_t bytes)
__malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
__const __malloc_ptr_t)) =
- __memalign_hook;
- if (hook != NULL)
+ force_reg (__memalign_hook);
+ if (__builtin_expect (hook != NULL, 0))
return (*hook)(pagesz, bytes, RETURN_ADDRESS (0));
arena_get(ar_ptr, bytes + pagesz + MINSIZE);
@@ -3824,8 +3941,8 @@ public_vALLOc(size_t bytes)
/* ... or sbrk() has failed and there is still a chance to mmap() */
ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes);
if(ar_ptr) {
- p = _int_memalign(ar_ptr, pagesz, bytes);
- (void)mutex_unlock(&ar_ptr->mutex);
+ p = _int_memalign(ar_ptr, pagesz, bytes);
+ (void)mutex_unlock(&ar_ptr->mutex);
}
#endif
}
@@ -3851,8 +3968,8 @@ public_pVALLOc(size_t bytes)
__malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
__const __malloc_ptr_t)) =
- __memalign_hook;
- if (hook != NULL)
+ force_reg (__memalign_hook);
+ if (__builtin_expect (hook != NULL, 0))
return (*hook)(pagesz, rounded_bytes, RETURN_ADDRESS (0));
arena_get(ar_ptr, bytes + 2*pagesz + MINSIZE);
@@ -3870,8 +3987,8 @@ public_pVALLOc(size_t bytes)
ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0,
bytes + 2*pagesz + MINSIZE);
if(ar_ptr) {
- p = _int_memalign(ar_ptr, pagesz, rounded_bytes);
- (void)mutex_unlock(&ar_ptr->mutex);
+ p = _int_memalign(ar_ptr, pagesz, rounded_bytes);
+ (void)mutex_unlock(&ar_ptr->mutex);
}
#endif
}
@@ -3892,8 +4009,6 @@ public_cALLOc(size_t n, size_t elem_size)
unsigned long clearsize;
unsigned long nclears;
INTERNAL_SIZE_T* d;
- __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, __const __malloc_ptr_t)) =
- __malloc_hook;
/* size_t is unsigned so the behavior on overflow is defined. */
bytes = n * elem_size;
@@ -3906,7 +4021,9 @@ public_cALLOc(size_t n, size_t elem_size)
}
}
- if (hook != NULL) {
+ __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, __const __malloc_ptr_t)) =
+ force_reg (__malloc_hook);
+ if (__builtin_expect (hook != NULL, 0)) {
sz = bytes;
mem = (*hook)(sz, RETURN_ADDRESS (0));
if(mem == 0)
@@ -3964,8 +4081,8 @@ public_cALLOc(size_t n, size_t elem_size)
av = arena_get2(av->next ? av : 0, sz);
(void)mutex_unlock(&main_arena.mutex);
if(av) {
- mem = _int_malloc(av, sz);
- (void)mutex_unlock(&av->mutex);
+ mem = _int_malloc(av, sz);
+ (void)mutex_unlock(&av->mutex);
}
#endif
}
@@ -4125,13 +4242,12 @@ public_mALLOPt(int p, int v)
------------------------------ malloc ------------------------------
*/
-Void_t*
+static Void_t*
_int_malloc(mstate av, size_t bytes)
{
INTERNAL_SIZE_T nb; /* normalized request size */
unsigned int idx; /* associated bin index */
mbinptr bin; /* associated bin */
- mfastbinptr* fb; /* associated fastbin */
mchunkptr victim; /* inspected/selected chunk */
INTERNAL_SIZE_T size; /* its size */
@@ -4147,6 +4263,8 @@ _int_malloc(mstate av, size_t bytes)
mchunkptr fwd; /* misc temp for linking */
mchunkptr bck; /* misc temp for linking */
+ const char *errstr = NULL;
+
/*
Convert request size to internal form by adding SIZE_SZ bytes
overhead plus possibly more to obtain necessary alignment and/or
@@ -4165,13 +4283,31 @@ _int_malloc(mstate av, size_t bytes)
*/
if ((unsigned long)(nb) <= (unsigned long)(get_max_fast ())) {
- long int idx = fastbin_index(nb);
- fb = &(av->fastbins[idx]);
- if ( (victim = *fb) != 0) {
+ idx = fastbin_index(nb);
+ mfastbinptr* fb = &fastbin (av, idx);
+#ifdef ATOMIC_FASTBINS
+ mchunkptr pp = *fb;
+ do
+ {
+ victim = pp;
+ if (victim == NULL)
+ break;
+ }
+ while ((pp = catomic_compare_and_exchange_val_acq (fb, victim->fd, victim))
+ != victim);
+#else
+ victim = *fb;
+#endif
+ if (victim != 0) {
if (__builtin_expect (fastbin_index (chunksize (victim)) != idx, 0))
- malloc_printerr (check_action, "malloc(): memory corruption (fast)",
- chunk2mem (victim));
+ {
+ errstr = "malloc(): memory corruption (fast)";
+ errout:
+ malloc_printerr (check_action, errstr, chunk2mem (victim));
+ }
+#ifndef ATOMIC_FASTBINS
*fb = victim->fd;
+#endif
check_remalloced_chunk(av, victim, nb);
void *p = chunk2mem(victim);
if (__builtin_expect (perturb_byte, 0))
@@ -4194,16 +4330,21 @@ _int_malloc(mstate av, size_t bytes)
if ( (victim = last(bin)) != bin) {
if (victim == 0) /* initialization check */
- malloc_consolidate(av);
+ malloc_consolidate(av);
else {
- bck = victim->bk;
- set_inuse_bit_at_offset(victim, nb);
- bin->bk = bck;
- bck->fd = bin;
+ bck = victim->bk;
+ if (__builtin_expect (bck->fd != victim, 0))
+ {
+ errstr = "malloc(): smallbin double linked list corrupted";
+ goto errout;
+ }
+ set_inuse_bit_at_offset(victim, nb);
+ bin->bk = bck;
+ bck->fd = bin;
- if (av != &main_arena)
+ if (av != &main_arena)
victim->size |= NON_MAIN_ARENA;
- check_malloced_chunk(av, victim, nb);
+ check_malloced_chunk(av, victim, nb);
void *p = chunk2mem(victim);
if (__builtin_expect (perturb_byte, 0))
alloc_perturb (p, bytes);
@@ -4254,36 +4395,36 @@ _int_malloc(mstate av, size_t bytes)
size = chunksize(victim);
/*
- If a small request, try to use last remainder if it is the
- only chunk in unsorted bin. This helps promote locality for
- runs of consecutive small requests. This is the only
- exception to best-fit, and applies only when there is
- no exact fit for a small chunk.
+ If a small request, try to use last remainder if it is the
+ only chunk in unsorted bin. This helps promote locality for
+ runs of consecutive small requests. This is the only
+ exception to best-fit, and applies only when there is
+ no exact fit for a small chunk.
*/
if (in_smallbin_range(nb) &&
- bck == unsorted_chunks(av) &&
- victim == av->last_remainder &&
- (unsigned long)(size) > (unsigned long)(nb + MINSIZE)) {
-
- /* split and reattach remainder */
- remainder_size = size - nb;
- remainder = chunk_at_offset(victim, nb);
- unsorted_chunks(av)->bk = unsorted_chunks(av)->fd = remainder;
- av->last_remainder = remainder;
- remainder->bk = remainder->fd = unsorted_chunks(av);
+ bck == unsorted_chunks(av) &&
+ victim == av->last_remainder &&
+ (unsigned long)(size) > (unsigned long)(nb + MINSIZE)) {
+
+ /* split and reattach remainder */
+ remainder_size = size - nb;
+ remainder = chunk_at_offset(victim, nb);
+ unsorted_chunks(av)->bk = unsorted_chunks(av)->fd = remainder;
+ av->last_remainder = remainder;
+ remainder->bk = remainder->fd = unsorted_chunks(av);
if (!in_smallbin_range(remainder_size))
{
remainder->fd_nextsize = NULL;
remainder->bk_nextsize = NULL;
}
- set_head(victim, nb | PREV_INUSE |
+ set_head(victim, nb | PREV_INUSE |
(av != &main_arena ? NON_MAIN_ARENA : 0));
- set_head(remainder, remainder_size | PREV_INUSE);
- set_foot(remainder, remainder_size);
+ set_head(remainder, remainder_size | PREV_INUSE);
+ set_foot(remainder, remainder_size);
- check_malloced_chunk(av, victim, nb);
+ check_malloced_chunk(av, victim, nb);
void *p = chunk2mem(victim);
if (__builtin_expect (perturb_byte, 0))
alloc_perturb (p, bytes);
@@ -4297,10 +4438,10 @@ _int_malloc(mstate av, size_t bytes)
/* Take now instead of binning if exact fit */
if (size == nb) {
- set_inuse_bit_at_offset(victim, size);
+ set_inuse_bit_at_offset(victim, size);
if (av != &main_arena)
victim->size |= NON_MAIN_ARENA;
- check_malloced_chunk(av, victim, nb);
+ check_malloced_chunk(av, victim, nb);
void *p = chunk2mem(victim);
if (__builtin_expect (perturb_byte, 0))
alloc_perturb (p, bytes);
@@ -4310,30 +4451,30 @@ _int_malloc(mstate av, size_t bytes)
/* place chunk in bin */
if (in_smallbin_range(size)) {
- victim_index = smallbin_index(size);
- bck = bin_at(av, victim_index);
- fwd = bck->fd;
+ victim_index = smallbin_index(size);
+ bck = bin_at(av, victim_index);
+ fwd = bck->fd;
}
else {
- victim_index = largebin_index(size);
- bck = bin_at(av, victim_index);
- fwd = bck->fd;
+ victim_index = largebin_index(size);
+ bck = bin_at(av, victim_index);
+ fwd = bck->fd;
- /* maintain large bins in sorted order */
- if (fwd != bck) {
+ /* maintain large bins in sorted order */
+ if (fwd != bck) {
/* Or with inuse bit to speed comparisons */
- size |= PREV_INUSE;
- /* if smaller than smallest, bypass loop below */
+ size |= PREV_INUSE;
+ /* if smaller than smallest, bypass loop below */
assert((bck->bk->size & NON_MAIN_ARENA) == 0);
if ((unsigned long)(size) < (unsigned long)(bck->bk->size)) {
- fwd = bck;
- bck = bck->bk;
+ fwd = bck;
+ bck = bck->bk;
victim->fd_nextsize = fwd->fd;
victim->bk_nextsize = fwd->fd->bk_nextsize;
fwd->fd->bk_nextsize = victim->bk_nextsize->fd_nextsize = victim;
- }
- else {
+ }
+ else {
assert((fwd->size & NON_MAIN_ARENA) == 0);
while ((unsigned long) size < fwd->size)
{
@@ -4352,7 +4493,7 @@ _int_malloc(mstate av, size_t bytes)
victim->bk_nextsize->fd_nextsize = victim;
}
bck = fwd->bk;
- }
+ }
} else
victim->fd_nextsize = victim->bk_nextsize = victim;
}
@@ -4378,34 +4519,39 @@ _int_malloc(mstate av, size_t bytes)
/* skip scan if empty or largest chunk is too small */
if ((victim = first(bin)) != bin &&
- (unsigned long)(victim->size) >= (unsigned long)(nb)) {
+ (unsigned long)(victim->size) >= (unsigned long)(nb)) {
victim = victim->bk_nextsize;
- while (((unsigned long)(size = chunksize(victim)) <
- (unsigned long)(nb)))
- victim = victim->bk_nextsize;
+ while (((unsigned long)(size = chunksize(victim)) <
+ (unsigned long)(nb)))
+ victim = victim->bk_nextsize;
/* Avoid removing the first entry for a size so that the skip
list does not have to be rerouted. */
if (victim != last(bin) && victim->size == victim->fd->size)
victim = victim->fd;
- remainder_size = size - nb;
- unlink(victim, bck, fwd);
+ remainder_size = size - nb;
+ unlink(victim, bck, fwd);
- /* Exhaust */
- if (remainder_size < MINSIZE) {
- set_inuse_bit_at_offset(victim, size);
+ /* Exhaust */
+ if (remainder_size < MINSIZE) {
+ set_inuse_bit_at_offset(victim, size);
if (av != &main_arena)
victim->size |= NON_MAIN_ARENA;
- }
- /* Split */
- else {
- remainder = chunk_at_offset(victim, nb);
- /* We cannot assume the unsorted list is empty and therefore
- have to perform a complete insert here. */
+ }
+ /* Split */
+ else {
+ remainder = chunk_at_offset(victim, nb);
+ /* We cannot assume the unsorted list is empty and therefore
+ have to perform a complete insert here. */
bck = unsorted_chunks(av);
fwd = bck->fd;
+ if (__builtin_expect (fwd->bk != bck, 0))
+ {
+ errstr = "malloc(): corrupted unsorted chunks";
+ goto errout;
+ }
remainder->bk = bck;
remainder->fd = fwd;
bck->fd = remainder;
@@ -4415,11 +4561,11 @@ _int_malloc(mstate av, size_t bytes)
remainder->fd_nextsize = NULL;
remainder->bk_nextsize = NULL;
}
- set_head(victim, nb | PREV_INUSE |
+ set_head(victim, nb | PREV_INUSE |
(av != &main_arena ? NON_MAIN_ARENA : 0));
- set_head(remainder, remainder_size | PREV_INUSE);
- set_foot(remainder, remainder_size);
- }
+ set_head(remainder, remainder_size | PREV_INUSE);
+ set_foot(remainder, remainder_size);
+ }
check_malloced_chunk(av, victim, nb);
void *p = chunk2mem(victim);
if (__builtin_expect (perturb_byte, 0))
@@ -4449,20 +4595,20 @@ _int_malloc(mstate av, size_t bytes)
/* Skip rest of block if there are no more set bits in this block. */
if (bit > map || bit == 0) {
- do {
- if (++block >= BINMAPSIZE) /* out of bins */
- goto use_top;
- } while ( (map = av->binmap[block]) == 0);
+ do {
+ if (++block >= BINMAPSIZE) /* out of bins */
+ goto use_top;
+ } while ( (map = av->binmap[block]) == 0);
- bin = bin_at(av, (block << BINMAPSHIFT));
- bit = 1;
+ bin = bin_at(av, (block << BINMAPSHIFT));
+ bit = 1;
}
/* Advance to bin with set bit. There must be one. */
while ((bit & map) == 0) {
- bin = next_bin(bin);
- bit <<= 1;
- assert(bit != 0);
+ bin = next_bin(bin);
+ bit <<= 1;
+ assert(bit != 0);
}
/* Inspect the bin. It is likely to be non-empty */
@@ -4470,55 +4616,60 @@ _int_malloc(mstate av, size_t bytes)
/* If a false alarm (empty bin), clear the bit. */
if (victim == bin) {
- av->binmap[block] = map &= ~bit; /* Write through */
- bin = next_bin(bin);
- bit <<= 1;
+ av->binmap[block] = map &= ~bit; /* Write through */
+ bin = next_bin(bin);
+ bit <<= 1;
}
else {
- size = chunksize(victim);
+ size = chunksize(victim);
- /* We know the first chunk in this bin is big enough to use. */
- assert((unsigned long)(size) >= (unsigned long)(nb));
+ /* We know the first chunk in this bin is big enough to use. */
+ assert((unsigned long)(size) >= (unsigned long)(nb));
- remainder_size = size - nb;
+ remainder_size = size - nb;
- /* unlink */
- unlink(victim, bck, fwd);
+ /* unlink */
+ unlink(victim, bck, fwd);
- /* Exhaust */
- if (remainder_size < MINSIZE) {
- set_inuse_bit_at_offset(victim, size);
+ /* Exhaust */
+ if (remainder_size < MINSIZE) {
+ set_inuse_bit_at_offset(victim, size);
if (av != &main_arena)
victim->size |= NON_MAIN_ARENA;
- }
+ }
- /* Split */
- else {
- remainder = chunk_at_offset(victim, nb);
+ /* Split */
+ else {
+ remainder = chunk_at_offset(victim, nb);
/* We cannot assume the unsorted list is empty and therefore
have to perform a complete insert here. */
bck = unsorted_chunks(av);
fwd = bck->fd;
+ if (__builtin_expect (fwd->bk != bck, 0))
+ {
+ errstr = "malloc(): corrupted unsorted chunks 2";
+ goto errout;
+ }
remainder->bk = bck;
remainder->fd = fwd;
bck->fd = remainder;
fwd->bk = remainder;
- /* advertise as last remainder */
- if (in_smallbin_range(nb))
- av->last_remainder = remainder;
+ /* advertise as last remainder */
+ if (in_smallbin_range(nb))
+ av->last_remainder = remainder;
if (!in_smallbin_range(remainder_size))
{
remainder->fd_nextsize = NULL;
remainder->bk_nextsize = NULL;
}
- set_head(victim, nb | PREV_INUSE |
+ set_head(victim, nb | PREV_INUSE |
(av != &main_arena ? NON_MAIN_ARENA : 0));
- set_head(remainder, remainder_size | PREV_INUSE);
- set_foot(remainder, remainder_size);
- }
+ set_head(remainder, remainder_size | PREV_INUSE);
+ set_foot(remainder, remainder_size);
+ }
check_malloced_chunk(av, victim, nb);
void *p = chunk2mem(victim);
if (__builtin_expect (perturb_byte, 0))
@@ -4561,6 +4712,18 @@ _int_malloc(mstate av, size_t bytes)
return p;
}
+#ifdef ATOMIC_FASTBINS
+ /* When we are using atomic ops to free fast chunks we can get
+ here for all block sizes. */
+ else if (have_fastchunks(av)) {
+ malloc_consolidate(av);
+ /* restore original bin index */
+ if (in_smallbin_range(nb))
+ idx = smallbin_index(nb);
+ else
+ idx = largebin_index(nb);
+ }
+#else
/*
If there is space available in fastbins, consolidate and retry,
to possibly avoid expanding memory. This can occur only if nb is
@@ -4572,6 +4735,7 @@ _int_malloc(mstate av, size_t bytes)
malloc_consolidate(av);
idx = smallbin_index(nb); /* restore original bin index */
}
+#endif
/*
Otherwise, relay to handle system-dependent cases
@@ -4589,10 +4753,13 @@ _int_malloc(mstate av, size_t bytes)
------------------------------ free ------------------------------
*/
-void
-_int_free(mstate av, Void_t* mem)
+static void
+#ifdef ATOMIC_FASTBINS
+_int_free(mstate av, mchunkptr p, int have_lock)
+#else
+_int_free(mstate av, mchunkptr p)
+#endif
{
- mchunkptr p; /* chunk corresponding to mem */
INTERNAL_SIZE_T size; /* its size */
mfastbinptr* fb; /* associated fastbin */
mchunkptr nextchunk; /* next contiguous chunk */
@@ -4603,8 +4770,10 @@ _int_free(mstate av, Void_t* mem)
mchunkptr fwd; /* misc temp for linking */
const char *errstr = NULL;
+#ifdef ATOMIC_FASTBINS
+ int locked = 0;
+#endif
- p = mem2chunk(mem);
size = chunksize(p);
/* Little security check which won't hurt performance: the
@@ -4616,7 +4785,11 @@ _int_free(mstate av, Void_t* mem)
{
errstr = "free(): invalid pointer";
errout:
- malloc_printerr (check_action, errstr, mem);
+#ifdef ATOMIC_FASTBINS
+ if (! have_lock && locked)
+ (void)mutex_unlock(&av->mutex);
+#endif
+ malloc_printerr (check_action, errstr, chunk2mem(p));
return;
}
/* We know that each chunk is at least MINSIZE bytes in size. */
@@ -4648,12 +4821,53 @@ _int_free(mstate av, Void_t* mem)
|| __builtin_expect (chunksize (chunk_at_offset (p, size))
>= av->system_mem, 0))
{
- errstr = "free(): invalid next size (fast)";
- goto errout;
+#ifdef ATOMIC_FASTBINS
+ /* We might not have a lock at this point and concurrent modifications
+ of system_mem might have let to a false positive. Redo the test
+ after getting the lock. */
+ if (have_lock
+ || ({ assert (locked == 0);
+ mutex_lock(&av->mutex);
+ locked = 1;
+ chunk_at_offset (p, size)->size <= 2 * SIZE_SZ
+ || chunksize (chunk_at_offset (p, size)) >= av->system_mem;
+ }))
+#endif
+ {
+ errstr = "free(): invalid next size (fast)";
+ goto errout;
+ }
+#ifdef ATOMIC_FASTBINS
+ if (! have_lock)
+ {
+ (void)mutex_unlock(&av->mutex);
+ locked = 0;
+ }
+#endif
}
+ if (__builtin_expect (perturb_byte, 0))
+ free_perturb (chunk2mem(p), size - SIZE_SZ);
+
set_fastchunks(av);
- fb = &(av->fastbins[fastbin_index(size)]);
+ fb = &fastbin (av, fastbin_index(size));
+
+#ifdef ATOMIC_FASTBINS
+ mchunkptr fd;
+ mchunkptr old = *fb;
+ do
+ {
+ /* Another simple check: make sure the top of the bin is not the
+ record we are going to add (i.e., double free). */
+ if (__builtin_expect (old == p, 0))
+ {
+ errstr = "double free or corruption (fasttop)";
+ goto errout;
+ }
+ p->fd = fd = old;
+ }
+ while ((old = catomic_compare_and_exchange_val_rel (fb, p, fd)) != fd);
+#else
/* Another simple check: make sure the top of the bin is not the
record we are going to add (i.e., double free). */
if (__builtin_expect (*fb == p, 0))
@@ -4662,11 +4876,9 @@ _int_free(mstate av, Void_t* mem)
goto errout;
}
- if (__builtin_expect (perturb_byte, 0))
- free_perturb (mem, size - SIZE_SZ);
-
p->fd = *fb;
*fb = p;
+#endif
}
/*
@@ -4674,6 +4886,22 @@ _int_free(mstate av, Void_t* mem)
*/
else if (!chunk_is_mmapped(p)) {
+#ifdef ATOMIC_FASTBINS
+ if (! have_lock) {
+# if THREAD_STATS
+ if(!mutex_trylock(&av->mutex))
+ ++(av->stat_lock_direct);
+ else {
+ (void)mutex_lock(&av->mutex);
+ ++(av->stat_lock_wait);
+ }
+# else
+ (void)mutex_lock(&av->mutex);
+# endif
+ locked = 1;
+ }
+#endif
+
nextchunk = chunk_at_offset(p, size);
/* Lightweight tests: check whether the block is already the
@@ -4707,7 +4935,7 @@ _int_free(mstate av, Void_t* mem)
}
if (__builtin_expect (perturb_byte, 0))
- free_perturb (mem, size - SIZE_SZ);
+ free_perturb (chunk2mem(p), size - SIZE_SZ);
/* consolidate backward */
if (!prev_inuse(p)) {
@@ -4736,6 +4964,11 @@ _int_free(mstate av, Void_t* mem)
bck = unsorted_chunks(av);
fwd = bck->fd;
+ if (__builtin_expect (fwd->bk != bck, 0))
+ {
+ errstr = "free(): corrupted unsorted chunks";
+ goto errout;
+ }
p->fd = fwd;
p->bk = bck;
if (!in_smallbin_range(size))
@@ -4797,6 +5030,12 @@ _int_free(mstate av, Void_t* mem)
}
}
+#ifdef ATOMIC_FASTBINS
+ if (! have_lock) {
+ assert (locked);
+ (void)mutex_unlock(&av->mutex);
+ }
+#endif
}
/*
If the chunk was allocated via mmap, release via munmap(). Note
@@ -4872,62 +5111,68 @@ static void malloc_consolidate(av) mstate av;
because, except for the main arena, all the others might have
blocks in the high fast bins. It's not worth it anyway, just
search all bins all the time. */
- maxfb = &(av->fastbins[fastbin_index(get_max_fast ())]);
+ maxfb = &fastbin (av, fastbin_index(get_max_fast ()));
#else
- maxfb = &(av->fastbins[NFASTBINS - 1]);
+ maxfb = &fastbin (av, NFASTBINS - 1);
#endif
- fb = &(av->fastbins[0]);
+ fb = &fastbin (av, 0);
do {
- if ( (p = *fb) != 0) {
- *fb = 0;
-
- do {
- check_inuse_chunk(av, p);
- nextp = p->fd;
-
- /* Slightly streamlined version of consolidation code in free() */
- size = p->size & ~(PREV_INUSE|NON_MAIN_ARENA);
- nextchunk = chunk_at_offset(p, size);
- nextsize = chunksize(nextchunk);
-
- if (!prev_inuse(p)) {
- prevsize = p->prev_size;
- size += prevsize;
- p = chunk_at_offset(p, -((long) prevsize));
- unlink(p, bck, fwd);
- }
-
- if (nextchunk != av->top) {
- nextinuse = inuse_bit_at_offset(nextchunk, nextsize);
-
- if (!nextinuse) {
- size += nextsize;
- unlink(nextchunk, bck, fwd);
- } else
+#ifdef ATOMIC_FASTBINS
+ p = atomic_exchange_acq (fb, 0);
+#else
+ p = *fb;
+#endif
+ if (p != 0) {
+#ifndef ATOMIC_FASTBINS
+ *fb = 0;
+#endif
+ do {
+ check_inuse_chunk(av, p);
+ nextp = p->fd;
+
+ /* Slightly streamlined version of consolidation code in free() */
+ size = p->size & ~(PREV_INUSE|NON_MAIN_ARENA);
+ nextchunk = chunk_at_offset(p, size);
+ nextsize = chunksize(nextchunk);
+
+ if (!prev_inuse(p)) {
+ prevsize = p->prev_size;
+ size += prevsize;
+ p = chunk_at_offset(p, -((long) prevsize));
+ unlink(p, bck, fwd);
+ }
+
+ if (nextchunk != av->top) {
+ nextinuse = inuse_bit_at_offset(nextchunk, nextsize);
+
+ if (!nextinuse) {
+ size += nextsize;
+ unlink(nextchunk, bck, fwd);
+ } else
clear_inuse_bit_at_offset(nextchunk, 0);
- first_unsorted = unsorted_bin->fd;
- unsorted_bin->fd = p;
- first_unsorted->bk = p;
+ first_unsorted = unsorted_bin->fd;
+ unsorted_bin->fd = p;
+ first_unsorted->bk = p;
- if (!in_smallbin_range (size)) {
+ if (!in_smallbin_range (size)) {
p->fd_nextsize = NULL;
p->bk_nextsize = NULL;
}
- set_head(p, size | PREV_INUSE);
- p->bk = unsorted_bin;
- p->fd = first_unsorted;
- set_foot(p, size);
- }
+ set_head(p, size | PREV_INUSE);
+ p->bk = unsorted_bin;
+ p->fd = first_unsorted;
+ set_foot(p, size);
+ }
- else {
- size += nextsize;
- set_head(p, size | PREV_INUSE);
- av->top = p;
- }
+ else {
+ size += nextsize;
+ set_head(p, size | PREV_INUSE);
+ av->top = p;
+ }
- } while ( (p = nextp) != 0);
+ } while ( (p = nextp) != 0);
}
} while (fb++ != maxfb);
@@ -4943,13 +5188,9 @@ static void malloc_consolidate(av) mstate av;
*/
Void_t*
-_int_realloc(mstate av, Void_t* oldmem, size_t bytes)
+_int_realloc(mstate av, mchunkptr oldp, INTERNAL_SIZE_T oldsize,
+ INTERNAL_SIZE_T nb)
{
- INTERNAL_SIZE_T nb; /* padded request size */
-
- mchunkptr oldp; /* chunk corresponding to oldmem */
- INTERNAL_SIZE_T oldsize; /* its size */
-
mchunkptr newp; /* chunk to return */
INTERNAL_SIZE_T newsize; /* its size */
Void_t* newmem; /* corresponding user mem */
@@ -4969,30 +5210,25 @@ _int_realloc(mstate av, Void_t* oldmem, size_t bytes)
const char *errstr = NULL;
-
- checked_request2size(bytes, nb);
-
- oldp = mem2chunk(oldmem);
- oldsize = chunksize(oldp);
-
- /* Simple tests for old block integrity. */
- if (__builtin_expect (misaligned_chunk (oldp), 0))
- {
- errstr = "realloc(): invalid pointer";
- errout:
- malloc_printerr (check_action, errstr, oldmem);
- return NULL;
- }
+ /* oldmem size */
if (__builtin_expect (oldp->size <= 2 * SIZE_SZ, 0)
|| __builtin_expect (oldsize >= av->system_mem, 0))
{
errstr = "realloc(): invalid old size";
- goto errout;
+ errout:
+ malloc_printerr (check_action, errstr, chunk2mem(oldp));
+ return NULL;
}
check_inuse_chunk(av, oldp);
- if (!chunk_is_mmapped(oldp)) {
+ /* All callers already filter out mmap'ed chunks. */
+#if 0
+ if (!chunk_is_mmapped(oldp))
+#else
+ assert (!chunk_is_mmapped(oldp));
+#endif
+ {
next = chunk_at_offset(oldp, oldsize);
INTERNAL_SIZE_T nextsize = chunksize(next);
@@ -5012,78 +5248,82 @@ _int_realloc(mstate av, Void_t* oldmem, size_t bytes)
else {
/* Try to expand forward into top */
if (next == av->top &&
- (unsigned long)(newsize = oldsize + nextsize) >=
- (unsigned long)(nb + MINSIZE)) {
- set_head_size(oldp, nb | (av != &main_arena ? NON_MAIN_ARENA : 0));
- av->top = chunk_at_offset(oldp, nb);
- set_head(av->top, (newsize - nb) | PREV_INUSE);
+ (unsigned long)(newsize = oldsize + nextsize) >=
+ (unsigned long)(nb + MINSIZE)) {
+ set_head_size(oldp, nb | (av != &main_arena ? NON_MAIN_ARENA : 0));
+ av->top = chunk_at_offset(oldp, nb);
+ set_head(av->top, (newsize - nb) | PREV_INUSE);
check_inuse_chunk(av, oldp);
- return chunk2mem(oldp);
+ return chunk2mem(oldp);
}
/* Try to expand forward into next chunk; split off remainder below */
else if (next != av->top &&
- !inuse(next) &&
- (unsigned long)(newsize = oldsize + nextsize) >=
- (unsigned long)(nb)) {
- newp = oldp;
- unlink(next, bck, fwd);
+ !inuse(next) &&
+ (unsigned long)(newsize = oldsize + nextsize) >=
+ (unsigned long)(nb)) {
+ newp = oldp;
+ unlink(next, bck, fwd);
}
/* allocate, copy, free */
else {
- newmem = _int_malloc(av, nb - MALLOC_ALIGN_MASK);
- if (newmem == 0)
- return 0; /* propagate failure */
-
- newp = mem2chunk(newmem);
- newsize = chunksize(newp);
-
- /*
- Avoid copy if newp is next chunk after oldp.
- */
- if (newp == next) {
- newsize += oldsize;
- newp = oldp;
- }
- else {
- /*
- Unroll copy of <= 36 bytes (72 if 8byte sizes)
- We know that contents have an odd number of
- INTERNAL_SIZE_T-sized words; minimally 3.
- */
-
- copysize = oldsize - SIZE_SZ;
- s = (INTERNAL_SIZE_T*)(oldmem);
- d = (INTERNAL_SIZE_T*)(newmem);
- ncopies = copysize / sizeof(INTERNAL_SIZE_T);
- assert(ncopies >= 3);
-
- if (ncopies > 9)
- MALLOC_COPY(d, s, copysize);
-
- else {
- *(d+0) = *(s+0);
- *(d+1) = *(s+1);
- *(d+2) = *(s+2);
- if (ncopies > 4) {
- *(d+3) = *(s+3);
- *(d+4) = *(s+4);
- if (ncopies > 6) {
- *(d+5) = *(s+5);
- *(d+6) = *(s+6);
- if (ncopies > 8) {
- *(d+7) = *(s+7);
- *(d+8) = *(s+8);
- }
- }
- }
- }
-
- _int_free(av, oldmem);
- check_inuse_chunk(av, newp);
- return chunk2mem(newp);
- }
+ newmem = _int_malloc(av, nb - MALLOC_ALIGN_MASK);
+ if (newmem == 0)
+ return 0; /* propagate failure */
+
+ newp = mem2chunk(newmem);
+ newsize = chunksize(newp);
+
+ /*
+ Avoid copy if newp is next chunk after oldp.
+ */
+ if (newp == next) {
+ newsize += oldsize;
+ newp = oldp;
+ }
+ else {
+ /*
+ Unroll copy of <= 36 bytes (72 if 8byte sizes)
+ We know that contents have an odd number of
+ INTERNAL_SIZE_T-sized words; minimally 3.
+ */
+
+ copysize = oldsize - SIZE_SZ;
+ s = (INTERNAL_SIZE_T*)(chunk2mem(oldp));
+ d = (INTERNAL_SIZE_T*)(newmem);
+ ncopies = copysize / sizeof(INTERNAL_SIZE_T);
+ assert(ncopies >= 3);
+
+ if (ncopies > 9)
+ MALLOC_COPY(d, s, copysize);
+
+ else {
+ *(d+0) = *(s+0);
+ *(d+1) = *(s+1);
+ *(d+2) = *(s+2);
+ if (ncopies > 4) {
+ *(d+3) = *(s+3);
+ *(d+4) = *(s+4);
+ if (ncopies > 6) {
+ *(d+5) = *(s+5);
+ *(d+6) = *(s+6);
+ if (ncopies > 8) {
+ *(d+7) = *(s+7);
+ *(d+8) = *(s+8);
+ }
+ }
+ }
+ }
+
+#ifdef ATOMIC_FASTBINS
+ _int_free(av, oldp, 1);
+#else
+ _int_free(av, oldp);
+#endif
+ check_inuse_chunk(av, newp);
+ return chunk2mem(newp);
+ }
}
}
@@ -5104,13 +5344,18 @@ _int_realloc(mstate av, Void_t* oldmem, size_t bytes)
(av != &main_arena ? NON_MAIN_ARENA : 0));
/* Mark remainder as inuse so free() won't complain */
set_inuse_bit_at_offset(remainder, remainder_size);
- _int_free(av, chunk2mem(remainder));
+#ifdef ATOMIC_FASTBINS
+ _int_free(av, remainder, 1);
+#else
+ _int_free(av, remainder);
+#endif
}
check_inuse_chunk(av, newp);
return chunk2mem(newp);
}
+#if 0
/*
Handle mmap cases
*/
@@ -5129,7 +5374,7 @@ _int_realloc(mstate av, Void_t* oldmem, size_t bytes)
/* don't need to remap if still within same page */
if (oldsize == newsize - offset)
- return oldmem;
+ return chunk2mem(oldp);
cp = (char*)mremap((char*)oldp - offset, oldsize + offset, newsize, 1);
@@ -5144,11 +5389,11 @@ _int_realloc(mstate av, Void_t* oldmem, size_t bytes)
/* update statistics */
sum = mp_.mmapped_mem += newsize - oldsize;
if (sum > (unsigned long)(mp_.max_mmapped_mem))
- mp_.max_mmapped_mem = sum;
+ mp_.max_mmapped_mem = sum;
#ifdef NO_THREADS
sum += main_arena.system_mem;
if (sum > (unsigned long)(mp_.max_total_mem))
- mp_.max_total_mem = sum;
+ mp_.max_total_mem = sum;
#endif
return chunk2mem(newp);
@@ -5157,13 +5402,17 @@ _int_realloc(mstate av, Void_t* oldmem, size_t bytes)
/* Note the extra SIZE_SZ overhead. */
if ((unsigned long)(oldsize) >= (unsigned long)(nb + SIZE_SZ))
- newmem = oldmem; /* do nothing */
+ newmem = chunk2mem(oldp); /* do nothing */
else {
/* Must alloc, copy, free. */
newmem = _int_malloc(av, nb - MALLOC_ALIGN_MASK);
if (newmem != 0) {
- MALLOC_COPY(newmem, oldmem, oldsize - 2*SIZE_SZ);
- _int_free(av, oldmem);
+ MALLOC_COPY(newmem, chunk2mem(oldp), oldsize - 2*SIZE_SZ);
+#ifdef ATOMIC_FASTBINS
+ _int_free(av, oldp, 1);
+#else
+ _int_free(av, oldp);
+#endif
}
}
return newmem;
@@ -5175,13 +5424,14 @@ _int_realloc(mstate av, Void_t* oldmem, size_t bytes)
return 0;
#endif
}
+#endif
}
/*
------------------------------ memalign ------------------------------
*/
-Void_t*
+static Void_t*
_int_memalign(mstate av, size_t alignment, size_t bytes)
{
INTERNAL_SIZE_T nb; /* padded request size */
@@ -5237,7 +5487,7 @@ _int_memalign(mstate av, size_t alignment, size_t bytes)
*/
brk = (char*)mem2chunk(((unsigned long)(m + alignment - 1)) &
- -((signed long) alignment));
+ -((signed long) alignment));
if ((unsigned long)(brk - (char*)(p)) < MINSIZE)
brk += alignment;
@@ -5257,11 +5507,15 @@ _int_memalign(mstate av, size_t alignment, size_t bytes)
(av != &main_arena ? NON_MAIN_ARENA : 0));
set_inuse_bit_at_offset(newp, newsize);
set_head_size(p, leadsize | (av != &main_arena ? NON_MAIN_ARENA : 0));
- _int_free(av, chunk2mem(p));
+#ifdef ATOMIC_FASTBINS
+ _int_free(av, p, 1);
+#else
+ _int_free(av, p);
+#endif
p = newp;
assert (newsize >= nb &&
- (((unsigned long)(chunk2mem(p))) % alignment) == 0);
+ (((unsigned long)(chunk2mem(p))) % alignment) == 0);
}
/* Also give back spare room at the end */
@@ -5273,7 +5527,11 @@ _int_memalign(mstate av, size_t alignment, size_t bytes)
set_head(remainder, remainder_size | PREV_INUSE |
(av != &main_arena ? NON_MAIN_ARENA : 0));
set_head_size(p, nb);
- _int_free(av, chunk2mem(remainder));
+#ifdef ATOMIC_FASTBINS
+ _int_free(av, remainder, 1);
+#else
+ _int_free(av, remainder);
+#endif
}
}
@@ -5307,9 +5565,9 @@ Void_t* cALLOc(n_elements, elem_size) size_t n_elements; size_t elem_size;
#endif
{
/*
- Unroll clear of <= 36 bytes (72 if 8byte sizes)
- We know that contents have an odd number of
- INTERNAL_SIZE_T-sized words; minimally 3.
+ Unroll clear of <= 36 bytes (72 if 8byte sizes)
+ We know that contents have an odd number of
+ INTERNAL_SIZE_T-sized words; minimally 3.
*/
d = (INTERNAL_SIZE_T*)mem;
@@ -5318,24 +5576,24 @@ Void_t* cALLOc(n_elements, elem_size) size_t n_elements; size_t elem_size;
assert(nclears >= 3);
if (nclears > 9)
- MALLOC_ZERO(d, clearsize);
+ MALLOC_ZERO(d, clearsize);
else {
- *(d+0) = 0;
- *(d+1) = 0;
- *(d+2) = 0;
- if (nclears > 4) {
- *(d+3) = 0;
- *(d+4) = 0;
- if (nclears > 6) {
- *(d+5) = 0;
- *(d+6) = 0;
- if (nclears > 8) {
- *(d+7) = 0;
- *(d+8) = 0;
- }
- }
- }
+ *(d+0) = 0;
+ *(d+1) = 0;
+ *(d+2) = 0;
+ if (nclears > 4) {
+ *(d+3) = 0;
+ *(d+4) = 0;
+ if (nclears > 6) {
+ *(d+5) = 0;
+ *(d+6) = 0;
+ if (nclears > 8) {
+ *(d+7) = 0;
+ *(d+8) = 0;
+ }
+ }
+ }
}
}
}
@@ -5478,9 +5736,9 @@ mstate av; size_t n_elements; size_t* sizes; int opts; Void_t* chunks[];
marray[i] = chunk2mem(p);
if (i != n_elements-1) {
if (element_size != 0)
- size = element_size;
+ size = element_size;
else
- size = request2size(sizes[i]);
+ size = request2size(sizes[i]);
remainder_size -= size;
set_head(p, size | size_flags);
p = chunk_at_offset(p, size);
@@ -5514,7 +5772,7 @@ mstate av; size_t n_elements; size_t* sizes; int opts; Void_t* chunks[];
------------------------------ valloc ------------------------------
*/
-Void_t*
+static Void_t*
#if __STD_C
_int_valloc(mstate av, size_t bytes)
#else
@@ -5531,7 +5789,7 @@ _int_valloc(av, bytes) mstate av; size_t bytes;
*/
-Void_t*
+static Void_t*
#if __STD_C
_int_pvalloc(mstate av, size_t bytes)
#else
@@ -5568,9 +5826,9 @@ static int mTRIm(av, pad) mstate av; size_t pad;
for (int i = 1; i < NBINS; ++i)
if (i == 1 || i >= psindex)
{
- mbinptr bin = bin_at (av, i);
+ mbinptr bin = bin_at (av, i);
- for (mchunkptr p = last (bin); p != bin; p = p->bk)
+ for (mchunkptr p = last (bin); p != bin; p = p->bk)
{
INTERNAL_SIZE_T size = chunksize (p);
@@ -5660,7 +5918,7 @@ struct mallinfo mALLINFo(mstate av)
fastavail = 0;
for (i = 0; i < NFASTBINS; ++i) {
- for (p = av->fastbins[i]; p != 0; p = p->fd) {
+ for (p = fastbin (av, i); p != 0; p = p->fd) {
++nfastblocks;
fastavail += chunksize(p);
}
@@ -5753,7 +6011,7 @@ void mSTATs()
fprintf(stderr, "locked in loop = %10ld\n", stat_lock_loop);
fprintf(stderr, "locked waiting = %10ld\n", stat_lock_wait);
fprintf(stderr, "locked total = %10ld\n",
- stat_lock_direct + stat_lock_loop + stat_lock_wait);
+ stat_lock_direct + stat_lock_loop + stat_lock_wait);
#endif
#ifdef _LIBC
((_IO_FILE *) stderr)->_flags2 |= old_flags2;
@@ -5828,6 +6086,18 @@ int mALLOPt(param_number, value) int param_number; int value;
case M_PERTURB:
perturb_byte = value;
break;
+
+#ifdef PER_THREAD
+ case M_ARENA_TEST:
+ if (value > 0)
+ mp_.arena_test = value;
+ break;
+
+ case M_ARENA_MAX:
+ if (value > 0)
+ mp_.arena_max = value;
+ break;
+#endif
}
(void)mutex_unlock(&av->mutex);
return res;
@@ -5930,12 +6200,12 @@ int mALLOPt(param_number, value) int param_number; int value;
if (size > 0)
{
if (size < MINIMUM_MORECORE_SIZE)
- size = MINIMUM_MORECORE_SIZE;
+ size = MINIMUM_MORECORE_SIZE;
if (CurrentExecutionLevel() == kTaskLevel)
- ptr = PoolAllocateResident(size + RM_PAGE_SIZE, 0);
+ ptr = PoolAllocateResident(size + RM_PAGE_SIZE, 0);
if (ptr == 0)
{
- return (void *) MORECORE_FAILURE;
+ return (void *) MORECORE_FAILURE;
}
// save ptrs so they can be freed during cleanup
our_os_pools[next_os_pool] = ptr;
@@ -5965,8 +6235,8 @@ int mALLOPt(param_number, value) int param_number; int value;
for (ptr = our_os_pools; ptr < &our_os_pools[MAX_POOL_ENTRIES]; ptr++)
if (*ptr)
{
- PoolDeallocate(*ptr);
- *ptr = 0;
+ PoolDeallocate(*ptr);
+ *ptr = 0;
}
}
@@ -6007,9 +6277,6 @@ int
__posix_memalign (void **memptr, size_t alignment, size_t size)
{
void *mem;
- __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
- __const __malloc_ptr_t)) =
- __memalign_hook;
/* Test whether the SIZE argument is valid. It must be a power of
two multiple of sizeof (void *). */
@@ -6020,7 +6287,10 @@ __posix_memalign (void **memptr, size_t alignment, size_t size)
/* Call the hook here, so that caller is posix_memalign's caller
and not posix_memalign itself. */
- if (hook != NULL)
+ __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
+ __const __malloc_ptr_t)) =
+ force_reg (__memalign_hook);
+ if (__builtin_expect (hook != NULL, 0))
mem = (*hook)(alignment, size, RETURN_ADDRESS (0));
else
mem = public_mEMALIGn (alignment, size);
@@ -6034,6 +6304,196 @@ __posix_memalign (void **memptr, size_t alignment, size_t size)
}
weak_alias (__posix_memalign, posix_memalign)
+
+int
+malloc_info (int options, FILE *fp)
+{
+ /* For now, at least. */
+ if (options != 0)
+ return EINVAL;
+
+ int n = 0;
+ size_t total_nblocks = 0;
+ size_t total_nfastblocks = 0;
+ size_t total_avail = 0;
+ size_t total_fastavail = 0;
+ size_t total_system = 0;
+ size_t total_max_system = 0;
+ size_t total_aspace = 0;
+ size_t total_aspace_mprotect = 0;
+
+ void mi_arena (mstate ar_ptr)
+ {
+ fprintf (fp, "<heap nr=\"%d\">\n<sizes>\n", n++);
+
+ size_t nblocks = 0;
+ size_t nfastblocks = 0;
+ size_t avail = 0;
+ size_t fastavail = 0;
+ struct
+ {
+ size_t from;
+ size_t to;
+ size_t total;
+ size_t count;
+ } sizes[NFASTBINS + NBINS - 1];
+#define nsizes (sizeof (sizes) / sizeof (sizes[0]))
+
+ mutex_lock (&ar_ptr->mutex);
+
+ for (size_t i = 0; i < NFASTBINS; ++i)
+ {
+ mchunkptr p = fastbin (ar_ptr, i);
+ if (p != NULL)
+ {
+ size_t nthissize = 0;
+ size_t thissize = chunksize (p);
+
+ while (p != NULL)
+ {
+ ++nthissize;
+ p = p->fd;
+ }
+
+ fastavail += nthissize * thissize;
+ nfastblocks += nthissize;
+ sizes[i].from = thissize - (MALLOC_ALIGNMENT - 1);
+ sizes[i].to = thissize;
+ sizes[i].count = nthissize;
+ }
+ else
+ sizes[i].from = sizes[i].to = sizes[i].count = 0;
+
+ sizes[i].total = sizes[i].count * sizes[i].to;
+ }
+
+ mbinptr bin = bin_at (ar_ptr, 1);
+ struct malloc_chunk *r = bin->fd;
+ if (r != NULL)
+ {
+ while (r != bin)
+ {
+ ++sizes[NFASTBINS].count;
+ sizes[NFASTBINS].total += r->size;
+ sizes[NFASTBINS].from = MIN (sizes[NFASTBINS].from, r->size);
+ sizes[NFASTBINS].to = MAX (sizes[NFASTBINS].to, r->size);
+ r = r->fd;
+ }
+ nblocks += sizes[NFASTBINS].count;
+ avail += sizes[NFASTBINS].total;
+ }
+
+ for (size_t i = 2; i < NBINS; ++i)
+ {
+ bin = bin_at (ar_ptr, i);
+ r = bin->fd;
+ sizes[NFASTBINS - 1 + i].from = ~((size_t) 0);
+ sizes[NFASTBINS - 1 + i].to = sizes[NFASTBINS - 1 + i].total
+ = sizes[NFASTBINS - 1 + i].count = 0;
+
+ if (r != NULL)
+ while (r != bin)
+ {
+ ++sizes[NFASTBINS - 1 + i].count;
+ sizes[NFASTBINS - 1 + i].total += r->size;
+ sizes[NFASTBINS - 1 + i].from
+ = MIN (sizes[NFASTBINS - 1 + i].from, r->size);
+ sizes[NFASTBINS - 1 + i].to = MAX (sizes[NFASTBINS - 1 + i].to,
+ r->size);
+
+ r = r->fd;
+ }
+
+ if (sizes[NFASTBINS - 1 + i].count == 0)
+ sizes[NFASTBINS - 1 + i].from = 0;
+ nblocks += sizes[NFASTBINS - 1 + i].count;
+ avail += sizes[NFASTBINS - 1 + i].total;
+ }
+
+ mutex_unlock (&ar_ptr->mutex);
+
+ total_nfastblocks += nfastblocks;
+ total_fastavail += fastavail;
+
+ total_nblocks += nblocks;
+ total_avail += avail;
+
+ for (size_t i = 0; i < nsizes; ++i)
+ if (sizes[i].count != 0 && i != NFASTBINS)
+ fprintf (fp, "\
+<size from=\"%zu\" to=\"%zu\" total=\"%zu\" count=\"%zu\"/>\n",
+ sizes[i].from, sizes[i].to, sizes[i].total, sizes[i].count);
+
+ if (sizes[NFASTBINS].count != 0)
+ fprintf (fp, "\
+<unsorted from=\"%zu\" to=\"%zu\" total=\"%zu\" count=\"%zu\"/>\n",
+ sizes[NFASTBINS].from, sizes[NFASTBINS].to,
+ sizes[NFASTBINS].total, sizes[NFASTBINS].count);
+
+ total_system += ar_ptr->system_mem;
+ total_max_system += ar_ptr->max_system_mem;
+
+ fprintf (fp,
+ "</sizes>\n<total type=\"fast\" count=\"%zu\" size=\"%zu\"/>\n"
+ "<total type=\"rest\" count=\"%zu\" size=\"%zu\"/>\n"
+ "<system type=\"current\" size=\"%zu\"/>\n"
+ "<system type=\"max\" size=\"%zu\"/>\n",
+ nfastblocks, fastavail, nblocks, avail,
+ ar_ptr->system_mem, ar_ptr->max_system_mem);
+
+ if (ar_ptr != &main_arena)
+ {
+ heap_info *heap = heap_for_ptr(top(ar_ptr));
+ fprintf (fp,
+ "<aspace type=\"total\" size=\"%zu\"/>\n"
+ "<aspace type=\"mprotect\" size=\"%zu\"/>\n",
+ heap->size, heap->mprotect_size);
+ total_aspace += heap->size;
+ total_aspace_mprotect += heap->mprotect_size;
+ }
+ else
+ {
+ fprintf (fp,
+ "<aspace type=\"total\" size=\"%zu\"/>\n"
+ "<aspace type=\"mprotect\" size=\"%zu\"/>\n",
+ ar_ptr->system_mem, ar_ptr->system_mem);
+ total_aspace += ar_ptr->system_mem;
+ total_aspace_mprotect += ar_ptr->system_mem;
+ }
+
+ fputs ("</heap>\n", fp);
+ }
+
+ if(__malloc_initialized < 0)
+ ptmalloc_init ();
+
+ fputs ("<malloc version=\"1\">\n", fp);
+
+ /* Iterate over all arenas currently in use. */
+ mstate ar_ptr = &main_arena;
+ do
+ {
+ mi_arena (ar_ptr);
+ ar_ptr = ar_ptr->next;
+ }
+ while (ar_ptr != &main_arena);
+
+ fprintf (fp,
+ "<total type=\"fast\" count=\"%zu\" size=\"%zu\"/>\n"
+ "<total type=\"rest\" count=\"%zu\" size=\"%zu\"/>\n"
+ "<system type=\"current\" size=\"%zu\"/>\n"
+ "<system type=\"max\" size=\"%zu\"/>\n"
+ "<aspace type=\"total\" size=\"%zu\"/>\n"
+ "<aspace type=\"mprotect\" size=\"%zu\"/>\n"
+ "</malloc>\n",
+ total_nfastblocks, total_fastavail, total_nblocks, total_avail,
+ total_system, total_max_system,
+ total_aspace, total_aspace_mprotect);
+
+ return 0;
+}
+
+
strong_alias (__libc_calloc, __calloc) weak_alias (__libc_calloc, calloc)
strong_alias (__libc_free, __cfree) weak_alias (__libc_free, cfree)
strong_alias (__libc_free, __free) strong_alias (__libc_free, free)
diff --git a/malloc/malloc.h b/malloc/malloc.h
index b6d7a8afaf..d0aedc0cdf 100644
--- a/malloc/malloc.h
+++ b/malloc/malloc.h
@@ -1,5 +1,5 @@
/* Prototypes and definition for malloc implementation.
- Copyright (C) 1996, 1997, 1999, 2000, 2002-2004, 2005, 2007
+ Copyright (C) 1996, 1997, 1999, 2000, 2002-2004, 2005, 2007, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -23,6 +23,7 @@
#include <features.h>
#include <stddef.h>
+#include <stdio.h>
# define __malloc_ptr_t void *
/* Used by GNU libc internals. */
@@ -127,6 +128,8 @@ extern struct mallinfo mallinfo __MALLOC_P ((void));
#define M_MMAP_MAX -4
#define M_CHECK_ACTION -5
#define M_PERTURB -6
+#define M_ARENA_TEST -7
+#define M_ARENA_MAX -8
/* General SVID/XPG interface to tunable parameters. */
extern int mallopt __MALLOC_P ((int __param, int __val));
@@ -142,6 +145,9 @@ extern size_t malloc_usable_size __MALLOC_P ((void *__ptr));
/* Prints brief summary statistics on stderr. */
extern void malloc_stats __MALLOC_P ((void));
+/* Output information about state of allocator to stream FP. */
+extern int malloc_info (int __options, FILE *__fp);
+
/* Record the state of all malloc variables in an opaque data structure. */
extern void *malloc_get_state __MALLOC_P ((void));
diff --git a/malloc/memusage.c b/malloc/memusage.c
index d11e9e6ed5..382261c1c4 100644
--- a/malloc/memusage.c
+++ b/malloc/memusage.c
@@ -1,5 +1,5 @@
/* Profile heap and stack memory usage of running program.
- Copyright (C) 1998-2002, 2004, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1998-2002, 2004-2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -18,6 +18,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <assert.h>
#include <atomic.h>
#include <dlfcn.h>
#include <errno.h>
@@ -92,7 +93,7 @@ static __thread uintptr_t start_sp;
#define peak_stack peak_use[1]
#define peak_total peak_use[2]
-#define DEFAULT_BUFFER_SIZE 1024
+#define DEFAULT_BUFFER_SIZE 32768
static size_t buffer_size;
static int fd = -1;
@@ -162,16 +163,18 @@ update_data (struct header *result, size_t len, size_t old_len)
if (fd != -1)
{
uatomic32_t idx = catomic_exchange_and_add (&buffer_cnt, 1);
- if (idx >= 2 * buffer_size)
+ if (idx + 1 >= 2 * buffer_size)
{
/* We try to reset the counter to the correct range. If
this fails because of another thread increasing the
counter it does not matter since that thread will take
care of the correction. */
- unsigned int reset = idx - 2 * buffer_size;
- catomic_compare_and_exchange_val_acq (&buffer_size, reset, idx);
- idx = reset;
+ uatomic32_t reset = (idx + 1) % (2 * buffer_size);
+ catomic_compare_and_exchange_val_acq (&buffer_cnt, reset, idx + 1);
+ if (idx >= 2 * buffer_size)
+ idx = reset - 1;
}
+ assert (idx < 2 * DEFAULT_BUFFER_SIZE);
buffer[idx].heap = current_heap;
buffer[idx].stack = current_stack;
diff --git a/malloc/memusage.sh b/malloc/memusage.sh
index c4e189a83c..9fab0a3b8b 100755
--- a/malloc/memusage.sh
+++ b/malloc/memusage.sh
@@ -1,5 +1,5 @@
#! @BASH@
-# Copyright (C) 1999-2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 1999-2008, 2009 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# Contributed by Ulrich Drepper <drepper@gnu.org>, 1999.
@@ -61,8 +61,10 @@ Profile memory usage of PROGRAM.
Mandatory arguments to long options are also mandatory for any corresponding
short options.
-For bug reporting instructions, please see:
-<http://www.gnu.org/software/libc/bugs.html>."
+"
+ echo $"For bug reporting instructions, please see:
+<http://www.gnu.org/software/libc/bugs.html>.
+"
exit 0
}
@@ -71,7 +73,7 @@ do_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.
-" "2008"
+" "2009"
printf $"Written by %s.
" "Ulrich Drepper"
exit 0
diff --git a/malloc/memusagestat.c b/malloc/memusagestat.c
index 779d5c0a59..a5a315056b 100644
--- a/malloc/memusagestat.c
+++ b/malloc/memusagestat.c
@@ -1,5 +1,6 @@
/* Generate graphic from memory profiling data.
- Copyright (C) 1998, 1999, 2000, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2005, 2006,
+ 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -38,6 +39,8 @@
#include <gdfontl.h>
#include <gdfonts.h>
+#include "../version.h"
+#define PACKAGE _libc_intl_domainname
/* Default size of the generated image. */
#define XSIZE 800
@@ -73,6 +76,10 @@ static error_t parse_opt (int key, char *arg, struct argp_state *state);
/* Function to print some extra text in the help message. */
static char *more_help (int key, const char *text, void *input);
+/* Name and version of program. */
+static void print_version (FILE *stream, struct argp_state *state);
+void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+
/* Data structure to communicate with argp functions. */
static struct argp argp =
{
@@ -174,7 +181,7 @@ main (int argc, char *argv[])
|| st.st_size < 2 * sizeof (struct entry))
{
close (fd);
- error (EXIT_FAILURE, 0, "input file as incorrect size");
+ error (EXIT_FAILURE, 0, "input file has incorrect size");
}
/* Compute number of data entries. */
total = st.st_size / sizeof (struct entry) - 2;
@@ -184,13 +191,6 @@ main (int argc, char *argv[])
maxsize_heap = headent[1].heap;
maxsize_stack = headent[1].stack;
maxsize_total = headent[0].stack;
- if (also_total)
- {
- /* We use one scale and since we also draw the total amount of
- memory used we have to adapt the maximum. */
- maxsize_heap = maxsize_total;
- maxsize_stack = maxsize_total;
- }
if (maxsize_heap == 0 && maxsize_stack == 0)
{
@@ -203,18 +203,31 @@ main (int argc, char *argv[])
{
if (read (fd, &next, sizeof (next)) == 0)
break;
- if (next.heap > headent[1].heap)
- headent[1].heap = next.heap;
- if (next.stack > headent[1].stack)
- headent[1].stack = next.stack;
+ if (next.heap > maxsize_heap)
+ maxsize_heap = next.heap;
+ if (next.stack > maxsize_stack)
+ maxsize_stack = next.stack;
+ if (maxsize_heap + maxsize_stack > maxsize_total)
+ maxsize_total = maxsize_heap + maxsize_stack;
}
+ headent[0].stack = maxsize_total;
+ headent[1].heap = maxsize_heap;
+ headent[1].stack = maxsize_stack;
headent[1].time_low = next.time_low;
headent[1].time_high = next.time_high;
/* Write the computed values in the file. */
- lseek (fd, sizeof (struct entry), SEEK_SET);
- write (fd, &headent[1], sizeof (struct entry));
+ lseek (fd, 0, SEEK_SET);
+ write (fd, headent, 2 * sizeof (struct entry));
+ }
+
+ if (also_total)
+ {
+ /* We use one scale and since we also draw the total amount of
+ memory used we have to adapt the maximum. */
+ maxsize_heap = maxsize_total;
+ maxsize_stack = maxsize_total;
}
start_time = ((uint64_t) headent[0].time_high) << 32 | headent[0].time_low;
@@ -535,3 +548,16 @@ For bug reporting instructions, please see:\n\
}
return (char *) text;
}
+
+/* Print the version information. */
+static void
+print_version (FILE *stream, struct argp_state *state)
+{
+ fprintf (stream, "memusagestat (GNU %s) %s\n", PACKAGE, 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\
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
+"), "2009");
+ fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
+}
diff --git a/malloc/mtrace.pl b/malloc/mtrace.pl
index 782861129f..1c13ae0370 100644
--- a/malloc/mtrace.pl
+++ b/malloc/mtrace.pl
@@ -1,7 +1,7 @@
#! @PERL@
eval "exec @PERL@ -S $0 $@"
if 0;
-# Copyright (C) 1997-2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 1997-2008, 2009 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# Contributed by Ulrich Drepper <drepper@gnu.org>, 1997.
# Based on the mtrace.awk script.
@@ -45,7 +45,7 @@ arglist: while (@ARGV) {
$ARGV[0] eq "--vers" || $ARGV[0] eq "--versi" ||
$ARGV[0] eq "--versio" || $ARGV[0] eq "--version") {
print "mtrace (GNU $PACKAGE) $VERSION\n";
- print "Copyright (C) 2008 Free Software Foundation, Inc.\n";
+ print "Copyright (C) 2009 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";
print "Written by Ulrich Drepper <drepper\@gnu.org>\n";
diff --git a/malloc/obstack.h b/malloc/obstack.h
index 206fe55050..449070e7f1 100644
--- a/malloc/obstack.h
+++ b/malloc/obstack.h
@@ -1,5 +1,5 @@
/* obstack.h - object stack macros
- Copyright (C) 1988-1994,1996-1999,2003,2004,2005
+ Copyright (C) 1988-1994,1996-1999,2003,2004,2005,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -187,7 +187,7 @@ extern int _obstack_begin_1 (struct obstack *, int, int,
void (*) (void *, void *), void *);
extern int _obstack_memory_used (struct obstack *);
-void obstack_free (struct obstack *obstack, void *block);
+void obstack_free (struct obstack *__obstack, void *__block);
/* Error handler called when `obstack_chunk_alloc' failed to allocate
diff --git a/manual/.cvsignore b/manual/.cvsignore
deleted file mode 100644
index 54abbbb5a4..0000000000
--- a/manual/.cvsignore
+++ /dev/null
@@ -1,14 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz *.bz2
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-
-*.dvi* *.info* *.c.texi *.ps *.pdf
-*.toc *.aux *.log *.tmp
-*.cp *.cps *.fn *.fns *.vr *.vrs *.tp *.tps *.ky *.kys *.pg *.pgs
-
-texis top-menu.texi chapters.texi summary.texi stamp-*
-distinfo dir-add.texinfo dir-add.texi
-
-libm-err.texi
diff --git a/manual/.gitignore b/manual/.gitignore
new file mode 100644
index 0000000000..e92cef39b4
--- /dev/null
+++ b/manual/.gitignore
@@ -0,0 +1,29 @@
+*.aux
+*.c.texi
+*.cp
+*.cps
+*.dvi*
+*.fn
+*.fns
+*.info*
+*.ky
+*.kys
+*.log
+*.pdf
+*.pg
+*.pgs
+*.ps
+*.tmp
+*.toc
+*.tp
+*.tps
+*.vr
+*.vrs
+chapters.texi
+dir-add.texi
+dir-add.texinfo
+libm-err.texi
+stamp-*
+summary.texi
+texis
+top-menu.texi
diff --git a/manual/charset.texi b/manual/charset.texi
index 8b2c09ca79..79854e50bf 100644
--- a/manual/charset.texi
+++ b/manual/charset.texi
@@ -1234,7 +1234,7 @@ file_mbsrtowcs (int input, int output)
/* @r{If any characters must be carried forward,}
@r{put them at the beginning of @code{buffer}.} */
if (filled > 0)
- memmove (inp, buffer, filled);
+ memmove (buffer, inp, filled);
@}
return 1;
diff --git a/manual/errno.texi b/manual/errno.texi
index fcba26750e..03a868e457 100644
--- a/manual/errno.texi
+++ b/manual/errno.texi
@@ -1265,6 +1265,12 @@ They are not yet documented.}
@comment errno ???/???
@end deftypevr
+@comment errno.h
+@comment Linux: Operation not possible due to RF-kill
+@deftypevr Macro int ERFKILL
+@comment errno ???/???
+@end deftypevr
+
@node Error Messages, , Error Codes, Error Reporting
@section Error Messages
diff --git a/manual/install.texi b/manual/install.texi
index 0cd4d622de..24b1301ef6 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -330,16 +330,15 @@ bugs or lack features.
@item
GCC 3.4 or newer, GCC 4.1 recommended
-The GNU C library can only be compiled with the GNU C compiler family.
-For the 2.3 releases, GCC 3.2 or higher is required; GCC 3.4 is the
-compiler we advise to use for 2.3 versions.
-For the 2.4 release, GCC 3.4 or higher is required; as of this
-writing, GCC 4.1 is the compiler we advise to use for current versions.
+For the 2.4 release or later, GCC 3.4 or higher is required; as of this
+writing, GCC 4.4 is the compiler we advise to use for current versions.
On certain machines including @code{powerpc64}, compilers prior to GCC
4.0 have bugs that prevent them compiling the C library code in the
2.4 release. On other machines, GCC 4.1 is required to build the C
library with support for the correct @code{long double} type format;
-these include @code{powerpc} (32 bit), @code{s390} and @code{s390x}.
+these include @code{powerpc} (32 bit), @code{s390} and @code{s390x}. For
+other architectures special compiler-provided headers are needed
+(like @file{cpuid.h} on x86) which only come with later compiler versions.
You can use whatever compiler you like to compile programs that use GNU
libc, but be aware that both GCC 2.7 and 2.8 have bugs in their
diff --git a/math/.cvsignore b/math/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/math/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 6d9a3ec6cb..260d3ec665 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1997.
@@ -1993,9 +1993,15 @@ cos_test (void)
TEST_f_f (cos, 0, 1);
TEST_f_f (cos, minus_zero, 1);
+ errno = 0;
TEST_f_f (cos, plus_infty, nan_value, INVALID_EXCEPTION);
+ check_int ("errno for cos(+inf) == EDOM", errno, EDOM, 0, 0, 0);
+ errno = 0;
TEST_f_f (cos, minus_infty, nan_value, INVALID_EXCEPTION);
+ check_int ("errno for cos(-inf) == EDOM", errno, EDOM, 0, 0, 0);
+ errno = 0;
TEST_f_f (cos, nan_value, nan_value);
+ check_int ("errno for cos(NaN) unchanged", errno, 0, 0, 0, 0);
TEST_f_f (cos, M_PI_6l * 2.0, 0.5);
TEST_f_f (cos, M_PI_6l * 4.0, -0.5);
@@ -2597,6 +2603,10 @@ expm1_test (void)
TEST_f_f (expm1, 1, M_El - 1.0);
TEST_f_f (expm1, 0.75L, 1.11700001661267466854536981983709561L);
+ errno = 0;
+ TEST_f_f (expm1, 100000.0, plus_infty);
+ check_int ("errno for expm1(large) == ERANGE", errno, ERANGE, 0, 0, 0);
+
END (expm1);
}
@@ -2877,11 +2887,17 @@ fmod_test (void)
TEST_ff_f (fmod, minus_zero, 3, minus_zero);
/* fmod (+inf, y) == NaN plus invalid exception. */
+ errno = 0;
TEST_ff_f (fmod, plus_infty, 3, nan_value, INVALID_EXCEPTION);
+ check_int ("errno for fmod(Inf,3) unchanged", errno, EDOM, 0, 0, 0);
/* fmod (-inf, y) == NaN plus invalid exception. */
+ errno = 0;
TEST_ff_f (fmod, minus_infty, 3, nan_value, INVALID_EXCEPTION);
+ check_int ("errno for fmod(-Inf,3) unchanged", errno, EDOM, 0, 0, 0);
/* fmod (x, +0) == NaN plus invalid exception. */
+ errno = 0;
TEST_ff_f (fmod, 3, 0, nan_value, INVALID_EXCEPTION);
+ check_int ("errno for fmod(3,0) unchanged", errno, EDOM, 0, 0, 0);
/* fmod (x, -0) == NaN plus invalid exception. */
TEST_ff_f (fmod, 3, minus_zero, nan_value, INVALID_EXCEPTION);
@@ -3241,7 +3257,9 @@ lgamma_test (void)
TEST_f_f (lgamma, nan_value, nan_value);
/* lgamma (x) == +inf plus divide by zero exception for integer x <= 0. */
+ errno = 0;
TEST_f_f (lgamma, -3, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
+ check_int ("errno for lgamma(-integer) == ERANGE", errno, ERANGE, 0, 0, 0);
TEST_f_f (lgamma, minus_infty, plus_infty);
TEST_f_f1 (lgamma, 1, 0, 1);
@@ -4728,15 +4746,31 @@ pow_test (void)
TEST_ff_f (pow, -10.1L, 1.1L, nan_value, INVALID_EXCEPTION);
TEST_ff_f (pow, -10.1L, -1.1L, nan_value, INVALID_EXCEPTION);
+ errno = 0;
TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
+ check_int ("errno for pow(0,-odd) == ERANGE", errno, ERANGE, 0, 0, 0);
+ errno = 0;
TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
+ check_int ("errno for pow(0,-odd) == ERANGE", errno, ERANGE, 0, 0, 0);
+ errno = 0;
TEST_ff_f (pow, minus_zero, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
- TEST_ff_f (pow, minus_zero, -11, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
+ check_int ("errno for pow(-0,-odd) == ERANGE", errno, ERANGE, 0, 0, 0);
+ errno = 0;
+ TEST_ff_f (pow, minus_zero, -11L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
+ check_int ("errno for pow(-0,-odd) == ERANGE", errno, ERANGE, 0, 0, 0);
+ errno = 0;
TEST_ff_f (pow, 0, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
+ check_int ("errno for pow(0,-even) == ERANGE", errno, ERANGE, 0, 0, 0);
+ errno = 0;
TEST_ff_f (pow, 0, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
+ check_int ("errno for pow(0,-num) == ERANGE", errno, ERANGE, 0, 0, 0);
+ errno = 0;
TEST_ff_f (pow, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
+ check_int ("errno for pow(-0,-even) == ERANGE", errno, ERANGE, 0, 0, 0);
+ errno = 0;
TEST_ff_f (pow, minus_zero, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
+ check_int ("errno for pow(-0,-num) == ERANGE", errno, ERANGE, 0, 0, 0);
TEST_ff_f (pow, 0x1p72L, 0x1p72L, plus_infty);
TEST_ff_f (pow, 10, -0x1p72L, 0);
@@ -4749,11 +4783,9 @@ pow_test (void)
TEST_ff_f (pow, minus_zero, 1, minus_zero);
TEST_ff_f (pow, minus_zero, 11, minus_zero);
-
TEST_ff_f (pow, 0, 2, 0);
TEST_ff_f (pow, 0, 11.1L, 0);
-
TEST_ff_f (pow, minus_zero, 2, 0);
TEST_ff_f (pow, minus_zero, 11.1L, 0);
TEST_ff_f (pow, 0, plus_infty, 0);
@@ -5495,9 +5527,15 @@ sin_test (void)
TEST_f_f (sin, 0, 0);
TEST_f_f (sin, minus_zero, minus_zero);
+ errno = 0;
TEST_f_f (sin, plus_infty, nan_value, INVALID_EXCEPTION);
+ check_int ("errno for sin(+inf) == EDOM", errno, EDOM, 0, 0, 0);
+ errno = 0;
TEST_f_f (sin, minus_infty, nan_value, INVALID_EXCEPTION);
+ check_int ("errno for sin(-inf) == EDOM", errno, EDOM, 0, 0, 0);
+ errno = 0;
TEST_f_f (sin, nan_value, nan_value);
+ check_int ("errno for sin(NaN) unchanged", errno, 0, 0, 0, 0);
TEST_f_f (sin, M_PI_6l, 0.5);
TEST_f_f (sin, -M_PI_6l, -0.5);
@@ -5619,9 +5657,15 @@ tan_test (void)
TEST_f_f (tan, 0, 0);
TEST_f_f (tan, minus_zero, minus_zero);
+ errno = 0;
TEST_f_f (tan, plus_infty, nan_value, INVALID_EXCEPTION);
+ check_int ("errno for tan(Inf) == EDOM", errno, EDOM, 0, 0, 0);
+ errno = 0;
TEST_f_f (tan, minus_infty, nan_value, INVALID_EXCEPTION);
+ check_int ("errno for tan(-Inf) == EDOM", errno, EDOM, 0, 0, 0);
+ errno = 0;
TEST_f_f (tan, nan_value, nan_value);
+ check_int ("errno for tan(NaN) == 0", errno, 0, 0, 0, 0);
TEST_f_f (tan, M_PI_4l, 1);
TEST_f_f (tan, 0.75L, 0.931596459944072461165202756573936428L);
diff --git a/math/math.h b/math/math.h
index c50b2e7b07..4e65678b8d 100644
--- a/math/math.h
+++ b/math/math.h
@@ -1,5 +1,5 @@
/* Declarations for math functions.
- Copyright (C) 1991-1993, 1995-1999, 2001, 2002, 2004, 2006
+ Copyright (C) 1991-1993, 1995-1999, 2001, 2002, 2004, 2006, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -101,7 +101,7 @@ __BEGIN_DECLS
&& (!defined __NO_LONG_DOUBLE_MATH || defined __LDBL_COMPAT)
# ifdef __LDBL_COMPAT
-# ifdef __USE_ISOC99
+# ifdef __USE_ISOC99
extern float __nldbl_nexttowardf (float __x, long double __y)
__THROW __attribute__ ((__const__));
# ifdef __REDIRECT_NTH
@@ -277,6 +277,13 @@ enum
# define MATH_ERRNO 1 /* errno set by math functions. */
# define MATH_ERREXCEPT 2 /* Exceptions raised by math functions. */
+/* By default all functions support both errno and exception handling.
+ In gcc's fast math mode and if inline functions are defined this
+ might not be true. */
+# ifndef __FAST_MATH__
+# define math_errhandling (MATH_ERRNO | MATH_ERREXCEPT)
+# endif
+
#endif /* Use ISO C99. */
#ifdef __USE_MISC
diff --git a/math/math_private.h b/math/math_private.h
index 129646f8c5..fade7e1181 100644
--- a/math/math_private.h
+++ b/math/math_private.h
@@ -17,6 +17,7 @@
#define _MATH_PRIVATE_H_
#include <endian.h>
+#include <stdint.h>
#include <sys/types.h>
/* The original fdlibm code used statements like:
@@ -43,6 +44,7 @@ typedef union
u_int32_t msw;
u_int32_t lsw;
} parts;
+ uint64_t word;
} ieee_double_shape_type;
#endif
@@ -57,6 +59,7 @@ typedef union
u_int32_t lsw;
u_int32_t msw;
} parts;
+ uint64_t word;
} ieee_double_shape_type;
#endif
@@ -89,6 +92,14 @@ do { \
(i) = gl_u.parts.lsw; \
} while (0)
+/* Get all in one, efficient on 64-bit machines. */
+#define EXTRACT_WORDS64(i,d) \
+do { \
+ ieee_double_shape_type gh_u; \
+ gh_u.value = (d); \
+ (i) = gh_u.word; \
+} while (0)
+
/* Set a double from two 32 bit ints. */
#define INSERT_WORDS(d,ix0,ix1) \
@@ -99,6 +110,14 @@ do { \
(d) = iw_u.value; \
} while (0)
+/* Get all in one, efficient on 64-bit machines. */
+#define INSERT_WORDS64(i,d) \
+do { \
+ ieee_double_shape_type iw_u; \
+ iw_u.word = (i); \
+ (d) = iw_u.value; \
+} while (0)
+
/* Set the more significant 32 bits of a double from an int. */
#define SET_HIGH_WORD(d,v) \
diff --git a/math/s_fdim.c b/math/s_fdim.c
index 5804e631c3..677fdcde1a 100644
--- a/math/s_fdim.c
+++ b/math/s_fdim.c
@@ -1,5 +1,5 @@
/* Return positive difference between arguments.
- Copyright (C) 1997, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2004, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -18,6 +18,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <errno.h>
#include <math.h>
double
@@ -31,7 +32,14 @@ __fdim (double x, double y)
/* Raise invalid flag. */
return x - y;
- return x <= y ? 0 : x - y;
+ if (x <= y)
+ return 0.0;
+
+ double r = x - y;
+ if (fpclassify (r) == FP_INFINITE)
+ __set_errno (ERANGE);
+
+ return r;
}
weak_alias (__fdim, fdim)
#ifdef NO_LONG_DOUBLE
diff --git a/math/s_fdimf.c b/math/s_fdimf.c
index 2f3ce303ae..737413a5f4 100644
--- a/math/s_fdimf.c
+++ b/math/s_fdimf.c
@@ -1,5 +1,5 @@
/* Return positive difference between arguments.
- Copyright (C) 1997, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2004, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -18,6 +18,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <errno.h>
#include <math.h>
float
@@ -31,6 +32,13 @@ __fdimf (float x, float y)
/* Raise invalid flag. */
return x - y;
- return x <= y ? 0 : x - y;
+ if (x <= y)
+ return 0.0f;
+
+ float r = x - y;
+ if (fpclassify (r) == FP_INFINITE)
+ __set_errno (ERANGE);
+
+ return r;
}
weak_alias (__fdimf, fdimf)
diff --git a/math/s_fdiml.c b/math/s_fdiml.c
index 70246bafbd..f3072b99a0 100644
--- a/math/s_fdiml.c
+++ b/math/s_fdiml.c
@@ -1,5 +1,5 @@
/* Return positive difference between arguments.
- Copyright (C) 1997, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2004, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -18,6 +18,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <errno.h>
#include <math.h>
long double
@@ -31,6 +32,13 @@ __fdiml (long double x, long double y)
/* Raise invalid flag. */
return x - y;
- return x <= y ? 0 : x - y;
+ if (x <= y)
+ return 0.0f;
+
+ long double r = x - y;
+ if (fpclassify (r) == FP_INFINITE)
+ __set_errno (ERANGE);
+
+ return r;
}
weak_alias (__fdiml, fdiml)
diff --git a/math/s_fma.c b/math/s_fma.c
index e5ff5a7228..476d1fe44c 100644
--- a/math/s_fma.c
+++ b/math/s_fma.c
@@ -1,5 +1,5 @@
/* Compute x * y + z as ternary operation.
- Copyright (C) 1997, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2001, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -25,7 +25,9 @@ __fma (double x, double y, double z)
{
return (x * y) + z;
}
+#ifndef __fma
weak_alias (__fma, fma)
+#endif
#ifdef NO_LONG_DOUBLE
strong_alias (__fma, __fmal)
diff --git a/math/s_fmaf.c b/math/s_fmaf.c
index caa7f3afe8..357296d70d 100644
--- a/math/s_fmaf.c
+++ b/math/s_fmaf.c
@@ -1,5 +1,5 @@
/* Compute x * y + z as ternary operation.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -25,4 +25,6 @@ __fmaf (float x, float y, float z)
{
return (x * y) + z;
}
+#ifndef __fmaf
weak_alias (__fmaf, fmaf)
+#endif
diff --git a/math/w_coshl.c b/math/w_coshl.c
index 5f4623a81a..52b8d93522 100644
--- a/math/w_coshl.c
+++ b/math/w_coshl.c
@@ -38,8 +38,8 @@ static char rcsid[] = "$NetBSD: $";
long double z;
z = __ieee754_coshl(x);
if(_LIB_VERSION == _IEEE_ || __isnanl(x)) return z;
- if(!__finite(z) && __finite(x)) {
- return __kernel_standard(x,x,205); /* cosh overflow */
+ if(!__finitel(z) && __finitel(x)) {
+ return __kernel_standard(x,x,205); /* cosh overflow */
} else
return z;
#endif
diff --git a/math/w_fmod.c b/math/w_fmod.c
index 43a1d8ef5c..ca01cf2ac5 100644
--- a/math/w_fmod.c
+++ b/math/w_fmod.c
@@ -35,8 +35,9 @@ static char rcsid[] = "$NetBSD: w_fmod.c,v 1.6 1995/05/10 20:48:55 jtc Exp $";
double z;
z = __ieee754_fmod(x,y);
if(_LIB_VERSION == _IEEE_ ||__isnan(y)||__isnan(x)) return z;
- if(y==0.0) {
- return __kernel_standard(x,y,27); /* fmod(x,0) */
+ if(__isinf(x)||y==0.0) {
+ /* fmod(+-Inf,y) or fmod(x,0) */
+ return __kernel_standard(x,y,27);
} else
return z;
#endif
diff --git a/math/w_fmodf.c b/math/w_fmodf.c
index 2bd133f2d7..e2e869a3cc 100644
--- a/math/w_fmodf.c
+++ b/math/w_fmodf.c
@@ -8,7 +8,7 @@
*
* Developed at SunPro, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
+ * software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
@@ -17,7 +17,7 @@
static char rcsid[] = "$NetBSD: w_fmodf.c,v 1.3 1995/05/10 20:48:57 jtc Exp $";
#endif
-/*
+/*
* wrapper fmodf(x,y)
*/
@@ -38,8 +38,8 @@ static char rcsid[] = "$NetBSD: w_fmodf.c,v 1.3 1995/05/10 20:48:57 jtc Exp $";
float z;
z = __ieee754_fmodf(x,y);
if(_LIB_VERSION == _IEEE_ ||__isnanf(y)||__isnanf(x)) return z;
- if(y==(float)0.0) {
- /* fmodf(x,0) */
+ if(__isinff(x)||y==(float)0.0) {
+ /* fmodf(+-Inf,y) or fmodf(x,0) */
return (float)__kernel_standard((double)x,(double)y,127);
} else
return z;
diff --git a/math/w_fmodl.c b/math/w_fmodl.c
index 7b9a297cfd..c39b2852f6 100644
--- a/math/w_fmodl.c
+++ b/math/w_fmodl.c
@@ -39,8 +39,9 @@ static char rcsid[] = "$NetBSD: $";
long double z;
z = __ieee754_fmodl(x,y);
if(_LIB_VERSION == _IEEE_ ||__isnanl(y)||__isnanl(x)) return z;
- if(y==0.0) {
- return __kernel_standard(x,y,227); /* fmod(x,0) */
+ if(__isinfl(x)||y==0.0) {
+ /* fmodl(+-Inf,y) or fmodl(x,0) */
+ return __kernel_standard(x,y,227);
} else
return z;
#endif
diff --git a/misc/.cvsignore b/misc/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/misc/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/misc/Makefile b/misc/Makefile
index eb97ac1767..ee6936180b 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 1991-2006, 2007, 2009 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
@@ -34,7 +34,7 @@ headers := sys/uio.h bits/uio.h sys/ioctl.h bits/ioctls.h bits/ioctl-types.h \
bits/syslog.h bits/syslog-ldbl.h bits/syslog-path.h bits/error.h
routines := brk sbrk sstk ioctl \
- readv writev \
+ readv writev preadv preadv64 pwritev pwritev64 \
setreuid setregid \
seteuid setegid \
getpagesize \
@@ -45,7 +45,7 @@ routines := brk sbrk sstk ioctl \
gethostid sethostid \
revoke vhangup \
swapon swapoff mktemp mkstemp mkstemp64 mkdtemp \
- mkostemp mkostemp64 \
+ mkostemp mkostemp64 mkstemps mkstemps64 mkostemps mkostemps64 \
ualarm usleep \
gtty stty \
ptrace \
@@ -79,7 +79,7 @@ endif
gpl2lgpl := error.c error.h
tests := tst-dirname tst-tsearch tst-fdset tst-efgcvt tst-mntent tst-hsearch \
- tst-error1 tst-pselect tst-insremque tst-mntent2
+ tst-error1 tst-pselect tst-insremque tst-mntent2 bug-hsearch1
ifeq (no,$(cross-compiling))
tests: $(objpfx)tst-error1-mem
endif
diff --git a/misc/Versions b/misc/Versions
index b182f12311..3ffe3d138d 100644
--- a/misc/Versions
+++ b/misc/Versions
@@ -137,4 +137,10 @@ libc {
GLIBC_2.7 {
mkostemp; mkostemp64;
}
+ GLIBC_2.10 {
+ preadv; preadv64; pwritev; pwritev64;
+ }
+ GLIBC_2.11 {
+ mkstemps; mkstemps64; mkostemps; mkostemps64;
+ }
}
diff --git a/misc/bug-hsearch1.c b/misc/bug-hsearch1.c
new file mode 100644
index 0000000000..6097b5ad04
--- /dev/null
+++ b/misc/bug-hsearch1.c
@@ -0,0 +1,31 @@
+#include <search.h>
+#include <stdio.h>
+
+static int
+do_test (void)
+{
+ if (hcreate (1) == 0)
+ {
+ puts ("hcreate failed");
+ return 1;
+ }
+ ENTRY e;
+ e.key = (char *) "a";
+ e.data = (char *) "b";
+ if (hsearch (e, ENTER) == NULL)
+ {
+ puts ("ENTER failed");
+ return 1;
+ }
+ ENTRY s;
+ s.key = (char *) "c";
+ if (hsearch (s, FIND) != NULL)
+ {
+ puts ("FIND succeeded");
+ return 1;
+ }
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/misc/hsearch_r.c b/misc/hsearch_r.c
index c855a41846..73b9565030 100644
--- a/misc/hsearch_r.c
+++ b/misc/hsearch_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993,1995-1997,2002,2005,2007,2008
+/* Copyright (C) 1993,1995-1997,2002,2005,2007,2008,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1993.
@@ -79,6 +79,10 @@ hcreate_r (nel, htab)
if (htab->table != NULL)
return 0;
+ /* We need a size of at least 3. Otherwise the hash functions we
+ use will not work. */
+ if (nel < 3)
+ nel = 3;
/* Change nel to the first prime number not smaller as nel. */
nel |= 1; /* make odd */
while (!isprime (nel))
@@ -153,6 +157,8 @@ hsearch_r (item, action, retval, htab)
hval <<= 4;
hval += item.key[count];
}
+ if (hval == 0)
+ ++hval;
/* First hash function: simply take the modul but prevent zero. */
idx = hval % htab->size + 1;
diff --git a/misc/mkdtemp.c b/misc/mkdtemp.c
index 7cd3a44f94..6200e9e4fb 100644
--- a/misc/mkdtemp.c
+++ b/misc/mkdtemp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2007, 2009 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
@@ -28,7 +28,7 @@ char *
mkdtemp (template)
char *template;
{
- if (__gen_tempname (template, 0, __GT_DIR))
+ if (__gen_tempname (template, 0, 0, __GT_DIR))
return NULL;
else
return template;
diff --git a/misc/mkostemp.c b/misc/mkostemp.c
index 372e4f3c0f..a2023ab470 100644
--- a/misc/mkostemp.c
+++ b/misc/mkostemp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2001, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2001, 2007, 2009 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
@@ -32,5 +32,5 @@ mkostemp (template, flags)
char *template;
int flags;
{
- return __gen_tempname (template, flags, __GT_FILE);
+ return __gen_tempname (template, 0, flags, __GT_FILE);
}
diff --git a/misc/mkostemp64.c b/misc/mkostemp64.c
index 2ae730991e..18a506dd60 100644
--- a/misc/mkostemp64.c
+++ b/misc/mkostemp64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2007, 2009 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
@@ -29,5 +29,5 @@ mkostemp64 (template, flags)
char *template;
int flags;
{
- return __gen_tempname (template, flags | O_LARGEFILE, __GT_FILE);
+ return __gen_tempname (template, 0, flags | O_LARGEFILE, __GT_FILE);
}
diff --git a/misc/mkostemps.c b/misc/mkostemps.c
new file mode 100644
index 0000000000..030367296e
--- /dev/null
+++ b/misc/mkostemps.c
@@ -0,0 +1,44 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifndef __GT_FILE
+# define __GT_FILE 0
+#endif
+
+/* Generate a unique temporary file name from TEMPLATE. The last six
+ characters before a suffix of length SUFFIXLEN of TEMPLATE must be
+ "XXXXXX"; they are replaced with a string that makes the filename
+ unique. Then open the file and return a fd. */
+int
+mkostemps (template, suffixlen, flags)
+ char *template;
+ int suffixlen;
+ int flags;
+{
+ if (suffixlen < 0)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ return __gen_tempname (template, suffixlen, flags, __GT_FILE);
+}
diff --git a/misc/mkostemps64.c b/misc/mkostemps64.c
new file mode 100644
index 0000000000..0c6a2e7631
--- /dev/null
+++ b/misc/mkostemps64.c
@@ -0,0 +1,41 @@
+/* Copyright (C) 2000, 2007, 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/* Generate a unique temporary file name from TEMPLATE. The last six
+ characters before a suffix of length SUFFIXLEN of TEMPLATE must be
+ "XXXXXX"; they are replaced with a string that makes the filename
+ unique. Then open the file and return a fd. */
+int
+mkostemps64 (template, suffixlen, flags)
+ char *template;
+ int suffixlen;
+ int flags;
+{
+ if (suffixlen < 0)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ return __gen_tempname (template, suffixlen, flags | O_LARGEFILE, __GT_FILE);
+}
diff --git a/misc/mkstemp.c b/misc/mkstemp.c
index d3edca0791..bd3bbc88b2 100644
--- a/misc/mkstemp.c
+++ b/misc/mkstemp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2001, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2001, 2007, 2009 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
@@ -31,5 +31,5 @@ int
mkstemp (template)
char *template;
{
- return __gen_tempname (template, 0, __GT_FILE);
+ return __gen_tempname (template, 0, 0, __GT_FILE);
}
diff --git a/misc/mkstemp64.c b/misc/mkstemp64.c
index 400bf47d06..c384bc71e6 100644
--- a/misc/mkstemp64.c
+++ b/misc/mkstemp64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2007, 2009 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
@@ -28,5 +28,5 @@ int
mkstemp64 (template)
char *template;
{
- return __gen_tempname (template, O_LARGEFILE, __GT_FILE);
+ return __gen_tempname (template, 0, O_LARGEFILE, __GT_FILE);
}
diff --git a/misc/mkstemps.c b/misc/mkstemps.c
new file mode 100644
index 0000000000..e5ff089443
--- /dev/null
+++ b/misc/mkstemps.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifndef __GT_FILE
+# define __GT_FILE 0
+#endif
+
+/* Generate a unique temporary file name from TEMPLATE. The last six
+ characters before a suffix of length SUFFIXLEN of TEMPLATE must be
+ "XXXXXX"; they are replaced with a string that makes the filename
+ unique. Then open the file and return a fd. */
+int
+mkstemps (template, suffixlen)
+ char *template;
+ int suffixlen;
+{
+ if (suffixlen < 0)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ return __gen_tempname (template, suffixlen, 0, __GT_FILE);
+}
diff --git a/misc/mkstemps64.c b/misc/mkstemps64.c
new file mode 100644
index 0000000000..cf7562b48f
--- /dev/null
+++ b/misc/mkstemps64.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 2000, 2007, 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/* Generate a unique temporary file name from TEMPLATE. The last six
+ characters before a suffix of length SUFFIXLEN of TEMPLATE must be
+ "XXXXXX"; they are replaced with a string that makes the filename
+ unique. Then open the file and return a fd. */
+int
+mkstemps64 (template, suffixlen)
+ char *template;
+ int suffixlen;
+{
+ if (suffixlen < 0)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ return __gen_tempname (template, suffixlen, O_LARGEFILE, __GT_FILE);
+}
diff --git a/misc/mktemp.c b/misc/mktemp.c
index f600d7ea7c..c42fd5ec44 100644
--- a/misc/mktemp.c
+++ b/misc/mktemp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2007, 2009 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
@@ -26,7 +26,7 @@ char *
mktemp (template)
char *template;
{
- if (__gen_tempname (template, 0, __GT_NOCREATE) < 0)
+ if (__gen_tempname (template, 0, 0, __GT_NOCREATE) < 0)
/* We return the null string if we can't find a unique file name. */
template[0] = '\0';
diff --git a/misc/preadv.c b/misc/preadv.c
new file mode 100644
index 0000000000..facd8ca017
--- /dev/null
+++ b/misc/preadv.c
@@ -0,0 +1,41 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <unistd.h>
+#include <sys/uio.h>
+
+/* Read data from file descriptor FD at the given position OFFSET
+ without change the file pointer, and put the result in the buffers
+ described by VECTOR, which is a vector of COUNT 'struct iovec's.
+ The buffers are filled in the order specified. Operates just like
+ 'pread' (see <unistd.h>) except that data are put in VECTOR instead
+ of a contiguous buffer. */
+ssize_t
+preadv (fd, vector, count, offset)
+ int fd;
+ const struct iovec *vector;
+ int count;
+ off_t offset;
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+
+stub_warning (preadv)
+#include <stub-tag.h>
diff --git a/misc/preadv64.c b/misc/preadv64.c
new file mode 100644
index 0000000000..4b4e5717f8
--- /dev/null
+++ b/misc/preadv64.c
@@ -0,0 +1,41 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <unistd.h>
+#include <sys/uio.h>
+
+/* Read data from file descriptor FD at the given position OFFSET
+ without change the file pointer, and put the result in the buffers
+ described by VECTOR, which is a vector of COUNT 'struct iovec's.
+ The buffers are filled in the order specified. Operates just like
+ 'pread' (see <unistd.h>) except that data are put in VECTOR instead
+ of a contiguous buffer. */
+ssize_t
+preadv64 (fd, vector, count, offset)
+ int fd;
+ const struct iovec *vector;
+ int count;
+ off64_t offset;
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+
+stub_warning (preadv64)
+#include <stub-tag.h>
diff --git a/misc/pwritev.c b/misc/pwritev.c
new file mode 100644
index 0000000000..2ee47708e1
--- /dev/null
+++ b/misc/pwritev.c
@@ -0,0 +1,41 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <unistd.h>
+#include <sys/uio.h>
+
+/* Write data pointed by the buffers described by VECTOR, which is a
+ vector of COUNT 'struct iovec's, to file descriptor FD at the given
+ position OFFSET without change the file pointer. The data is
+ written in the order specified. Operates just like 'pwrite' (see
+ <unistd.h>) except that the data are taken from VECTOR instead of a
+ contiguous buffer. */
+ssize_t
+pwritev (fd, vector, count, offset)
+ int fd;
+ const struct iovec *vector;
+ int count;
+ off_t offset;
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+
+stub_warning (pwritev)
+#include <stub-tag.h>
diff --git a/misc/pwritev64.c b/misc/pwritev64.c
new file mode 100644
index 0000000000..6cff749083
--- /dev/null
+++ b/misc/pwritev64.c
@@ -0,0 +1,41 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <unistd.h>
+#include <sys/uio.h>
+
+/* Write data pointed by the buffers described by VECTOR, which is a
+ vector of COUNT 'struct iovec's, to file descriptor FD at the given
+ position OFFSET without change the file pointer. The data is
+ written in the order specified. Operates just like 'pwrite' (see
+ <unistd.h>) except that the data are taken from VECTOR instead of a
+ contiguous buffer. */
+ssize_t
+pwritev64 (fd, vector, count, offset)
+ int fd;
+ const struct iovec *vector;
+ int count;
+ off64_t offset;
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+
+stub_warning (pwritev64)
+#include <stub-tag.h>
diff --git a/misc/sbrk.c b/misc/sbrk.c
index 0df60076cc..985b34749a 100644
--- a/misc/sbrk.c
+++ b/misc/sbrk.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1995,1996,1997,2000,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1995-1997,2000,2002,2009 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
@@ -16,8 +16,9 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <unistd.h>
#include <errno.h>
+#include <stdint.h>
+#include <unistd.h>
/* Defined in brk.c. */
extern void *__curbrk;
@@ -47,7 +48,10 @@ __sbrk (intptr_t increment)
return __curbrk;
oldbrk = __curbrk;
- if (__brk (oldbrk + increment) < 0)
+ if ((increment > 0
+ ? ((uintptr_t) oldbrk + (uintptr_t) increment < (uintptr_t) oldbrk)
+ : ((uintptr_t) oldbrk < (uintptr_t) -increment))
+ || __brk (oldbrk + increment) < 0)
return (void *) -1;
return oldbrk;
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
index efdc4f97e0..c9495a479e 100644
--- a/misc/sys/cdefs.h
+++ b/misc/sys/cdefs.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2001, 2002, 2004, 2005, 2006, 2007
+/* Copyright (C) 1992-2001, 2002, 2004, 2005, 2006, 2007, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -303,7 +303,12 @@
# endif
# else
# define __extern_inline extern __inline
-# define __extern_always_inline extern __always_inline
+# if __GNUC_PREREQ (4,3)
+# define __extern_always_inline \
+ extern __always_inline __attribute__ ((__artificial__))
+# else
+# define __extern_always_inline extern __always_inline
+# endif
# endif
#endif
diff --git a/misc/sys/select.h b/misc/sys/select.h
index 2a408433ec..f4a37be551 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -1,5 +1,5 @@
/* `fd_set' type and related macros, and `select'/`pselect' declarations.
- Copyright (C) 1996,97,98,99,2000,01,02,2003 Free Software Foundation, Inc.
+ Copyright (C) 1996-2003, 2009 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
@@ -59,7 +59,7 @@ typedef long int __fd_mask;
#undef __FDELT
#undef __FDMASK
/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
-#define __NFDBITS (8 * sizeof (__fd_mask))
+#define __NFDBITS (8 * (int) sizeof (__fd_mask))
#define __FDELT(d) ((d) / __NFDBITS)
#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
diff --git a/misc/sys/uio.h b/misc/sys/uio.h
index 1b203f71c2..a32b7ed8e5 100644
--- a/misc/sys/uio.h
+++ b/misc/sys/uio.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 96, 97, 98, 99, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1996-1999,2003,2009 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
@@ -30,24 +30,93 @@ __BEGIN_DECLS
/* Read data from file descriptor FD, and put the result in the
- buffers described by IOVEC, which is a vector of COUNT `struct iovec's.
+ buffers described by IOVEC, which is a vector of COUNT 'struct iovec's.
The buffers are filled in the order specified.
- Operates just like `read' (see <unistd.h>) except that data are
+ Operates just like 'read' (see <unistd.h>) except that data are
put in IOVEC instead of a contiguous buffer.
This function is a cancellation point and therefore not marked with
__THROW. */
-extern ssize_t readv (int __fd, __const struct iovec *__iovec, int __count);
+extern ssize_t readv (int __fd, __const struct iovec *__iovec, int __count)
+ __wur;
/* Write data pointed by the buffers described by IOVEC, which
- is a vector of COUNT `struct iovec's, to file descriptor FD.
+ is a vector of COUNT 'struct iovec's, to file descriptor FD.
The data is written in the order specified.
- Operates just like `write' (see <unistd.h>) except that the data
+ Operates just like 'write' (see <unistd.h>) except that the data
are taken from IOVEC instead of a contiguous buffer.
This function is a cancellation point and therefore not marked with
__THROW. */
-extern ssize_t writev (int __fd, __const struct iovec *__iovec, int __count);
+extern ssize_t writev (int __fd, __const struct iovec *__iovec, int __count)
+ __wur;
+
+
+#ifdef __USE_BSD
+# ifndef __USE_FILE_OFFSET64
+/* Read data from file descriptor FD at the given position OFFSET
+ without change the file pointer, and put the result in the buffers
+ described by IOVEC, which is a vector of COUNT 'struct iovec's.
+ The buffers are filled in the order specified. Operates just like
+ 'pread' (see <unistd.h>) except that data are put in IOVEC instead
+ of a contiguous buffer.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern ssize_t preadv (int __fd, __const struct iovec *__iovec, int __count,
+ __off_t __offset) __wur;
+
+/* Write data pointed by the buffers described by IOVEC, which is a
+ vector of COUNT 'struct iovec's, to file descriptor FD at the given
+ position OFFSET without change the file pointer. The data is
+ written in the order specified. Operates just like 'pwrite' (see
+ <unistd.h>) except that the data are taken from IOVEC instead of a
+ contiguous buffer.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern ssize_t pwritev (int __fd, __const struct iovec *__iovec, int __count,
+ __off_t __offset) __wur;
+# else
+# ifdef __REDIRECT
+extern ssize_t __REDIRECT (preadv, (int __fd, __const struct iovec *__iovec,
+ int __count, __off64_t __offset),
+ preadv64) __wur;
+extern ssize_t __REDIRECT (pwritev, (int __fd, __const struct iovec *__iovec,
+ int __count, __off64_t __offset),
+ pwritev64) __wur;
+# else
+# define preadv preadv64
+# define pwritev pwritev64
+# endif
+# endif
+
+# ifdef __USE_LARGEFILE64
+/* Read data from file descriptor FD at the given position OFFSET
+ without change the file pointer, and put the result in the buffers
+ described by IOVEC, which is a vector of COUNT 'struct iovec's.
+ The buffers are filled in the order specified. Operates just like
+ 'pread' (see <unistd.h>) except that data are put in IOVEC instead
+ of a contiguous buffer.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern ssize_t preadv64 (int __fd, __const struct iovec *__iovec, int __count,
+ __off64_t __offset) __wur;
+
+/* Write data pointed by the buffers described by IOVEC, which is a
+ vector of COUNT 'struct iovec's, to file descriptor FD at the given
+ position OFFSET without change the file pointer. The data is
+ written in the order specified. Operates just like 'pwrite' (see
+ <unistd.h>) except that the data are taken from IOVEC instead of a
+ contiguous buffer.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern ssize_t pwritev64 (int __fd, __const struct iovec *__iovec, int __count,
+ __off64_t __offset) __wur;
+# endif
+#endif /* Use BSD */
__END_DECLS
diff --git a/nis/nss_compat/compat-initgroups.c b/nis/nss_compat/compat-initgroups.c
index 76ca95d1e6..07a3b9282c 100644
--- a/nis/nss_compat/compat-initgroups.c
+++ b/nis/nss_compat/compat-initgroups.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2004, 2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
@@ -43,8 +43,10 @@ static enum nss_status (*nss_getgrnam_r) (const char *name,
static enum nss_status (*nss_getgrgid_r) (gid_t gid, struct group * grp,
char *buffer, size_t buflen,
int *errnop);
+static enum nss_status (*nss_setgrent) (int stayopen);
static enum nss_status (*nss_getgrent_r) (struct group * grp, char *buffer,
size_t buflen, int *errnop);
+static enum nss_status (*nss_endgrent) (void);
/* Protect global state against multiple changers. */
__libc_lock_define_initialized (static, lock)
@@ -68,7 +70,9 @@ struct blacklist_t
struct ent_t
{
- bool_t files;
+ bool files;
+ bool need_endgrent;
+ bool skip_initgroups_dyn;
FILE *stream;
struct blacklist_t blacklist;
};
@@ -106,7 +110,9 @@ init_nss_interface (void)
nss_initgroups_dyn = __nss_lookup_function (ni, "initgroups_dyn");
nss_getgrnam_r = __nss_lookup_function (ni, "getgrnam_r");
nss_getgrgid_r = __nss_lookup_function (ni, "getgrgid_r");
+ nss_setgrent = __nss_lookup_function (ni, "setgrent");
nss_getgrent_r = __nss_lookup_function (ni, "getgrent_r");
+ nss_endgrent = __nss_lookup_function (ni, "endgrent");
}
__libc_lock_unlock (lock);
@@ -117,7 +123,7 @@ internal_setgrent (ent_t *ent)
{
enum nss_status status = NSS_STATUS_SUCCESS;
- ent->files = TRUE;
+ ent->files = true;
if (ni == NULL)
init_nss_interface ();
@@ -195,54 +201,68 @@ internal_endgrent (ent_t *ent)
else
ent->blacklist.current = 0;
+ if (ent->need_endgrent && nss_endgrent != NULL)
+ nss_endgrent ();
+
return NSS_STATUS_SUCCESS;
}
-/* This function checks, if the user is a member of this group and if
- yes, add the group id to the list. */
+/* Add new group record. */
static void
+add_group (long int *start, long int *size, gid_t **groupsp, long int limit,
+ gid_t gid)
+{
+ gid_t *groups = *groupsp;
+
+ /* Matches user. Insert this group. */
+ if (__builtin_expect (*start == *size, 0))
+ {
+ /* Need a bigger buffer. */
+ gid_t *newgroups;
+ long int newsize;
+
+ if (limit > 0 && *size == limit)
+ /* We reached the maximum. */
+ return;
+
+ if (limit <= 0)
+ newsize = 2 * *size;
+ else
+ newsize = MIN (limit, 2 * *size);
+
+ newgroups = realloc (groups, newsize * sizeof (*groups));
+ if (newgroups == NULL)
+ return;
+ *groupsp = groups = newgroups;
+ *size = newsize;
+ }
+
+ groups[*start] = gid;
+ *start += 1;
+}
+
+/* This function checks, if the user is a member of this group and if
+ yes, add the group id to the list. Return nonzero is we couldn't
+ handle the group because the user is not in the member list. */
+static int
check_and_add_group (const char *user, gid_t group, long int *start,
long int *size, gid_t **groupsp, long int limit,
struct group *grp)
{
- gid_t *groups = *groupsp;
char **member;
/* Don't add main group to list of groups. */
if (grp->gr_gid == group)
- return;
+ return 0;
for (member = grp->gr_mem; *member != NULL; ++member)
if (strcmp (*member, user) == 0)
{
- /* Matches user. Insert this group. */
- if (*start == *size)
- {
- /* Need a bigger buffer. */
- gid_t *newgroups;
- long int newsize;
-
- if (limit > 0 && *size == limit)
- /* We reached the maximum. */
- return;
-
- if (limit <= 0)
- newsize = 2 * *size;
- else
- newsize = MIN (limit, 2 * *size);
-
- newgroups = realloc (groups, newsize * sizeof (*groups));
- if (newgroups == NULL)
- return;
- *groupsp = groups = newgroups;
- *size = newsize;
- }
-
- groups[*start] = grp->gr_gid;
- *start += 1;
-
- break;
+ add_group (start, size, groupsp, limit, grp->gr_gid);
+ return 0;
}
+
+ return 1;
}
/* Get the next group from NSS (+ entry). If the NSS module supports
@@ -255,15 +275,10 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
enum nss_status status;
struct group grpbuf;
- /* if this module does not support getgrent_r and initgroups_dyn,
- abort. We cannot find the needed group entries. */
- if (nss_getgrent_r == NULL && nss_initgroups_dyn == NULL)
- return NSS_STATUS_UNAVAIL;
-
/* Try nss_initgroups_dyn if supported. We also need getgrgid_r.
If this function is not supported, step through the whole group
database with getgrent_r. */
- if (nss_initgroups_dyn && nss_getgrgid_r)
+ if (! ent->skip_initgroups_dyn)
{
long int mystart = 0;
long int mysize = limit <= 0 ? *size : limit;
@@ -282,39 +297,56 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
if (nss_initgroups_dyn (user, group, &mystart, &mysize, &mygroups,
limit, errnop) == NSS_STATUS_SUCCESS)
{
- /* A temporary buffer. We use the normal buffer, until we find
- an entry, for which this buffer is to small. In this case, we
- overwrite the pointer with one to a bigger buffer. */
- char *tmpbuf = buffer;
- size_t tmplen = buflen;
- int i;
-
- for (i = 0; i < mystart; i++)
+ /* If there is no blacklist we can trust the underlying
+ initgroups implementation. */
+ if (ent->blacklist.current <= 1)
+ for (int i = 0; i < mystart; i++)
+ add_group (start, size, groupsp, limit, mygroups[i]);
+ else
{
- while ((status = nss_getgrgid_r (mygroups[i], &grpbuf, tmpbuf,
- tmplen,
- errnop)) == NSS_STATUS_TRYAGAIN
- && *errnop == ERANGE)
- if (tmpbuf == buffer)
- {
- tmplen *= 2;
- tmpbuf = __alloca (tmplen);
- }
- else
- tmpbuf = extend_alloca (tmpbuf, tmplen, 2 * tmplen);
-
- if (__builtin_expect (status != NSS_STATUS_NOTFOUND, 1))
+ /* A temporary buffer. We use the normal buffer, until we find
+ an entry, for which this buffer is to small. In this case, we
+ overwrite the pointer with one to a bigger buffer. */
+ char *tmpbuf = buffer;
+ size_t tmplen = buflen;
+
+ for (int i = 0; i < mystart; i++)
{
- if (__builtin_expect (status != NSS_STATUS_SUCCESS, 0))
+ while ((status = nss_getgrgid_r (mygroups[i], &grpbuf,
+ tmpbuf, tmplen, errnop))
+ == NSS_STATUS_TRYAGAIN
+ && *errnop == ERANGE)
+ if (tmpbuf == buffer)
+ {
+ tmplen *= 2;
+ tmpbuf = __alloca (tmplen);
+ }
+ else
+ tmpbuf = extend_alloca (tmpbuf, tmplen, 2 * tmplen);
+
+ if (__builtin_expect (status != NSS_STATUS_NOTFOUND, 1))
{
- free (mygroups);
- return status;
+ if (__builtin_expect (status != NSS_STATUS_SUCCESS, 0))
+ {
+ free (mygroups);
+ return status;
+ }
+
+ if (!in_blacklist (grpbuf.gr_name,
+ strlen (grpbuf.gr_name), ent)
+ && check_and_add_group (user, group, start, size,
+ groupsp, limit, &grpbuf))
+ {
+ if (nss_setgrent != NULL)
+ {
+ nss_setgrent (1);
+ ent->need_endgrent = true;
+ }
+ ent->skip_initgroups_dyn = true;
+
+ goto iter;
+ }
}
-
- if (!in_blacklist (grpbuf.gr_name,
- strlen (grpbuf.gr_name), ent))
- check_and_add_group (user, group, start, size, groupsp,
- limit, &grpbuf);
}
}
@@ -327,17 +359,21 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
}
/* If we come here, the NSS module does not support initgroups_dyn
- and we have to step through the whole list ourself. */
+ or we were confronted with a split group. In these cases we have
+ to step through the whole list ourself. */
+ iter:
do
{
if ((status = nss_getgrent_r (&grpbuf, buffer, buflen, errnop)) !=
NSS_STATUS_SUCCESS)
- return status;
+ break;
}
while (in_blacklist (grpbuf.gr_name, strlen (grpbuf.gr_name), ent));
- check_and_add_group (user, group, start, size, groupsp, limit, &grpbuf);
- return NSS_STATUS_SUCCESS;
+ if (status == NSS_STATUS_SUCCESS)
+ check_and_add_group (user, group, start, size, groupsp, limit, &grpbuf);
+
+ return status;
}
static enum nss_status
@@ -435,7 +471,21 @@ internal_getgrent_r (ent_t *ent, char *buffer, size_t buflen, const char *user,
/* +:... */
if (grpbuf.gr_name[0] == '+' && grpbuf.gr_name[1] == '\0')
{
- ent->files = FALSE;
+ /* If the selected module does not support getgrent_r or
+ initgroups_dyn, abort. We cannot find the needed group
+ entries. */
+ if (nss_getgrent_r == NULL && nss_initgroups_dyn == NULL)
+ return NSS_STATUS_UNAVAIL;
+
+ ent->files = false;
+
+ if (nss_initgroups_dyn == NULL && nss_setgrent != NULL)
+ {
+ nss_setgrent (1);
+ ent->need_endgrent = true;
+ }
+ ent->skip_initgroups_dyn = true;
+
return getgrent_next_nss (ent, buffer, buflen, user, group,
start, size, groupsp, limit, errnop);
}
@@ -455,7 +505,7 @@ _nss_compat_initgroups_dyn (const char *user, gid_t group, long int *start,
size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX);
char *tmpbuf;
enum nss_status status;
- ent_t intern = { TRUE, NULL, {NULL, 0, 0} };
+ ent_t intern = { true, false, false, NULL, {NULL, 0, 0} };
status = internal_setgrent (&intern);
if (status != NSS_STATUS_SUCCESS)
diff --git a/nis/nss_nis/nis-grp.c b/nis/nss_nis/nis-grp.c
index 6e36cf828f..6ad30eb1bb 100644
--- a/nis/nss_nis/nis-grp.c
+++ b/nis/nss_nis/nis-grp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-1999, 2001-2004, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1996-1999,2001-2004,2006,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996.
@@ -55,7 +55,7 @@ internal_nis_endgrent (void)
oldkeylen = 0;
}
- struct response_t *curr = intern.next;
+ struct response_t *curr = intern.start;
while (curr != NULL)
{
@@ -203,16 +203,17 @@ internal_nis_getgrent_r (struct group *grp, char *buffer, size_t buflen,
}
if (__builtin_expect ((size_t) (len + 1) > buflen, 0))
- {
- free (result);
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
+ {
+ if (!batch_read)
+ free (result);
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
char *p = strncpy (buffer, result, len);
buffer[len] = '\0';
while (isspace (*p))
- ++p;
+ ++p;
if (!batch_read)
free (result);
@@ -280,7 +281,7 @@ _nss_nis_getgrnam_r (const char *name, struct group *grp,
enum nss_status retval = yperr2nss (yperr);
if (retval == NSS_STATUS_TRYAGAIN)
- *errnop = errno;
+ *errnop = errno;
return retval;
}
@@ -329,7 +330,7 @@ _nss_nis_getgrgid_r (gid_t gid, struct group *grp,
enum nss_status retval = yperr2nss (yperr);
if (retval == NSS_STATUS_TRYAGAIN)
- *errnop = errno;
+ *errnop = errno;
return retval;
}
diff --git a/nis/nss_nis/nis-hosts.c b/nis/nss_nis/nis-hosts.c
index 24d13634d7..18bc77391b 100644
--- a/nis/nss_nis/nis-hosts.c
+++ b/nis/nss_nis/nis-hosts.c
@@ -70,20 +70,20 @@ LINE_PARSER
{
assert ((flags & AI_V4MAPPED) == 0 || af != AF_UNSPEC);
if (flags & AI_V4MAPPED)
- {
- map_v4v6_address ((char *) entdata->host_addr,
- (char *) entdata->host_addr);
- result->h_addrtype = AF_INET6;
- result->h_length = IN6ADDRSZ;
- }
+ {
+ map_v4v6_address ((char *) entdata->host_addr,
+ (char *) entdata->host_addr);
+ result->h_addrtype = AF_INET6;
+ result->h_length = IN6ADDRSZ;
+ }
else
- {
- result->h_addrtype = AF_INET;
- result->h_length = INADDRSZ;
- }
+ {
+ result->h_addrtype = AF_INET;
+ result->h_length = INADDRSZ;
+ }
}
else if (af != AF_INET
- && inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
+ && inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
{
result->h_addrtype = AF_INET6;
result->h_length = IN6ADDRSZ;
@@ -164,14 +164,14 @@ internal_nis_gethostent_r (struct hostent *host, char *buffer,
int keylen;
int yperr;
if (new_start)
- yperr = yp_first (domain, "hosts.byname", &outkey, &keylen, &result,
+ yperr = yp_first (domain, "hosts.byname", &outkey, &keylen, &result,
&len);
else
- yperr = yp_next (domain, "hosts.byname", oldkey, oldkeylen, &outkey,
+ yperr = yp_next (domain, "hosts.byname", oldkey, oldkeylen, &outkey,
&keylen, &result, &len);
if (__builtin_expect (yperr != YPERR_SUCCESS, 0))
- {
+ {
enum nss_status retval = yperr2nss (yperr);
switch (retval)
@@ -191,12 +191,12 @@ internal_nis_gethostent_r (struct hostent *host, char *buffer,
}
if (__builtin_expect ((size_t) (len + 1) > linebuflen, 0))
- {
- free (result);
+ {
+ free (result);
*h_errnop = NETDB_INTERNAL;
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
char *p = strncpy (data->linebuffer, result, len);
data->linebuffer[len] = '\0';
@@ -233,7 +233,7 @@ _nss_nis_gethostent_r (struct hostent *host, char *buffer, size_t buflen,
__libc_lock_lock (lock);
status = internal_nis_gethostent_r (host, buffer, buflen, errnop, h_errnop,
- ((_res.options & RES_USE_INET6) ? AF_INET6 : AF_INET),
+ ((_res.options & RES_USE_INET6) ? AF_INET6 : AF_INET),
((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0 ));
__libc_lock_unlock (lock);
@@ -346,7 +346,7 @@ _nss_nis_gethostbyname2_r (const char *name, int af, struct hostent *host,
return internal_gethostbyname2_r (name, af, host, buffer, buflen, errnop,
h_errnop,
- ((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0));
+ ((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0));
}
@@ -456,7 +456,10 @@ _nss_nis_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat,
{
char *domain;
if (yp_get_default_domain (&domain))
- return NSS_STATUS_UNAVAIL;
+ {
+ *herrnop = NO_DATA;
+ return NSS_STATUS_UNAVAIL;
+ }
/* Convert name to lowercase. */
size_t namlen = strlen (name);
@@ -485,24 +488,6 @@ _nss_nis_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat,
return retval;
}
- struct parser_data data;
- struct hostent host;
- int parse_res = parse_line (result, &host, &data, buflen, errnop, AF_UNSPEC,
- 0);
- if (__builtin_expect (parse_res < 1, 0))
- {
- if (parse_res == -1)
- {
- *herrnop = NETDB_INTERNAL;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- {
- *herrnop = HOST_NOT_FOUND;
- return NSS_STATUS_NOTFOUND;
- }
- }
-
if (*pat == NULL)
{
uintptr_t pad = (-(uintptr_t) buffer
@@ -524,16 +509,47 @@ _nss_nis_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat,
buflen -= sizeof (struct gaih_addrtuple);
}
- (*pat)->next = NULL;
- size_t h_name_len = strlen (host.h_name);
- if (h_name_len >= buflen)
+ uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct parser_data);
+ buffer += pad;
+
+ struct parser_data *data = (void *) buffer;
+
+ if (__builtin_expect (buflen < sizeof *data + 1 + pad, 0))
goto erange;
- (*pat)->name = memcpy (buffer, host.h_name, h_name_len + 1);
+ buflen -= pad;
+
+ struct hostent host;
+ int parse_res = parse_line (result, &host, data, buflen, errnop, AF_UNSPEC,
+ 0);
+ if (__builtin_expect (parse_res < 1, 0))
+ {
+ if (parse_res == -1)
+ {
+ *herrnop = NETDB_INTERNAL;
+ return NSS_STATUS_TRYAGAIN;
+ }
+ else
+ {
+ *herrnop = HOST_NOT_FOUND;
+ return NSS_STATUS_NOTFOUND;
+ }
+ }
+
+ (*pat)->next = NULL;
(*pat)->family = host.h_addrtype;
memcpy ((*pat)->addr, host.h_addr_list[0], host.h_length);
(*pat)->scopeid = 0;
assert (host.h_addr_list[1] == NULL);
+ /* Undo the alignment for parser_data. */
+ buffer -= pad;
+ buflen += pad;
+
+ size_t h_name_len = strlen (host.h_name) + 1;
+ if (h_name_len >= buflen)
+ goto erange;
+ (*pat)->name = memcpy (buffer, host.h_name, h_name_len);
+
free (result);
return NSS_STATUS_SUCCESS;
diff --git a/nis/nss_nis/nis-network.c b/nis/nss_nis/nis-network.c
index 9b02302e0b..22a898bb21 100644
--- a/nis/nss_nis/nis-network.c
+++ b/nis/nss_nis/nis-network.c
@@ -241,7 +241,7 @@ _nss_nis_getnetbyaddr_r (uint32_t addr, int type, struct netent *net,
if (__builtin_expect (yp_get_default_domain (&domain), 0))
return NSS_STATUS_UNAVAIL;
- struct in_addr in = inet_makeaddr (addr, 0);
+ struct in_addr in = { .s_addr = htonl (addr) };
char *buf = inet_ntoa (in);
size_t blen = strlen (buf);
diff --git a/nis/nss_nis/nis-pwd.c b/nis/nss_nis/nis-pwd.c
index 1b5206ad6d..fdc7dc9e1e 100644
--- a/nis/nss_nis/nis-pwd.c
+++ b/nis/nss_nis/nis-pwd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-1998,2001,2002,2003,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1996-1998,2001-2003,2006,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
@@ -116,7 +116,7 @@ internal_nis_endpwent (void)
oldkeylen = 0;
}
- struct response_t *curr = intern.next;
+ struct response_t *curr = intern.start;
while (curr != NULL)
{
diff --git a/nis/nss_nisplus/nisplus-hosts.c b/nis/nss_nisplus/nisplus-hosts.c
index 37d44773fc..eca64c97e6 100644
--- a/nis/nss_nisplus/nisplus-hosts.c
+++ b/nis/nss_nisplus/nisplus-hosts.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-2003, 2005, 2006, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2003, 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
@@ -38,10 +38,10 @@ static nis_name tablename_val;
static u_long tablename_len;
#define NISENTRYVAL(idx, col, res) \
- (NIS_RES_OBJECT (res)[idx].EN_data.en_cols.en_cols_val[col].ec_value.ec_value_val)
+ (NIS_RES_OBJECT (res)[idx].EN_data.en_cols.en_cols_val[col].ec_value.ec_value_val)
#define NISENTRYLEN(idx, col, res) \
- (NIS_RES_OBJECT (res)[idx].EN_data.en_cols.en_cols_val[col].ec_value.ec_value_len)
+ (NIS_RES_OBJECT (res)[idx].EN_data.en_cols.en_cols_val[col].ec_value.ec_value_len)
/* Get implementation for some internal functions. */
#include <resolv/mapv4v6addr.h>
@@ -287,15 +287,15 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer,
return NSS_STATUS_TRYAGAIN;
}
if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status retval = niserr2nss (result->status);
- if (retval == NSS_STATUS_TRYAGAIN)
- {
- *herrnop = NETDB_INTERNAL;
- *errnop = errno;
- }
- return retval;
- }
+ {
+ enum nss_status retval = niserr2nss (result->status);
+ if (retval == NSS_STATUS_TRYAGAIN)
+ {
+ *herrnop = NETDB_INTERNAL;
+ *errnop = errno;
+ }
+ return retval;
+ }
}
else
@@ -308,18 +308,18 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer,
return NSS_STATUS_TRYAGAIN;
}
if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status retval= niserr2nss (result->status);
+ {
+ enum nss_status retval= niserr2nss (result->status);
nis_freeresult (result);
result = saved_res;
- if (retval == NSS_STATUS_TRYAGAIN)
- {
- *herrnop = NETDB_INTERNAL;
+ if (retval == NSS_STATUS_TRYAGAIN)
+ {
+ *herrnop = NETDB_INTERNAL;
*errnop = errno;
- }
- return retval;
- }
+ }
+ return retval;
+ }
}
if (_res.options & RES_USE_INET6)
@@ -330,13 +330,13 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer,
buflen, errnop, 0);
if (parse_res == -1)
- {
+ {
nis_freeresult (result);
result = saved_res;
- *herrnop = NETDB_INTERNAL;
+ *herrnop = NETDB_INTERNAL;
*errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
+ return NSS_STATUS_TRYAGAIN;
+ }
if (saved_res != NULL)
nis_freeresult (saved_res);
@@ -435,6 +435,7 @@ internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
if (result == NULL)
{
*errnop = ENOMEM;
+ *herrnop = NETDB_INTERNAL;
return NSS_STATUS_TRYAGAIN;
}
@@ -444,10 +445,13 @@ internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
if (retval == NSS_STATUS_TRYAGAIN)
{
*errnop = errno;
- *herrnop = NETDB_INTERNAL;
+ *herrnop = TRY_AGAIN;
}
else
- __set_errno (olderr);
+ {
+ __set_errno (olderr);
+ *herrnop = NETDB_INTERNAL;
+ }
nis_freeresult (result);
return retval;
}
@@ -502,7 +506,7 @@ _nss_nisplus_gethostbyname_r (const char *name, struct hostent *host,
buflen, errnop, h_errnop,
AI_V4MAPPED);
if (status == NSS_STATUS_SUCCESS)
- return status;
+ return status;
}
return internal_gethostbyname2_r (name, AF_INET, host, buffer,
diff --git a/nis/nss_nisplus/nisplus-network.c b/nis/nss_nisplus/nisplus-network.c
index 1cf652f071..902826b62a 100644
--- a/nis/nss_nisplus/nisplus-network.c
+++ b/nis/nss_nisplus/nisplus-network.c
@@ -433,7 +433,7 @@ _nss_nisplus_getnetbyaddr_r (uint32_t addr, const int type,
char buf2[18];
int olderr = errno;
- struct in_addr in = inet_makeaddr (addr, 0);
+ struct in_addr in = { .s_addr = htonl (addr) };
strcpy (buf2, inet_ntoa (in));
size_t b2len = strlen (buf2);
diff --git a/nis/rpcsvc/nislib.h b/nis/rpcsvc/nislib.h
index c8927ece17..f3cc2c4c51 100644
--- a/nis/rpcsvc/nislib.h
+++ b/nis/rpcsvc/nislib.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1997, 1998, 1999, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2006, 2007, 2009
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
@@ -111,59 +112,59 @@ extern nis_result *nis_modify (const_nis_name name,
* const netobj *cookie: The value of cookie from the nis_result structure
* form the previous call.
*/
-extern nis_result *nis_list (const_nis_name name, unsigned int flags,
- int (*callback)(const_nis_name table_name,
- const nis_object *obj,
- const void *userdata),
- const void *userdata) __THROW;
-extern nis_result *nis_add_entry (const_nis_name table_name,
- const nis_object *obj,
- unsigned int flags) __THROW;
-extern nis_result *nis_modify_entry (const_nis_name name,
- const nis_object *obj,
- unsigned int flags) __THROW;
-extern nis_result *nis_remove_entry (const_nis_name table_name,
- const nis_object *obj,
- unsigned int flags) __THROW;
-extern nis_result *nis_first_entry (const_nis_name table_name) __THROW;
-extern nis_result *nis_next_entry (const_nis_name table_name,
- const netobj *cookie) __THROW;
+extern nis_result *nis_list (const_nis_name __name, unsigned int __flags,
+ int (*__callback)(const_nis_name __table_name,
+ const nis_object *__obj,
+ const void *__userdata),
+ const void *__userdata) __THROW;
+extern nis_result *nis_add_entry (const_nis_name __table_name,
+ const nis_object *__obj,
+ unsigned int __flags) __THROW;
+extern nis_result *nis_modify_entry (const_nis_name __name,
+ const nis_object *__obj,
+ unsigned int __flags) __THROW;
+extern nis_result *nis_remove_entry (const_nis_name __table_name,
+ const nis_object *__obj,
+ unsigned int __flags) __THROW;
+extern nis_result *nis_first_entry (const_nis_name __table_name) __THROW;
+extern nis_result *nis_next_entry (const_nis_name __table_name,
+ const netobj *__cookie) __THROW;
/*
** nis_server
*/
-extern nis_error nis_mkdir (const_nis_name dirname,
- const nis_server *machine) __THROW;
-extern nis_error nis_rmdir (const_nis_name dirname,
- const nis_server *machine) __THROW;
-extern nis_error nis_servstate (const nis_server *machine,
- const nis_tag *tags, int numtags,
- nis_tag **result) __THROW;
-extern nis_error nis_stats (const nis_server *machine,
- const nis_tag *tags, int numtags,
- nis_tag **result) __THROW;
-extern void nis_freetags (nis_tag *tags, int numtags) __THROW;
-extern nis_server **nis_getservlist (const_nis_name dirname) __THROW;
-extern void nis_freeservlist (nis_server **machines) __THROW;
+extern nis_error nis_mkdir (const_nis_name __dirname,
+ const nis_server *__machine) __THROW;
+extern nis_error nis_rmdir (const_nis_name __dirname,
+ const nis_server *__machine) __THROW;
+extern nis_error nis_servstate (const nis_server *__machine,
+ const nis_tag *__tags, int __numtags,
+ nis_tag **__result) __THROW;
+extern nis_error nis_stats (const nis_server *__machine,
+ const nis_tag *__tags, int __numtags,
+ nis_tag **__result) __THROW;
+extern void nis_freetags (nis_tag *__tags, int __numtags) __THROW;
+extern nis_server **nis_getservlist (const_nis_name __dirname) __THROW;
+extern void nis_freeservlist (nis_server **__machines) __THROW;
/*
** nis_subr
*/
-extern nis_name nis_leaf_of (const_nis_name name) __THROW;
-extern nis_name nis_leaf_of_r (const_nis_name name, char *buffer,
- size_t buflen) __THROW;
-extern nis_name nis_name_of (const_nis_name name) __THROW;
-extern nis_name nis_name_of_r (const_nis_name name, char *buffer,
- size_t buflen) __THROW;
-extern nis_name nis_domain_of (const_nis_name name) __THROW;
-extern nis_name nis_domain_of_r (const_nis_name name, char *buffer,
- size_t buflen) __THROW;
-extern nis_name *nis_getnames (const_nis_name name) __THROW;
-extern void nis_freenames (nis_name *namelist) __THROW;
-extern name_pos nis_dir_cmp (const_nis_name n1, const_nis_name n2) __THROW;
-extern nis_object *nis_clone_object (const nis_object *src,
- nis_object *dest) __THROW;
-extern void nis_destroy_object (nis_object *obj) __THROW;
-extern void nis_print_object (const nis_object *obj) __THROW;
+extern nis_name nis_leaf_of (const_nis_name __name) __THROW;
+extern nis_name nis_leaf_of_r (const_nis_name __name, char *__buffer,
+ size_t __buflen) __THROW;
+extern nis_name nis_name_of (const_nis_name __name) __THROW;
+extern nis_name nis_name_of_r (const_nis_name __name, char *__buffer,
+ size_t __buflen) __THROW;
+extern nis_name nis_domain_of (const_nis_name __name) __THROW;
+extern nis_name nis_domain_of_r (const_nis_name __name, char *__buffer,
+ size_t __buflen) __THROW;
+extern nis_name *nis_getnames (const_nis_name __name) __THROW;
+extern void nis_freenames (nis_name *__namelist) __THROW;
+extern name_pos nis_dir_cmp (const_nis_name __n1, const_nis_name __n2) __THROW;
+extern nis_object *nis_clone_object (const nis_object *__src,
+ nis_object *__dest) __THROW;
+extern void nis_destroy_object (nis_object *__obj) __THROW;
+extern void nis_print_object (const nis_object *__obj) __THROW;
/*
** nis_local_names
@@ -176,67 +177,67 @@ extern nis_name nis_local_host (void) __THROW;
/*
** nis_error
*/
-extern const char *nis_sperrno (const nis_error status) __THROW;
-extern void nis_perror (const nis_error status, const char *label) __THROW;
-extern void nis_lerror (const nis_error status, const char *label) __THROW;
-extern char *nis_sperror (const nis_error status, const char *label) __THROW;
-extern char *nis_sperror_r (const nis_error status, const char *label,
- char *buffer, size_t buflen) __THROW;
+extern const char *nis_sperrno (const nis_error __status) __THROW;
+extern void nis_perror (const nis_error __status, const char *__label) __THROW;
+extern void nis_lerror (const nis_error __status, const char *__label) __THROW;
+extern char *nis_sperror (const nis_error status, const char *__label) __THROW;
+extern char *nis_sperror_r (const nis_error __status, const char *__label,
+ char *__buffer, size_t __buflen) __THROW;
/*
** nis_groups
*/
-extern bool_t nis_ismember (const_nis_name principal,
- const_nis_name group) __THROW;
-extern nis_error nis_addmember (const_nis_name member,
- const_nis_name group) __THROW;
-extern nis_error nis_removemember (const_nis_name member,
- const_nis_name group) __THROW;
-extern nis_error nis_creategroup (const_nis_name group,
- unsigned int flags) __THROW;
-extern nis_error nis_destroygroup (const_nis_name group) __THROW;
-extern void nis_print_group_entry (const_nis_name group) __THROW;
-extern nis_error nis_verifygroup (const_nis_name group) __THROW;
+extern bool_t nis_ismember (const_nis_name __principal,
+ const_nis_name __group) __THROW;
+extern nis_error nis_addmember (const_nis_name __member,
+ const_nis_name __group) __THROW;
+extern nis_error nis_removemember (const_nis_name __member,
+ const_nis_name __group) __THROW;
+extern nis_error nis_creategroup (const_nis_name __group,
+ unsigned int __flags) __THROW;
+extern nis_error nis_destroygroup (const_nis_name __group) __THROW;
+extern void nis_print_group_entry (const_nis_name __group) __THROW;
+extern nis_error nis_verifygroup (const_nis_name __group) __THROW;
/*
** nis_ping
*/
-extern void nis_ping (const_nis_name dirname, uint32_t utime,
- const nis_object *dirobj) __THROW;
-extern nis_result *nis_checkpoint (const_nis_name dirname) __THROW;
+extern void nis_ping (const_nis_name __dirname, uint32_t __utime,
+ const nis_object *__dirobj) __THROW;
+extern nis_result *nis_checkpoint (const_nis_name __dirname) __THROW;
/*
** nis_print (XXX INTERNAL FUNCTIONS, SHOULD NOT BE USED !!)
*/
-extern void nis_print_result (const nis_result *result) __THROW;
-extern void nis_print_rights (unsigned int rights) __THROW;
-extern void nis_print_directory (const directory_obj *dirobj) __THROW;
-extern void nis_print_group (const group_obj *grpobj) __THROW;
-extern void nis_print_table (const table_obj *tblobj) __THROW;
-extern void nis_print_link (const link_obj *lnkobj) __THROW;
-extern void nis_print_entry (const entry_obj *enobj) __THROW;
+extern void nis_print_result (const nis_result *__result) __THROW;
+extern void nis_print_rights (unsigned int __rights) __THROW;
+extern void nis_print_directory (const directory_obj *__dirobj) __THROW;
+extern void nis_print_group (const group_obj *__grpobj) __THROW;
+extern void nis_print_table (const table_obj *__tblobj) __THROW;
+extern void nis_print_link (const link_obj *__lnkobj) __THROW;
+extern void nis_print_entry (const entry_obj *__enobj) __THROW;
/*
** nis_file (XXX INTERNAL FUNCTIONS, SHOULD NOT BE USED !!)
*/
extern directory_obj *readColdStartFile (void) __THROW;
-extern bool_t writeColdStartFile (const directory_obj *dirobj) __THROW;
-extern nis_object *nis_read_obj (const char *obj) __THROW;
-extern bool_t nis_write_obj (const char *file, const nis_object *obj) __THROW;
+extern bool_t writeColdStartFile (const directory_obj *__dirobj) __THROW;
+extern nis_object *nis_read_obj (const char *__obj) __THROW;
+extern bool_t nis_write_obj (const char *__file, const nis_object *__obj) __THROW;
/*
** nis_clone - (XXX INTERNAL FUNCTIONS, SHOULD NOT BE USED !!)
*/
-extern directory_obj *nis_clone_directory (const directory_obj *src,
- directory_obj *dest) __THROW;
-extern nis_result *nis_clone_result (const nis_result *src,
- nis_result *dest) __THROW;
+extern directory_obj *nis_clone_directory (const directory_obj *__src,
+ directory_obj *__dest) __THROW;
+extern nis_result *nis_clone_result (const nis_result *__src,
+ nis_result *__dest) __THROW;
/* nis_free - nis_freeresult */
-extern void nis_freeresult (nis_result *result) __THROW;
+extern void nis_freeresult (nis_result *__result) __THROW;
/* (XXX THE FOLLOWING ARE INTERNAL FUNCTIONS, SHOULD NOT BE USED !!) */
-extern void nis_free_request (ib_request *req) __THROW;
-extern void nis_free_directory (directory_obj *dirobj) __THROW;
-extern void nis_free_object (nis_object *obj) __THROW;
+extern void nis_free_request (ib_request *__req) __THROW;
+extern void nis_free_directory (directory_obj *__dirobj) __THROW;
+extern void nis_free_object (nis_object *__obj) __THROW;
/* (XXX INTERNAL FUNCTIONS, SHOULD NOT BE USED !!) */
extern nis_name __nis_default_owner (char *) __THROW;
@@ -245,7 +246,7 @@ extern uint32_t __nis_default_ttl (char *) __THROW;
extern unsigned int __nis_default_access (char *, unsigned int) __THROW;
extern fd_result *__nis_finddirectory (directory_obj *, const_nis_name) __THROW;
extern void __free_fdresult (fd_result *) __THROW;
-extern uint32_t __nis_hash (const void *keyarg, register size_t len) __THROW;
+extern uint32_t __nis_hash (const void *__keyarg, size_t __len) __THROW;
/* NIS+ cache locking */
extern int __nis_lock_cache (void) __THROW;
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 8aa7f9ba3e..c81eb03b75 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,546 @@
+2010-01-15 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
+ Fix unwind info.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
+
+2010-01-15 Michal Schmidt <mschmidt@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
+ Fix pthread_cond_timedwait with requeue-PI.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
+ Fix pthread_cond_wait with requeue-PI.
+
+2010-01-14 Ulrich Drepper <drepper@redhat.com>
+
+ * Versions: Add pthread_mutex_consistent, pthread_mutexattr_getrobust,
+ and pthread_mutexattr_setrobust for GLIBC_2.12.
+ * pthread_mutex_consistent.c: Define alias pthread_mutex_consistent.
+ * pthread_mutexattr_getrobust.c: Define alias
+ pthread_mutexattr_getrobust.
+ * pthread_mutexattr_setrobust.c: Define alias
+ pthread_mutexattr_setrobust.
+
+2010-01-12 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/pthread/pthread.h: Cleanup. Fix up for XPG7.
+
+2010-01-08 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/pthread/pthread.h: Fix pthread_mutex_consistent declaration.
+
+2009-12-18 Thomas Schwinge <thomas@codesourcery.com>
+
+ * sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c (_init): Don't
+ call __gmon_start__.
+ * sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c (_init): Likewise.
+
+2009-12-17 Ulrich Drepper <drepper@redhat.com>
+
+ * pthread_rwlock_init.c (__pthread_rwlock_init): Simplify code by
+ using memset.
+
+2009-12-01 Dinakar Guniguntala <dino@in.ibm.com>
+
+ * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.h: Define
+ FUTEX_WAIT_REQUEUE_PI and FUTEX_CMP_REQUEUE_PI.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: If mutex
+ is a non robust PI mutex, then use FUTEX_CMP_REQUEUE_PI.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: If mutex
+ is a non robust PI mutex, then use FUTEX_WAIT_REQUEUE_PI.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
+
+2009-12-12 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
+ Don't update nwaiters after invalid timeout is recognized.
+
+2009-11-27 Thomas Schwinge <thomas@codesourcery.com>
+
+ * sysdeps/unix/sysv/linux/sh/pt-initfini.c (_init): Don't call
+ __gmon_start__.
+
+2009-11-27 Andreas Schwab <schwab@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Reload
+ THREAD_SELF->cancelhandling after returning from futex call.
+
+2009-11-24 Ulrich Drepper <drepper@redhat.com>
+
+ * tst-sem13.c: New file.
+ * Makefile (tests): Add tst-sem13.
+
+2009-11-22 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: # include "i686/dl-sysdep.h"
+ instead of recapitulating its contents.
+
+2009-11-18 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Minor
+ optimizations and cleanups.
+
+2009-11-18 Dinakar Guniguntala <dino@in.ibm.com>
+
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S:
+ Remove redundant code. Fix cfi offsets.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S:
+ Fix cfi offsets.
+
+2009-11-17 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Minimally
+ reduce size of unwind info.
+
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Convert to use
+ cfi directives.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
+ Based on a patch by Dinakar Guniguntala <dino@in.ibm.com>.
+
+2009-11-03 Andreas Schwab <schwab@linux-m68k.org>
+
+ [BZ #4457]
+ * sysdeps/pthread/unwind-resume.c: Include <libgcc_s.h> and use
+ LIBGCC_S_SO.
+ * sysdeps/pthread/unwind-forcedunwind.c: Likewise.
+
+2009-10-30 Ulrich Drepper <drepper@redhat.com>
+
+ * tst-sem11.c (main): Rewrite to avoid aliasing problems.
+
+ [BZ #3270]
+ * allocatestack.c (__nptl_setxid): Perform the operation in multiple
+ steps to avoid races with creation and terminations.
+ * nptl-init.c (sighandler_setxid): Adjust.
+ Patch by Daniel Jacobowitz.
+
+2009-09-07 Andreas Schwab <schwab@redhat.com>
+
+ * sysdeps/pthread/bits/libc-lock.h (BP_SYM): Remove space before paren.
+
+2009-09-02 Suzuki K P <suzuki@in.ibm.com>
+ Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #7094]
+ * sysdeps/unix/sysv/linux/timer_create.c (timer_create):
+ Initialize the sigev_notify field for newly created timer to make sure
+ the timer gets deleted from the active timer's list upon timer_delete.
+
+2009-08-27 Andrew Stubbs <ams@codesourcery.com>
+
+ * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_timedlock_wait):
+ Correct a logic error.
+
+2009-08-25 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/tls.h (RTLD_ENABLE_FOREIGN_CALL): Store old value
+ of the field in local variables.
+ (RTLD_FINALIZE_FOREIGN_CALL): Restore rtld_must_xmm_save from local
+ variable and don't unconditionally clear it.
+
+2009-08-24 Ulrich Drepper <drepper@redhat.com>
+
+ * pthread_create.c (start_thread): Hint to the kernel that memory for
+ the stack can be reused. We do not mark all the memory. The part
+ still in use and some reserve are kept.
+
+2009-08-23 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/bits/posix_opt.h: Clean up namespace.
+
+2009-08-11 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Add CFI
+ directives.
+
+2009-08-10 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Add CFI
+ directives.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
+
+2009-08-10 Andreas Schwab <schwab@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
+ (__pthread_cond_signal): Don't clobber register used for syscall
+ number.
+
+2009-08-08 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
+ Optimize code path used when FUTEX_CLOCK_REALTIME is supported.
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+ (__pthread_cond_wait): Optimize by avoiding use of callee-safe
+ register.
+
+2009-08-07 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Little optimizations
+ enabled by the special *_asynccancel functions.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
+
+ * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Include lowlevellock.h.
+
+2009-08-04 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/cancellation.S: New file.
+ * sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S: New file.
+ * sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S: New file.
+ * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (PSEUDO): Optimize
+ since we can assume the special __*_{en,dis}able_asynccancel
+ functions.
+ (PUSHARGS_*, POPARGS_*, SAVESTK_*, RESTSTK_*): Removed.
+ * sysdeps/x86_64/tcb-offsets.sym: Add cancellation-related bits
+ and PTHREAD_CANCELED.
+
+2009-07-31 Ulrich Drepper <drepper@redhat.com>
+
+ * descr.h: Better definition of *_BITMASK macros for cancellation.
+
+2009-07-29 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/tls.h (TLS_TCB_ALIGN): Define explicitly to 32.
+
+ * sysdeps/x86_64/tls.h (tcbhead_t): Add room for SSE registers the
+ dynamic linker might have to save.
+ Define RTLD_CHECK_FOREIGN_CALL, RTLD_ENABLE_FOREIGN_CALL,
+ RTLD_PREPARE_FOREIGN_CALL, and RTLD_FINALIZE_FOREIGN_CALL. Pretty
+ printing.
+
+ * sysdeps/x86_64/tcb-offsets.sym: Add RTLD_SAVESPACE_SSE.
+
+2009-07-28 Ulrich Drepper <drepper@redhat.com>
+
+ * pthread_mutex_lock.c [NO_INCR] (__pthread_mutex_cond_lock_adjust):
+ New function.
+ * pthreadP.h: Declare __pthread_mutex_cond_lock_adjust.
+ * sysdeps/unix/sysv/linux/pthread-pi-defines.sym: Add ROBUST_BIT.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Don't use
+ requeue_pi for robust mutexes.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
+ Don't only skip __pthread_mutex_cond_lock. Call instead
+ __pthread_mutex_cond_lock_adjust.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
+
+ * pthread_mutex_unlock.c (__pthread_mutex_unlock_full): Minor
+ optimization of PI mutex handling.
+
+2009-07-27 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10418]
+ * pthread_mutex_unlock.c (__pthread_mutex_unlock_full): Use _rel
+ instead of of _acq variants of cmpxchg.
+
+2009-07-23 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/configure.in: New file.
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Fix error
+ path when not using absolute timeout futex.
+
+2009-07-20 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Minor
+ optimizations of last changes.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
+
+2009-07-19 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Define
+ FUTEX_WAIT_REQUEUE_PI and FUTEX_CMP_REQUEUE_PI.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: If mutex
+ is a PI mutex, then use FUTEX_CMP_REQUEUE_PI.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: If mutex
+ is a PI mutex, then use FUTEX_WAIT_REQUEUE_PI.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+ (__pthread_cond_timedwait): Make more robust.
+
+2009-07-18 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
+ (__lll_robust_timedlock_wait): If possible use FUTEX_WAIT_BITSET to
+ directly use absolute timeout.
+
+ * tst-sem5.c (do_test): Add test for premature timeout.
+ * Makefile: Linu tst-sem5 with librt.
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
+ (pthread_rwlock_timedwrlock): If possible use FUTEX_WAIT_BITSET to
+ directly use absolute timeout.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
+ (pthread_rwlock_timedrdlock): Likewise.
+
+ * tst-cond11.c (run_test): Add test to check that the timeout is
+ long enough.
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+ (__pthread_cond_timedwait): If possible use FUTEX_WAIT_BITSET to
+ directly use absolute timeout.
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+ (__pthread_cond_wait): Convert to using exception handler instead of
+ registered unwind buffer.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+ (__pthread_cond_timedwait): Likewise.
+
+2009-07-17 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
+ If possible use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME to directly
+ use absolute timeout.
+
+ * sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Optimize
+ handling of uncontested semaphore.
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+ (__condvar_cleanup): Rewrite to use cfi directives instead of
+ hand-coded unwind tables.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_once.S (__pthread_once):
+ Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
+ Likewise.
+
+2009-06-12 Ulrich Drepper <drepper@redhat.com>
+
+ * Makefile (libpthread-routines): Add pthread_sigqueue.
+ * Versions: Add pthread_sigqueue for GLIBC_2.11.
+ * sysdeps/pthread/bits/sigthread.h: Declare pthread_sigqueue.
+ * sysdeps/unix/sysv/linux/pthread_sigqueue.c: New file.
+
+2009-06-11 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10262]
+ * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
+ (LOAD_FUTEX_WAIT_ABS): Fix futex parameter in case private futexes
+ cannot be assumed.
+ Patch by Bryan Kadzban <bz-glibc@kdzbn.homelinux.net>.
+
+2009-05-16 Ulrich Drepper <drepper@redhat.com>
+
+ * libc-cancellation.c: Move __libc_cleanup_routine to...
+ * libc-cleanup.c: ...here. New file.
+ * Makefile (routines): Add libc-cleanup.
+
+ * cancellation.c (__pthread_disable_asynccancel): Remove unnecessary
+ test.
+ * libc-cancellation.c: Use <nptl/cancellation.c: to define the code.
+ * sysdeps/pthread/librt-cancellation.c: Likewise.
+
+ [BZ #9924]
+ * nptl-init.c: Renamed from init.c.
+ * Makefile: Change all occurences of init.c to nptl-init.c.
+
+2009-05-15 Ulrich Drepper <drepper@redhat.com>
+
+ * cancellation.c (__pthread_disable_asynccancel): Correct the bits
+ to test when deciding on the delay.
+ * libc-cancellation.c (__libc_disable_asynccancel): Likewise.
+ * pthread_cancel.c: Close race between deciding on sending a signal
+ and setting the CANCELING_BIT bit.
+
+ * cancellation.c (__pthread_disable_asynccancel): Don't return if
+ thread is canceled.
+ * libc-cancellation.c (__libc_disable_asynccancel): Likewise.
+
+2009-04-27 Ulrich Drepper <drepper@redhat.com>
+
+ * cancellation.c (__pthread_disable_asynccancel): Use THREAD_ATOMIC_AND
+ is available.
+ * libc-cancellation.c (__libc_disable_asynccancel): Likewise.
+ * sysdeps/x86_64/tls.h: Define THREAD_ATOMIC_AND.
+ * sysdeps/i386/tls.h: Likewise.
+ (tcbhead_t): Add __private_tm member.
+
+2009-04-26 Ulrich Drepper <drepper@redhat.com>
+
+ * sem_open.c (sem_open): Rewrite initialization of initsem to
+ avoid warnings.
+
+ * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
+ Avoid warning by using may_alias attribute on ptrhack.
+
+2009-04-22 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #10090]
+ * pthread_attr_setschedparam.c (__pthread_attr_setschedparam):
+ Check policy and priority for validity.
+ Patch mostly by Zhang Xiliang <zhangxiliang@cn.fujitsu.com>.
+
+2009-03-15 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+ (__pthread_cond_timedwait): Change to use cfi directives instead of
+ hand-coded unwind sections.
+
+2009-03-10 Ulrich Drepper <drepper@redhat.com>
+
+ * init.c (nptl_freeres): Compile only for SHARED.
+
+2009-03-09 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Define
+ FUTEX_WAIT_BITSET, FUTEX_WAKE_BITSET, FUTEX_CLOCK_REALTIME and
+ FUTEX_BITSET_MATCH_ANY.
+
+2009-02-27 Roland McGrath <roland@redhat.com>
+
+ * init.c (__nptl_initial_report_events): Mark __attribute_used__.
+ * pthread_create.c (__nptl_threads_events, __nptl_last_event): Likewise.
+
+2009-02-26 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
+ _POSIX_THREAD_ROBUST_PRIO_INHERIT and
+ _POSIX_THREAD_ROBUST_PRIO_PROTECT. Reset value of macros from
+ 200112L to 200809L.
+
+2009-02-25 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/pthread/pthread.h: The robust mutex functions are in
+ POSIX 2008.
+
+2009-02-24 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/bits/posix_opt.h (_BITS_POSIX_OPT_H):
+ Unify name of include protector macro.
+
+2009-02-14 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
+
+ * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Define
+ LOAD_FUTEX_WAIT_ABS even if (FUTEX_WAIT == 0).
+
+2009-01-29 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/pthread/unwind-forcedunwind.c: Encrypt all function
+ pointer variables.
+
+ * allocatestack.c (__free_stacks): Renamed from free_stacks.
+ (__free_stack_cache): Removed. Change callers to call __free_stacks.
+ * init.c (nptl_freeres): New function.
+ (pthread_functions): Initialize ptr_freeres to nptl_freeres.
+ * pthreadP.h: Don't declare __free_stack_cache. Declare __free_stacks.
+ * sysdeps/pthread/unwind-forcedunwind.c (libgcc_s_handle): New
+ variable.
+ (pthread_cancel_init): Depend in libgcc_s_handle for decision to
+ load DSO. Assign last.
+ (__unwind_freeres): New function.
+
+ * allocatestack.c (__reclaim_stacks): Reset in_flight_stack later
+ for better debugging. No need to use stack_list_add here.
+
+2009-01-14 Kaz Kojima <kkojima@rr.iij4u.or.jp>
+
+ * sysdeps/unix/sysv/linux/sh/lowlevellock.S
+ (__lll_timedlock_wait): Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME
+ instead of computing relative timeout.
+ * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Define
+ FUTEX_CLOCK_REALTIME and FUTEX_BITSET_MATCH_ANY.
+
+2009-01-25 Ulrich Drepper <drepper@redhat.com>
+
+ * pthread_mutex_lock.c (__pthread_mutex_lock): Remove unused label out.
+
+2009-01-08 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/pthread/list.h (list_add): Initialize new element first.
+ (list_add_tail): Removed.
+
+2009-01-07 Ulrich Drepper <drepper@redhat.com>
+
+ * (in_flight_stack): New variable.
+ (stack_list_del): New function. Use instead of list_del.
+ (stack_list_add): New function. Use instead of list_add when adding to
+ stack_cache and stack_used lists.
+ (__reclaim_stacks): Complete operations on stack_cache and stack_used lists
+ when the fork call interrupted another thread.
+
+2009-01-04 Ulrich Drepper <drepper@redhat.com>
+
+ * init.c (__pthread_initialize_minimal_internal): Optimize test
+ FUTEX_CLOCK_REALTIME a bit.
+
+2009-01-03 Ulrich Drepper <drepper@redhat.com>
+
+ * init.c (__pthread_initialize_minimal_internal): Cheat a bit by
+ only passing five parameters to FUTEX_WAIT_BITSET call.
+
+ * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
+ (__lll_timedlock_wait): Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME
+ instead of computing relative timeout.
+
+2009-01-02 Ulrich Drepper <drepper@redhat.com>
+
+ * init.c (__pthread_initialize_minimal_internal): Check for
+ FUTEX_CLOCK_REALTIME flag.
+ * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedlock_wait):
+ Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME instead of computing
+ relative timeout.
+
+ * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Define
+ FUTEX_CLOCK_REALTIME and FUTEX_BITSET_MATCH_ANY.
+ * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
+
+2008-12-09 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/pthread/pthread.h (pthread_cleanup_pop): Use { } as empty
+ loop body instead of ; to avoid gcc warnings.
+ (pthread_cleanup_pop_restore_np): Likewise.
+ Patch by Caolán McNamara <caolanm@redhat.com>.
+
+2008-12-09 Jakub Jelinek <jakub@redhat.com>
+
+ * pthread_mutex_lock.c (__pthread_mutex_lock): Handle only the
+ fast path here, for robust/PI/PP mutexes call
+ __pthread_mutex_lock_full. Don't use switch, instead use a series
+ of ifs according to their probability.
+ (__pthread_mutex_lock_full): New function.
+ * pthread_mutex_unlock.c: Include assert.h.
+ (__pthread_mutex_unlock_usercnt): Handle only the
+ fast path here, for robust/PI/PP mutexes call
+ __pthread_mutex_unlock_full. Don't use switch, instead use a series
+ of ifs according to their probability.
+ (__pthread_mutex_unlock_full): New function.
+ * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c
+ (__pthread_mutex_lock_full): Define.
+
+2008-12-08 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/tls.h (tcbhead_t): Add fields reserved for TM
+ implementation. Add necessary padding and.
+ * descr.h (struct pthread): Increase padding for tcbhead_t to 24
+ words.
+
+2008-12-04 Kaz Kojima <kkojima@rr.iij4u.or.jp>
+
+ * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Define FUTEX_WAIT_BITSET
+ and FUTEX_WAKE_BITSET.
+
+2008-12-02 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define FUTEX_WAIT_BITSET
+ and FUTEX_WAKE_BITSET.
+ * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
+
+2008-11-25 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/alpha, sysdeps/unix/sysv/linux/alpha:
+ Subdirectories moved to ports repository as
+ sysdeps/.../nptl subdirectories.
+
2008-11-12 Jakub Jelinek <jakub@redhat.com>
[BZ #7008]
@@ -1451,9 +1994,9 @@
* sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Include endian.h.
Split __flags into __flags, __shared, __pad1 and __pad2.
* sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Use private
- futexes if they are available.
+ futexes if they are available.
* sysdeps/unix/sysv/linux/sh/lowlevellock.S: Adjust so that change
- in libc-lowlevellock.S allow using private futexes.
+ in libc-lowlevellock.S allow using private futexes.
* sysdeps/unix/sysv/linux/sh/lowlevellock.h: Define
FUTEX_PRIVATE_FLAG. Add additional parameter to lll_futex_wait,
lll_futex_timed_wait and lll_futex_wake. Change lll_futex_wait
@@ -1461,12 +2004,12 @@
lll_private_futex_timed_wait and lll_private_futex_wake.
(lll_robust_mutex_unlock): Fix typo.
* sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Use private
- field in futex command setup.
+ field in futex command setup.
* sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Use
COND_NWAITERS_SHIFT instead of COND_CLOCK_BITS.
* sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise.
* sysdeps/unix/sysv/linux/sh/pthread_once.S: Use private futexes
- if they are available. Remove clear_once_control.
+ if they are available. Remove clear_once_control.
* sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Use private
futexes if they are available.
* sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
@@ -1477,7 +2020,7 @@
Wake only when there are waiters.
* sysdeps/unix/sysv/linux/sh/sem_wait.S: Add private futex
support. Indicate that there are waiters. Remove unnecessary
- extra cancellation test.
+ extra cancellation test.
* sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise. Removed
left-over duplication of __sem_wait_cleanup.
@@ -2191,14 +2734,14 @@
* tst-cancel25.c: New file.
2006-09-05 Jakub Jelinek <jakub@redhat.com>
- Ulrich Drepper <drepper@redhat.com>
+ Ulrich Drepper <drepper@redhat.com>
* sysdeps/pthread/gai_misc.h (GAI_MISC_NOTIFY): Don't decrement
counterp if it is already zero.
* sysdeps/pthread/aio_misc.h (AIO_MISC_NOTIFY): Likewise..
2006-03-04 Jakub Jelinek <jakub@redhat.com>
- Roland McGrath <roland@redhat.com>
+ Roland McGrath <roland@redhat.com>
* sysdeps/unix/sysv/linux/i386/lowlevellock.h
(LLL_STUB_UNWIND_INFO_START, LLL_STUB_UNWIND_INFO_END,
@@ -2212,7 +2755,7 @@
* sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S: Likewise.
2006-03-03 Jakub Jelinek <jakub@redhat.com>
- Roland McGrath <roland@redhat.com>
+ Roland McGrath <roland@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
(LLL_STUB_UNWIND_INFO_START, LLL_STUB_UNWIND_INFO_END,
@@ -2785,7 +3328,7 @@
* sysdeps/pthread/pthread.h: Adjust mutex initializers.
* sysdeps/unix/sysv/linux/i386/not-cancel.h: Define openat_not_cancel,
- openat_not_cancel_3, openat64_not_cancel, and openat64_not_cancel_3.
+ openat_not_cancel_3, openat64_not_cancel, and openat64_not_cancel_3.
2006-02-08 Jakub Jelinek <jakub@redhat.com>
@@ -3207,7 +3750,7 @@
* Makefile ($(test-modules)): Remove static pattern rule.
2005-10-14 Jakub Jelinek <jakub@redhat.com>
- Ulrich Drepper <drepper@redhat.com>
+ Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Fix stack
alignment in callback function.
@@ -3225,7 +3768,7 @@
atomic_compare_and_exchange_bool_acq.
2005-10-01 Ulrich Drepper <drepper@redhat.com>
- Jakub Jelinek <jakub@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
* descr.h: Define SETXID_BIT and SETXID_BITMASK. Adjust
CANCEL_RESTMASK.
diff --git a/nptl/Makefile b/nptl/Makefile
index 71bf5ef913..a7b53ed15d 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -1,5 +1,4 @@
-# Copyright (C) 2002,2003,2004,2005,2006,2007,2008
-# Free Software Foundation, Inc.
+# Copyright (C) 2002-2008,2009 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
@@ -28,10 +27,11 @@ extra-libs := libpthread
extra-libs-others := $(extra-libs)
install-lib-ldscripts := libpthread.so
-routines = alloca_cutoff forward libc-lowlevellock libc-cancellation
+routines = alloca_cutoff forward libc-lowlevellock libc-cancellation \
+ libc-cleanup
shared-only-routines = forward
-libpthread-routines = init vars events version \
+libpthread-routines = nptl-init vars events version \
pthread_create pthread_exit pthread_detach \
pthread_join pthread_tryjoin pthread_timedjoin \
pthread_self pthread_equal pthread_yield \
@@ -86,7 +86,7 @@ libpthread-routines = init vars events version \
pthread_barrierattr_setpshared \
pthread_key_create pthread_key_delete \
pthread_getspecific pthread_setspecific \
- pthread_sigmask pthread_kill \
+ pthread_sigmask pthread_kill pthread_sigqueue \
pthread_cancel pthread_testcancel \
pthread_setcancelstate pthread_setcanceltype \
pthread_once \
@@ -139,8 +139,8 @@ CFLAGS-pthread_atfork.c = -DNOT_IN_libc
# we have to compile some files with exception handling enabled, some
# even with asynchronous unwind tables.
-# init.c contains sigcancel_handler().
-CFLAGS-init.c = -fexceptions -fasynchronous-unwind-tables
+# nptl-init.c contains sigcancel_handler().
+CFLAGS-nptl-init.c = -fexceptions -fasynchronous-unwind-tables
# The unwind code itself,
CFLAGS-unwind.c = -fexceptions
CFLAGS-unwind-forcedunwind.c = -fexceptions -fasynchronous-unwind-tables
@@ -216,7 +216,7 @@ tests = tst-typesizes \
tst-once1 tst-once2 tst-once3 tst-once4 \
tst-key1 tst-key2 tst-key3 tst-key4 \
tst-sem1 tst-sem2 tst-sem3 tst-sem4 tst-sem5 tst-sem6 tst-sem7 \
- tst-sem8 tst-sem9 tst-sem10 tst-sem11 tst-sem12 \
+ tst-sem8 tst-sem9 tst-sem10 tst-sem11 tst-sem12 tst-sem13 \
tst-barrier1 tst-barrier2 tst-barrier3 tst-barrier4 \
tst-align tst-align2 tst-align3 \
tst-basic1 tst-basic2 tst-basic3 tst-basic4 tst-basic5 tst-basic6 \
@@ -479,6 +479,7 @@ $(objpfx)tst-fini1: $(shared-thread-library) $(objpfx)tst-fini1mod.so
ifeq (yes,$(build-shared))
$(objpfx)tst-cond11: $(common-objpfx)rt/librt.so
$(objpfx)tst-cond19: $(common-objpfx)rt/librt.so
+$(objpfx)tst-sem5: $(common-objpfx)rt/librt.so
$(objpfx)tst-cancel17: $(common-objpfx)rt/librt.so
$(objpfx)tst-cancelx17: $(common-objpfx)rt/librt.so
$(objpfx)tst-cancel18: $(common-objpfx)rt/librt.so
@@ -492,6 +493,7 @@ $(objpfx)tst-_res1: $(objpfx)tst-_res1mod2.so $(shared-thread-library)
else
$(objpfx)tst-cond11: $(common-objpfx)rt/librt.a
$(objpfx)tst-cond19: $(common-objpfx)rt/librt.a
+$(objpfx)tst-sem5: $(common-objpfx)rt/librt.a
$(objpfx)tst-cancel17: $(common-objpfx)rt/librt.a
$(objpfx)tst-cancelx17: $(common-objpfx)rt/librt.a
$(objpfx)tst-cancel18: $(common-objpfx)rt/librt.a
diff --git a/nptl/Versions b/nptl/Versions
index 54b9b9c6a5..1f2de79fd4 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -240,6 +240,15 @@ libpthread {
pthread_mutex_getprioceiling; pthread_mutex_setprioceiling;
};
+ GLIBC_2.11 {
+ pthread_sigqueue;
+ };
+
+ GLIBC_2.12 {
+ pthread_mutex_consistent; pthread_mutexattr_getrobust;
+ pthread_mutexattr_setrobust;
+ };
+
GLIBC_PRIVATE {
__pthread_initialize_minimal;
__pthread_clock_gettime; __pthread_clock_settime;
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index 9ab4d6281c..3c3585fe37 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -112,6 +112,11 @@ static LIST_HEAD (stack_cache);
/* List of the stacks in use. */
static LIST_HEAD (stack_used);
+/* We need to record what list operations we are going to do so that,
+ in case of an asynchronous interruption due to a fork() call, we
+ can correct for the work. */
+static uintptr_t in_flight_stack;
+
/* List of the threads with user provided stacks in use. No need to
initialize this, since it's done in __pthread_initialize_minimal. */
list_t __stack_user __attribute__ ((nocommon));
@@ -127,6 +132,36 @@ static unsigned int nptl_ncreated;
#define FREE_P(descr) ((descr)->tid <= 0)
+static void
+stack_list_del (list_t *elem)
+{
+ in_flight_stack = (uintptr_t) elem;
+
+ atomic_write_barrier ();
+
+ list_del (elem);
+
+ atomic_write_barrier ();
+
+ in_flight_stack = 0;
+}
+
+
+static void
+stack_list_add (list_t *elem, list_t *list)
+{
+ in_flight_stack = (uintptr_t) elem | 1;
+
+ atomic_write_barrier ();
+
+ list_add (elem, list);
+
+ atomic_write_barrier ();
+
+ in_flight_stack = 0;
+}
+
+
/* We create a double linked list of all cache entries. Double linked
because this allows removing entries from the end. */
@@ -179,10 +214,10 @@ get_cached_stack (size_t *sizep, void **memp)
}
/* Dequeue the entry. */
- list_del (&result->list);
+ stack_list_del (&result->list);
/* And add to the list of stacks in use. */
- list_add (&result->list, &stack_used);
+ stack_list_add (&result->list, &stack_used);
/* And decrease the cache size. */
stack_cache_actsize -= result->stackblock_size;
@@ -213,8 +248,8 @@ get_cached_stack (size_t *sizep, void **memp)
/* Free stacks until cache size is lower than LIMIT. */
-static void
-free_stacks (size_t limit)
+void
+__free_stacks (size_t limit)
{
/* We reduce the size of the cache. Remove the last entries until
the size is below the limit. */
@@ -230,7 +265,7 @@ free_stacks (size_t limit)
if (FREE_P (curr))
{
/* Unlink the block. */
- list_del (entry);
+ stack_list_del (entry);
/* Account for the freed memory. */
stack_cache_actsize -= curr->stackblock_size;
@@ -260,19 +295,11 @@ queue_stack (struct pthread *stack)
/* We unconditionally add the stack to the list. The memory may
still be in use but it will not be reused until the kernel marks
the stack as not used anymore. */
- list_add (&stack->list, &stack_cache);
+ stack_list_add (&stack->list, &stack_cache);
stack_cache_actsize += stack->stackblock_size;
if (__builtin_expect (stack_cache_actsize > stack_cache_maxsize, 0))
- free_stacks (stack_cache_maxsize);
-}
-
-
-/* This function is called indirectly from the freeres code in libc. */
-void
-__free_stack_cache (void)
-{
- free_stacks (0);
+ __free_stacks (stack_cache_maxsize);
}
@@ -547,7 +574,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
lll_lock (stack_cache_lock, LLL_PRIVATE);
/* And add to the list of stacks in use. */
- list_add (&pd->list, &stack_used);
+ stack_list_add (&pd->list, &stack_used);
lll_unlock (stack_cache_lock, LLL_PRIVATE);
@@ -601,7 +628,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
lll_lock (stack_cache_lock, LLL_PRIVATE);
/* Remove the thread from the list. */
- list_del (&pd->list);
+ stack_list_del (&pd->list);
lll_unlock (stack_cache_lock, LLL_PRIVATE);
@@ -703,7 +730,7 @@ __deallocate_stack (struct pthread *pd)
/* Remove the thread from the list of threads with user defined
stacks. */
- list_del (&pd->list);
+ stack_list_del (&pd->list);
/* Not much to do. Just free the mmap()ed memory. Note that we do
not reset the 'used' flag in the 'tid' field. This is done by
@@ -776,7 +803,45 @@ __reclaim_stacks (void)
{
struct pthread *self = (struct pthread *) THREAD_SELF;
- /* No locking necessary. The caller is the only stack in use. */
+ /* No locking necessary. The caller is the only stack in use. But
+ we have to be aware that we might have interrupted a list
+ operation. */
+
+ if (in_flight_stack != 0)
+ {
+ bool add_p = in_flight_stack & 1;
+ list_t *elem = (list_t *) (in_flight_stack & ~UINTMAX_C (1));
+
+ if (add_p)
+ {
+ /* We always add at the beginning of the list. So in this
+ case we only need to check the beginning of these lists. */
+ int check_list (list_t *l)
+ {
+ if (l->next->prev != l)
+ {
+ assert (l->next->prev == elem);
+
+ elem->next = l->next;
+ elem->prev = l;
+ l->next = elem;
+
+ return 1;
+ }
+
+ return 0;
+ }
+
+ if (check_list (&stack_used) == 0)
+ (void) check_list (&stack_cache);
+ }
+ else
+ {
+ /* We can simply always replay the delete operation. */
+ elem->next->prev = elem->prev;
+ elem->prev->next = elem->next;
+ }
+ }
/* Mark all stacks except the still running one as free. */
list_t *runp;
@@ -829,7 +894,7 @@ __reclaim_stacks (void)
/* Remove the entry for the current thread to from the cache list
and add it to the list of running threads. Which of the two
lists is decided by the user_stack flag. */
- list_del (&self->list);
+ stack_list_del (&self->list);
/* Re-initialize the lists for all the threads. */
INIT_LIST_HEAD (&stack_used);
@@ -843,6 +908,8 @@ __reclaim_stacks (void)
/* There is one thread running. */
__nptl_nthreads = 1;
+ in_flight_stack = 0;
+
/* Initialize the lock. */
stack_cache_lock = LLL_LOCK_INITIALIZER;
}
@@ -898,22 +965,53 @@ __find_thread_by_id (pid_t tid)
static void
internal_function
-setxid_signal_thread (struct xid_command *cmdp, struct pthread *t)
+setxid_mark_thread (struct xid_command *cmdp, struct pthread *t)
{
- if (! IS_DETACHED (t))
+ int ch;
+
+ /* Don't let the thread exit before the setxid handler runs. */
+ t->setxid_futex = 0;
+
+ do
{
- int ch;
- do
- {
- ch = t->cancelhandling;
+ ch = t->cancelhandling;
- /* If the thread is exiting right now, ignore it. */
- if ((ch & EXITING_BITMASK) != 0)
- return;
- }
- while (atomic_compare_and_exchange_bool_acq (&t->cancelhandling,
- ch | SETXID_BITMASK, ch));
+ /* If the thread is exiting right now, ignore it. */
+ if ((ch & EXITING_BITMASK) != 0)
+ return;
+ }
+ while (atomic_compare_and_exchange_bool_acq (&t->cancelhandling,
+ ch | SETXID_BITMASK, ch));
+}
+
+
+static void
+internal_function
+setxid_unmark_thread (struct xid_command *cmdp, struct pthread *t)
+{
+ int ch;
+
+ do
+ {
+ ch = t->cancelhandling;
+ if ((ch & SETXID_BITMASK) == 0)
+ return;
}
+ while (atomic_compare_and_exchange_bool_acq (&t->cancelhandling,
+ ch & ~SETXID_BITMASK, ch));
+
+ /* Release the futex just in case. */
+ t->setxid_futex = 1;
+ lll_futex_wake (&t->setxid_futex, 1, LLL_PRIVATE);
+}
+
+
+static int
+internal_function
+setxid_signal_thread (struct xid_command *cmdp, struct pthread *t)
+{
+ if ((t->cancelhandling & SETXID_BITMASK) == 0)
+ return 0;
int val;
INTERNAL_SYSCALL_DECL (err);
@@ -930,8 +1028,14 @@ setxid_signal_thread (struct xid_command *cmdp, struct pthread *t)
val = INTERNAL_SYSCALL (tkill, err, 2, t->tid, SIGSETXID);
#endif
+ /* If this failed, it must have had not started yet or else exited. */
if (!INTERNAL_SYSCALL_ERROR_P (val, err))
- atomic_increment (&cmdp->cntr);
+ {
+ atomic_increment (&cmdp->cntr);
+ return 1;
+ }
+ else
+ return 0;
}
@@ -939,6 +1043,7 @@ int
attribute_hidden
__nptl_setxid (struct xid_command *cmdp)
{
+ int signalled;
int result;
lll_lock (stack_cache_lock, LLL_PRIVATE);
@@ -955,7 +1060,7 @@ __nptl_setxid (struct xid_command *cmdp)
if (t == self)
continue;
- setxid_signal_thread (cmdp, t);
+ setxid_mark_thread (cmdp, t);
}
/* Now the list with threads using user-allocated stacks. */
@@ -965,14 +1070,61 @@ __nptl_setxid (struct xid_command *cmdp)
if (t == self)
continue;
- setxid_signal_thread (cmdp, t);
+ setxid_mark_thread (cmdp, t);
+ }
+
+ /* Iterate until we don't succeed in signalling anyone. That means
+ we have gotten all running threads, and their children will be
+ automatically correct once started. */
+ do
+ {
+ signalled = 0;
+
+ list_for_each (runp, &stack_used)
+ {
+ struct pthread *t = list_entry (runp, struct pthread, list);
+ if (t == self)
+ continue;
+
+ signalled += setxid_signal_thread (cmdp, t);
+ }
+
+ list_for_each (runp, &__stack_user)
+ {
+ struct pthread *t = list_entry (runp, struct pthread, list);
+ if (t == self)
+ continue;
+
+ signalled += setxid_signal_thread (cmdp, t);
+ }
+
+ int cur = cmdp->cntr;
+ while (cur != 0)
+ {
+ lll_futex_wait (&cmdp->cntr, cur, LLL_PRIVATE);
+ cur = cmdp->cntr;
+ }
+ }
+ while (signalled != 0);
+
+ /* Clean up flags, so that no thread blocks during exit waiting
+ for a signal which will never come. */
+ list_for_each (runp, &stack_used)
+ {
+ struct pthread *t = list_entry (runp, struct pthread, list);
+ if (t == self)
+ continue;
+
+ setxid_unmark_thread (cmdp, t);
}
- int cur = cmdp->cntr;
- while (cur != 0)
+ list_for_each (runp, &__stack_user)
{
- lll_futex_wait (&cmdp->cntr, cur, LLL_PRIVATE);
- cur = cmdp->cntr;
+ struct pthread *t = list_entry (runp, struct pthread, list);
+ if (t == self)
+ continue;
+
+ setxid_unmark_thread (cmdp, t);
}
/* This must be last, otherwise the current thread might not have
diff --git a/nptl/cancellation.c b/nptl/cancellation.c
index 1d28d383f9..eac7973db7 100644
--- a/nptl/cancellation.c
+++ b/nptl/cancellation.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -70,14 +70,13 @@ __pthread_disable_asynccancel (int oldtype)
return;
struct pthread *self = THREAD_SELF;
+ int newval;
+
int oldval = THREAD_GETMEM (self, cancelhandling);
while (1)
{
- int newval = oldval & ~CANCELTYPE_BITMASK;
-
- if (newval == oldval)
- break;
+ newval = oldval & ~CANCELTYPE_BITMASK;
int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling, newval,
oldval);
@@ -87,4 +86,15 @@ __pthread_disable_asynccancel (int oldtype)
/* Prepare the next round. */
oldval = curval;
}
+
+ /* We cannot return when we are being canceled. Upon return the
+ thread might be things which would have to be undone. The
+ following loop should loop until the cancellation signal is
+ delivered. */
+ while (__builtin_expect ((newval & (CANCELING_BITMASK | CANCELED_BITMASK))
+ == CANCELING_BITMASK, 0))
+ {
+ lll_futex_wait (&self->cancelhandling, newval, LLL_PRIVATE);
+ newval = THREAD_GETMEM (self, cancelhandling);
+ }
}
diff --git a/nptl/descr.h b/nptl/descr.h
index 3c00e1418c..9c366e7400 100644
--- a/nptl/descr.h
+++ b/nptl/descr.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -143,7 +143,7 @@ struct pthread
is private and subject to change without affecting the official ABI.
We just have it here in case it might be convenient for some
implementation-specific instrumentation hack or suchlike. */
- void *__padding[16];
+ void *__padding[24];
};
/* This descriptor's link on the `stack_used' or `__stack_user' list. */
@@ -243,25 +243,25 @@ struct pthread
int cancelhandling;
/* Bit set if cancellation is disabled. */
#define CANCELSTATE_BIT 0
-#define CANCELSTATE_BITMASK 0x01
+#define CANCELSTATE_BITMASK (0x01 << CANCELSTATE_BIT)
/* Bit set if asynchronous cancellation mode is selected. */
#define CANCELTYPE_BIT 1
-#define CANCELTYPE_BITMASK 0x02
+#define CANCELTYPE_BITMASK (0x01 << CANCELTYPE_BIT)
/* Bit set if canceling has been initiated. */
#define CANCELING_BIT 2
-#define CANCELING_BITMASK 0x04
+#define CANCELING_BITMASK (0x01 << CANCELING_BIT)
/* Bit set if canceled. */
#define CANCELED_BIT 3
-#define CANCELED_BITMASK 0x08
+#define CANCELED_BITMASK (0x01 << CANCELED_BIT)
/* Bit set if thread is exiting. */
#define EXITING_BIT 4
-#define EXITING_BITMASK 0x10
+#define EXITING_BITMASK (0x01 << EXITING_BIT)
/* Bit set if thread terminated and TCB is freed. */
#define TERMINATED_BIT 5
-#define TERMINATED_BITMASK 0x20
+#define TERMINATED_BITMASK (0x01 << TERMINATED_BIT)
/* Bit set if thread is supposed to change XID. */
#define SETXID_BIT 6
-#define SETXID_BITMASK 0x40
+#define SETXID_BITMASK (0x01 << SETXID_BIT)
/* Mask for the rest. Helps the compiler to optimize. */
#define CANCEL_RESTMASK 0xffffff80
diff --git a/nptl/libc-cancellation.c b/nptl/libc-cancellation.c
index b88a32fefd..308be382d1 100644
--- a/nptl/libc-cancellation.c
+++ b/nptl/libc-cancellation.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -17,100 +17,9 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <setjmp.h>
-#include <stdlib.h>
#include "pthreadP.h"
-#include <atomic.h>
-#include <bits/libc-lock.h>
-#ifndef NOT_IN_libc
-
-/* The next two functions are similar to pthread_setcanceltype() but
- more specialized for the use in the cancelable functions like write().
- They do not need to check parameters etc. */
-int
-attribute_hidden
-__libc_enable_asynccancel (void)
-{
- struct pthread *self = THREAD_SELF;
- int oldval = THREAD_GETMEM (self, cancelhandling);
-
- while (1)
- {
- int newval = oldval | CANCELTYPE_BITMASK;
-
- if (__builtin_expect ((oldval & CANCELED_BITMASK) != 0, 0))
- {
- /* If we are already exiting or if PTHREAD_CANCEL_DISABLED,
- stop right here. */
- if ((oldval & (EXITING_BITMASK | CANCELSTATE_BITMASK)) != 0)
- break;
-
- int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling,
- newval, oldval);
- if (__builtin_expect (curval != oldval, 0))
- {
- /* Somebody else modified the word, try again. */
- oldval = curval;
- continue;
- }
-
- THREAD_SETMEM (self, result, PTHREAD_CANCELED);
-
- __do_cancel ();
-
- /* NOTREACHED */
- }
-
- int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling, newval,
- oldval);
- if (__builtin_expect (curval == oldval, 1))
- break;
-
- /* Prepare the next round. */
- oldval = curval;
- }
-
- return oldval;
-}
-
-
-void
-internal_function attribute_hidden
-__libc_disable_asynccancel (int oldtype)
-{
- /* If asynchronous cancellation was enabled before we do not have
- anything to do. */
- if (oldtype & CANCELTYPE_BITMASK)
- return;
-
- struct pthread *self = THREAD_SELF;
- int oldval = THREAD_GETMEM (self, cancelhandling);
-
- while (1)
- {
- int newval = oldval & ~CANCELTYPE_BITMASK;
-
- if (newval == oldval)
- break;
-
- int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling, newval,
- oldval);
- if (__builtin_expect (curval == oldval, 1))
- break;
-
- /* Prepare the next round. */
- oldval = curval;
- }
-}
-
-
-void
-__libc_cleanup_routine (struct __pthread_cleanup_frame *f)
-{
- if (f->__do_it)
- f->__cancel_routine (f->__cancel_arg);
-}
-
-#endif
+#define __pthread_enable_asynccancel __libc_enable_asynccancel
+#define __pthread_disable_asynccancel __libc_disable_asynccancel
+#include <nptl/cancellation.c>
diff --git a/sysdeps/alpha/stackinfo.h b/nptl/libc-cleanup.c
index 0a281bd435..0256d09563 100644
--- a/sysdeps/alpha/stackinfo.h
+++ b/nptl/libc-cleanup.c
@@ -1,5 +1,6 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -16,13 +17,12 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-/* This file contains a bit of information about the stack allocation
- of the processor. */
+#include "pthreadP.h"
-#ifndef _STACKINFO_H
-#define _STACKINFO_H 1
-/* On Alpha the stack grows down. */
-#define _STACK_GROWS_DOWN 1
-
-#endif /* stackinfo.h */
+void
+__libc_cleanup_routine (struct __pthread_cleanup_frame *f)
+{
+ if (f->__do_it)
+ f->__cancel_routine (f->__cancel_arg);
+}
diff --git a/nptl/init.c b/nptl/nptl-init.c
index d445de0795..851bab2bf1 100644
--- a/nptl/init.c
+++ b/nptl/nptl-init.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -18,6 +18,7 @@
02111-1307 USA. */
#include <assert.h>
+#include <errno.h>
#include <limits.h>
#include <signal.h>
#include <stdlib.h>
@@ -49,6 +50,15 @@ int __set_robust_list_avail;
# define set_robust_list_not_avail() do { } while (0)
#endif
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+/* Nonzero if we do not have FUTEX_CLOCK_REALTIME. */
+int __have_futex_clock_realtime;
+# define __set_futex_clock_realtime() \
+ __have_futex_clock_realtime = 1
+#else
+#define __set_futex_clock_realtime() do { } while (0)
+#endif
+
/* Version of the library, used in libthread_db to detect mismatches. */
static const char nptl_version[] __attribute_used__ = VERSION;
@@ -57,8 +67,10 @@ static const char nptl_version[] __attribute_used__ = VERSION;
extern void __libc_setup_tls (size_t tcbsize, size_t tcbalign);
#endif
-
#ifdef SHARED
+static void nptl_freeres (void);
+
+
static const struct pthread_functions pthread_functions =
{
.ptr_pthread_attr_destroy = __pthread_attr_destroy,
@@ -118,7 +130,7 @@ static const struct pthread_functions pthread_functions =
.ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd,
.ptr__nptl_setxid = __nptl_setxid,
/* For now only the stack cache needs to be freed. */
- .ptr_freeres = __free_stack_cache
+ .ptr_freeres = nptl_freeres
};
# define ptr_pthread_functions &pthread_functions
#else
@@ -126,6 +138,18 @@ static const struct pthread_functions pthread_functions =
#endif
+#ifdef SHARED
+/* This function is called indirectly from the freeres code in libc. */
+static void
+__libc_freeres_fn_section
+nptl_freeres (void)
+{
+ __unwind_freeres ();
+ __free_stacks (0);
+}
+#endif
+
+
/* For asynchronous cancellation we use a signal. This is the handler. */
static void
sigcancel_handler (int sig, siginfo_t *si, void *ctx)
@@ -216,17 +240,23 @@ sighandler_setxid (int sig, siginfo_t *si, void *ctx)
INTERNAL_SYSCALL_NCS (__xidcmd->syscall_no, err, 3, __xidcmd->id[0],
__xidcmd->id[1], __xidcmd->id[2]);
- if (atomic_decrement_val (&__xidcmd->cntr) == 0)
- lll_futex_wake (&__xidcmd->cntr, 1, LLL_PRIVATE);
-
/* Reset the SETXID flag. */
struct pthread *self = THREAD_SELF;
- int flags = THREAD_GETMEM (self, cancelhandling);
- THREAD_SETMEM (self, cancelhandling, flags & ~SETXID_BITMASK);
+ int flags, newval;
+ do
+ {
+ flags = THREAD_GETMEM (self, cancelhandling);
+ newval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling,
+ flags & ~SETXID_BITMASK, flags);
+ }
+ while (flags != newval);
/* And release the futex. */
self->setxid_futex = 1;
lll_futex_wake (&self->setxid_futex, 1, LLL_PRIVATE);
+
+ if (atomic_decrement_val (&__xidcmd->cntr) == 0)
+ lll_futex_wake (&__xidcmd->cntr, 1, LLL_PRIVATE);
}
@@ -236,7 +266,7 @@ extern void **__libc_dl_error_tsd (void) __attribute__ ((const));
/* This can be set by the debugger before initialization is complete. */
-static bool __nptl_initial_report_events;
+static bool __nptl_initial_report_events __attribute_used__;
void
__pthread_initialize_minimal_internal (void)
@@ -290,6 +320,28 @@ __pthread_initialize_minimal_internal (void)
if (!INTERNAL_SYSCALL_ERROR_P (word, err))
THREAD_SETMEM (pd, header.private_futex, FUTEX_PRIVATE_FLAG);
}
+
+ /* Private futexes have been introduced earlier than the
+ FUTEX_CLOCK_REALTIME flag. We don't have to run the test if we
+ know the former are not supported. This also means we know the
+ kernel will return ENOSYS for unknown operations. */
+ if (THREAD_GETMEM (pd, header.private_futex) != 0)
+#endif
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+ {
+ int word = 0;
+ /* NB: the syscall actually takes six parameters. The last is the
+ bit mask. But since we will not actually wait at all the value
+ is irrelevant. Given that passing six parameters is difficult
+ on some architectures we just pass whatever random value the
+ calling convention calls for to the kernel. It causes no harm. */
+ word = INTERNAL_SYSCALL (futex, err, 5, &word,
+ FUTEX_WAIT_BITSET | FUTEX_CLOCK_REALTIME
+ | FUTEX_PRIVATE_FLAG, 1, NULL, 0);
+ assert (INTERNAL_SYSCALL_ERROR_P (word, err));
+ if (INTERNAL_SYSCALL_ERRNO (word, err) != ENOSYS)
+ __set_futex_clock_realtime ();
+ }
#endif
/* Set initial thread's stack block from 0 up to __libc_stack_end.
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 17b6492ad8..43ca44c829 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -247,6 +247,7 @@ hidden_proto (__pthread_register_cancel)
hidden_proto (__pthread_unregister_cancel)
# ifdef SHARED
extern void attribute_hidden pthread_cancel_init (void);
+extern void __unwind_freeres (void);
# endif
#endif
@@ -417,6 +418,8 @@ extern int __pthread_mutex_lock_internal (pthread_mutex_t *__mutex)
attribute_hidden;
extern int __pthread_mutex_cond_lock (pthread_mutex_t *__mutex)
attribute_hidden internal_function;
+extern void __pthread_mutex_cond_lock_adjust (pthread_mutex_t *__mutex)
+ attribute_hidden internal_function;
extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex);
extern int __pthread_mutex_unlock_internal (pthread_mutex_t *__mutex)
attribute_hidden;
@@ -564,7 +567,7 @@ extern void __nptl_deallocate_tsd (void) attribute_hidden;
extern int __nptl_setxid (struct xid_command *cmdp) attribute_hidden;
-extern void __free_stack_cache (void) attribute_hidden;
+extern void __free_stacks (size_t limit) attribute_hidden;
extern void __wait_lookup_done (void) attribute_hidden;
diff --git a/nptl/pthread_attr_setschedparam.c b/nptl/pthread_attr_setschedparam.c
index 976ad13873..b4d4bbe055 100644
--- a/nptl/pthread_attr_setschedparam.c
+++ b/nptl/pthread_attr_setschedparam.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2004, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -31,6 +31,12 @@ __pthread_attr_setschedparam (attr, param)
assert (sizeof (*attr) >= sizeof (struct pthread_attr));
struct pthread_attr *iattr = (struct pthread_attr *) attr;
+ int min = sched_get_priority_min (iattr->schedpolicy);
+ int max = sched_get_priority_max (iattr->schedpolicy);
+ if (min == -1 || max == -1
+ || param->sched_priority > max || param->sched_priority < min)
+ return EINVAL;
+
/* Copy the new values. */
memcpy (&iattr->schedparam, param, sizeof (struct sched_param));
diff --git a/nptl/pthread_cancel.c b/nptl/pthread_cancel.c
index a13af56b37..55bb0da922 100644
--- a/nptl/pthread_cancel.c
+++ b/nptl/pthread_cancel.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -44,6 +44,7 @@ pthread_cancel (th)
int newval;
do
{
+ again:
oldval = pd->cancelhandling;
newval = oldval | CANCELING_BITMASK | CANCELED_BITMASK;
@@ -59,7 +60,10 @@ pthread_cancel (th)
if (CANCEL_ENABLED_AND_CANCELED_AND_ASYNCHRONOUS (newval))
{
/* Mark the cancellation as "in progress". */
- atomic_bit_set (&pd->cancelhandling, CANCELING_BIT);
+ if (atomic_compare_and_exchange_bool_acq (&pd->cancelhandling,
+ oldval | CANCELING_BITMASK,
+ oldval))
+ goto again;
/* The cancellation handler will take care of marking the
thread as canceled. */
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index 5fcc72cfbc..89938b3fb8 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2007,2008,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -40,10 +40,10 @@ static int start_thread (void *arg);
int __pthread_debug;
/* Globally enabled events. */
-static td_thr_events_t __nptl_threads_events;
+static td_thr_events_t __nptl_threads_events __attribute_used__;
/* Pointer to descriptor with the last event. */
-static struct pthread *__nptl_last_event;
+static struct pthread *__nptl_last_event __attribute_used__;
/* Number of threads running. */
unsigned int __nptl_nthreads = 1;
@@ -377,6 +377,19 @@ start_thread (void *arg)
}
#endif
+ /* Mark the memory of the stack as usable to the kernel. We free
+ everything except for the space used for the TCB itself. */
+ size_t pagesize_m1 = __getpagesize () - 1;
+#ifdef _STACK_GROWS_DOWN
+ char *sp = CURRENT_STACK_FRAME;
+ size_t freesize = (sp - (char *) pd->stackblock) & ~pagesize_m1;
+#else
+# error "to do"
+#endif
+ assert (freesize < pd->stackblock_size);
+ if (freesize > PTHREAD_STACK_MIN)
+ madvise (pd->stackblock, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED);
+
/* If the thread is detached free the TCB. */
if (IS_DETACHED (pd))
/* Free the TCB. */
diff --git a/nptl/pthread_mutex_consistent.c b/nptl/pthread_mutex_consistent.c
index d4f287b755..9ca3e1397e 100644
--- a/nptl/pthread_mutex_consistent.c
+++ b/nptl/pthread_mutex_consistent.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2005.
@@ -22,7 +22,7 @@
int
-pthread_mutex_consistent_np (mutex)
+pthread_mutex_consistent (mutex)
pthread_mutex_t *mutex;
{
/* Test whether this is a robust mutex with a dead owner. */
@@ -34,3 +34,4 @@ pthread_mutex_consistent_np (mutex)
return 0;
}
+weak_alias (pthread_mutex_consistent, pthread_mutex_consistent_np)
diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c
index 3eb5636955..50dc18803d 100644
--- a/nptl/pthread_mutex_lock.c
+++ b/nptl/pthread_mutex_lock.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -37,21 +37,34 @@
#endif
+static int __pthread_mutex_lock_full (pthread_mutex_t *mutex)
+ __attribute_noinline__;
+
+
int
__pthread_mutex_lock (mutex)
pthread_mutex_t *mutex;
{
assert (sizeof (mutex->__size) >= sizeof (mutex->__data));
- int oldval;
+ unsigned int type = PTHREAD_MUTEX_TYPE (mutex);
+ if (__builtin_expect (type & ~PTHREAD_MUTEX_KIND_MASK_NP, 0))
+ return __pthread_mutex_lock_full (mutex);
+
pid_t id = THREAD_GETMEM (THREAD_SELF, tid);
- int retval = 0;
- switch (__builtin_expect (PTHREAD_MUTEX_TYPE (mutex),
- PTHREAD_MUTEX_TIMED_NP))
+ if (__builtin_expect (type, PTHREAD_MUTEX_TIMED_NP)
+ == PTHREAD_MUTEX_TIMED_NP)
+ {
+ simple:
+ /* Normal mutex. */
+ LLL_MUTEX_LOCK (mutex);
+ assert (mutex->__data.__owner == 0);
+ }
+ else if (__builtin_expect (type == PTHREAD_MUTEX_RECURSIVE_NP, 1))
{
/* Recursive mutex. */
- case PTHREAD_MUTEX_RECURSIVE_NP:
+
/* Check whether we already hold the mutex. */
if (mutex->__data.__owner == id)
{
@@ -70,24 +83,9 @@ __pthread_mutex_lock (mutex)
assert (mutex->__data.__owner == 0);
mutex->__data.__count = 1;
- break;
-
- /* Error checking mutex. */
- case PTHREAD_MUTEX_ERRORCHECK_NP:
- /* Check whether we already hold the mutex. */
- if (__builtin_expect (mutex->__data.__owner == id, 0))
- return EDEADLK;
-
- /* FALLTHROUGH */
-
- case PTHREAD_MUTEX_TIMED_NP:
- simple:
- /* Normal mutex. */
- LLL_MUTEX_LOCK (mutex);
- assert (mutex->__data.__owner == 0);
- break;
-
- case PTHREAD_MUTEX_ADAPTIVE_NP:
+ }
+ else if (__builtin_expect (type == PTHREAD_MUTEX_ADAPTIVE_NP, 1))
+ {
if (! __is_smp)
goto simple;
@@ -113,8 +111,33 @@ __pthread_mutex_lock (mutex)
mutex->__data.__spins += (cnt - mutex->__data.__spins) / 8;
}
assert (mutex->__data.__owner == 0);
- break;
+ }
+ else
+ {
+ assert (type == PTHREAD_MUTEX_ERRORCHECK_NP);
+ /* Check whether we already hold the mutex. */
+ if (__builtin_expect (mutex->__data.__owner == id, 0))
+ return EDEADLK;
+ goto simple;
+ }
+ /* Record the ownership. */
+ mutex->__data.__owner = id;
+#ifndef NO_INCR
+ ++mutex->__data.__nusers;
+#endif
+
+ return 0;
+}
+
+static int
+__pthread_mutex_lock_full (pthread_mutex_t *mutex)
+{
+ int oldval;
+ pid_t id = THREAD_GETMEM (THREAD_SELF, tid);
+
+ switch (PTHREAD_MUTEX_TYPE (mutex))
+ {
case PTHREAD_MUTEX_ROBUST_RECURSIVE_NP:
case PTHREAD_MUTEX_ROBUST_ERRORCHECK_NP:
case PTHREAD_MUTEX_ROBUST_NORMAL_NP:
@@ -332,8 +355,7 @@ __pthread_mutex_lock (mutex)
INTERNAL_SYSCALL_DECL (__err);
INTERNAL_SYSCALL (futex, __err, 4, &mutex->__data.__lock,
__lll_private_flag (FUTEX_UNLOCK_PI,
- PTHREAD_ROBUST_MUTEX_PSHARED (mutex)
-),
+ PTHREAD_ROBUST_MUTEX_PSHARED (mutex)),
0, 0);
THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
@@ -390,7 +412,7 @@ __pthread_mutex_lock (mutex)
return EINVAL;
}
- retval = __pthread_tpp_change_priority (oldprio, ceiling);
+ int retval = __pthread_tpp_change_priority (oldprio, ceiling);
if (retval)
return retval;
@@ -445,9 +467,28 @@ __pthread_mutex_lock (mutex)
++mutex->__data.__nusers;
#endif
- return retval;
+ return 0;
}
#ifndef __pthread_mutex_lock
strong_alias (__pthread_mutex_lock, pthread_mutex_lock)
strong_alias (__pthread_mutex_lock, __pthread_mutex_lock_internal)
#endif
+
+
+#ifdef NO_INCR
+void
+__pthread_mutex_cond_lock_adjust (mutex)
+ pthread_mutex_t *mutex;
+{
+ assert ((mutex->__data.__kind & PTHREAD_MUTEX_PRIO_INHERIT_NP) != 0);
+ assert ((mutex->__data.__kind & PTHREAD_MUTEX_ROBUST_NORMAL_NP) == 0);
+ assert ((mutex->__data.__kind & PTHREAD_MUTEX_PSHARED_BIT) == 0);
+
+ /* Record the ownership. */
+ pid_t id = THREAD_GETMEM (THREAD_SELF, tid);
+ mutex->__data.__owner = id;
+
+ if (mutex->__data.__kind == PTHREAD_MUTEX_PI_RECURSIVE_NP)
+ ++mutex->__data.__count;
+}
+#endif
diff --git a/nptl/pthread_mutex_unlock.c b/nptl/pthread_mutex_unlock.c
index a14c43ece7..f9fe10b0f2 100644
--- a/nptl/pthread_mutex_unlock.c
+++ b/nptl/pthread_mutex_unlock.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005-2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -17,11 +17,16 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <assert.h>
#include <errno.h>
#include <stdlib.h>
#include "pthreadP.h"
#include <lowlevellock.h>
+static int
+internal_function
+__pthread_mutex_unlock_full (pthread_mutex_t *mutex, int decr)
+ __attribute_noinline__;
int
internal_function attribute_hidden
@@ -29,12 +34,26 @@ __pthread_mutex_unlock_usercnt (mutex, decr)
pthread_mutex_t *mutex;
int decr;
{
- int newowner = 0;
+ int type = PTHREAD_MUTEX_TYPE (mutex);
+ if (__builtin_expect (type & ~PTHREAD_MUTEX_KIND_MASK_NP, 0))
+ return __pthread_mutex_unlock_full (mutex, decr);
+
+ if (__builtin_expect (type, PTHREAD_MUTEX_TIMED_NP)
+ == PTHREAD_MUTEX_TIMED_NP)
+ {
+ /* Always reset the owner field. */
+ normal:
+ mutex->__data.__owner = 0;
+ if (decr)
+ /* One less user. */
+ --mutex->__data.__nusers;
- switch (__builtin_expect (PTHREAD_MUTEX_TYPE (mutex),
- PTHREAD_MUTEX_TIMED_NP))
+ /* Unlock. */
+ lll_unlock (mutex->__data.__lock, PTHREAD_MUTEX_PSHARED (mutex));
+ return 0;
+ }
+ else if (__builtin_expect (type == PTHREAD_MUTEX_RECURSIVE_NP, 1))
{
- case PTHREAD_MUTEX_RECURSIVE_NP:
/* Recursive mutex. */
if (mutex->__data.__owner != THREAD_GETMEM (THREAD_SELF, tid))
return EPERM;
@@ -43,27 +62,29 @@ __pthread_mutex_unlock_usercnt (mutex, decr)
/* We still hold the mutex. */
return 0;
goto normal;
-
- case PTHREAD_MUTEX_ERRORCHECK_NP:
+ }
+ else if (__builtin_expect (type == PTHREAD_MUTEX_ADAPTIVE_NP, 1))
+ goto normal;
+ else
+ {
/* Error checking mutex. */
+ assert (type == PTHREAD_MUTEX_ERRORCHECK_NP);
if (mutex->__data.__owner != THREAD_GETMEM (THREAD_SELF, tid)
|| ! lll_islocked (mutex->__data.__lock))
return EPERM;
- /* FALLTHROUGH */
+ goto normal;
+ }
+}
- case PTHREAD_MUTEX_TIMED_NP:
- case PTHREAD_MUTEX_ADAPTIVE_NP:
- /* Always reset the owner field. */
- normal:
- mutex->__data.__owner = 0;
- if (decr)
- /* One less user. */
- --mutex->__data.__nusers;
- /* Unlock. */
- lll_unlock (mutex->__data.__lock, PTHREAD_MUTEX_PSHARED (mutex));
- break;
+static int
+internal_function
+__pthread_mutex_unlock_full (pthread_mutex_t *mutex, int decr)
+{
+ int newowner = 0;
+ switch (PTHREAD_MUTEX_TYPE (mutex))
+ {
case PTHREAD_MUTEX_ROBUST_RECURSIVE_NP:
/* Recursive mutex. */
if ((mutex->__data.__lock & FUTEX_TID_MASK)
@@ -129,7 +150,7 @@ __pthread_mutex_unlock_usercnt (mutex, decr)
if (--mutex->__data.__count != 0)
/* We still hold the mutex. */
return 0;
- goto continue_pi;
+ goto continue_pi_non_robust;
case PTHREAD_MUTEX_PI_ROBUST_RECURSIVE_NP:
/* Recursive mutex. */
@@ -152,7 +173,7 @@ __pthread_mutex_unlock_usercnt (mutex, decr)
/* We still hold the mutex. */
return 0;
- goto continue_pi;
+ goto continue_pi_robust;
case PTHREAD_MUTEX_PI_ERRORCHECK_NP:
case PTHREAD_MUTEX_PI_NORMAL_NP:
@@ -174,9 +195,9 @@ __pthread_mutex_unlock_usercnt (mutex, decr)
pi_notrecoverable:
newowner = PTHREAD_MUTEX_NOTRECOVERABLE;
- continue_pi:
if ((mutex->__data.__kind & PTHREAD_MUTEX_ROBUST_NORMAL_NP) != 0)
{
+ continue_pi_robust:
/* Remove mutex from the list.
Note: robust PI futexes are signaled by setting bit 0. */
THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
@@ -185,6 +206,7 @@ __pthread_mutex_unlock_usercnt (mutex, decr)
DEQUEUE_MUTEX (mutex);
}
+ continue_pi_non_robust:
mutex->__data.__owner = newowner;
if (decr)
/* One less user. */
@@ -192,7 +214,7 @@ __pthread_mutex_unlock_usercnt (mutex, decr)
/* Unlock. */
if ((mutex->__data.__lock & FUTEX_WAITERS) != 0
- || atomic_compare_and_exchange_bool_acq (&mutex->__data.__lock, 0,
+ || atomic_compare_and_exchange_bool_rel (&mutex->__data.__lock, 0,
THREAD_GETMEM (THREAD_SELF,
tid)))
{
@@ -242,7 +264,7 @@ __pthread_mutex_unlock_usercnt (mutex, decr)
oldval = mutex->__data.__lock;
newval = oldval & PTHREAD_MUTEX_PRIO_CEILING_MASK;
}
- while (atomic_compare_and_exchange_bool_acq (&mutex->__data.__lock,
+ while (atomic_compare_and_exchange_bool_rel (&mutex->__data.__lock,
newval, oldval));
if ((oldval & ~PTHREAD_MUTEX_PRIO_CEILING_MASK) > 1)
diff --git a/nptl/pthread_mutexattr_getrobust.c b/nptl/pthread_mutexattr_getrobust.c
index 5ec43d1f7c..9e61bb0f06 100644
--- a/nptl/pthread_mutexattr_getrobust.c
+++ b/nptl/pthread_mutexattr_getrobust.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2005.
@@ -21,7 +21,7 @@
int
-pthread_mutexattr_getrobust_np (attr, robustness)
+pthread_mutexattr_getrobust (attr, robustness)
const pthread_mutexattr_t *attr;
int *robustness;
{
@@ -34,3 +34,4 @@ pthread_mutexattr_getrobust_np (attr, robustness)
return 0;
}
+weak_alias (pthread_mutexattr_getrobust, pthread_mutexattr_getrobust_np)
diff --git a/nptl/pthread_mutexattr_setrobust.c b/nptl/pthread_mutexattr_setrobust.c
index cf95e35b6f..df51ef53b0 100644
--- a/nptl/pthread_mutexattr_setrobust.c
+++ b/nptl/pthread_mutexattr_setrobust.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2005.
@@ -22,7 +22,7 @@
int
-pthread_mutexattr_setrobust_np (attr, robustness)
+pthread_mutexattr_setrobust (attr, robustness)
pthread_mutexattr_t *attr;
int robustness;
{
@@ -41,3 +41,4 @@ pthread_mutexattr_setrobust_np (attr, robustness)
return 0;
}
+weak_alias (pthread_mutexattr_setrobust, pthread_mutexattr_setrobust_np)
diff --git a/nptl/pthread_rwlock_init.c b/nptl/pthread_rwlock_init.c
index 27f25ac2ab..c0aa194107 100644
--- a/nptl/pthread_rwlock_init.c
+++ b/nptl/pthread_rwlock_init.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -37,13 +37,7 @@ __pthread_rwlock_init (rwlock, attr)
iattr = ((const struct pthread_rwlockattr *) attr) ?: &default_attr;
- rwlock->__data.__lock = 0;
- rwlock->__data.__nr_readers = 0;
- rwlock->__data.__readers_wakeup = 0;
- rwlock->__data.__writer_wakeup = 0;
- rwlock->__data.__nr_readers_queued = 0;
- rwlock->__data.__nr_writers_queued = 0;
- rwlock->__data.__writer = 0;
+ memset (rwlock, '\0', sizeof (*rwlock));
rwlock->__data.__flags
= iattr->lockkind == PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP;
@@ -56,8 +50,8 @@ __pthread_rwlock_init (rwlock, attr)
0x80 in case private futexes are available and zero otherwise.
This leads to the following table:
- | pshared | result
- | shared private | shared private |
+ | pshared | result
+ | shared private | shared private |
------------+-----------------+-----------------+
!avail 0 | 0 0 | 0 0 |
avail 0x80 | 0x80 0 | 0 0x80 |
@@ -74,9 +68,6 @@ __pthread_rwlock_init (rwlock, attr)
header.private_futex));
#endif
- rwlock->__data.__pad1 = 0;
- rwlock->__data.__pad2 = 0;
-
return 0;
}
strong_alias (__pthread_rwlock_init, pthread_rwlock_init)
diff --git a/nptl/sem_open.c b/nptl/sem_open.c
index e58dde9472..4e603491c0 100644
--- a/nptl/sem_open.c
+++ b/nptl/sem_open.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -302,15 +302,18 @@ sem_open (const char *name, int oflag, ...)
}
/* Create the initial file content. */
- sem_t initsem;
+ union
+ {
+ sem_t initsem;
+ struct new_sem newsem;
+ } sem;
- struct new_sem *iinitsem = (struct new_sem *) &initsem;
- iinitsem->value = value;
- iinitsem->private = 0;
- iinitsem->nwaiters = 0;
+ sem.newsem.value = value;
+ sem.newsem.private = 0;
+ sem.newsem.nwaiters = 0;
/* Initialize the remaining bytes as well. */
- memset ((char *) &initsem + sizeof (struct new_sem), '\0',
+ memset ((char *) &sem.initsem + sizeof (struct new_sem), '\0',
sizeof (sem_t) - sizeof (struct new_sem));
tmpfname = (char *) alloca (mountpoint.dirlen + 6 + 1);
@@ -349,7 +352,7 @@ sem_open (const char *name, int oflag, ...)
break;
}
- if (TEMP_FAILURE_RETRY (__libc_write (fd, &initsem, sizeof (sem_t)))
+ if (TEMP_FAILURE_RETRY (__libc_write (fd, &sem.initsem, sizeof (sem_t)))
== sizeof (sem_t)
/* Map the sem_t structure from the file. */
&& (result = (sem_t *) mmap (NULL, sizeof (sem_t),
diff --git a/nptl/sysdeps/alpha/elf/pt-initfini.c b/nptl/sysdeps/alpha/elf/pt-initfini.c
deleted file mode 100644
index ba2e419d61..0000000000
--- a/nptl/sysdeps/alpha/elf/pt-initfini.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Special .init and .fini section support for Alpha. NPTL version.
- Copyright (C) 2003 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* This file is compiled into assembly code which is then munged by a sed
- script into two files: crti.s and crtn.s.
-
- * 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.
-
- * crtn.s puts the corresponding function epilogues in the .init and .fini
- sections.
-
- This differs from what would be generated by the generic code in that
- we save and restore the GP within the function. In order for linker
- relaxation to work, the value in the GP register on exit from a function
- must be valid for the function entry point. Normally, a function is
- contained within one object file and this is not an issue, provided
- that the function reloads the gp after making any function calls.
- However, _init and _fini are constructed from pieces of many object
- files, all of which may have different GP values. So we must reload
- the GP value from crti.o in crtn.o. */
-
-__asm__ (" \n\
-#include \"defs.h\" \n\
- \n\
-/*@HEADER_ENDS*/ \n\
- \n\
-/*@_init_PROLOG_BEGINS*/ \n\
- .section .init, \"ax\", @progbits \n\
- .globl _init \n\
- .type _init,@function \n\
- .usepv _init,std \n\
-_init: \n\
- ldgp $29, 0($27) \n\
- subq $30, 16, $30 \n\
- stq $26, 0($30) \n\
- stq $29, 8($30) \n\
- bsr $26, __pthread_initialize_minimal_internal !samegp \n\
- .align 3 \n\
-/*@_init_PROLOG_ENDS*/ \n\
- \n\
-/*@_init_EPILOG_BEGINS*/ \n\
- .section .init, \"ax\", @progbits \n\
- ldq $26, 0($30) \n\
- ldq $29, 8($30) \n\
- addq $30, 16, $30 \n\
- ret \n\
-/*@_init_EPILOG_ENDS*/ \n\
- \n\
-/*@_fini_PROLOG_BEGINS*/ \n\
- .section .fini, \"ax\", @progbits \n\
- .globl _fini \n\
- .type _fini,@function \n\
- .usepv _fini,std \n\
-_fini: \n\
- ldgp $29, 0($27) \n\
- subq $30, 16, $30 \n\
- stq $26, 0($30) \n\
- stq $29, 8($30) \n\
- .align 3 \n\
-/*@_fini_PROLOG_ENDS*/ \n\
- \n\
-/*@_fini_EPILOG_BEGINS*/ \n\
- .section .fini, \"ax\", @progbits \n\
- ldq $26, 0($30) \n\
- ldq $29, 8($30) \n\
- addq $30, 16, $30 \n\
- ret \n\
-/*@_fini_EPILOG_ENDS*/ \n\
- \n\
-/*@TRAILER_BEGINS*/ \n\
-");
diff --git a/nptl/sysdeps/alpha/pthread_spin_lock.S b/nptl/sysdeps/alpha/pthread_spin_lock.S
deleted file mode 100644
index ce6cd41a42..0000000000
--- a/nptl/sysdeps/alpha/pthread_spin_lock.S
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@twiddle.net>, 2003.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-
- .text
- .align 4
-
- .globl pthread_spin_lock
- .ent pthread_spin_lock
-pthread_spin_lock:
- .frame $sp, 0, $26, 0
- .prologue 0
-
-0: ldl_l $1, 0($16)
- lda $2, 1
- lda $0, 0
- bne $1, 1f
-
- stl_c $2, 0($16)
- beq $2, 1f
- mb
- ret
-
-1: ldl $1, 0($16)
- bne $1, 1b
- unop
- br 0b
-
- .end pthread_spin_lock
diff --git a/nptl/sysdeps/alpha/pthread_spin_trylock.S b/nptl/sysdeps/alpha/pthread_spin_trylock.S
deleted file mode 100644
index 0948da698b..0000000000
--- a/nptl/sysdeps/alpha/pthread_spin_trylock.S
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@twiddle.net>, 2003.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-
-#define _ERRNO_H 1
-#include <bits/errno.h>
-
- .text
- .align 4
-
- .globl pthread_spin_trylock
- .ent pthread_spin_trylock
-pthread_spin_trylock:
- .frame $sp, 0, $26, 0
- .prologue 0
-
-0: ldl_l $1, 0($16)
- lda $2, 1
- lda $0, EBUSY
- bne $1, 1f
-
- stl_c $2, 0($16)
- beq $2, 2f
- mb
- lda $0, 0
-
-1: ret
-2: br 0b
-
- .end pthread_spin_trylock
diff --git a/nptl/sysdeps/alpha/pthreaddef.h b/nptl/sysdeps/alpha/pthreaddef.h
deleted file mode 100644
index 26c4daf7b3..0000000000
--- a/nptl/sysdeps/alpha/pthreaddef.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (C) 2003 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Default stack size. */
-#define ARCH_STACK_DEFAULT_SIZE (4 * 1024 * 1024)
-
-/* Required stack pointer alignment at beginning. The ABI requires 16. */
-#define STACK_ALIGN 16
-
-/* Minimal stack size after allocating thread descriptor and guard size. */
-#define MINIMAL_REST_STACK 4096
-
-/* Alignment requirement for TCB. */
-#define TCB_ALIGNMENT 16
-
-/* Location of current stack frame. */
-#define CURRENT_STACK_FRAME __builtin_frame_address (0)
-
-/* XXX Until we have a better place keep the definitions here. */
-
-/* While there is no such syscall. */
-#define __exit_thread_inline(val) \
- INLINE_SYSCALL (exit, 1, (val))
diff --git a/nptl/sysdeps/alpha/tcb-offsets.sym b/nptl/sysdeps/alpha/tcb-offsets.sym
deleted file mode 100644
index c21a791040..0000000000
--- a/nptl/sysdeps/alpha/tcb-offsets.sym
+++ /dev/null
@@ -1,14 +0,0 @@
-#include <sysdep.h>
-#include <tls.h>
-
---
-
--- Abuse tls.h macros to derive offsets relative to the thread register.
--- # define __builtin_thread_pointer() ((void *) 0)
--- # define thread_offsetof(mem) ((void *) &THREAD_SELF->mem - (void *) 0)
--- Ho hum, this doesn't work in gcc4, so Know Things about THREAD_SELF
-#define thread_offsetof(mem) (long)(offsetof(struct pthread, mem) - sizeof(struct pthread))
-
-MULTIPLE_THREADS_OFFSET thread_offsetof (header.multiple_threads)
-PID_OFFSET thread_offsetof (pid)
-TID_OFFSET thread_offsetof (tid)
diff --git a/nptl/sysdeps/alpha/tls.h b/nptl/sysdeps/alpha/tls.h
deleted file mode 100644
index e77b1ffca9..0000000000
--- a/nptl/sysdeps/alpha/tls.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/* Definition for thread-local data handling. NPTL/Alpha version.
- Copyright (C) 2003, 2005, 2006, 2007 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _TLS_H
-#define _TLS_H 1
-
-# include <dl-sysdep.h>
-
-#ifndef __ASSEMBLER__
-# include <stdbool.h>
-# include <stddef.h>
-# include <stdint.h>
-
-/* Type for the dtv. */
-typedef union dtv
-{
- size_t counter;
- struct
- {
- void *val;
- bool is_static;
- } pointer;
-} dtv_t;
-
-#else /* __ASSEMBLER__ */
-# include <tcb-offsets.h>
-#endif /* __ASSEMBLER__ */
-
-
-/* We require TLS support in the tools. */
-#ifndef HAVE_TLS_SUPPORT
-# error "TLS support is required."
-#endif
-
-#ifndef __ASSEMBLER__
-
-/* Get system call information. */
-# include <sysdep.h>
-
-/* The TP points to the start of the thread blocks. */
-# define TLS_DTV_AT_TP 1
-
-/* Get the thread descriptor definition. */
-# include <nptl/descr.h>
-
-typedef struct
-{
- dtv_t *dtv;
- void *__private;
-} tcbhead_t;
-
-/* This is the size of the initial TCB. */
-# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t)
-
-/* Alignment requirements for the initial TCB. */
-# define TLS_INIT_TCB_ALIGN 16
-
-/* This is the size of the TCB. */
-# define TLS_TCB_SIZE sizeof (tcbhead_t)
-
-/* This is the size we need before TCB. */
-# define TLS_PRE_TCB_SIZE sizeof (struct pthread)
-
-/* Alignment requirements for the TCB. */
-# define TLS_TCB_ALIGN 16
-
-/* Install the dtv pointer. The pointer passed is to the element with
- index -1 which contain the length. */
-# define INSTALL_DTV(tcbp, dtvp) \
- (((tcbhead_t *) (tcbp))->dtv = (dtvp) + 1)
-
-/* Install new dtv for current thread. */
-# define INSTALL_NEW_DTV(dtv) \
- (THREAD_DTV() = (dtv))
-
-/* Return dtv of given thread descriptor. */
-# define GET_DTV(tcbp) \
- (((tcbhead_t *) (tcbp))->dtv)
-
-/* Code to initially initialize the thread pointer. This might need
- special attention since 'errno' is not yet available and if the
- operation can cause a failure 'errno' must not be touched. */
-# define TLS_INIT_TP(tcbp, secondcall) \
- (__builtin_set_thread_pointer ((void *)(tcbp)), NULL)
-
-/* Return the address of the dtv for the current thread. */
-# define THREAD_DTV() \
- (((tcbhead_t *) __builtin_thread_pointer ())->dtv)
-
-/* Return the thread descriptor for the current thread. */
-# define THREAD_SELF \
- ((struct pthread *)__builtin_thread_pointer () - 1)
-
-/* Magic for libthread_db to know how to do THREAD_SELF. */
-# define DB_THREAD_SELF \
- REGISTER (64, 64, 32 * 8, -sizeof (struct pthread))
-
-/* Access to data in the thread descriptor is easy. */
-#define THREAD_GETMEM(descr, member) \
- descr->member
-#define THREAD_GETMEM_NC(descr, member, idx) \
- descr->member[idx]
-#define THREAD_SETMEM(descr, member, value) \
- descr->member = (value)
-#define THREAD_SETMEM_NC(descr, member, idx, value) \
- descr->member[idx] = (value)
-
-/* Get and set the global scope generation counter in struct pthread. */
-#define THREAD_GSCOPE_FLAG_UNUSED 0
-#define THREAD_GSCOPE_FLAG_USED 1
-#define THREAD_GSCOPE_FLAG_WAIT 2
-#define THREAD_GSCOPE_RESET_FLAG() \
- do \
- { int __res \
- = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \
- THREAD_GSCOPE_FLAG_UNUSED); \
- if (__res == THREAD_GSCOPE_FLAG_WAIT) \
- lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); \
- } \
- while (0)
-#define THREAD_GSCOPE_SET_FLAG() \
- do \
- { \
- THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \
- atomic_write_barrier (); \
- } \
- while (0)
-#define THREAD_GSCOPE_WAIT() \
- GL(dl_wait_lookup_done) ()
-
-#endif /* __ASSEMBLER__ */
-
-#endif /* tls.h */
diff --git a/nptl/sysdeps/i386/tls.h b/nptl/sysdeps/i386/tls.h
index b5127420cf..f23977e73f 100644
--- a/nptl/sysdeps/i386/tls.h
+++ b/nptl/sysdeps/i386/tls.h
@@ -1,5 +1,5 @@
/* Definition for thread-local data handling. nptl/i386 version.
- Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+ Copyright (C) 2002-2007, 2009 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
@@ -56,7 +56,11 @@ typedef struct
int gscope_flag;
#ifndef __ASSUME_PRIVATE_FUTEX
int private_futex;
+#else
+ int __unused1;
#endif
+ /* Reservation of some values for the TM ABI. */
+ void *__private_tm[5];
} tcbhead_t;
# define TLS_MULTIPLE_THREADS_IN_TCB 1
@@ -394,6 +398,17 @@ union user_desc_init
__ret; })
+/* Atomic logical and. */
+#define THREAD_ATOMIC_AND(descr, member, val) \
+ (void) ({ if (sizeof ((descr)->member) == 4) \
+ asm volatile (LOCK_PREFIX "andl %1, %%gs:%P0" \
+ :: "i" (offsetof (struct pthread, member)), \
+ "ir" (val)); \
+ else \
+ /* Not necessary for other sizes in the moment. */ \
+ abort (); })
+
+
/* Atomic set bit. */
#define THREAD_ATOMIC_BIT_SET(descr, member, bit) \
(void) ({ if (sizeof ((descr)->member) == 4) \
diff --git a/nptl/sysdeps/pthread/bits/libc-lock.h b/nptl/sysdeps/pthread/bits/libc-lock.h
index a597f3b5a6..0cad8aa899 100644
--- a/nptl/sysdeps/pthread/bits/libc-lock.h
+++ b/nptl/sysdeps/pthread/bits/libc-lock.h
@@ -529,7 +529,7 @@ extern int __pthread_atfork (void (*__prepare) (void),
# if _LIBC
# include <bp-sym.h>
# else
-# define BP_SYM (sym) sym
+# define BP_SYM(sym) sym
# endif
weak_extern (BP_SYM (__pthread_mutex_init))
weak_extern (BP_SYM (__pthread_mutex_destroy))
diff --git a/nptl/sysdeps/pthread/bits/sigthread.h b/nptl/sysdeps/pthread/bits/sigthread.h
index 960bde18a9..9a524e57db 100644
--- a/nptl/sysdeps/pthread/bits/sigthread.h
+++ b/nptl/sysdeps/pthread/bits/sigthread.h
@@ -1,5 +1,5 @@
/* Signal handling function for threaded programs.
- Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2002, 2009 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
@@ -35,4 +35,10 @@ extern int pthread_sigmask (int __how,
/* Send signal SIGNO to the given thread. */
extern int pthread_kill (pthread_t __threadid, int __signo) __THROW;
+#ifdef __USE_GNU
+/* Queue signal and data to a thread. */
+extern int pthread_sigqueue (pthread_t __threadid, int __signo,
+ const union sigval __value) __THROW;
+#endif
+
#endif /* bits/sigthread.h */
diff --git a/nptl/sysdeps/pthread/configure b/nptl/sysdeps/pthread/configure
index 2396dbf9bc..7768c5c741 100755..100644
--- a/nptl/sysdeps/pthread/configure
+++ b/nptl/sysdeps/pthread/configure
@@ -1,33 +1,33 @@
# This file is generated from configure.in by Autoconf. DO NOT EDIT!
if test "x$libc_cv_gcc___thread" != xyes; then
- { { echo "$as_me:$LINENO: error: compiler support for __thread is required" >&5
-echo "$as_me: error: compiler support for __thread is required" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: compiler support for __thread is required" >&5
+$as_echo "$as_me: error: compiler support for __thread is required" >&2;}
{ (exit 1); exit 1; }; }
fi
if test "x${libc_cv_visibility_attribute}" != xyes ||
test "x${libc_cv_broken_visibility_attribute}" != xno; then
- { { echo "$as_me:$LINENO: error: working compiler support for visibility attribute is required" >&5
-echo "$as_me: error: working compiler support for visibility attribute is required" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: working compiler support for visibility attribute is required" >&5
+$as_echo "$as_me: error: working compiler support for visibility attribute is required" >&2;}
{ (exit 1); exit 1; }; }
fi
if test "x$libc_cv_asm_cfi_directives" != xyes; then
case "$base_machine" in
i386 | x86_64 | powerpc | s390)
- { { echo "$as_me:$LINENO: error: CFI directive support in assembler is required" >&5
-echo "$as_me: error: CFI directive support in assembler is required" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: CFI directive support in assembler is required" >&5
+$as_echo "$as_me: error: CFI directive support in assembler is required" >&2;}
{ (exit 1); exit 1; }; } ;;
*) ;;
esac
fi
-{ echo "$as_me:$LINENO: checking for forced unwind support" >&5
-echo $ECHO_N "checking for forced unwind support... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for forced unwind support" >&5
+$as_echo_n "checking for forced unwind support... " >&6; }
if test "${libc_cv_forced_unwind+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -53,31 +53,35 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
libc_cv_forced_unwind=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
libc_cv_forced_unwind=no
fi
+rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_forced_unwind" >&5
-echo "${ECHO_T}$libc_cv_forced_unwind" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_forced_unwind" >&5
+$as_echo "$libc_cv_forced_unwind" >&6; }
if test $libc_cv_forced_unwind = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_FORCED_UNWIND 1
@@ -85,10 +89,10 @@ _ACEOF
old_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror -fexceptions"
- { echo "$as_me:$LINENO: checking for C cleanup handling" >&5
-echo $ECHO_N "checking for C cleanup handling... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for C cleanup handling" >&5
+$as_echo_n "checking for C cleanup handling... " >&6; }
if test "${libc_cv_c_cleanup+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -115,39 +119,43 @@ case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then
libc_cv_c_cleanup=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
libc_cv_c_cleanup=no
fi
+rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_c_cleanup" >&5
-echo "${ECHO_T}$libc_cv_c_cleanup" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_c_cleanup" >&5
+$as_echo "$libc_cv_c_cleanup" >&6; }
CFLAGS="$old_CFLAGS"
if test $libc_cv_c_cleanup = no; then
- { { echo "$as_me:$LINENO: error: the compiler must support C cleanup handling" >&5
-echo "$as_me: error: the compiler must support C cleanup handling" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: the compiler must support C cleanup handling" >&5
+$as_echo "$as_me: error: the compiler must support C cleanup handling" >&2;}
{ (exit 1); exit 1; }; }
fi
else
- { { echo "$as_me:$LINENO: error: forced unwind support is required" >&5
-echo "$as_me: error: forced unwind support is required" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: forced unwind support is required" >&5
+$as_echo "$as_me: error: forced unwind support is required" >&2;}
{ (exit 1); exit 1; }; }
fi
diff --git a/nptl/sysdeps/pthread/librt-cancellation.c b/nptl/sysdeps/pthread/librt-cancellation.c
index 753a2d831e..d9f7ad9ea3 100644
--- a/nptl/sysdeps/pthread/librt-cancellation.c
+++ b/nptl/sysdeps/pthread/librt-cancellation.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -17,92 +17,9 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <setjmp.h>
-#include <signal.h>
-#include <stdlib.h>
#include "pthreadP.h"
-#include "atomic.h"
-#ifdef IS_IN_librt
-/* The next two functions are similar to pthread_setcanceltype() but
- more specialized for the use in the cancelable functions like write().
- They do not need to check parameters etc. */
-int
-attribute_hidden
-__librt_enable_asynccancel (void)
-{
- struct pthread *self = THREAD_SELF;
- int oldval = THREAD_GETMEM (self, cancelhandling);
-
- while (1)
- {
- int newval = oldval | CANCELTYPE_BITMASK;
-
- if (__builtin_expect ((oldval & CANCELED_BITMASK) != 0, 0))
- {
- /* If we are already exiting or if PTHREAD_CANCEL_DISABLED,
- stop right here. */
- if ((oldval & (EXITING_BITMASK | CANCELSTATE_BITMASK)) != 0)
- break;
-
- int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling,
- newval, oldval);
- if (__builtin_expect (curval != oldval, 0))
- {
- /* Somebody else modified the word, try again. */
- oldval = curval;
- continue;
- }
-
- THREAD_SETMEM (self, result, PTHREAD_CANCELED);
-
- __do_cancel ();
-
- /* NOTREACHED */
- }
-
- int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling, newval,
- oldval);
- if (__builtin_expect (curval == oldval, 1))
- break;
-
- /* Prepare the next round. */
- oldval = curval;
- }
-
- return oldval;
-}
-
-
-void
-internal_function attribute_hidden
-__librt_disable_asynccancel (int oldtype)
-{
- /* If asynchronous cancellation was enabled before we do not have
- anything to do. */
- if (oldtype & CANCELTYPE_BITMASK)
- return;
-
- struct pthread *self = THREAD_SELF;
- int oldval = THREAD_GETMEM (self, cancelhandling);
-
- while (1)
- {
- int newval = oldval & ~CANCELTYPE_BITMASK;
-
- if (newval == oldval)
- break;
-
- int curval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling, newval,
- oldval);
- if (__builtin_expect (curval == oldval, 1))
- break;
-
- /* Prepare the next round. */
- oldval = curval;
- }
-}
-
-
-#endif
+#define __pthread_enable_asynccancel __librt_enable_asynccancel
+#define __pthread_disable_asynccancel __librt_disable_asynccancel
+#include <nptl/cancellation.c>
diff --git a/nptl/sysdeps/pthread/list.h b/nptl/sysdeps/pthread/list.h
index 43186a2d51..6ddccb9fb9 100644
--- a/nptl/sysdeps/pthread/list.h
+++ b/nptl/sysdeps/pthread/list.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -46,24 +46,13 @@ typedef struct list_head
static inline void
list_add (list_t *newp, list_t *head)
{
- head->next->prev = newp;
newp->next = head->next;
newp->prev = head;
+ head->next->prev = newp;
head->next = newp;
}
-/* Add new element at the tail of the list. */
-static inline void
-list_add_tail (list_t *newp, list_t *head)
-{
- head->prev->next = newp;
- newp->next = head;
- newp->prev = head->prev;
- head->prev = newp;
-}
-
-
/* Remove element from list. */
static inline void
list_del (list_t *elem)
diff --git a/nptl/sysdeps/pthread/pthread.h b/nptl/sysdeps/pthread/pthread.h
index d5ffd383f5..b84fd5c7a4 100644
--- a/nptl/sysdeps/pthread/pthread.h
+++ b/nptl/sysdeps/pthread/pthread.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -25,8 +25,6 @@
#include <sched.h>
#include <time.h>
-#define __need_sigset_t
-#include <signal.h>
#include <bits/pthreadtypes.h>
#include <bits/setjmp.h>
#include <bits/wordsize.h>
@@ -49,7 +47,7 @@ enum
PTHREAD_MUTEX_RECURSIVE_NP,
PTHREAD_MUTEX_ERRORCHECK_NP,
PTHREAD_MUTEX_ADAPTIVE_NP
-#ifdef __USE_UNIX98
+#if defined __USE_UNIX98 || defined __USE_XOPEN2K8
,
PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
@@ -63,12 +61,14 @@ enum
};
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K
/* Robust mutex or not flags. */
enum
{
- PTHREAD_MUTEX_STALLED_NP,
- PTHREAD_MUTEX_ROBUST_NP
+ PTHREAD_MUTEX_STALLED,
+ PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED,
+ PTHREAD_MUTEX_ROBUST,
+ PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST
};
#endif
@@ -655,7 +655,7 @@ extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf)
/* Remove a cleanup handler installed by the matching pthread_cleanup_push.
If EXECUTE is non-zero, the handler function is called. */
# define pthread_cleanup_pop(execute) \
- do; while (0); /* Empty to allow label before pthread_cleanup_pop. */ \
+ do { } while (0);/* Empty to allow label before pthread_cleanup_pop. */\
} while (0); \
__pthread_unregister_cancel (&__cancel_buf); \
if (execute) \
@@ -691,7 +691,7 @@ extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf)
restores the cancellation type that was in effect when the matching
pthread_cleanup_push_defer was called. */
# define pthread_cleanup_pop_restore_np(execute) \
- do; while (0); /* Empty to allow label before pthread_cleanup_pop. */ \
+ do { } while (0);/* Empty to allow label before pthread_cleanup_pop. */\
} while (0); \
__pthread_unregister_cancel_restore (&__cancel_buf); \
if (execute) \
@@ -737,8 +737,8 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
#ifdef __USE_XOPEN2K
/* Wait until lock becomes available, or specified time passes. */
extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
- __const struct timespec *__restrict
- __abstime) __THROW __nonnull ((1, 2));
+ __const struct timespec *__restrict
+ __abstime) __THROW __nonnull ((1, 2));
#endif
/* Unlock a mutex. */
@@ -746,7 +746,6 @@ extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
__THROW __nonnull ((1));
-#ifdef __USE_UNIX98
/* Get the priority ceiling of MUTEX. */
extern int pthread_mutex_getprioceiling (__const pthread_mutex_t *
__restrict __mutex,
@@ -759,13 +758,16 @@ extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
int __prioceiling,
int *__restrict __old_ceiling)
__THROW __nonnull ((1, 3));
-#endif
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* Declare the state protected by MUTEX as consistent. */
+extern int pthread_mutex_consistent (pthread_mutex_t *__mutex)
+ __THROW __nonnull ((1));
+# ifdef __USE_GNU
extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
__THROW __nonnull ((1));
+# endif
#endif
@@ -791,7 +793,7 @@ extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
int __pshared)
__THROW __nonnull ((1));
-#ifdef __USE_UNIX98
+#if defined __USE_UNIX98 || defined __USE_XOPEN2K8
/* Return in *KIND the mutex kind attribute in *ATTR. */
extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
__attr, int *__restrict __kind)
@@ -802,6 +804,7 @@ extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
PTHREAD_MUTEX_DEFAULT). */
extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
__THROW __nonnull ((1));
+#endif
/* Return in *PROTOCOL the mutex protocol attribute in *ATTR. */
extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t *
@@ -825,18 +828,27 @@ extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t *
extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
int __prioceiling)
__THROW __nonnull ((1));
-#endif
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K
/* Get the robustness flag of the mutex attribute ATTR. */
+extern int pthread_mutexattr_getrobust (__const pthread_mutexattr_t *__attr,
+ int *__robustness)
+ __THROW __nonnull ((1, 2));
+# ifdef __USE_GNU
extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr,
int *__robustness)
__THROW __nonnull ((1, 2));
+# endif
/* Set the robustness flag of the mutex attribute ATTR. */
+extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr,
+ int __robustness)
+ __THROW __nonnull ((1));
+# ifdef __USE_GNU
extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr,
int __robustness)
__THROW __nonnull ((1));
+# endif
#endif
@@ -974,13 +986,13 @@ extern int pthread_condattr_destroy (pthread_condattr_t *__attr)
/* Get the process-shared flag of the condition variable attribute ATTR. */
extern int pthread_condattr_getpshared (__const pthread_condattr_t *
- __restrict __attr,
- int *__restrict __pshared)
+ __restrict __attr,
+ int *__restrict __pshared)
__THROW __nonnull ((1, 2));
/* Set the process-shared flag of the condition variable attribute ATTR. */
extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
- int __pshared) __THROW __nonnull ((1));
+ int __pshared) __THROW __nonnull ((1));
#ifdef __USE_XOPEN2K
/* Get the clock selected for the conditon variable attribute ATTR. */
@@ -1055,7 +1067,7 @@ extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
/* Set the process-shared flag of the barrier attribute ATTR. */
extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
- int __pshared)
+ int __pshared)
__THROW __nonnull ((1));
#endif
diff --git a/nptl/sysdeps/pthread/unwind-forcedunwind.c b/nptl/sysdeps/pthread/unwind-forcedunwind.c
index 6792d719d3..ae43f335e7 100644
--- a/nptl/sysdeps/pthread/unwind-forcedunwind.c
+++ b/nptl/sysdeps/pthread/unwind-forcedunwind.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2005, 2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>.
@@ -21,7 +21,10 @@
#include <stdio.h>
#include <unwind.h>
#include <pthreadP.h>
+#include <sysdep.h>
+#include <libgcc_s.h>
+static void *libgcc_s_handle;
static void (*libgcc_s_resume) (struct _Unwind_Exception *exc);
static _Unwind_Reason_Code (*libgcc_s_personality)
(int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *,
@@ -34,17 +37,20 @@ void
__attribute_noinline__
pthread_cancel_init (void)
{
- void *resume, *personality, *forcedunwind, *getcfa;
+ void *resume;
+ void *personality;
+ void *forcedunwind;
+ void *getcfa;
void *handle;
- if (__builtin_expect (libgcc_s_getcfa != NULL, 1))
+ if (__builtin_expect (libgcc_s_handle != NULL, 1))
{
/* Force gcc to reload all values. */
asm volatile ("" ::: "memory");
return;
}
- handle = __libc_dlopen ("libgcc_s.so.1");
+ handle = __libc_dlopen (LIBGCC_S_SO);
if (handle == NULL
|| (resume = __libc_dlsym (handle, "_Unwind_Resume")) == NULL
@@ -56,25 +62,44 @@ pthread_cancel_init (void)
|| ARCH_CANCEL_INIT (handle)
#endif
)
- __libc_fatal ("libgcc_s.so.1 must be installed for pthread_cancel to work\n");
+ __libc_fatal (LIBGCC_S_SO " must be installed for pthread_cancel to work\n");
+ PTR_MANGLE (resume);
libgcc_s_resume = resume;
+ PTR_MANGLE (personality);
libgcc_s_personality = personality;
+ PTR_MANGLE (forcedunwind);
libgcc_s_forcedunwind = forcedunwind;
- /* Make sure libgcc_s_getcfa is written last. Otherwise,
+ PTR_MANGLE (getcfa);
+ libgcc_s_getcfa = getcfa;
+ /* Make sure libgcc_s_handle is written last. Otherwise,
pthread_cancel_init might return early even when the pointer the
caller is interested in is not initialized yet. */
atomic_write_barrier ();
- libgcc_s_getcfa = getcfa;
+ libgcc_s_handle = handle;
+}
+
+void
+__libc_freeres_fn_section
+__unwind_freeres (void)
+{
+ void *handle = libgcc_s_handle;
+ if (handle != NULL)
+ {
+ libgcc_s_handle = NULL;
+ __libc_dlclose (handle);
+ }
}
void
_Unwind_Resume (struct _Unwind_Exception *exc)
{
- if (__builtin_expect (libgcc_s_resume == NULL, 0))
+ if (__builtin_expect (libgcc_s_handle == NULL, 0))
pthread_cancel_init ();
- libgcc_s_resume (exc);
+ void (*resume) (struct _Unwind_Exception *exc) = libgcc_s_resume;
+ PTR_DEMANGLE (resume);
+ resume (exc);
}
_Unwind_Reason_Code
@@ -83,28 +108,37 @@ __gcc_personality_v0 (int version, _Unwind_Action actions,
struct _Unwind_Exception *ue_header,
struct _Unwind_Context *context)
{
- if (__builtin_expect (libgcc_s_personality == NULL, 0))
+ if (__builtin_expect (libgcc_s_handle == NULL, 0))
pthread_cancel_init ();
- return libgcc_s_personality (version, actions, exception_class,
- ue_header, context);
+ _Unwind_Reason_Code (*personality)
+ (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *,
+ struct _Unwind_Context *) = libgcc_s_personality;
+ PTR_DEMANGLE (personality);
+ return personality (version, actions, exception_class, ue_header, context);
}
_Unwind_Reason_Code
_Unwind_ForcedUnwind (struct _Unwind_Exception *exc, _Unwind_Stop_Fn stop,
void *stop_argument)
{
- if (__builtin_expect (libgcc_s_forcedunwind == NULL, 0))
+ if (__builtin_expect (libgcc_s_handle == NULL, 0))
pthread_cancel_init ();
- return libgcc_s_forcedunwind (exc, stop, stop_argument);
+ _Unwind_Reason_Code (*forcedunwind)
+ (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *)
+ = libgcc_s_forcedunwind;
+ PTR_DEMANGLE (forcedunwind);
+ return forcedunwind (exc, stop, stop_argument);
}
_Unwind_Word
_Unwind_GetCFA (struct _Unwind_Context *context)
{
- if (__builtin_expect (libgcc_s_getcfa == NULL, 0))
+ if (__builtin_expect (libgcc_s_handle == NULL, 0))
pthread_cancel_init ();
- return libgcc_s_getcfa (context);
+ _Unwind_Word (*getcfa) (struct _Unwind_Context *) = libgcc_s_getcfa;
+ PTR_DEMANGLE (getcfa);
+ return getcfa (context);
}
diff --git a/nptl/sysdeps/pthread/unwind-resume.c b/nptl/sysdeps/pthread/unwind-resume.c
index 088f4c6f6c..69f3e04c43 100644
--- a/nptl/sysdeps/pthread/unwind-resume.c
+++ b/nptl/sysdeps/pthread/unwind-resume.c
@@ -20,6 +20,7 @@
#include <dlfcn.h>
#include <stdio.h>
#include <unwind.h>
+#include <libgcc_s.h>
static void (*libgcc_s_resume) (struct _Unwind_Exception *exc);
static _Unwind_Reason_Code (*libgcc_s_personality)
@@ -32,12 +33,12 @@ init (void)
void *resume, *personality;
void *handle;
- handle = __libc_dlopen ("libgcc_s.so.1");
+ handle = __libc_dlopen (LIBGCC_S_SO);
if (handle == NULL
|| (resume = __libc_dlsym (handle, "_Unwind_Resume")) == NULL
|| (personality = __libc_dlsym (handle, "__gcc_personality_v0")) == NULL)
- __libc_fatal ("libgcc_s.so.1 must be installed for pthread_cancel to work\n");
+ __libc_fatal (LIBGCC_S_SO " must be installed for pthread_cancel to work\n");
libgcc_s_resume = resume;
libgcc_s_personality = personality;
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/Makefile b/nptl/sysdeps/unix/sysv/linux/alpha/Makefile
deleted file mode 100644
index 8c80840798..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# pull in __syscall_error routine, __sigprocmask, __syscall_rt_sigaction
-libpthread-routines += ptw-sysdep ptw-sigprocmask ptw-rt_sigaction
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/Versions b/nptl/sysdeps/unix/sysv/linux/alpha/Versions
deleted file mode 100644
index 437c4da28b..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/Versions
+++ /dev/null
@@ -1,13 +0,0 @@
-libpthread {
- GLIBC_2.3.3 {
- # Changed PTHREAD_STACK_MIN.
- pthread_attr_setstack; pthread_attr_setstacksize;
- }
-}
-librt {
- GLIBC_2.3.3 {
- # Changed timer_t.
- timer_create; timer_delete; timer_getoverrun; timer_gettime;
- timer_settime;
- }
-}
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/aio_cancel.c b/nptl/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
deleted file mode 100644
index 0d6da82919..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <shlib-compat.h>
-
-#define aio_cancel64 XXX
-#include <aio.h>
-#undef aio_cancel64
-#include <errno.h>
-
-extern __typeof (aio_cancel) __new_aio_cancel;
-extern __typeof (aio_cancel) __old_aio_cancel;
-
-#define aio_cancel __new_aio_cancel
-
-#include <sysdeps/pthread/aio_cancel.c>
-
-#undef aio_cancel
-strong_alias (__new_aio_cancel, __new_aio_cancel64);
-versioned_symbol (librt, __new_aio_cancel, aio_cancel, GLIBC_2_3);
-versioned_symbol (librt, __new_aio_cancel64, aio_cancel64, GLIBC_2_3);
-
-#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_3)
-
-#undef ECANCELED
-#define aio_cancel __old_aio_cancel
-#define ECANCELED 125
-
-#include <sysdeps/pthread/aio_cancel.c>
-
-#undef aio_cancel
-strong_alias (__old_aio_cancel, __old_aio_cancel64);
-compat_symbol (librt, __old_aio_cancel, aio_cancel, GLIBC_2_1);
-compat_symbol (librt, __old_aio_cancel64, aio_cancel64, GLIBC_2_1);
-
-#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h b/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h
deleted file mode 100644
index a7c9740a0a..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Minimum guaranteed maximum values for system limits. Linux/Alpha version.
- Copyright (C) 1993-1998,2000,2002-2004,2008 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 Library General Public License as
- published by the Free Software Foundation; either version 2 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* The kernel header pollutes the namespace with the NR_OPEN symbol
- and defines LINK_MAX although filesystems have different maxima. A
- similar thing is true for OPEN_MAX: the limit can be changed at
- runtime and therefore the macro must not be defined. Remove this
- after including the header if necessary. */
-#ifndef NR_OPEN
-# define __undef_NR_OPEN
-#endif
-#ifndef LINK_MAX
-# define __undef_LINK_MAX
-#endif
-#ifndef OPEN_MAX
-# define __undef_OPEN_MAX
-#endif
-#ifndef ARG_MAX
-# define __undef_ARG_MAX
-#endif
-
-/* The kernel sources contain a file with all the needed information. */
-#include <linux/limits.h>
-
-/* Have to remove NR_OPEN? */
-#ifdef __undef_NR_OPEN
-# undef NR_OPEN
-# undef __undef_NR_OPEN
-#endif
-/* Have to remove LINK_MAX? */
-#ifdef __undef_LINK_MAX
-# undef LINK_MAX
-# undef __undef_LINK_MAX
-#endif
-/* Have to remove OPEN_MAX? */
-#ifdef __undef_OPEN_MAX
-# undef OPEN_MAX
-# undef __undef_OPEN_MAX
-#endif
-/* Have to remove ARG_MAX? */
-#ifdef __undef_ARG_MAX
-# undef ARG_MAX
-# undef __undef_ARG_MAX
-#endif
-
-/* The number of data keys per process. */
-#define _POSIX_THREAD_KEYS_MAX 128
-/* This is the value this implementation supports. */
-#define PTHREAD_KEYS_MAX 1024
-
-/* Controlling the iterations of destructors for thread-specific data. */
-#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
-/* Number of iterations this implementation does. */
-#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
-
-/* The number of threads per process. */
-#define _POSIX_THREAD_THREADS_MAX 64
-/* We have no predefined limit on the number of threads. */
-#undef PTHREAD_THREADS_MAX
-
-/* Maximum amount by which a process can descrease its asynchronous I/O
- priority level. */
-#define AIO_PRIO_DELTA_MAX 20
-
-/* Minimum size for a thread. We are free to choose a reasonable value. */
-#define PTHREAD_STACK_MIN 24576
-
-/* Maximum number of timer expiration overruns. */
-#define DELAYTIMER_MAX 2147483647
-
-/* Maximum tty name length. */
-#define TTY_NAME_MAX 32
-
-/* Maximum login name length. This is arbitrary. */
-#define LOGIN_NAME_MAX 256
-
-/* Maximum host name length. */
-#define HOST_NAME_MAX 64
-
-/* Maximum message queue priority level. */
-#define MQ_PRIO_MAX 32768
-
-/* Maximum value the semaphore can have. */
-#define SEM_VALUE_MAX (2147483647)
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
deleted file mode 100644
index 41c0be1978..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/* Machine-specific pthread type layouts. Alpha version.
- Copyright (C) 2003, 2004, 2005, 2006, 2007 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _BITS_PTHREADTYPES_H
-#define _BITS_PTHREADTYPES_H 1
-
-#define __SIZEOF_PTHREAD_ATTR_T 56
-#define __SIZEOF_PTHREAD_MUTEX_T 40
-#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
-#define __SIZEOF_PTHREAD_COND_T 48
-#define __SIZEOF_PTHREAD_CONDATTR_T 4
-#define __SIZEOF_PTHREAD_RWLOCK_T 56
-#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
-#define __SIZEOF_PTHREAD_BARRIER_T 32
-#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
-
-
-/* Thread identifiers. The structure of the attribute type is
- deliberately not exposed. */
-typedef unsigned long int pthread_t;
-
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_ATTR_T];
- long int __align;
-} pthread_attr_t;
-
-
-typedef struct __pthread_internal_list
-{
- struct __pthread_internal_list *__prev;
- struct __pthread_internal_list *__next;
-} __pthread_list_t;
-
-
-/* Data structures for mutex handling. The structure of the attribute
- type is deliberately not exposed. */
-typedef union
-{
- struct __pthread_mutex_s
- {
- int __lock;
- unsigned int __count;
- int __owner;
- unsigned int __nusers;
- /* KIND must stay at this position in the structure to maintain
- binary compatibility. */
- int __kind;
- int __spins;
- __pthread_list_t __list;
-#define __PTHREAD_MUTEX_HAVE_PREV 1
- } __data;
- char __size[__SIZEOF_PTHREAD_MUTEX_T];
- long int __align;
-} pthread_mutex_t;
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
- int __align;
-} pthread_mutexattr_t;
-
-
-/* Data structure for conditional variable handling. The structure of
- the attribute type is deliberately not exposed. */
-typedef union
-{
- struct
- {
- int __lock;
- unsigned int __futex;
- __extension__ unsigned long long int __total_seq;
- __extension__ unsigned long long int __wakeup_seq;
- __extension__ unsigned long long int __woken_seq;
- void *__mutex;
- unsigned int __nwaiters;
- unsigned int __broadcast_seq;
- } __data;
- char __size[__SIZEOF_PTHREAD_COND_T];
- __extension__ long long int __align;
-} pthread_cond_t;
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_CONDATTR_T];
- int __align;
-} pthread_condattr_t;
-
-
-/* Keys for thread-specific data */
-typedef unsigned int pthread_key_t;
-
-
-/* Once-only execution */
-typedef int pthread_once_t;
-
-
-#if defined __USE_UNIX98 || defined __USE_XOPEN2K
-/* Data structure for read-write lock variable handling. The
- structure of the attribute type is deliberately not exposed. */
-typedef union
-{
- struct
- {
- int __lock;
- unsigned int __nr_readers;
- unsigned int __readers_wakeup;
- unsigned int __writer_wakeup;
- unsigned int __nr_readers_queued;
- unsigned int __nr_writers_queued;
- int __writer;
- int __shared;
- unsigned long int __pad1;
- unsigned long int __pad2;
- /* FLAGS must stay at this position in the structure to maintain
- binary compatibility. */
- unsigned int __flags;
- } __data;
- char __size[__SIZEOF_PTHREAD_RWLOCK_T];
- long int __align;
-} pthread_rwlock_t;
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T];
- long int __align;
-} pthread_rwlockattr_t;
-#endif
-
-
-#ifdef __USE_XOPEN2K
-/* POSIX spinlock data type. */
-typedef volatile int pthread_spinlock_t;
-
-/* POSIX barriers data type. The structure of the type is
- deliberately not exposed. */
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_BARRIER_T];
- long int __align;
-} pthread_barrier_t;
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_BARRIERATTR_T];
- int __align;
-} pthread_barrierattr_t;
-#endif
-
-
-#endif /* bits/pthreadtypes.h */
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/clone.S b/nptl/sysdeps/unix/sysv/linux/alpha/clone.S
deleted file mode 100644
index 675a997e97..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/clone.S
+++ /dev/null
@@ -1,9 +0,0 @@
-/* We want an #include_next, but we are the main source file.
- So, #include ourselves and in that incarnation we can use #include_next. */
-#ifndef INCLUDED_SELF
-# define INCLUDED_SELF
-# include <clone.S>
-#else
-# define RESET_PID
-# include_next <clone.S>
-#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/createthread.c b/nptl/sysdeps/unix/sysv/linux/alpha/createthread.c
deleted file mode 100644
index 6a51e73da6..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/createthread.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright (C) 2003 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Value passed to 'clone' for initialization of the thread register. */
-#define TLS_VALUE (pd + 1)
-
-/* Get the real implementation. */
-#include <nptl/sysdeps/pthread/createthread.c>
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h
deleted file mode 100644
index 93188234cb..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h
+++ /dev/null
@@ -1,280 +0,0 @@
-/* Copyright (C) 2003, 2004, 2006, 2007 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 Libr \ary; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _LOWLEVELLOCK_H
-#define _LOWLEVELLOCK_H 1
-
-#include <time.h>
-#include <sys/param.h>
-#include <bits/pthreadtypes.h>
-#include <atomic.h>
-#include <sysdep.h>
-#include <kernel-features.h>
-
-
-#define __NR_futex 394
-#define FUTEX_WAIT 0
-#define FUTEX_WAKE 1
-#define FUTEX_REQUEUE 3
-#define FUTEX_CMP_REQUEUE 4
-#define FUTEX_WAKE_OP 5
-#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1)
-#define FUTEX_LOCK_PI 6
-#define FUTEX_UNLOCK_PI 7
-#define FUTEX_TRYLOCK_PI 8
-#define FUTEX_PRIVATE_FLAG 128
-
-/* Values for 'private' parameter of locking macros. Yes, the
- definition seems to be backwards. But it is not. The bit will be
- reversed before passing to the system call. */
-#define LLL_PRIVATE 0
-#define LLL_SHARED FUTEX_PRIVATE_FLAG
-
-
-#if !defined NOT_IN_libc || defined IS_IN_rtld
-/* In libc.so or ld.so all futexes are private. */
-# ifdef __ASSUME_PRIVATE_FUTEX
-# define __lll_private_flag(fl, private) \
- ((fl) | FUTEX_PRIVATE_FLAG)
-# else
-# define __lll_private_flag(fl, private) \
- ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))
-# endif
-#else
-# ifdef __ASSUME_PRIVATE_FUTEX
-# define __lll_private_flag(fl, private) \
- (((fl) | FUTEX_PRIVATE_FLAG) ^ (private))
-# else
-# define __lll_private_flag(fl, private) \
- (__builtin_constant_p (private) \
- ? ((private) == 0 \
- ? ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex)) \
- : (fl)) \
- : ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG) \
- & THREAD_GETMEM (THREAD_SELF, header.private_futex))))
-# endif
-#endif
-
-
-#define lll_futex_wait(futexp, val, private) \
- lll_futex_timed_wait (futexp, val, NULL, private)
-
-#define lll_futex_timed_wait(futexp, val, timespec, private) \
- ({ \
- INTERNAL_SYSCALL_DECL (__err); \
- long int __ret; \
- __ret = INTERNAL_SYSCALL (futex, __err, 4, (futexp), \
- __lll_private_flag (FUTEX_WAIT, private), \
- (val), (timespec)); \
- INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret : __ret; \
- })
-
-#define lll_futex_wake(futexp, nr, private) \
- ({ \
- INTERNAL_SYSCALL_DECL (__err); \
- long int __ret; \
- __ret = INTERNAL_SYSCALL (futex, __err, 4, (futexp), \
- __lll_private_flag (FUTEX_WAKE, private), \
- (nr), 0); \
- INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret : __ret; \
- })
-
-#define lll_robust_dead(futexv, private) \
- do \
- { \
- int *__futexp = &(futexv); \
- atomic_or (__futexp, FUTEX_OWNER_DIED); \
- lll_futex_wake (__futexp, 1, private); \
- } \
- while (0)
-
-/* Returns non-zero if error happened, zero if success. */
-#define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
- ({ \
- INTERNAL_SYSCALL_DECL (__err); \
- long int __ret; \
- __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \
- __lll_private_flag (FUTEX_CMP_REQUEUE, private),\
- (nr_wake), (nr_move), (mutex), (val)); \
- INTERNAL_SYSCALL_ERROR_P (__ret, __err); \
- })
-
-/* Returns non-zero if error happened, zero if success. */
-#define lll_futex_wake_unlock(futexp, nr_wake, nr_wake2, futexp2, private) \
- ({ \
- INTERNAL_SYSCALL_DECL (__err); \
- long int __ret; \
- __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \
- __lll_private_flag (FUTEX_WAKE_OP, private), \
- (nr_wake), (nr_wake2), (futexp2), \
- FUTEX_OP_CLEAR_WAKE_IF_GT_ONE); \
- INTERNAL_SYSCALL_ERROR_P (__ret, __err); \
- })
-
-
-
-
-static inline int __attribute__((always_inline))
-__lll_trylock(int *futex)
-{
- return atomic_compare_and_exchange_val_acq (futex, 1, 0) != 0;
-}
-#define lll_trylock(lock) __lll_trylock (&(lock))
-
-
-static inline int __attribute__((always_inline))
-__lll_cond_trylock(int *futex)
-{
- return atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0;
-}
-#define lll_cond_trylock(lock) __lll_cond_trylock (&(lock))
-
-
-static inline int __attribute__((always_inline))
-__lll_robust_trylock(int *futex, int id)
-{
- return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0;
-}
-#define lll_robust_trylock(lock, id) \
- __lll_robust_trylock (&(lock), id)
-
-extern void __lll_lock_wait_private (int *futex) attribute_hidden;
-extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
-extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden;
-
-static inline void __attribute__((always_inline))
-__lll_lock(int *futex, int private)
-{
- if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0)
- {
- if (__builtin_constant_p (private) && private == LLL_PRIVATE)
- __lll_lock_wait_private (futex);
- else
- __lll_lock_wait (futex, private);
- }
-}
-#define lll_lock(futex, private) __lll_lock (&(futex), private)
-
-
-static inline int __attribute__ ((always_inline))
-__lll_robust_lock (int *futex, int id, int private)
-{
- int result = 0;
- if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0)
- result = __lll_robust_lock_wait (futex, private);
- return result;
-}
-#define lll_robust_lock(futex, id, private) \
- __lll_robust_lock (&(futex), id, private)
-
-
-static inline void __attribute__ ((always_inline))
-__lll_cond_lock (int *futex, int private)
-{
- if (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0)
- __lll_lock_wait (futex, private);
-}
-#define lll_cond_lock(futex, private) __lll_cond_lock (&(futex), private)
-
-
-#define lll_robust_cond_lock(futex, id, private) \
- __lll_robust_lock (&(futex), (id) | FUTEX_WAITERS, private)
-
-
-extern int __lll_timedlock_wait (int *futex, const struct timespec *,
- int private) attribute_hidden;
-extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *,
- int private) attribute_hidden;
-
-static inline int __attribute__ ((always_inline))
-__lll_timedlock (int *futex, const struct timespec *abstime, int private)
-{
- int result = 0;
- if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0)
- result = __lll_timedlock_wait (futex, abstime, private);
- return result;
-}
-#define lll_timedlock(futex, abstime, private) \
- __lll_timedlock (&(futex), abstime, private)
-
-
-static inline int __attribute__ ((always_inline))
-__lll_robust_timedlock (int *futex, const struct timespec *abstime,
- int id, int private)
-{
- int result = 0;
- if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0)
- result = __lll_robust_timedlock_wait (futex, abstime, private);
- return result;
-}
-#define lll_robust_timedlock(futex, abstime, id, private) \
- __lll_robust_timedlock (&(futex), abstime, id, private)
-
-
-#define __lll_unlock(futex, private) \
- (void) \
- ({ int *__futex = (futex); \
- int __oldval = atomic_exchange_rel (__futex, 0); \
- if (__builtin_expect (__oldval > 1, 0)) \
- lll_futex_wake (__futex, 1, private); \
- })
-#define lll_unlock(futex, private) __lll_unlock(&(futex), private)
-
-
-#define __lll_robust_unlock(futex, private) \
- (void) \
- ({ int *__futex = (futex); \
- int __oldval = atomic_exchange_rel (__futex, 0); \
- if (__builtin_expect (__oldval & FUTEX_WAITERS, 0)) \
- lll_futex_wake (__futex, 1, private); \
- })
-#define lll_robust_unlock(futex, private) \
- __lll_robust_unlock(&(futex), private)
-
-
-#define lll_islocked(futex) \
- (futex != 0)
-
-/* Initializers for lock. */
-#define LLL_LOCK_INITIALIZER (0)
-#define LLL_LOCK_INITIALIZER_LOCKED (1)
-
-
-/* The kernel notifies a process which uses CLONE_CLEARTID via futex
- wakeup when the clone terminates. The memory location contains the
- thread ID while the clone is running and is reset to zero
- afterwards. */
-#define lll_wait_tid(tid) \
- do { \
- __typeof (tid) __tid; \
- while ((__tid = (tid)) != 0) \
- lll_futex_wait (&(tid), __tid, LLL_SHARED); \
- } while (0)
-
-extern int __lll_timedwait_tid (int *, const struct timespec *)
- attribute_hidden;
-
-#define lll_timedwait_tid(tid, abstime) \
- ({ \
- int __res = 0; \
- if ((tid) != 0) \
- __res = __lll_timedwait_tid (&(tid), (abstime)); \
- __res; \
- })
-
-#endif /* lowlevellock.h */
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S b/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S
deleted file mode 100644
index ec5d175bec..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (C) 2003, 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#include <tcb-offsets.h>
-
-#undef PSEUDO_PREPARE_ARGS
-#define PSEUDO_PREPARE_ARGS \
- /* Load the current cached pid value across the vfork. */ \
- rduniq; \
- ldl a2, PID_OFFSET(v0); \
- mov v0, a1; \
- /* Write back its negation, to indicate that the pid value is \
- uninitialized in the the child, and in the window between \
- here and the point at which we restore the value. */ \
- negl a2, t0; \
- stl t0, PID_OFFSET(v0);
-
-PSEUDO (__vfork, vfork, 0)
-
- /* If we're back in the parent, restore the saved pid. */
- beq v0, 1f
- stl a2, PID_OFFSET(a1)
-1: ret
-
-PSEUDO_END (__vfork)
-
-weak_alias (__vfork, vfork)
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c b/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c
deleted file mode 100644
index 0e7e9790dd..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Copyright (C) 2003, 2004, 2007 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "pthreadP.h"
-#include <lowlevellock.h>
-
-
-unsigned long int __fork_generation attribute_hidden;
-
-static void
-clear_once_control (void *arg)
-{
- pthread_once_t *once_control = (pthread_once_t *) arg;
-
- *once_control = 0;
- lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE);
-}
-
-int
-__pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
-{
- for (;;)
- {
- int oldval;
- int newval;
- int tmp;
-
- /* Pseudo code:
- newval = __fork_generation | 1;
- oldval = *once_control;
- if ((oldval & 2) == 0)
- *once_control = newval;
- Do this atomically.
- */
- newval = __fork_generation | 1;
- __asm __volatile (
- "1: ldl_l %0, %2\n"
- " and %0, 2, %1\n"
- " bne %1, 2f\n"
- " mov %3, %1\n"
- " stl_c %1, %2\n"
- " beq %1, 1b\n"
- "2: mb"
- : "=&r" (oldval), "=&r" (tmp), "=m" (*once_control)
- : "r" (newval), "m" (*once_control));
-
- /* Check if the initializer has already been done. */
- if ((oldval & 2) != 0)
- return 0;
-
- /* Check if another thread already runs the initializer. */
- if ((oldval & 1) == 0)
- break;
-
- /* Check whether the initializer execution was interrupted by a fork. */
- if (oldval != newval)
- break;
-
- /* Same generation, some other thread was faster. Wait. */
- lll_futex_wait (once_control, oldval, LLL_PRIVATE);
- }
-
- /* This thread is the first here. Do the initialization.
- Register a cleanup handler so that in case the thread gets
- interrupted the initialization can be restarted. */
- pthread_cleanup_push (clear_once_control, once_control);
-
- init_routine ();
-
- pthread_cleanup_pop (0);
-
- /* Add one to *once_control to take the bottom 2 bits from 01 to 10. */
- atomic_increment (once_control);
-
- /* Wake up all other threads. */
- lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE);
-
- return 0;
-}
-weak_alias (__pthread_once, pthread_once)
-strong_alias (__pthread_once, __pthread_once_internal)
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/sem_post.c b/nptl/sysdeps/unix/sysv/linux/alpha/sem_post.c
deleted file mode 100644
index 27fd817e65..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/sem_post.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* ??? This is an ass-backwards way to do this. We should simply define
- the acquire/release semantics of atomic_exchange_and_add. And even if
- we don't do this, we should be using atomic_full_barrier or otherwise. */
-#define __lll_rel_instr "mb"
-#include "../sem_post.c"
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h
deleted file mode 100644
index 1db847c9eb..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/* Copyright (C) 2003, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#include <tls.h>
-#ifndef __ASSEMBLER__
-# include <nptl/pthreadP.h>
-#endif
-
-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
-# ifdef PROF
-# define PSEUDO_PROF \
- .set noat; \
- lda AT, _mcount; \
- jsr AT, (AT), _mcount; \
- .set at
-# else
-# define PSEUDO_PROF
-# endif
-
-/* ??? Assumes that nothing comes between PSEUDO and PSEUDO_END
- besides "ret". */
-
-# undef PSEUDO
-# define PSEUDO(name, syscall_name, args) \
- .globl name; \
- .align 4; \
- .type name, @function; \
- .usepv name, std; \
- cfi_startproc; \
-__LABEL(name) \
- ldgp gp, 0(pv); \
- PSEUDO_PROF; \
- PSEUDO_PREPARE_ARGS \
- SINGLE_THREAD_P(t0); \
- bne t0, $pseudo_cancel; \
- lda v0, SYS_ify(syscall_name); \
- call_pal PAL_callsys; \
- bne a3, SYSCALL_ERROR_LABEL; \
-__LABEL($pseudo_ret) \
- .subsection 2; \
- cfi_startproc; \
-__LABEL($pseudo_cancel) \
- subq sp, 64, sp; \
- cfi_def_cfa_offset(64); \
- stq ra, 0(sp); \
- cfi_offset(ra, -64); \
- SAVE_ARGS_##args; \
- CENABLE; \
- LOAD_ARGS_##args; \
- /* Save the CENABLE return value in RA. That register \
- is preserved across syscall and the real return \
- address is saved on the stack. */ \
- mov v0, ra; \
- lda v0, SYS_ify(syscall_name); \
- call_pal PAL_callsys; \
- stq v0, 8(sp); \
- mov ra, a0; \
- bne a3, $multi_error; \
- CDISABLE; \
- ldq ra, 0(sp); \
- ldq v0, 8(sp); \
- addq sp, 64, sp; \
- cfi_remember_state; \
- cfi_restore(ra); \
- cfi_def_cfa_offset(0); \
- ret; \
- cfi_restore_state; \
-__LABEL($multi_error) \
- CDISABLE; \
- ldq ra, 0(sp); \
- ldq v0, 8(sp); \
- addq sp, 64, sp; \
- cfi_restore(ra); \
- cfi_def_cfa_offset(0); \
-__LABEL($syscall_error) \
- SYSCALL_ERROR_HANDLER; \
- cfi_endproc; \
- .previous
-
-# undef PSEUDO_END
-# define PSEUDO_END(sym) \
- cfi_endproc; \
- .subsection 2; \
- .size sym, .-sym
-
-# define SAVE_ARGS_0 /* Nothing. */
-# define SAVE_ARGS_1 SAVE_ARGS_0; stq a0, 8(sp)
-# define SAVE_ARGS_2 SAVE_ARGS_1; stq a1, 16(sp)
-# define SAVE_ARGS_3 SAVE_ARGS_2; stq a2, 24(sp)
-# define SAVE_ARGS_4 SAVE_ARGS_3; stq a3, 32(sp)
-# define SAVE_ARGS_5 SAVE_ARGS_4; stq a4, 40(sp)
-# define SAVE_ARGS_6 SAVE_ARGS_5; stq a5, 48(sp)
-
-# define LOAD_ARGS_0 /* Nothing. */
-# define LOAD_ARGS_1 LOAD_ARGS_0; ldq a0, 8(sp)
-# define LOAD_ARGS_2 LOAD_ARGS_1; ldq a1, 16(sp)
-# define LOAD_ARGS_3 LOAD_ARGS_2; ldq a2, 24(sp)
-# define LOAD_ARGS_4 LOAD_ARGS_3; ldq a3, 32(sp)
-# define LOAD_ARGS_5 LOAD_ARGS_4; ldq a4, 40(sp)
-# define LOAD_ARGS_6 LOAD_ARGS_5; ldq a5, 48(sp)
-
-# ifdef IS_IN_libpthread
-# define __local_enable_asynccancel __pthread_enable_asynccancel
-# define __local_disable_asynccancel __pthread_disable_asynccancel
-# define __local_multiple_threads __pthread_multiple_threads
-# elif !defined NOT_IN_libc
-# define __local_enable_asynccancel __libc_enable_asynccancel
-# define __local_disable_asynccancel __libc_disable_asynccancel
-# define __local_multiple_threads __libc_multiple_threads
-# elif defined IS_IN_librt
-# define __local_enable_asynccancel __librt_enable_asynccancel
-# define __local_disable_asynccancel __librt_disable_asynccancel
-# else
-# error Unsupported library
-# endif
-
-# ifdef PIC
-# define CENABLE bsr ra, __local_enable_asynccancel !samegp
-# define CDISABLE bsr ra, __local_disable_asynccancel !samegp
-# else
-# define CENABLE jsr ra, __local_enable_asynccancel; ldgp ra, 0(gp)
-# define CDISABLE jsr ra, __local_disable_asynccancel; ldgp ra, 0(gp)
-# endif
-
-# if defined IS_IN_libpthread || !defined NOT_IN_libc
-# ifndef __ASSEMBLER__
-extern int __local_multiple_threads attribute_hidden;
-# define SINGLE_THREAD_P \
- __builtin_expect (__local_multiple_threads == 0, 1)
-# elif defined(PIC)
-# define SINGLE_THREAD_P(reg) ldl reg, __local_multiple_threads(gp) !gprel
-# else
-# define SINGLE_THREAD_P(reg) \
- ldah reg, __local_multiple_threads(gp) !gprelhigh; \
- ldl reg, __local_multiple_threads(reg) !gprellow
-# endif
-# else
-# ifndef __ASSEMBLER__
-# define SINGLE_THREAD_P \
- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
- header.multiple_threads) == 0, 1)
-# else
-# define SINGLE_THREAD_P(reg) \
- call_pal PAL_rduniq; \
- ldl reg, MULTIPLE_THREADS_OFFSET($0)
-# endif
-# endif
-
-#else
-
-# define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION 1
-
-#endif
-
-#ifndef __ASSEMBLER__
-# define RTLD_SINGLE_THREAD_P \
- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
- header.multiple_threads) == 0, 1)
-#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/timer_create.c b/nptl/sysdeps/unix/sysv/linux/alpha/timer_create.c
deleted file mode 100644
index 172223af3f..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/timer_create.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../x86_64/timer_create.c"
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/timer_delete.c b/nptl/sysdeps/unix/sysv/linux/alpha/timer_delete.c
deleted file mode 100644
index 537516e0aa..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/timer_delete.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../x86_64/timer_delete.c"
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/timer_getoverr.c b/nptl/sysdeps/unix/sysv/linux/alpha/timer_getoverr.c
deleted file mode 100644
index 3f21a73c98..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/timer_getoverr.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../x86_64/timer_getoverr.c"
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/timer_gettime.c b/nptl/sysdeps/unix/sysv/linux/alpha/timer_gettime.c
deleted file mode 100644
index a50143adc5..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/timer_gettime.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../x86_64/timer_gettime.c"
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/timer_settime.c b/nptl/sysdeps/unix/sysv/linux/alpha/timer_settime.c
deleted file mode 100644
index 37baeffacc..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/timer_settime.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../x86_64/timer_settime.c"
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/vfork.S b/nptl/sysdeps/unix/sysv/linux/alpha/vfork.S
deleted file mode 100644
index f4ed9311b0..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/alpha/vfork.S
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#include <tcb-offsets.h>
-
-#undef PSEUDO_PREPARE_ARGS
-#define PSEUDO_PREPARE_ARGS \
- /* Load the current cached pid value across the vfork. */ \
- rduniq; \
- ldl a2, PID_OFFSET(v0); \
- mov v0, a1; \
- /* If the cached value is initialized (nonzero), then write \
- back its negation, or INT_MIN, to indicate that the pid \
- value is uninitialized in the the child, and in the window \
- between here and the point at which we restore the value. */ \
- ldah t0, -0x8000; \
- negl a2, t1; \
- cmovne a2, t1, t0; \
- stl t0, PID_OFFSET(v0);
-
-PSEUDO (__vfork, vfork, 0)
-
- /* If we're back in the parent, restore the saved pid. */
- beq v0, 1f
- stl a2, PID_OFFSET(a1)
-1: ret
-
-PSEUDO_END (__vfork)
-libc_hidden_def (__vfork)
-weak_alias (__vfork, vfork)
diff --git a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h
index 06d35ceb16..2550355cdc 100644
--- a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h
+++ b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h
@@ -1,5 +1,5 @@
/* Define POSIX options for Linux.
- Copyright (C) 1996-2004, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1996-2004, 2006, 2008, 2009 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
@@ -17,8 +17,8 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#ifndef _POSIX_OPT_H
-#define _POSIX_OPT_H 1
+#ifndef _BITS_POSIX_OPT_H
+#define _BITS_POSIX_OPT_H 1
/* Job control is supported. */
#define _POSIX_JOB_CONTROL 1
@@ -27,25 +27,25 @@
#define _POSIX_SAVED_IDS 1
/* Priority scheduling is supported. */
-#define _POSIX_PRIORITY_SCHEDULING 200112L
+#define _POSIX_PRIORITY_SCHEDULING 200809L
/* Synchronizing file data is supported. */
-#define _POSIX_SYNCHRONIZED_IO 200112L
+#define _POSIX_SYNCHRONIZED_IO 200809L
/* The fsync function is present. */
-#define _POSIX_FSYNC 200112L
+#define _POSIX_FSYNC 200809L
/* Mapping of files to memory is supported. */
-#define _POSIX_MAPPED_FILES 200112L
+#define _POSIX_MAPPED_FILES 200809L
/* Locking of all memory is supported. */
-#define _POSIX_MEMLOCK 200112L
+#define _POSIX_MEMLOCK 200809L
/* Locking of ranges of memory is supported. */
-#define _POSIX_MEMLOCK_RANGE 200112L
+#define _POSIX_MEMLOCK_RANGE 200809L
/* Setting of memory protections is supported. */
-#define _POSIX_MEMORY_PROTECTION 200112L
+#define _POSIX_MEMORY_PROTECTION 200809L
/* Some filesystems allow all users to change file ownership. */
#define _POSIX_CHOWN_RESTRICTED 0
@@ -67,41 +67,49 @@
#define _XOPEN_SHM 1
/* Tell we have POSIX threads. */
-#define _POSIX_THREADS 200112L
+#define _POSIX_THREADS 200809L
/* We have the reentrant functions described in POSIX. */
#define _POSIX_REENTRANT_FUNCTIONS 1
-#define _POSIX_THREAD_SAFE_FUNCTIONS 200112L
+#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
/* We provide priority scheduling for threads. */
-#define _POSIX_THREAD_PRIORITY_SCHEDULING 200112L
+#define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L
/* We support user-defined stack sizes. */
-#define _POSIX_THREAD_ATTR_STACKSIZE 200112L
+#define _POSIX_THREAD_ATTR_STACKSIZE 200809L
/* We support user-defined stacks. */
-#define _POSIX_THREAD_ATTR_STACKADDR 200112L
+#define _POSIX_THREAD_ATTR_STACKADDR 200809L
/* We support priority inheritence. */
-#define _POSIX_THREAD_PRIO_INHERIT 200112L
+#define _POSIX_THREAD_PRIO_INHERIT 200809L
/* We support priority protection, though only for non-robust
mutexes. */
-#define _POSIX_THREAD_PRIO_PROTECT 200112L
+#define _POSIX_THREAD_PRIO_PROTECT 200809L
+
+#ifdef __USE_XOPEN2K8
+/* We support priority inheritence for robust mutexes. */
+# define _POSIX_THREAD_ROBUST_PRIO_INHERIT 200809L
+
+/* We do not support priority protection for robust mutexes. */
+# define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1
+#endif
/* We support POSIX.1b semaphores. */
-#define _POSIX_SEMAPHORES 200112L
+#define _POSIX_SEMAPHORES 200809L
/* Real-time signals are supported. */
-#define _POSIX_REALTIME_SIGNALS 200112L
+#define _POSIX_REALTIME_SIGNALS 200809L
/* We support asynchronous I/O. */
-#define _POSIX_ASYNCHRONOUS_IO 200112L
+#define _POSIX_ASYNCHRONOUS_IO 200809L
#define _POSIX_ASYNC_IO 1
/* Alternative name for Unix98. */
#define _LFS_ASYNCHRONOUS_IO 1
/* Support for prioritization is also available. */
-#define _POSIX_PRIORITIZED_IO 200112L
+#define _POSIX_PRIORITIZED_IO 200809L
/* The LFS support in asynchronous I/O is also available. */
#define _LFS64_ASYNCHRONOUS_IO 1
@@ -112,7 +120,7 @@
#define _LFS64_STDIO 1
/* POSIX shared memory objects are implemented. */
-#define _POSIX_SHARED_MEMORY_OBJECTS 200112L
+#define _POSIX_SHARED_MEMORY_OBJECTS 200809L
/* CPU-time clocks support needs to be checked at runtime. */
#define _POSIX_CPUTIME 0
@@ -124,49 +132,49 @@
#define _POSIX_REGEXP 1
/* Reader/Writer locks are available. */
-#define _POSIX_READER_WRITER_LOCKS 200112L
+#define _POSIX_READER_WRITER_LOCKS 200809L
/* We have a POSIX shell. */
#define _POSIX_SHELL 1
/* We support the Timeouts option. */
-#define _POSIX_TIMEOUTS 200112L
+#define _POSIX_TIMEOUTS 200809L
/* We support spinlocks. */
-#define _POSIX_SPIN_LOCKS 200112L
+#define _POSIX_SPIN_LOCKS 200809L
/* The `spawn' function family is supported. */
-#define _POSIX_SPAWN 200112L
+#define _POSIX_SPAWN 200809L
/* We have POSIX timers. */
-#define _POSIX_TIMERS 200112L
+#define _POSIX_TIMERS 200809L
/* The barrier functions are available. */
-#define _POSIX_BARRIERS 200112L
+#define _POSIX_BARRIERS 200809L
/* POSIX message queues are available. */
-#define _POSIX_MESSAGE_PASSING 200112L
+#define _POSIX_MESSAGE_PASSING 200809L
/* Thread process-shared synchronization is supported. */
-#define _POSIX_THREAD_PROCESS_SHARED 200112L
+#define _POSIX_THREAD_PROCESS_SHARED 200809L
/* The monotonic clock might be available. */
#define _POSIX_MONOTONIC_CLOCK 0
/* The clock selection interfaces are available. */
-#define _POSIX_CLOCK_SELECTION 200112L
+#define _POSIX_CLOCK_SELECTION 200809L
/* Advisory information interfaces are available. */
-#define _POSIX_ADVISORY_INFO 200112L
+#define _POSIX_ADVISORY_INFO 200809L
/* IPv6 support is available. */
-#define _POSIX_IPV6 200112L
+#define _POSIX_IPV6 200809L
/* Raw socket support is available. */
-#define _POSIX_RAW_SOCKETS 200112L
+#define _POSIX_RAW_SOCKETS 200809L
/* We have at least one terminal. */
-#define _POSIX2_CHAR_TERM 200112L
+#define _POSIX2_CHAR_TERM 200809L
/* Neither process nor thread sporadic server interfaces is available. */
#define _POSIX_SPORADIC_SERVER -1
@@ -181,4 +189,4 @@
/* Typed memory objects are not available. */
#define _POSIX_TYPED_MEMORY_OBJECTS -1
-#endif /* posix_opt.h */
+#endif /* bits/posix_opt.h */
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h b/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h
index a3b2c77c32..5216114a70 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h
+++ b/nptl/sysdeps/unix/sysv/linux/i386/dl-sysdep.h
@@ -1,5 +1,5 @@
-/* System-specific settings for dynamic linker code. IA-32 version.
- Copyright (C) 2002, 2003, 2008 Free Software Foundation, Inc.
+/* System-specific settings for dynamic linker code. i386 version.
+ Copyright (C) 2002,2003,2008,2009 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
@@ -18,56 +18,11 @@
02111-1307 USA. */
#ifndef _DL_SYSDEP_H
-#define _DL_SYSDEP_H 1
+# include "i686/dl-sysdep.h"
-/* This macro must be defined to either 0 or 1.
-
- If 1, then an errno global variable hidden in ld.so will work right with
- all the errno-using libc code compiled for ld.so, and there is never a
- need to share the errno location with libc. This is appropriate only if
- all the libc functions that ld.so uses are called without PLT and always
- get the versions linked into ld.so rather than the libc ones. */
-
-#ifdef IS_IN_rtld
-# define RTLD_PRIVATE_ERRNO 1
-#else
-# define RTLD_PRIVATE_ERRNO 0
-#endif
-
-/* Traditionally system calls have been made using int $0x80. A
- second method was introduced which, if possible, will use the
- sysenter/syscall instructions. To signal the presence and where to
- find the code the kernel passes an AT_SYSINFO value in the
- auxiliary vector to the application.
- sysenter/syscall is not useful on i386 through i586, but the dynamic
+/* sysenter/syscall is not useful on i386 through i586, but the dynamic
linker and dl code in libc.a has to be able to load i686 compiled
libraries. */
-#define NEED_DL_SYSINFO 1
-#undef USE_DL_SYSINFO
-
-#if defined NEED_DL_SYSINFO && !defined __ASSEMBLER__
-extern void _dl_sysinfo_int80 (void) attribute_hidden;
-# define DL_SYSINFO_DEFAULT (uintptr_t) _dl_sysinfo_int80
-# define DL_SYSINFO_IMPLEMENTATION \
- asm (".text\n\t" \
- ".type _dl_sysinfo_int80,@function\n\t" \
- ".hidden _dl_sysinfo_int80\n\t" \
- CFI_STARTPROC "\n" \
- "_dl_sysinfo_int80:\n\t" \
- "int $0x80;\n\t" \
- "ret;\n\t" \
- CFI_ENDPROC "\n" \
- ".size _dl_sysinfo_int80,.-_dl_sysinfo_int80\n\t" \
- ".previous;");
-#endif
-
-
-/* The _dl_discover_osversion function is so far only needed in sysconf
- to check for kernels later than 2.6.23. */
-#if !defined __ASSEMBLER__ && __LINUX_KERNEL_VERSION < 0x020617
-/* Get version of the OS. */
-extern int _dl_discover_osversion (void) attribute_hidden;
-# define HAVE_DL_DISCOVER_OSVERSION 1
-#endif
+# undef USE_DL_SYSINFO
#endif /* dl-sysdep.h */
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
index 9c8a68f5b2..7578c7ece0 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2004, 2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -31,6 +31,8 @@
movl $(FUTEX_WAKE | FUTEX_PRIVATE_FLAG), reg
# define LOAD_FUTEX_WAIT(reg) \
xorl $(FUTEX_WAIT | FUTEX_PRIVATE_FLAG), reg
+# define LOAD_FUTEX_WAIT_ABS(reg) \
+ xorl $(FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME), reg
# define LOAD_FUTEX_WAKE(reg) \
xorl $(FUTEX_WAKE | FUTEX_PRIVATE_FLAG), reg
#else
@@ -55,6 +57,10 @@
andl %gs:PRIVATE_FUTEX, reg ; \
orl $FUTEX_WAIT, reg
# endif
+# define LOAD_FUTEX_WAIT_ABS(reg) \
+ xorl $FUTEX_PRIVATE_FLAG, reg ; \
+ andl %gs:PRIVATE_FUTEX, reg ; \
+ orl $FUTEX_WAIT_BITSET | FUTEX_CLOCK_REALTIME, reg
# define LOAD_FUTEX_WAKE(reg) \
xorl $FUTEX_PRIVATE_FLAG, reg ; \
andl %gs:PRIVATE_FUTEX, reg ; \
@@ -154,28 +160,81 @@ __lll_lock_wait:
cfi_endproc
.size __lll_lock_wait,.-__lll_lock_wait
+ /* %ecx: futex
+ %esi: flags
+ %edx: timeout
+ %eax: futex value
+ */
.globl __lll_timedlock_wait
.type __lll_timedlock_wait,@function
.hidden __lll_timedlock_wait
.align 16
__lll_timedlock_wait:
cfi_startproc
+ pushl %ebp
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%ebp, 0)
+ pushl %ebx
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%ebx, 0)
+
+# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+# ifdef PIC
+ LOAD_PIC_REG (bx)
+ cmpl $0, __have_futex_clock_realtime@GOTOFF(%ebx)
+# else
+ cmpl $0, __have_futex_clock_realtime
+# endif
+ je .Lreltmo
+# endif
+
+ movl %ecx, %ebx
+ movl %esi, %ecx
+ movl %edx, %esi
+ movl $0xffffffff, %ebp
+ LOAD_FUTEX_WAIT_ABS (%ecx)
+
+ movl $2, %edx
+ cmpl %edx, %eax
+ jne 2f
+
+1: movl $SYS_futex, %eax
+ movl $2, %edx
+ ENTER_KERNEL
+
+2: xchgl %edx, (%ebx) /* NB: lock is implied */
+
+ testl %edx, %edx
+ jz 3f
+
+ cmpl $-ETIMEDOUT, %eax
+ je 4f
+ cmpl $-EINVAL, %eax
+ jne 1b
+4: movl %eax, %edx
+ negl %edx
+
+3: movl %edx, %eax
+7: popl %ebx
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebx)
+ popl %ebp
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebp)
+ ret
+
+# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+.Lreltmo:
/* Check for a valid timeout value. */
cmpl $1000000000, 4(%edx)
jae 3f
- pushl %edi
- cfi_adjust_cfa_offset(4)
pushl %esi
cfi_adjust_cfa_offset(4)
- pushl %ebx
- cfi_adjust_cfa_offset(4)
- pushl %ebp
+ cfi_rel_offset(%esi, 0)
+ pushl %edi
cfi_adjust_cfa_offset(4)
- cfi_offset(%edi, -8)
- cfi_offset(%esi, -12)
- cfi_offset(%ebx, -16)
- cfi_offset(%ebp, -20)
+ cfi_rel_offset(%edi, 0)
/* Stack frame for the timespec and timeval structs. */
subl $8, %esp
@@ -236,23 +295,24 @@ __lll_timedlock_wait:
6: addl $8, %esp
cfi_adjust_cfa_offset(-8)
- popl %ebp
- cfi_adjust_cfa_offset(-4)
- cfi_restore(%ebp)
- popl %ebx
+ popl %edi
cfi_adjust_cfa_offset(-4)
- cfi_restore(%ebx)
+ cfi_restore(%edi)
popl %esi
cfi_adjust_cfa_offset(-4)
cfi_restore(%esi)
- popl %edi
+7: popl %ebx
cfi_adjust_cfa_offset(-4)
- cfi_restore(%edi)
+ cfi_restore(%ebx)
+ popl %ebp
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebp)
movl %edx, %eax
ret
-3: movl $EINVAL, %eax
- ret
+3: movl $EINVAL, %edx
+ jmp 7b
+# endif
cfi_endproc
.size __lll_timedlock_wait,.-__lll_timedlock_wait
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
index f46b4b874a..a7ca78f78d 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002,2003,2004,2006,2007,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -35,16 +35,17 @@ __pthread_cond_broadcast:
cfi_startproc
pushl %ebx
cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%ebx, 0)
pushl %esi
cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%esi, 0)
pushl %edi
cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%edi, 0)
pushl %ebp
cfi_adjust_cfa_offset(4)
- cfi_offset(%ebx, -8)
- cfi_offset(%esi, -12)
- cfi_offset(%edi, -16)
- cfi_offset(%ebp, -20)
+ cfi_rel_offset(%ebp, 0)
+ cfi_remember_state
movl 20(%esp), %ebx
@@ -90,12 +91,17 @@ __pthread_cond_broadcast:
8: cmpl $-1, %edi
je 9f
- /* XXX: The kernel so far doesn't support requeue to PI futex. */
- /* XXX: The kernel only supports FUTEX_CMP_REQUEUE to the same
- type of futex (private resp. shared). */
- testl $(PI_BIT | PS_BIT), MUTEX_KIND(%edi)
+ /* Do not use requeue for pshared condvars. */
+ testl $PS_BIT, MUTEX_KIND(%edi)
jne 9f
+ /* Requeue to a non-robust PI mutex if the PI bit is set and
+ the robust bit is not set. */
+ movl MUTEX_KIND(%edi), %eax
+ andl $(ROBUST_BIT|PI_BIT), %eax
+ cmpl $PI_BIT, %eax
+ je 81f
+
/* Wake up all threads. */
#ifdef __ASSUME_PRIVATE_FUTEX
movl $(FUTEX_CMP_REQUEUE|FUTEX_PRIVATE_FLAG), %ecx
@@ -120,7 +126,7 @@ __pthread_cond_broadcast:
cmpl $0xfffff001, %eax
jae 9f
-10: xorl %eax, %eax
+6: xorl %eax, %eax
popl %ebp
cfi_adjust_cfa_offset(-4)
cfi_restore(%ebp)
@@ -135,37 +141,25 @@ __pthread_cond_broadcast:
cfi_restore(%ebx)
ret
- cfi_adjust_cfa_offset(16)
- cfi_offset(%ebx, -8)
- cfi_offset(%esi, -12)
- cfi_offset(%edi, -16)
- cfi_offset(%ebp, -20)
- .align 16
- /* Unlock. */
-4: LOCK
- subl $1, cond_lock-cond_futex(%ebx)
- jne 5f
+ cfi_restore_state
-6: xorl %eax, %eax
- popl %ebp
- cfi_adjust_cfa_offset(-4)
- cfi_restore(%ebp)
- popl %edi
- cfi_adjust_cfa_offset(-4)
- cfi_restore(%edi)
- popl %esi
- cfi_adjust_cfa_offset(-4)
- cfi_restore(%esi)
- popl %ebx
- cfi_adjust_cfa_offset(-4)
- cfi_restore(%ebx)
- ret
+81: movl $(FUTEX_CMP_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %ecx
+ movl $SYS_futex, %eax
+ movl $0x7fffffff, %esi
+ movl $1, %edx
+ /* Get the address of the futex involved. */
+# if MUTEX_FUTEX != 0
+ addl $MUTEX_FUTEX, %edi
+# endif
+ int $0x80
+
+ /* For any kind of error, which mainly is EAGAIN, we try again
+ with WAKE. The general test also covers running on old
+ kernels. */
+ cmpl $0xfffff001, %eax
+ jb 6b
+ jmp 9f
- cfi_adjust_cfa_offset(16)
- cfi_offset(%ebx, -8)
- cfi_offset(%esi, -12)
- cfi_offset(%edi, -16)
- cfi_offset(%ebp, -20)
/* Initial locking failed. */
1:
#if cond_lock == 0
@@ -186,7 +180,13 @@ __pthread_cond_broadcast:
call __lll_lock_wait
jmp 2b
- /* Unlock in loop requires waekup. */
+ .align 16
+ /* Unlock. */
+4: LOCK
+ subl $1, cond_lock-cond_futex(%ebx)
+ je 6b
+
+ /* Unlock in loop requires wakeup. */
5: leal cond_lock-cond_futex(%ebx), %eax
#if (LLL_SHARED-LLL_PRIVATE) > 255
xorl %ecx, %ecx
@@ -201,7 +201,7 @@ __pthread_cond_broadcast:
call __lll_unlock_wake
jmp 6b
- /* Unlock in loop requires waekup. */
+ /* Unlock in loop requires wakeup. */
7: leal cond_lock-cond_futex(%ebx), %eax
#if (LLL_SHARED-LLL_PRIVATE) > 255
xorl %ecx, %ecx
@@ -232,7 +232,7 @@ __pthread_cond_broadcast:
addl $FUTEX_WAKE, %ecx
movl $SYS_futex, %eax
ENTER_KERNEL
- jmp 10b
+ jmp 6b
cfi_endproc
.size __pthread_cond_broadcast, .-__pthread_cond_broadcast
versioned_symbol (libpthread, __pthread_cond_broadcast, pthread_cond_broadcast,
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
index 4909f49107..9fc2cbfeaf 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002,2003,2004,2005,2007,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -22,6 +22,7 @@
#include <lowlevellock.h>
#include <lowlevelcond.h>
#include <kernel-features.h>
+#include <pthread-pi-defines.h>
#include <pthread-errnos.h>
@@ -36,10 +37,11 @@ __pthread_cond_signal:
cfi_startproc
pushl %ebx
cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%ebx, 0)
pushl %edi
cfi_adjust_cfa_offset(4)
- cfi_offset(%ebx, -8)
- cfi_offset(%edi, -12)
+ cfi_rel_offset(%edi, 0)
+ cfi_remember_state
movl 12(%esp), %edi
@@ -75,17 +77,27 @@ __pthread_cond_signal:
/* Wake up one thread. */
pushl %esi
cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%esi, 0)
pushl %ebp
cfi_adjust_cfa_offset(4)
- cfi_offset(%esi, -16)
- cfi_offset(%ebp, -20)
+ cfi_rel_offset(%ebp, 0)
#if FUTEX_PRIVATE_FLAG > 255
xorl %ecx, %ecx
#endif
cmpl $-1, dep_mutex-cond_futex(%ebx)
sete %cl
- subl $1, %ecx
+ je 8f
+
+ movl dep_mutex-cond_futex(%ebx), %edx
+ /* Requeue to a non-robust PI mutex if the PI bit is set and
+ the robust bit is not set. */
+ movl MUTEX_KIND(%edx), %eax
+ andl $(ROBUST_BIT|PI_BIT), %eax
+ cmpl $PI_BIT, %eax
+ je 9f
+
+8: subl $1, %ecx
#ifdef __ASSUME_PRIVATE_FUTEX
andl $FUTEX_PRIVATE_FLAG, %ecx
#else
@@ -121,12 +133,36 @@ __pthread_cond_signal:
cfi_restore(%ebx)
ret
- cfi_adjust_cfa_offset(8)
- cfi_offset(%ebx, -8)
- cfi_offset(%edi, -12)
+ cfi_restore_state
+
+9: movl $(FUTEX_CMP_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %ecx
+ movl $SYS_futex, %eax
+ movl $1, %edx
+ xorl %esi, %esi
+ movl dep_mutex-cond_futex(%ebx), %edi
+ movl (%ebx), %ebp
+ /* FIXME: Until Ingo fixes 4G/4G vDSO, 6 arg syscalls are broken for
+ sysenter.
+ ENTER_KERNEL */
+ int $0x80
+ popl %ebp
+ popl %esi
+
+ leal -cond_futex(%ebx), %edi
+
+ /* For any kind of error, we try again with WAKE.
+ The general test also covers running on old kernels. */
+ cmpl $-4095, %eax
+ jb 4f
+
+7:
+#ifdef __ASSUME_PRIVATE_FUTEX
+ andl $FUTEX_PRIVATE_FLAG, %ecx
+#else
+ andl %gs:PRIVATE_FUTEX, %ecx
+#endif
+ orl $FUTEX_WAKE, %ecx
-7: /* %ecx should be either FUTEX_WAKE_OP or
- FUTEX_WAKE_OP|FUTEX_PRIVATE_FLAG from the previous syscall. */
xorl $(FUTEX_WAKE ^ FUTEX_WAKE_OP), %ecx
movl $SYS_futex, %eax
/* %edx should be 1 already from $FUTEX_WAKE_OP syscall.
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
index 83f8db25bb..dee73f0c32 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2004,2006-2007,2009,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -22,6 +22,7 @@
#include <lowlevellock.h>
#include <lowlevelcond.h>
#include <pthread-errnos.h>
+#include <pthread-pi-defines.h>
#include <kernel-features.h>
@@ -34,14 +35,28 @@
.align 16
__pthread_cond_timedwait:
.LSTARTCODE:
+ cfi_startproc
+#ifdef SHARED
+ cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
+ DW.ref.__gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
+#else
+ cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
+#endif
+
pushl %ebp
-.Lpush_ebp:
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%ebp, 0)
pushl %edi
-.Lpush_edi:
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%edi, 0)
pushl %esi
-.Lpush_esi:
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%esi, 0)
pushl %ebx
-.Lpush_ebx:
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%ebx, 0)
movl 20(%esp), %ebx
movl 28(%esp), %ebp
@@ -80,9 +95,10 @@ __pthread_cond_timedwait:
addl $1, cond_futex(%ebx)
addl $(1 << nwaiters_shift), cond_nwaiters(%ebx)
-#define FRAME_SIZE 24
+#define FRAME_SIZE 32
subl $FRAME_SIZE, %esp
-.Lsubl:
+ cfi_adjust_cfa_offset(FRAME_SIZE)
+ cfi_remember_state
/* Get and store current wakeup_seq value. */
movl wakeup_seq(%ebx), %edi
@@ -92,8 +108,10 @@ __pthread_cond_timedwait:
movl %edx, 16(%esp)
movl %eax, 20(%esp)
+ /* Reset the pi-requeued flag. */
+8: movl $0, 24(%esp)
/* Get the current time. */
-8: movl %ebx, %edx
+ movl %ebx, %edx
#ifdef __NR_clock_gettime
/* Get the clock number. */
movl cond_nwaiters(%ebx), %ebx
@@ -143,6 +161,7 @@ __pthread_cond_timedwait:
movl %edx, 8(%esp)
movl cond_futex(%ebx), %edi
+ movl %edi, 28(%esp)
/* Unlock. */
LOCK
@@ -157,13 +176,50 @@ __pthread_cond_timedwait:
4: call __pthread_enable_asynccancel
movl %eax, (%esp)
- leal 4(%esp), %esi
#if FUTEX_PRIVATE_FLAG > 255
xorl %ecx, %ecx
#endif
cmpl $-1, dep_mutex(%ebx)
sete %cl
- subl $1, %ecx
+ je 40f
+
+ movl dep_mutex(%ebx), %edi
+ /* Requeue to a non-robust PI mutex if the PI bit is set and
+ the robust bit is not set. */
+ movl MUTEX_KIND(%edi), %eax
+ andl $(ROBUST_BIT|PI_BIT), %eax
+ cmpl $PI_BIT, %eax
+ jne 40f
+
+ movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %ecx
+ /* The following only works like this because we only support
+ two clocks, represented using a single bit. */
+ testl $1, cond_nwaiters(%ebx)
+ /* XXX Need to implement using sete instead of a jump. */
+ jne 42f
+ orl $FUTEX_CLOCK_REALTIME, %ecx
+
+ /* Requeue-PI uses absolute timeout */
+42: leal (%ebp), %esi
+ movl 28(%esp), %edx
+ addl $cond_futex, %ebx
+ movl $SYS_futex, %eax
+ ENTER_KERNEL
+ subl $cond_futex, %ebx
+ movl %eax, %esi
+ /* Set the pi-requeued flag only if the kernel has returned 0. The
+ kernel does not hold the mutex on ETIMEDOUT or any other error. */
+ cmpl $0, %eax
+ sete 24(%esp)
+ je 41f
+
+ /* Normal and PI futexes dont mix. Use normal futex functions only
+ if the kernel does not support the PI futex functions. */
+ cmpl $-ENOSYS, %eax
+ jne 41f
+ xorl %ecx, %ecx
+
+40: subl $1, %ecx
#ifdef __ASSUME_PRIVATE_FUTEX
andl $FUTEX_PRIVATE_FLAG, %ecx
#else
@@ -172,7 +228,8 @@ __pthread_cond_timedwait:
#if FUTEX_WAIT != 0
addl $FUTEX_WAIT, %ecx
#endif
- movl %edi, %edx
+ leal 4(%esp), %esi
+ movl 28(%esp), %edx
addl $cond_futex, %ebx
.Ladd_cond_futex:
movl $SYS_futex, %eax
@@ -181,7 +238,7 @@ __pthread_cond_timedwait:
.Lsub_cond_futex:
movl %eax, %esi
- movl (%esp), %eax
+41: movl (%esp), %eax
call __pthread_disable_asynccancel
.LcleanupEND:
@@ -269,11 +326,15 @@ __pthread_cond_timedwait:
#endif
jne 10f
- /* Remove cancellation handler. */
11: movl 24+FRAME_SIZE(%esp), %eax
+ /* With requeue_pi, the mutex lock is held in the kernel. */
+ movl 24(%esp), %ecx
+ testl %ecx, %ecx
+ jnz 27f
+
call __pthread_mutex_cond_lock
- addl $FRAME_SIZE, %esp
-.Laddl:
+26: addl $FRAME_SIZE, %esp
+ cfi_adjust_cfa_offset(-FRAME_SIZE);
/* We return the result of the mutex_lock operation if it failed. */
testl %eax, %eax
@@ -286,19 +347,29 @@ __pthread_cond_timedwait:
#endif
18: popl %ebx
-.Lpop_ebx:
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebx)
popl %esi
-.Lpop_esi:
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%esi)
popl %edi
-.Lpop_edi:
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%edi)
popl %ebp
-.Lpop_ebp:
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebp)
ret
+ cfi_restore_state
+
+27: call __pthread_mutex_cond_lock_adjust
+ xorl %eax, %eax
+ jmp 26b
+
+ cfi_adjust_cfa_offset(-FRAME_SIZE);
/* Initial locking failed. */
1:
-.LSbl1:
#if cond_lock == 0
movl %ebx, %edx
#else
@@ -317,9 +388,17 @@ __pthread_cond_timedwait:
call __lll_lock_wait
jmp 2b
- /* Unlock in loop requires wakeup. */
-3:
-.LSbl2:
+ /* The initial unlocking of the mutex failed. */
+16:
+ LOCK
+#if cond_lock == 0
+ subl $1, (%ebx)
+#else
+ subl $1, cond_lock(%ebx)
+#endif
+ jne 18b
+
+ movl %eax, %esi
#if cond_lock == 0
movl %ebx, %eax
#else
@@ -336,14 +415,18 @@ __pthread_cond_timedwait:
addl $LLL_PRIVATE, %ecx
#endif
call __lll_unlock_wake
- jmp 4b
- /* Locking in loop failed. */
-5:
+ movl %esi, %eax
+ jmp 18b
+
+ cfi_adjust_cfa_offset(FRAME_SIZE)
+
+ /* Unlock in loop requires wakeup. */
+3:
#if cond_lock == 0
- movl %ebx, %edx
+ movl %ebx, %eax
#else
- leal cond_lock(%ebx), %edx
+ leal cond_lock(%ebx), %eax
#endif
#if (LLL_SHARED-LLL_PRIVATE) > 255
xorl %ecx, %ecx
@@ -355,15 +438,15 @@ __pthread_cond_timedwait:
#if LLL_PRIVATE != 0
addl $LLL_PRIVATE, %ecx
#endif
- call __lll_lock_wait
- jmp 6b
+ call __lll_unlock_wake
+ jmp 4b
- /* Unlock after loop requires wakeup. */
-10:
+ /* Locking in loop failed. */
+5:
#if cond_lock == 0
- movl %ebx, %eax
+ movl %ebx, %edx
#else
- leal cond_lock(%ebx), %eax
+ leal cond_lock(%ebx), %edx
#endif
#if (LLL_SHARED-LLL_PRIVATE) > 255
xorl %ecx, %ecx
@@ -375,21 +458,11 @@ __pthread_cond_timedwait:
#if LLL_PRIVATE != 0
addl $LLL_PRIVATE, %ecx
#endif
- call __lll_unlock_wake
- jmp 11b
-
- /* The initial unlocking of the mutex failed. */
-16:
-.LSbl3:
- LOCK
-#if cond_lock == 0
- subl $1, (%ebx)
-#else
- subl $1, cond_lock(%ebx)
-#endif
- jne 18b
+ call __lll_lock_wait
+ jmp 6b
- movl %eax, %esi
+ /* Unlock after loop requires wakeup. */
+10:
#if cond_lock == 0
movl %ebx, %eax
#else
@@ -406,13 +479,10 @@ __pthread_cond_timedwait:
addl $LLL_PRIVATE, %ecx
#endif
call __lll_unlock_wake
-
- movl %esi, %eax
- jmp 18b
+ jmp 11b
#if defined __NR_clock_gettime && !defined __ASSUME_POSIX_TIMERS
/* clock_gettime not available. */
-.LSbl4:
19: leal 4(%esp), %ebx
xorl %ecx, %ecx
movl $__NR_gettimeofday, %eax
@@ -443,7 +513,6 @@ versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
.type __condvar_tw_cleanup2, @function
__condvar_tw_cleanup2:
subl $cond_futex, %ebx
-.LSbl5:
.size __condvar_tw_cleanup2, .-__condvar_tw_cleanup2
.type __condvar_tw_cleanup, @function
__condvar_tw_cleanup:
@@ -583,14 +652,15 @@ __condvar_tw_cleanup:
call _Unwind_Resume
hlt
.LENDCODE:
+ cfi_endproc
.size __condvar_tw_cleanup, .-__condvar_tw_cleanup
.section .gcc_except_table,"a",@progbits
.LexceptSTART:
- .byte 0xff # @LPStart format (omit)
- .byte 0xff # @TType format (omit)
- .byte 0x0b # call-site format
+ .byte DW_EH_PE_omit # @LPStart format (omit)
+ .byte DW_EH_PE_omit # @TType format (omit)
+ .byte DW_EH_PE_sdata4 # call-site format
# DW_EH_PE_sdata4
.uleb128 .Lcstend-.Lcstbegin
.Lcstbegin:
@@ -613,144 +683,13 @@ __condvar_tw_cleanup:
.Lcstend:
- .section .eh_frame,"a",@progbits
-.LSTARTFRAME:
- .long L(ENDCIE)-L(STARTCIE) # Length of the CIE.
-.LSTARTCIE:
- .long 0 # CIE ID.
- .byte 1 # Version number.
-#ifdef SHARED
- .string "zPLR" # NUL-terminated augmentation
- # string.
-#else
- .string "zPL" # NUL-terminated augmentation
- # string.
-#endif
- .uleb128 1 # Code alignment factor.
- .sleb128 -4 # Data alignment factor.
- .byte 8 # Return address register
- # column.
-#ifdef SHARED
- .uleb128 7 # Augmentation value length.
- .byte 0x9b # Personality: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4
- # + DW_EH_PE_indirect
- .long DW.ref.__gcc_personality_v0-.
- .byte 0x1b # LSDA Encoding: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4.
- .byte 0x1b # FDE Encoding: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4.
-#else
- .uleb128 6 # Augmentation value length.
- .byte 0x0 # Personality: absolute
- .long __gcc_personality_v0
- .byte 0x0 # LSDA Encoding: absolute
-#endif
- .byte 0x0c # DW_CFA_def_cfa
- .uleb128 4
- .uleb128 4
- .byte 0x88 # DW_CFA_offset, column 0x8
- .uleb128 1
- .align 4
-.LENDCIE:
-
- .long .LENDFDE-.LSTARTFDE # Length of the FDE.
-.LSTARTFDE:
- .long .LSTARTFDE-.LSTARTFRAME # CIE pointer.
-#ifdef SHARED
- .long .LSTARTCODE-. # PC-relative start address
- # of the code
-#else
- .long .LSTARTCODE # Start address of the code.
-#endif
- .long .LENDCODE-.LSTARTCODE # Length of the code.
- .uleb128 4 # Augmentation size
-#ifdef SHARED
- .long .LexceptSTART-.
-#else
- .long .LexceptSTART
-#endif
- .byte 0x40+.Lpush_ebp-.LSTARTCODE # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 8
- .byte 0x85 # DW_CFA_offset %ebp
- .uleb128 2
- .byte 0x40+ .Lpush_edi-.Lpush_ebp # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 12
- .byte 0x87 # DW_CFA_offset %edi
- .uleb128 3
- .byte 0x40+.Lpush_esi-.Lpush_edi # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 0x86 # DW_CFA_offset %esi
- .uleb128 4
- .byte 0x40+.Lpush_ebx-.Lpush_esi # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 20
- .byte 0x83 # DW_CFA_offset %ebx
- .uleb128 5
- .byte 4 # DW_CFA_advance_loc4
- .4byte .Lsubl-.Lpush_ebx
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 20+FRAME_SIZE
- .byte 4 # DW_CFA_advance_loc4
- .4byte .Laddl-.Lsubl
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 20
- .byte 0x40+.Lpop_ebx-.Laddl # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 0xc3 # DW_CFA_restore %ebx
- .byte 0x40+.Lpop_esi-.Lpop_ebx # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 12
- .byte 0xc6 # DW_CFA_restore %esi
- .byte 0x40+.Lpop_edi-.Lpop_esi # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 8
- .byte 0xc7 # DW_CFA_restore %edi
- .byte 0x40+.Lpop_ebp-.Lpop_edi # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 4
- .byte 0xc5 # DW_CFA_restore %ebp
- .byte 0x40+.LSbl1-.Lpop_edi # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 20
- .byte 4 # DW_CFA_advance_loc4
- .4byte .LSbl2-.LSbl1
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 20+FRAME_SIZE
- .byte 0x85 # DW_CFA_offset %ebp
- .uleb128 2
- .byte 0x87 # DW_CFA_offset %edi
- .uleb128 3
- .byte 0x86 # DW_CFA_offset %esi
- .uleb128 4
- .byte 0x83 # DW_CFA_offset %ebx
- .uleb128 5
- .byte 4 # DW_CFA_advance_loc4
- .4byte .LSbl3-.LSbl2
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 20
- .byte 4 # DW_CFA_advance_loc4
-#if defined __NR_clock_gettime && !defined __ASSUME_POSIX_TIMERS
- .4byte .LSbl4-.LSbl3
-#else
- .4byte .LSbl5-.LSbl3
-#endif
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 20+FRAME_SIZE
- .align 4
-.LENDFDE:
-
#ifdef SHARED
.hidden DW.ref.__gcc_personality_v0
- .weak DW.ref.__gcc_personality_v0
+ .weak DW.ref.__gcc_personality_v0
.section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
- .align 4
- .type DW.ref.__gcc_personality_v0, @object
- .size DW.ref.__gcc_personality_v0, 4
+ .align 4
+ .type DW.ref.__gcc_personality_v0, @object
+ .size DW.ref.__gcc_personality_v0, 4
DW.ref.__gcc_personality_v0:
.long __gcc_personality_v0
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
index 5b301979b5..53970d755f 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2004,2006-2007,2009,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -22,6 +22,8 @@
#include <lowlevellock.h>
#include <lowlevelcond.h>
#include <tcb-offsets.h>
+#include <pthread-errnos.h>
+#include <pthread-pi-defines.h>
#include <kernel-features.h>
@@ -33,16 +35,31 @@
.align 16
__pthread_cond_wait:
.LSTARTCODE:
+ cfi_startproc
+#ifdef SHARED
+ cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
+ DW.ref.__gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
+#else
+ cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
+#endif
+ pushl %ebp
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%ebp, 0)
pushl %edi
-.Lpush_edi:
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%edi, 0)
pushl %esi
-.Lpush_esi:
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%esi, 0)
pushl %ebx
-.Lpush_ebx:
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset(%ebx, 0)
xorl %esi, %esi
- movl 16(%esp), %ebx
+ movl 20(%esp), %ebx
/* Get internal lock. */
movl $1, %edx
@@ -58,7 +75,7 @@ __pthread_cond_wait:
/* Store the reference to the mutex. If there is already a
different value in there this is a bad user bug. */
2: cmpl $-1, dep_mutex(%ebx)
- movl 20(%esp), %eax
+ movl 24(%esp), %eax
je 15f
movl %eax, dep_mutex(%ebx)
@@ -74,9 +91,10 @@ __pthread_cond_wait:
addl $1, cond_futex(%ebx)
addl $(1 << nwaiters_shift), cond_nwaiters(%ebx)
-#define FRAME_SIZE 16
+#define FRAME_SIZE 20
subl $FRAME_SIZE, %esp
-.Lsubl:
+ cfi_adjust_cfa_offset(FRAME_SIZE)
+ cfi_remember_state
/* Get and store current wakeup_seq value. */
movl wakeup_seq(%ebx), %edi
@@ -86,7 +104,9 @@ __pthread_cond_wait:
movl %edx, 8(%esp)
movl %eax, 12(%esp)
-8: movl cond_futex(%ebx), %edi
+ /* Reset the pi-requeued flag. */
+8: movl $0, 16(%esp)
+ movl cond_futex(%ebx), %ebp
/* Unlock. */
LOCK
@@ -101,12 +121,39 @@ __pthread_cond_wait:
4: call __pthread_enable_asynccancel
movl %eax, (%esp)
-#if FUTEX_PRIVATE_FLAG > 255
xorl %ecx, %ecx
-#endif
cmpl $-1, dep_mutex(%ebx)
sete %cl
- subl $1, %ecx
+ je 18f
+
+ movl dep_mutex(%ebx), %edi
+ /* Requeue to a non-robust PI mutex if the PI bit is set and
+ the robust bit is not set. */
+ movl MUTEX_KIND(%edi), %eax
+ andl $(ROBUST_BIT|PI_BIT), %eax
+ cmpl $PI_BIT, %eax
+ jne 18f
+
+ movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %ecx
+ movl %ebp, %edx
+ xorl %esi, %esi
+ addl $cond_futex, %ebx
+ movl $SYS_futex, %eax
+ ENTER_KERNEL
+ subl $cond_futex, %ebx
+ /* Set the pi-requeued flag only if the kernel has returned 0. The
+ kernel does not hold the mutex on error. */
+ cmpl $0, %eax
+ sete 16(%esp)
+ je 19f
+
+ /* Normal and PI futexes dont mix. Use normal futex functions only
+ if the kernel does not support the PI futex functions. */
+ cmpl $-ENOSYS, %eax
+ jne 19f
+ xorl %ecx, %ecx
+
+18: subl $1, %ecx
#ifdef __ASSUME_PRIVATE_FUTEX
andl $FUTEX_PRIVATE_FLAG, %ecx
#else
@@ -115,7 +162,7 @@ __pthread_cond_wait:
#if FUTEX_WAIT != 0
addl $FUTEX_WAIT, %ecx
#endif
- movl %edi, %edx
+ movl %ebp, %edx
addl $cond_futex, %ebx
.Ladd_cond_futex:
movl $SYS_futex, %eax
@@ -123,7 +170,7 @@ __pthread_cond_wait:
subl $cond_futex, %ebx
.Lsub_cond_futex:
- movl (%esp), %eax
+19: movl (%esp), %eax
call __pthread_disable_asynccancel
.LcleanupEND:
@@ -199,24 +246,41 @@ __pthread_cond_wait:
#endif
jne 10f
-11: movl 20+FRAME_SIZE(%esp), %eax
+ /* With requeue_pi, the mutex lock is held in the kernel. */
+11: movl 24+FRAME_SIZE(%esp), %eax
+ movl 16(%esp), %ecx
+ testl %ecx, %ecx
+ jnz 21f
+
call __pthread_mutex_cond_lock
- addl $FRAME_SIZE, %esp
-.Laddl:
+20: addl $FRAME_SIZE, %esp
+ cfi_adjust_cfa_offset(-FRAME_SIZE);
14: popl %ebx
-.Lpop_ebx:
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebx)
popl %esi
-.Lpop_esi:
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%esi)
popl %edi
-.Lpop_edi:
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%edi)
+ popl %ebp
+ cfi_adjust_cfa_offset(-4)
+ cfi_restore(%ebp)
/* We return the result of the mutex_lock operation. */
ret
+ cfi_restore_state
+
+21: call __pthread_mutex_cond_lock_adjust
+ xorl %eax, %eax
+ jmp 20b
+
+ cfi_adjust_cfa_offset(-FRAME_SIZE);
/* Initial locking failed. */
1:
-.LSbl1:
#if cond_lock == 0
movl %ebx, %edx
#else
@@ -235,9 +299,17 @@ __pthread_cond_wait:
call __lll_lock_wait
jmp 2b
- /* Unlock in loop requires waekup. */
-3:
-.LSbl2:
+ /* The initial unlocking of the mutex failed. */
+12:
+ LOCK
+#if cond_lock == 0
+ subl $1, (%ebx)
+#else
+ subl $1, cond_lock(%ebx)
+#endif
+ jne 14b
+
+ movl %eax, %esi
#if cond_lock == 0
movl %ebx, %eax
#else
@@ -254,14 +326,18 @@ __pthread_cond_wait:
addl $LLL_PRIVATE, %ecx
#endif
call __lll_unlock_wake
- jmp 4b
- /* Locking in loop failed. */
-5:
+ movl %esi, %eax
+ jmp 14b
+
+ cfi_adjust_cfa_offset(FRAME_SIZE)
+
+ /* Unlock in loop requires wakeup. */
+3:
#if cond_lock == 0
- movl %ebx, %edx
+ movl %ebx, %eax
#else
- leal cond_lock(%ebx), %edx
+ leal cond_lock(%ebx), %eax
#endif
#if (LLL_SHARED-LLL_PRIVATE) > 255
xorl %ecx, %ecx
@@ -273,15 +349,15 @@ __pthread_cond_wait:
#if LLL_PRIVATE != 0
addl $LLL_PRIVATE, %ecx
#endif
- call __lll_lock_wait
- jmp 6b
+ call __lll_unlock_wake
+ jmp 4b
- /* Unlock after loop requires wakeup. */
-10:
+ /* Locking in loop failed. */
+5:
#if cond_lock == 0
- movl %ebx, %eax
+ movl %ebx, %edx
#else
- leal cond_lock(%ebx), %eax
+ leal cond_lock(%ebx), %edx
#endif
#if (LLL_SHARED-LLL_PRIVATE) > 255
xorl %ecx, %ecx
@@ -293,21 +369,11 @@ __pthread_cond_wait:
#if LLL_PRIVATE != 0
addl $LLL_PRIVATE, %ecx
#endif
- call __lll_unlock_wake
- jmp 11b
-
- /* The initial unlocking of the mutex failed. */
-12:
-.LSbl3:
- LOCK
-#if cond_lock == 0
- subl $1, (%ebx)
-#else
- subl $1, cond_lock(%ebx)
-#endif
- jne 14b
+ call __lll_lock_wait
+ jmp 6b
- movl %eax, %esi
+ /* Unlock after loop requires wakeup. */
+10:
#if cond_lock == 0
movl %ebx, %eax
#else
@@ -324,9 +390,7 @@ __pthread_cond_wait:
addl $LLL_PRIVATE, %ecx
#endif
call __lll_unlock_wake
-
- movl %esi, %eax
- jmp 14b
+ jmp 11b
.size __pthread_cond_wait, .-__pthread_cond_wait
versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
GLIBC_2_3_2)
@@ -467,7 +531,7 @@ __condvar_w_cleanup:
movl $0x7fffffff, %edx
ENTER_KERNEL
-5: movl 20+FRAME_SIZE(%esp), %eax
+5: movl 24+FRAME_SIZE(%esp), %eax
call __pthread_mutex_cond_lock
movl %esi, (%esp)
@@ -475,14 +539,15 @@ __condvar_w_cleanup:
call _Unwind_Resume
hlt
.LENDCODE:
+ cfi_endproc
.size __condvar_w_cleanup, .-__condvar_w_cleanup
.section .gcc_except_table,"a",@progbits
.LexceptSTART:
- .byte 0xff # @LPStart format (omit)
- .byte 0xff # @TType format (omit)
- .byte 0x0b # call-site format
+ .byte DW_EH_PE_omit # @LPStart format (omit)
+ .byte DW_EH_PE_omit # @TType format (omit)
+ .byte DW_EH_PE_sdata4 # call-site format
# DW_EH_PE_sdata4
.uleb128 .Lcstend-.Lcstbegin
.Lcstbegin:
@@ -504,123 +569,6 @@ __condvar_w_cleanup:
.uleb128 0
.Lcstend:
- .section .eh_frame,"a",@progbits
-.LSTARTFRAME:
- .long L(ENDCIE)-L(STARTCIE) # Length of the CIE.
-.LSTARTCIE:
- .long 0 # CIE ID.
- .byte 1 # Version number.
-#ifdef SHARED
- .string "zPLR" # NUL-terminated augmentation
- # string.
-#else
- .string "zPL" # NUL-terminated augmentation
- # string.
-#endif
- .uleb128 1 # Code alignment factor.
- .sleb128 -4 # Data alignment factor.
- .byte 8 # Return address register
- # column.
-#ifdef SHARED
- .uleb128 7 # Augmentation value length.
- .byte 0x9b # Personality: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4
- # + DW_EH_PE_indirect
- .long DW.ref.__gcc_personality_v0-.
- .byte 0x1b # LSDA Encoding: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4.
- .byte 0x1b # FDE Encoding: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4.
-#else
- .uleb128 6 # Augmentation value length.
- .byte 0x0 # Personality: absolute
- .long __gcc_personality_v0
- .byte 0x0 # LSDA Encoding: absolute
-#endif
- .byte 0x0c # DW_CFA_def_cfa
- .uleb128 4
- .uleb128 4
- .byte 0x88 # DW_CFA_offset, column 0x8
- .uleb128 1
- .align 4
-.LENDCIE:
-
- .long .LENDFDE-.LSTARTFDE # Length of the FDE.
-.LSTARTFDE:
- .long .LSTARTFDE-.LSTARTFRAME # CIE pointer.
-#ifdef SHARED
- .long .LSTARTCODE-. # PC-relative start address
- # of the code.
-#else
- .long .LSTARTCODE # Start address of the code.
-#endif
- .long .LENDCODE-.LSTARTCODE # Length of the code.
- .uleb128 4 # Augmentation size
-#ifdef SHARED
- .long .LexceptSTART-.
-#else
- .long .LexceptSTART
-#endif
- .byte 0x40+.Lpush_edi-.LSTARTCODE # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 8
- .byte 0x87 # DW_CFA_offset %edi
- .uleb128 2
- .byte 0x40+.Lpush_esi-.Lpush_edi # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 12
- .byte 0x86 # DW_CFA_offset %esi
- .uleb128 3
- .byte 0x40+.Lpush_ebx-.Lpush_esi # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 0x83 # DW_CFA_offset %ebx
- .uleb128 4
- .byte 4 # DW_CFA_advance_loc4
- .4byte .Lsubl-.Lpush_ebx
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16+FRAME_SIZE
- .byte 4 # DW_CFA_advance_loc4
- .4byte .Laddl-.Lsubl
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 0x40+ .Lpop_ebx-.Laddl # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 12
- .byte 0xc3 # DW_CFA_restore %ebx
- .byte 0x40+.Lpop_esi-.Lpop_ebx # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 8
- .byte 0xc6 # DW_CFA_restore %esi
- .byte 0x40+.Lpop_edi-.Lpop_esi # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 4
- .byte 0xc7 # DW_CFA_restore %edi
- .byte 0x40+.LSbl1-.Lpop_edi # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 0x87 # DW_CFA_offset %edi
- .uleb128 2
- .byte 0x86 # DW_CFA_offset %esi
- .uleb128 3
- .byte 0x83 # DW_CFA_offset %ebx
- .uleb128 4
- .byte 4 # DW_CFA_advance_loc4
- .4byte .LSbl2-.LSbl1
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16+FRAME_SIZE
- .byte 4 # DW_CFA_advance_loc4
- .4byte .LSbl3-.LSbl2
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 4 # DW_CFA_advance_loc4
- .4byte .LSbl4-.LSbl3
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16+FRAME_SIZE
- .align 4
-.LENDFDE:
-
-
#ifdef PIC
.section .gnu.linkonce.t.__i686.get_pc_thunk.cx,"ax",@progbits
.globl __i686.get_pc_thunk.cx
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
index 13a36d64cc..18013a8df4 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -131,10 +131,10 @@ sem_timedwait:
xorl %eax, %eax
-10: LOCK
+ LOCK
decl NWAITERS(%ebx)
- addl $12, %esp
+10: addl $12, %esp
.Ladd_esp:
popl %ebx
.Lpop_ebx:
@@ -268,19 +268,19 @@ sem_wait_cleanup:
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 8
.byte 0x86 # DW_CFA_offset %esi
- .uleb128 2
+ .uleb128 2
.byte 4 # DW_CFA_advance_loc4
.long .Lpush_edi-.Lpush_esi
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 12
.byte 0x87 # DW_CFA_offset %edi
- .uleb128 3
+ .uleb128 3
.byte 4 # DW_CFA_advance_loc4
.long .Lpush_ebx-.Lpush_edi
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 16
.byte 0x83 # DW_CFA_offset %ebx
- .uleb128 4
+ .uleb128 4
.byte 4 # DW_CFA_advance_loc4
.long .Lsub_esp-.Lpush_ebx
.byte 14 # DW_CFA_def_cfa_offset
@@ -309,11 +309,11 @@ sem_wait_cleanup:
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 28
.byte 0x86 # DW_CFA_offset %esi
- .uleb128 2
+ .uleb128 2
.byte 0x87 # DW_CFA_offset %edi
- .uleb128 3
+ .uleb128 3
.byte 0x83 # DW_CFA_offset %ebx
- .uleb128 4
+ .uleb128 4
.align 4
.LENDFDE:
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
index d53559c074..4bb585af3b 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2004, 2006-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -52,7 +52,14 @@
#define FUTEX_LOCK_PI 6
#define FUTEX_UNLOCK_PI 7
#define FUTEX_TRYLOCK_PI 8
+#define FUTEX_WAIT_BITSET 9
+#define FUTEX_WAKE_BITSET 10
+#define FUTEX_WAIT_REQUEUE_PI 11
+#define FUTEX_CMP_REQUEUE_PI 12
#define FUTEX_PRIVATE_FLAG 128
+#define FUTEX_CLOCK_REALTIME 256
+
+#define FUTEX_BITSET_MATCH_ANY 0xffffffff
#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1)
@@ -86,7 +93,7 @@
asm ("andl %%gs:%P1, %0" : "+r" (__fl) \
: "i" (offsetof (struct pthread, header.private_futex))); \
__fl | (fl); }))
-# endif
+# endif
#endif
#ifndef __ASSEMBLER__
diff --git a/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h
index ada79851e2..b419c9a5e1 100644
--- a/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2006-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
@@ -37,7 +37,12 @@
#define FUTEX_LOCK_PI 6
#define FUTEX_UNLOCK_PI 7
#define FUTEX_TRYLOCK_PI 8
+#define FUTEX_WAIT_BITSET 9
+#define FUTEX_WAKE_BITSET 10
#define FUTEX_PRIVATE_FLAG 128
+#define FUTEX_CLOCK_REALTIME 256
+
+#define FUTEX_BITSET_MATCH_ANY 0xffffffff
/* Values for 'private' parameter of locking macros. Yes, the
definition seems to be backwards. But it is not. The bit will be
@@ -67,7 +72,7 @@
: (fl)) \
: ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG) \
& THREAD_GETMEM (THREAD_SELF, header.private_futex))))
-# endif
+# endif
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c b/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
index 4b614bd1a6..8924c4f450 100644
--- a/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
+++ b/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002,2003,2005,2006,2007,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -56,10 +56,10 @@ __libc_pthread_init (ptr, reclaim, functions)
union ptrhack
{
struct pthread_functions pf;
- void *parr[1];
- } const *src;
- union ptrhack *dest;
# define NPTRS (sizeof (struct pthread_functions) / sizeof (void *))
+ void *parr[NPTRS];
+ } __attribute__ ((may_alias)) const *src;
+ union ptrhack *dest;
src = (const void *) functions;
dest = (void *) &__libc_pthread_functions;
diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
index 80b9a4369e..66c02cbbdd 100644
--- a/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2006-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
@@ -38,7 +38,12 @@
#define FUTEX_LOCK_PI 6
#define FUTEX_UNLOCK_PI 7
#define FUTEX_TRYLOCK_PI 8
+#define FUTEX_WAIT_BITSET 9
+#define FUTEX_WAKE_BITSET 10
#define FUTEX_PRIVATE_FLAG 128
+#define FUTEX_CLOCK_REALTIME 256
+
+#define FUTEX_BITSET_MATCH_ANY 0xffffffff
/* Values for 'private' parameter of locking macros. Yes, the
definition seems to be backwards. But it is not. The bit will be
@@ -67,7 +72,7 @@
: (fl)) \
: ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG) \
& THREAD_GETMEM (THREAD_SELF, header.private_futex))))
-# endif
+# endif
#endif
#define lll_futex_wait(futexp, val, private) \
@@ -131,8 +136,8 @@
FUTEX_OP_CLEAR_WAKE_IF_GT_ONE); \
INTERNAL_SYSCALL_ERROR_P (__ret, __err); \
})
-
-
+
+
#ifdef UP
# define __lll_acq_instr ""
# define __lll_rel_instr ""
diff --git a/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.sym b/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.sym
index d985c6a79b..46fbd0de74 100644
--- a/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.sym
+++ b/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.sym
@@ -3,5 +3,6 @@
-- These PI macros are used by assembly code.
MUTEX_KIND offsetof (pthread_mutex_t, __data.__kind)
+ROBUST_BIT PTHREAD_MUTEX_ROBUST_NORMAL_NP
PI_BIT PTHREAD_MUTEX_PRIO_INHERIT_NP
PS_BIT PTHREAD_MUTEX_PSHARED_BIT
diff --git a/nptl/sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c b/nptl/sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c
index 93841c5b3e..b417da5e22 100644
--- a/nptl/sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c
+++ b/nptl/sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c
@@ -8,6 +8,7 @@
lll_robust_cond_lock ((mutex)->__data.__lock, id, \
PTHREAD_ROBUST_MUTEX_PSHARED (mutex))
#define __pthread_mutex_lock __pthread_mutex_cond_lock
+#define __pthread_mutex_lock_full __pthread_mutex_cond_lock_full
#define NO_INCR
#include <nptl/pthread_mutex_lock.c>
diff --git a/nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c b/nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c
new file mode 100644
index 0000000000..4440703b6a
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c
@@ -0,0 +1,83 @@
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <signal.h>
+#include <string.h>
+#include <unistd.h>
+#include <pthreadP.h>
+#include <tls.h>
+#include <sysdep.h>
+#include <kernel-features.h>
+
+
+int
+pthread_sigqueue (threadid, signo, value)
+ pthread_t threadid;
+ int signo;
+ const union sigval value;
+{
+#ifdef __NR_rt_tgsigqueueinfo
+ struct pthread *pd = (struct pthread *) threadid;
+
+ /* Make sure the descriptor is valid. */
+ if (DEBUGGING_P && INVALID_TD_P (pd))
+ /* Not a valid thread handle. */
+ return ESRCH;
+
+ /* Force load of pd->tid into local variable or register. Otherwise
+ if a thread exits between ESRCH test and tgkill, we might return
+ EINVAL, because pd->tid would be cleared by the kernel. */
+ pid_t tid = atomic_forced_read (pd->tid);
+ if (__builtin_expect (tid <= 0, 0))
+ /* Not a valid thread handle. */
+ return ESRCH;
+
+ /* Disallow sending the signal we use for cancellation, timers, for
+ for the setxid implementation. */
+ if (signo == SIGCANCEL || signo == SIGTIMER || signo == SIGSETXID)
+ return EINVAL;
+
+ /* Set up the siginfo_t structure. */
+ siginfo_t info;
+ memset (&info, '\0', sizeof (siginfo_t));
+ info.si_signo = signo;
+ info.si_code = SI_QUEUE;
+ info.si_pid = THREAD_GETMEM (THREAD_SELF, pid);
+ info.si_uid = getuid ();
+ info.si_value = value;
+
+ /* We have a special syscall to do the work. */
+ INTERNAL_SYSCALL_DECL (err);
+
+ /* One comment: The PID field in the TCB can temporarily be changed
+ (in fork). But this must not affect this code here. Since this
+ function would have to be called while the thread is executing
+ fork, it would have to happen in a signal handler. But this is
+ no allowed, pthread_sigqueue is not guaranteed to be async-safe. */
+ int val = INTERNAL_SYSCALL (rt_tgsigqueueinfo, err, 4,
+ THREAD_GETMEM (THREAD_SELF, pid),
+ tid, signo, &info);
+
+ return (INTERNAL_SYSCALL_ERROR_P (val, err)
+ ? INTERNAL_SYSCALL_ERRNO (val, err) : 0);
+#else
+ return ENOSYS;
+#endif
+}
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
index c9347e98b2..c27332e1c7 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2006-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
@@ -36,7 +36,12 @@
#define FUTEX_LOCK_PI 6
#define FUTEX_UNLOCK_PI 7
#define FUTEX_TRYLOCK_PI 8
+#define FUTEX_WAIT_BITSET 9
+#define FUTEX_WAKE_BITSET 10
#define FUTEX_PRIVATE_FLAG 128
+#define FUTEX_CLOCK_REALTIME 256
+
+#define FUTEX_BITSET_MATCH_ANY 0xffffffff
/* Values for 'private' parameter of locking macros. Yes, the
definition seems to be backwards. But it is not. The bit will be
@@ -66,7 +71,7 @@
: (fl)) \
: ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG) \
& THREAD_GETMEM (THREAD_SELF, header.private_futex))))
-# endif
+# endif
#endif
#define lll_futex_wait(futex, val, private) \
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c b/nptl/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c
index 40d4d50c32..eb09b4aaa9 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c
+++ b/nptl/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c
@@ -1,5 +1,5 @@
/* Special .init and .fini section support for S/390.
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it
@@ -67,8 +67,6 @@ _init:\n\
.LT1_0:\n\
.LC13:\n\
.long __pthread_initialize_minimal_internal-.LT1_0\n\
-.LC14:\n\
- .long __gmon_start__@GOT\n\
.LC15:\n\
.long _GLOBAL_OFFSET_TABLE_-.LT1_0\n\
.LTN1_0:\n\
@@ -80,12 +78,6 @@ _init:\n\
L 1,.LC13-.LT1_0(13)\n\
LA 1,0(1,13)\n\
BASR 14,1\n\
- L 1,.LC14-.LT1_0(13)\n\
- L 1,0(1,12)\n\
- LTR 1,1\n\
- JE .L22\n\
- BASR 14,1\n\
-.L22:\n\
#APP\n\
.align 4,0x07\n\
END_INIT\n\
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c b/nptl/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c
index a102d07d6c..34951f6fbb 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c
+++ b/nptl/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c
@@ -1,5 +1,5 @@
/* Special .init and .fini section support for 64 bit S/390.
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it
@@ -68,12 +68,6 @@ _init:\n\
STG 1,0(15)\n\
LARL 12,_GLOBAL_OFFSET_TABLE_\n\
BRASL 14,__pthread_initialize_minimal_internal\n\
- LARL 1,__gmon_start__@GOTENT\n\
- LG 1,0(1)\n\
- LTGR 1,1\n\
- JE .L22\n\
- BASR 14,1\n\
-.L22:\n\
#APP\n\
.align 4,0x07\n\
END_INIT\n\
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
index d8279173d7..49b4e6d6e0 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2005, 2007, 2008
+/* Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -36,6 +36,13 @@
mov #(FUTEX_WAIT | FUTEX_PRIVATE_FLAG), tmp; \
extu.b tmp, tmp; \
xor tmp, reg
+# define LOAD_FUTEX_WAIT_ABS(reg,tmp,tmp2) \
+ mov #(FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG), tmp; \
+ extu.b tmp, tmp; \
+ mov #(FUTEX_CLOCK_REALTIME >> 8), tmp2; \
+ swap.b tmp2, tmp2; \
+ or tmp2, tmp; \
+ xor tmp, reg
# define LOAD_FUTEX_WAKE(reg,tmp,tmp2) \
mov #(FUTEX_WAKE | FUTEX_PRIVATE_FLAG), tmp; \
extu.b tmp, tmp; \
@@ -45,7 +52,7 @@
# define LOAD_PRIVATE_FUTEX_WAIT(reg,tmp,tmp2) \
stc gbr, tmp ; \
mov.w 99f, reg ; \
- add reg, tmp ; \
+ add reg, tmp ; \
bra 98f ; \
mov.l @tmp, reg ; \
99: .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
@@ -54,7 +61,7 @@
# define LOAD_PRIVATE_FUTEX_WAIT(reg,tmp,tmp2) \
stc gbr, tmp ; \
mov.w 99f, reg ; \
- add reg, tmp ; \
+ add reg, tmp ; \
mov.l @tmp, reg ; \
bra 98f ; \
mov #FUTEX_WAIT, tmp ; \
@@ -64,7 +71,7 @@
# define LOAD_PRIVATE_FUTEX_WAKE(reg,tmp,tmp2) \
stc gbr, tmp ; \
mov.w 99f, reg ; \
- add reg, tmp ; \
+ add reg, tmp ; \
mov.l @tmp, reg ; \
bra 98f ; \
mov #FUTEX_WAKE, tmp ; \
@@ -74,7 +81,7 @@
# define LOAD_FUTEX_WAIT(reg,tmp,tmp2) \
stc gbr, tmp ; \
mov.w 99f, tmp2 ; \
- add tmp2, tmp ; \
+ add tmp2, tmp ; \
mov.l @tmp, tmp2 ; \
bra 98f ; \
mov #FUTEX_PRIVATE_FLAG, tmp ; \
@@ -86,7 +93,7 @@
# define LOAD_FUTEX_WAIT(reg,tmp,tmp2) \
stc gbr, tmp ; \
mov.w 99f, tmp2 ; \
- add tmp2, tmp ; \
+ add tmp2, tmp ; \
mov.l @tmp, tmp2 ; \
bra 98f ; \
mov #FUTEX_PRIVATE_FLAG, tmp ; \
@@ -97,10 +104,26 @@
mov #FUTEX_WAIT, tmp ; \
or tmp, reg
# endif
+# define LOAD_FUTEX_WAIT_ABS(reg,tmp,tmp2) \
+ stc gbr, tmp ; \
+ mov.w 99f, tmp2 ; \
+ add tmp2, tmp ; \
+ mov.l @tmp, tmp2 ; \
+ bra 98f ; \
+ mov #FUTEX_PRIVATE_FLAG, tmp ; \
+99: .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
+98: extu.b tmp, tmp ; \
+ xor tmp, reg ; \
+ and tmp2, reg ; \
+ mov #FUTEX_WAIT_BITSET, tmp ; \
+ mov #(FUTEX_CLOCK_REALTIME >> 8), tmp2; \
+ swap.b tmp2, tmp2; \
+ or tmp2, tmp; \
+ or tmp, reg
# define LOAD_FUTEX_WAKE(reg,tmp,tmp2) \
stc gbr, tmp ; \
mov.w 99f, tmp2 ; \
- add tmp2, tmp ; \
+ add tmp2, tmp ; \
mov.l @tmp, tmp2 ; \
bra 98f ; \
mov #FUTEX_PRIVATE_FLAG, tmp ; \
@@ -193,12 +216,85 @@ __lll_lock_wait:
cfi_endproc
.size __lll_lock_wait,.-__lll_lock_wait
+ /* r5 (r8): futex
+ r7 (r11): flags
+ r6 (r9): timeout
+ r4 (r10): futex value
+ */
.globl __lll_timedlock_wait
.type __lll_timedlock_wait,@function
.hidden __lll_timedlock_wait
.align 5
cfi_startproc
__lll_timedlock_wait:
+ mov.l r12, @-r15
+ cfi_adjust_cfa_offset(4)
+ cfi_rel_offset (r12, 0)
+
+# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+ mov.l .Lhave, r1
+# ifdef PIC
+ mova .Lgot, r0
+ mov.l .Lgot, r12
+ add r0, r12
+ add r12, r1
+# endif
+ mov.l @r1, r0
+ tst r0, r0
+ bt .Lreltmo
+# endif
+
+ mov r4, r2
+ mov r5, r4
+ mov r7, r5
+ mov r6, r7
+ LOAD_FUTEX_WAIT_ABS (r5, r0, r1)
+
+ mov #2, r6
+ cmp/eq r6, r2
+ bf/s 2f
+ mov r6, r2
+
+1:
+ mov #2, r6
+ mov #-1, r1
+ mov #SYS_futex, r3
+ extu.b r3, r3
+ trapa #0x16
+ SYSCALL_INST_PAD
+ mov r0, r6
+
+2:
+ XCHG (r2, @r4, r3) /* NB: lock is implied */
+
+ tst r3, r3
+ bt/s 3f
+ mov r6, r0
+
+ cmp/eq #-ETIMEDOUT, r0
+ bt 4f
+ cmp/eq #-EINVAL, r0
+ bf 1b
+4:
+ neg r0, r3
+3:
+ mov r3, r0
+ rts
+ mov.l @r15+, r12
+
+ .align 2
+# ifdef PIC
+.Lgot:
+ .long _GLOBAL_OFFSET_TABLE_
+.Lhave:
+ .long __have_futex_clock_realtime@GOTOFF
+# else
+.Lhave:
+ .long __have_futex_clock_realtime
+# endif
+
+# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+.Lreltmo:
/* Check for a valid timeout value. */
mov.l @(4,r6), r1
mov.l .L1g, r0
@@ -231,7 +327,7 @@ __lll_timedlock_wait:
tst r3, r3
bt 6f
-
+
1:
/* Get current time. */
mov r15, r4
@@ -290,12 +386,15 @@ __lll_timedlock_wait:
mov.l @r15+, r8
mov.l @r15+, r9
mov.l @r15+, r10
+ mov.l @r15+, r11
rts
- mov.l @r15+, r11
+ mov.l @r15+, r12
3:
+ mov.l @r15+, r12
rts
mov #EINVAL, r0
+# endif
cfi_endproc
.L1k:
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h
index 88e94b9905..853a2daf1b 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009
+ 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
@@ -34,7 +35,12 @@
#define FUTEX_LOCK_PI 6
#define FUTEX_UNLOCK_PI 7
#define FUTEX_TRYLOCK_PI 8
+#define FUTEX_WAIT_BITSET 9
+#define FUTEX_WAKE_BITSET 10
#define FUTEX_PRIVATE_FLAG 128
+#define FUTEX_CLOCK_REALTIME 256
+
+#define FUTEX_BITSET_MATCH_ANY 0xffffffff
#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1)
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c b/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c
index 5391d5cc8b..82c97c352a 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c
@@ -1,5 +1,5 @@
-/* Special .init and .fini section support for SH. NPTL version.
- Copyright (C) 2003 Free Software Foundation, Inc.
+/* Special .init and .fini section support for SH. NPTL version.
+ Copyright (C) 2003, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it
@@ -62,19 +62,12 @@ _init:\n\
mov.l .L24,r1\n\
add r0,r1\n\
jsr @r1\n\
- nop\n\
- mova .L23,r0\n\
- mov.l .L23,r1\n\
- add r0,r1\n\
- jsr @r1\n\
mov r15,r14\n\
bra 1f\n\
nop\n\
.align 2\n\
.L22:\n\
.long _GLOBAL_OFFSET_TABLE_\n\
-.L23:\n\
- .long __gmon_start__@PLT\n\
.L24:\n\
.long __pthread_initialize_minimal_internal@PLT\n\
1:\n\
@@ -91,16 +84,6 @@ _init:\n\
rts \n\
mov.l @r15+,r12\n\
END_INIT\n\
- .section .text\n\
- .align 5\n\
- .weak __gmon_start__\n\
- .type __gmon_start__,@function\n\
-__gmon_start__:\n\
- mov.l r14,@-r15\n\
- mov r15,r14\n\
- mov r14,r15\n\
- rts \n\
- mov.l @r15+,r14\n\
\n\
/*@_init_EPILOG_ENDS*/\n\
\n\
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
index 754a0f51fe..c24c54937d 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 2003, 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
@@ -36,7 +37,12 @@
#define FUTEX_LOCK_PI 6
#define FUTEX_UNLOCK_PI 7
#define FUTEX_TRYLOCK_PI 8
+#define FUTEX_WAIT_BITSET 9
+#define FUTEX_WAKE_BITSET 10
#define FUTEX_PRIVATE_FLAG 128
+#define FUTEX_CLOCK_REALTIME 256
+
+#define FUTEX_BITSET_MATCH_ANY 0xffffffff
/* Values for 'private' parameter of locking macros. Yes, the
diff --git a/nptl/sysdeps/unix/sysv/linux/timer_create.c b/nptl/sysdeps/unix/sysv/linux/timer_create.c
index a07234d7d1..cdf127cb44 100644
--- a/nptl/sysdeps/unix/sysv/linux/timer_create.c
+++ b/nptl/sysdeps/unix/sysv/linux/timer_create.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003,2004, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2003,2004, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
@@ -167,6 +167,7 @@ timer_create (clock_id, evp, timerid)
/* Copy the thread parameters the user provided. */
newp->sival = evp->sigev_value;
newp->thrfunc = evp->sigev_notify_function;
+ newp->sigev_notify = SIGEV_THREAD;
/* We cannot simply copy the thread attributes since the
implementation might keep internal information for
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S b/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S
new file mode 100644
index 0000000000..680696200a
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S
@@ -0,0 +1,116 @@
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <tcb-offsets.h>
+#include <kernel-features.h>
+#include "lowlevellock.h"
+
+#ifdef IS_IN_libpthread
+# ifdef SHARED
+# define __pthread_unwind __GI___pthread_unwind
+# endif
+#else
+# ifndef SHARED
+ .weak __pthread_unwind
+# endif
+#endif
+
+
+#ifdef __ASSUME_PRIVATE_FUTEX
+# define LOAD_PRIVATE_FUTEX_WAIT(reg) \
+ movl $(FUTEX_WAIT | FUTEX_PRIVATE_FLAG), reg
+#else
+# if FUTEX_WAIT == 0
+# define LOAD_PRIVATE_FUTEX_WAIT(reg) \
+ movl %fs:PRIVATE_FUTEX, reg
+# else
+# define LOAD_PRIVATE_FUTEX_WAIT(reg) \
+ movl %fs:PRIVATE_FUTEX, reg ; \
+ orl $FUTEX_WAIT, reg
+# endif
+#endif
+
+/* It is crucial that the functions in this file don't modify registers
+ other than %rax and %r11. The syscall wrapper code depends on this
+ because it doesn't explicitly save the other registers which hold
+ relevant values. */
+ .text
+
+ .hidden __pthread_enable_asynccancel
+ENTRY(__pthread_enable_asynccancel)
+ movl %fs:CANCELHANDLING, %eax
+2: movl %eax, %r11d
+ orl $TCB_CANCELTYPE_BITMASK, %r11d
+ cmpl %eax, %r11d
+ je 1f
+
+ lock
+ cmpxchgl %r11d, %fs:CANCELHANDLING
+ jnz 2b
+
+ andl $(TCB_CANCELSTATE_BITMASK|TCB_CANCELTYPE_BITMASK|TCB_CANCELED_BITMASK|TCB_EXITING_BITMASK|TCB_CANCEL_RESTMASK|TCB_TERMINATED_BITMASK), %r11d
+ cmpl $(TCB_CANCELTYPE_BITMASK|TCB_CANCELED_BITMASK), %r11d
+ je 3f
+
+1: ret
+
+3: movq $TCB_PTHREAD_CANCELED, %fs:RESULT
+ lock
+ orl $TCB_EXITING_BITMASK, %fs:CANCELHANDLING
+ movq %fs:CLEANUP_JMP_BUF, %rdi
+#ifdef SHARED
+ call __pthread_unwind@PLT
+#else
+ call __pthread_unwind
+#endif
+ hlt
+END(__pthread_enable_asynccancel)
+
+
+ .hidden __pthread_disable_asynccancel
+ENTRY(__pthread_disable_asynccancel)
+ testl $TCB_CANCELTYPE_BITMASK, %edi
+ jnz 1f
+
+ movl %fs:CANCELHANDLING, %eax
+2: movl %eax, %r11d
+ andl $~TCB_CANCELTYPE_BITMASK, %r11d
+ lock
+ cmpxchgl %r11d, %fs:CANCELHANDLING
+ jnz 2b
+
+ movl %r11d, %eax
+3: andl $(TCB_CANCELING_BITMASK|TCB_CANCELED_BITMASK), %eax
+ cmpl $TCB_CANCELING_BITMASK, %eax
+ je 4f
+1: ret
+
+ /* Performance doesn't matter in this loop. We will
+ delay until the thread is canceled. And we will unlikely
+ enter the loop twice. */
+4: movq %fs:0, %rdi
+ movl $__NR_futex, %eax
+ xorq %r10, %r10
+ addq $CANCELHANDLING, %rdi
+ LOAD_PRIVATE_FUTEX_WAIT (%esi)
+ syscall
+ movl %fs:CANCELHANDLING, %eax
+ jmp 3b
+END(__pthread_disable_asynccancel)
diff --git a/sysdeps/alpha/gccframe.h b/nptl/sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S
index b67022548f..1100588502 100644
--- a/sysdeps/alpha/gccframe.h
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S
@@ -1,6 +1,6 @@
-/* Definition of object in frame unwind info. alpha version.
- Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -17,6 +17,6 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#define FIRST_PSEUDO_REGISTER 64
-
-#include <sysdeps/generic/gccframe.h>
+#define __pthread_enable_asynccancel __libc_enable_asynccancel
+#define __pthread_disable_asynccancel __libc_disable_asynccancel
+#include "cancellation.S"
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S b/nptl/sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S
new file mode 100644
index 0000000000..ce4192b5d3
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S
@@ -0,0 +1,22 @@
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#define __pthread_enable_asynccancel __librt_enable_asynccancel
+#define __pthread_disable_asynccancel __librt_disable_asynccancel
+#include "cancellation.S"
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
index 4505e2cec6..8de9cf461a 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -31,6 +31,8 @@
movl $(FUTEX_WAKE | FUTEX_PRIVATE_FLAG), reg
# define LOAD_FUTEX_WAIT(reg) \
xorl $(FUTEX_WAIT | FUTEX_PRIVATE_FLAG), reg
+# define LOAD_FUTEX_WAIT_ABS(reg) \
+ xorl $(FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME), reg
# define LOAD_FUTEX_WAKE(reg) \
xorl $(FUTEX_WAKE | FUTEX_PRIVATE_FLAG), reg
#else
@@ -55,6 +57,10 @@
andl %fs:PRIVATE_FUTEX, reg ; \
orl $FUTEX_WAIT, reg
# endif
+# define LOAD_FUTEX_WAIT_ABS(reg) \
+ xorl $FUTEX_PRIVATE_FLAG, reg ; \
+ andl %fs:PRIVATE_FUTEX, reg ; \
+ orl $FUTEX_WAIT_BITSET | FUTEX_CLOCK_REALTIME, reg
# define LOAD_FUTEX_WAKE(reg) \
xorl $FUTEX_PRIVATE_FLAG, reg ; \
andl %fs:PRIVATE_FUTEX, reg ; \
@@ -143,12 +149,61 @@ __lll_lock_wait:
cfi_endproc
.size __lll_lock_wait,.-__lll_lock_wait
+ /* %rdi: futex
+ %rsi: flags
+ %rdx: timeout
+ %eax: futex value
+ */
.globl __lll_timedlock_wait
.type __lll_timedlock_wait,@function
.hidden __lll_timedlock_wait
.align 16
__lll_timedlock_wait:
cfi_startproc
+# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+# ifdef PIC
+ cmpl $0, __have_futex_clock_realtime(%rip)
+# else
+ cmpl $0, __have_futex_clock_realtime
+# endif
+ je .Lreltmo
+# endif
+
+ pushq %r9
+ cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r9, 0)
+ movq %rdx, %r10
+ movl $0xffffffff, %r9d
+ LOAD_FUTEX_WAIT_ABS (%esi)
+
+ movl $2, %edx
+ cmpl %edx, %eax
+ jne 2f
+
+1: movl $SYS_futex, %eax
+ movl $2, %edx
+ syscall
+
+2: xchgl %edx, (%rdi) /* NB: lock is implied */
+
+ testl %edx, %edx
+ jz 3f
+
+ cmpl $-ETIMEDOUT, %eax
+ je 4f
+ cmpl $-EINVAL, %eax
+ jne 1b
+4: movl %eax, %edx
+ negl %edx
+
+3: movl %edx, %eax
+ popq %r9
+ cfi_adjust_cfa_offset(-8)
+ cfi_restore(%r9)
+ retq
+
+# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+.Lreltmo:
/* Check for a valid timeout value. */
cmpq $1000000000, 8(%rdx)
jae 3f
@@ -253,6 +308,7 @@ __lll_timedlock_wait:
3: movl $EINVAL, %eax
retq
+# endif
cfi_endproc
.size __lll_timedlock_wait,.-__lll_timedlock_wait
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
index 2cd69a14ce..9b15bfbc57 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2004, 2006-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -48,11 +48,18 @@
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1
#define FUTEX_CMP_REQUEUE 4
-#define FUTEX_WAKE_OP 5
+#define FUTEX_WAKE_OP 5
#define FUTEX_LOCK_PI 6
#define FUTEX_UNLOCK_PI 7
#define FUTEX_TRYLOCK_PI 8
+#define FUTEX_WAIT_BITSET 9
+#define FUTEX_WAKE_BITSET 10
+#define FUTEX_WAIT_REQUEUE_PI 11
+#define FUTEX_CMP_REQUEUE_PI 12
#define FUTEX_PRIVATE_FLAG 128
+#define FUTEX_CLOCK_REALTIME 256
+
+#define FUTEX_BITSET_MATCH_ANY 0xffffffff
#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1)
@@ -87,7 +94,7 @@
asm ("andl %%fs:%P1, %0" : "+r" (__fl) \
: "i" (offsetof (struct pthread, header.private_futex))); \
__fl | (fl); }))
-# endif
+# endif
#endif
/* Initializer for lock. */
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
index fa7516ef71..02db0a4f9d 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -32,6 +32,8 @@
#ifdef __ASSUME_PRIVATE_FUTEX
# define LOAD_FUTEX_WAIT(reg) \
xorl $(FUTEX_WAIT | FUTEX_PRIVATE_FLAG), reg
+# define LOAD_FUTEX_WAIT_ABS(reg) \
+ xorl $(FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME), reg
#else
# if FUTEX_WAIT == 0
# define LOAD_FUTEX_WAIT(reg) \
@@ -43,6 +45,10 @@
andl %fs:PRIVATE_FUTEX, reg ; \
orl $FUTEX_WAIT, reg
# endif
+# define LOAD_FUTEX_WAIT_ABS(reg) \
+ xorl $FUTEX_PRIVATE_FLAG, reg ; \
+ andl %fs:PRIVATE_FUTEX, reg ; \
+ orl $FUTEX_WAIT_BITSET | FUTEX_CLOCK_REALTIME, reg
#endif
/* For the calculation see asm/vsyscall.h. */
@@ -110,6 +116,73 @@ __lll_robust_lock_wait:
.align 16
__lll_robust_timedlock_wait:
cfi_startproc
+# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+# ifdef PIC
+ cmpl $0, __have_futex_clock_realtime(%rip)
+# else
+ cmpl $0, __have_futex_clock_realtime
+# endif
+ je .Lreltmo
+# endif
+
+ pushq %r9
+ cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r9, 0)
+ movq %rdx, %r10
+ movl $0xffffffff, %r9d
+ LOAD_FUTEX_WAIT_ABS (%esi)
+
+1: testl $FUTEX_OWNER_DIED, %eax
+ jnz 3f
+
+ movl %eax, %edx
+ orl $FUTEX_WAITERS, %edx
+
+ cmpl %eax, %edx
+ je 5f
+
+ LOCK
+ cmpxchgl %edx, (%rdi)
+ movq $0, %rcx /* Must use mov to avoid changing cc. */
+ jnz 6f
+
+5: movl $SYS_futex, %eax
+ syscall
+ movl %eax, %ecx
+
+ movl (%rdi), %eax
+
+6: testl %eax, %eax
+ jne 2f
+
+ movl %fs:TID, %edx
+ orl $FUTEX_WAITERS, %edx
+ LOCK
+ cmpxchgl %edx, (%rdi)
+ jnz 2f
+
+3: popq %r9
+ cfi_adjust_cfa_offset(-8)
+ cfi_restore(%r9)
+ retq
+
+ cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r9, 0)
+ /* Check whether the time expired. */
+2: cmpl $-ETIMEDOUT, %ecx
+ je 4f
+ cmpl $-EINVAL, %ecx
+ jne 1b
+
+4: movl %ecx, %eax
+ negl %eax
+ jmp 3b
+ cfi_adjust_cfa_offset(-8)
+ cfi_restore(%r9)
+
+
+# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+.Lreltmo:
/* Check for a valid timeout value. */
cmpq $1000000000, 8(%rdx)
jae 3f
@@ -223,10 +296,11 @@ __lll_robust_timedlock_wait:
cfi_offset(%r12, -32)
cfi_offset(%r13, -40)
/* Check whether the time expired. */
-7: cmpq $-ETIMEDOUT, %rcx
+7: cmpl $-ETIMEDOUT, %ecx
jne 1b
8: movl $ETIMEDOUT, %eax
jmp 6b
+#endif
cfi_endproc
.size __lll_robust_timedlock_wait,.-__lll_robust_timedlock_wait
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
index 6155255eb0..224a56088e 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -70,12 +70,16 @@ __pthread_cond_broadcast:
8: cmpq $-1, %r8
je 9f
- /* XXX: The kernel so far doesn't support requeue to PI futex. */
- /* XXX: The kernel only supports FUTEX_CMP_REQUEUE to the same
- type of futex (private resp. shared). */
- testl $(PI_BIT | PS_BIT), MUTEX_KIND(%r8)
+ /* Do not use requeue for pshared condvars. */
+ testl $PS_BIT, MUTEX_KIND(%r8)
jne 9f
+ /* Requeue to a PI mutex if the PI bit is set. */
+ movl MUTEX_KIND(%r8), %eax
+ andl $(ROBUST_BIT|PI_BIT), %eax
+ cmpl $PI_BIT, %eax
+ je 81f
+
/* Wake up all threads. */
#ifdef __ASSUME_PRIVATE_FUTEX
movl $(FUTEX_CMP_REQUEUE|FUTEX_PRIVATE_FLAG), %esi
@@ -97,6 +101,20 @@ __pthread_cond_broadcast:
10: xorl %eax, %eax
retq
+ /* Wake up all threads. */
+81: movl $(FUTEX_CMP_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %esi
+ movl $SYS_futex, %eax
+ movl $1, %edx
+ movl $0x7fffffff, %r10d
+ syscall
+
+ /* For any kind of error, which mainly is EAGAIN, we try again
+ with WAKE. The general test also covers running on old
+ kernels. */
+ cmpq $-4095, %rax
+ jb 10b
+ jmp 9f
+
.align 16
/* Unlock. */
4: LOCK
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
index 8f65f2cd69..d1d83a84f9 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -21,6 +21,7 @@
#include <shlib-compat.h>
#include <lowlevellock.h>
#include <lowlevelcond.h>
+#include <pthread-pi-defines.h>
#include <kernel-features.h>
#include <pthread-errnos.h>
@@ -56,19 +57,25 @@ __pthread_cond_signal:
/* Wake up one thread. */
cmpq $-1, dep_mutex(%r8)
+ movl $FUTEX_WAKE_OP, %esi
movl $1, %edx
+ movl $SYS_futex, %eax
+ je 8f
+
+ /* Get the address of the mutex used. */
+ movq dep_mutex(%r8), %rcx
+ movl MUTEX_KIND(%rcx), %r11d
+ andl $(ROBUST_BIT|PI_BIT), %r11d
+ cmpl $PI_BIT, %r11d
+ je 9f
+
#ifdef __ASSUME_PRIVATE_FUTEX
- movl $FUTEX_WAKE_OP, %eax
movl $(FUTEX_WAKE_OP|FUTEX_PRIVATE_FLAG), %esi
- cmove %eax, %esi
#else
- movl $0, %eax
- movl %fs:PRIVATE_FUTEX, %esi
- cmove %eax, %esi
- orl $FUTEX_WAKE_OP, %esi
+ orl %fs:PRIVATE_FUTEX, %esi
#endif
- movl $1, %r10d
- movl $SYS_futex, %eax
+
+8: movl $1, %r10d
#if cond_lock != 0
addq $cond_lock, %r8
#endif
@@ -85,9 +92,27 @@ __pthread_cond_signal:
xorl %eax, %eax
retq
-7: /* %esi should be either FUTEX_WAKE_OP or
- FUTEX_WAKE_OP|FUTEX_PRIVATE_FLAG from the previous syscall. */
- xorl $(FUTEX_WAKE ^ FUTEX_WAKE_OP), %esi
+ /* Wake up one thread and requeue none in the PI Mutex case. */
+9: movl $(FUTEX_CMP_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %esi
+ movq %rcx, %r8
+ xorq %r10, %r10
+ movl (%rdi), %r9d // XXX Can this be right?
+ syscall
+
+ leaq -cond_futex(%rdi), %r8
+
+ /* For any kind of error, we try again with WAKE.
+ The general test also covers running on old kernels. */
+ cmpq $-4095, %rax
+ jb 4f
+
+7:
+#ifdef __ASSUME_PRIVATE_FUTEX
+ andl $FUTEX_PRIVATE_FLAG, %esi
+#else
+ andl %fs:PRIVATE_FUTEX, %esi
+#endif
+ orl $FUTEX_WAKE, %esi
movl $SYS_futex, %eax
/* %rdx should be 1 already from $FUTEX_WAKE_OP syscall.
movl $1, %edx */
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
index 20bc59db9c..be14fc897e 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -21,6 +21,7 @@
#include <shlib-compat.h>
#include <lowlevellock.h>
#include <lowlevelcond.h>
+#include <pthread-pi-defines.h>
#include <pthread-errnos.h>
#include <kernel-features.h>
@@ -31,6 +32,7 @@
.text
+
/* int pthread_cond_timedwait (pthread_cond_t *cond, pthread_mutex_t *mutex,
const struct timespec *abstime) */
.globl __pthread_cond_timedwait
@@ -38,38 +40,57 @@
.align 16
__pthread_cond_timedwait:
.LSTARTCODE:
+ cfi_startproc
+#ifdef SHARED
+ cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
+ DW.ref.__gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
+#else
+ cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
+#endif
+
pushq %r12
-.Lpush_r12:
+ cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r12, 0)
pushq %r13
-.Lpush_r13:
+ cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r13, 0)
pushq %r14
-.Lpush_r14:
-#define FRAME_SIZE 80
+ cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r14, 0)
+ pushq %r15
+ cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r15, 0)
+#ifdef __ASSUME_FUTEX_CLOCK_REALTIME
+# define FRAME_SIZE 32
+#else
+# define FRAME_SIZE 48
+#endif
subq $FRAME_SIZE, %rsp
-.Lsubq:
+ cfi_adjust_cfa_offset(FRAME_SIZE)
+ cfi_remember_state
cmpq $1000000000, 8(%rdx)
movl $EINVAL, %eax
- jae 18f
+ jae 48f
/* Stack frame:
- rsp + 80
- +--------------------------+
- rsp + 48 | cleanup buffer |
- +--------------------------+
- rsp + 40 | old wake_seq value |
- +--------------------------+
- rsp + 24 | timeout value |
- +--------------------------+
+ rsp + 48
+ +--------------------------+
+ rsp + 32 | timeout value |
+ +--------------------------+
+ rsp + 24 | old wake_seq value |
+ +--------------------------+
rsp + 16 | mutex pointer |
- +--------------------------+
+ +--------------------------+
rsp + 8 | condvar pointer |
- +--------------------------+
+ +--------------------------+
rsp + 4 | old broadcast_seq value |
- +--------------------------+
+ +--------------------------+
rsp + 0 | old cancellation mode |
- +--------------------------+
+ +--------------------------+
*/
cmpq $-1, dep_mutex(%rdi)
@@ -82,8 +103,18 @@ __pthread_cond_timedwait:
je 22f
movq %rsi, dep_mutex(%rdi)
+22:
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+# ifdef PIC
+ cmpl $0, __have_futex_clock_realtime(%rip)
+# else
+ cmpl $0, __have_futex_clock_realtime
+# endif
+ je .Lreltmo
+#endif
+
/* Get internal lock. */
-22: movl $1, %esi
+ movl $1, %esi
xorl %eax, %eax
LOCK
#if cond_lock == 0
@@ -91,98 +122,29 @@ __pthread_cond_timedwait:
#else
cmpxchgl %esi, cond_lock(%rdi)
#endif
- jnz 1f
+ jnz 31f
/* Unlock the mutex. */
-2: movq 16(%rsp), %rdi
+32: movq 16(%rsp), %rdi
xorl %esi, %esi
callq __pthread_mutex_unlock_usercnt
testl %eax, %eax
- jne 16f
+ jne 46f
movq 8(%rsp), %rdi
incq total_seq(%rdi)
incl cond_futex(%rdi)
addl $(1 << nwaiters_shift), cond_nwaiters(%rdi)
- /* Install cancellation handler. */
-#ifdef PIC
- leaq __condvar_cleanup(%rip), %rsi
-#else
- leaq __condvar_cleanup, %rsi
-#endif
- leaq 48(%rsp), %rdi
- movq %rsp, %rdx
- callq __pthread_cleanup_push
-
/* Get and store current wakeup_seq value. */
movq 8(%rsp), %rdi
movq wakeup_seq(%rdi), %r9
movl broadcast_seq(%rdi), %edx
- movq %r9, 40(%rsp)
+ movq %r9, 24(%rsp)
movl %edx, 4(%rsp)
- /* Get the current time. */
-8:
-#ifdef __NR_clock_gettime
- /* Get the clock number. Note that the field in the condvar
- structure stores the number minus 1. */
- movq 8(%rsp), %rdi
- movl cond_nwaiters(%rdi), %edi
- andl $((1 << nwaiters_shift) - 1), %edi
- /* Only clocks 0 and 1 are allowed so far. Both are handled in the
- kernel. */
- leaq 24(%rsp), %rsi
-# ifdef SHARED
- movq __vdso_clock_gettime@GOTPCREL(%rip), %rax
- movq (%rax), %rax
- PTR_DEMANGLE (%rax)
- jz 26f
- call *%rax
- jmp 27f
-# endif
-26: movl $__NR_clock_gettime, %eax
- syscall
-27:
-# ifndef __ASSUME_POSIX_TIMERS
- cmpq $-ENOSYS, %rax
- je 19f
-# endif
-
- /* Compute relative timeout. */
- movq (%r13), %rcx
- movq 8(%r13), %rdx
- subq 24(%rsp), %rcx
- subq 32(%rsp), %rdx
-#else
- leaq 24(%rsp), %rdi
- xorl %esi, %esi
- movq $VSYSCALL_ADDR_vgettimeofday, %rax
- callq *%rax
-
- /* Compute relative timeout. */
- movq 32(%rsp), %rax
- movl $1000, %edx
- mul %rdx /* Milli seconds to nano seconds. */
- movq (%r13), %rcx
- movq 8(%r13), %rdx
- subq 24(%rsp), %rcx
- subq %rax, %rdx
-#endif
- jns 12f
- addq $1000000000, %rdx
- decq %rcx
-12: testq %rcx, %rcx
- movq 8(%rsp), %rdi
- movq $-ETIMEDOUT, %r14
- js 6f
-
- /* Store relative timeout. */
-21: movq %rcx, 24(%rsp)
- movq %rdx, 32(%rsp)
-
- movl cond_futex(%rdi), %r12d
+38: movl cond_futex(%rdi), %r12d
/* Unlock. */
LOCK
@@ -191,33 +153,67 @@ __pthread_cond_timedwait:
#else
decl cond_lock(%rdi)
#endif
- jne 3f
+ jne 33f
-4: callq __pthread_enable_asynccancel
+.LcleanupSTART1:
+34: callq __pthread_enable_asynccancel
movl %eax, (%rsp)
- leaq 24(%rsp), %r10
+ movq %r13, %r10
+ movl $FUTEX_WAIT_BITSET, %esi
cmpq $-1, dep_mutex(%rdi)
+ je 60f
+
+ movq dep_mutex(%rdi), %r8
+ /* Requeue to a non-robust PI mutex if the PI bit is set and
+ the robust bit is not set. */
+ movl MUTEX_KIND(%r8), %eax
+ andl $(ROBUST_BIT|PI_BIT), %eax
+ cmpl $PI_BIT, %eax
+ jne 61f
+
+ movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %esi
+ xorl %eax, %eax
+ /* The following only works like this because we only support
+ two clocks, represented using a single bit. */
+ testl $1, cond_nwaiters(%rdi)
+ movl $FUTEX_CLOCK_REALTIME, %edx
+ cmove %edx, %eax
+ orl %eax, %esi
movq %r12, %rdx
-#ifdef __ASSUME_PRIVATE_FUTEX
- movl $FUTEX_WAIT, %eax
- movl $(FUTEX_WAIT|FUTEX_PRIVATE_FLAG), %esi
- cmove %eax, %esi
+ addq $cond_futex, %rdi
+ movl $SYS_futex, %eax
+ syscall
+
+ movl $1, %r15d
+#ifdef __ASSUME_REQUEUE_PI
+ jmp 62f
#else
- movl $0, %eax
- movl %fs:PRIVATE_FUTEX, %esi
- cmove %eax, %esi
-# if FUTEX_WAIT != 0
- orl $FUTEX_WAIT, %esi
-# endif
+ cmpq $-4095, %rax
+ jnae 62f
+
+ subq $cond_futex, %rdi
#endif
+
+61: movl $(FUTEX_WAIT_BITSET|FUTEX_PRIVATE_FLAG), %esi
+60: xorl %r15d, %r15d
+ xorl %eax, %eax
+ /* The following only works like this because we only support
+ two clocks, represented using a single bit. */
+ testl $1, cond_nwaiters(%rdi)
+ movl $FUTEX_CLOCK_REALTIME, %edx
+ movl $0xffffffff, %r9d
+ cmove %edx, %eax
+ orl %eax, %esi
+ movq %r12, %rdx
addq $cond_futex, %rdi
movl $SYS_futex, %eax
syscall
- movq %rax, %r14
+62: movq %rax, %r14
movl (%rsp), %edi
callq __pthread_disable_asynccancel
+.LcleanupEND1:
/* Lock. */
movq 8(%rsp), %rdi
@@ -229,45 +225,45 @@ __pthread_cond_timedwait:
#else
cmpxchgl %esi, cond_lock(%rdi)
#endif
- jne 5f
+ jne 35f
-6: movl broadcast_seq(%rdi), %edx
+36: movl broadcast_seq(%rdi), %edx
movq woken_seq(%rdi), %rax
movq wakeup_seq(%rdi), %r9
cmpl 4(%rsp), %edx
- jne 23f
+ jne 53f
- cmpq 40(%rsp), %r9
- jbe 15f
+ cmpq 24(%rsp), %r9
+ jbe 45f
cmpq %rax, %r9
- ja 9f
+ ja 39f
-15: cmpq $-ETIMEDOUT, %r14
- jne 8b
+45: cmpq $-ETIMEDOUT, %r14
+ jne 38b
-13: incq wakeup_seq(%rdi)
+99: incq wakeup_seq(%rdi)
incl cond_futex(%rdi)
movl $ETIMEDOUT, %r14d
- jmp 14f
+ jmp 44f
-23: xorq %r14, %r14
- jmp 24f
+53: xorq %r14, %r14
+ jmp 54f
-9: xorq %r14, %r14
-14: incq woken_seq(%rdi)
+39: xorq %r14, %r14
+44: incq woken_seq(%rdi)
-24: subl $(1 << nwaiters_shift), cond_nwaiters(%rdi)
+54: subl $(1 << nwaiters_shift), cond_nwaiters(%rdi)
/* Wake up a thread which wants to destroy the condvar object. */
cmpq $0xffffffffffffffff, total_seq(%rdi)
- jne 25f
+ jne 55f
movl cond_nwaiters(%rdi), %eax
andl $~((1 << nwaiters_shift) - 1), %eax
- jne 25f
+ jne 55f
addq $cond_nwaiters, %rdi
cmpq $-1, dep_mutex-cond_nwaiters(%rdi)
@@ -286,38 +282,50 @@ __pthread_cond_timedwait:
syscall
subq $cond_nwaiters, %rdi
-25: LOCK
+55: LOCK
#if cond_lock == 0
decl (%rdi)
#else
decl cond_lock(%rdi)
#endif
- jne 10f
+ jne 40f
- /* Remove cancellation handler. */
-11: movq 48+CLEANUP_PREV(%rsp), %rdx
- movq %rdx, %fs:CLEANUP
+ /* If requeue_pi is used the kernel performs the locking of the
+ mutex. */
+41: movq 16(%rsp), %rdi
+ testl %r15d, %r15d
+ jnz 64f
- movq 16(%rsp), %rdi
callq __pthread_mutex_cond_lock
- testq %rax, %rax
+63: testq %rax, %rax
cmoveq %r14, %rax
-18: addq $FRAME_SIZE, %rsp
-.Laddq:
+48: addq $FRAME_SIZE, %rsp
+ cfi_adjust_cfa_offset(-FRAME_SIZE)
+ popq %r15
+ cfi_adjust_cfa_offset(-8)
+ cfi_restore(%r15)
popq %r14
-.Lpop_r14:
+ cfi_adjust_cfa_offset(-8)
+ cfi_restore(%r14)
popq %r13
-.Lpop_r13:
+ cfi_adjust_cfa_offset(-8)
+ cfi_restore(%r13)
popq %r12
-.Lpop_r12:
+ cfi_adjust_cfa_offset(-8)
+ cfi_restore(%r12)
retq
+ cfi_restore_state
+
+64: callq __pthread_mutex_cond_lock_adjust
+ movq %r14, %rax
+ jmp 48b
+
/* Initial locking failed. */
-1:
-.LSbl1:
+31:
#if cond_lock != 0
addq $cond_lock, %rdi
#endif
@@ -326,10 +334,10 @@ __pthread_cond_timedwait:
movl $LLL_SHARED, %esi
cmovne %eax, %esi
callq __lll_lock_wait
- jmp 2b
+ jmp 32b
/* Unlock in loop requires wakeup. */
-3:
+33:
#if cond_lock != 0
addq $cond_lock, %rdi
#endif
@@ -338,10 +346,10 @@ __pthread_cond_timedwait:
movl $LLL_SHARED, %esi
cmovne %eax, %esi
callq __lll_unlock_wake
- jmp 4b
+ jmp 34b
/* Locking in loop failed. */
-5:
+35:
#if cond_lock != 0
addq $cond_lock, %rdi
#endif
@@ -353,10 +361,10 @@ __pthread_cond_timedwait:
#if cond_lock != 0
subq $cond_lock, %rdi
#endif
- jmp 6b
+ jmp 36b
/* Unlock after loop requires wakeup. */
-10:
+40:
#if cond_lock != 0
addq $cond_lock, %rdi
#endif
@@ -365,10 +373,10 @@ __pthread_cond_timedwait:
movl $LLL_SHARED, %esi
cmovne %eax, %esi
callq __lll_unlock_wake
- jmp 11b
+ jmp 41b
/* The initial unlocking of the mutex failed. */
-16: movq 8(%rsp), %rdi
+46: movq 8(%rsp), %rdi
movq %rax, (%rsp)
LOCK
#if cond_lock == 0
@@ -376,7 +384,7 @@ __pthread_cond_timedwait:
#else
decl cond_lock(%rdi)
#endif
- jne 17f
+ jne 47f
#if cond_lock != 0
addq $cond_lock, %rdi
@@ -387,23 +395,228 @@ __pthread_cond_timedwait:
cmovne %eax, %esi
callq __lll_unlock_wake
-17: movq (%rsp), %rax
- jmp 18b
+47: movq (%rsp), %rax
+ jmp 48b
+
+
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+.Lreltmo:
+ xorl %r15d, %r15d
+
+ /* Get internal lock. */
+ movl $1, %esi
+ xorl %eax, %eax
+ LOCK
+# if cond_lock == 0
+ cmpxchgl %esi, (%rdi)
+# else
+ cmpxchgl %esi, cond_lock(%rdi)
+# endif
+ jnz 1f
+
+ /* Unlock the mutex. */
+2: movq 16(%rsp), %rdi
+ xorl %esi, %esi
+ callq __pthread_mutex_unlock_usercnt
+
+ testl %eax, %eax
+ jne 46b
+
+ movq 8(%rsp), %rdi
+ incq total_seq(%rdi)
+ incl cond_futex(%rdi)
+ addl $(1 << nwaiters_shift), cond_nwaiters(%rdi)
-#if defined __NR_clock_gettime && !defined __ASSUME_POSIX_TIMERS
+ /* Get and store current wakeup_seq value. */
+ movq 8(%rsp), %rdi
+ movq wakeup_seq(%rdi), %r9
+ movl broadcast_seq(%rdi), %edx
+ movq %r9, 24(%rsp)
+ movl %edx, 4(%rsp)
+
+ /* Get the current time. */
+8:
+# ifdef __NR_clock_gettime
+ /* Get the clock number. Note that the field in the condvar
+ structure stores the number minus 1. */
+ movq 8(%rsp), %rdi
+ movl cond_nwaiters(%rdi), %edi
+ andl $((1 << nwaiters_shift) - 1), %edi
+ /* Only clocks 0 and 1 are allowed so far. Both are handled in the
+ kernel. */
+ leaq 32(%rsp), %rsi
+# ifdef SHARED
+ movq __vdso_clock_gettime@GOTPCREL(%rip), %rax
+ movq (%rax), %rax
+ PTR_DEMANGLE (%rax)
+ jz 26f
+ call *%rax
+ jmp 27f
+# endif
+26: movl $__NR_clock_gettime, %eax
+ syscall
+27:
+# ifndef __ASSUME_POSIX_TIMERS
+ cmpq $-ENOSYS, %rax
+ je 19f
+# endif
+
+ /* Compute relative timeout. */
+ movq (%r13), %rcx
+ movq 8(%r13), %rdx
+ subq 32(%rsp), %rcx
+ subq 40(%rsp), %rdx
+# else
+ leaq 24(%rsp), %rdi
+ xorl %esi, %esi
+ movq $VSYSCALL_ADDR_vgettimeofday, %rax
+ callq *%rax
+
+ /* Compute relative timeout. */
+ movq 40(%rsp), %rax
+ movl $1000, %edx
+ mul %rdx /* Milli seconds to nano seconds. */
+ movq (%r13), %rcx
+ movq 8(%r13), %rdx
+ subq 32(%rsp), %rcx
+ subq %rax, %rdx
+# endif
+ jns 12f
+ addq $1000000000, %rdx
+ decq %rcx
+12: testq %rcx, %rcx
+ movq 8(%rsp), %rdi
+ movq $-ETIMEDOUT, %r14
+ js 6f
+
+ /* Store relative timeout. */
+21: movq %rcx, 32(%rsp)
+ movq %rdx, 40(%rsp)
+
+ movl cond_futex(%rdi), %r12d
+
+ /* Unlock. */
+ LOCK
+# if cond_lock == 0
+ decl (%rdi)
+# else
+ decl cond_lock(%rdi)
+# endif
+ jne 3f
+
+.LcleanupSTART2:
+4: callq __pthread_enable_asynccancel
+ movl %eax, (%rsp)
+
+ leaq 32(%rsp), %r10
+ cmpq $-1, dep_mutex(%rdi)
+ movq %r12, %rdx
+# ifdef __ASSUME_PRIVATE_FUTEX
+ movl $FUTEX_WAIT, %eax
+ movl $(FUTEX_WAIT|FUTEX_PRIVATE_FLAG), %esi
+ cmove %eax, %esi
+# else
+ movl $0, %eax
+ movl %fs:PRIVATE_FUTEX, %esi
+ cmove %eax, %esi
+# if FUTEX_WAIT != 0
+ orl $FUTEX_WAIT, %esi
+# endif
+# endif
+ addq $cond_futex, %rdi
+ movl $SYS_futex, %eax
+ syscall
+ movq %rax, %r14
+
+ movl (%rsp), %edi
+ callq __pthread_disable_asynccancel
+.LcleanupEND2:
+
+ /* Lock. */
+ movq 8(%rsp), %rdi
+ movl $1, %esi
+ xorl %eax, %eax
+ LOCK
+# if cond_lock == 0
+ cmpxchgl %esi, (%rdi)
+# else
+ cmpxchgl %esi, cond_lock(%rdi)
+# endif
+ jne 5f
+
+6: movl broadcast_seq(%rdi), %edx
+
+ movq woken_seq(%rdi), %rax
+
+ movq wakeup_seq(%rdi), %r9
+
+ cmpl 4(%rsp), %edx
+ jne 53b
+
+ cmpq 24(%rsp), %r9
+ jbe 15f
+
+ cmpq %rax, %r9
+ ja 39b
+
+15: cmpq $-ETIMEDOUT, %r14
+ jne 8b
+
+ jmp 99b
+
+ /* Initial locking failed. */
+1:
+# if cond_lock != 0
+ addq $cond_lock, %rdi
+# endif
+ cmpq $-1, dep_mutex-cond_lock(%rdi)
+ movl $LLL_PRIVATE, %eax
+ movl $LLL_SHARED, %esi
+ cmovne %eax, %esi
+ callq __lll_lock_wait
+ jmp 2b
+
+ /* Unlock in loop requires wakeup. */
+3:
+# if cond_lock != 0
+ addq $cond_lock, %rdi
+# endif
+ cmpq $-1, dep_mutex-cond_lock(%rdi)
+ movl $LLL_PRIVATE, %eax
+ movl $LLL_SHARED, %esi
+ cmovne %eax, %esi
+ callq __lll_unlock_wake
+ jmp 4b
+
+ /* Locking in loop failed. */
+5:
+# if cond_lock != 0
+ addq $cond_lock, %rdi
+# endif
+ cmpq $-1, dep_mutex-cond_lock(%rdi)
+ movl $LLL_PRIVATE, %eax
+ movl $LLL_SHARED, %esi
+ cmovne %eax, %esi
+ callq __lll_lock_wait
+# if cond_lock != 0
+ subq $cond_lock, %rdi
+# endif
+ jmp 6b
+
+# if defined __NR_clock_gettime && !defined __ASSUME_POSIX_TIMERS
/* clock_gettime not available. */
-19: leaq 24(%rsp), %rdi
+19: leaq 32(%rsp), %rdi
xorl %esi, %esi
movq $VSYSCALL_ADDR_vgettimeofday, %rax
callq *%rax
/* Compute relative timeout. */
- movq 32(%rsp), %rax
+ movq 40(%rsp), %rax
movl $1000, %edx
mul %rdx /* Milli seconds to nano seconds. */
movq (%r13), %rcx
movq 8(%r13), %rdx
- subq 24(%rsp), %rcx
+ subq 32(%rsp), %rcx
subq %rax, %rdx
jns 20f
addq $1000000000, %rdx
@@ -413,98 +626,188 @@ __pthread_cond_timedwait:
movq $-ETIMEDOUT, %r14
js 6b
jmp 21b
+# endif
#endif
-.LENDCODE:
.size __pthread_cond_timedwait, .-__pthread_cond_timedwait
versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
GLIBC_2_3_2)
- .section .eh_frame,"a",@progbits
-.LSTARTFRAME:
- .long L(ENDCIE)-L(STARTCIE) # Length of the CIE.
-.LSTARTCIE:
- .long 0 # CIE ID.
- .byte 1 # Version number.
-#ifdef SHARED
- .string "zR" # NUL-terminated augmentation
- # string.
+ .align 16
+ .type __condvar_cleanup2, @function
+__condvar_cleanup2:
+ /* Stack frame:
+
+ rsp + 72
+ +--------------------------+
+ rsp + 64 | %r12 |
+ +--------------------------+
+ rsp + 56 | %r13 |
+ +--------------------------+
+ rsp + 48 | %r14 |
+ +--------------------------+
+ rsp + 24 | unused |
+ +--------------------------+
+ rsp + 16 | mutex pointer |
+ +--------------------------+
+ rsp + 8 | condvar pointer |
+ +--------------------------+
+ rsp + 4 | old broadcast_seq value |
+ +--------------------------+
+ rsp + 0 | old cancellation mode |
+ +--------------------------+
+ */
+
+ movq %rax, 24(%rsp)
+
+ /* Get internal lock. */
+ movq 8(%rsp), %rdi
+ movl $1, %esi
+ xorl %eax, %eax
+ LOCK
+#if cond_lock == 0
+ cmpxchgl %esi, (%rdi)
#else
- .ascii "\0" # NUL-terminated augmentation
- # string.
+ cmpxchgl %esi, cond_lock(%rdi)
#endif
- .uleb128 1 # Code alignment factor.
- .sleb128 -8 # Data alignment factor.
- .byte 16 # Return address register
- # column.
-#ifdef SHARED
- .uleb128 1 # Augmentation value length.
- .byte 0x1b # Encoding: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4.
+ jz 1f
+
+#if cond_lock != 0
+ addq $cond_lock, %rdi
#endif
- .byte 0x0c # DW_CFA_def_cfa
- .uleb128 7
- .uleb128 8
- .byte 0x90 # DW_CFA_offset, column 0x8
- .uleb128 1
- .align 8
-.LENDCIE:
-
- .long .LENDFDE-.LSTARTFDE # Length of the FDE.
-.LSTARTFDE:
- .long .LSTARTFDE-.LSTARTFRAME # CIE pointer.
-#ifdef SHARED
- .long .LSTARTCODE-. # PC-relative start address
- # of the code
+ cmpq $-1, dep_mutex-cond_lock(%rdi)
+ movl $LLL_PRIVATE, %eax
+ movl $LLL_SHARED, %esi
+ cmovne %eax, %esi
+ callq __lll_lock_wait
+#if cond_lock != 0
+ subq $cond_lock, %rdi
+#endif
+
+1: movl broadcast_seq(%rdi), %edx
+ cmpl 4(%rsp), %edx
+ jne 3f
+
+ /* We increment the wakeup_seq counter only if it is lower than
+ total_seq. If this is not the case the thread was woken and
+ then canceled. In this case we ignore the signal. */
+ movq total_seq(%rdi), %rax
+ cmpq wakeup_seq(%rdi), %rax
+ jbe 6f
+ incq wakeup_seq(%rdi)
+ incl cond_futex(%rdi)
+6: incq woken_seq(%rdi)
+
+3: subl $(1 << nwaiters_shift), cond_nwaiters(%rdi)
+
+ /* Wake up a thread which wants to destroy the condvar object. */
+ xorq %r12, %r12
+ cmpq $0xffffffffffffffff, total_seq(%rdi)
+ jne 4f
+ movl cond_nwaiters(%rdi), %eax
+ andl $~((1 << nwaiters_shift) - 1), %eax
+ jne 4f
+
+ cmpq $-1, dep_mutex(%rdi)
+ leaq cond_nwaiters(%rdi), %rdi
+ movl $1, %edx
+#ifdef __ASSUME_PRIVATE_FUTEX
+ movl $FUTEX_WAKE, %eax
+ movl $(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), %esi
+ cmove %eax, %esi
#else
- .long .LSTARTCODE # Start address of the code.
+ movl $0, %eax
+ movl %fs:PRIVATE_FUTEX, %esi
+ cmove %eax, %esi
+ orl $FUTEX_WAKE, %esi
#endif
- .long .LENDCODE-.LSTARTCODE # Length of the code.
-#ifdef SHARED
- .uleb128 0 # No augmentation data.
+ movl $SYS_futex, %eax
+ syscall
+ subq $cond_nwaiters, %rdi
+ movl $1, %r12d
+
+4: LOCK
+#if cond_lock == 0
+ decl (%rdi)
+#else
+ decl cond_lock(%rdi)
+#endif
+ je 2f
+#if cond_lock != 0
+ addq $cond_lock, %rdi
#endif
- .byte 0x40+.Lpush_r12-.LSTARTCODE # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 0x8c # DW_CFA_offset %r12
- .uleb128 2
- .byte 0x40+.Lpush_r13-.Lpush_r12 # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 24
- .byte 0x8d # DW_CFA_offset %r13
- .uleb128 3
- .byte 0x40+.Lpush_r14-.Lpush_r13 # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 32
- .byte 0x84 # DW_CFA_offset %r14
- .uleb128 4
- .byte 0x40+.Lsubq-.Lpush_r14 # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 32+FRAME_SIZE
- .byte 3 # DW_CFA_advance_loc2
- .2byte .Laddq-.Lsubq
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 32
- .byte 0x40+.Lpop_r14-.Laddq # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 24
- .byte 0xce # DW_CFA_restore %r14
- .byte 0x40+.Lpop_r13-.Lpop_r14 # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 0xcd # DW_CFA_restore %r13
- .byte 0x40+.Lpop_r12-.Lpop_r13 # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 8
- .byte 0xcc # DW_CFA_restore %r12
- .byte 0x40+.LSbl1-.Lpop_r12 # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 32+FRAME_SIZE
- .byte 0x8c # DW_CFA_offset %r12
- .uleb128 2
- .byte 0x8d # DW_CFA_offset %r13
- .uleb128 3
- .byte 0x84 # DW_CFA_offset %r14
- .uleb128 4
+ cmpq $-1, dep_mutex-cond_lock(%rdi)
+ movl $LLL_PRIVATE, %eax
+ movl $LLL_SHARED, %esi
+ cmovne %eax, %esi
+ callq __lll_unlock_wake
+
+ /* Wake up all waiters to make sure no signal gets lost. */
+2: testq %r12, %r12
+ jnz 5f
+ addq $cond_futex, %rdi
+ cmpq $-1, dep_mutex-cond_futex(%rdi)
+ movl $0x7fffffff, %edx
+#ifdef __ASSUME_PRIVATE_FUTEX
+ movl $FUTEX_WAKE, %eax
+ movl $(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), %esi
+ cmove %eax, %esi
+#else
+ movl $0, %eax
+ movl %fs:PRIVATE_FUTEX, %esi
+ cmove %eax, %esi
+ orl $FUTEX_WAKE, %esi
+#endif
+ movl $SYS_futex, %eax
+ syscall
+
+5: movq 16(%rsp), %rdi
+ callq __pthread_mutex_cond_lock
+
+ movq 24(%rsp), %rdi
+ movq FRAME_SIZE(%rsp), %r15
+ movq FRAME_SIZE+8(%rsp), %r14
+ movq FRAME_SIZE+16(%rsp), %r13
+ movq FRAME_SIZE+24(%rsp), %r12
+.LcallUR:
+ call _Unwind_Resume@PLT
+ hlt
+.LENDCODE:
+ cfi_endproc
+ .size __condvar_cleanup2, .-__condvar_cleanup2
+
+
+ .section .gcc_except_table,"a",@progbits
+.LexceptSTART:
+ .byte DW_EH_PE_omit # @LPStart format
+ .byte DW_EH_PE_omit # @TType format
+ .byte DW_EH_PE_uleb128 # call-site format
+ .uleb128 .Lcstend-.Lcstbegin
+.Lcstbegin:
+ .uleb128 .LcleanupSTART1-.LSTARTCODE
+ .uleb128 .LcleanupEND1-.LcleanupSTART1
+ .uleb128 __condvar_cleanup2-.LSTARTCODE
+ .uleb128 0
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+ .uleb128 .LcleanupSTART2-.LSTARTCODE
+ .uleb128 .LcleanupEND2-.LcleanupSTART2
+ .uleb128 __condvar_cleanup2-.LSTARTCODE
+ .uleb128 0
+#endif
+ .uleb128 .LcallUR-.LSTARTCODE
+ .uleb128 .LENDCODE-.LcallUR
+ .uleb128 0
+ .uleb128 0
+.Lcstend:
+
+
+#ifdef SHARED
+ .hidden DW.ref.__gcc_personality_v0
+ .weak DW.ref.__gcc_personality_v0
+ .section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
.align 8
-.LENDFDE:
+ .type DW.ref.__gcc_personality_v0, @object
+ .size DW.ref.__gcc_personality_v0, 8
+DW.ref.__gcc_personality_v0:
+ .quad __gcc_personality_v0
+#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
index e5e802d531..f5b929ea71 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -22,146 +22,36 @@
#include <lowlevellock.h>
#include <lowlevelcond.h>
#include <tcb-offsets.h>
+#include <pthread-pi-defines.h>
#include <kernel-features.h>
.text
- .align 16
- .type __condvar_cleanup, @function
- .globl __condvar_cleanup
- .hidden __condvar_cleanup
-__condvar_cleanup:
- pushq %r12
-
- /* Get internal lock. */
- movq %rdi, %r8
- movq 8(%rdi), %rdi
- movl $1, %esi
- xorl %eax, %eax
- LOCK
-#if cond_lock == 0
- cmpxchgl %esi, (%rdi)
-#else
- cmpxchgl %esi, cond_lock(%rdi)
-#endif
- jz 1f
-
-#if cond_lock != 0
- addq $cond_lock, %rdi
-#endif
- cmpq $-1, dep_mutex-cond_lock(%rdi)
- movl $LLL_PRIVATE, %eax
- movl $LLL_SHARED, %esi
- cmovne %eax, %esi
- callq __lll_lock_wait
-#if cond_lock != 0
- subq $cond_lock, %rdi
-#endif
-
-1: movl broadcast_seq(%rdi), %edx
- cmpl 4(%r8), %edx
- jne 3f
-
- /* We increment the wakeup_seq counter only if it is lower than
- total_seq. If this is not the case the thread was woken and
- then canceled. In this case we ignore the signal. */
- movq total_seq(%rdi), %rax
- cmpq wakeup_seq(%rdi), %rax
- jbe 6f
- incq wakeup_seq(%rdi)
- incl cond_futex(%rdi)
-6: incq woken_seq(%rdi)
-
-3: subl $(1 << nwaiters_shift), cond_nwaiters(%rdi)
-
- /* Wake up a thread which wants to destroy the condvar object. */
- xorq %r12, %r12
- cmpq $0xffffffffffffffff, total_seq(%rdi)
- jne 4f
- movl cond_nwaiters(%rdi), %eax
- andl $~((1 << nwaiters_shift) - 1), %eax
- jne 4f
-
- addq $cond_nwaiters, %rdi
- cmpq $-1, dep_mutex-cond_nwaiters(%rdi)
- movl $1, %edx
-#ifdef __ASSUME_PRIVATE_FUTEX
- movl $FUTEX_WAKE, %eax
- movl $(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), %esi
- cmove %eax, %esi
-#else
- movl $0, %eax
- movl %fs:PRIVATE_FUTEX, %esi
- cmove %eax, %esi
- orl $FUTEX_WAKE, %esi
-#endif
- movl $SYS_futex, %eax
- syscall
- subq $cond_nwaiters, %rdi
- movl $1, %r12d
-
-4: LOCK
-#if cond_lock == 0
- decl (%rdi)
-#else
- decl cond_lock(%rdi)
-#endif
- je 2f
-#if cond_lock != 0
- addq $cond_lock, %rdi
-#endif
- cmpq $-1, dep_mutex-cond_lock(%rdi)
- movl $LLL_PRIVATE, %eax
- movl $LLL_SHARED, %esi
- cmovne %eax, %esi
- callq __lll_unlock_wake
-
- /* Wake up all waiters to make sure no signal gets lost. */
-2: testq %r12, %r12
- jnz 5f
- addq $cond_futex, %rdi
- cmpq $-1, dep_mutex-cond_futex(%rdi)
- movl $0x7fffffff, %edx
-#ifdef __ASSUME_PRIVATE_FUTEX
- movl $FUTEX_WAKE, %eax
- movl $(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), %esi
- cmove %eax, %esi
-#else
- movl $0, %eax
- movl %fs:PRIVATE_FUTEX, %esi
- cmove %eax, %esi
- orl $FUTEX_WAKE, %esi
-#endif
- movl $SYS_futex, %eax
- syscall
-
-5: movq 16(%r8), %rdi
- callq __pthread_mutex_cond_lock
-
- popq %r12
-
- retq
- .size __condvar_cleanup, .-__condvar_cleanup
-
-
/* int pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex) */
.globl __pthread_cond_wait
.type __pthread_cond_wait, @function
.align 16
__pthread_cond_wait:
.LSTARTCODE:
- pushq %r12
-.Lpush_r12:
-#define FRAME_SIZE 64
- subq $FRAME_SIZE, %rsp
-.Lsubq:
+ cfi_startproc
+#ifdef SHARED
+ cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
+ DW.ref.__gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
+#else
+ cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
+#endif
+
+#define FRAME_SIZE 32
+ leaq -FRAME_SIZE(%rsp), %rsp
+ cfi_adjust_cfa_offset(FRAME_SIZE)
+
/* Stack frame:
- rsp + 64
- +--------------------------+
- rsp + 32 | cleanup buffer |
+ rsp + 32
+--------------------------+
rsp + 24 | old wake_seq value |
+--------------------------+
@@ -208,16 +98,6 @@ __pthread_cond_wait:
incl cond_futex(%rdi)
addl $(1 << nwaiters_shift), cond_nwaiters(%rdi)
- /* Install cancellation handler. */
-#ifdef PIC
- leaq __condvar_cleanup(%rip), %rsi
-#else
- leaq __condvar_cleanup, %rsi
-#endif
- leaq 32(%rsp), %rdi
- movq %rsp, %rdx
- callq __pthread_cleanup_push
-
/* Get and store current wakeup_seq value. */
movq 8(%rsp), %rdi
movq wakeup_seq(%rdi), %r9
@@ -226,7 +106,7 @@ __pthread_cond_wait:
movl %edx, 4(%rsp)
/* Unlock. */
-8: movl cond_futex(%rdi), %r12d
+8: movl cond_futex(%rdi), %edx
LOCK
#if cond_lock == 0
decl (%rdi)
@@ -235,31 +115,53 @@ __pthread_cond_wait:
#endif
jne 3f
+.LcleanupSTART:
4: callq __pthread_enable_asynccancel
movl %eax, (%rsp)
- movq 8(%rsp), %rdi
xorq %r10, %r10
- movq %r12, %rdx
- addq $cond_futex-cond_lock, %rdi
- cmpq $-1, dep_mutex-cond_futex(%rdi)
+ cmpq $-1, dep_mutex(%rdi)
+ leaq cond_futex(%rdi), %rdi
+ movl $FUTEX_WAIT, %esi
+ je 60f
+
+ movq dep_mutex-cond_futex(%rdi), %r8
+ /* Requeue to a non-robust PI mutex if the PI bit is set and
+ the robust bit is not set. */
+ movl MUTEX_KIND(%r8), %eax
+ andl $(ROBUST_BIT|PI_BIT), %eax
+ cmpl $PI_BIT, %eax
+ jne 61f
+
+ movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %esi
+ movl $SYS_futex, %eax
+ syscall
+
+ movl $1, %r8d
+#ifdef __ASSUME_REQUEUE_PI
+ jmp 62f
+#else
+ cmpq $-4095, %rax
+ jnae 62f
+
+# ifndef __ASSUME_PRIVATE_FUTEX
+ movl $FUTEX_WAIT, %esi
+# endif
+#endif
+
+61:
#ifdef __ASSUME_PRIVATE_FUTEX
- movl $FUTEX_WAIT, %eax
movl $(FUTEX_WAIT|FUTEX_PRIVATE_FLAG), %esi
- cmove %eax, %esi
#else
- movl $FUTEX_WAIT, %eax
- movl %fs:PRIVATE_FUTEX, %esi
- cmove %eax, %esi
-# if FUTEX_WAIT != 0
- orl $FUTEX_WAIT, %esi
-# endif
+ orl %fs:PRIVATE_FUTEX, %esi
#endif
+60: xorl %r8d, %r8d
movl $SYS_futex, %eax
syscall
- movl (%rsp), %edi
+62: movl (%rsp), %edi
callq __pthread_disable_asynccancel
+.LcleanupEND:
/* Lock. */
movq 8(%rsp), %rdi
@@ -325,24 +227,28 @@ __pthread_cond_wait:
#endif
jne 10f
- /* Remove cancellation handler. */
-11: movq 32+CLEANUP_PREV(%rsp), %rdx
- movq %rdx, %fs:CLEANUP
+ /* If requeue_pi is used the kernel performs the locking of the
+ mutex. */
+11: movq 16(%rsp), %rdi
+ testl %r8d, %r8d
+ jnz 18f
- movq 16(%rsp), %rdi
callq __pthread_mutex_cond_lock
-14: addq $FRAME_SIZE, %rsp
-.Laddq:
- popq %r12
-.Lpop_r12:
+14: leaq FRAME_SIZE(%rsp), %rsp
+ cfi_adjust_cfa_offset(-FRAME_SIZE)
/* We return the result of the mutex_lock operation. */
retq
+ cfi_adjust_cfa_offset(FRAME_SIZE)
+
+18: callq __pthread_mutex_cond_lock_adjust
+ xorl %eax, %eax
+ jmp 14b
+
/* Initial locking failed. */
1:
-.LSbl1:
#if cond_lock != 0
addq $cond_lock, %rdi
#endif
@@ -362,7 +268,11 @@ __pthread_cond_wait:
movl $LLL_PRIVATE, %eax
movl $LLL_SHARED, %esi
cmovne %eax, %esi
+ /* The call preserves %rdx. */
callq __lll_unlock_wake
+#if cond_lock != 0
+ subq $cond_lock, %rdi
+#endif
jmp 4b
/* Locking in loop failed. */
@@ -414,75 +324,173 @@ __pthread_cond_wait:
13: movq %r10, %rax
jmp 14b
-.LENDCODE:
.size __pthread_cond_wait, .-__pthread_cond_wait
versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
GLIBC_2_3_2)
- .section .eh_frame,"a",@progbits
-.LSTARTFRAME:
- .long L(ENDCIE)-L(STARTCIE) # Length of the CIE.
-.LSTARTCIE:
- .long 0 # CIE ID.
- .byte 1 # Version number.
-#ifdef SHARED
- .string "zR" # NUL-terminated augmentation
- # string.
+ .align 16
+ .type __condvar_cleanup1, @function
+ .globl __condvar_cleanup1
+ .hidden __condvar_cleanup1
+__condvar_cleanup1:
+ /* Stack frame:
+
+ rsp + 32
+ +--------------------------+
+ rsp + 24 | unused |
+ +--------------------------+
+ rsp + 16 | mutex pointer |
+ +--------------------------+
+ rsp + 8 | condvar pointer |
+ +--------------------------+
+ rsp + 4 | old broadcast_seq value |
+ +--------------------------+
+ rsp + 0 | old cancellation mode |
+ +--------------------------+
+ */
+
+ movq %rax, 24(%rsp)
+
+ /* Get internal lock. */
+ movq 8(%rsp), %rdi
+ movl $1, %esi
+ xorl %eax, %eax
+ LOCK
+#if cond_lock == 0
+ cmpxchgl %esi, (%rdi)
#else
- .ascii "\0" # NUL-terminated augmentation
- # string.
+ cmpxchgl %esi, cond_lock(%rdi)
#endif
- .uleb128 1 # Code alignment factor.
- .sleb128 -8 # Data alignment factor.
- .byte 16 # Return address register
- # column.
-#ifdef SHARED
- .uleb128 1 # Augmentation value length.
- .byte 0x1b # Encoding: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4.
+ jz 1f
+
+#if cond_lock != 0
+ addq $cond_lock, %rdi
#endif
- .byte 0x0c # DW_CFA_def_cfa
- .uleb128 7
- .uleb128 8
- .byte 0x90 # DW_CFA_offset, column 0x8
- .uleb128 1
- .align 8
-.LENDCIE:
-
- .long .LENDFDE-.LSTARTFDE # Length of the FDE.
-.LSTARTFDE:
- .long .LSTARTFDE-.LSTARTFRAME # CIE pointer.
-#ifdef SHARED
- .long .LSTARTCODE-. # PC-relative start address
- # of the code
+ cmpq $-1, dep_mutex-cond_lock(%rdi)
+ movl $LLL_PRIVATE, %eax
+ movl $LLL_SHARED, %esi
+ cmovne %eax, %esi
+ callq __lll_lock_wait
+#if cond_lock != 0
+ subq $cond_lock, %rdi
+#endif
+
+1: movl broadcast_seq(%rdi), %edx
+ cmpl 4(%rsp), %edx
+ jne 3f
+
+ /* We increment the wakeup_seq counter only if it is lower than
+ total_seq. If this is not the case the thread was woken and
+ then canceled. In this case we ignore the signal. */
+ movq total_seq(%rdi), %rax
+ cmpq wakeup_seq(%rdi), %rax
+ jbe 6f
+ incq wakeup_seq(%rdi)
+ incl cond_futex(%rdi)
+6: incq woken_seq(%rdi)
+
+3: subl $(1 << nwaiters_shift), cond_nwaiters(%rdi)
+
+ /* Wake up a thread which wants to destroy the condvar object. */
+ xorl %ecx, %ecx
+ cmpq $0xffffffffffffffff, total_seq(%rdi)
+ jne 4f
+ movl cond_nwaiters(%rdi), %eax
+ andl $~((1 << nwaiters_shift) - 1), %eax
+ jne 4f
+
+ cmpq $-1, dep_mutex(%rdi)
+ leaq cond_nwaiters(%rdi), %rdi
+ movl $1, %edx
+#ifdef __ASSUME_PRIVATE_FUTEX
+ movl $FUTEX_WAKE, %eax
+ movl $(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), %esi
+ cmove %eax, %esi
+#else
+ movl $0, %eax
+ movl %fs:PRIVATE_FUTEX, %esi
+ cmove %eax, %esi
+ orl $FUTEX_WAKE, %esi
+#endif
+ movl $SYS_futex, %eax
+ syscall
+ subq $cond_nwaiters, %rdi
+ movl $1, %ecx
+
+4: LOCK
+#if cond_lock == 0
+ decl (%rdi)
#else
- .long .LSTARTCODE # Start address of the code.
+ decl cond_lock(%rdi)
#endif
- .long .LENDCODE-.LSTARTCODE # Length of the code.
-#ifdef SHARED
- .uleb128 0 # No augmentation data.
+ je 2f
+#if cond_lock != 0
+ addq $cond_lock, %rdi
#endif
- .byte 0x40+.Lpush_r12-.LSTARTCODE # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 0x8c # DW_CFA_offset %r12
- .uleb128 2
- .byte 0x40+.Lsubq-.Lpush_r12 # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16+FRAME_SIZE
- .byte 3 # DW_CFA_advance_loc2
- .2byte .Laddq-.Lsubq
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 0x40+.Lpop_r12-.Laddq # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 8
- .byte 0xcc # DW_CFA_restore %r12
- .byte 0x40+.LSbl1-.Lpop_r12 # DW_CFA_advance_loc+N
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 80
- .byte 0x8c # DW_CFA_offset %r12
- .uleb128 2
+ cmpq $-1, dep_mutex-cond_lock(%rdi)
+ movl $LLL_PRIVATE, %eax
+ movl $LLL_SHARED, %esi
+ cmovne %eax, %esi
+ /* The call preserves %rcx. */
+ callq __lll_unlock_wake
+
+ /* Wake up all waiters to make sure no signal gets lost. */
+2: testl %ecx, %ecx
+ jnz 5f
+ addq $cond_futex, %rdi
+ cmpq $-1, dep_mutex-cond_futex(%rdi)
+ movl $0x7fffffff, %edx
+#ifdef __ASSUME_PRIVATE_FUTEX
+ movl $FUTEX_WAKE, %eax
+ movl $(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), %esi
+ cmove %eax, %esi
+#else
+ movl $0, %eax
+ movl %fs:PRIVATE_FUTEX, %esi
+ cmove %eax, %esi
+ orl $FUTEX_WAKE, %esi
+#endif
+ movl $SYS_futex, %eax
+ syscall
+
+5: movq 16(%rsp), %rdi
+ callq __pthread_mutex_cond_lock
+
+ movq 24(%rsp), %rdi
+.LcallUR:
+ call _Unwind_Resume@PLT
+ hlt
+.LENDCODE:
+ cfi_endproc
+ .size __condvar_cleanup1, .-__condvar_cleanup1
+
+
+ .section .gcc_except_table,"a",@progbits
+.LexceptSTART:
+ .byte DW_EH_PE_omit # @LPStart format
+ .byte DW_EH_PE_omit # @TType format
+ .byte DW_EH_PE_uleb128 # call-site format
+ .uleb128 .Lcstend-.Lcstbegin
+.Lcstbegin:
+ .uleb128 .LcleanupSTART-.LSTARTCODE
+ .uleb128 .LcleanupEND-.LcleanupSTART
+ .uleb128 __condvar_cleanup1-.LSTARTCODE
+ .uleb128 0
+ .uleb128 .LcallUR-.LSTARTCODE
+ .uleb128 .LENDCODE-.LcallUR
+ .uleb128 0
+ .uleb128 0
+.Lcstend:
+
+
+#ifdef SHARED
+ .hidden DW.ref.__gcc_personality_v0
+ .weak DW.ref.__gcc_personality_v0
+ .section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
.align 8
-.LENDFDE:
+ .type DW.ref.__gcc_personality_v0, @object
+ .size DW.ref.__gcc_personality_v0, 8
+DW.ref.__gcc_personality_v0:
+ .quad __gcc_personality_v0
+#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S
index c3b2b51bdb..ccc18493a2 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -17,6 +17,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <sysdep.h>
#include <kernel-features.h>
#include <tcb-offsets.h>
#include <lowlevellock.h>
@@ -32,6 +33,15 @@
.align 16
__pthread_once:
.LSTARTCODE:
+ cfi_startproc
+#ifdef SHARED
+ cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
+ DW.ref.__gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
+#else
+ cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
+#endif
testl $2, (%rdi)
jz 1f
xorl %eax, %eax
@@ -39,7 +49,7 @@ __pthread_once:
/* Preserve the function pointer. */
1: pushq %rsi
-.Lpush_rsi:
+ cfi_adjust_cfa_offset(8)
xorq %r10, %r10
/* Not yet initialized or initialization in progress.
@@ -86,9 +96,9 @@ __pthread_once:
/* Preserve the pointer to the control variable. */
3: pushq %rdi
-.Lpush_rdi:
+ cfi_adjust_cfa_offset(8)
pushq %rdi
-.Lpush_rdi2:
+ cfi_adjust_cfa_offset(8)
.LcleanupSTART:
callq *16(%rsp)
@@ -96,14 +106,14 @@ __pthread_once:
/* Get the control variable address back. */
popq %rdi
-.Lpop_rdi:
+ cfi_adjust_cfa_offset(-8)
/* Sucessful run of the initializer. Signal that we are done. */
LOCK
incl (%rdi)
addq $8, %rsp
-.Ladd1:
+ cfi_adjust_cfa_offset(-8)
/* Wake up all other threads. */
movl $0x7fffffff, %edx
@@ -117,10 +127,9 @@ __pthread_once:
syscall
4: addq $8, %rsp
-.Ladd2:
+ cfi_adjust_cfa_offset(-8)
xorl %eax, %eax
retq
-
.size __pthread_once,.-__pthread_once
@@ -134,6 +143,7 @@ pthread_once = __pthread_once
.type clear_once_control,@function
.align 16
clear_once_control:
+ cfi_adjust_cfa_offset(3 * 8)
movq (%rsp), %rdi
movq %rax, %r8
movl $0, (%rdi)
@@ -153,15 +163,15 @@ clear_once_control:
call _Unwind_Resume@PLT
hlt
.LENDCODE:
+ cfi_endproc
.size clear_once_control,.-clear_once_control
.section .gcc_except_table,"a",@progbits
.LexceptSTART:
- .byte 0xff # @LPStart format (omit)
- .byte 0xff # @TType format (omit)
- .byte 0x01 # call-site format
- # DW_EH_PE_uleb128
+ .byte DW_EH_PE_omit # @LPStart format
+ .byte DW_EH_PE_omit # @TType format
+ .byte DW_EH_PE_uleb128 # call-site format
.uleb128 .Lcstend-.Lcstbegin
.Lcstbegin:
.uleb128 .LcleanupSTART-.LSTARTCODE
@@ -175,100 +185,6 @@ clear_once_control:
.Lcstend:
- .section .eh_frame,"a",@progbits
-.LSTARTFRAME:
- .long .LENDCIE-.LSTARTCIE # Length of the CIE.
-.LSTARTCIE:
- .long 0 # CIE ID.
- .byte 1 # Version number.
-#ifdef SHARED
- .string "zPLR" # NUL-terminated augmentation
- # string.
-#else
- .string "zPL" # NUL-terminated augmentation
- # string.
-#endif
- .uleb128 1 # Code alignment factor.
- .sleb128 -8 # Data alignment factor.
- .byte 16 # Return address register
- # column.
-#ifdef SHARED
- .uleb128 7 # Augmentation value length.
- .byte 0x9b # Personality: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4
- # + DW_EH_PE_indirect
- .long DW.ref.__gcc_personality_v0-.
- .byte 0x1b # LSDA Encoding: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4.
- .byte 0x1b # FDE Encoding: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4.
-#else
- .uleb128 10 # Augmentation value length.
- .byte 0x0 # Personality: absolute
- .quad __gcc_personality_v0
- .byte 0x0 # LSDA Encoding: absolute
-#endif
- .byte 0x0c # DW_CFA_def_cfa
- .uleb128 7
- .uleb128 8
- .byte 0x90 # DW_CFA_offset, column 0x10
- .uleb128 1
- .align 8
-.LENDCIE:
-
- .long .LENDFDE-.LSTARTFDE # Length of the FDE.
-.LSTARTFDE:
- .long .LSTARTFDE-.LSTARTFRAME # CIE pointer.
-#ifdef SHARED
- .long .LSTARTCODE-. # PC-relative start address
- # of the code.
- .long .LENDCODE-.LSTARTCODE # Length of the code.
- .uleb128 4 # Augmentation size
- .long .LexceptSTART-.
-#else
- .quad .LSTARTCODE # Start address of the code.
- .quad .LENDCODE-.LSTARTCODE # Length of the code.
- .uleb128 8 # Augmentation size
- .quad .LexceptSTART
-#endif
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpush_rsi-.LSTARTCODE
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpush_rdi-.Lpush_rsi
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 24
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpush_rdi2-.Lpush_rdi
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 32
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpop_rdi-.Lpush_rdi2
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 24
- .byte 4 # DW_CFA_advance_loc4
- .long .Ladd1-.Lpop_rdi
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 4 # DW_CFA_advance_loc4
- .long .Ladd2-.Ladd1
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 8
- .byte 4 # DW_CFA_advance_loc4
- .long clear_once_control-.Ladd2
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 32
-#if 0
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpop_rdi3-clear_once_control
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
-#endif
- .align 8
-.LENDFDE:
-
-
#ifdef SHARED
.hidden DW.ref.__gcc_personality_v0
.weak DW.ref.__gcc_personality_v0
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S
index 80fedd4ab1..35eb09cd0c 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -30,6 +30,7 @@
.type __pthread_rwlock_rdlock,@function
.align 16
__pthread_rwlock_rdlock:
+ cfi_startproc
xorq %r10, %r10
/* Get the lock. */
@@ -167,6 +168,7 @@ __pthread_rwlock_rdlock:
subq $MUTEX, %rdi
#endif
jmp 13b
+ cfi_endproc
.size __pthread_rwlock_rdlock,.-__pthread_rwlock_rdlock
.globl pthread_rwlock_rdlock
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
index 366c96fc36..23b218af34 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -36,16 +36,21 @@ pthread_rwlock_timedrdlock:
cfi_startproc
pushq %r12
cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r12, 0)
pushq %r13
cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r13, 0)
+#ifdef __ASSUME_FUTEX_CLOCK_REALTIME
+# define VALREG %edx
+#else
pushq %r14
cfi_adjust_cfa_offset(8)
- cfi_offset(%r12, -16)
- cfi_offset(%r13, -24)
- cfi_offset(%r14, -32)
+ cfi_rel_offset(%r14, 0)
subq $16, %rsp
cfi_adjust_cfa_offset(16)
+# define VALREG %r14d
+#endif
movq %rdi, %r12
movq %rsi, %r13
@@ -76,7 +81,7 @@ pthread_rwlock_timedrdlock:
incl READERS_QUEUED(%r12)
je 4f
- movl READERS_WAKEUP(%r12), %r14d
+ movl READERS_WAKEUP(%r12), VALREG
/* Unlock. */
LOCK
@@ -87,8 +92,33 @@ pthread_rwlock_timedrdlock:
#endif
jne 10f
+11:
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+# ifdef PIC
+ cmpl $0, __have_futex_clock_realtime(%rip)
+# else
+ cmpl $0, __have_futex_clock_realtime
+# endif
+ je .Lreltmo
+#endif
+
+ movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi
+ xorl PSHARED(%r12), %esi
+ movq %r13, %r10
+ movl $0xffffffff, %r9d
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+ movl %r14d, %edx
+#endif
+21: leaq READERS_WAKEUP(%r12), %rdi
+ movl $SYS_futex, %eax
+ syscall
+ movq %rax, %rdx
+
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+ .subsection 2
+.Lreltmo:
/* Get current time. */
-11: movq %rsp, %rdi
+ movq %rsp, %rdi
xorl %esi, %esi
movq $VSYSCALL_ADDR_vgettimeofday, %rax
callq *%rax
@@ -111,27 +141,26 @@ pthread_rwlock_timedrdlock:
movq %rcx, (%rsp) /* Store relative timeout. */
movq %rdi, 8(%rsp)
-#ifdef __ASSUME_PRIVATE_FUTEX
+# ifdef __ASSUME_PRIVATE_FUTEX
movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %esi
xorl PSHARED(%r12), %esi
-#else
-# if FUTEX_WAIT == 0
- movl PSHARED(%r12), %esi
# else
+# if FUTEX_WAIT == 0
+ movl PSHARED(%r12), %esi
+# else
movl $FUTEX_WAIT, %esi
orl PSHARED(%r12), %esi
-# endif
+# endif
xorl %fs:PRIVATE_FUTEX, %esi
-#endif
+# endif
movq %rsp, %r10
movl %r14d, %edx
- leaq READERS_WAKEUP(%r12), %rdi
- movl $SYS_futex, %eax
- syscall
- movq %rax, %rdx
-17:
- /* Reget the lock. */
+ jmp 21b
+ .previous
+#endif
+
+17: /* Reget the lock. */
movl $1, %esi
xorl %eax, %eax
LOCK
@@ -163,11 +192,13 @@ pthread_rwlock_timedrdlock:
7: movq %rdx, %rax
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
addq $16, %rsp
cfi_adjust_cfa_offset(-16)
popq %r14
cfi_adjust_cfa_offset(-8)
cfi_restore(%r14)
+#endif
popq %r13
cfi_adjust_cfa_offset(-8)
cfi_restore(%r13)
@@ -176,10 +207,16 @@ pthread_rwlock_timedrdlock:
cfi_restore(%r12)
retq
+#ifdef __ASSUME_PRIVATE_FUTEX
+ cfi_adjust_cfa_offset(16)
+ cfi_rel_offset(%r12, 8)
+ cfi_rel_offset(%r13, 0)
+#else
cfi_adjust_cfa_offset(40)
cfi_offset(%r12, -16)
cfi_offset(%r13, -24)
cfi_offset(%r14, -32)
+#endif
1: movl PSHARED(%rdi), %esi
#if MUTEX != 0
addq $MUTEX, %rdi
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
index dde6b58836..cd867b60dc 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -36,16 +36,21 @@ pthread_rwlock_timedwrlock:
cfi_startproc
pushq %r12
cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r12, 0)
pushq %r13
cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r13, 0)
+#ifdef __ASSUME_FUTEX_CLOCK_REALTIME
+# define VALREG %edx
+#else
pushq %r14
cfi_adjust_cfa_offset(8)
- cfi_offset(%r12, -16)
- cfi_offset(%r13, -24)
- cfi_offset(%r14, -32)
+ cfi_rel_offset(%r14, 0)
subq $16, %rsp
cfi_adjust_cfa_offset(16)
+# define VALREG %r14d
+#endif
movq %rdi, %r12
movq %rsi, %r13
@@ -74,7 +79,7 @@ pthread_rwlock_timedwrlock:
incl WRITERS_QUEUED(%r12)
je 4f
- movl WRITERS_WAKEUP(%r12), %r14d
+ movl WRITERS_WAKEUP(%r12), VALREG
LOCK
#if MUTEX == 0
@@ -84,8 +89,33 @@ pthread_rwlock_timedwrlock:
#endif
jne 10f
+11:
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+# ifdef PIC
+ cmpl $0, __have_futex_clock_realtime(%rip)
+# else
+ cmpl $0, __have_futex_clock_realtime
+# endif
+ je .Lreltmo
+#endif
+
+ movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi
+ xorl PSHARED(%r12), %esi
+ movq %r13, %r10
+ movl $0xffffffff, %r9d
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+ movl %r14d, %edx
+#endif
+21: leaq WRITERS_WAKEUP(%r12), %rdi
+ movl $SYS_futex, %eax
+ syscall
+ movq %rax, %rdx
+
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+ .subsection 2
+.Lreltmo:
/* Get current time. */
-11: movq %rsp, %rdi
+ movq %rsp, %rdi
xorl %esi, %esi
movq $VSYSCALL_ADDR_vgettimeofday, %rax
callq *%rax
@@ -108,27 +138,26 @@ pthread_rwlock_timedwrlock:
movq %rcx, (%rsp) /* Store relative timeout. */
movq %rdi, 8(%rsp)
-#ifdef __ASSUME_PRIVATE_FUTEX
+# ifdef __ASSUME_PRIVATE_FUTEX
movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %esi
xorl PSHARED(%r12), %esi
-#else
-# if FUTEX_WAIT == 0
- movl PSHARED(%r12), %esi
# else
+# if FUTEX_WAIT == 0
+ movl PSHARED(%r12), %esi
+# else
movl $FUTEX_WAIT, %esi
orl PSHARED(%r12), %esi
-# endif
+# endif
xorl %fs:PRIVATE_FUTEX, %esi
-#endif
+# endif
movq %rsp, %r10
movl %r14d, %edx
- leaq WRITERS_WAKEUP(%r12), %rdi
- movl $SYS_futex, %eax
- syscall
- movq %rax, %rdx
-17:
- /* Reget the lock. */
+ jmp 21b
+ .previous
+#endif
+
+17: /* Reget the lock. */
movl $1, %esi
xorl %eax, %eax
LOCK
@@ -160,11 +189,13 @@ pthread_rwlock_timedwrlock:
7: movq %rdx, %rax
+#ifndef __ASSUME_PRIVATE_FUTEX
addq $16, %rsp
cfi_adjust_cfa_offset(-16)
popq %r14
cfi_adjust_cfa_offset(-8)
cfi_restore(%r14)
+#endif
popq %r13
cfi_adjust_cfa_offset(-8)
cfi_restore(%r13)
@@ -173,10 +204,16 @@ pthread_rwlock_timedwrlock:
cfi_restore(%r12)
retq
+#ifdef __ASSUME_PRIVATE_FUTEX
+ cfi_adjust_cfa_offset(16)
+ cfi_rel_offset(%r12, 8)
+ cfi_rel_offset(%r13, 0)
+#else
cfi_adjust_cfa_offset(40)
cfi_offset(%r12, -16)
cfi_offset(%r13, -24)
cfi_offset(%r14, -32)
+#endif
1: movl PSHARED(%rdi), %esi
#if MUTEX != 0
addq $MUTEX, %rdi
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
index cf7f607d9c..03391d0fc2 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -29,6 +29,7 @@
.type __pthread_rwlock_unlock,@function
.align 16
__pthread_rwlock_unlock:
+ cfi_startproc
/* Get the lock. */
movl $1, %esi
xorl %eax, %eax
@@ -119,7 +120,7 @@ __pthread_rwlock_unlock:
#endif
callq __lll_unlock_wake
jmp 8b
-
+ cfi_endproc
.size __pthread_rwlock_unlock,.-__pthread_rwlock_unlock
.globl pthread_rwlock_unlock
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S
index 209c0e9a94..be6b8d8e20 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -30,6 +30,7 @@
.type __pthread_rwlock_wrlock,@function
.align 16
__pthread_rwlock_wrlock:
+ cfi_startproc
xorq %r10, %r10
/* Get the lock. */
@@ -155,6 +156,7 @@ __pthread_rwlock_wrlock:
subq $MUTEX, %rdi
#endif
jmp 13b
+ cfi_endproc
.size __pthread_rwlock_wrlock,.-__pthread_rwlock_wrlock
.globl pthread_rwlock_wrlock
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
index 88e99cf6a1..0291beb169 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -18,6 +18,7 @@
02111-1307 USA. */
#include <sysdep.h>
+#include <kernel-features.h>
#include <lowlevellock.h>
#include <shlib-compat.h>
#include <pthread-errnos.h>
@@ -34,6 +35,15 @@
.align 16
sem_timedwait:
.LSTARTCODE:
+ cfi_startproc
+#ifdef SHARED
+ cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
+ DW.ref.__gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
+#else
+ cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
+#endif
#if VALUE == 0
movl (%rdi), %eax
#else
@@ -55,23 +65,133 @@ sem_timedwait:
retq
/* Check whether the timeout value is valid. */
-1: pushq %r12
-.Lpush_r12:
+1: cmpq $1000000000, 8(%rsi)
+ jae 6f
+
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+# ifdef PIC
+ cmpl $0, __have_futex_clock_realtime(%rip)
+# else
+ cmpl $0, __have_futex_clock_realtime
+# endif
+ je .Lreltmo
+#endif
+
+ /* This push is only needed to store the sem_t pointer for the
+ exception handler. */
+ pushq %rdi
+ cfi_adjust_cfa_offset(8)
+
+ movq %rsi, %r10
+
+ LOCK
+ addq $1, NWAITERS(%rdi)
+
+.LcleanupSTART:
+13: call __pthread_enable_asynccancel
+ movl %eax, %r8d
+
+#if VALUE != 0
+ leaq VALUE(%rdi), %rdi
+#endif
+ movl $0xffffffff, %r9d
+ movl $FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi
+ orl PRIVATE(%rdi), %esi
+ movl $SYS_futex, %eax
+ xorl %edx, %edx
+ syscall
+ movq %rax, %r9
+#if VALUE != 0
+ leaq -VALUE(%rdi), %rdi
+#endif
+
+ xchgq %r8, %rdi
+ call __pthread_disable_asynccancel
+.LcleanupEND:
+ movq %r8, %rdi
+
+ testq %r9, %r9
+ je 11f
+ cmpq $-EWOULDBLOCK, %r9
+ jne 3f
+
+11:
+#if VALUE == 0
+ movl (%rdi), %eax
+#else
+ movl VALUE(%rdi), %eax
+#endif
+14: testl %eax, %eax
+ je 13b
+
+ leaq -1(%rax), %rcx
+ LOCK
+#if VALUE == 0
+ cmpxchgl %ecx, (%rdi)
+#else
+ cmpxchgl %ecx, VALUE(%rdi)
+#endif
+ jne 14b
+
+ xorl %eax, %eax
+
+15: LOCK
+ subq $1, NWAITERS(%rdi)
+
+ leaq 8(%rsp), %rsp
+ cfi_adjust_cfa_offset(-8)
+ retq
+
+ cfi_adjust_cfa_offset(8)
+3: negq %r9
+#if USE___THREAD
+ movq errno@gottpoff(%rip), %rdx
+ movl %r9d, %fs:(%rdx)
+#else
+ callq __errno_location@plt
+ movl %r9d, (%rax)
+#endif
+
+ orl $-1, %eax
+ jmp 15b
+
+ cfi_adjust_cfa_offset(-8)
+6:
+#if USE___THREAD
+ movq errno@gottpoff(%rip), %rdx
+ movl $EINVAL, %fs:(%rdx)
+#else
+ callq __errno_location@plt
+ movl $EINVAL, (%rax)
+#endif
+
+ orl $-1, %eax
+
+ retq
+
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+.Lreltmo:
+ pushq %r12
+ cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r12, 0)
pushq %r13
-.Lpush_r13:
+ cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r13, 0)
pushq %r14
-.Lpush_r14:
- subq $24, %rsp
-.Lsubq:
+ cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(%r14, 0)
+
+#ifdef __ASSUME_FUTEX_CLOCK_REALTIME
+# define STACKFRAME 8
+#else
+# define STACKFRAME 24
+#endif
+ subq $STACKFRAME, %rsp
+ cfi_adjust_cfa_offset(STACKFRAME)
movq %rdi, %r12
movq %rsi, %r13
- /* Check for invalid nanosecond field. */
- cmpq $1000000000, 8(%r13)
- movl $EINVAL, %r14d
- jae 6f
-
LOCK
addq $1, NWAITERS(%r12)
@@ -93,27 +213,27 @@ sem_timedwait:
decq %rdi
5: testq %rdi, %rdi
movl $ETIMEDOUT, %r14d
- js 6f /* Time is already up. */
+ js 36f /* Time is already up. */
movq %rdi, (%rsp) /* Store relative timeout. */
movq %rsi, 8(%rsp)
-.LcleanupSTART:
+.LcleanupSTART2:
call __pthread_enable_asynccancel
movl %eax, 16(%rsp)
movq %rsp, %r10
-#if VALUE == 0
+# if VALUE == 0
movq %r12, %rdi
-#else
+# else
leaq VALUE(%r12), %rdi
-#endif
-#if FUTEX_WAIT == 0
+# endif
+# if FUTEX_WAIT == 0
movl PRIVATE(%rdi), %esi
-#else
+# else
movl $FUTEX_WAIT, %esi
orl PRIVATE(%rdi), %esi
-#endif
+# endif
movl $SYS_futex, %eax
xorl %edx, %edx
syscall
@@ -121,49 +241,55 @@ sem_timedwait:
movl 16(%rsp), %edi
call __pthread_disable_asynccancel
-.LcleanupEND:
+.LcleanupEND2:
testq %r14, %r14
je 9f
cmpq $-EWOULDBLOCK, %r14
- jne 3f
+ jne 33f
9:
-#if VALUE == 0
+# if VALUE == 0
movl (%r12), %eax
-#else
+# else
movl VALUE(%r12), %eax
-#endif
+# endif
8: testl %eax, %eax
je 7b
leaq -1(%rax), %rcx
LOCK
-#if VALUE == 0
+# if VALUE == 0
cmpxchgl %ecx, (%r12)
-#else
+# else
cmpxchgl %ecx, VALUE(%r12)
-#endif
+# endif
jne 8b
xorl %eax, %eax
-10: LOCK
+45: LOCK
subq $1, NWAITERS(%r12)
- addq $24, %rsp
-.Laddq:
+ addq $STACKFRAME, %rsp
+ cfi_adjust_cfa_offset(-STACKFRAME)
popq %r14
-.Lpop_r14:
+ cfi_adjust_cfa_offset(-8)
+ cfi_restore(%r14)
popq %r13
-.Lpop_r13:
+ cfi_adjust_cfa_offset(-8)
+ cfi_restore(%r13)
popq %r12
-.Lpop_r12:
+ cfi_adjust_cfa_offset(-8)
+ cfi_restore(%r12)
retq
-.Lafter_retq:
-3: negq %r14
-6:
+ cfi_adjust_cfa_offset(STACKFRAME + 3 * 8)
+ cfi_rel_offset(%r12, STACKFRAME + 2 * 8)
+ cfi_rel_offset(%r13, STACKFRAME + 1 * 8)
+ cfi_rel_offset(%r14, STACKFRAME)
+33: negq %r14
+36:
#if USE___THREAD
movq errno@gottpoff(%rip), %rdx
movl %r14d, %fs:(%rdx)
@@ -173,151 +299,81 @@ sem_timedwait:
#endif
orl $-1, %eax
- jmp 10b
+ jmp 45b
+#endif
+ cfi_endproc
.size sem_timedwait,.-sem_timedwait
.type sem_timedwait_cleanup,@function
sem_timedwait_cleanup:
+ cfi_startproc
+ cfi_adjust_cfa_offset(8)
+
+ movq (%rsp), %rdi
LOCK
- subq $1, NWAITERS(%r12)
+ subq $1, NWAITERS(%rdi)
movq %rax, %rdi
.LcallUR:
call _Unwind_Resume@PLT
hlt
.LENDCODE:
+ cfi_endproc
.size sem_timedwait_cleanup,.-sem_timedwait_cleanup
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+ .type sem_timedwait_cleanup2,@function
+sem_timedwait_cleanup2:
+ cfi_startproc
+ cfi_adjust_cfa_offset(STACKFRAME + 3 * 8)
+ cfi_rel_offset(%r12, STACKFRAME + 2 * 8)
+ cfi_rel_offset(%r13, STACKFRAME + 1 * 8)
+ cfi_rel_offset(%r14, STACKFRAME)
+
+ LOCK
+ subq $1, NWAITERS(%r12)
+ movq %rax, %rdi
+ movq STACKFRAME(%rsp), %r14
+ movq STACKFRAME+8(%rsp), %r13
+ movq STACKFRAME+16(%rsp), %r12
+.LcallUR2:
+ call _Unwind_Resume@PLT
+ hlt
+.LENDCODE2:
+ cfi_endproc
+ .size sem_timedwait_cleanup2,.-sem_timedwait_cleanup2
+#endif
+
+
.section .gcc_except_table,"a",@progbits
.LexceptSTART:
- .byte 0xff # @LPStart format (omit)
- .byte 0xff # @TType format (omit)
- .byte 0x01 # call-site format
- # DW_EH_PE_uleb128
+ .byte DW_EH_PE_omit # @LPStart format
+ .byte DW_EH_PE_omit # @TType format
+ .byte DW_EH_PE_uleb128 # call-site format
.uleb128 .Lcstend-.Lcstbegin
.Lcstbegin:
.uleb128 .LcleanupSTART-.LSTARTCODE
.uleb128 .LcleanupEND-.LcleanupSTART
.uleb128 sem_timedwait_cleanup-.LSTARTCODE
.uleb128 0
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+ .uleb128 .LcleanupSTART2-.LSTARTCODE
+ .uleb128 .LcleanupEND2-.LcleanupSTART2
+ .uleb128 sem_timedwait_cleanup2-.LSTARTCODE
+ .uleb128 0
+#endif
.uleb128 .LcallUR-.LSTARTCODE
.uleb128 .LENDCODE-.LcallUR
.uleb128 0
.uleb128 0
-.Lcstend:
-
-
- .section .eh_frame,"a",@progbits
-.LSTARTFRAME:
- .long .LENDCIE-.LSTARTCIE # Length of the CIE.
-.LSTARTCIE:
- .long 0 # CIE ID.
- .byte 1 # Version number.
-#ifdef SHARED
- .string "zPLR" # NUL-terminated augmentation
- # string.
-#else
- .string "zPL" # NUL-terminated augmentation
- # string.
-#endif
- .uleb128 1 # Code alignment factor.
- .sleb128 -8 # Data alignment factor.
- .byte 16 # Return address register
- # column.
-#ifdef SHARED
- .uleb128 7 # Augmentation value length.
- .byte 0x9b # Personality: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4
- # + DW_EH_PE_indirect
- .long DW.ref.__gcc_personality_v0-.
- .byte 0x1b # LSDA Encoding: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4.
- .byte 0x1b # FDE Encoding: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4.
-#else
- .uleb128 10 # Augmentation value length.
- .byte 0x0 # Personality: absolute
- .quad __gcc_personality_v0
- .byte 0x0 # LSDA Encoding: absolute
-#endif
- .byte 0x0c # DW_CFA_def_cfa
- .uleb128 7
- .uleb128 8
- .byte 0x90 # DW_CFA_offset, column 0x10
- .uleb128 1
- .align 8
-.LENDCIE:
-
- .long .LENDFDE-.LSTARTFDE # Length of the FDE.
-.LSTARTFDE:
- .long .LSTARTFDE-.LSTARTFRAME # CIE pointer.
-#ifdef SHARED
- .long .LSTARTCODE-. # PC-relative start address
- # of the code.
- .long .LENDCODE-.LSTARTCODE # Length of the code.
- .uleb128 4 # Augmentation size
- .long .LexceptSTART-.
-#else
- .quad .LSTARTCODE # Start address of the code.
- .quad .LENDCODE-.LSTARTCODE # Length of the code.
- .uleb128 8 # Augmentation size
- .quad .LexceptSTART
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+ .uleb128 .LcallUR2-.LSTARTCODE
+ .uleb128 .LENDCODE2-.LcallUR2
+ .uleb128 0
+ .uleb128 0
#endif
-
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpush_r12-.LSTARTCODE
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 0x8c # DW_CFA_offset %r12
- .uleb128 2
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpush_r13-.Lpush_r12
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 24
- .byte 0x8d # DW_CFA_offset %r13
- .uleb128 3
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpush_r14-.Lpush_r13
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 32
- .byte 0x8e # DW_CFA_offset %r14
- .uleb128 4
- .byte 4 # DW_CFA_advance_loc4
- .long .Lsubq-.Lpush_r14
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 56
- .byte 4 # DW_CFA_advance_loc4
- .long .Laddq-.Lsubq
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 32
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpop_r14-.Laddq
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 24
- .byte 0xce # DW_CFA_restore %r14
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpop_r13-.Lpop_r14
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 0xcd # DW_CFA_restore %r13
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpop_r12-.Lpop_r13
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 8
- .byte 0xcc # DW_CFA_restore %r12
- .byte 4 # DW_CFA_advance_loc4
- .long .Lafter_retq-.Lpop_r12
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 56
- .byte 0x8c # DW_CFA_offset %r12
- .uleb128 2
- .byte 0x8d # DW_CFA_offset %r13
- .uleb128 3
- .byte 0x8e # DW_CFA_offset %r14
- .uleb128 4
- .align 8
-.LENDFDE:
+.Lcstend:
#ifdef SHARED
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S
index 5320a91e19..2cf6ec10a4 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -31,16 +31,20 @@
.align 16
sem_wait:
.LSTARTCODE:
- pushq %r12
-.Lpush_r12:
- pushq %r13
-.Lpush_r13:
- movq %rdi, %r13
+ cfi_startproc
+#ifdef SHARED
+ cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
+ DW.ref.__gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
+#else
+ cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
+ cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
+#endif
#if VALUE == 0
- movl (%r13), %eax
+ movl (%rdi), %eax
#else
- movl VALUE(%r13), %eax
+ movl VALUE(%rdi), %eax
#endif
2: testl %eax, %eax
je 1f
@@ -48,24 +52,22 @@ sem_wait:
leal -1(%rax), %edx
LOCK
#if VALUE == 0
- cmpxchgl %edx, (%r13)
+ cmpxchgl %edx, (%rdi)
#else
- cmpxchgl %edx, VALUE(%r13)
+ cmpxchgl %edx, VALUE(%rdi)
#endif
jne 2b
-7: xorl %eax, %eax
-
-9: popq %r13
-.Lpop_r13:
- popq %r12
-.Lpop_r12:
-
+ xorl %eax, %eax
retq
-.Lafter_retq:
-1: LOCK
- addq $1, NWAITERS(%r13)
+ /* This push is only needed to store the sem_t pointer for the
+ exception handler. */
+1: pushq %rdi
+ cfi_adjust_cfa_offset(8)
+
+ LOCK
+ addq $1, NWAITERS(%rdi)
.LcleanupSTART:
6: call __pthread_enable_asynccancel
@@ -73,7 +75,6 @@ sem_wait:
xorq %r10, %r10
movl $SYS_futex, %eax
- movq %r13, %rdi
#if FUTEX_WAIT == 0
movl PRIVATE(%rdi), %esi
#else
@@ -82,22 +83,23 @@ sem_wait:
#endif
xorl %edx, %edx
syscall
- movq %rax, %r12
+ movq %rax, %rcx
- movl %r8d, %edi
+ xchgq %r8, %rdi
call __pthread_disable_asynccancel
.LcleanupEND:
+ movq %r8, %rdi
- testq %r12, %r12
+ testq %rcx, %rcx
je 3f
- cmpq $-EWOULDBLOCK, %r12
+ cmpq $-EWOULDBLOCK, %rcx
jne 4f
3:
#if VALUE == 0
- movl (%r13), %eax
+ movl (%rdi), %eax
#else
- movl VALUE(%r13), %eax
+ movl VALUE(%rdi), %eax
#endif
5: testl %eax, %eax
je 6b
@@ -105,51 +107,57 @@ sem_wait:
leal -1(%rax), %edx
LOCK
#if VALUE == 0
- cmpxchgl %edx, (%r13)
+ cmpxchgl %edx, (%rdi)
#else
- cmpxchgl %edx, VALUE(%r13)
+ cmpxchgl %edx, VALUE(%rdi)
#endif
jne 5b
- LOCK
- subq $1, NWAITERS(%r13)
- jmp 7b
+ xorl %eax, %eax
-4: negq %r12
+9: LOCK
+ subq $1, NWAITERS(%rdi)
+
+ leaq 8(%rsp), %rsp
+ cfi_adjust_cfa_offset(-8)
+
+ retq
+
+ cfi_adjust_cfa_offset(8)
+4: negq %rcx
#if USE___THREAD
movq errno@gottpoff(%rip), %rdx
- movl %r12d, %fs:(%rdx)
+ movl %ecx, %fs:(%rdx)
#else
+# error "not supported. %rcx and %rdi must be preserved"
callq __errno_location@plt
- movl %r12d, (%rax)
+ movl %ecx, (%rax)
#endif
orl $-1, %eax
- LOCK
- subq $1, NWAITERS(%r13)
-
jmp 9b
.size sem_wait,.-sem_wait
.type sem_wait_cleanup,@function
sem_wait_cleanup:
+ movq (%rsp), %rdi
LOCK
- subq $1, NWAITERS(%r13)
+ subq $1, NWAITERS(%rdi)
movq %rax, %rdi
.LcallUR:
call _Unwind_Resume@PLT
hlt
.LENDCODE:
+ cfi_endproc
.size sem_wait_cleanup,.-sem_wait_cleanup
.section .gcc_except_table,"a",@progbits
.LexceptSTART:
- .byte 0xff # @LPStart format (omit)
- .byte 0xff # @TType format (omit)
- .byte 0x01 # call-site format
- # DW_EH_PE_uleb128
+ .byte DW_EH_PE_omit # @LPStart format
+ .byte DW_EH_PE_omit # @TType format
+ .byte DW_EH_PE_uleb128 # call-site format
.uleb128 .Lcstend-.Lcstbegin
.Lcstbegin:
.uleb128 .LcleanupSTART-.LSTARTCODE
@@ -163,97 +171,6 @@ sem_wait_cleanup:
.Lcstend:
- .section .eh_frame,"a",@progbits
-.LSTARTFRAME:
- .long .LENDCIE-.LSTARTCIE # Length of the CIE.
-.LSTARTCIE:
- .long 0 # CIE ID.
- .byte 1 # Version number.
-#ifdef SHARED
- .string "zPLR" # NUL-terminated augmentation
- # string.
-#else
- .string "zPL" # NUL-terminated augmentation
- # string.
-#endif
- .uleb128 1 # Code alignment factor.
- .sleb128 -8 # Data alignment factor.
- .byte 16 # Return address register
- # column.
-#ifdef SHARED
- .uleb128 7 # Augmentation value length.
- .byte 0x9b # Personality: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4
- # + DW_EH_PE_indirect
- .long DW.ref.__gcc_personality_v0-.
- .byte 0x1b # LSDA Encoding: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4.
- .byte 0x1b # FDE Encoding: DW_EH_PE_pcrel
- # + DW_EH_PE_sdata4.
-#else
- .uleb128 10 # Augmentation value length.
- .byte 0x0 # Personality: absolute
- .quad __gcc_personality_v0
- .byte 0x0 # LSDA Encoding: absolute
-#endif
- .byte 0x0c # DW_CFA_def_cfa
- .uleb128 7
- .uleb128 8
- .byte 0x90 # DW_CFA_offset, column 0x10
- .uleb128 1
- .align 8
-.LENDCIE:
-
- .long .LENDFDE-.LSTARTFDE # Length of the FDE.
-.LSTARTFDE:
- .long .LSTARTFDE-.LSTARTFRAME # CIE pointer.
-#ifdef SHARED
- .long .LSTARTCODE-. # PC-relative start address
- # of the code.
- .long .LENDCODE-.LSTARTCODE # Length of the code.
- .uleb128 4 # Augmentation size
- .long .LexceptSTART-.
-#else
- .quad .LSTARTCODE # Start address of the code.
- .quad .LENDCODE-.LSTARTCODE # Length of the code.
- .uleb128 8 # Augmentation size
- .quad .LexceptSTART
-#endif
-
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpush_r12-.LSTARTCODE
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 0x8c # DW_CFA_offset %r12
- .uleb128 2
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpush_r13-.Lpush_r12
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 24
- .byte 0x8d # DW_CFA_offset %r13
- .uleb128 3
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpop_r13-.Lpush_r13
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 16
- .byte 0xcd # DW_CFA_restore %r13
- .byte 4 # DW_CFA_advance_loc4
- .long .Lpop_r12-.Lpop_r13
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 8
- .byte 0xcc # DW_CFA_restore %r12
- .byte 4 # DW_CFA_advance_loc4
- .long .Lafter_retq-.Lpop_r12
- .byte 14 # DW_CFA_def_cfa_offset
- .uleb128 24
- .byte 0x8c # DW_CFA_offset %r12
- .uleb128 2
- .byte 0x8d # DW_CFA_offset %r13
- .uleb128 3
- .align 8
-.LENDFDE:
-
-
#ifdef SHARED
.hidden DW.ref.__gcc_personality_v0
.weak DW.ref.__gcc_personality_v0
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
index 3e741da794..1e92de1dcc 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
@@ -25,6 +25,10 @@
#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+/* The code to disable cancellation depends on the fact that the called
+ functions are special. They don't modify registers other than %rax
+ and %r11 if they return. Therefore we don't have to preserve other
+ registers around these calls. */
# undef PSEUDO
# define PSEUDO(name, syscall_name, args) \
.text; \
@@ -40,60 +44,23 @@
ret; \
.size __##syscall_name##_nocancel,.-__##syscall_name##_nocancel; \
L(pseudo_cancel): \
- /* Save registers that might get destroyed. */ \
- SAVESTK_##args \
- PUSHARGS_##args \
+ /* We always have to align the stack before calling a function. */ \
+ subq $8, %rsp; cfi_adjust_cfa_offset (8); \
CENABLE \
- /* Restore registers. */ \
- POPARGS_##args \
/* The return value from CENABLE is argument for CDISABLE. */ \
movq %rax, (%rsp); \
- movl $SYS_ify (syscall_name), %eax; \
- syscall; \
+ DO_CALL (syscall_name, args); \
movq (%rsp), %rdi; \
/* Save %rax since it's the error code from the syscall. */ \
- movq %rax, 8(%rsp); \
+ movq %rax, %rdx; \
CDISABLE \
- movq 8(%rsp), %rax; \
- RESTSTK_##args \
+ movq %rdx, %rax; \
+ addq $8,%rsp; cfi_adjust_cfa_offset (-8); \
cmpq $-4095, %rax; \
jae SYSCALL_ERROR_LABEL; \
L(pseudo_end):
-# define PUSHARGS_0 /* Nothing. */
-# define PUSHARGS_1 PUSHARGS_0 movq %rdi, 8(%rsp);
-# define PUSHARGS_2 PUSHARGS_1 movq %rsi, 16(%rsp);
-# define PUSHARGS_3 PUSHARGS_2 movq %rdx, 24(%rsp);
-# define PUSHARGS_4 PUSHARGS_3 movq %rcx, 32(%rsp);
-# define PUSHARGS_5 PUSHARGS_4 movq %r8, 40(%rsp);
-# define PUSHARGS_6 PUSHARGS_5 movq %r9, 48(%rsp);
-
-# define POPARGS_0 /* Nothing. */
-# define POPARGS_1 POPARGS_0 movq 8(%rsp), %rdi;
-# define POPARGS_2 POPARGS_1 movq 16(%rsp), %rsi;
-# define POPARGS_3 POPARGS_2 movq 24(%rsp), %rdx;
-# define POPARGS_4 POPARGS_3 movq 32(%rsp), %r10;
-# define POPARGS_5 POPARGS_4 movq 40(%rsp), %r8;
-# define POPARGS_6 POPARGS_5 movq 48(%rsp), %r9;
-
-/* We always have to align the stack before calling a function. */
-# define SAVESTK_0 subq $24, %rsp; cfi_adjust_cfa_offset (24);
-# define SAVESTK_1 SAVESTK_0
-# define SAVESTK_2 SAVESTK_1
-# define SAVESTK_3 subq $40, %rsp; cfi_adjust_cfa_offset (40);
-# define SAVESTK_4 SAVESTK_3
-# define SAVESTK_5 subq $56, %rsp; cfi_adjust_cfa_offset (56);
-# define SAVESTK_6 SAVESTK_5
-
-# define RESTSTK_0 addq $24,%rsp; cfi_adjust_cfa_offset (-24);
-# define RESTSTK_1 RESTSTK_0
-# define RESTSTK_2 RESTSTK_1
-# define RESTSTK_3 addq $40, %rsp; cfi_adjust_cfa_offset (-40);
-# define RESTSTK_4 RESTSTK_3
-# define RESTSTK_5 addq $56, %rsp; cfi_adjust_cfa_offset (-56);
-# define RESTSTK_6 RESTSTK_5
-
# ifdef IS_IN_libpthread
# define CENABLE call __pthread_enable_asynccancel;
# define CDISABLE call __pthread_disable_asynccancel;
diff --git a/nptl/sysdeps/x86_64/configure b/nptl/sysdeps/x86_64/configure
new file mode 100644
index 0000000000..ae3ad5448d
--- /dev/null
+++ b/nptl/sysdeps/x86_64/configure
@@ -0,0 +1,36 @@
+# This file is generated from configure.in by Autoconf. DO NOT EDIT!
+ # Local configure fragment for sysdeps/i386.
+
+{ $as_echo "$as_me:$LINENO: checking for .cfi_personality and .cfi_lsda pseudo-ops" >&5
+$as_echo_n "checking for .cfi_personality and .cfi_lsda pseudo-ops... " >&6; }
+if test "${libc_cv_asm_cfi_personality+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.s <<EOF
+${libc_cv_dot_text}
+foo:
+ .cfi_startproc
+ .cfi_personality 0, foo
+ .cfi_lsda 0, foo
+ .cfi_endproc
+EOF
+ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libc_cv_asm_cfi_personality=yes
+ else
+ libc_cv_asm_cfi_personality=no
+ fi
+ rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_cfi_personality" >&5
+$as_echo "$libc_cv_asm_cfi_personality" >&6; }
+if test x"$libc_cv_asm_cfi_personality" != xyes; then
+ { { $as_echo "$as_me:$LINENO: error: assembler too old, .cfi_personality support missing" >&5
+$as_echo "$as_me: error: assembler too old, .cfi_personality support missing" >&2;}
+ { (exit 1); exit 1; }; }
+fi
diff --git a/nptl/sysdeps/x86_64/configure.in b/nptl/sysdeps/x86_64/configure.in
new file mode 100644
index 0000000000..0ba0cc3726
--- /dev/null
+++ b/nptl/sysdeps/x86_64/configure.in
@@ -0,0 +1,23 @@
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/i386.
+
+AC_CACHE_CHECK([for .cfi_personality and .cfi_lsda pseudo-ops],
+ libc_cv_asm_cfi_personality, [dnl
+ cat > conftest.s <<EOF
+${libc_cv_dot_text}
+foo:
+ .cfi_startproc
+ .cfi_personality 0, foo
+ .cfi_lsda 0, foo
+ .cfi_endproc
+EOF
+ if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_asm_cfi_personality=yes
+ else
+ libc_cv_asm_cfi_personality=no
+ fi
+ rm -f conftest*
+])
+if test x"$libc_cv_asm_cfi_personality" != xyes; then
+ AC_MSG_ERROR([assembler too old, .cfi_personality support missing])
+fi
diff --git a/nptl/sysdeps/x86_64/tcb-offsets.sym b/nptl/sysdeps/x86_64/tcb-offsets.sym
index 1c70c6bde7..cf863752ee 100644
--- a/nptl/sysdeps/x86_64/tcb-offsets.sym
+++ b/nptl/sysdeps/x86_64/tcb-offsets.sym
@@ -15,3 +15,14 @@ VGETCPU_CACHE_OFFSET offsetof (tcbhead_t, vgetcpu_cache)
#ifndef __ASSUME_PRIVATE_FUTEX
PRIVATE_FUTEX offsetof (tcbhead_t, private_futex)
#endif
+RTLD_SAVESPACE_SSE offsetof (tcbhead_t, rtld_savespace_sse)
+
+-- Not strictly offsets, but these values are also used in the TCB.
+TCB_CANCELSTATE_BITMASK CANCELSTATE_BITMASK
+TCB_CANCELTYPE_BITMASK CANCELTYPE_BITMASK
+TCB_CANCELING_BITMASK CANCELING_BITMASK
+TCB_CANCELED_BITMASK CANCELED_BITMASK
+TCB_EXITING_BITMASK EXITING_BITMASK
+TCB_CANCEL_RESTMASK CANCEL_RESTMASK
+TCB_TERMINATED_BITMASK TERMINATED_BITMASK
+TCB_PTHREAD_CANCELED PTHREAD_CANCELED
diff --git a/nptl/sysdeps/x86_64/tls.h b/nptl/sysdeps/x86_64/tls.h
index 79db61c709..e39eb5f69d 100644
--- a/nptl/sysdeps/x86_64/tls.h
+++ b/nptl/sysdeps/x86_64/tls.h
@@ -1,5 +1,5 @@
/* Definition for thread-local data handling. nptl/x86_64 version.
- Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+ Copyright (C) 2002-2007, 2008, 2009 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
@@ -28,6 +28,8 @@
# include <stdlib.h>
# include <sysdep.h>
# include <kernel-features.h>
+# include <bits/wordsize.h>
+# include <xmmintrin.h>
/* Type for the dtv. */
@@ -54,9 +56,23 @@ typedef struct
uintptr_t stack_guard;
uintptr_t pointer_guard;
unsigned long int vgetcpu_cache[2];
-#ifndef __ASSUME_PRIVATE_FUTEX
+# ifndef __ASSUME_PRIVATE_FUTEX
int private_futex;
-#endif
+# else
+ int __unused1;
+# endif
+# if __WORDSIZE == 64
+ int rtld_must_xmm_save;
+# endif
+ /* Reservation of some values for the TM ABI. */
+ void *__private_tm[5];
+# if __WORDSIZE == 64
+ long int __unused2;
+ /* Have space for the post-AVX register size. */
+ __m128 rtld_savespace_sse[8][4];
+
+ void *__padding[8];
+# endif
} tcbhead_t;
#else /* __ASSEMBLER__ */
@@ -101,7 +117,12 @@ typedef struct
# define TLS_TCB_SIZE sizeof (struct pthread)
/* Alignment requirements for the TCB. */
-# define TLS_TCB_ALIGN __alignof__ (struct pthread)
+//# define TLS_TCB_ALIGN __alignof__ (struct pthread)
+// Normally the above would be correct But we have to store post-AVX
+// vector registers in the TCB and we want the storage to be aligned.
+// unfortunately there isn't yet a type for these values and hence no
+// 32-byte alignment requirement. Make this explicit, for now.
+# define TLS_TCB_ALIGN 32
/* The TCB can have any size and the memory following the address the
thread pointer points to is unspecified. Allocate the TCB there. */
@@ -167,7 +188,7 @@ typedef struct
The contained asm must *not* be marked volatile since otherwise
assignments like
- pthread_descr self = thread_self();
+ pthread_descr self = thread_self();
do not get optimized away. */
# define THREAD_SELF \
({ struct pthread *__self; \
@@ -290,7 +311,7 @@ typedef struct
/* Atomic compare and exchange on TLS, returning old value. */
-#define THREAD_ATOMIC_CMPXCHG_VAL(descr, member, newval, oldval) \
+# define THREAD_ATOMIC_CMPXCHG_VAL(descr, member, newval, oldval) \
({ __typeof (descr->member) __ret; \
__typeof (oldval) __old = (oldval); \
if (sizeof (descr->member) == 4) \
@@ -304,8 +325,19 @@ typedef struct
__ret; })
+/* Atomic logical and. */
+# define THREAD_ATOMIC_AND(descr, member, val) \
+ (void) ({ if (sizeof ((descr)->member) == 4) \
+ asm volatile (LOCK_PREFIX "andl %1, %%fs:%P0" \
+ :: "i" (offsetof (struct pthread, member)), \
+ "ir" (val)); \
+ else \
+ /* Not necessary for other sizes in the moment. */ \
+ abort (); })
+
+
/* Atomic set bit. */
-#define THREAD_ATOMIC_BIT_SET(descr, member, bit) \
+# define THREAD_ATOMIC_BIT_SET(descr, member, bit) \
(void) ({ if (sizeof ((descr)->member) == 4) \
asm volatile (LOCK_PREFIX "orl %1, %%fs:%P0" \
:: "i" (offsetof (struct pthread, member)), \
@@ -315,7 +347,7 @@ typedef struct
abort (); })
-#define CALL_THREAD_FCT(descr) \
+# define CALL_THREAD_FCT(descr) \
({ void *__res; \
asm volatile ("movq %%fs:%P2, %%rdi\n\t" \
"callq *%%fs:%P1" \
@@ -336,18 +368,18 @@ typedef struct
/* Set the pointer guard field in the TCB head. */
-#define THREAD_SET_POINTER_GUARD(value) \
+# define THREAD_SET_POINTER_GUARD(value) \
THREAD_SETMEM (THREAD_SELF, header.pointer_guard, value)
-#define THREAD_COPY_POINTER_GUARD(descr) \
+# define THREAD_COPY_POINTER_GUARD(descr) \
((descr)->header.pointer_guard \
= THREAD_GETMEM (THREAD_SELF, header.pointer_guard))
/* Get and set the global scope generation counter in the TCB head. */
-#define THREAD_GSCOPE_FLAG_UNUSED 0
-#define THREAD_GSCOPE_FLAG_USED 1
-#define THREAD_GSCOPE_FLAG_WAIT 2
-#define THREAD_GSCOPE_RESET_FLAG() \
+# define THREAD_GSCOPE_FLAG_UNUSED 0
+# define THREAD_GSCOPE_FLAG_USED 1
+# define THREAD_GSCOPE_FLAG_WAIT 2
+# define THREAD_GSCOPE_RESET_FLAG() \
do \
{ int __res; \
asm volatile ("xchgl %0, %%fs:%P1" \
@@ -358,11 +390,46 @@ typedef struct
lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); \
} \
while (0)
-#define THREAD_GSCOPE_SET_FLAG() \
+# define THREAD_GSCOPE_SET_FLAG() \
THREAD_SETMEM (THREAD_SELF, header.gscope_flag, THREAD_GSCOPE_FLAG_USED)
-#define THREAD_GSCOPE_WAIT() \
+# define THREAD_GSCOPE_WAIT() \
GL(dl_wait_lookup_done) ()
+
+# ifdef SHARED
+/* Defined in dl-trampoline.S. */
+extern void _dl_x86_64_save_sse (void);
+extern void _dl_x86_64_restore_sse (void);
+
+# define RTLD_CHECK_FOREIGN_CALL \
+ (THREAD_GETMEM (THREAD_SELF, header.rtld_must_xmm_save) != 0)
+
+/* NB: Don't use the xchg operation because that would imply a lock
+ prefix which is expensive and unnecessary. The cache line is also
+ not contested at all. */
+# define RTLD_ENABLE_FOREIGN_CALL \
+ int old_rtld_must_xmm_save = THREAD_GETMEM (THREAD_SELF, \
+ header.rtld_must_xmm_save); \
+ THREAD_SETMEM (THREAD_SELF, header.rtld_must_xmm_save, 1)
+
+# define RTLD_PREPARE_FOREIGN_CALL \
+ do if (THREAD_GETMEM (THREAD_SELF, header.rtld_must_xmm_save)) \
+ { \
+ _dl_x86_64_save_sse (); \
+ THREAD_SETMEM (THREAD_SELF, header.rtld_must_xmm_save, 0); \
+ } \
+ while (0)
+
+# define RTLD_FINALIZE_FOREIGN_CALL \
+ do { \
+ if (THREAD_GETMEM (THREAD_SELF, header.rtld_must_xmm_save) == 0) \
+ _dl_x86_64_restore_sse (); \
+ THREAD_SETMEM (THREAD_SELF, header.rtld_must_xmm_save, \
+ old_rtld_must_xmm_save); \
+ } while (0)
+# endif
+
+
#endif /* __ASSEMBLER__ */
#endif /* tls.h */
diff --git a/nptl/tst-cond11.c b/nptl/tst-cond11.c
index 0de4d56137..4d0c7dd225 100644
--- a/nptl/tst-cond11.c
+++ b/nptl/tst-cond11.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
@@ -130,6 +130,20 @@ run_test (clockid_t cl)
return 1;
}
+ struct timespec ts2;
+ if (clock_gettime (cl, &ts2) != 0)
+ {
+ puts ("second clock_gettime failed");
+ return 1;
+ }
+
+ if (ts2.tv_sec < ts.tv_sec
+ || (ts2.tv_sec == ts.tv_sec && ts2.tv_nsec < ts.tv_nsec))
+ {
+ puts ("timeout too short");
+ return 1;
+ }
+
if (pthread_mutex_unlock (&mut) != 0)
{
puts ("mutex_unlock failed");
diff --git a/nptl/tst-sem11.c b/nptl/tst-sem11.c
index 6633ddd1f3..5248eba05d 100644
--- a/nptl/tst-sem11.c
+++ b/nptl/tst-sem11.c
@@ -23,23 +23,25 @@ main (void)
{
int tries = 5;
pthread_t th;
- sem_t s;
+ union
+ {
+ sem_t s;
+ struct new_sem ns;
+ } u;
again:
- if (sem_init (&s, 0, 0) != 0)
+ if (sem_init (&u.s, 0, 0) != 0)
{
puts ("sem_init failed");
return 1;
}
- struct new_sem *is = (struct new_sem *) &s;
-
- if (is->nwaiters != 0)
+ if (u.ns.nwaiters != 0)
{
puts ("nwaiters not initialized");
return 1;
}
- if (pthread_create (&th, NULL, tf, &s) != 0)
+ if (pthread_create (&th, NULL, tf, &u.s) != 0)
{
puts ("pthread_create failed");
return 1;
@@ -62,11 +64,11 @@ main (void)
if (r != PTHREAD_CANCELED && --tries > 0)
{
/* Maybe we get the scheduling right the next time. */
- sem_destroy (&s);
+ sem_destroy (&u.s);
goto again;
}
- if (is->nwaiters != 0)
+ if (u.ns.nwaiters != 0)
{
puts ("nwaiters not reset");
return 1;
diff --git a/nptl/tst-sem13.c b/nptl/tst-sem13.c
new file mode 100644
index 0000000000..8756b2262f
--- /dev/null
+++ b/nptl/tst-sem13.c
@@ -0,0 +1,46 @@
+#include <errno.h>
+#include <semaphore.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <internaltypes.h>
+
+
+static int
+do_test (void)
+{
+ union
+ {
+ sem_t s;
+ struct new_sem ns;
+ } u;
+
+ if (sem_init (&u.s, 0, 0) != 0)
+ {
+ puts ("sem_init failed");
+ return 1;
+ }
+
+ struct timespec ts = { 0, 1000000001 }; /* Invalid. */
+ errno = 0;
+ if (sem_timedwait (&u.s, &ts) >= 0)
+ {
+ puts ("sem_timedwait did not fail");
+ return 1;
+ }
+ if (errno != EINVAL)
+ {
+ puts ("sem_timedwait did not fail with EINVAL");
+ return 1;
+ }
+ if (u.ns.nwaiters != 0)
+ {
+ puts ("nwaiters modified");
+ return 1;
+ }
+
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/nptl/tst-sem5.c b/nptl/tst-sem5.c
index cb85b8e769..d3ebe26a40 100644
--- a/nptl/tst-sem5.c
+++ b/nptl/tst-sem5.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -73,6 +73,20 @@ do_test (void)
return 1;
}
+ struct timespec ts2;
+ if (clock_gettime (CLOCK_REALTIME, &ts2) != 0)
+ {
+ puts ("clock_gettime failed");
+ return 1;
+ }
+
+ if (ts2.tv_sec < ts.tv_sec
+ || (ts2.tv_sec == ts.tv_sec && ts2.tv_nsec < ts.tv_nsec))
+ {
+ puts ("timeout too short");
+ return 1;
+ }
+
return 0;
}
diff --git a/nptl_db/ChangeLog b/nptl_db/ChangeLog
index af819c301a..f79fc18e4b 100644
--- a/nptl_db/ChangeLog
+++ b/nptl_db/ChangeLog
@@ -1,3 +1,36 @@
+2009-08-23 Roland McGrath <roland@redhat.com>
+
+ * td_ta_map_lwp2thr.c (__td_ta_lookup_th_unique): Move ta_ok check
+ and LOG call back to ...
+ (td_ta_map_lwp2thr): ... here.
+ Reported by Maciej W. Rozycki <macro@codesourcery.com>.
+
+2009-05-25 Aurelien Jarno <aurelien@aurel32.net>
+
+ [BZ #10200]
+ * db-symbols.awk: Use the last field for the symbol name instead
+ of the 8th one.
+
+2009-03-19 Roland McGrath <roland@redhat.com>
+
+ * td_symbol_list.c (DB_LOOKUP_NAME, DB_LOOKUP_NAME_TH_UNIQUE):
+ Use STRINGIFY macro in place of #argument.
+
+2009-02-27 Roland McGrath <roland@redhat.com>
+
+ * td_symbol_list.c (symbol_list_arr): Move initializer guts to ...
+ * db-symbols.h: ... here, new file.
+ * db-symbols.awk: New file.
+ * Makefile (distribute): Add them.
+ ($(objpfx)db-symbols.out): New target.
+ (tests): Depend on it.
+ ($(objpfx)db-symbols.v.i): New dependent rule.
+
+2009-02-06 Ulrich Drepper <drepper@redhat.com>
+
+ * td_thr_get_info.c (td_thr_get_info): Initialize schedpolicy in
+ the special case [Coverity CID 251].
+
2008-03-25 Roland McGrath <roland@redhat.com>
[BZ #5983]
diff --git a/nptl_db/Makefile b/nptl_db/Makefile
index 5c73ff28f2..af542dcac9 100644
--- a/nptl_db/Makefile
+++ b/nptl_db/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+# Copyright (C) 2002,2003,2009 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
@@ -50,7 +50,8 @@ libthread_db-inhibit-o = $(filter-out .os,$(object-suffixes))
# The ps_* callback functions are not defined.
libthread_db.so-no-z-defs = yes
-distribute = thread_dbP.h shlib-versions proc_service.h db_info.c structs.def
+distribute = thread_dbP.h shlib-versions proc_service.h \
+ db_info.c structs.def db-symbols.h db-symbols.awk
include ../Rules
# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
@@ -58,3 +59,10 @@ include ../Rules
# a statically-linked program that hasn't already loaded it.
$(objpfx)libthread_db.so: $(common-objpfx)libc.so \
$(common-objpfx)libc_nonshared.a
+
+tests: $(objpfx)db-symbols.out
+$(objpfx)db-symbols.out: $(objpfx)db-symbols.v.i \
+ $(common-objpfx)nptl/libpthread.so
+ readelf -W -s $(filter %.so,$^) | $(AWK) -f $< > $@
+
+$(objpfx)db-symbols.v.i: db-symbols.awk
diff --git a/nptl_db/db-symbols.awk b/nptl_db/db-symbols.awk
new file mode 100644
index 0000000000..f9a91b93bf
--- /dev/null
+++ b/nptl_db/db-symbols.awk
@@ -0,0 +1,45 @@
+# This script processes the output of 'readelf -W -s' on the libpthread.so
+# we've just built. It checks for all the symbols used in td_symbol_list.
+
+BEGIN {
+%define DB_LOOKUP_NAME(idx, name) required[STRINGIFY (name)] = 1;
+%define DB_LOOKUP_NAME_TH_UNIQUE(idx, name) th_unique[STRINGIFY (name)] = 1;
+%include "db-symbols.h"
+
+ in_symtab = 0;
+}
+
+/Symbol table '.symtab'/ { in_symtab=1; next }
+NF == 0 { in_symtab=0; next }
+
+!in_symtab { next }
+
+NF >= 8 && $7 != "UND" { seen[$NF] = 1 }
+
+END {
+ status = 0;
+
+ for (s in required) {
+ if (s in seen) print s, "ok";
+ else {
+ status = 1;
+ print s, "***MISSING***";
+ }
+ }
+
+ any = "";
+ for (s in th_unique) {
+ if (s in seen) {
+ any = s;
+ break;
+ }
+ }
+ if (any)
+ print "th_unique:", any;
+ else {
+ status = 1;
+ print "th_unique:", "***MISSING***";
+ }
+
+ exit(status);
+}
diff --git a/nptl_db/db-symbols.h b/nptl_db/db-symbols.h
new file mode 100644
index 0000000000..d6c35250b1
--- /dev/null
+++ b/nptl_db/db-symbols.h
@@ -0,0 +1,56 @@
+/* List of symbols in libpthread examined by libthread_db.
+ Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifdef HAVE_ASM_GLOBAL_DOT_NAME
+# define DOT(x) .##x /* PPC64 requires . prefix on code symbols. */
+#else
+# define DOT(x) x /* No prefix. */
+#endif
+
+#define STRINGIFY(name) STRINGIFY_1(name)
+#define STRINGIFY_1(name) #name
+
+#define DB_STRUCT(type) \
+ DB_LOOKUP_NAME (SYM_SIZEOF_##type, _thread_db_sizeof_##type)
+#define DB_STRUCT_FIELD(type, field) \
+ DB_LOOKUP_NAME (SYM_##type##_FIELD_##field, _thread_db_##type##_##field)
+#define DB_SYMBOL(name) \
+ DB_LOOKUP_NAME (SYM_##name, name)
+#define DB_FUNCTION(name) \
+ DB_LOOKUP_NAME (SYM_##name, DOT (name))
+#define DB_VARIABLE(name) \
+ DB_LOOKUP_NAME (SYM_##name, name) \
+ DB_LOOKUP_NAME (SYM_DESC_##name, _thread_db_##name)
+
+# include "structs.def"
+
+# undef DB_STRUCT
+# undef DB_FUNCTION
+# undef DB_SYMBOL
+# undef DB_VARIABLE
+# undef DOT
+
+DB_LOOKUP_NAME_TH_UNIQUE (SYM_TH_UNIQUE_REGISTER64, _thread_db_register64)
+DB_LOOKUP_NAME_TH_UNIQUE (SYM_TH_UNIQUE_REGISTER32, _thread_db_register32)
+DB_LOOKUP_NAME_TH_UNIQUE (SYM_TH_UNIQUE_CONST_THREAD_AREA,
+ _thread_db_const_thread_area)
+DB_LOOKUP_NAME_TH_UNIQUE (SYM_TH_UNIQUE_REGISTER32_THREAD_AREA,
+ _thread_db_register32_thread_area)
+DB_LOOKUP_NAME_TH_UNIQUE (SYM_TH_UNIQUE_REGISTER64_THREAD_AREA,
+ _thread_db_register64_thread_area)
diff --git a/nptl_db/td_symbol_list.c b/nptl_db/td_symbol_list.c
index 5d6c94e5b7..474251d627 100644
--- a/nptl_db/td_symbol_list.c
+++ b/nptl_db/td_symbol_list.c
@@ -1,5 +1,5 @@
/* Return list of symbols the library can request.
- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001,2002,2003,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
@@ -22,37 +22,13 @@
#include <gnu/lib-names.h>
#include "thread_dbP.h"
-
-#ifdef HAVE_ASM_GLOBAL_DOT_NAME
-# define DOT "." /* PPC64 requires . prefix on code symbols. */
-#else
-# define DOT /* No prefix. */
-#endif
-
static const char *symbol_list_arr[] =
{
-# define DB_STRUCT(type) \
- [SYM_SIZEOF_##type] = "_thread_db_sizeof_" #type,
-# define DB_STRUCT_FIELD(type, field) \
- [SYM_##type##_FIELD_##field] = "_thread_db_" #type "_" #field,
-# define DB_SYMBOL(name) \
- [SYM_##name] = #name,
-# define DB_FUNCTION(name) \
- [SYM_##name] = DOT #name,
-# define DB_VARIABLE(name) \
- [SYM_##name] = #name, \
- [SYM_DESC_##name] = "_thread_db_" #name,
-# include "structs.def"
-# undef DB_STRUCT
-# undef DB_FUNCTION
-# undef DB_SYMBOL
-# undef DB_VARIABLE
-
- [SYM_TH_UNIQUE_CONST_THREAD_AREA] = "_thread_db_const_thread_area",
- [SYM_TH_UNIQUE_REGISTER64] = "_thread_db_register64",
- [SYM_TH_UNIQUE_REGISTER32] = "_thread_db_register32",
- [SYM_TH_UNIQUE_REGISTER32_THREAD_AREA] = "_thread_db_register32_thread_area",
- [SYM_TH_UNIQUE_REGISTER64_THREAD_AREA] = "_thread_db_register64_thread_area",
+# define DB_LOOKUP_NAME(idx, name) [idx] = STRINGIFY (name),
+# define DB_LOOKUP_NAME_TH_UNIQUE(idx, name) [idx] = STRINGIFY (name),
+# include "db-symbols.h"
+# undef DB_LOOKUP_NAME
+# undef DB_LOOKUP_NAME_TH_UNIQUE
[SYM_NUM_MESSAGES] = NULL
};
diff --git a/nptl_db/td_ta_map_lwp2thr.c b/nptl_db/td_ta_map_lwp2thr.c
index 78cfcab769..4835f31f94 100644
--- a/nptl_db/td_ta_map_lwp2thr.c
+++ b/nptl_db/td_ta_map_lwp2thr.c
@@ -1,5 +1,5 @@
/* Which thread is running on an LWP?
- Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003,2004,2007,2009 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
@@ -33,12 +33,6 @@ __td_ta_lookup_th_unique (const td_thragent_t *ta_arg,
prgregset_t regs;
psaddr_t addr;
- LOG ("td_ta_map_lwp2thr");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
- return TD_BADTA;
-
if (ta->ta_howto == ta_howto_unknown)
{
/* We need to read in from the inferior the instructions what to do. */
@@ -181,6 +175,12 @@ td_ta_map_lwp2thr (const td_thragent_t *ta_arg,
{
td_thragent_t *const ta = (td_thragent_t *) ta_arg;
+ LOG ("td_ta_map_lwp2thr");
+
+ /* Test whether the TA parameter is ok. */
+ if (! ta_ok (ta))
+ return TD_BADTA;
+
/* We cannot rely on thread registers and such information at all
before __pthread_initialize_minimal has gotten far enough. They
sometimes contain garbage that would confuse us, left by the kernel
diff --git a/nptl_db/td_thr_get_info.c b/nptl_db/td_thr_get_info.c
index 99e5e19bf9..52985603bf 100644
--- a/nptl_db/td_thr_get_info.c
+++ b/nptl_db/td_thr_get_info.c
@@ -1,5 +1,5 @@
/* Get thread information.
- Copyright (C) 1999,2000,2001,2002,2003,2007 Free Software Foundation, Inc.
+ Copyright (C) 1999-2003,2007,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 1999.
@@ -38,6 +38,7 @@ td_thr_get_info (const td_thrhandle_t *th, td_thrinfo_t *infop)
copy = NULL;
tls = 0;
cancelhandling = 0;
+ schedpolicy = SCHED_OTHER;
schedprio = 0;
tid = 0;
err = DB_GET_VALUE (report_events, th->th_ta_p,
diff --git a/nscd/Makefile b/nscd/Makefile
index 364ddfe8dd..4abae8c661 100644
--- a/nscd/Makefile
+++ b/nscd/Makefile
@@ -1,5 +1,4 @@
-# Copyright (C) 1998,2000,2002,2003,2004,2005,2006,2007,2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1998,2000,2002-2009 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
@@ -128,13 +127,7 @@ ifeq (yesyes,$(have-fpie)$(build-shared))
relro-LDFLAGS += -Wl,-z,now
$(objpfx)nscd: $(addprefix $(objpfx),$(nscd-modules:=.o))
- $(LINK.o) -pie -Wl,-O1 $(nscd-cflags) \
- $(sysdep-LDFLAGS) $(config-LDFLAGS) $(relro-LDFLAGS) \
- $(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \
- $(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \
- $(LDFLAGS) $(LDFLAGS-$(@F)) \
- -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \
- -o $@ $^ $(LDLIBS-nscd) $(common-objpfx)libc_nonshared.a
+ $(+link-pie)
endif
# This makes sure -DNOT_IN_libc is passed for all these modules.
diff --git a/nscd/aicache.c b/nscd/aicache.c
index 5ffab76a04..992357d2fe 100644
--- a/nscd/aicache.c
+++ b/nscd/aicache.c
@@ -1,5 +1,5 @@
/* Cache handling for host lookup.
- Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2004-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
@@ -60,7 +60,8 @@ static const ai_response_header notfound =
static void
addhstaiX (struct database_dyn *db, int fd, request_header *req,
- void *key, uid_t uid, struct hashentry *he, struct datahead *dh)
+ void *key, uid_t uid, struct hashentry *const he,
+ struct datahead *dh)
{
/* Search for the entry matching the key. Please note that we don't
look again in the table whether the dataset is now available. We
@@ -172,13 +173,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
/* Now we can allocate the data structure. If the TTL of the
entry is reported as zero do not cache the entry at all. */
if (ttl != 0 && he == NULL)
- {
- dataset = (struct dataset *) mempool_alloc (db, total
- + req->key_len,
- IDX_result_data);
- if (dataset == NULL)
- ++db->head->addfailed;
- }
+ dataset = (struct dataset *) mempool_alloc (db, total
+ + req->key_len, 1);
if (dataset == NULL)
{
@@ -300,9 +296,9 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
}
else
{
- struct hostent *he = NULL;
+ struct hostent *hstent = NULL;
int herrno;
- struct hostent he_mem;
+ struct hostent hstent_mem;
void *addr;
size_t addrlen;
int addrfamily;
@@ -326,8 +322,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
while (1)
{
rc = __gethostbyaddr2_r (addr, addrlen, addrfamily,
- &he_mem, tmpbuf, tmpbuflen,
- &he, &herrno, NULL);
+ &hstent_mem, tmpbuf, tmpbuflen,
+ &hstent, &herrno, NULL);
if (rc != ERANGE || herrno != NETDB_INTERNAL)
break;
tmpbuf = extend_alloca (tmpbuf, tmpbuflen,
@@ -336,8 +332,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
if (rc == 0)
{
- if (he != NULL)
- canon = he->h_name;
+ if (hstent != NULL)
+ canon = hstent->h_name;
else
canon = key;
}
@@ -352,13 +348,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
/* Now we can allocate the data structure. If the TTL of the
entry is reported as zero do not cache the entry at all. */
if (ttl != 0 && he == NULL)
- {
- dataset = (struct dataset *) mempool_alloc (db, total
- + req->key_len,
- IDX_result_data);
- if (dataset == NULL)
- ++db->head->addfailed;
- }
+ dataset = (struct dataset *) mempool_alloc (db, total
+ + req->key_len, 1);
if (dataset == NULL)
{
@@ -436,7 +427,7 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
appropriate memory and copy it. */
struct dataset *newp
= (struct dataset *) mempool_alloc (db, total + req->key_len,
- IDX_result_data);
+ 1);
if (__builtin_expect (newp != NULL, 1))
{
/* Adjust pointer into the memory block. */
@@ -445,8 +436,6 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
dataset = memcpy (newp, dataset, total + req->key_len);
alloca_used = false;
}
- else
- ++db->head->addfailed;
/* Mark the old record as obsolete. */
dh->usable = false;
@@ -464,13 +453,13 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
{
assert (db->wr_fd != -1);
assert ((char *) &dataset->resp > (char *) db->data);
- assert ((char *) &dataset->resp - (char *) db->head + total
+ assert ((char *) dataset - (char *) db->head + total
<= (sizeof (struct database_pers_head)
+ db->head->module * sizeof (ref_t)
+ db->head->data_size));
ssize_t written;
written = sendfileall (fd, db->wr_fd, (char *) &dataset->resp
- - (char *) db->head, total);
+ - (char *) db->head, dataset->head.recsize);
# ifndef __ASSUME_SENDFILE
if (written == -1 && errno == ENOSYS)
goto use_write;
@@ -481,7 +470,7 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
use_write:
# endif
#endif
- writeall (fd, &dataset->resp, total);
+ writeall (fd, &dataset->resp, dataset->head.recsize);
}
goto out;
@@ -515,8 +504,7 @@ next_nip:
if (fd != -1)
TEMP_FAILURE_RETRY (send (fd, &notfound, total, MSG_NOSIGNAL));
- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
- IDX_result_data);
+ dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1);
/* If we cannot permanently store the result, so be it. */
if (dataset != NULL)
{
@@ -535,8 +523,6 @@ next_nip:
/* Copy the key data. */
key_copy = memcpy (dataset->strdata, key, req->key_len);
}
- else
- ++db->head->addfailed;
}
out:
@@ -554,9 +540,6 @@ next_nip:
MS_ASYNC);
}
- /* Now get the lock to safely insert the records. */
- pthread_rwlock_rdlock (&db->lock);
-
(void) cache_add (req->type, key_copy, req->key_len, &dataset->head,
true, db, uid, he == NULL);
diff --git a/nscd/cache.c b/nscd/cache.c
index cd6e6b4440..3e6793df2f 100644
--- a/nscd/cache.c
+++ b/nscd/cache.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 1998, 1999, 2003-2007, 2008 Free Software Foundation, Inc.
+/* Copyright (c) 1998, 1999, 2003-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -155,21 +155,15 @@ cache_add (int type, const void *key, size_t len, struct datahead *packet,
unsigned long int hash = __nis_hash (key, len) % table->head->module;
struct hashentry *newp;
- newp = mempool_alloc (table, sizeof (struct hashentry), IDX_record_data);
+ newp = mempool_alloc (table, sizeof (struct hashentry), 0);
/* If we cannot allocate memory, just do not do anything. */
if (newp == NULL)
{
- ++table->head->addfailed;
-
/* If necessary mark the entry as unusable so that lookups will
not use it. */
if (first)
packet->usable = false;
- /* Mark the in-flight memory as unused. */
- for (enum in_flight idx = 0; idx < IDX_record_data; ++idx)
- mem_in_flight.block[idx].dbidx = -1;
-
return -1;
}
@@ -185,7 +179,7 @@ cache_add (int type, const void *key, size_t len, struct datahead *packet,
/* Put the new entry in the first position. */
do
newp->next = table->head->array[hash];
- while (atomic_compare_and_exchange_bool_acq (&table->head->array[hash],
+ while (atomic_compare_and_exchange_bool_rel (&table->head->array[hash],
(ref_t) ((char *) newp
- table->data),
(ref_t) newp->next));
@@ -234,10 +228,6 @@ cache_add (int type, const void *key, size_t len, struct datahead *packet,
pthread_cond_signal (&table->prune_cond);
}
- /* Mark the in-flight memory as unused. */
- for (enum in_flight idx = 0; idx < IDX_last; ++idx)
- mem_in_flight.block[idx].dbidx = -1;
-
return 0;
}
diff --git a/nscd/connections.c b/nscd/connections.c
index e3a67386d0..69f6533a32 100644
--- a/nscd/connections.c
+++ b/nscd/connections.c
@@ -1,5 +1,5 @@
/* Inner loops of cache daemon.
- Copyright (C) 1998-2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1998-2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -109,6 +109,7 @@ struct database_dyn dbs[lastdb] =
[pwddb] = {
.lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
.prune_lock = PTHREAD_MUTEX_INITIALIZER,
+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER,
.enabled = 0,
.check_file = 1,
.persistent = 0,
@@ -129,6 +130,7 @@ struct database_dyn dbs[lastdb] =
[grpdb] = {
.lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
.prune_lock = PTHREAD_MUTEX_INITIALIZER,
+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER,
.enabled = 0,
.check_file = 1,
.persistent = 0,
@@ -149,6 +151,7 @@ struct database_dyn dbs[lastdb] =
[hstdb] = {
.lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
.prune_lock = PTHREAD_MUTEX_INITIALIZER,
+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER,
.enabled = 0,
.check_file = 1,
.persistent = 0,
@@ -169,6 +172,7 @@ struct database_dyn dbs[lastdb] =
[servdb] = {
.lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
.prune_lock = PTHREAD_MUTEX_INITIALIZER,
+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER,
.enabled = 0,
.check_file = 1,
.persistent = 0,
@@ -238,18 +242,14 @@ static int resolv_conf_descr = -1;
/* Negative if SOCK_CLOEXEC is not supported, positive if it is, zero
before be know the result. */
static int have_sock_cloexec;
-/* The paccept syscall was introduced at the same time as SOCK_CLOEXEC. */
-# define have_paccept -1 // XXX For the time being there is no such call
+#endif
+#ifndef __ASSUME_ACCEPT4
+static int have_accept4;
#endif
/* Number of times clients had to wait. */
unsigned long int client_queued;
-/* Data structure for recording in-flight memory allocation. */
-__thread struct mem_in_flight mem_in_flight attribute_tls_model_ie;
-/* Global list of the mem_in_flight variables of all the threads. */
-struct mem_in_flight *mem_in_flight_list;
-
ssize_t
writeall (int fd, const void *buf, size_t len)
@@ -642,6 +642,9 @@ cannot create read-only descriptor for \"%s\"; no mmap"),
if (fd != -1)
close (fd);
}
+ else if (errno == EACCES)
+ error (EXIT_FAILURE, 0, _("cannot access '%s'"),
+ dbs[cnt].db_filename);
}
if (dbs[cnt].head == NULL)
@@ -975,9 +978,9 @@ invalidate_cache (char *key, int fd)
if (dbs[number].enabled)
{
- pthread_mutex_lock (&dbs[number].prune_lock);
+ pthread_mutex_lock (&dbs[number].prune_run_lock);
prune_cache (&dbs[number], LONG_MAX, fd);
- pthread_mutex_unlock (&dbs[number].prune_lock);
+ pthread_mutex_unlock (&dbs[number].prune_run_lock);
}
else
{
@@ -1020,7 +1023,8 @@ send_ro_fd (struct database_dyn *db, char *key, int fd)
cmsg->cmsg_type = SCM_RIGHTS;
cmsg->cmsg_len = CMSG_LEN (sizeof (int));
- *(int *) CMSG_DATA (cmsg) = db->ro_fd;
+ int *ip = (int *) CMSG_DATA (cmsg);
+ *ip = db->ro_fd;
msg.msg_controllen = cmsg->cmsg_len;
@@ -1415,6 +1419,20 @@ cannot change to old working directory: %s; disabling paranoia mode"),
}
/* The preparations are done. */
+#ifdef PATH_MAX
+ char pathbuf[PATH_MAX];
+#else
+ char pathbuf[256];
+#endif
+ /* Try to exec the real nscd program so the process name (as reported
+ in /proc/PID/status) will be 'nscd', but fall back to /proc/self/exe
+ if readlink or the exec with the result of the readlink call fails. */
+ ssize_t n = readlink ("/proc/self/exe", pathbuf, sizeof (pathbuf) - 1);
+ if (n != -1)
+ {
+ pathbuf[n] = '\0';
+ execv (pathbuf, argv);
+ }
execv ("/proc/self/exe", argv);
/* If we come here, we will never be able to re-exec. */
@@ -1492,6 +1510,7 @@ nscd_run_prune (void *p)
dbs[my_number].wakeup_time = now + CACHE_PRUNE_INTERVAL + my_number;
pthread_mutex_t *prune_lock = &dbs[my_number].prune_lock;
+ pthread_mutex_t *prune_run_lock = &dbs[my_number].prune_run_lock;
pthread_cond_t *prune_cond = &dbs[my_number].prune_cond;
pthread_mutex_lock (prune_lock);
@@ -1525,7 +1544,12 @@ nscd_run_prune (void *p)
pthread_mutex_unlock (prune_lock);
+ /* We use a separate lock for running the prune function (instead
+ of keeping prune_lock locked) because this enables concurrent
+ invocations of cache_add which might modify the timeout value. */
+ pthread_mutex_lock (prune_run_lock);
next_wait = prune_cache (&dbs[my_number], prune_now, -1);
+ pthread_mutex_unlock (prune_run_lock);
next_wait = MAX (next_wait, CACHE_PRUNE_INTERVAL);
/* If clients cannot determine for sure whether nscd is running
@@ -1570,16 +1594,6 @@ nscd_run_worker (void *p)
{
char buf[256];
- /* Initialize the memory-in-flight list. */
- for (enum in_flight idx = 0; idx < IDX_last; ++idx)
- mem_in_flight.block[idx].dbidx = -1;
- /* And queue this threads structure. */
- do
- mem_in_flight.next = mem_in_flight_list;
- while (atomic_compare_and_exchange_bool_acq (&mem_in_flight_list,
- &mem_in_flight,
- mem_in_flight.next) != 0);
-
/* Initial locking. */
pthread_mutex_lock (&readylist_lock);
@@ -1609,8 +1623,8 @@ nscd_run_worker (void *p)
/* We are done with the list. */
pthread_mutex_unlock (&readylist_lock);
-#ifndef __ASSUME_SOCK_CLOEXEC
- if (have_sock_cloexec < 0)
+#ifndef __ASSUME_ACCEPT4
+ if (have_accept4 < 0)
{
/* We do not want to block on a short read or so. */
int fl = fcntl (fd, F_GETFL);
@@ -1705,6 +1719,7 @@ handle_request: request received (Version = %d)"), req.version);
/* One more thread available. */
++nready;
}
+ /* NOTREACHED */
}
@@ -1819,22 +1834,20 @@ main_loop_poll (void)
/* We have a new incoming connection. Accept the connection. */
int fd;
-#ifndef __ASSUME_PACCEPT
+#ifndef __ASSUME_ACCEPT4
fd = -1;
- if (have_paccept >= 0)
+ if (have_accept4 >= 0)
#endif
{
-#if 0
- fd = TEMP_FAILURE_RETRY (paccept (sock, NULL, NULL, NULL,
+ fd = TEMP_FAILURE_RETRY (accept4 (sock, NULL, NULL,
SOCK_NONBLOCK));
-#ifndef __ASSUME_PACCEPT
- if (have_paccept == 0)
- have_paccept = fd != -1 || errno != ENOSYS ? 1 : -1;
-#endif
+#ifndef __ASSUME_ACCEPT4
+ if (have_accept4 == 0)
+ have_accept4 = fd != -1 || errno != ENOSYS ? 1 : -1;
#endif
}
-#ifndef __ASSUME_PACCEPT
- if (have_paccept < 0)
+#ifndef __ASSUME_ACCEPT4
+ if (have_accept4 < 0)
fd = TEMP_FAILURE_RETRY (accept (sock, NULL, NULL));
#endif
@@ -2000,7 +2013,7 @@ main_loop_epoll (int efd)
/* We cannot use epoll. */
return;
-#ifdef HAVE_INOTIFY
+# ifdef HAVE_INOTIFY
if (inotify_fd != -1)
{
ev.events = EPOLLRDNORM;
@@ -2010,7 +2023,7 @@ main_loop_epoll (int efd)
return;
nused = 2;
}
-#endif
+# endif
while (1)
{
@@ -2025,8 +2038,26 @@ main_loop_epoll (int efd)
if (revs[cnt].data.fd == sock)
{
/* A new connection. */
- int fd = TEMP_FAILURE_RETRY (accept (sock, NULL, NULL));
+ int fd;
+# ifndef __ASSUME_ACCEPT4
+ fd = -1;
+ if (have_accept4 >= 0)
+# endif
+ {
+ fd = TEMP_FAILURE_RETRY (accept4 (sock, NULL, NULL,
+ SOCK_NONBLOCK));
+# ifndef __ASSUME_ACCEPT4
+ if (have_accept4 == 0)
+ have_accept4 = fd != -1 || errno != ENOSYS ? 1 : -1;
+# endif
+ }
+# ifndef __ASSUME_ACCEPT4
+ if (have_accept4 < 0)
+ fd = TEMP_FAILURE_RETRY (accept (sock, NULL, NULL));
+# endif
+
+ /* Use the descriptor if we have not reached the limit. */
if (fd >= 0)
{
/* Try to add the new descriptor. */
@@ -2048,7 +2079,7 @@ main_loop_epoll (int efd)
}
}
}
-#ifdef HAVE_INOTIFY
+# ifdef HAVE_INOTIFY
else if (revs[cnt].data.fd == inotify_fd)
{
bool to_clear[lastdb] = { false, };
@@ -2104,7 +2135,7 @@ main_loop_epoll (int efd)
pthread_cond_signal (&dbs[dbcnt].prune_cond);
}
}
-#endif
+# endif
else
{
/* Remove the descriptor from the epoll descriptor. */
diff --git a/nscd/dbg_log.c b/nscd/dbg_log.c
index 5e192c97dd..fa99dac88f 100644
--- a/nscd/dbg_log.c
+++ b/nscd/dbg_log.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 1998, 2000, 2004, 2005 Free Software Foundation, Inc.
+/* Copyright (c) 1998, 2000, 2004, 2005, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998.
@@ -53,14 +53,23 @@ void
dbg_log (const char *fmt,...)
{
va_list ap;
- char msg[512], msg2[512];
+ char msg2[512];
va_start (ap, fmt);
- vsnprintf (msg2, sizeof (msg), fmt, ap);
+ vsnprintf (msg2, sizeof (msg2), fmt, ap);
if (debug_level > 0)
{
- snprintf (msg, sizeof (msg), "%d: %s%s", getpid (), msg2,
+ time_t t = time (NULL);
+
+ struct tm now;
+ localtime_r (&t, &now);
+
+ char buf[256];
+ strftime (buf, sizeof (buf), "%c", &now);
+
+ char msg[512];
+ snprintf (msg, sizeof (msg), "%s - %d: %s%s", buf, getpid (), msg2,
msg2[strlen (msg2) - 1] == '\n' ? "" : "\n");
if (dbgout)
{
diff --git a/nscd/grpcache.c b/nscd/grpcache.c
index c49c0e1906..bd101c675d 100644
--- a/nscd/grpcache.c
+++ b/nscd/grpcache.c
@@ -1,5 +1,5 @@
/* Cache handling for group lookup.
- Copyright (C) 1998-2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1998-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -74,7 +74,7 @@ static const gr_response_header notfound =
static void
cache_addgr (struct database_dyn *db, int fd, request_header *req,
const void *key, struct group *grp, uid_t owner,
- struct hashentry *he, struct datahead *dh, int errval)
+ struct hashentry *const he, struct datahead *dh, int errval)
{
ssize_t total;
ssize_t written;
@@ -114,7 +114,7 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
MSG_NOSIGNAL));
dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
- IDX_result_data);
+ 1);
/* If we cannot permanently store the result, so be it. */
if (dataset != NULL)
{
@@ -143,9 +143,6 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
+ sizeof (struct dataset) + req->key_len, MS_ASYNC);
}
- /* Now get the lock to safely insert the records. */
- pthread_rwlock_rdlock (&db->lock);
-
(void) cache_add (req->type, &dataset->strdata, req->key_len,
&dataset->head, true, db, owner, he == NULL);
@@ -155,8 +152,6 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
if (dh != NULL)
dh->usable = false;
}
- else
- ++db->head->addfailed;
}
}
else
@@ -202,12 +197,7 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
dataset = NULL;
if (he == NULL)
- {
- dataset = (struct dataset *) mempool_alloc (db, total + n,
- IDX_result_data);
- if (dataset == NULL)
- ++db->head->addfailed;
- }
+ dataset = (struct dataset *) mempool_alloc (db, total + n, 1);
if (dataset == NULL)
{
@@ -277,8 +267,7 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
/* We have to create a new record. Just allocate
appropriate memory and copy it. */
struct dataset *newp
- = (struct dataset *) mempool_alloc (db, total + n,
- IDX_result_data);
+ = (struct dataset *) mempool_alloc (db, total + n, 1);
if (newp != NULL)
{
/* Adjust pointers into the memory block. */
@@ -289,8 +278,6 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
dataset = memcpy (newp, dataset, total + n);
alloca_used = false;
}
- else
- ++db->head->addfailed;
/* Mark the old record as obsolete. */
dh->usable = false;
@@ -308,14 +295,14 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
{
assert (db->wr_fd != -1);
assert ((char *) &dataset->resp > (char *) db->data);
- assert ((char *) &dataset->resp - (char *) db->head
+ assert ((char *) dataset - (char *) db->head
+ total
<= (sizeof (struct database_pers_head)
+ db->head->module * sizeof (ref_t)
+ db->head->data_size));
written = sendfileall (fd, db->wr_fd,
(char *) &dataset->resp
- - (char *) db->head, total);
+ - (char *) db->head, dataset->head.recsize);
# ifndef __ASSUME_SENDFILE
if (written == -1 && errno == ENOSYS)
goto use_write;
@@ -326,7 +313,7 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
use_write:
# endif
#endif
- written = writeall (fd, &dataset->resp, total);
+ written = writeall (fd, &dataset->resp, dataset->head.recsize);
}
/* Add the record to the database. But only if it has not been
@@ -343,9 +330,6 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
MS_ASYNC);
}
- /* Now get the lock to safely insert the records. */
- pthread_rwlock_rdlock (&db->lock);
-
/* NB: in the following code we always must add the entry
marked with FIRST first. Otherwise we end up with
dangling "pointers" in case a latter hash entry cannot be
diff --git a/nscd/hstcache.c b/nscd/hstcache.c
index 4333917ba0..228f6fd8ab 100644
--- a/nscd/hstcache.c
+++ b/nscd/hstcache.c
@@ -1,5 +1,5 @@
/* Cache handling for host lookup.
- Copyright (C) 1998-2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1998-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -80,7 +80,7 @@ static const hst_response_header notfound =
static void
cache_addhst (struct database_dyn *db, int fd, request_header *req,
const void *key, struct hostent *hst, uid_t owner,
- struct hashentry *he, struct datahead *dh, int errval,
+ struct hashentry *const he, struct datahead *dh, int errval,
int32_t ttl)
{
bool all_written = true;
@@ -120,7 +120,7 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
all_written = false;
dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
- IDX_result_data);
+ 1);
/* If we cannot permanently store the result, so be it. */
if (dataset != NULL)
{
@@ -150,9 +150,6 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
+ sizeof (struct dataset) + req->key_len, MS_ASYNC);
}
- /* Now get the lock to safely insert the records. */
- pthread_rwlock_rdlock (&db->lock);
-
(void) cache_add (req->type, &dataset->strdata, req->key_len,
&dataset->head, true, db, owner, he == NULL);
@@ -162,8 +159,6 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
if (dh != NULL)
dh->usable = false;
}
- else
- ++db->head->addfailed;
}
}
else
@@ -221,13 +216,8 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
questionable whether it is worthwhile complicating the cache
handling just for handling such a special case. */
if (he == NULL && h_addr_list_cnt == 1)
- {
- dataset = (struct dataset *) mempool_alloc (db,
- total + req->key_len,
- IDX_result_data);
- if (dataset == NULL)
- ++db->head->addfailed;
- }
+ dataset = (struct dataset *) mempool_alloc (db, total + req->key_len,
+ 1);
if (dataset == NULL)
{
@@ -316,7 +306,7 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
struct dataset *newp
= (struct dataset *) mempool_alloc (db,
total + req->key_len,
- IDX_result_data);
+ 1);
if (newp != NULL)
{
/* Adjust pointers into the memory block. */
@@ -329,8 +319,6 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
dataset = memcpy (newp, dataset, total + req->key_len);
alloca_used = false;
}
- else
- ++db->head->addfailed;
}
/* Mark the old record as obsolete. */
@@ -349,7 +337,7 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
{
assert (db->wr_fd != -1);
assert ((char *) &dataset->resp > (char *) db->data);
- assert ((char *) &dataset->resp - (char *) db->head
+ assert ((char *) dataset - (char *) db->head
+ total
<= (sizeof (struct database_pers_head)
+ db->head->module * sizeof (ref_t)
@@ -400,9 +388,6 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
addr_list_type = (hst->h_length == NS_INADDRSZ
? GETHOSTBYADDR : GETHOSTBYADDRv6);
- /* Now get the lock to safely insert the records. */
- pthread_rwlock_rdlock (&db->lock);
-
/* NB: the following code is really complicated. It has
seemlingly duplicated code paths which do the same. The
problem is that we always must add the hash table entry
diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c
index c5693c6be5..8195b6609e 100644
--- a/nscd/initgrcache.c
+++ b/nscd/initgrcache.c
@@ -1,5 +1,5 @@
/* Cache handling for host lookup.
- Copyright (C) 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
@@ -54,7 +54,7 @@ static const initgr_response_header notfound =
static void
addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
- void *key, uid_t uid, struct hashentry *he,
+ void *key, uid_t uid, struct hashentry *const he,
struct datahead *dh)
{
/* Search for the entry matching the key. Please note that we don't
@@ -198,7 +198,7 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
MSG_NOSIGNAL));
dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
- IDX_result_data);
+ 1);
/* If we cannot permanently store the result, so be it. */
if (dataset != NULL)
{
@@ -227,9 +227,6 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
+ sizeof (struct dataset) + req->key_len, MS_ASYNC);
}
- /* Now get the lock to safely insert the records. */
- pthread_rwlock_rdlock (&db->lock);
-
(void) cache_add (req->type, key_copy, req->key_len,
&dataset->head, true, db, uid, he == NULL);
@@ -239,8 +236,6 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
if (dh != NULL)
dh->usable = false;
}
- else
- ++db->head->addfailed;
}
}
else
@@ -257,13 +252,8 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
dataset = NULL;
if (he == NULL)
- {
- dataset = (struct dataset *) mempool_alloc (db,
- total + req->key_len,
- IDX_result_data);
- if (dataset == NULL)
- ++db->head->addfailed;
- }
+ dataset = (struct dataset *) mempool_alloc (db, total + req->key_len,
+ 1);
if (dataset == NULL)
{
@@ -334,7 +324,7 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
appropriate memory and copy it. */
struct dataset *newp
= (struct dataset *) mempool_alloc (db, total + req->key_len,
- IDX_result_data);
+ 1);
if (newp != NULL)
{
/* Adjust pointer into the memory block. */
@@ -343,8 +333,6 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
dataset = memcpy (newp, dataset, total + req->key_len);
alloca_used = false;
}
- else
- ++db->head->addfailed;
/* Mark the old record as obsolete. */
dh->usable = false;
@@ -362,14 +350,14 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
{
assert (db->wr_fd != -1);
assert ((char *) &dataset->resp > (char *) db->data);
- assert ((char *) &dataset->resp - (char *) db->head
+ assert ((char *) dataset - (char *) db->head
+ total
<= (sizeof (struct database_pers_head)
+ db->head->module * sizeof (ref_t)
+ db->head->data_size));
written = sendfileall (fd, db->wr_fd,
(char *) &dataset->resp
- - (char *) db->head, total);
+ - (char *) db->head, dataset->head.recsize);
# ifndef __ASSUME_SENDFILE
if (written == -1 && errno == ENOSYS)
goto use_write;
@@ -380,7 +368,7 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
use_write:
# endif
#endif
- written = writeall (fd, &dataset->resp, total);
+ written = writeall (fd, &dataset->resp, dataset->head.recsize);
}
@@ -398,9 +386,6 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
req->key_len, MS_ASYNC);
}
- /* Now get the lock to safely insert the records. */
- pthread_rwlock_rdlock (&db->lock);
-
(void) cache_add (INITGROUPS, cp, req->key_len, &dataset->head, true,
db, uid, he == NULL);
diff --git a/nscd/mem.c b/nscd/mem.c
index e821729dab..fcea6dbd03 100644
--- a/nscd/mem.c
+++ b/nscd/mem.c
@@ -1,5 +1,5 @@
/* Cache memory handling.
- Copyright (C) 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
@@ -134,12 +134,11 @@ gc (struct database_dyn *db)
stack_used = 0;
size_t nmark = (db->head->first_free / BLOCK_ALIGN + BITS - 1) / BITS;
size_t memory_needed = nmark * sizeof (BITMAP_T);
- if (stack_used + memory_needed <= MAX_STACK_USE)
+ if (__builtin_expect (stack_used + memory_needed <= MAX_STACK_USE, 1))
{
- mark = (BITMAP_T *) alloca (memory_needed);
+ mark = (BITMAP_T *) alloca_account (memory_needed, stack_used);
mark_use_malloc = false;
memset (mark, '\0', memory_needed);
- stack_used += memory_needed;
}
else
{
@@ -153,19 +152,17 @@ gc (struct database_dyn *db)
struct hashentry **he;
struct hashentry **he_data;
bool he_use_malloc;
- if (stack_used + memory_needed <= MAX_STACK_USE)
+ if (__builtin_expect (stack_used + memory_needed <= MAX_STACK_USE, 1))
{
- he = alloca (db->head->nentries * sizeof (struct hashentry *));
- he_data = alloca (db->head->nentries * sizeof (struct hashentry *));
+ he = alloca_account (memory_needed, stack_used);
he_use_malloc = false;
- stack_used += memory_needed;
}
else
{
he = xmalloc (memory_needed);
- he_data = &he[db->head->nentries * sizeof (struct hashentry *)];
he_use_malloc = true;
}
+ he_data = &he[db->head->nentries];
size_t cnt = 0;
for (size_t idx = 0; idx < db->head->module; ++idx)
@@ -200,32 +197,6 @@ gc (struct database_dyn *db)
}
assert (cnt == db->head->nentries);
- /* Go through the list of in-flight memory blocks. */
- struct mem_in_flight *mrunp = mem_in_flight_list;
- while (mrunp != NULL)
- {
- /* NB: There can be no race between this test and another thread
- setting the field to the index we are looking for because
- this would require the other thread to also have the memlock
- for the database.
-
- NB2: we do not have to look at latter blocks (higher indices) if
- earlier blocks are not in flight. They are always allocated in
- sequence. */
- for (enum in_flight idx = IDX_result_data;
- idx < IDX_last && mrunp->block[idx].dbidx == db - dbs; ++idx)
- {
- assert (mrunp->block[idx].blockoff >= 0);
- assert (mrunp->block[idx].blocklen < db->memsize);
- assert (mrunp->block[idx].blockoff
- + mrunp->block[0].blocklen <= db->memsize);
- markrange (mark, mrunp->block[idx].blockoff,
- mrunp->block[idx].blocklen);
- }
-
- mrunp = mrunp->next;
- }
-
/* Sort the entries by the addresses of the referenced data. All
the entries pointing to the same DATAHEAD object will have the
same key. Stability of the sorting is unimportant. */
@@ -373,11 +344,9 @@ gc (struct database_dyn *db)
ref_t disp = off_alloc - off_free;
struct moveinfo *new_move;
- if (stack_used + sizeof (*new_move) <= MAX_STACK_USE)
- {
- new_move = alloca (sizeof (*new_move));
- stack_used += sizeof (*new_move);
- }
+ if (__builtin_expect (stack_used + sizeof (*new_move) <= MAX_STACK_USE,
+ 1))
+ new_move = alloca_account (sizeof (*new_move), stack_used);
else
new_move = obstack_alloc (&ob, sizeof (*new_move));
new_move->from = db->data + off_alloc;
@@ -545,13 +514,16 @@ gc (struct database_dyn *db)
void *
-mempool_alloc (struct database_dyn *db, size_t len, enum in_flight idx)
+mempool_alloc (struct database_dyn *db, size_t len, int data_alloc)
{
/* Make sure LEN is a multiple of our maximum alignment so we can
keep track of used memory is multiples of this alignment value. */
if ((len & BLOCK_ALIGN_M1) != 0)
len += BLOCK_ALIGN - (len & BLOCK_ALIGN_M1);
+ if (data_alloc)
+ pthread_rwlock_rdlock (&db->lock);
+
pthread_mutex_lock (&db->memlock);
assert ((db->head->first_free & BLOCK_ALIGN_M1) == 0);
@@ -594,6 +566,9 @@ mempool_alloc (struct database_dyn *db, size_t len, enum in_flight idx)
}
}
+ if (data_alloc)
+ pthread_rwlock_unlock (&db->lock);
+
if (! db->last_alloc_failed)
{
dbg_log (_("no more memory for database '%s'"), dbnames[db - dbs]);
@@ -601,17 +576,13 @@ mempool_alloc (struct database_dyn *db, size_t len, enum in_flight idx)
db->last_alloc_failed = true;
}
+ ++db->head->addfailed;
+
/* No luck. */
res = NULL;
}
else
{
- /* Remember that we have allocated this memory. */
- assert (idx >= 0 && idx < IDX_last);
- mem_in_flight.block[idx].dbidx = db - dbs;
- mem_in_flight.block[idx].blocklen = len;
- mem_in_flight.block[idx].blockoff = db->head->first_free;
-
db->head->first_free += len;
db->last_alloc_failed = false;
diff --git a/nscd/nscd-client.h b/nscd/nscd-client.h
index 3c9688fd30..c6c09cbddd 100644
--- a/nscd/nscd-client.h
+++ b/nscd/nscd-client.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 1998, 1999, 2000, 2003, 2004, 2005, 2006, 2007
+/* Copyright (c) 1998, 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
@@ -44,7 +44,7 @@
/* Path for the configuration file. */
#define _PATH_NSCDCONF "/etc/nscd.conf"
-/* Maximu allowed length for the key. */
+/* Maximum allowed length for the key. */
#define MAXKEYLEN 1024
@@ -329,7 +329,8 @@ static inline int __nscd_drop_map_ref (struct mapped_database *map,
extern struct datahead *__nscd_cache_search (request_type type,
const char *key,
size_t keylen,
- const struct mapped_database *mapped);
+ const struct mapped_database *mapped,
+ size_t datalen);
/* Wrappers around read, readv and write that only read/write less than LEN
bytes on error or EOF. */
diff --git a/nscd/nscd.c b/nscd/nscd.c
index aa1490936c..b9035f2131 100644
--- a/nscd/nscd.c
+++ b/nscd/nscd.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 1998-2006, 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (c) 1998-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
@@ -91,6 +91,9 @@ static int write_pid (const char *file);
static void print_version (FILE *stream, struct argp_state *state);
void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+/* 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[] =
{
@@ -117,7 +120,7 @@ static error_t parse_opt (int key, char *arg, struct argp_state *state);
/* Data structure to communicate with argp functions. */
static struct argp argp =
{
- options, parse_opt, NULL, doc,
+ options, parse_opt, NULL, doc, NULL, more_help
};
/* True if only statistics are requested. */
@@ -338,7 +341,10 @@ parse_opt (int key, char *arg, struct argp_state *state)
break;
if (cnt == lastdb)
- return ARGP_ERR_UNKNOWN;
+ {
+ argp_error (state, _("'%s' is not a known database"), arg);
+ return EINVAL;
+ }
size_t arg_len = strlen (arg) + 1;
struct
@@ -398,6 +404,23 @@ parse_opt (int key, char *arg, struct argp_state *state)
return 0;
}
+/* Print bug-reporting information in the help message. */
+static char *
+more_help (int key, const char *text, void *input)
+{
+ switch (key)
+ {
+ case ARGP_KEY_HELP_EXTRA:
+ /* We print some extra information. */
+ return strdup (gettext ("\
+For bug reporting instructions, please see:\n\
+<http://www.gnu.org/software/libc/bugs.html>.\n"));
+ default:
+ break;
+ }
+ return (char *) text;
+}
+
/* Print the version information. */
static void
print_version (FILE *stream, struct argp_state *state)
@@ -407,7 +430,7 @@ print_version (FILE *stream, struct argp_state *state)
Copyright (C) %s Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2008");
+"), "2009");
fprintf (stream, gettext ("Written by %s.\n"),
"Thorsten Kukuk and Ulrich Drepper");
}
@@ -465,10 +488,6 @@ termination_handler (int signum)
msync (dbs[cnt].head, dbs[cnt].memsize, MS_ASYNC);
}
- /* Shutdown the SELinux AVC. */
- if (selinux_enabled)
- nscd_avc_destroy ();
-
_exit (EXIT_SUCCESS);
}
diff --git a/nscd/nscd.h b/nscd/nscd.h
index 5c77dd3c41..3279b85432 100644
--- a/nscd/nscd.h
+++ b/nscd/nscd.h
@@ -1,5 +1,4 @@
-/* Copyright (c) 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008
- Free Software Foundation, Inc.
+/* Copyright (c) 1998-2001, 2003-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
@@ -69,6 +68,7 @@ struct database_dyn
pthread_rwlock_t lock;
pthread_cond_t prune_cond;
pthread_mutex_t prune_lock;
+ pthread_mutex_t prune_run_lock;
time_t wakeup_time;
int enabled;
@@ -183,31 +183,6 @@ extern uid_t old_uid;
extern gid_t old_gid;
-/* Memory allocation in flight. Each thread can have a limited number
- of allocation in flight. No need to create dynamic data
- structures. We use fixed indices. */
-enum in_flight
- {
- IDX_result_data = 0,
- /* Keep the IDX_record_data entry last at all times. */
- IDX_record_data = 1,
- IDX_last
- };
-extern __thread struct mem_in_flight
-{
- struct
- {
- int dbidx;
- nscd_ssize_t blocklen;
- nscd_ssize_t blockoff;
- } block[IDX_last];
-
- struct mem_in_flight *next;
-} mem_in_flight attribute_tls_model_ie;
-/* Global list of the mem_in_flight variables of all the threads. */
-extern struct mem_in_flight *mem_in_flight_list;
-
-
/* Prototypes for global functions. */
/* nscd.c */
@@ -300,7 +275,7 @@ extern void readdservbyport (struct database_dyn *db, struct hashentry *he,
/* mem.c */
extern void *mempool_alloc (struct database_dyn *db, size_t len,
- enum in_flight idx);
+ int data_alloc);
extern void gc (struct database_dyn *db);
diff --git a/nscd/nscd_getai.c b/nscd/nscd_getai.c
index 56f963776e..d1c5cd14e9 100644
--- a/nscd/nscd_getai.c
+++ b/nscd/nscd_getai.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
@@ -36,10 +37,24 @@ extern int __nss_not_use_nscd_hosts;
/* We use the mapping from nscd_gethst. */
libc_locked_map_ptr (extern, __hst_map_handle) attribute_hidden;
+/* Defined in nscd_gethst_r.c. */
+extern int __nss_have_localdomain attribute_hidden;
+
int
__nscd_getai (const char *key, struct nscd_ai_result **result, int *h_errnop)
{
+ if (__builtin_expect (__nss_have_localdomain >= 0, 0))
+ {
+ if (__nss_have_localdomain == 0)
+ __nss_have_localdomain = getenv ("LOCALDOMAIN") != NULL ? 1 : -1;
+ if (__nss_have_localdomain > 0)
+ {
+ __nss_not_use_nscd_hosts = 1;
+ return -1;
+ }
+ }
+
size_t keylen = strlen (key) + 1;
int gc_cycle;
int nretries = 0;
@@ -61,7 +76,7 @@ __nscd_getai (const char *key, struct nscd_ai_result **result, int *h_errnop)
if (mapped != NO_MAPPING)
{
struct datahead *found = __nscd_cache_search (GETAI, key, keylen,
- mapped);
+ mapped, sizeof ai_resp);
if (found != NULL)
{
respdata = (char *) (&found->data[0].aidata + 1);
diff --git a/nscd/nscd_getgr_r.c b/nscd/nscd_getgr_r.c
index b84b06b3ce..c2d204c3c8 100644
--- a/nscd/nscd_getgr_r.c
+++ b/nscd/nscd_getgr_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2000, 2002-2005, 2006, 2007
+/* Copyright (C) 1998-2000, 2002-2005, 2006, 2007, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@uni-paderborn.de>, 1998.
@@ -107,7 +107,8 @@ nscd_getgr_r (const char *key, size_t keylen, request_type type,
if (mapped != NO_MAPPING)
{
- struct datahead *found = __nscd_cache_search (type, key, keylen, mapped);
+ struct datahead *found = __nscd_cache_search (type, key, keylen, mapped,
+ sizeof gr_resp);
if (found != NULL)
{
len = (const uint32_t *) (&found->data[0].grdata + 1);
diff --git a/nscd/nscd_gethst_r.c b/nscd/nscd_gethst_r.c
index a211404756..70631fa961 100644
--- a/nscd/nscd_gethst_r.c
+++ b/nscd/nscd_gethst_r.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1998-2005, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -97,12 +98,25 @@ libc_freeres_fn (hst_map_free)
}
+int __nss_have_localdomain attribute_hidden;
+
static int
internal_function
nscd_gethst_r (const char *key, size_t keylen, request_type type,
struct hostent *resultbuf, char *buffer, size_t buflen,
struct hostent **result, int *h_errnop)
{
+ if (__builtin_expect (__nss_have_localdomain >= 0, 0))
+ {
+ if (__nss_have_localdomain == 0)
+ __nss_have_localdomain = getenv ("LOCALDOMAIN") != NULL ? 1 : -1;
+ if (__nss_have_localdomain > 0)
+ {
+ __nss_not_use_nscd_hosts = 1;
+ return -1;
+ }
+ }
+
int gc_cycle;
int nretries = 0;
@@ -124,7 +138,8 @@ nscd_gethst_r (const char *key, size_t keylen, request_type type,
if (mapped != NO_MAPPING)
{
/* No const qualifier, as it can change during garbage collection. */
- struct datahead *found = __nscd_cache_search (type, key, keylen, mapped);
+ struct datahead *found = __nscd_cache_search (type, key, keylen, mapped,
+ sizeof hst_resp);
if (found != NULL)
{
h_name = (char *) (&found->data[0].hstdata + 1);
diff --git a/nscd/nscd_getpw_r.c b/nscd/nscd_getpw_r.c
index 21f792bb4e..8a4449d186 100644
--- a/nscd/nscd_getpw_r.c
+++ b/nscd/nscd_getpw_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2003, 2004, 2005, 2007
+/* Copyright (C) 1998, 1999, 2003, 2004, 2005, 2007, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@uni-paderborn.de>, 1998.
@@ -104,7 +104,8 @@ nscd_getpw_r (const char *key, size_t keylen, request_type type,
if (mapped != NO_MAPPING)
{
- struct datahead *found = __nscd_cache_search (type, key, keylen, mapped);
+ struct datahead *found = __nscd_cache_search (type, key, keylen, mapped,
+ sizeof pw_resp);
if (found != NULL)
{
pw_name = (const char *) (&found->data[0].pwdata + 1);
diff --git a/nscd/nscd_getserv_r.c b/nscd/nscd_getserv_r.c
index b1ad7e2e43..dce4165482 100644
--- a/nscd/nscd_getserv_r.c
+++ b/nscd/nscd_getserv_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2007.
@@ -104,7 +104,8 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto,
if (mapped != NO_MAPPING)
{
- struct datahead *found = __nscd_cache_search (type, key, keylen, mapped);
+ struct datahead *found = __nscd_cache_search (type, key, keylen, mapped,
+ sizeof serv_resp);
if (found != NULL)
{
diff --git a/nscd/nscd_helper.c b/nscd/nscd_helper.c
index 7db5d09845..fe63f9a7fe 100644
--- a/nscd/nscd_helper.c
+++ b/nscd/nscd_helper.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -21,6 +21,7 @@
#include <errno.h>
#include <fcntl.h>
#include <stdbool.h>
+#include <stddef.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
@@ -318,7 +319,7 @@ get_mapping (request_type type, const char *key,
/* This access is well-aligned since BUF is correctly aligned for an
int and CMSG_DATA preserves this alignment. */
- *(int *) CMSG_DATA (cmsg) = -1;
+ memset (CMSG_DATA (cmsg), '\xff', sizeof (int));
msg.msg_controllen = cmsg->cmsg_len;
@@ -335,7 +336,8 @@ get_mapping (request_type type, const char *key,
!= CMSG_LEN (sizeof (int))), 0))
goto out_close2;
- mapfd = *(int *) CMSG_DATA (cmsg);
+ int *ip = (void *) CMSG_DATA (cmsg);
+ mapfd = *ip;
if (__builtin_expect (n != keylen && n != keylen + sizeof (mapsize), 0))
goto out_close;
@@ -466,23 +468,36 @@ __nscd_get_map_ref (request_type type, const char *name,
}
+/* Using sizeof (hashentry) is not always correct to determine the size of
+ the data structure as found in the nscd cache. The program could be
+ a 64-bit process and nscd could be a 32-bit process. In this case
+ sizeof (hashentry) would overestimate the size. The following is
+ the minimum size of such an entry, good enough for our tests here. */
+#define MINIMUM_HASHENTRY_SIZE \
+ (offsetof (struct hashentry, dellist) + sizeof (int32_t))
+
+
/* Don't return const struct datahead *, as eventhough the record
is normally constant, it can change arbitrarily during nscd
garbage collection. */
struct datahead *
__nscd_cache_search (request_type type, const char *key, size_t keylen,
- const struct mapped_database *mapped)
+ const struct mapped_database *mapped, size_t datalen)
{
unsigned long int hash = __nis_hash (key, keylen) % mapped->head->module;
size_t datasize = mapped->datasize;
ref_t trail = mapped->head->array[hash];
+ trail = atomic_forced_read (trail);
ref_t work = trail;
+ size_t loop_cnt = datasize / (MINIMUM_HASHENTRY_SIZE
+ + offsetof (struct datahead, data) / 2);
int tick = 0;
- while (work != ENDREF && work + sizeof (struct hashentry) <= datasize)
+ while (work != ENDREF && work + MINIMUM_HASHENTRY_SIZE <= datasize)
{
struct hashentry *here = (struct hashentry *) (mapped->data + work);
+ ref_t here_key, here_packet;
#ifndef _STRING_ARCH_unaligned
/* Although during garbage collection when moving struct hashentry
@@ -497,13 +512,14 @@ __nscd_cache_search (request_type type, const char *key, size_t keylen,
if (type == here->type
&& keylen == here->len
- && here->key + keylen <= datasize
- && memcmp (key, mapped->data + here->key, keylen) == 0
- && here->packet + sizeof (struct datahead) <= datasize)
+ && (here_key = atomic_forced_read (here->key)) + keylen <= datasize
+ && memcmp (key, mapped->data + here_key, keylen) == 0
+ && ((here_packet = atomic_forced_read (here->packet))
+ + sizeof (struct datahead) <= datasize))
{
/* We found the entry. Increment the appropriate counter. */
struct datahead *dh
- = (struct datahead *) (mapped->data + here->packet);
+ = (struct datahead *) (mapped->data + here_packet);
#ifndef _STRING_ARCH_unaligned
if ((uintptr_t) dh & (__alignof__ (*dh) - 1))
@@ -512,14 +528,17 @@ __nscd_cache_search (request_type type, const char *key, size_t keylen,
/* See whether we must ignore the entry or whether something
is wrong because garbage collection is in progress. */
- if (dh->usable && here->packet + dh->allocsize <= datasize)
+ if (dh->usable
+ && here_packet + dh->allocsize <= datasize
+ && (here_packet + offsetof (struct datahead, data) + datalen
+ <= datasize))
return dh;
}
- work = here->next;
+ work = atomic_forced_read (here->next);
/* Prevent endless loops. This should never happen but perhaps
the database got corrupted, accidentally or deliberately. */
- if (work == trail)
+ if (work == trail || loop_cnt-- == 0)
break;
if (tick)
{
@@ -531,7 +550,11 @@ __nscd_cache_search (request_type type, const char *key, size_t keylen,
if ((uintptr_t) trailelem & (__alignof__ (*trailelem) - 1))
return NULL;
#endif
- trail = trailelem->next;
+
+ if (trail + MINIMUM_HASHENTRY_SIZE > datasize)
+ return NULL;
+
+ trail = atomic_forced_read (trailelem->next);
}
tick = 1 - tick;
}
diff --git a/nscd/nscd_initgroups.c b/nscd/nscd_initgroups.c
index 866455a96c..5ff60c080c 100644
--- a/nscd/nscd_initgroups.c
+++ b/nscd/nscd_initgroups.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
@@ -55,7 +55,8 @@ __nscd_getgrouplist (const char *user, gid_t group, long int *size,
if (mapped != NO_MAPPING)
{
struct datahead *found = __nscd_cache_search (INITGROUPS, user,
- userlen, mapped);
+ userlen, mapped,
+ sizeof initgr_resp);
if (found != NULL)
{
respdata = (char *) (&found->data[0].initgrdata + 1);
diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c
index 782b101371..75f2221e88 100644
--- a/nscd/pwdcache.c
+++ b/nscd/pwdcache.c
@@ -1,5 +1,5 @@
/* Cache handling for passwd lookup.
- Copyright (C) 1998-2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1998-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -80,7 +80,7 @@ static const pw_response_header notfound =
static void
cache_addpw (struct database_dyn *db, int fd, request_header *req,
const void *key, struct passwd *pwd, uid_t owner,
- struct hashentry *he, struct datahead *dh, int errval)
+ struct hashentry *const he, struct datahead *dh, int errval)
{
ssize_t total;
ssize_t written;
@@ -121,7 +121,7 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
MSG_NOSIGNAL));
dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
- IDX_result_data);
+ 1);
/* If we cannot permanently store the result, so be it. */
if (dataset != NULL)
{
@@ -150,9 +150,6 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
+ sizeof (struct dataset) + req->key_len, MS_ASYNC);
}
- /* Now get the lock to safely insert the records. */
- pthread_rwlock_rdlock (&db->lock);
-
(void) cache_add (req->type, key_copy, req->key_len,
&dataset->head, true, db, owner, he == NULL);
@@ -162,8 +159,6 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
if (dh != NULL)
dh->usable = false;
}
- else
- ++db->head->addfailed;
}
}
else
@@ -197,12 +192,7 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
dataset = NULL;
if (he == NULL)
- {
- dataset = (struct dataset *) mempool_alloc (db, total + n,
- IDX_result_data);
- if (dataset == NULL)
- ++db->head->addfailed;
- }
+ dataset = (struct dataset *) mempool_alloc (db, total + n, 1);
if (dataset == NULL)
{
@@ -257,19 +247,10 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
{
assert (fd == -1);
-#if 0
- if (dataset->head.datasize == dh->allocsize
+ if (dataset->head.allocsize == dh->allocsize
&& dataset->head.recsize == dh->recsize
&& memcmp (&dataset->resp, dh->data,
dh->allocsize - offsetof (struct dataset, resp)) == 0)
-#else
- if (dataset->head.allocsize != dh->allocsize)
- goto nnn;
- if (dataset->head.recsize != dh->recsize)
- goto nnn;
- if(memcmp (&dataset->resp, dh->data,
- dh->allocsize - offsetof (struct dataset, resp)) == 0)
-#endif
{
/* The data has not changed. We will just bump the
timeout value. Note that the new record has been
@@ -279,12 +260,10 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
}
else
{
- nnn:;
/* We have to create a new record. Just allocate
appropriate memory and copy it. */
struct dataset *newp
- = (struct dataset *) mempool_alloc (db, total + n,
- IDX_result_data);
+ = (struct dataset *) mempool_alloc (db, total + n, 1);
if (newp != NULL)
{
/* Adjust pointer into the memory block. */
@@ -294,8 +273,6 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
dataset = memcpy (newp, dataset, total + n);
alloca_used = false;
}
- else
- ++db->head->addfailed;
/* Mark the old record as obsolete. */
dh->usable = false;
@@ -313,14 +290,14 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
{
assert (db->wr_fd != -1);
assert ((char *) &dataset->resp > (char *) db->data);
- assert ((char *) &dataset->resp - (char *) db->head
+ assert ((char *) dataset - (char *) db->head
+ total
<= (sizeof (struct database_pers_head)
+ db->head->module * sizeof (ref_t)
+ db->head->data_size));
written = sendfileall (fd, db->wr_fd,
(char *) &dataset->resp
- - (char *) db->head, total);
+ - (char *) db->head, dataset->head.recsize );
# ifndef __ASSUME_SENDFILE
if (written == -1 && errno == ENOSYS)
goto use_write;
@@ -331,7 +308,7 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
use_write:
# endif
#endif
- written = writeall (fd, &dataset->resp, total);
+ written = writeall (fd, &dataset->resp, dataset->head.recsize);
}
@@ -349,9 +326,6 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
MS_ASYNC);
}
- /* Now get the lock to safely insert the records. */
- pthread_rwlock_rdlock (&db->lock);
-
/* NB: in the following code we always must add the entry
marked with FIRST first. Otherwise we end up with
dangling "pointers" in case a latter hash entry cannot be
diff --git a/nscd/selinux.c b/nscd/selinux.c
index 9a167ec14d..e07a454bf8 100644
--- a/nscd/selinux.c
+++ b/nscd/selinux.c
@@ -1,5 +1,5 @@
/* SELinux access controls for nscd.
- Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Matthew Rickard <mjricka@epoch.ncsc.mil>, 2004.
@@ -418,15 +418,4 @@ nscd_avc_print_stats (struct avc_cache_stats *cstats)
cstats->cav_probes, cstats->cav_misses);
}
-
-/* Clean up the AVC before exiting. */
-void
-nscd_avc_destroy (void)
-{
- avc_destroy ();
-#ifdef HAVE_LIBAUDIT
- audit_close (audit_fd);
-#endif
-}
-
#endif /* HAVE_SELINUX */
diff --git a/nscd/selinux.h b/nscd/selinux.h
index 27afcd6e86..67d981bb06 100644
--- a/nscd/selinux.h
+++ b/nscd/selinux.h
@@ -1,5 +1,5 @@
/* Header for nscd SELinux access controls.
- Copyright (C) 2004, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Matthew Rickard <mjricka@epoch.ncsc.mil>, 2004.
@@ -35,8 +35,6 @@ struct avc_cache_stats;
/* Initialize the userspace AVC. */
extern void nscd_avc_init (void);
-/* Destroy the userspace AVC. */
-extern void nscd_avc_destroy (void);
/* Determine if we are running on an SELinux kernel. */
extern void nscd_selinux_enabled (int *selinux_enabled);
/* Check if the client has permission for the request type. */
@@ -55,7 +53,6 @@ extern void install_real_capabilities (cap_t new_caps);
#else
# define selinux_enabled 0
# define nscd_avc_init() (void) 0
-# define nscd_avc_destroy() (void) 0
# define nscd_selinux_enabled(selinux_enabled) (void) 0
# define nscd_request_avc_has_perm(fd, req) 0
# define nscd_avc_cache_stats(cstats) (void) 0
diff --git a/nscd/servicescache.c b/nscd/servicescache.c
index 44f12a3c69..dc98d3005a 100644
--- a/nscd/servicescache.c
+++ b/nscd/servicescache.c
@@ -1,5 +1,5 @@
/* Cache handling for services lookup.
- Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@drepper.com>, 2007.
@@ -64,7 +64,7 @@ static const serv_response_header notfound =
static void
cache_addserv (struct database_dyn *db, int fd, request_header *req,
const void *key, struct servent *serv, uid_t owner,
- struct hashentry *he, struct datahead *dh, int errval)
+ struct hashentry *const he, struct datahead *dh, int errval)
{
ssize_t total;
ssize_t written;
@@ -104,7 +104,7 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
MSG_NOSIGNAL));
dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
- IDX_result_data);
+ 1);
/* If we cannot permanently store the result, so be it. */
if (dataset != NULL)
{
@@ -133,9 +133,6 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
+ sizeof (struct dataset) + req->key_len, MS_ASYNC);
}
- /* Now get the lock to safely insert the records. */
- pthread_rwlock_rdlock (&db->lock);
-
(void) cache_add (req->type, &dataset->strdata, req->key_len,
&dataset->head, true, db, owner, he == NULL);
@@ -145,8 +142,6 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
if (dh != NULL)
dh->usable = false;
}
- else
- ++db->head->addfailed;
}
}
else
@@ -187,13 +182,8 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
dataset = NULL;
if (he == NULL)
- {
- dataset = (struct dataset *) mempool_alloc (db,
- total + req->key_len,
- IDX_result_data);
- if (dataset == NULL)
- ++db->head->addfailed;
- }
+ dataset = (struct dataset *) mempool_alloc (db, total + req->key_len,
+ 1);
if (dataset == NULL)
{
@@ -262,7 +252,7 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
appropriate memory and copy it. */
struct dataset *newp
= (struct dataset *) mempool_alloc (db, total + req->key_len,
- IDX_result_data);
+ 1);
if (newp != NULL)
{
/* Adjust pointers into the memory block. */
@@ -273,8 +263,6 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
dataset = memcpy (newp, dataset, total + req->key_len);
alloca_used = false;
}
- else
- ++db->head->addfailed;
/* Mark the old record as obsolete. */
dh->usable = false;
@@ -327,9 +315,6 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
+ total + req->key_len, MS_ASYNC);
}
- /* Now get the lock to safely insert the records. */
- pthread_rwlock_rdlock (&db->lock);
-
(void) cache_add (req->type, key_copy, req->key_len,
&dataset->head, true, db, owner, he == NULL);
diff --git a/nss/Makefile b/nss/Makefile
index f2ecadb2a7..670e6b2f16 100644
--- a/nss/Makefile
+++ b/nss/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1996-1998,2000,2001,2002,2007 Free Software Foundation, Inc.
+# Copyright (C) 1996-1998,2000-2002,2007,2009 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
@@ -34,7 +34,7 @@ routines = nsswitch getnssent getnssent_r digits_dots \
# Caution: if you add a database here, you must add its real name
# in databases.def, too.
databases = proto service hosts network grp pwd rpc ethers \
- spwd netgrp key alias
+ spwd netgrp key alias sgrp
others := getent
install-bin := getent
diff --git a/nss/Versions b/nss/Versions
index f7f0e56979..7a9d67b429 100644
--- a/nss/Versions
+++ b/nss/Versions
@@ -9,7 +9,7 @@ libc {
}
GLIBC_PRIVATE {
_nss_files_parse_grent; _nss_files_parse_pwent; _nss_files_parse_spent;
- __nss_disable_nscd; __nss_lookup_function;
+ __nss_disable_nscd; __nss_lookup_function; _nss_files_parse_sgent;
__nss_passwd_lookup2; __nss_group_lookup2; __nss_hosts_lookup2;
__nss_services_lookup2; __nss_next2;
@@ -87,6 +87,11 @@ libnss_files {
_nss_files_getspent_r;
_nss_files_getspnam_r;
+ _nss_files_setsgent;
+ _nss_files_endsgent;
+ _nss_files_getsgent_r;
+ _nss_files_getsgnam_r;
+
_nss_netgroup_parseline;
_nss_files_getpublickey;
_nss_files_getsecretkey;
diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c
index b535f67a7b..16dadd70ef 100644
--- a/nss/getXXbyYY_r.c
+++ b/nss/getXXbyYY_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2004, 2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -301,7 +301,9 @@ done:
}
-#ifndef FUNCTION2_NAME
+#ifdef NO_COMPAT_NEEDED
+strong_alias (INTERNAL (REENTRANT_NAME), REENTRANT_NAME);
+#elif !defined FUNCTION2_NAME
# include <shlib-compat.h>
# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1_2)
# define OLD(name) OLD1 (name)
diff --git a/nss/getXXent_r.c b/nss/getXXent_r.c
index 7a881c02ac..d53caeff40 100644
--- a/nss/getXXent_r.c
+++ b/nss/getXXent_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2000,2002,2004,2007 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2000,2002,2004,2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -170,10 +170,13 @@ INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen,
}
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1_2)
-#define OLD(name) OLD1 (name)
-#define OLD1(name) __old_##name
+#ifdef NO_COMPAT_NEEDED
+strong_alias (INTERNAL (REENTRANT_GETNAME), REENTRANT_GETNAME);
+#else
+# include <shlib-compat.h>
+# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1_2)
+# define OLD(name) OLD1 (name)
+# define OLD1(name) __old_##name
int
attribute_compat_text_section
@@ -189,20 +192,21 @@ OLD (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen,
return ret;
}
-#define do_symbol_version(real, name, version) \
+# define do_symbol_version(real, name, version) \
compat_symbol (libc, real, name, version)
do_symbol_version (OLD (REENTRANT_GETNAME), REENTRANT_GETNAME, GLIBC_2_0);
-#endif
+# endif
/* As INTERNAL (REENTRANT_GETNAME) may be hidden, we need an alias
in between so that the REENTRANT_GETNAME@@GLIBC_2.1.2 is not
hidden too. */
strong_alias (INTERNAL (REENTRANT_GETNAME), NEW (REENTRANT_GETNAME));
-#define do_default_symbol_version(real, name, version) \
+# define do_default_symbol_version(real, name, version) \
versioned_symbol (libc, real, name, version)
do_default_symbol_version (NEW (REENTRANT_GETNAME),
REENTRANT_GETNAME, GLIBC_2_1_2);
+#endif
static_link_warning (SETFUNC_NAME)
static_link_warning (ENDFUNC_NAME)
diff --git a/nss/getent.c b/nss/getent.c
index c8173d0b51..d70a8da0f4 100644
--- a/nss/getent.c
+++ b/nss/getent.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 1998-2007, 2008 Free Software Foundation, Inc.
+/* Copyright (c) 1998-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
@@ -24,6 +24,7 @@
#include <ctype.h>
#include <error.h>
#include <grp.h>
+#include <gshadow.h>
#include <libintl.h>
#include <locale.h>
#include <mcheck.h>
@@ -59,9 +60,7 @@ static const struct argp_option args_options[] =
};
/* Short description of program. */
-static const char doc[] = N_("Get entries from administrative database.\v\
-For bug reporting instructions, please see:\n\
-<http://www.gnu.org/software/libc/bugs.html>.\n");
+static const char doc[] = N_("Get entries from administrative database.");
/* Prototype for option handler. */
static error_t parse_option (int key, char *arg, struct argp_state *state);
@@ -84,7 +83,7 @@ print_version (FILE *stream, struct argp_state *state)
Copyright (C) %s Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2008");
+"), "2009");
fprintf (stream, gettext ("Written by %s.\n"), "Thorsten Kukuk");
}
@@ -234,6 +233,70 @@ group_keys (int number, char *key[])
return result;
}
+/* This is for gshadow */
+static void
+print_gshadow (struct sgrp *sg)
+{
+ unsigned int i = 0;
+
+ printf ("%s:%s:",
+ sg->sg_namp ? sg->sg_namp : "",
+ sg->sg_passwd ? sg->sg_passwd : "");
+
+ while (sg->sg_adm[i] != NULL)
+ {
+ fputs_unlocked (sg->sg_adm[i], stdout);
+ ++i;
+ if (sg->sg_adm[i] != NULL)
+ putchar_unlocked (',');
+ }
+
+ putchar_unlocked (':');
+
+ i = 0;
+ while (sg->sg_mem[i] != NULL)
+ {
+ fputs_unlocked (sg->sg_mem[i], stdout);
+ ++i;
+ if (sg->sg_mem[i] != NULL)
+ putchar_unlocked (',');
+ }
+
+ putchar_unlocked ('\n');
+}
+
+static int
+gshadow_keys (int number, char *key[])
+{
+ int result = 0;
+ int i;
+
+ if (number == 0)
+ {
+ struct sgrp *sg;
+
+ setsgent ();
+ while ((sg = getsgent ()) != NULL)
+ print_gshadow (sg);
+ endsgent ();
+ return result;
+ }
+
+ for (i = 0; i < number; ++i)
+ {
+ struct sgrp *sg;
+
+ sg = getsgnam (key[i]);
+
+ if (sg == NULL)
+ result = 2;
+ else
+ print_gshadow (sg);
+ }
+
+ return result;
+}
+
/* This is for hosts */
static void
print_hosts (struct hostent *host)
@@ -448,8 +511,6 @@ print_networks (struct netent *net)
putchar_unlocked (' ');
fputs_unlocked (net->n_aliases[i], stdout);
++i;
- if (net->n_aliases[i] != NULL)
- putchar_unlocked (',');
}
putchar_unlocked ('\n');
}
@@ -473,7 +534,7 @@ networks_keys (int number, char *key[])
for (i = 0; i < number; ++i)
{
if (isdigit (key[i][0]))
- net = getnetbyaddr (inet_addr (key[i]), AF_UNIX);
+ net = getnetbyaddr (ntohl (inet_addr (key[i])), AF_UNSPEC);
else
net = getnetbyname (key[i]);
@@ -760,6 +821,7 @@ D(ahostsv6)
D(aliases)
D(ethers)
D(group)
+D(gshadow)
D(hosts)
D(netgroup)
D(networks)
@@ -841,6 +903,12 @@ more_help (int key, const char *text, void *input)
col += len + 1;
}
+ fputs ("\n\n", fp);
+
+ fputs (gettext ("\
+For bug reporting instructions, please see:\n\
+<http://www.gnu.org/software/libc/bugs.html>.\n"), fp);
+
if (fclose (fp) == 0)
return doc;
}
diff --git a/nss/nss_files/files-hosts.c b/nss/nss_files/files-hosts.c
index 7b69d47fcb..e5f5b48b72 100644
--- a/nss/nss_files/files-hosts.c
+++ b/nss/nss_files/files-hosts.c
@@ -1,5 +1,5 @@
/* Hosts file parser in nss_files module.
- Copyright (C) 1996-2001, 2003-2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1996-2001, 2003-2008, 2009 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
@@ -423,6 +423,16 @@ _nss_files_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat,
if (! keep_stream)
internal_endent ();
}
+ else if (status == NSS_STATUS_TRYAGAIN)
+ {
+ *errnop = errno;
+ *herrnop = TRY_AGAIN;
+ }
+ else
+ {
+ *errnop = errno;
+ *herrnop = NO_DATA;
+ }
__libc_lock_unlock (lock);
diff --git a/nss/nss_files/files-network.c b/nss/nss_files/files-network.c
index 9f4a3e0324..92aea75d9e 100644
--- a/nss/nss_files/files-network.c
+++ b/nss/nss_files/files-network.c
@@ -1,5 +1,5 @@
/* Networks file parser in nss_files module.
- Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1996-1998, 2000, 2001, 2009 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
@@ -81,7 +81,8 @@ DB_LOOKUP (netbyname, ,,
DB_LOOKUP (netbyaddr, ,,
{
- if (result->n_addrtype == type && result->n_net == net)
+ if ((type == AF_UNSPEC || result->n_addrtype == type)
+ && result->n_net == net)
/* Bingo! */
break;
}, uint32_t net, int type)
diff --git a/nss/nss_files/files-parse.c b/nss/nss_files/files-parse.c
index 3ba37c8941..3603762f8e 100644
--- a/nss/nss_files/files-parse.c
+++ b/nss/nss_files/files-parse.c
@@ -1,5 +1,5 @@
/* Common code for file-based database parsers in nss_files module.
- Copyright (C) 1996-2000, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1996-2000, 2003, 2004, 2009 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
@@ -103,6 +103,7 @@ parse_line (char *line, struct STRUCTURE *result, \
EXTRA_ARGS_DECL) \
{ \
ENTDATA_DECL (data) \
+ BUFFER_PREPARE \
char *p = strpbrk (line, EOLSET "\n"); \
if (p != NULL) \
*p = '\0'; \
@@ -127,10 +128,39 @@ nss_files_parse_hidden_def (parse_line)
} \
}
+# define STRING_LIST(variable, terminator_c) \
+ { \
+ char **list = parse_list (&line, buf_start, buf_end, terminator_c, \
+ errnop); \
+ if (list) \
+ variable = list; \
+ else \
+ return -1; /* -1 indicates we ran out of space. */ \
+ \
+ /* Determine the new end of the buffer. */ \
+ while (*list != NULL) \
+ ++list; \
+ buf_start = (char *) (list + 1); \
+ }
+
+/* Helper function. */
+static inline uint32_t
+__attribute__ ((always_inline))
+strtou32 (const char *nptr, char **endptr, int base)
+{
+ unsigned long int val = strtoul (nptr, endptr, base);
+
+ /* Match the 32-bit behavior on 64-bit platforms. */
+ if (sizeof (long int) > 4 && val > 0xffffffff)
+ val = 0xffffffff;
+
+ return val;
+}
+
# define INT_FIELD(variable, terminator_p, swallow, base, convert) \
{ \
char *endp; \
- variable = convert (strtoul (line, &endp, base)); \
+ variable = convert (strtou32 (line, &endp, base)); \
if (endp == line) \
return 0; \
else if (terminator_p (*endp)) \
@@ -148,7 +178,7 @@ nss_files_parse_hidden_def (parse_line)
if (*line == '\0') \
/* We expect some more input, so don't allow the string to end here. */ \
return 0; \
- variable = convert (strtoul (line, &endp, base)); \
+ variable = convert (strtou32 (line, &endp, base)); \
if (endp == line) \
variable = default; \
if (terminator_p (*endp)) \
@@ -164,12 +194,39 @@ nss_files_parse_hidden_def (parse_line)
# ifndef TRAILING_LIST_MEMBER
+# define BUFFER_PREPARE /* Nothing to do. */
# define TRAILING_LIST_PARSER /* Nothing to do. */
# else
-# define TRAILING_LIST_PARSER \
+# define BUFFER_PREPARE \
+ char *buf_start = NULL; \
+ char *buf_end = (char *) data + datalen; \
+ if (line >= data->linebuffer && line < buf_end) \
+ /* Find the end of the line buffer, we will use the space in \
+ DATA after it for storing the vector of pointers. */ \
+ buf_start = strchr (line, '\0') + 1; \
+ else \
+ /* LINE does not point within DATA->linebuffer, so that space is \
+ not being used for scratch space right now. We can use all of \
+ it for the pointer vector storage. */ \
+ buf_start = data->linebuffer; \
+
+# define TRAILING_LIST_PARSER \
{ \
- char **list = parse_list (line, data, datalen, errnop); \
+ if (buf_start == NULL) \
+ { \
+ if (line >= data->linebuffer && line < buf_end) \
+ /* Find the end of the line buffer, we will use the space in \
+ DATA after it for storing the vector of pointers. */ \
+ buf_start = strchr (line, '\0') + 1; \
+ else \
+ /* LINE does not point within DATA->linebuffer, so that space is \
+ not being used for scratch space right now. We can use all of \
+ it for the pointer vector storage. */ \
+ buf_start = data->linebuffer; \
+ } \
+ \
+ char **list = parse_list (&line, buf_start, buf_end, '\0', errnop); \
if (list) \
result->TRAILING_LIST_MEMBER = list; \
else \
@@ -178,19 +235,12 @@ nss_files_parse_hidden_def (parse_line)
static inline char **
__attribute ((always_inline))
-parse_list (char *line, struct parser_data *data, size_t datalen, int *errnop)
+parse_list (char **linep, char *eol, char *buf_end, int terminator_c,
+ int *errnop)
{
- char *eol, **list, **p;
-
- if (line >= data->linebuffer && line < (char *) data + datalen)
- /* Find the end of the line buffer, we will use the space in DATA after
- it for storing the vector of pointers. */
- eol = strchr (line, '\0') + 1;
- else
- /* LINE does not point within DATA->linebuffer, so that space is
- not being used for scratch space right now. We can use all of
- it for the pointer vector storage. */
- eol = data->linebuffer;
+ char *line = *linep;
+ char **list, **p;
+
/* Adjust the pointer so it is aligned for storing pointers. */
eol += __alignof__ (char *) - 1;
eol -= (eol - (char *) 0) % __alignof__ (char *);
@@ -200,25 +250,30 @@ parse_list (char *line, struct parser_data *data, size_t datalen, int *errnop)
p = list;
while (1)
{
- char *elt;
-
- if ((size_t) ((char *) &p[1] - (char *) data) > datalen)
+ if ((char *) (p + 2) > buf_end)
{
/* We cannot fit another pointer in the buffer. */
*errnop = ERANGE;
return NULL;
}
+
if (*line == '\0')
break;
+ if (*line == terminator_c)
+ {
+ ++line;
+ break;
+ }
/* Skip leading white space. This might not be portable but useful. */
while (isspace (*line))
++line;
- elt = line;
+ char *elt = line;
while (1)
{
- if (*line == '\0' || TRAILING_LIST_SEPARATOR_P (*line))
+ if (*line == '\0' || *line == terminator_c
+ || TRAILING_LIST_SEPARATOR_P (*line))
{
/* End of the next entry. */
if (line > elt)
@@ -227,13 +282,20 @@ parse_list (char *line, struct parser_data *data, size_t datalen, int *errnop)
/* Terminate string if necessary. */
if (*line != '\0')
- *line++ = '\0';
+ {
+ char endc = *line;
+ *line++ = '\0';
+ if (endc == terminator_c)
+ goto out;
+ }
break;
}
++line;
}
}
+ out:
*p = NULL;
+ *linep = line;
return list;
}
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h b/nss/nss_files/files-sgrp.c
index be4469c69d..4e12cd83d4 100644
--- a/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h
+++ b/nss/nss_files/files-sgrp.c
@@ -1,5 +1,5 @@
-/* Machine-specific POSIX semaphore type layouts. Alpha version.
- Copyright (C) 2003 Free Software Foundation, Inc.
+/* User file parser in nss_files module.
+ Copyright (C) 2009 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
@@ -17,18 +17,22 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SEMAPHORE_H
-# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
-#endif
-
-# define __SIZEOF_SEM_T 32
-
-/* Value returned if `sem_open' failed. */
-#define SEM_FAILED ((sem_t *) 0)
-
-
-typedef union
-{
- char __size[__SIZEOF_SEM_T];
- long int __align;
-} sem_t;
+#include <gshadow.h>
+
+#define STRUCTURE sgrp
+#define ENTNAME sgent
+#define DATABASE "gshadow"
+struct sgent_data {};
+
+/* Our parser function is already defined in sgetspent_r.c, so use that
+ to parse lines from the database file. */
+#define EXTERN_PARSER
+#include "files-parse.c"
+#include GENERIC
+
+DB_LOOKUP (sgnam, 1 + strlen (name), (".%s", name),
+ {
+ if (name[0] != '+' && name[0] != '-'
+ && ! strcmp (name, result->sg_namp))
+ break;
+ }, const char *name)
diff --git a/nss/nsswitch.c b/nss/nsswitch.c
index c0b661feb3..da94ca9838 100644
--- a/nss/nsswitch.c
+++ b/nss/nsswitch.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-1999, 2001-2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1996-1999, 2001-2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -300,8 +300,11 @@ __nss_lookup_function (service_user *ni, const char *fct_name)
found = __tsearch (&fct_name, &ni->known, &known_compare);
if (*found != &fct_name)
- /* The search found an existing structure in the tree. */
- result = ((known_function *) *found)->fct_ptr;
+ {
+ /* The search found an existing structure in the tree. */
+ result = ((known_function *) *found)->fct_ptr;
+ PTR_DEMANGLE (result);
+ }
else
{
/* This name was not known before. Now we have a node in the tree
@@ -424,6 +427,7 @@ __nss_lookup_function (service_user *ni, const char *fct_name)
/* Remember function pointer for later calls. Even if null, we
record it so a second try needn't search the library again. */
known->fct_ptr = result;
+ PTR_MANGLE (known->fct_ptr);
}
}
diff --git a/nss/nsswitch.conf b/nss/nsswitch.conf
index 63a78758d6..4d2a76376d 100644
--- a/nss/nsswitch.conf
+++ b/nss/nsswitch.conf
@@ -6,6 +6,7 @@
passwd: db files
group: db files
shadow: db files
+gshadow: files
hosts: files dns
networks: files dns
diff --git a/sysdeps/alpha/memusage.h b/nss/sgrp-lookup.c
index 3d84160338..be3933f26b 100644
--- a/sysdeps/alpha/memusage.h
+++ b/nss/sgrp-lookup.c
@@ -1,5 +1,6 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2009.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -16,6 +17,8 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#define GETSP() ({ register uintptr_t stack_ptr asm ("$30"); stack_ptr; })
+#define DATABASE_NAME gshadow
+#define ALTERNATE_NAME group
+#define DEFAULT_CONFIG "files"
-#include <sysdeps/generic/memusage.h>
+#include "XXX-lookup.c"
diff --git a/po/.cvsignore b/po/.gitignore
index 37752e3b33..37752e3b33 100644
--- a/po/.cvsignore
+++ b/po/.gitignore
diff --git a/po/Makefile b/po/Makefile
index 11f92adee5..4ac253e3d1 100644
--- a/po/Makefile
+++ b/po/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1996,1997,1998,1999,2001,2002,2006,2007
+# Copyright (C) 1996-1999,2001,2002,2006,2007,2009
# Free Software Foundation, Inc.
# This file is part of the GNU C Library.
@@ -64,6 +64,7 @@ libc.pot: header.pot libc.pot.files
$< > $@.new
cd ..; $(XGETTEXT) --keyword=_ --keyword=N_ \
--add-comments=TRANS --flag=error:3:c-format \
+ --flag=f_print:2:c-format \
--sort-by-file --omit-header -E -n -d - \
-f po/$(word 2,$^) >> po/$@.new
mv -f $@.new $@
diff --git a/po/bg.po b/po/bg.po
index a8bcbb3b8d..b7c79bd1cf 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -1,18 +1,15 @@
# translation of libc.bg.po to Bulgarian
-# Copyright (C) 2007 Free Software Foundation, Inc.
-# This file is distributed under the same license as the glibc package
+# Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the glibc package.
# Anton Zinoviev <zinoviev@debian.org>, 2007
+# Roumen Petrov <transl@roumenpetrov.info>, 2008, 2009
#
-# I have translated only the messages in sysdeps/gnu/errlist.c
-#
-# This file should be sent to robot@translationproject.org with the
-# following subject line: TP-Robot libc-2.6.1.bg.po
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.6.1\n"
-"POT-Creation-Date: 2007-08-04 11:37+0200\n"
-"PO-Revision-Date: 2007-08-14 10:01+0300\n"
-"Last-Translator: Anton Zinoviev <zinoviev@debian.org>\n"
+"Project-Id-Version: libc 2.10.1\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-06-23 01:27+0300\n"
+"Last-Translator: Roumen Petrov <transl@roumenpetrov.info>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -22,272 +19,285 @@ msgstr ""
#: argp/argp-help.c:228
#, c-format
msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
-msgstr ""
+msgstr "%.*s: изиÑква Ñе ÑтойноÑÑ‚ за параметърът ARGP_HELP_FMT"
#: argp/argp-help.c:238
#, c-format
msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
-msgstr ""
+msgstr "%.*s: ÐеизвеÑтен параметър на ARGP_HELP_FMT"
#: argp/argp-help.c:251
#, c-format
msgid "Garbage in ARGP_HELP_FMT: %s"
-msgstr ""
+msgstr "Боклук при ARGP_HELP_FMT: %s"
#: argp/argp-help.c:1215
msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
-msgstr ""
+msgstr "Задължителни или незадължителни аргументи за \"дълги\" опции Ñа Ñъщо задължителни или незадължителни за вÑички ÑъответÑтващи \"къÑи\" опции."
#: argp/argp-help.c:1601
msgid "Usage:"
-msgstr ""
+msgstr "Употреба:"
#: argp/argp-help.c:1605
msgid " or: "
-msgstr ""
+msgstr " или: "
#: argp/argp-help.c:1617
msgid " [OPTION...]"
-msgstr ""
+msgstr " [ОПЦИЯ...]"
#: argp/argp-help.c:1644
#, c-format
msgid "Try `%s --help' or `%s --usage' for more information.\n"
-msgstr ""
+msgstr "За повече информациÑ, опитайте \"%s --help\" или \"%s --usage\".\n"
#: argp/argp-help.c:1672
#, c-format
msgid "Report bugs to %s.\n"
-msgstr ""
+msgstr "Подавайте доклади за грешки на %s.\n"
#: argp/argp-parse.c:102
msgid "Give this help list"
-msgstr ""
+msgstr "Извеждане на този помощен ÑпиÑък"
#: argp/argp-parse.c:103
msgid "Give a short usage message"
-msgstr ""
+msgstr "Извеждане на лаконичен Ñъвет за използване"
#: argp/argp-parse.c:104
msgid "Set the program name"
-msgstr ""
+msgstr "УÑтановÑване на име на програмата"
#: argp/argp-parse.c:106
msgid "Hang for SECS seconds (default 3600)"
-msgstr ""
+msgstr "Задържане от SECS Ñекунди (по подразбиране 3600)"
#: argp/argp-parse.c:167
-#, fuzzy
msgid "Print program version"
-msgstr "Ðеправилна верÑÐ¸Ñ Ð½Ð° RPC-програма"
+msgstr "Извеждане на верÑиÑта на програмата"
#: argp/argp-parse.c:183
msgid "(PROGRAM ERROR) No version known!?"
-msgstr ""
+msgstr "(ПРОГРÐÐœÐРГРЕШКÐ) Ðе е извеÑтна верÑиÑта!?"
#: argp/argp-parse.c:623
-#, fuzzy, c-format
+#, c-format
msgid "%s: Too many arguments\n"
-msgstr "Твърде много потребители"
+msgstr "%s: Твърде много аргументи\n"
#: argp/argp-parse.c:766
msgid "(PROGRAM ERROR) Option should have been recognized!?"
-msgstr ""
+msgstr "(ПРОГРÐÐœÐРГРЕШКÐ) ОпциÑта Ñ‚Ñ€Ñбва да е разпознаваема!?"
#: assert/assert-perr.c:57
#, c-format
msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
-msgstr ""
+msgstr "%s%s%s:%u: %s%sÐеочаквана грешка: %s.\n"
#: assert/assert.c:57
#, c-format
msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
-msgstr ""
+msgstr "%s%s%s:%u: %s%sПроверката за иÑтина, %s, пропадна.\n"
-#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
msgid "NAME"
-msgstr ""
+msgstr "ИМЕ"
#: catgets/gencat.c:111
msgid "Create C header file NAME containing symbol definitions"
-msgstr ""
+msgstr "Създава ИМЕ - заглавен файл на C, Ñъдържащ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð½Ð° Ñимволи"
#: catgets/gencat.c:113
msgid "Do not use existing catalog, force new output file"
-msgstr ""
+msgstr "Създаване на нов изходен файл, без да Ñе използва ÑъщеÑтвуващ каталог"
#: catgets/gencat.c:114 nss/makedb.c:61
msgid "Write output to file NAME"
-msgstr ""
+msgstr "ЗапиÑване на изхода във файлът ИМЕ"
#: catgets/gencat.c:119
msgid ""
"Generate message catalog.\vIf INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
"is -, output is written to standard output.\n"
msgstr ""
+"Създава каталог ÑÑŠÑ ÑъобщениÑ.\n"
+"Ðко ВХОДЕÐ-ФÐЙЛ е -, данните Ñе четат от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"Ðко ИЗХОДЕÐ-ФÐЙЛ е -, резултатът Ñе запиÑва в ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
#: catgets/gencat.c:124
msgid ""
"-o OUTPUT-FILE [INPUT-FILE]...\n"
"[OUTPUT-FILE [INPUT-FILE]...]"
msgstr ""
+"-o ИЗХОДЕÐ-ФÐЙЛ [ВХОДЕÐ_ФÐЙЛ]...\n"
+"[ИЗХОДЕÐ-ФÐЙЛ [ВХОДЕÐ_ФÐЙЛ]...]"
-#: catgets/gencat.c:232 debug/pcprofiledump.c:199 iconv/iconv_prog.c:411
-#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
-#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
msgstr ""
+"За подаване на рапорт за грешка, молÑ, вижте:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:287
-#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:426
-#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
-#: posix/getconf.c:1012
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"Това е Ñвободен Ñофтуер. Вижте Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ за уÑловиÑта за копиране. ÐЯМÐ\n"
+"ГÐРÐÐЦИИ, включително без предполагаемите гаранции за полезноÑÑ‚ и пригодноÑÑ‚.\n"
-#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:292 elf/sprof.c:361
-#: iconv/iconv_prog.c:431 iconv/iconvconfig.c:400 locale/programs/locale.c:280
-#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
-#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
#, c-format
msgid "Written by %s.\n"
-msgstr ""
+msgstr "Ðвтори: %s.\n"
#: catgets/gencat.c:282
msgid "*standard input*"
-msgstr ""
+msgstr "*Ñтандартен изход*"
-#: catgets/gencat.c:288 iconv/iconv_charmap.c:158 iconv/iconv_prog.c:298
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
#: nss/makedb.c:170
#, c-format
msgid "cannot open input file `%s'"
-msgstr ""
+msgstr "не може да Ñе отвори Ð²Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» `%s'"
#: catgets/gencat.c:417 catgets/gencat.c:494
-#, fuzzy
msgid "illegal set number"
-msgstr "Ðеправилно позициониране"
+msgstr "незаконен номер на множеÑтво"
#: catgets/gencat.c:444
msgid "duplicate set definition"
-msgstr ""
+msgstr "повторно определение на множеÑтво"
#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
msgid "this is the first definition"
-msgstr ""
+msgstr "това е първото определение"
#: catgets/gencat.c:522
#, c-format
msgid "unknown set `%s'"
-msgstr ""
+msgstr "неизвеÑтно множеÑтво \"%s\""
#: catgets/gencat.c:563
-#, fuzzy
msgid "invalid quote character"
-msgstr "Ðеправилен обмен"
+msgstr "неправилен знак за кавичка"
#: catgets/gencat.c:576
#, c-format
msgid "unknown directive `%s': line ignored"
-msgstr ""
+msgstr "неизвеÑтна директива \"%s\": игнориране на реда"
#: catgets/gencat.c:621
msgid "duplicated message number"
-msgstr ""
+msgstr "повторен номер на Ñъобщение"
#: catgets/gencat.c:674
msgid "duplicated message identifier"
-msgstr ""
+msgstr "идентификатор на повторено Ñъобщение"
#: catgets/gencat.c:731
msgid "invalid character: message ignored"
-msgstr ""
+msgstr "неправилен знак: игнориране на Ñъобщението"
#: catgets/gencat.c:774
-#, fuzzy
msgid "invalid line"
-msgstr "Ðеправилен Ñлот"
+msgstr "неправилен ред"
#: catgets/gencat.c:828
msgid "malformed line ignored"
-msgstr ""
+msgstr "игнориране на деформиран ред"
#: catgets/gencat.c:992 catgets/gencat.c:1033 nss/makedb.c:183
#, c-format
msgid "cannot open output file `%s'"
-msgstr ""
+msgstr "не може да Ñе отвори файлът за изход \"%s\""
#: catgets/gencat.c:1195 locale/programs/linereader.c:560
-#, fuzzy
msgid "invalid escape sequence"
-msgstr "Ðеправилен обмен"
+msgstr "неправилна замеÑтваща(escape) поÑледователноÑÑ‚"
#: catgets/gencat.c:1217
-#, fuzzy
msgid "unterminated message"
-msgstr "Лошо Ñъобщение"
+msgstr "незавършено Ñъобщение"
#: catgets/gencat.c:1241
#, c-format
msgid "while opening old catalog file"
-msgstr ""
+msgstr "при отварÑне на предишен файл за каталог"
#: catgets/gencat.c:1332
-#, fuzzy, c-format
+#, c-format
msgid "conversion modules not available"
-msgstr "ÐедоÑтъпен протокол"
+msgstr "не е наличен модул за конвертиране"
#: catgets/gencat.c:1358
#, c-format
msgid "cannot determine escape character"
-msgstr ""
+msgstr "не може да Ñе определи знака за замеÑтване(escape)"
-#: debug/pcprofiledump.c:52
+#: debug/pcprofiledump.c:53
msgid "Don't buffer output"
-msgstr ""
+msgstr "Без буфериране на изходът"
-#: debug/pcprofiledump.c:57
+#: debug/pcprofiledump.c:58
msgid "Dump information generated by PC profiling."
-msgstr ""
+msgstr "РазÑтоварване на информациÑта Ñъбрана при диагноÑтика на компютърът."
-#: debug/pcprofiledump.c:60
+#: debug/pcprofiledump.c:61
msgid "[FILE]"
-msgstr ""
+msgstr "[ФÐЙЛ]"
-#: debug/pcprofiledump.c:100
+#: debug/pcprofiledump.c:108
#, c-format
msgid "cannot open input file"
-msgstr ""
+msgstr "не може да Ñе отвори входниÑÑ‚ файл"
-#: debug/pcprofiledump.c:106
+#: debug/pcprofiledump.c:115
#, c-format
msgid "cannot read header"
-msgstr ""
+msgstr "не може да Ñе прочете заглавието"
-#: debug/pcprofiledump.c:170
+#: debug/pcprofiledump.c:179
#, c-format
msgid "invalid pointer size"
-msgstr ""
+msgstr "неправилен размер на указател"
#: debug/xtrace.sh:27 debug/xtrace.sh:45
msgid "Usage: xtrace [OPTION]... PROGRAM [PROGRAMOPTION]...\\n"
-msgstr ""
+msgstr "Употреба: xtrace [ОПЦИЯ]... ПРОГРÐМР[ОПЦИИ_ÐÐ_ПРОГРÐÐœÐТÐ]...\\n"
#: debug/xtrace.sh:33
msgid "Try \\`xtrace --help' for more information.\\n"
-msgstr ""
+msgstr "За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð¿Ð¸Ñ‚Ð°Ð¹Ñ‚Ðµ \"xtrace --help\".\\n"
#: debug/xtrace.sh:39
msgid "xtrace: option \\`$1' requires an argument.\\n"
-msgstr ""
+msgstr "xtrace: изиÑква Ñе аргумент за опциÑта \\\"$1\".\\n"
#: debug/xtrace.sh:46
msgid ""
@@ -302,612 +312,602 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
+"ПроÑледÑва изпълнението на програма, като извежда текущо изпълнената функциÑ.\n"
+"\n"
+" --data=ФÐЙЛ Да не Ñе изпълнÑва програмата, а Ñамо да Ñе изведат\n"
+" данните от ФÐЙЛ.\n"
+"\n"
+" -?,--help Извеждане на тази помощ и изход\n"
+" --usage Извеждане на лаконичен Ñъвет за използване\n"
+" -V,--version Извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° верÑиÑта и изход\n"
+"\n"
+"Задължителни аргументи за \"дълги\" опции Ñа Ñъщо задължителни за вÑички ÑъответÑтващи \"къÑи\" опции.\n"
+"\n"
-#: debug/xtrace.sh:125
+#: debug/xtrace.sh:127
msgid "xtrace: unrecognized option \\`$1'\\n"
-msgstr ""
+msgstr "xtrace: неразпозната Ð¾Ð¿Ñ†Ð¸Ñ \"$1\"\\n"
-#: debug/xtrace.sh:138
+#: debug/xtrace.sh:140
msgid "No program name given\\n"
-msgstr ""
+msgstr "Ðе е зададено име на програмата\\n"
-#: debug/xtrace.sh:146
+#: debug/xtrace.sh:148
#, sh-format
msgid "executable \\`$program' not found\\n"
-msgstr ""
+msgstr "изпълнимиÑÑ‚ файл \"$program\" не е намерен\\n"
-#: debug/xtrace.sh:150
+#: debug/xtrace.sh:152
#, sh-format
msgid "\\`$program' is no executable\\n"
-msgstr ""
+msgstr "\"$program\" не е изпълним файл\\n"
#: dlfcn/dlinfo.c:64
msgid "RTLD_SELF used in code not dynamically loaded"
-msgstr ""
+msgstr "RTLD_SELF, използван в кода, не Ñе зарежда динамично"
#: dlfcn/dlinfo.c:73
msgid "unsupported dlinfo request"
-msgstr ""
+msgstr "неподдържана dlinfo заÑвка"
#: dlfcn/dlmopen.c:64
-#, fuzzy
msgid "invalid namespace"
-msgstr "Ðеправилен аргумент"
+msgstr "неправилно проÑтранÑтво от имена"
#: dlfcn/dlmopen.c:69
-#, fuzzy
msgid "invalid mode"
-msgstr "Ðеправилен Ñлот"
+msgstr "неправилен начин"
-#: dlfcn/dlopen.c:64
-#, fuzzy
+#: dlfcn/dlopen.c:65
msgid "invalid mode parameter"
-msgstr "Ðеправилен аргумент"
+msgstr "неправилен параметър за начин"
-#: elf/cache.c:68
+#: elf/cache.c:69
msgid "unknown"
-msgstr ""
+msgstr "неизвеÑтен"
-#: elf/cache.c:111
+#: elf/cache.c:112
msgid "Unknown OS"
-msgstr ""
+msgstr "ÐеизвеÑтна ОС"
-#: elf/cache.c:116
+#: elf/cache.c:117
#, c-format
msgid ", OS ABI: %s %d.%d.%d"
-msgstr ""
+msgstr ", ОС ДПИ(двоичен програмен интерфейÑ): %s %d.%d.%d"
-#: elf/cache.c:142 elf/ldconfig.c:1236
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
msgid "Can't open cache file %s\n"
-msgstr ""
+msgstr "Ðе може да Ñе отвори файлът за кеш %s\n"
-#: elf/cache.c:154
+#: elf/cache.c:148
#, c-format
msgid "mmap of cache file failed.\n"
-msgstr ""
+msgstr "пропадна изображението в паметта(mmap) на файлът за кеш.\n"
-#: elf/cache.c:158 elf/cache.c:168
+#: elf/cache.c:152 elf/cache.c:166
#, c-format
msgid "File is not a cache file.\n"
-msgstr ""
+msgstr "Файлът не е файл за кеш.\n"
-#: elf/cache.c:201 elf/cache.c:211
+#: elf/cache.c:199 elf/cache.c:209
#, c-format
msgid "%d libs found in cache `%s'\n"
-msgstr ""
-
-#: elf/cache.c:410
-#, c-format
-msgid "Can't remove old temporary cache file %s"
-msgstr ""
+msgstr "%d библиотеки за налични в кешът \"%s\"\n"
-#: elf/cache.c:417
+#: elf/cache.c:403
#, c-format
msgid "Can't create temporary cache file %s"
-msgstr ""
+msgstr "Ðе може да Ñе Ñъздаде временен файл за кеш %s"
-#: elf/cache.c:425 elf/cache.c:435 elf/cache.c:439 elf/cache.c:443
+#: elf/cache.c:411 elf/cache.c:421 elf/cache.c:425 elf/cache.c:430
#, c-format
msgid "Writing of cache data failed"
-msgstr ""
+msgstr "Пропадна запиÑването на данните за кеш"
-#: elf/cache.c:450
+#: elf/cache.c:435
#, c-format
msgid "Changing access rights of %s to %#o failed"
-msgstr ""
+msgstr "Пропадна ÑмÑната па правата за доÑтъп от %s към %#o"
-#: elf/cache.c:455
+#: elf/cache.c:440
#, c-format
msgid "Renaming of %s to %s failed"
-msgstr ""
+msgstr "Пропадна преименуването от %s към %s"
#: elf/dl-close.c:378 elf/dl-open.c:460
msgid "cannot create scope list"
-msgstr ""
+msgstr "не може да Ñе Ñъздаде ÑпиÑък на обхватът"
-#: elf/dl-close.c:724
+#: elf/dl-close.c:725
msgid "shared object not open"
-msgstr ""
+msgstr "не е отворен ÑподелениÑÑ‚ обект"
-#: elf/dl-deps.c:112
+#: elf/dl-deps.c:114
msgid "DST not allowed in SUID/SGID programs"
-msgstr ""
+msgstr "не е разрешено DST(dynamic string token) за SUID/SGID програми"
-#: elf/dl-deps.c:125 elf/dl-open.c:282
+#: elf/dl-deps.c:127 elf/dl-open.c:282
msgid "empty dynamic string token substitution"
-msgstr ""
+msgstr "празен DST(dynamic string token) за замеÑтване"
-#: elf/dl-deps.c:131
+#: elf/dl-deps.c:133
#, c-format
msgid "cannot load auxiliary `%s' because of empty dynamic string token substitution\n"
-msgstr ""
+msgstr "не може да Ñе Ñвърже \"%s\", като допълнение, поради празен DST(dynamic string token) за замеÑтване\n"
-#: elf/dl-deps.c:472
-#, fuzzy
+#: elf/dl-deps.c:474
msgid "cannot allocate dependency list"
-msgstr "Ðе може да Ñе задели памет"
+msgstr "не може да Ñе задели памет за ÑпиÑък ÑÑŠÑ Ð·Ð°Ð²Ð¸ÑимоÑти"
-#: elf/dl-deps.c:505 elf/dl-deps.c:560
-#, fuzzy
+#: elf/dl-deps.c:510 elf/dl-deps.c:565
msgid "cannot allocate symbol search list"
-msgstr "Ðе може да Ñе задели памет"
+msgstr "не може да Ñе задели памет за ÑпиÑък ÑÑŠÑ Ñимволи за Ñ‚ÑŠÑ€Ñене"
-#: elf/dl-deps.c:545
+#: elf/dl-deps.c:550
msgid "Filters not supported with LD_TRACE_PRELINKING"
-msgstr ""
+msgstr "Ðе Ñе поддържат филтри при LD_TRACE_PRELINKING"
#: elf/dl-error.c:77
msgid "DYNAMIC LINKER BUG!!!"
-msgstr ""
+msgstr "ДЕФЕКТ Ð’ ПРОГРÐÐœÐТРЗРДИÐÐМИЧÐО СВЪРЗВÐÐЕ!!!"
#: elf/dl-error.c:124
-#, fuzzy
msgid "error while loading shared libraries"
-msgstr "Опитва Ñе Ñвързване в твърде много Ñподелени библиотеки"
+msgstr "грешка при Ñвързване на Ñподелени библиотеки"
#: elf/dl-fptr.c:88
msgid "cannot map pages for fdesc table"
-msgstr ""
+msgstr "не може да Ñе изобразÑÑ‚ Ñтраници за таблицата fdesc(опиÑание на функциите)"
#: elf/dl-fptr.c:192
msgid "cannot map pages for fptr table"
-msgstr ""
+msgstr "не може да Ñе изобразÑÑ‚ Ñтраници за таблицата fptr"
#: elf/dl-fptr.c:221
msgid "internal error: symidx out of range of fptr table"
-msgstr ""
+msgstr "вътрешна грешка: symidx е извън границите на таблицата fptr"
#: elf/dl-load.c:372
-#, fuzzy
msgid "cannot allocate name record"
-msgstr "Ðе може да Ñе задели памет"
+msgstr "не може да Ñе задели памет за запиÑите Ñ Ð¸Ð¼ÐµÐ½Ð°"
#: elf/dl-load.c:474 elf/dl-load.c:582 elf/dl-load.c:667 elf/dl-load.c:780
msgid "cannot create cache for search path"
-msgstr ""
+msgstr "не може да Ñе Ñъздаде кеш на директориите за Ñ‚ÑŠÑ€Ñене"
#: elf/dl-load.c:565
msgid "cannot create RUNPATH/RPATH copy"
-msgstr ""
+msgstr "не може да Ñе Ñъздаде копие на RUNPATH/RPATH"
#: elf/dl-load.c:653
msgid "cannot create search path array"
-msgstr ""
+msgstr "не може да Ñе Ñъздаде маÑив на директориите за Ñ‚ÑŠÑ€Ñене"
#: elf/dl-load.c:864
-#, fuzzy
msgid "cannot stat shared object"
-msgstr "Ðе може да Ñе изпълнÑва директно Ñподелена библиотека"
+msgstr "не може да Ñе определÑÑ‚ атрибутите на Ñподелен обект"
#: elf/dl-load.c:934
msgid "cannot open zero fill device"
-msgstr ""
+msgstr "не може да Ñе отвори уÑтройÑтвото за запълване Ñ Ð½ÑƒÐ»Ð¸(/dev/zero)"
-#: elf/dl-load.c:979 elf/dl-load.c:2224
+#: elf/dl-load.c:979 elf/dl-load.c:2215
msgid "cannot create shared object descriptor"
-msgstr ""
+msgstr "не може да Ñе Ñъздаде опиÑание за Ñподелен обект"
-#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
msgid "cannot read file data"
-msgstr ""
+msgstr "не може да Ñе прочетат данни от файлът"
#: elf/dl-load.c:1042
msgid "ELF load command alignment not page-aligned"
-msgstr ""
+msgstr "подравнÑването, в командата за зареждане на ELF, не е подравнено на Ñтраници"
#: elf/dl-load.c:1049
msgid "ELF load command address/offset not properly aligned"
-msgstr ""
+msgstr "адреÑÑŠÑ‚/отмеÑтването, в командата за зареждане на ELF, не е подравнен правилно"
#: elf/dl-load.c:1132
msgid "cannot allocate TLS data structures for initial thread"
-msgstr ""
+msgstr "за първоначалната нишка, не може да Ñе заделÑÑ‚ Ñтруктурите за TLS данни"
#: elf/dl-load.c:1155
msgid "cannot handle TLS data"
-msgstr ""
+msgstr "не Ñе поддържат TLS данни"
#: elf/dl-load.c:1174
msgid "object file has no loadable segments"
-msgstr ""
+msgstr "обектниÑÑ‚ файл е без дÑлове за Ñвързване"
#: elf/dl-load.c:1210
msgid "failed to map segment from shared object"
-msgstr ""
+msgstr "пропадна изображението на дÑл от ÑÐ¿Ð¾Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚"
#: elf/dl-load.c:1236
msgid "cannot dynamically load executable"
-msgstr ""
+msgstr "изпълнимиÑÑ‚ файл не може да Ñе Ñвърже динамично"
#: elf/dl-load.c:1298
msgid "cannot change memory protections"
-msgstr ""
+msgstr "не може да Ñе промени защитата на паметта"
#: elf/dl-load.c:1317
msgid "cannot map zero-fill pages"
-msgstr ""
+msgstr "не може да Ñе изобразÑÑ‚ Ñтраници запълнени Ñ Ð½ÑƒÐ»Ð¸"
#: elf/dl-load.c:1331
msgid "object file has no dynamic section"
-msgstr ""
+msgstr "обектниÑÑ‚ файл е без ÑÐµÐºÑ†Ð¸Ñ Ð·Ð° динамично Ñвързване"
#: elf/dl-load.c:1354
msgid "shared object cannot be dlopen()ed"
-msgstr ""
+msgstr "не е възможно dlopen() за ÑподелениÑÑ‚ обект"
#: elf/dl-load.c:1367
-#, fuzzy
msgid "cannot allocate memory for program header"
-msgstr "Ðе може да Ñе задели памет"
+msgstr "не може да Ñе задели памет за заглавието на програмата"
#: elf/dl-load.c:1384 elf/dl-open.c:218
-#, fuzzy
msgid "invalid caller"
-msgstr "Ðеправилен обмен"
+msgstr "неправилен извикващ"
#: elf/dl-load.c:1423
msgid "cannot enable executable stack as shared object requires"
-msgstr ""
+msgstr "Ñтекът не може да Ñе разреши за изпълнение, както е поиÑкано от ÑÐ¿Ð¾Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚"
#: elf/dl-load.c:1436
-#, fuzzy
msgid "cannot close file descriptor"
-msgstr "Ðеправилен файлов деÑкриптор"
+msgstr "не може да Ñе затвори опиÑанието на файлът"
-#: elf/dl-load.c:1478
-msgid "cannot create searchlist"
-msgstr ""
-
-#: elf/dl-load.c:1656
-#, fuzzy
+#: elf/dl-load.c:1647
msgid "file too short"
-msgstr "Твърде голÑм файл"
+msgstr "файлът е твърде къÑ"
-#: elf/dl-load.c:1685
+#: elf/dl-load.c:1676
msgid "invalid ELF header"
-msgstr ""
+msgstr "неправилен ELF заглавен блок"
-#: elf/dl-load.c:1697
+#: elf/dl-load.c:1688
msgid "ELF file data encoding not big-endian"
-msgstr ""
+msgstr "данните от ELF файлът не Ñа кодирани ÑÑŠÑ Ñтарши байт първи(big-endian)"
-#: elf/dl-load.c:1699
+#: elf/dl-load.c:1690
msgid "ELF file data encoding not little-endian"
-msgstr ""
+msgstr "данните от ELF файлът не Ñа кодирани Ñ Ð¼Ð»Ð°Ð´ÑˆÐ¸ байт първи(little-endian)"
-#: elf/dl-load.c:1703
+#: elf/dl-load.c:1694
msgid "ELF file version ident does not match current one"
-msgstr ""
+msgstr "идентификаторът на верÑÐ¸Ñ Ð¾Ñ‚ ELF файлът не ÑъответÑтва на текущата"
-#: elf/dl-load.c:1707
+#: elf/dl-load.c:1698
msgid "ELF file OS ABI invalid"
-msgstr ""
+msgstr "ELF файлът е Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÐµÐ½ номер на ДПИ(ABI-двоичен програмен интерфейÑ) за ОС "
-#: elf/dl-load.c:1709
+#: elf/dl-load.c:1700
msgid "ELF file ABI version invalid"
-msgstr ""
+msgstr "ELF файлът е Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»Ð½Ð° верÑÐ¸Ñ Ð·Ð° ДПИ(двоичен програмен интерфейÑ)"
-#: elf/dl-load.c:1712
+#: elf/dl-load.c:1703
msgid "internal error"
-msgstr ""
+msgstr "вътрешна грешка"
-#: elf/dl-load.c:1719
+#: elf/dl-load.c:1710
msgid "ELF file version does not match current one"
-msgstr ""
+msgstr "верÑиÑта, на ELF файлът, не ÑъответÑтва на текущата"
-#: elf/dl-load.c:1727
+#: elf/dl-load.c:1718
msgid "only ET_DYN and ET_EXEC can be loaded"
-msgstr ""
+msgstr "Ñамо ET_DYN и ET_EXEC могат да Ñе Ñвържат"
-#: elf/dl-load.c:1733
+#: elf/dl-load.c:1724
msgid "ELF file's phentsize not the expected size"
-msgstr ""
+msgstr "неочакван размер на елемент(phentsize) в заглавието на ELF файл"
-#: elf/dl-load.c:2240
+#: elf/dl-load.c:2231
msgid "wrong ELF class: ELFCLASS64"
-msgstr ""
+msgstr "неправилен ELF клаÑ: ELFCLASS64"
-#: elf/dl-load.c:2241
+#: elf/dl-load.c:2232
msgid "wrong ELF class: ELFCLASS32"
-msgstr ""
+msgstr "неправилен ELF клаÑ: ELFCLASS32"
-#: elf/dl-load.c:2244
+#: elf/dl-load.c:2235
msgid "cannot open shared object file"
-msgstr ""
+msgstr "не може да Ñе отвори файлът ÑÑŠÑ ÑÐ¿Ð¾Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚"
-#: elf/dl-lookup.c:261
-#, fuzzy
+#: elf/dl-lookup.c:356
msgid "relocation error"
-msgstr "Грешка при удоÑтоверÑване (authentication)"
+msgstr "грешка при премеÑтване"
-#: elf/dl-lookup.c:289
+#: elf/dl-lookup.c:384
msgid "symbol lookup error"
-msgstr ""
+msgstr "грешка при Ñ‚ÑŠÑ€Ñене на Ñимвол"
#: elf/dl-open.c:114
msgid "cannot extend global scope"
-msgstr ""
+msgstr "не може да Ñе увеличи общата облаÑÑ‚"
#: elf/dl-open.c:512
msgid "TLS generation counter wrapped! Please report this."
-msgstr ""
+msgstr "ПревъртÑн броÑч за пораждане на TLS! ÐœÐ¾Ð»Ñ Ñ€Ð°Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð¹Ñ‚Ðµ го."
#: elf/dl-open.c:549
msgid "invalid mode for dlopen()"
-msgstr ""
+msgstr "неправилен режим за dlopen()"
#: elf/dl-open.c:566
msgid "no more namespaces available for dlmopen()"
-msgstr ""
+msgstr "не Ñа налични повече именувани проÑтранÑтва за dlmopen()"
#: elf/dl-open.c:579
msgid "invalid target namespace in dlmopen()"
-msgstr ""
+msgstr "неправилно именувано целево проÑтранÑтво в dlmopen()"
-#: elf/dl-reloc.c:54
-#, fuzzy
+#: elf/dl-reloc.c:121
msgid "cannot allocate memory in static TLS block"
-msgstr "Ðе може да Ñе задели памет"
+msgstr "не може да Ñе задели памет в Ñтатичен TSL блок"
-#: elf/dl-reloc.c:196
+#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
-msgstr ""
+msgstr "дÑлът не може да Ñе маркира като запиÑваем за \"премеÑтваем код\""
#: elf/dl-reloc.c:277
#, c-format
msgid "%s: no PLTREL found in object %s\n"
-msgstr ""
+msgstr "%s: не е намерен PLTREL за обекта %s\n"
#: elf/dl-reloc.c:288
#, c-format
msgid "%s: out of memory to store relocation results for %s\n"
-msgstr ""
+msgstr "%s: недоÑтиг на памет за ÑъхранÑване на резултата за \"премеÑтваем код\" на %s\n"
#: elf/dl-reloc.c:304
msgid "cannot restore segment prot after reloc"
-msgstr ""
+msgstr "не може да Ñе възÑтанови защитата на дÑла Ñлед премеÑтване"
#: elf/dl-reloc.c:329
msgid "cannot apply additional memory protection after relocation"
-msgstr ""
+msgstr "Ñлед премеÑтването не може да Ñе поÑтави допълнителна защита на паметта"
-#: elf/dl-sym.c:161
+#: elf/dl-sym.c:162
msgid "RTLD_NEXT used in code not dynamically loaded"
-msgstr ""
+msgstr "RTLD_NEXT е използван в код, който не е за динамично Ñвързване"
-#: elf/dl-sysdep.c:474 elf/dl-sysdep.c:486
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
msgid "cannot create capability list"
-msgstr ""
+msgstr "не може да Ñе Ñъздаде ÑпиÑък за възможноÑти"
-#: elf/dl-tls.c:825
+#: elf/dl-tls.c:864
msgid "cannot create TLS data structures"
-msgstr ""
+msgstr "не може да Ñе Ñъздадат Ñтруктури за TLS данни"
#: elf/dl-version.c:303
msgid "cannot allocate version reference table"
-msgstr ""
+msgstr "не може да Ñе Ñъздаде таблица Ñ Ð¿Ñ€ÐµÐ¿Ñ€Ð°Ñ‚ÐºÐ¸ за верÑиите"
-#: elf/ldconfig.c:135
+#: elf/ldconfig.c:141
msgid "Print cache"
-msgstr ""
+msgstr "Извеждане на кешът"
-#: elf/ldconfig.c:136
+#: elf/ldconfig.c:142
msgid "Generate verbose messages"
-msgstr ""
+msgstr "Извеждане на допълнителна информациÑ"
-#: elf/ldconfig.c:137
+#: elf/ldconfig.c:143
msgid "Don't build cache"
-msgstr ""
+msgstr "Да не Ñе Ñъздава кеш"
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:144
msgid "Don't generate links"
-msgstr ""
+msgstr "Да не Ñе Ñъздават връзки"
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:145
msgid "Change to and use ROOT as root directory"
-msgstr ""
+msgstr "ПремеÑтване в и използване на ГЛÐВЕРкато \"коренова\" директориÑ"
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:145
msgid "ROOT"
-msgstr ""
+msgstr "ГЛÐВЕÐ"
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:146
msgid "CACHE"
-msgstr ""
+msgstr "КЕШ"
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:146
msgid "Use CACHE as cache file"
-msgstr ""
+msgstr "Използване на КЕШ като файл за кеш"
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:147
msgid "CONF"
-msgstr ""
+msgstr "КОÐФ"
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:147
msgid "Use CONF as configuration file"
-msgstr ""
+msgstr "Използване на КОÐФ за конфигурационен файл"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:148
msgid "Only process directories specified on the command line. Don't build cache."
-msgstr ""
+msgstr "Да Ñе обработÑÑ‚ Ñамо директориите зададени от ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´. Да не Ñе Ñъздава кеш."
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:149
msgid "Manually link individual libraries."
-msgstr ""
+msgstr "Ръчно ще Ñе Ñъздадат връзки за отделните библиотеки."
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:150
msgid "FORMAT"
-msgstr ""
+msgstr "ФОРМÐТ"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:150
msgid "Format to use: new, old or compat (default)"
-msgstr ""
+msgstr "Използване на формат: new, old или compat(по подразбиране)"
+
+#: elf/ldconfig.c:151
+msgid "Ignore auxiliary cache file"
+msgstr "Игнориране на помощниÑÑ‚ кеш файл"
-#: elf/ldconfig.c:152
+#: elf/ldconfig.c:159
msgid "Configure Dynamic Linker Run Time Bindings."
-msgstr ""
+msgstr "Конфигуриране на Ñвръзките при изпълнение на програмата за динамично Ñвързване."
-#: elf/ldconfig.c:310
+#: elf/ldconfig.c:339
#, c-format
msgid "Path `%s' given more than once"
-msgstr ""
+msgstr "ПътÑÑ‚ \"%s\" е зададен повече от един веднъж"
-#: elf/ldconfig.c:350
+#: elf/ldconfig.c:379
#, c-format
msgid "%s is not a known library type"
-msgstr ""
+msgstr "%s е библиотека от непознат тип"
-#: elf/ldconfig.c:375
+#: elf/ldconfig.c:404
#, c-format
msgid "Can't stat %s"
-msgstr ""
+msgstr "Ðе може да Ñе определÑÑ‚ атрибутите на %s"
-#: elf/ldconfig.c:449
+#: elf/ldconfig.c:478
#, c-format
msgid "Can't stat %s\n"
-msgstr ""
+msgstr "Ðе може да Ñе определÑÑ‚ атрибутите на %s\n"
-#: elf/ldconfig.c:459
-#, fuzzy, c-format
+#: elf/ldconfig.c:488
+#, c-format
msgid "%s is not a symbolic link\n"
-msgstr "Твърде много нива от Ñимволни връзки"
+msgstr "%s не е Ñимволна връзка\n"
-#: elf/ldconfig.c:478
+#: elf/ldconfig.c:507
#, c-format
msgid "Can't unlink %s"
-msgstr ""
+msgstr "Ðе може да Ñе развърже(изтрие) %s"
-#: elf/ldconfig.c:484
+#: elf/ldconfig.c:513
#, c-format
msgid "Can't link %s to %s"
-msgstr ""
+msgstr "Ðе може да Ñе Ñъздаде Ñимволна връзка от %s към %s"
-#: elf/ldconfig.c:490
+#: elf/ldconfig.c:519
msgid " (changed)\n"
-msgstr ""
+msgstr " (променен)\n"
-#: elf/ldconfig.c:492
+#: elf/ldconfig.c:521
msgid " (SKIPPED)\n"
-msgstr ""
+msgstr " (ПРЕСКОЧЕÐ)\n"
-#: elf/ldconfig.c:547
+#: elf/ldconfig.c:576
#, c-format
msgid "Can't find %s"
-msgstr ""
+msgstr "%s не е открит"
-#: elf/ldconfig.c:563 elf/ldconfig.c:737 elf/ldconfig.c:784
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
msgid "Cannot lstat %s"
-msgstr ""
+msgstr "Ðе може да Ñе определÑÑ‚ атрибутите(lstat) на %s"
-#: elf/ldconfig.c:570
+#: elf/ldconfig.c:599
#, c-format
msgid "Ignored file %s since it is not a regular file."
-msgstr ""
+msgstr "Файлът %s е игнориран, защото не е обикновен."
-#: elf/ldconfig.c:578
+#: elf/ldconfig.c:608
#, c-format
msgid "No link created since soname could not be found for %s"
-msgstr ""
+msgstr "Ðе е Ñъздадена връзка, защото не е намерен soname за %s"
-#: elf/ldconfig.c:669
-#, fuzzy, c-format
+#: elf/ldconfig.c:691
+#, c-format
msgid "Can't open directory %s"
-msgstr "Ðе е директориÑ"
+msgstr "Ðе може да Ñе отвори Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ %s"
-#: elf/ldconfig.c:749
+#: elf/ldconfig.c:779
#, c-format
msgid "Cannot stat %s"
-msgstr ""
+msgstr "Ðе може да Ñе определÑÑ‚ атрибутите на %s"
-#: elf/ldconfig.c:806 elf/readlib.c:91
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
msgid "Input file %s not found.\n"
-msgstr ""
+msgstr "Ð’Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» %s не е намерен.\n"
-#: elf/ldconfig.c:857
+#: elf/ldconfig.c:908
#, c-format
msgid "libc5 library %s in wrong directory"
-msgstr ""
+msgstr "libc5 библиотека %s в неправилна директориÑ"
-#: elf/ldconfig.c:860
+#: elf/ldconfig.c:911
#, c-format
msgid "libc6 library %s in wrong directory"
-msgstr ""
+msgstr "libc6 библиотека %s в неправилна директориÑ"
-#: elf/ldconfig.c:863
+#: elf/ldconfig.c:914
#, c-format
msgid "libc4 library %s in wrong directory"
-msgstr ""
+msgstr "libc4 библиотека %s в неправилна директориÑ"
-#: elf/ldconfig.c:890
+#: elf/ldconfig.c:942
#, c-format
msgid "libraries %s and %s in directory %s have same soname but different type."
-msgstr ""
+msgstr "библиотеките %s и %s от Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ %s Ñа Ñ ÐµÐ´Ð½Ð°ÐºÐ²Ð¾ SONAME, но Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡ÐµÐ½ тип."
-#: elf/ldconfig.c:997
+#: elf/ldconfig.c:1051
#, c-format
msgid "Can't open configuration file %s"
-msgstr ""
+msgstr "Ðе може да Ñе отвори ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» %s"
-#: elf/ldconfig.c:1061
+#: elf/ldconfig.c:1115
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
-msgstr ""
+msgstr "%s:%u: неправилен ÑинтакÑÐ¸Ñ Ð¿Ñ€Ð¸ hwcap ред"
-#: elf/ldconfig.c:1067
+#: elf/ldconfig.c:1121
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
-msgstr ""
+msgstr "%s:%u: индекÑÑŠÑ‚ %lu на hwcap е повече от макÑимума %u"
-#: elf/ldconfig.c:1074 elf/ldconfig.c:1082
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
-msgstr ""
+msgstr "%s:%u: индекÑÑŠÑ‚ %lu на hwcap е вече определен като %s"
-#: elf/ldconfig.c:1085
+#: elf/ldconfig.c:1139
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
-msgstr ""
+msgstr "%s:%u: повторен hwcap %lu %s"
-#: elf/ldconfig.c:1107
+#: elf/ldconfig.c:1161
#, c-format
msgid "need absolute file name for configuration file when using -r"
-msgstr ""
+msgstr "изиÑква Ñе абÑолютно име на конфигурационен файл когато Ñе използва -r"
-#: elf/ldconfig.c:1114 locale/programs/xmalloc.c:70 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
msgid "memory exhausted"
-msgstr ""
+msgstr "паметта е изчерпана"
-#: elf/ldconfig.c:1144
-#, fuzzy, c-format
+#: elf/ldconfig.c:1198
+#, c-format
msgid "%s:%u: cannot read directory %s"
-msgstr "Ðе е директориÑ"
+msgstr "%s:%u: не може да Ñе чете директориÑта %s "
-#: elf/ldconfig.c:1189
+#: elf/ldconfig.c:1242
#, c-format
msgid "relative path `%s' used to build cache"
-msgstr ""
+msgstr "използван е отноÑителен път %s за Ñъздаване на кеш"
-#: elf/ldconfig.c:1215
+#: elf/ldconfig.c:1268
#, c-format
msgid "Can't chdir to /"
-msgstr ""
+msgstr "Ðе може да Ñе Ñмени директориÑта на /"
-#: elf/ldconfig.c:1257
-#, fuzzy, c-format
+#: elf/ldconfig.c:1310
+#, c-format
msgid "Can't open cache file directory %s\n"
-msgstr "ÐÑма такъв файл или директориÑ"
+msgstr "Ðе може да Ñе отвори директориÑта '%s' за кеш файлът\n"
#: elf/ldd.bash.in:43
msgid "Written by %s and %s.\n"
-msgstr ""
+msgstr "Ðвтори: %s и %s.\n"
#: elf/ldd.bash.in:48
msgid ""
@@ -918,354 +918,396 @@ msgid ""
" -r, --function-relocs process data and function relocations\n"
" -u, --unused print unused direct dependencies\n"
" -v, --verbose print all information\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
+"Употреба: ldd [ОПЦИЯ]... ФÐЙЛ...\n"
+" --help Извеждане на тази помощ и изход\n"
+" --version Извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° верÑиÑта и изход\n"
+" -d, --data-relocs Обработване на премеÑтваеми данни\n"
+" -r, --function-relocs Обработване на премеÑтваеми данни и функции\n"
+" -u, --unused Извеждане на неизползваните директни завиÑимоÑти\n"
+" -v, --verbose Извеждане на подробна информациÑ\n"
-#: elf/ldd.bash.in:80
+#: elf/ldd.bash.in:82
msgid "ldd: option \\`$1' is ambiguous"
-msgstr ""
+msgstr "ldd: опциÑта \\$1 е двуÑмиÑлена"
-#: elf/ldd.bash.in:87
+#: elf/ldd.bash.in:89
msgid "unrecognized option"
-msgstr ""
+msgstr "неразпозната опциÑ"
-#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
msgid "Try \\`ldd --help' for more information."
-msgstr ""
+msgstr "За повече информациÑ, опитайте \"ldd --help\"."
-#: elf/ldd.bash.in:125
+#: elf/ldd.bash.in:127
msgid "missing file arguments"
-msgstr ""
+msgstr "липÑва аргумент за файл"
#. TRANS No such file or directory. This is a ``file doesn't exist'' error
#. TRANS for ordinary files that are referenced in contexts where they are
#. TRANS expected to already exist.
-#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
msgstr "ÐÑма такъв файл или директориÑ"
-#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
msgid "not regular file"
-msgstr ""
+msgstr "не е обикновен файл"
-#: elf/ldd.bash.in:154
+#: elf/ldd.bash.in:156
msgid "warning: you do not have execution permission for"
-msgstr ""
+msgstr "предупреждение: вие нÑмата права за изпълнение на "
-#: elf/ldd.bash.in:183
+#: elf/ldd.bash.in:185
msgid "\tnot a dynamic executable"
-msgstr ""
+msgstr "\tизпълнимиÑÑ‚ файл не е Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡Ð½Ð¾ Ñвързване"
-#: elf/ldd.bash.in:191
+#: elf/ldd.bash.in:193
msgid "exited with unknown exit code"
-msgstr ""
+msgstr "изход Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтен код за излизане"
-#: elf/ldd.bash.in:196
+#: elf/ldd.bash.in:198
msgid "error: you do not have read permission for"
-msgstr ""
+msgstr "грешка: вие нÑмате права за четене на"
#: elf/readelflib.c:35
#, c-format
msgid "file %s is truncated\n"
-msgstr ""
+msgstr "файла %s е отрÑзан\n"
#: elf/readelflib.c:67
#, c-format
msgid "%s is a 32 bit ELF file.\n"
-msgstr ""
+msgstr "%s е 32-битов ELF файл.\n"
#: elf/readelflib.c:69
#, c-format
msgid "%s is a 64 bit ELF file.\n"
-msgstr ""
+msgstr "%s е 64-битов ELF файл.\n"
#: elf/readelflib.c:71
#, c-format
msgid "Unknown ELFCLASS in file %s.\n"
-msgstr ""
+msgstr "ÐеизвеÑтен ELFCLASS в файла %s.\n"
#: elf/readelflib.c:78
#, c-format
msgid "%s is not a shared object file (Type: %d).\n"
-msgstr ""
+msgstr "%s не е файл за Ñподелен обект (Тип: %d).\n"
#: elf/readelflib.c:109
#, c-format
msgid "more than one dynamic segment\n"
-msgstr ""
+msgstr "повече от един дÑл за динамично Ñвързване\n"
#: elf/readlib.c:97
#, c-format
msgid "Cannot fstat file %s.\n"
-msgstr ""
+msgstr "Ðе може да Ñе определÑÑ‚ атрибутите(fstat) на файлът %s.\n"
#: elf/readlib.c:108
#, c-format
msgid "File %s is empty, not checked."
-msgstr ""
+msgstr "Файлът %s е празен и не е проверен."
#: elf/readlib.c:114
#, c-format
msgid "File %s is too small, not checked."
-msgstr ""
+msgstr "Файлът %s е много ÐºÑŠÑ Ð¸ не е проверен."
#: elf/readlib.c:124
#, c-format
msgid "Cannot mmap file %s.\n"
-msgstr ""
+msgstr "Файлът %s не може да Ñе изобрази в паметта(mmap).\n"
#: elf/readlib.c:162
#, c-format
msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
+msgstr "%s не е ELF файл - започва Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»Ð½Ð¸ магичеÑки байтове.\n"
+
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
msgstr ""
+"употреба: sln източник цел|файл\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s: грешка при отварÑне: %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "ЛипÑва цел на ред %d\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ðµ може да е цел\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr "%s:не уÑÐ¿Ñ Ð¸Ð·Ñ‚Ñ€Ð¸Ð²Ð°Ð½ÐµÑ‚Ð¾ на ÑъщеÑтвуваща цел\n"
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s: неправилна цел: %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "Ðеправилна връзка от \"%s\" към \"%s\": %s\n"
#: elf/sprof.c:77
msgid "Output selection:"
-msgstr ""
+msgstr "Избор на типа за извеждане:"
#: elf/sprof.c:79
msgid "print list of count paths and their number of use"
-msgstr ""
+msgstr "извеждане на ÑпиÑък Ñ Ð¿Ñ€ÐµÐ±Ñ€Ð¾ÐµÐ½Ð¸Ñ‚Ðµ пътища и Ð±Ñ€Ð¾Ñ Ð½Ð° използването им"
#: elf/sprof.c:81
msgid "generate flat profile with counts and ticks"
-msgstr ""
+msgstr "Ñъздаване на пълна диагноÑтика Ñ Ð±Ñ€Ð¾Ñчи и отметки"
#: elf/sprof.c:82
msgid "generate call graph"
-msgstr ""
+msgstr "Ñъздаване на граф на извикваниÑта"
#: elf/sprof.c:89
-msgid ""
-"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
+msgid "Read and display shared object profiling data."
+msgstr "Прочита и показва диагноÑтични данни за Ñподелен обект."
#: elf/sprof.c:94
msgid "SHOBJ [PROFDATA]"
-msgstr ""
+msgstr "СПОД_ОБЕКТ [ДИÐГ_ДÐÐÐИ]"
-#: elf/sprof.c:400
+#: elf/sprof.c:420
#, c-format
msgid "failed to load shared object `%s'"
-msgstr ""
+msgstr "пропадна зареждането на ÑÐ¿Ð¾Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚ \"%s\""
-#: elf/sprof.c:409
+#: elf/sprof.c:429
#, c-format
msgid "cannot create internal descriptors"
-msgstr ""
+msgstr "не може да Ñе Ñъздадат вътрешни опиÑаниÑ"
-#: elf/sprof.c:528
+#: elf/sprof.c:548
#, c-format
msgid "Reopening shared object `%s' failed"
-msgstr ""
+msgstr "повторното отварÑнето на ÑÐ¿Ð¾Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚ \"%s\" не уÑпÑ"
-#: elf/sprof.c:535 elf/sprof.c:629
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
msgid "reading of section headers failed"
-msgstr ""
+msgstr "прочитането на заглавиÑта на Ñекциите не уÑпÑ"
-#: elf/sprof.c:543 elf/sprof.c:637
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
msgid "reading of section header string table failed"
-msgstr ""
+msgstr "прочитането на таблицата Ñ Ð½Ð¸Ð·Ð¾Ð²Ðµ от заглавието на ÑекциÑта не уÑпÑ"
-#: elf/sprof.c:569
+#: elf/sprof.c:589
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
-msgstr ""
+msgstr "*** Ðе може да Ñе прочете името на файла Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° теÑтване: %m\n"
-#: elf/sprof.c:589
+#: elf/sprof.c:609
#, c-format
msgid "cannot determine file name"
-msgstr ""
+msgstr "не може да Ñе определи името на файла"
-#: elf/sprof.c:622
+#: elf/sprof.c:642
#, c-format
msgid "reading of ELF header failed"
-msgstr ""
+msgstr "прочитането на ELF заглавието не уÑпÑ"
-#: elf/sprof.c:658
+#: elf/sprof.c:678
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
-msgstr ""
+msgstr "*** Файлът \"%s\" е изчиÑтен: невъзможен подробен анализ\n"
-#: elf/sprof.c:688
+#: elf/sprof.c:708
#, c-format
msgid "failed to load symbol data"
-msgstr ""
+msgstr "пропадна зареждането на данни за Ñимволите"
-#: elf/sprof.c:755
+#: elf/sprof.c:775
#, c-format
msgid "cannot load profiling data"
-msgstr ""
+msgstr "не може да Ñе заредÑÑ‚ диагноÑтичните данни"
-#: elf/sprof.c:764
+#: elf/sprof.c:784
#, c-format
msgid "while stat'ing profiling data file"
-msgstr ""
+msgstr "при определÑне атрибутите на файл Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтични данни"
-#: elf/sprof.c:772
+#: elf/sprof.c:792
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
-msgstr ""
+msgstr "файлът Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтични данни \"%s\" не ÑъответÑтва на ÑÐ¿Ð¾Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚ \"%s\""
-#: elf/sprof.c:783
+#: elf/sprof.c:803
#, c-format
msgid "failed to mmap the profiling data file"
-msgstr ""
+msgstr "ÐеуÑпех при изобразÑването в паметта на файл Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтични данни"
-#: elf/sprof.c:791
+#: elf/sprof.c:811
#, c-format
msgid "error while closing the profiling data file"
-msgstr ""
+msgstr "грешка при затварÑне на файл Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтични данни"
-#: elf/sprof.c:800 elf/sprof.c:870
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
msgid "cannot create internal descriptor"
-msgstr ""
+msgstr "не може да Ñе Ñъздаде вътрешно опиÑание"
-#: elf/sprof.c:846
+#: elf/sprof.c:866
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
-msgstr ""
+msgstr "\"%s\" не е подходÑщ файл Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтични данни за \"%s\""
-#: elf/sprof.c:1027 elf/sprof.c:1085
-#, fuzzy, c-format
+#: elf/sprof.c:1047 elf/sprof.c:1105
+#, c-format
msgid "cannot allocate symbol data"
-msgstr "Ðе може да Ñе задели памет"
+msgstr "не може да Ñе памет за данни за Ñимволи"
+
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "не може да Ñе отвори изходниÑÑ‚ файл"
-#: iconv/iconv_charmap.c:176 iconv/iconv_prog.c:316
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
-msgstr ""
+msgstr "грешка при затварÑне на входа \"%s\""
-#: iconv/iconv_charmap.c:450
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
-msgstr ""
+msgstr "незаконна входна поÑледователноÑÑ‚ на Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ %Zd"
-#: iconv/iconv_charmap.c:469 iconv/iconv_prog.c:526
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
#, c-format
msgid "incomplete character or shift sequence at end of buffer"
-msgstr ""
+msgstr "непълен знак или измеÑтваща поÑледователноÑÑ‚ в ÐºÑ€Ð°Ñ Ð½Ð° буфера"
-#: iconv/iconv_charmap.c:514 iconv/iconv_charmap.c:550 iconv/iconv_prog.c:569
-#: iconv/iconv_prog.c:605
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
#, c-format
msgid "error while reading the input"
-msgstr ""
+msgstr "грешка при прочитането на входа"
-#: iconv/iconv_charmap.c:532 iconv/iconv_prog.c:587
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
#, c-format
msgid "unable to allocate buffer for input"
-msgstr ""
+msgstr "не може да Ñе задели входен буфер"
#: iconv/iconv_prog.c:60
msgid "Input/Output format specification:"
-msgstr ""
+msgstr "УточнÑване на входно-Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚:"
#: iconv/iconv_prog.c:61
msgid "encoding of original text"
-msgstr ""
+msgstr "кодиране на Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚"
#: iconv/iconv_prog.c:62
msgid "encoding for output"
-msgstr ""
+msgstr "кодиране на изходните данни"
#: iconv/iconv_prog.c:63
msgid "Information:"
-msgstr ""
+msgstr "ИнформациÑ:"
#: iconv/iconv_prog.c:64
msgid "list all known coded character sets"
-msgstr ""
+msgstr "изброÑване на вÑички познати кодирани знакови множеÑтва"
#: iconv/iconv_prog.c:65 locale/programs/localedef.c:127
msgid "Output control:"
-msgstr ""
+msgstr "Контролиране на изхода:"
#: iconv/iconv_prog.c:66
msgid "omit invalid characters from output"
-msgstr ""
+msgstr "изпуÑкане на неправилни знаци при извеждане"
#: iconv/iconv_prog.c:67
msgid "output file"
-msgstr ""
+msgstr "изходен файл"
#: iconv/iconv_prog.c:68
msgid "suppress warnings"
-msgstr ""
+msgstr "подтиÑкане на предупреждениÑта"
#: iconv/iconv_prog.c:69
msgid "print progress information"
-msgstr ""
+msgstr "извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° ÑÑŠÑтоÑние на изпълнението"
#: iconv/iconv_prog.c:74
msgid "Convert encoding of given files from one encoding to another."
-msgstr ""
+msgstr "Преобразува кодирането на зададените файлове от едно в друго."
#: iconv/iconv_prog.c:78
msgid "[FILE...]"
-msgstr ""
+msgstr "[ФÐЙЛ...]"
-#: iconv/iconv_prog.c:200
-#, c-format
-msgid "cannot open output file"
-msgstr ""
-
-#: iconv/iconv_prog.c:242
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
-msgstr ""
+msgstr "не Ñе поддържа преобразуване от \"%s\" и към \"%s\""
-#: iconv/iconv_prog.c:247
-#, fuzzy, c-format
+#: iconv/iconv_prog.c:239
+#, c-format
msgid "conversion from `%s' is not supported"
-msgstr "Ðеподдържана операциÑ"
+msgstr "не Ñе поддържа преобразуване от \"%s\""
-#: iconv/iconv_prog.c:254
-#, fuzzy, c-format
+#: iconv/iconv_prog.c:246
+#, c-format
msgid "conversion to `%s' is not supported"
-msgstr "Ðеподдържана операциÑ"
+msgstr "не Ñе поддържа преобразуване към \"%s\""
-#: iconv/iconv_prog.c:258
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
-msgstr ""
+msgstr "не Ñе поддържа преобразуване от \"%s\" към \"%s\""
-#: iconv/iconv_prog.c:268
+#: iconv/iconv_prog.c:260
#, c-format
msgid "failed to start conversion processing"
-msgstr ""
+msgstr "не можа да Ñе Ñтартира процеÑа за преобразуване"
-#: iconv/iconv_prog.c:362
+#: iconv/iconv_prog.c:358
#, c-format
msgid "error while closing output file"
-msgstr ""
+msgstr "грешка при затварÑне на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»"
-#: iconv/iconv_prog.c:471 iconv/iconv_prog.c:497
+#: iconv/iconv_prog.c:456
#, c-format
msgid "conversion stopped due to problem in writing the output"
-msgstr ""
+msgstr "поради проблем при запиÑването на изхода, преобразуването е ÑпрÑно"
-#: iconv/iconv_prog.c:522
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
-msgstr ""
+msgstr "незаконна входна поÑледователноÑÑ‚ на Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ %ld"
-#: iconv/iconv_prog.c:530
+#: iconv/iconv_prog.c:541
#, c-format
msgid "internal error (illegal descriptor)"
-msgstr ""
+msgstr "вътрешна грешка(незаконен деÑкриптор)"
-#: iconv/iconv_prog.c:533
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
-msgstr ""
+msgstr "неизвеÑтна iconv() грешка %d"
-#: iconv/iconv_prog.c:779
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -1274,200 +1316,202 @@ msgid ""
"\n"
" "
msgstr ""
+"СледниÑÑ‚ лиÑÑ‚ Ñъдържа вÑички знакови множеÑтва Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ кодиране. Това\n"
+"не означава непременно, че вÑички ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ тези имена могат да Ñе\n"
+"използват за ОТ и КЪМ параметри на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´. Едно кодирано знаково\n"
+"множеÑтво може да Ñе изброи под нÑколко различни имена (пÑевдоними).\n"
+"\n"
+" "
#: iconv/iconvconfig.c:110
msgid "Create fastloading iconv module configuration file."
-msgstr ""
+msgstr "Създава конфигурационен файл за бързо зареждане на iconv модул."
#: iconv/iconvconfig.c:114
msgid "[DIR...]"
-msgstr ""
+msgstr "[ДИР...]"
#: iconv/iconvconfig.c:127
msgid "Prefix used for all file accesses"
-msgstr ""
+msgstr "ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½ при вÑички доÑтъпи до файл"
#: iconv/iconvconfig.c:128
msgid "Put output in FILE instead of installed location (--prefix does not apply to FILE)"
-msgstr ""
+msgstr "ПоÑтавÑне на изхода в FILE вмеÑто на инÑталираното меÑтоположението (--prefix не Ñе прилага за FILE)"
#: iconv/iconvconfig.c:132
msgid "Do not search standard directories, only those on the command line"
-msgstr ""
+msgstr "Да не Ñе Ñ‚ÑŠÑ€Ñи в Ñтандартните директории, а Ñамо в тези от ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´"
#: iconv/iconvconfig.c:301
#, c-format
msgid "Directory arguments required when using --nostdlib"
-msgstr ""
+msgstr "Ðужен е аргумент за директориÑ, когато Ñе използва --nostdlib"
#: iconv/iconvconfig.c:343 locale/programs/localedef.c:291
#, c-format
msgid "no output file produced because warnings were issued"
-msgstr ""
+msgstr "не е Ñъздаден изходен файл, като ÑледÑтвие от предупреждениÑта"
#: iconv/iconvconfig.c:429
#, c-format
msgid "while inserting in search tree"
-msgstr ""
+msgstr "при вмъкване е дървото за Ñ‚ÑŠÑ€Ñене"
#: iconv/iconvconfig.c:1238
#, c-format
msgid "cannot generate output file"
-msgstr ""
+msgstr "не може да Ñе генерира изходен файл"
#: inet/rcmd.c:157
-#, fuzzy
msgid "rcmd: Cannot allocate memory\n"
-msgstr "Ðе може да Ñе задели памет"
+msgstr "rcmd: Ðе може да Ñе задели памет\n"
#: inet/rcmd.c:172
msgid "rcmd: socket: All ports in use\n"
-msgstr ""
+msgstr "rcmd: socket: Ð’Ñички портове Ñе използват\n"
#: inet/rcmd.c:200
#, c-format
msgid "connect to address %s: "
-msgstr ""
+msgstr "Ñвързване към Ð°Ð´Ñ€ÐµÑ %s: "
#: inet/rcmd.c:213
#, c-format
msgid "Trying %s...\n"
-msgstr ""
+msgstr "Опитва Ñе %s...\n"
#: inet/rcmd.c:249
#, c-format
msgid "rcmd: write (setting up stderr): %m\n"
-msgstr ""
+msgstr "rcmd: write (инициализиране на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´): %m\n"
#: inet/rcmd.c:265
#, c-format
msgid "rcmd: poll (setting up stderr): %m\n"
-msgstr ""
+msgstr "rcmd: poll (инициализиране на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´): %m\n"
#: inet/rcmd.c:268
msgid "poll: protocol failure in circuit setup\n"
-msgstr ""
+msgstr "poll: неуÑпех на протокола, при инициализиране на веригата\n"
#: inet/rcmd.c:301
msgid "socket: protocol failure in circuit setup\n"
-msgstr ""
+msgstr "socket: неуÑпех на протокола, при инициализиране на веригата\n"
#: inet/rcmd.c:325
#, c-format
msgid "rcmd: %s: short read"
-msgstr ""
+msgstr "rcmd: %s: недоÑтиг при четене"
#: inet/rcmd.c:481
msgid "lstat failed"
-msgstr ""
+msgstr "lstat пропадна"
#: inet/rcmd.c:488
msgid "cannot open"
-msgstr ""
+msgstr "не може да Ñе отвори"
#: inet/rcmd.c:490
msgid "fstat failed"
-msgstr ""
+msgstr "fstat пропадна"
#: inet/rcmd.c:492
msgid "bad owner"
-msgstr ""
+msgstr "неправилен ÑобÑтвеник"
#: inet/rcmd.c:494
msgid "writeable by other than owner"
-msgstr ""
+msgstr "оÑвен ÑобÑтвеника, може да Ñе запиÑва и от други"
#: inet/rcmd.c:496
msgid "hard linked somewhere"
-msgstr ""
+msgstr "твърдо Ñвързан нанÑкъде"
#: inet/ruserpass.c:170 inet/ruserpass.c:193
-#, fuzzy
msgid "out of memory"
-msgstr "Ðе може да Ñе задели памет"
+msgstr "недоÑтиг на памет"
#: inet/ruserpass.c:184
msgid "Error: .netrc file is readable by others."
-msgstr ""
+msgstr "Грешка: файлът .netrc може да Ñе прочете от други."
#: inet/ruserpass.c:185
msgid "Remove password or make file unreadable by others."
-msgstr ""
+msgstr "Премахнете паролата или направете файлът не четим за другите."
#: inet/ruserpass.c:277
#, c-format
msgid "Unknown .netrc keyword %s"
-msgstr ""
+msgstr "ÐеизвеÑтен .netrc-ключ %s"
#: libidn/nfkc.c:464
-#, fuzzy
msgid "Character out of range for UTF-8"
-msgstr "Ðомер на канал извън диапазона"
+msgstr "Знакът е извън диапазона за UTF-8"
-#: locale/programs/charmap-dir.c:58
+#: locale/programs/charmap-dir.c:59
#, c-format
msgid "cannot read character map directory `%s'"
-msgstr ""
+msgstr "не може да Ñе прочете директориÑта за изображението на знаците \"%s\""
#: locale/programs/charmap.c:138
#, c-format
msgid "character map file `%s' not found"
-msgstr ""
+msgstr "не е намерен файлът за изображението на знаците \"%s\""
#: locale/programs/charmap.c:195
#, c-format
msgid "default character map file `%s' not found"
-msgstr ""
+msgstr "не е намерен файлът по подразбиране за изображение на знаците \"%s\" "
#: locale/programs/charmap.c:258
#, c-format
msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
-msgstr ""
+msgstr "изображението на знаците \"%s\" не е ÑъвмеÑтимо Ñ ASCII, локалът не е Ñъобразно ISO C\n"
#: locale/programs/charmap.c:337
#, c-format
msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
-msgstr ""
+msgstr "%s: <mb_cur_max> Ñ‚Ñ€Ñбва да е по-голÑм от <mb_cur_min>\n"
#: locale/programs/charmap.c:357 locale/programs/charmap.c:374
-#: locale/programs/repertoire.c:175
+#: locale/programs/repertoire.c:174
#, c-format
msgid "syntax error in prolog: %s"
-msgstr ""
+msgstr "Ñинтактична грешка в началото: %s"
#: locale/programs/charmap.c:358
msgid "invalid definition"
-msgstr ""
+msgstr "неправилно определение"
#: locale/programs/charmap.c:375 locale/programs/locfile.c:126
-#: locale/programs/locfile.c:153 locale/programs/repertoire.c:176
-#, fuzzy
+#: locale/programs/locfile.c:153 locale/programs/repertoire.c:175
msgid "bad argument"
-msgstr "Ðеправилен аргумент"
+msgstr "неправилен аргумент"
#: locale/programs/charmap.c:403
#, c-format
msgid "duplicate definition of <%s>"
-msgstr ""
+msgstr "повторно определение за <%s>"
#: locale/programs/charmap.c:410
#, c-format
msgid "value for <%s> must be 1 or greater"
-msgstr ""
+msgstr "ÑтойноÑтта за <%s> Ñ‚Ñ€Ñбва да е 1 или по-голÑма"
#: locale/programs/charmap.c:422
#, c-format
msgid "value of <%s> must be greater or equal than the value of <%s>"
-msgstr ""
+msgstr "ÑтойноÑтта <%s> Ñ‚Ñ€Ñбва да е по-голÑма или равна от ÑтойноÑтта на <%s>"
-#: locale/programs/charmap.c:445 locale/programs/repertoire.c:184
+#: locale/programs/charmap.c:445 locale/programs/repertoire.c:183
#, c-format
msgid "argument to <%s> must be a single character"
-msgstr ""
+msgstr "аргументът на <%s> Ñ‚Ñ€Ñбва да бъде един знак"
#: locale/programs/charmap.c:471
msgid "character sets with locking states are not supported"
-msgstr ""
+msgstr "не Ñе поддържат кодировки Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð°Ñ‰Ð¸ ÑÑŠÑтоÑниÑ"
#: locale/programs/charmap.c:498 locale/programs/charmap.c:552
#: locale/programs/charmap.c:584 locale/programs/charmap.c:678
@@ -1475,104 +1519,103 @@ msgstr ""
#: locale/programs/charmap.c:815
#, c-format
msgid "syntax error in %s definition: %s"
-msgstr ""
+msgstr "Ñинтактична грешка в определението на %s: %s"
#: locale/programs/charmap.c:499 locale/programs/charmap.c:679
-#: locale/programs/charmap.c:775 locale/programs/repertoire.c:231
+#: locale/programs/charmap.c:775 locale/programs/repertoire.c:230
msgid "no symbolic name given"
-msgstr ""
+msgstr "не е зададено Ñимволично име"
#: locale/programs/charmap.c:553
-#, fuzzy
msgid "invalid encoding given"
-msgstr "Ðеправилен обмен"
+msgstr "зададено е неправилно кодиране"
#: locale/programs/charmap.c:562
msgid "too few bytes in character encoding"
-msgstr ""
+msgstr "твърде малко байтове в кодирането на знак"
#: locale/programs/charmap.c:564
msgid "too many bytes in character encoding"
-msgstr ""
+msgstr "твърде много байтове в кодирането на знак"
#: locale/programs/charmap.c:586 locale/programs/charmap.c:734
-#: locale/programs/charmap.c:817 locale/programs/repertoire.c:297
+#: locale/programs/charmap.c:817 locale/programs/repertoire.c:296
msgid "no symbolic name given for end of range"
-msgstr ""
+msgstr "не е зададено Ñимволично име за край на диапазон"
-#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
-#: locale/programs/ld-collate.c:2677 locale/programs/ld-collate.c:3828
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
+#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
#: locale/programs/ld-identification.c:452
#: locale/programs/ld-measurement.c:238 locale/programs/ld-messages.c:332
#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:307
#: locale/programs/ld-numeric.c:368 locale/programs/ld-paper.c:241
#: locale/programs/ld-telephone.c:313 locale/programs/ld-time.c:1221
-#: locale/programs/repertoire.c:314
+#: locale/programs/repertoire.c:313
#, c-format
msgid "%1$s: definition does not end with `END %1$s'"
-msgstr ""
+msgstr "%1$s: определението не завършва Ñ \"END %1$s\""
#: locale/programs/charmap.c:643
msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
-msgstr ""
+msgstr "Ñамо определение за WIDTH е разрешено да Ñледва Ñлед определение за CHARMAP"
#: locale/programs/charmap.c:651 locale/programs/charmap.c:714
#, c-format
msgid "value for %s must be an integer"
-msgstr ""
+msgstr "ÑтойноÑтта за %s Ñ‚Ñ€Ñбва да е цÑло чиÑло"
#: locale/programs/charmap.c:842
#, c-format
msgid "%s: error in state machine"
-msgstr ""
+msgstr "%s: грешка в ÑÑŠÑтоÑнието на машината"
-#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
-#: locale/programs/ld-collate.c:2674 locale/programs/ld-collate.c:3844
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
#: locale/programs/ld-identification.c:468
#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
#: locale/programs/ld-monetary.c:959 locale/programs/ld-name.c:323
#: locale/programs/ld-numeric.c:384 locale/programs/ld-paper.c:257
#: locale/programs/ld-telephone.c:329 locale/programs/ld-time.c:1237
-#: locale/programs/locfile.c:826 locale/programs/repertoire.c:325
+#: locale/programs/locfile.c:826 locale/programs/repertoire.c:324
#, c-format
msgid "%s: premature end of file"
-msgstr ""
+msgstr "%s: преждевременен кай на файл"
#: locale/programs/charmap.c:869 locale/programs/charmap.c:880
#, c-format
msgid "unknown character `%s'"
-msgstr ""
+msgstr "неизвеÑтен знак \"%s\""
#: locale/programs/charmap.c:888
#, c-format
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
-msgstr ""
+msgstr "Ð±Ð¾Ñ Ð½Ð° байтовете, в поÑледователноÑÑ‚ от байтове за начало и край на диапазон, не е ÑъщиÑ: %d Ñ/у %d"
-#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:2957
-#: locale/programs/repertoire.c:420
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
+#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
-msgstr ""
+msgstr "неправилни имена за диапазон от знаци"
-#: locale/programs/charmap.c:1005 locale/programs/repertoire.c:432
+#: locale/programs/charmap.c:1005 locale/programs/repertoire.c:431
msgid "hexadecimal range format should use only capital characters"
-msgstr ""
+msgstr "за диапазон в шеÑтнадеÑетичен формат Ñ‚Ñ€Ñбва да използват Ñамо главни букви"
-#: locale/programs/charmap.c:1023 locale/programs/repertoire.c:450
+#: locale/programs/charmap.c:1023 locale/programs/repertoire.c:449
#, c-format
msgid "<%s> and <%s> are invalid names for range"
-msgstr ""
+msgstr "<%s> и <%s> Ñа неправилни имена за диапазон"
-#: locale/programs/charmap.c:1029 locale/programs/repertoire.c:457
+#: locale/programs/charmap.c:1029 locale/programs/repertoire.c:456
msgid "upper limit in range is smaller than lower limit"
-msgstr ""
+msgstr "горната граница за диапазон е по-малка то долната"
#: locale/programs/charmap.c:1087
msgid "resulting bytes for range not representable."
-msgstr ""
+msgstr "резултата от байтове за диапазона не може да Ñе предÑтавÑÑ‚."
-#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1536
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
@@ -1580,12 +1623,12 @@ msgstr ""
#: locale/programs/ld-telephone.c:94 locale/programs/ld-time.c:159
#, c-format
msgid "No definition for %s category found"
-msgstr ""
+msgstr "Ðе е намерено определение за ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ %s"
-#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
-#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
-#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
-#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
@@ -1596,48 +1639,48 @@ msgstr ""
#: locale/programs/ld-time.c:196
#, c-format
msgid "%s: field `%s' not defined"
-msgstr ""
+msgstr "%s: полето \"%s\" е неопределено"
-#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
-#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
-msgstr ""
+msgstr "%s: полето \"%s\" не може да е празно"
-#: locale/programs/ld-address.c:168
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
-msgstr ""
+msgstr "%s: неправилна замеÑтваща(escape) поÑледователноÑÑ‚ \"%%%c\" в полето\"%s\""
-#: locale/programs/ld-address.c:219
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
-msgstr ""
+msgstr "%s: терминологичниÑÑ‚ код за език \"%s\" не е определен"
-#: locale/programs/ld-address.c:244
+#: locale/programs/ld-address.c:246
#, c-format
msgid "%s: field `%s' must not be defined"
-msgstr ""
+msgstr "%s: полето \"%s\" не Ñ‚Ñ€Ñбва да е определено"
-#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
-msgstr ""
+msgstr "%s: Ñъкращението за име на език \"%s\" не е определено"
-#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
-#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
-msgstr ""
+msgstr "%s: ÑтойноÑтта \"%s\" не ÑъответÑтва на \"%s\""
-#: locale/programs/ld-address.c:312
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
-msgstr ""
+msgstr "%s: неправилен цифров код на държава \"%d\""
-#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
-#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
#: locale/programs/ld-identification.c:364
#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
@@ -1647,9 +1690,9 @@ msgstr ""
#: locale/programs/ld-time.c:1168
#, c-format
msgid "%s: field `%s' declared more than once"
-msgstr ""
+msgstr "%s: полето \"%s\" е обÑвено повече от веднъж"
-#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
@@ -1657,9 +1700,9 @@ msgstr ""
#: locale/programs/ld-time.c:1089 locale/programs/ld-time.c:1131
#, c-format
msgid "%s: unknown character in field `%s'"
-msgstr ""
+msgstr "%s: неизвеÑтен знак в полето \"%s\""
-#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3826
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
@@ -1667,428 +1710,448 @@ msgstr ""
#: locale/programs/ld-telephone.c:311 locale/programs/ld-time.c:1219
#, c-format
msgid "%s: incomplete `END' line"
-msgstr ""
-
-#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:522
-#: locale/programs/ld-collate.c:574 locale/programs/ld-collate.c:870
-#: locale/programs/ld-collate.c:883 locale/programs/ld-collate.c:2664
-#: locale/programs/ld-collate.c:3835 locale/programs/ld-ctype.c:1960
-#: locale/programs/ld-ctype.c:2219 locale/programs/ld-ctype.c:2806
-#: locale/programs/ld-ctype.c:2992 locale/programs/ld-identification.c:459
+msgstr "%s: непълен ред \"END\""
+
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
+#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
+#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
+#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
+#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
+#: locale/programs/ld-identification.c:459
#: locale/programs/ld-measurement.c:245 locale/programs/ld-messages.c:339
#: locale/programs/ld-monetary.c:950 locale/programs/ld-name.c:314
#: locale/programs/ld-numeric.c:375 locale/programs/ld-paper.c:248
#: locale/programs/ld-telephone.c:320 locale/programs/ld-time.c:1228
#, c-format
msgid "%s: syntax error"
-msgstr ""
+msgstr "%s: Ñинтактична грешка"
-#: locale/programs/ld-collate.c:397
+#: locale/programs/ld-collate.c:417
#, c-format
msgid "`%.*s' already defined in charmap"
-msgstr ""
+msgstr "\"%.*s\" е вече определен в изображението на знаците"
-#: locale/programs/ld-collate.c:406
+#: locale/programs/ld-collate.c:426
#, c-format
msgid "`%.*s' already defined in repertoire"
-msgstr ""
+msgstr "\"%.*s\" е вече определен в набора от знаци"
-#: locale/programs/ld-collate.c:413
+#: locale/programs/ld-collate.c:433
#, c-format
msgid "`%.*s' already defined as collating symbol"
-msgstr ""
+msgstr "\"%.*s\" е вече определен като Ñимвол за подреждане"
-#: locale/programs/ld-collate.c:420
+#: locale/programs/ld-collate.c:440
#, c-format
msgid "`%.*s' already defined as collating element"
-msgstr ""
+msgstr "\"%.*s\" е вече определен като елемент за подреждане"
-#: locale/programs/ld-collate.c:451 locale/programs/ld-collate.c:477
+#: locale/programs/ld-collate.c:471 locale/programs/ld-collate.c:497
#, c-format
msgid "%s: `forward' and `backward' are mutually excluding each other"
-msgstr ""
+msgstr "%s: \"forward\" и \"backward\" Ñа взаимоизключващи Ñе"
-#: locale/programs/ld-collate.c:461 locale/programs/ld-collate.c:487
-#: locale/programs/ld-collate.c:503
+#: locale/programs/ld-collate.c:481 locale/programs/ld-collate.c:507
+#: locale/programs/ld-collate.c:523
#, c-format
msgid "%s: `%s' mentioned more than once in definition of weight %d"
-msgstr ""
+msgstr "%s: \"%s\" Ñе Ñреща повече от веднъж в определение за тегло %d"
-#: locale/programs/ld-collate.c:559
+#: locale/programs/ld-collate.c:579
#, c-format
msgid "%s: too many rules; first entry only had %d"
-msgstr ""
+msgstr "%s: твърде много правила; за първиÑÑ‚ Ð·Ð°Ð¿Ð¸Ñ Ð±Ñха %d"
-#: locale/programs/ld-collate.c:595
+#: locale/programs/ld-collate.c:615
#, c-format
msgid "%s: not enough sorting rules"
-msgstr ""
+msgstr "%s: недоÑтатъчно правила за Ñортиране"
-#: locale/programs/ld-collate.c:760
+#: locale/programs/ld-collate.c:780
#, c-format
msgid "%s: empty weight string not allowed"
-msgstr ""
+msgstr "%s: не е разрешен празен низ за тегло"
-#: locale/programs/ld-collate.c:855
+#: locale/programs/ld-collate.c:875
#, c-format
msgid "%s: weights must use the same ellipsis symbol as the name"
-msgstr ""
+msgstr "%s: теглата Ñ‚Ñ€Ñбва да използват Ñъщото многоточие като името"
-#: locale/programs/ld-collate.c:911
-#, fuzzy, c-format
+#: locale/programs/ld-collate.c:931
+#, c-format
msgid "%s: too many values"
-msgstr "Твърде много потребители"
+msgstr "%s: твърде много ÑтойноÑти"
-#: locale/programs/ld-collate.c:1031 locale/programs/ld-collate.c:1206
+#: locale/programs/ld-collate.c:1051 locale/programs/ld-collate.c:1226
#, c-format
msgid "order for `%.*s' already defined at %s:%Zu"
-msgstr ""
+msgstr "редът за \"%.*s\" е вече определен при %s:%Zu"
-#: locale/programs/ld-collate.c:1081
+#: locale/programs/ld-collate.c:1101
#, c-format
msgid "%s: the start and the end symbol of a range must stand for characters"
-msgstr ""
+msgstr "%s: началниÑÑ‚ и крайниÑÑ‚ Ñимвол за диапазон Ñ‚Ñ€Ñбва да обозначават знаци"
-#: locale/programs/ld-collate.c:1108
+#: locale/programs/ld-collate.c:1128
#, c-format
msgid "%s: byte sequences of first and last character must have the same length"
-msgstr ""
+msgstr "%s: поÑледователноÑтта от байтове, за Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð¸ поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð·Ð½Ð°Ðº, Ñ‚Ñ€Ñбва да е Ñ ÐµÐ´Ð½Ð°ÐºÐ²Ð° дължина"
-#: locale/programs/ld-collate.c:1150
+#: locale/programs/ld-collate.c:1170
#, c-format
msgid "%s: byte sequence of first character of range is not lower than that of the last character"
-msgstr ""
+msgstr "%s: поÑледователноÑтта от байтове за Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð·Ð½Ð°Ðº на диапазона не е по-малка от тази за поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð·Ð½Ð°Ðº"
-#: locale/programs/ld-collate.c:1275
+#: locale/programs/ld-collate.c:1295
#, c-format
msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
-msgstr ""
+msgstr "%s: многоточие за Ñимволичен диапазон не може веднага да Ñледва \"order_start\""
-#: locale/programs/ld-collate.c:1279
+#: locale/programs/ld-collate.c:1299
#, c-format
msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'"
-msgstr ""
+msgstr "%s: многоточие за Ñимволичен диапазон не може да бъде поÑледвано веднага от \"order_end\""
-#: locale/programs/ld-collate.c:1299 locale/programs/ld-ctype.c:1477
+#: locale/programs/ld-collate.c:1319 locale/programs/ld-ctype.c:1477
#, c-format
msgid "`%s' and `%.*s' are not valid names for symbolic range"
-msgstr ""
+msgstr "\"%s\" и \"%.*s\" не Ñа правилни имена за Ñимволичен диапазон"
-#: locale/programs/ld-collate.c:1349 locale/programs/ld-collate.c:3763
+#: locale/programs/ld-collate.c:1369 locale/programs/ld-collate.c:3858
#, c-format
msgid "%s: order for `%.*s' already defined at %s:%Zu"
-msgstr ""
+msgstr "%s: редът за \"%.*s\" е вече определен при %s:%Zu"
-#: locale/programs/ld-collate.c:1358
+#: locale/programs/ld-collate.c:1378
#, c-format
msgid "%s: `%s' must be a character"
-msgstr ""
+msgstr "%s: \"%s\" Ñ‚Ñ€Ñбва да е знак"
-#: locale/programs/ld-collate.c:1552
+#: locale/programs/ld-collate.c:1573
#, c-format
msgid "%s: `position' must be used for a specific level in all sections or none"
-msgstr ""
+msgstr "%s: \"position\" Ñ‚Ñ€Ñбва да Ñе използва на точно определено ниво във вÑички ÑÐµÐºÑ†Ð¸Ñ Ð¸Ð»Ð¸ в нито една"
-#: locale/programs/ld-collate.c:1577
+#: locale/programs/ld-collate.c:1598
#, c-format
msgid "symbol `%s' not defined"
-msgstr ""
+msgstr "Ñимволът \"%s\" е неопределен"
-#: locale/programs/ld-collate.c:1653 locale/programs/ld-collate.c:1759
+#: locale/programs/ld-collate.c:1674 locale/programs/ld-collate.c:1780
#, c-format
msgid "symbol `%s' has the same encoding as"
-msgstr ""
+msgstr "Ñимволът \"%s\" е Ñ Ñъщото кодиране като"
-#: locale/programs/ld-collate.c:1657 locale/programs/ld-collate.c:1763
+#: locale/programs/ld-collate.c:1678 locale/programs/ld-collate.c:1784
#, c-format
msgid "symbol `%s'"
-msgstr ""
+msgstr "Ñимвола \"%s\""
-#: locale/programs/ld-collate.c:1805
+#: locale/programs/ld-collate.c:1826
#, c-format
msgid "no definition of `UNDEFINED'"
-msgstr ""
+msgstr "нÑма определение за \"UNDEFINED\""
-#: locale/programs/ld-collate.c:1834
+#: locale/programs/ld-collate.c:1855
#, c-format
msgid "too many errors; giving up"
-msgstr ""
+msgstr "твърде много грешки; отказване"
+
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
+#, c-format
+msgid "%s: nested conditionals not supported"
+msgstr "%s: не Ñе поддържа вграждане на уÑловиÑ"
+
+#: locale/programs/ld-collate.c:2677
+#, c-format
+msgid "%s: more then one 'else'"
+msgstr "%s: повече от един 'else'"
-#: locale/programs/ld-collate.c:2762
+#: locale/programs/ld-collate.c:2852
#, c-format
msgid "%s: duplicate definition of `%s'"
-msgstr ""
+msgstr "%s: повторно определÑне на \"%s\""
-#: locale/programs/ld-collate.c:2798
+#: locale/programs/ld-collate.c:2888
#, c-format
msgid "%s: duplicate declaration of section `%s'"
-msgstr ""
+msgstr "%s: повторно обÑвÑване на дÑл \"%s\""
-#: locale/programs/ld-collate.c:2937
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
-msgstr ""
+msgstr "%s: неизвеÑтен знак за име на Ñимвол за подреждане"
-#: locale/programs/ld-collate.c:3069
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
-msgstr ""
+msgstr "%s: неизвеÑтен знак за име в определение за еквивалентноÑÑ‚"
-#: locale/programs/ld-collate.c:3082
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
-msgstr ""
+msgstr "%s: неизвеÑтен знак за ÑтойноÑÑ‚ в определение за еквивалентноÑÑ‚"
-#: locale/programs/ld-collate.c:3092
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
-msgstr ""
+msgstr "%s: неизвеÑтен Ñимвол \"%s\" в определение за еквивалентноÑÑ‚"
-#: locale/programs/ld-collate.c:3101
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
-msgstr ""
+msgstr "грешка при добавÑне на равноÑтоен Ñимвол за подреждане"
-#: locale/programs/ld-collate.c:3131
+#: locale/programs/ld-collate.c:3221
#, c-format
msgid "duplicate definition of script `%s'"
-msgstr ""
+msgstr "повторно определение за пиÑменоÑÑ‚ \"%s\""
-#: locale/programs/ld-collate.c:3179
+#: locale/programs/ld-collate.c:3269
#, c-format
msgid "%s: unknown section name `%.*s'"
-msgstr ""
+msgstr "%s: неизвеÑтно име на ÑÐµÐºÑ†Ð¸Ñ \"%.*s\""
-#: locale/programs/ld-collate.c:3208
+#: locale/programs/ld-collate.c:3298
#, c-format
msgid "%s: multiple order definitions for section `%s'"
-msgstr ""
+msgstr "%s: многократни Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð° ред в ÑÐµÐºÑ†Ð¸Ñ \"%s\""
-#: locale/programs/ld-collate.c:3233
+#: locale/programs/ld-collate.c:3326
#, c-format
msgid "%s: invalid number of sorting rules"
-msgstr ""
+msgstr "%s: неправилен брой правила за Ñортиране"
-#: locale/programs/ld-collate.c:3260
+#: locale/programs/ld-collate.c:3353
#, c-format
msgid "%s: multiple order definitions for unnamed section"
-msgstr ""
+msgstr "%s: многократни Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð° ред в безимена ÑекциÑ"
-#: locale/programs/ld-collate.c:3314 locale/programs/ld-collate.c:3442
-#: locale/programs/ld-collate.c:3804
+#: locale/programs/ld-collate.c:3407 locale/programs/ld-collate.c:3537
+#: locale/programs/ld-collate.c:3900
#, c-format
msgid "%s: missing `order_end' keyword"
-msgstr ""
+msgstr "%s: липÑващ ключ \"order_end\""
-#: locale/programs/ld-collate.c:3375
+#: locale/programs/ld-collate.c:3470
#, c-format
msgid "%s: order for collating symbol %.*s not yet defined"
-msgstr ""
+msgstr "%s: вÑе още не е определен редът на Ñимвола за подреждане %.*s"
-#: locale/programs/ld-collate.c:3393
+#: locale/programs/ld-collate.c:3488
#, c-format
msgid "%s: order for collating element %.*s not yet defined"
-msgstr ""
+msgstr "%s: вÑе още не е определен редът на елемента за подреждане %.*s"
-#: locale/programs/ld-collate.c:3404
+#: locale/programs/ld-collate.c:3499
#, c-format
msgid "%s: cannot reorder after %.*s: symbol not known"
-msgstr ""
+msgstr "%s: не може да Ñе пренареди Ñлед %.*s: Ñимволът е неизвеÑтен"
-#: locale/programs/ld-collate.c:3456 locale/programs/ld-collate.c:3816
+#: locale/programs/ld-collate.c:3551 locale/programs/ld-collate.c:3912
#, c-format
msgid "%s: missing `reorder-end' keyword"
-msgstr ""
+msgstr "%s: липÑва ключ \"reorder-end\""
-#: locale/programs/ld-collate.c:3490 locale/programs/ld-collate.c:3688
+#: locale/programs/ld-collate.c:3585 locale/programs/ld-collate.c:3783
#, c-format
msgid "%s: section `%.*s' not known"
-msgstr ""
+msgstr "%s: неизвеÑтна ÑÐµÐºÑ†Ð¸Ñ \"%.*s\""
-#: locale/programs/ld-collate.c:3555
+#: locale/programs/ld-collate.c:3650
#, c-format
msgid "%s: bad symbol <%.*s>"
-msgstr ""
+msgstr "%s: неправилен Ñимвол <%.*s>"
-#: locale/programs/ld-collate.c:3751
+#: locale/programs/ld-collate.c:3846
#, c-format
msgid "%s: cannot have `%s' as end of ellipsis range"
-msgstr ""
+msgstr "%s: \"%s\" не може да бъде край на диапазон Ñ Ð¼Ð½Ð¾Ð³Ð¾Ñ‚Ð¾Ñ‡Ð¸Ðµ"
-#: locale/programs/ld-collate.c:3800
+#: locale/programs/ld-collate.c:3896
#, c-format
msgid "%s: empty category description not allowed"
-msgstr ""
+msgstr "%s: не е разрешено празно опиÑание на категориÑ"
-#: locale/programs/ld-collate.c:3819
+#: locale/programs/ld-collate.c:3915
#, c-format
msgid "%s: missing `reorder-sections-end' keyword"
-msgstr ""
+msgstr "%s: липÑва ключ \"reorder-sections-end\""
+
+#: locale/programs/ld-collate.c:4079
+#, c-format
+msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
+msgstr "%s: '%s' е без ÑъответÑтващ 'ifdef' или 'ifndef'"
+
+#: locale/programs/ld-collate.c:4097
+#, c-format
+msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
+msgstr "%s: 'endif' без ÑъответÑтващ 'ifdef' или 'ifndef'"
#: locale/programs/ld-ctype.c:439
#, c-format
msgid "No character set name specified in charmap"
-msgstr ""
+msgstr "Ðеопределено име на множеÑтвото от знаци в изображението на знаците"
#: locale/programs/ld-ctype.c:468
#, c-format
msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
-msgstr ""
+msgstr "знакът L'\\u%0*x' от ÐºÐ»Ð°Ñ \"%s\" Ñ‚Ñ€Ñбва да е в ÐºÐ»Ð°Ñ \"%s\""
#: locale/programs/ld-ctype.c:483
#, c-format
msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'"
-msgstr ""
+msgstr "знакът L'\\u%0*x' от ÐºÐ»Ð°Ñ \"%s\" не може да е в ÐºÐ»Ð°Ñ \"%s\""
#: locale/programs/ld-ctype.c:497 locale/programs/ld-ctype.c:555
#, c-format
msgid "internal error in %s, line %u"
-msgstr ""
+msgstr "вътрешна грешка в %s, на ред %u"
#: locale/programs/ld-ctype.c:526
#, c-format
msgid "character '%s' in class `%s' must be in class `%s'"
-msgstr ""
+msgstr "знакът \"%s\" от ÐºÐ»Ð°Ñ \"%s\" Ñ‚Ñ€Ñбва да е в ÐºÐ»Ð°Ñ \"%s\""
#: locale/programs/ld-ctype.c:542
#, c-format
msgid "character '%s' in class `%s' must not be in class `%s'"
-msgstr ""
+msgstr "знакът \"%s\" от ÐºÐ»Ð°Ñ \"%s\" не може да е в ÐºÐ»Ð°Ñ \"%s\""
#: locale/programs/ld-ctype.c:572 locale/programs/ld-ctype.c:610
#, c-format
msgid "<SP> character not in class `%s'"
-msgstr ""
+msgstr "знакът <SP> не е в ÐºÐ»Ð°Ñ \"%s\""
#: locale/programs/ld-ctype.c:584 locale/programs/ld-ctype.c:621
#, c-format
msgid "<SP> character must not be in class `%s'"
-msgstr ""
+msgstr "знакът <SP> не може да е в ÐºÐ»Ð°Ñ \"%s\""
#: locale/programs/ld-ctype.c:599
#, c-format
msgid "character <SP> not defined in character map"
-msgstr ""
+msgstr "знакът <SP> не е определен в изображението на знаците"
#: locale/programs/ld-ctype.c:714
#, c-format
msgid "`digit' category has not entries in groups of ten"
-msgstr ""
+msgstr "впиÑваниÑта в категориÑта \"digit\" не Ñе групират по деÑет"
#: locale/programs/ld-ctype.c:763
#, c-format
msgid "no input digits defined and none of the standard names in the charmap"
-msgstr ""
+msgstr "в изображението на знаците не Ñа определени входÑщите цифри и никое от Ñтандартните имена"
#: locale/programs/ld-ctype.c:828
#, c-format
msgid "not all characters used in `outdigit' are available in the charmap"
-msgstr ""
+msgstr "не вÑички знаци използвани в \"outdigit\" Ñа доÑтъпни в изображението на знаците"
#: locale/programs/ld-ctype.c:845
#, c-format
msgid "not all characters used in `outdigit' are available in the repertoire"
-msgstr ""
+msgstr "не вÑички знаци използвани в \"outdigit\" Ñа доÑтъпни в Ð·Ð½Ð°ÐºÐ¾Ð²Ð¸Ñ Ð½Ð°Ð±Ð¾Ñ€"
#: locale/programs/ld-ctype.c:1245
#, c-format
msgid "character class `%s' already defined"
-msgstr ""
+msgstr "вече е определен клаÑÑŠÑ‚ знаци \"%s\""
#: locale/programs/ld-ctype.c:1251
#, c-format
msgid "implementation limit: no more than %Zd character classes allowed"
-msgstr ""
+msgstr "ограничение в реализациÑта: не за разрешени повече от %Zd клаÑа за знаци"
#: locale/programs/ld-ctype.c:1277
#, c-format
msgid "character map `%s' already defined"
-msgstr ""
+msgstr "изображението на знаците \"%s\" вече е определено"
#: locale/programs/ld-ctype.c:1283
#, c-format
msgid "implementation limit: no more than %d character maps allowed"
-msgstr ""
+msgstr "ограничение в реализациÑта: не Ñа разрешени повече от %d Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð° знаци"
#: locale/programs/ld-ctype.c:1548 locale/programs/ld-ctype.c:1673
#: locale/programs/ld-ctype.c:1779 locale/programs/ld-ctype.c:2471
#: locale/programs/ld-ctype.c:3467
#, c-format
msgid "%s: field `%s' does not contain exactly ten entries"
-msgstr ""
+msgstr "%s: полето \"%s\" не Ñъдържа точно деÑет запиÑа"
#: locale/programs/ld-ctype.c:1576 locale/programs/ld-ctype.c:2150
#, c-format
msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
-msgstr ""
+msgstr "горната граница <U%0*X> на диапазона е по-малка от долната <U%0*X>"
#: locale/programs/ld-ctype.c:1703
msgid "start and end character sequence of range must have the same length"
-msgstr ""
+msgstr "началната и крайната знакова поÑледователноÑÑ‚ на диапазона Ñ‚Ñ€Ñбва да Ñа Ñ ÐµÐ´Ð½Ð°ÐºÐ²Ð° дължина"
#: locale/programs/ld-ctype.c:1710
msgid "to-value character sequence is smaller than from-value sequence"
-msgstr ""
+msgstr "началната знакова поÑледователноÑÑ‚ е по-малка от крайната"
#: locale/programs/ld-ctype.c:2070 locale/programs/ld-ctype.c:2121
msgid "premature end of `translit_ignore' definition"
-msgstr ""
+msgstr "преждевременен край на определение \"translit_ignore\""
# TODO
#: locale/programs/ld-ctype.c:2076 locale/programs/ld-ctype.c:2127
#: locale/programs/ld-ctype.c:2169
-#, fuzzy
msgid "syntax error"
-msgstr "Грешка при srmount"
+msgstr "Ñинтактична грешка"
#: locale/programs/ld-ctype.c:2303
#, c-format
msgid "%s: syntax error in definition of new character class"
-msgstr ""
+msgstr "%s: Ñинтактична грешка в определението за опиÑание за ÐºÐ»Ð°Ñ Ð·Ð½Ð°Ñ†Ð¸"
#: locale/programs/ld-ctype.c:2318
#, c-format
msgid "%s: syntax error in definition of new character map"
-msgstr ""
+msgstr "%s: Ñинтактична грешка в определението на ново изображение на знаци"
#: locale/programs/ld-ctype.c:2493
msgid "ellipsis range must be marked by two operands of same type"
-msgstr ""
+msgstr "диапазон Ñ Ð¼Ð½Ð¾Ð³Ð¾Ñ‚Ð¾Ñ‡Ð¸Ðµ Ñ‚Ñ€Ñбва да бъде ограничен от два еднотипни операнда"
#: locale/programs/ld-ctype.c:2502
msgid "with symbolic name range values the absolute ellipsis `...' must not be used"
-msgstr ""
+msgstr "при диапазон ÑÑŠÑ Ñимволично име Ñ‚Ñ€Ñбва да Ñе използва ÑамоÑтоÑтелно многоточие \"...\""
#: locale/programs/ld-ctype.c:2517
msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
-msgstr ""
+msgstr "при UCS диапазон Ñ‚Ñ€Ñбва да Ñе използва шеÑтнадеÑетично Ñимволично многоточие \"..\""
#: locale/programs/ld-ctype.c:2531
msgid "with character code range values one must use the absolute ellipsis `...'"
-msgstr ""
+msgstr "при диапазон от кодове на знаци Ñ‚Ñ€Ñбва да Ñе използва ÑамоÑтоÑтелно многоточие \"...\""
#: locale/programs/ld-ctype.c:2682
#, c-format
msgid "duplicated definition for mapping `%s'"
-msgstr ""
+msgstr "повторно определÑне на изображението \"%s\""
#: locale/programs/ld-ctype.c:2768 locale/programs/ld-ctype.c:2912
#, c-format
msgid "%s: `translit_start' section does not end with `translit_end'"
-msgstr ""
+msgstr "%s: \"translit_start\" - ÑекциÑта не завършва Ñ \"translit_end\""
#: locale/programs/ld-ctype.c:2863
#, c-format
msgid "%s: duplicate `default_missing' definition"
-msgstr ""
+msgstr "%s: повторно определени за \"default_missing\""
#: locale/programs/ld-ctype.c:2868
msgid "previous definition was here"
-msgstr ""
+msgstr "предишното определение бе тук"
#: locale/programs/ld-ctype.c:2890
#, c-format
msgid "%s: no representable `default_missing' definition found"
-msgstr ""
+msgstr "%s: не е намерено предÑтавимо определение за \"default_missing\""
#: locale/programs/ld-ctype.c:3043 locale/programs/ld-ctype.c:3127
#: locale/programs/ld-ctype.c:3147 locale/programs/ld-ctype.c:3168
@@ -2098,7 +2161,7 @@ msgstr ""
#: locale/programs/ld-ctype.c:3401 locale/programs/ld-ctype.c:3426
#, c-format
msgid "%s: character `%s' not defined while needed as default value"
-msgstr ""
+msgstr "%s: знакът \"%s\" е неопределен, въпреки че е необходим като ÑтойноÑÑ‚ по подразбиране"
#: locale/programs/ld-ctype.c:3048 locale/programs/ld-ctype.c:3132
#: locale/programs/ld-ctype.c:3152 locale/programs/ld-ctype.c:3173
@@ -2107,368 +2170,363 @@ msgstr ""
#: locale/programs/ld-ctype.c:3297 locale/programs/ld-ctype.c:3364
#, c-format
msgid "%s: character `%s' in charmap not representable with one byte"
-msgstr ""
+msgstr "%s: знакът \"%s\", от изображението на знаците, не е предÑтавим Ñ ÐµÐ´Ð¸Ð½ байт"
#: locale/programs/ld-ctype.c:3408 locale/programs/ld-ctype.c:3433
#, c-format
msgid "%s: character `%s' needed as default value not representable with one byte"
-msgstr ""
+msgstr "%s: знакът \"%s\", необходим като ÑтойноÑÑ‚ по подразбиране, не може да Ñе предÑтави Ñ ÐµÐ´Ð¸Ð½ байт"
#: locale/programs/ld-ctype.c:3489
#, c-format
msgid "no output digits defined and none of the standard names in the charmap"
-msgstr ""
+msgstr "в изображението на знаците не Ñа определени изходÑщите цифри и никое от Ñтандартните имена"
#: locale/programs/ld-ctype.c:3780
#, c-format
msgid "%s: transliteration data from locale `%s' not available"
-msgstr ""
+msgstr "%s: не Ñа налични данни за транÑÐ»Ð¸Ñ‚ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ локал \"%s\""
#: locale/programs/ld-ctype.c:3881
#, c-format
msgid "%s: table for class \"%s\": %lu bytes\n"
-msgstr ""
+msgstr "%s: таблица за ÐºÐ»Ð°Ñ \"%s\": %lu байта\n"
#: locale/programs/ld-ctype.c:3950
#, c-format
msgid "%s: table for map \"%s\": %lu bytes\n"
-msgstr ""
+msgstr "%s: таблица за изображение \"%s\": %lu байта\n"
#: locale/programs/ld-ctype.c:4083
#, c-format
msgid "%s: table for width: %lu bytes\n"
-msgstr ""
+msgstr "%s: таблица за ширина: %lu байта\n"
#: locale/programs/ld-identification.c:170
#, c-format
msgid "%s: no identification for category `%s'"
-msgstr ""
+msgstr "%s: липÑва Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð° категориÑта \"%s\""
#: locale/programs/ld-identification.c:435
#, c-format
msgid "%s: duplicate category version definition"
-msgstr ""
+msgstr "%s: повторно определение за верÑÐ¸Ñ Ð½Ð° категориÑта"
#: locale/programs/ld-measurement.c:113
#, c-format
msgid "%s: invalid value for field `%s'"
-msgstr ""
+msgstr "%s: неправилна ÑтойноÑÑ‚ за поле \"%s\""
#: locale/programs/ld-messages.c:114 locale/programs/ld-messages.c:148
#, c-format
msgid "%s: field `%s' undefined"
-msgstr ""
+msgstr "%s: полето \"%s\" е неопределено"
#: locale/programs/ld-messages.c:121 locale/programs/ld-messages.c:155
#: locale/programs/ld-monetary.c:256 locale/programs/ld-numeric.c:118
#, c-format
msgid "%s: value for field `%s' must not be an empty string"
-msgstr ""
+msgstr "%s: ÑтойноÑтта на полето \"%s\" не може да е празен низ"
#: locale/programs/ld-messages.c:137 locale/programs/ld-messages.c:171
#, c-format
msgid "%s: no correct regular expression for field `%s': %s"
-msgstr ""
+msgstr "%s: неподходÑщ регулÑрен израз за поле \"%s\": %s"
#: locale/programs/ld-monetary.c:224
#, c-format
msgid "%s: value of field `int_curr_symbol' has wrong length"
-msgstr ""
+msgstr "%s: ÑтойноÑтта на полето \"int_curr_symbol\" е Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»Ð½Ð° дължина"
#: locale/programs/ld-monetary.c:237
#, c-format
msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217"
-msgstr ""
+msgstr "%s: ÑтойноÑтта на полето \"int_curr_symbol\" не ÑъответÑтва на дейÑтвително име от ISO 4217"
#: locale/programs/ld-monetary.c:285 locale/programs/ld-monetary.c:315
#, c-format
msgid "%s: value for field `%s' must be in range %d...%d"
-msgstr ""
+msgstr "%s: ÑтойноÑтта за полето \"%s\" Ñ‚Ñ€Ñбва да е в диапазона %d...%d"
#: locale/programs/ld-monetary.c:747 locale/programs/ld-numeric.c:274
#, c-format
msgid "%s: value for field `%s' must be a single character"
-msgstr ""
+msgstr "%s: ÑтойноÑтта за полето \"%s\" Ñ‚Ñ€Ñбва да е единичен знак"
#: locale/programs/ld-monetary.c:844 locale/programs/ld-numeric.c:318
#, c-format
msgid "%s: `-1' must be last entry in `%s' field"
-msgstr ""
+msgstr "%s: \"-1\" Ñ‚Ñ€Ñбва да е поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° полето \"%s\""
#: locale/programs/ld-monetary.c:866 locale/programs/ld-numeric.c:335
#, c-format
msgid "%s: values for field `%s' must be smaller than 127"
-msgstr ""
+msgstr "%s: ÑтойноÑтта за полето \"%s\" Ñ‚Ñ€Ñбва да е по-малка от 127"
#: locale/programs/ld-monetary.c:909
msgid "conversion rate value cannot be zero"
-msgstr ""
+msgstr "обменниÑÑ‚ ÐºÑƒÑ€Ñ Ð½Ðµ може да е нула"
#: locale/programs/ld-name.c:129 locale/programs/ld-telephone.c:126
#: locale/programs/ld-telephone.c:149
#, c-format
msgid "%s: invalid escape sequence in field `%s'"
-msgstr ""
+msgstr "%s: неправилна замеÑтваща(escape) поÑледователноÑÑ‚ в полето\"%s\""
#: locale/programs/ld-time.c:247
#, c-format
msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'"
-msgstr ""
+msgstr "%s: флагът за поÑока в низа %Zd, за полето \"era\", не е '+' или '-'"
#: locale/programs/ld-time.c:258
#, c-format
msgid "%s: direction flag in string %Zd in `era' field is not a single character"
-msgstr ""
+msgstr "%s: флагът за поÑока в низа %Zd, за полето \"era\", не е единичен знак"
#: locale/programs/ld-time.c:271
#, c-format
msgid "%s: invalid number for offset in string %Zd in `era' field"
-msgstr ""
+msgstr "%s: неправилно чиÑло за отмеÑтване в низа %Zd, за полето \"era\""
#: locale/programs/ld-time.c:279
#, c-format
msgid "%s: garbage at end of offset value in string %Zd in `era' field"
-msgstr ""
+msgstr "%s: боклук в ÐºÑ€Ð°Ñ Ð½Ð° ÑтойноÑтта за отмеÑтване в низа %Zd, за полето \"era\""
#: locale/programs/ld-time.c:330
#, c-format
msgid "%s: invalid starting date in string %Zd in `era' field"
-msgstr ""
+msgstr "%s: неправилна начална дата в низа %Zd, за полето \"era\""
#: locale/programs/ld-time.c:339
#, c-format
msgid "%s: garbage at end of starting date in string %Zd in `era' field "
-msgstr ""
+msgstr "%s: боклук в ÐºÑ€Ð°Ñ Ð½Ð° началната дата в низа %Zd, за полето \"era\""
#: locale/programs/ld-time.c:358
#, c-format
msgid "%s: starting date is invalid in string %Zd in `era' field"
-msgstr ""
+msgstr "%s: началната дата е неправилна в низа %Zd, за полето \"era\""
-#: locale/programs/ld-time.c:407
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
-msgstr ""
+msgstr "%s: неправилна крайна дата в низа %Zd, за полето \"era\""
#: locale/programs/ld-time.c:416
#, c-format
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
-msgstr ""
-
-#: locale/programs/ld-time.c:435
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr ""
+msgstr "%s: боклук в ÐºÑ€Ð°Ñ Ð½Ð° крайната дата в низа %Zd, за полето \"era\""
#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
-msgstr ""
+msgstr "%s: липÑва името на епохата в низа %Zd, за полето \"era\""
#: locale/programs/ld-time.c:456
#, c-format
msgid "%s: missing era format in string %Zd in `era' field"
-msgstr ""
+msgstr "%s: липÑва формата на епохата в низа %Zd, за полето \"era\""
#: locale/programs/ld-time.c:497
#, c-format
msgid "%s: third operand for value of field `%s' must not be larger than %d"
-msgstr ""
+msgstr "%s: третиÑÑ‚ операнд за ÑтойноÑтта на полето \"%s\" не Ñ‚Ñ€Ñбва да е по-голÑм от %d"
#: locale/programs/ld-time.c:505 locale/programs/ld-time.c:513
#: locale/programs/ld-time.c:521
#, c-format
msgid "%s: values for field `%s' must not be larger than %d"
-msgstr ""
+msgstr "%s: ÑтойноÑтта за полето \"%s\" не Ñ‚Ñ€Ñбва да е по-голÑма от %d"
#: locale/programs/ld-time.c:1004
#, c-format
msgid "%s: too few values for field `%s'"
-msgstr ""
+msgstr "%s: твърде малко ÑтойноÑти за полето \"%s\""
#: locale/programs/ld-time.c:1049
msgid "extra trailing semicolon"
-msgstr ""
+msgstr "излишна точка и Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ Ð½Ð° краÑ"
#: locale/programs/ld-time.c:1052
#, c-format
msgid "%s: too many values for field `%s'"
-msgstr ""
+msgstr "%s: твърде много ÑтойноÑти за полето \"%s\""
#: locale/programs/linereader.c:130
msgid "trailing garbage at end of line"
-msgstr ""
+msgstr "боклук в ÐºÑ€Ð°Ñ Ð½Ð° реда"
#: locale/programs/linereader.c:298
msgid "garbage at end of number"
-msgstr ""
+msgstr "боклук в ÐºÑ€Ð°Ñ Ð½Ð° чиÑлото"
#: locale/programs/linereader.c:410
msgid "garbage at end of character code specification"
-msgstr ""
+msgstr "боклук в ÐºÑ€Ð°Ñ Ð¿Ñ€Ð¸ уточнÑване на кода на знака"
#: locale/programs/linereader.c:496
msgid "unterminated symbolic name"
-msgstr ""
+msgstr "незавършено Ñимволично име"
#: locale/programs/linereader.c:623
msgid "illegal escape sequence at end of string"
-msgstr ""
+msgstr "незаконна замеÑтваща(escape) поÑледователноÑÑ‚ в ÐºÑ€Ð°Ñ Ð½Ð° низа"
#: locale/programs/linereader.c:627 locale/programs/linereader.c:855
msgid "unterminated string"
-msgstr ""
+msgstr "незавършен низ"
#: locale/programs/linereader.c:669
msgid "non-symbolic character value should not be used"
-msgstr ""
+msgstr "не Ñимволична знакова ÑтойноÑÑ‚ не Ñ‚Ñ€Ñбва да Ñе използва"
#: locale/programs/linereader.c:816
#, c-format
msgid "symbol `%.*s' not in charmap"
-msgstr ""
+msgstr "Ñимволът \"%.*s\" не е в изображението на знаците"
#: locale/programs/linereader.c:837
#, c-format
msgid "symbol `%.*s' not in repertoire map"
-msgstr ""
+msgstr "Ñимволът \"%.*s\" не е в изображението на набора"
#: locale/programs/locale.c:74
msgid "System information:"
-msgstr ""
+msgstr "СиÑтемна информациÑ:"
#: locale/programs/locale.c:76
msgid "Write names of available locales"
-msgstr ""
+msgstr "Извеждане на имената на наличните локали"
#: locale/programs/locale.c:78
msgid "Write names of available charmaps"
-msgstr ""
+msgstr "Извеждане имената на наличните Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° знаци"
#: locale/programs/locale.c:79
msgid "Modify output format:"
-msgstr ""
+msgstr "ПромÑна на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚:"
#: locale/programs/locale.c:80
msgid "Write names of selected categories"
-msgstr ""
+msgstr "Извеждане имената на избраните категории"
#: locale/programs/locale.c:81
msgid "Write names of selected keywords"
-msgstr ""
+msgstr "Извеждане имената на избраните ключови думи"
#: locale/programs/locale.c:82
msgid "Print more information"
-msgstr ""
+msgstr "Извеждане на подробна информациÑ"
#: locale/programs/locale.c:87
-msgid ""
-"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
+msgid "Get locale-specific information."
+msgstr "Получаване на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ñпецифична за локала."
-#: locale/programs/locale.c:92
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
msgstr ""
+"ИМЕ\n"
+"[-a|-m]"
-#: locale/programs/locale.c:193
+#: locale/programs/locale.c:194
#, c-format
msgid "Cannot set LC_CTYPE to default locale"
-msgstr ""
+msgstr "За LC_CTYPE не може да Ñе зададе локал по подразбиране"
-#: locale/programs/locale.c:195
+#: locale/programs/locale.c:196
#, c-format
msgid "Cannot set LC_MESSAGES to default locale"
-msgstr ""
+msgstr "За LC_MESSAGES не може да Ñе зададе локал по подразбиране"
-#: locale/programs/locale.c:208
+#: locale/programs/locale.c:209
#, c-format
msgid "Cannot set LC_COLLATE to default locale"
-msgstr ""
+msgstr "За LC_COLLATE не може да Ñе зададе локал по подразбиране"
-#: locale/programs/locale.c:224
+#: locale/programs/locale.c:225
#, c-format
msgid "Cannot set LC_ALL to default locale"
-msgstr ""
+msgstr "За LC_ALL не може да Ñе зададе локал по подразбиране"
-#: locale/programs/locale.c:500
+#: locale/programs/locale.c:518
#, c-format
msgid "while preparing output"
-msgstr ""
+msgstr "при подготвÑне на изхода"
#: locale/programs/localedef.c:120
msgid "Input Files:"
-msgstr ""
+msgstr "Входни файлове:"
#: locale/programs/localedef.c:122
msgid "Symbolic character names defined in FILE"
-msgstr ""
+msgstr "Символични имена за знаци определени в FILE"
#: locale/programs/localedef.c:123
msgid "Source definitions are found in FILE"
-msgstr ""
+msgstr "Ðачалните Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñе намират във FILE"
#: locale/programs/localedef.c:125
msgid "FILE contains mapping from symbolic names to UCS4 values"
-msgstr ""
+msgstr "FILE Ñъдържащ изображение от Ñимволични имена към UCS4 ÑтойноÑти"
#: locale/programs/localedef.c:129
msgid "Create output even if warning messages were issued"
-msgstr ""
+msgstr "Създаване на изход дори когато Ñа издадени предупредителни ÑъобщениÑ"
#: locale/programs/localedef.c:130
msgid "Create old-style tables"
-msgstr ""
+msgstr "Създаване на таблици в Ñтар Ñтил"
#: locale/programs/localedef.c:131
msgid "Optional output file prefix"
-msgstr ""
+msgstr "Ðезадължителен Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð·Ð° изходен файл"
#: locale/programs/localedef.c:132
msgid "Be strictly POSIX conform"
-msgstr ""
+msgstr "Да Ñе Ñледва Ñтриктно POSIX"
#: locale/programs/localedef.c:134
msgid "Suppress warnings and information messages"
-msgstr ""
+msgstr "ПодтиÑкане на предупредителни и информационни ÑъобщениÑ"
#: locale/programs/localedef.c:135
msgid "Print more messages"
-msgstr ""
+msgstr "Извеждане на повече ÑъобщениÑ"
#: locale/programs/localedef.c:136
msgid "Archive control:"
-msgstr ""
+msgstr "Управление на архива:"
#: locale/programs/localedef.c:138
msgid "Don't add new data to archive"
-msgstr ""
+msgstr "Да не Ñе добавÑÑ‚ нови данни към архива"
#: locale/programs/localedef.c:140
msgid "Add locales named by parameters to archive"
-msgstr ""
+msgstr "ДобавÑне на локалите, указани от параметрите, към архива"
#: locale/programs/localedef.c:141
msgid "Replace existing archive content"
-msgstr ""
+msgstr "ЗамеÑтване на ÑъщеÑтвуващото Ñъдържание на архива"
#: locale/programs/localedef.c:143
msgid "Remove locales named by parameters from archive"
-msgstr ""
+msgstr "Премахване на локалите, указани от параметрите, от архива"
#: locale/programs/localedef.c:144
msgid "List content of archive"
-msgstr ""
+msgstr "ИзброÑване на Ñъдържанието на архива"
#: locale/programs/localedef.c:146
msgid "locale.alias file to consult when making archive"
-msgstr ""
+msgstr "locale.alias файл, който да Ñе вземе предвид, при правенето на архив"
#: locale/programs/localedef.c:151
msgid "Compile locale specification"
-msgstr ""
+msgstr "Компилира ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð° локал"
#: locale/programs/localedef.c:154
msgid ""
@@ -2476,27 +2534,30 @@ msgid ""
"[--add-to-archive|--delete-from-archive] FILE...\n"
"--list-archive [FILE]"
msgstr ""
+"ИМЕ\n"
+"[--add-to-archive|--delete-from-archive] ФÐЙЛ...\n"
+"--list-archive [ФÐЙЛ]"
#: locale/programs/localedef.c:232
#, c-format
msgid "cannot create directory for output files"
-msgstr ""
+msgstr "не може да Ñе Ñъздаде Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° изходните файлове"
#: locale/programs/localedef.c:243
#, c-format
msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
-msgstr ""
+msgstr "ПÐГУБÐО: ÑиÑтемата не Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ \"_POSIX2_LOCALEDEF\"\t"
#: locale/programs/localedef.c:257 locale/programs/localedef.c:273
#: locale/programs/localedef.c:599 locale/programs/localedef.c:619
#, c-format
msgid "cannot open locale definition file `%s'"
-msgstr ""
+msgstr "не е възможно да Ñе отвори файл \"%s\" Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð° локал"
#: locale/programs/localedef.c:285
#, c-format
msgid "cannot write output files to `%s'"
-msgstr ""
+msgstr "не може да Ñе запишат изходните файлове в \"%s\""
#: locale/programs/localedef.c:366
#, c-format
@@ -2506,210 +2567,214 @@ msgid ""
" locale path : %s\n"
"%s"
msgstr ""
+"СиÑтемна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° знаци: %s\n"
+" Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° набор: %s\n"
+" път за локал : %s\n"
+"%s"
#: locale/programs/localedef.c:567
#, c-format
msgid "circular dependencies between locale definitions"
-msgstr ""
+msgstr "циклични завиÑимоÑти между Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð° локал"
#: locale/programs/localedef.c:573
#, c-format
msgid "cannot add already read locale `%s' a second time"
-msgstr ""
+msgstr "не може да Ñе добави, повторно, вече Ð¿Ñ€Ð¾Ñ‡ÐµÑ‚ÐµÐ½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»\"%s\""
#: locale/programs/locarchive.c:88 locale/programs/locarchive.c:261
-#, fuzzy, c-format
+#, c-format
msgid "cannot create temporary file"
-msgstr "Ðе може да Ñе задели памет"
+msgstr "не може да Ñе Ñъздаде временен файл"
#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:307
#, c-format
msgid "cannot initialize archive file"
-msgstr ""
+msgstr "не може Ñъздаде архивниÑÑ‚ файл"
#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:314
#, c-format
msgid "cannot resize archive file"
-msgstr ""
+msgstr "не може да Ñе преоразмери Ð°Ñ€Ñ…Ð¸Ð²Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»"
#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:323
#: locale/programs/locarchive.c:527
#, c-format
msgid "cannot map archive header"
-msgstr ""
+msgstr "не може да Ñе изобрази(в паметта) заглавието на архива"
#: locale/programs/locarchive.c:156
#, c-format
msgid "failed to create new locale archive"
-msgstr ""
+msgstr "пропадна Ñъздаването на нов архив за локал"
#: locale/programs/locarchive.c:168
#, c-format
msgid "cannot change mode of new locale archive"
-msgstr ""
+msgstr "не може да Ñе променÑÑ‚ правата за доÑтъп на Ð½Ð¾Ð²Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²"
#: locale/programs/locarchive.c:255
#, c-format
msgid "cannot map locale archive file"
-msgstr ""
+msgstr "не може да Ñе изобрази(в паметта) Ð°Ñ€Ñ…Ð¸Ð²Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» за локал"
#: locale/programs/locarchive.c:331
#, c-format
msgid "cannot lock new archive"
-msgstr ""
+msgstr "не е възможно да Ñе заключи Ð½Ð¾Ð²Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²"
#: locale/programs/locarchive.c:396
#, c-format
msgid "cannot extend locale archive file"
-msgstr ""
+msgstr "не е възможно да Ñе разшири Ð°Ñ€Ñ…Ð¸Ð²Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» за локал"
#: locale/programs/locarchive.c:405
#, c-format
msgid "cannot change mode of resized locale archive"
-msgstr ""
+msgstr "не може да Ñе променÑÑ‚ правата за доÑтъп на Ð¿Ñ€ÐµÐ¾Ñ€Ð°Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²ÐµÐ½ файл за локал"
#: locale/programs/locarchive.c:413
#, c-format
msgid "cannot rename new archive"
-msgstr ""
+msgstr "не може да Ñе преименува новиÑÑ‚ архив"
#: locale/programs/locarchive.c:466
#, c-format
msgid "cannot open locale archive \"%s\""
-msgstr ""
+msgstr "не може да Ñе отвори архива за локал \"%s\""
#: locale/programs/locarchive.c:471
#, c-format
msgid "cannot stat locale archive \"%s\""
-msgstr ""
+msgstr "не може да Ñе определÑÑ‚ атрибутите на архива за локал \"%s\""
#: locale/programs/locarchive.c:490
#, c-format
msgid "cannot lock locale archive \"%s\""
-msgstr ""
+msgstr "не може да Ñе заключи архива за локал \"%s\""
#: locale/programs/locarchive.c:513
#, c-format
msgid "cannot read archive header"
-msgstr ""
+msgstr "не може да Ñе прочете заглавието на архива"
#: locale/programs/locarchive.c:573
#, c-format
msgid "locale '%s' already exists"
-msgstr ""
+msgstr "локалът \"%s\" вече ÑъщеÑтвува"
#: locale/programs/locarchive.c:804 locale/programs/locarchive.c:819
#: locale/programs/locarchive.c:831 locale/programs/locarchive.c:843
#: locale/programs/locfile.c:344
#, c-format
msgid "cannot add to locale archive"
-msgstr ""
+msgstr "не може да Ñе добави към архива за локал"
#: locale/programs/locarchive.c:998
#, c-format
msgid "locale alias file `%s' not found"
-msgstr ""
+msgstr "не е намерен файлът Ñ Ð¿Ñевдоними за локал \"%s\""
#: locale/programs/locarchive.c:1142
#, c-format
msgid "Adding %s\n"
-msgstr ""
+msgstr "ДобавÑне на %s\n"
#: locale/programs/locarchive.c:1148
#, c-format
msgid "stat of \"%s\" failed: %s: ignored"
-msgstr ""
+msgstr "определÑнето на атрибутите на \"%s\" не уÑпÑ: %s - пренебрегнато"
#: locale/programs/locarchive.c:1154
#, c-format
msgid "\"%s\" is no directory; ignored"
-msgstr ""
+msgstr "\"%s\" не е Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ - пренебрегнато"
#: locale/programs/locarchive.c:1161
#, c-format
msgid "cannot open directory \"%s\": %s: ignored"
-msgstr ""
+msgstr "не може да Ñе отвори директориÑта \"%s\": %s - пренебрегнато"
#: locale/programs/locarchive.c:1233
#, c-format
msgid "incomplete set of locale files in \"%s\""
-msgstr ""
+msgstr "непълно множеÑтво от файлове за локал в \"%s\""
#: locale/programs/locarchive.c:1297
#, c-format
msgid "cannot read all files in \"%s\": ignored"
-msgstr ""
+msgstr "не може да Ñе прочетат вÑички файлове в \"%s\" - пренебрегнато"
#: locale/programs/locarchive.c:1367
#, c-format
msgid "locale \"%s\" not in archive"
-msgstr ""
+msgstr "локалът \"%s\" не е в архива"
#: locale/programs/locfile.c:132
#, c-format
msgid "argument to `%s' must be a single character"
-msgstr ""
+msgstr "аргументът на \"%s\" Ñ‚Ñ€Ñбва да бъде единичен знак"
#: locale/programs/locfile.c:252
msgid "syntax error: not inside a locale definition section"
-msgstr ""
+msgstr "Ñинтактична грешка: извън ÑÐµÐºÑ†Ð¸Ñ Ð·Ð° определÑне на локал"
#: locale/programs/locfile.c:626
#, c-format
msgid "cannot open output file `%s' for category `%s'"
-msgstr ""
+msgstr "не може да Ñе отвори изходниÑÑ‚ файл \"%s\" за категориÑта \"%s\""
#: locale/programs/locfile.c:650
#, c-format
msgid "failure while writing data for category `%s'"
-msgstr ""
+msgstr "неуÑпех при запиÑване на данни за категориÑта \"%s\""
#: locale/programs/locfile.c:746
#, c-format
msgid "cannot create output file `%s' for category `%s'"
-msgstr ""
+msgstr "не може да Ñе Ñъздаде изходниÑÑ‚ файл \"%s\" за категориÑта \"%s\""
#: locale/programs/locfile.c:782
-msgid "expect string argument for `copy'"
-msgstr ""
+msgid "expecting string argument for `copy'"
+msgstr "очаква Ñе аргумент от тип низ за 'copy'"
#: locale/programs/locfile.c:786
msgid "locale name should consist only of portable characters"
-msgstr ""
+msgstr "името на локал Ñ‚Ñ€Ñбва да Ñъдържа Ñамо преноÑими знаци"
#: locale/programs/locfile.c:805
msgid "no other keyword shall be specified when `copy' is used"
-msgstr ""
+msgstr "не може да Ñе задават други ключови думи, когато Ñе използва \"copy\""
#: locale/programs/locfile.c:819
#, c-format
msgid "`%1$s' definition does not end with `END %1$s'"
-msgstr ""
+msgstr "\"%1$s\" определението не завършва Ñ \"END %1$s\""
-#: locale/programs/repertoire.c:230 locale/programs/repertoire.c:271
-#: locale/programs/repertoire.c:296
+#: locale/programs/repertoire.c:229 locale/programs/repertoire.c:270
+#: locale/programs/repertoire.c:295
#, c-format
msgid "syntax error in repertoire map definition: %s"
-msgstr ""
+msgstr "Ñинтактична грешка в определението за изображение на набор: %s"
-#: locale/programs/repertoire.c:272
+#: locale/programs/repertoire.c:271
msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
-msgstr ""
+msgstr "не е зададена <Uxxxx> или <Uxxxxxxxx> ÑтойноÑÑ‚"
-#: locale/programs/repertoire.c:332
+#: locale/programs/repertoire.c:331
#, c-format
msgid "cannot save new repertoire map"
-msgstr ""
+msgstr "не можа да Ñе Ñъхрани изображението за набор"
-#: locale/programs/repertoire.c:343
+#: locale/programs/repertoire.c:342
#, c-format
msgid "repertoire map file `%s' not found"
-msgstr ""
+msgstr "не е намерен файлът Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÑ‚Ð¾ за набор \"%s\""
#: login/programs/pt_chown.c:74
#, c-format
msgid "Set the owner, group and access permission of the slave pseudo terminal corresponding to the master pseudo terminal passed on file descriptor `%d'. This is the helper program for the `grantpt' function. It is not intended to be run directly from the command line.\n"
-msgstr ""
+msgstr "Задаване на ÑобÑтвеник, група и права за доÑтъп до подчинен пÑевдо-терминал ÑъответÑтващ на Ð³Ð»Ð°Ð²Ð½Ð¸Ñ Ð¿Ñевдо-терминал подаден като опиÑател на файл \"%d\". Това е помощна програма за функциÑта \"grantpt\". Ð¢Ñ Ð½Ðµ е проектирана да Ñе пуÑка директно от ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´.\n"
#: login/programs/pt_chown.c:84
#, c-format
@@ -2718,44 +2783,47 @@ msgid ""
"\n"
"%s"
msgstr ""
+"СобÑтвеникът е уÑтановен на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ», групата е уÑтановена на `%s' и правата за доÑтъп Ñа уÑтановени на \"%o\".\n"
+"\n"
+"%s"
#: login/programs/pt_chown.c:161
-#, fuzzy, c-format
+#, c-format
msgid "too many arguments"
-msgstr "Твърде много потребители"
+msgstr "твърде много аргументи"
#: login/programs/pt_chown.c:169
#, c-format
msgid "needs to be installed setuid `root'"
-msgstr ""
+msgstr "нежно е да Ñе инÑталира setuid \"root\""
#: malloc/mcheck.c:330
msgid "memory is consistent, library is buggy\n"
-msgstr ""
+msgstr "паметта е ненарушена - библиотеката е \"пълна Ñ Ð´ÑŠÑ€Ð²ÐµÐ½Ð¸Ñ†Ð¸\"\n"
#: malloc/mcheck.c:333
msgid "memory clobbered before allocated block\n"
-msgstr ""
+msgstr "паметта, преди Ð·Ð°Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð±Ð»Ð¾Ðº, е ÑÑŠÑипана\n"
#: malloc/mcheck.c:336
msgid "memory clobbered past end of allocated block\n"
-msgstr ""
+msgstr "паметта, Ñлед Ð·Ð°Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð±Ð»Ð¾Ðº, е ÑÑŠÑипана\n"
#: malloc/mcheck.c:339
msgid "block freed twice\n"
-msgstr ""
+msgstr "блокът е оÑвободен два пъти\n"
#: malloc/mcheck.c:342
msgid "bogus mcheck_status, library is buggy\n"
-msgstr ""
+msgstr "фалшив mcheck_status - библиотеката е \"пълна Ñ Ð´ÑŠÑ€Ð²ÐµÐ½Ð¸Ñ†Ð¸\"\n"
#: malloc/memusage.sh:27
msgid "Try \\`memusage --help' for more information."
-msgstr ""
+msgstr "За повече информациÑ, опитайте \"memusage --help\"."
#: malloc/memusage.sh:33
msgid "memusage: option \\`$1' requires an argument"
-msgstr ""
+msgstr "memusage: опциÑта \"$1\" изиÑква аргумент"
#: malloc/memusage.sh:39
msgid ""
@@ -2784,493 +2852,510 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
+"Употреба: memusage [ОПЦИЯ]... ПРОГРÐМР[ПРОГ_ОПЦИЯ]...\n"
+"ДиагноÑтира употребата на паметта от ПРОГРÐÐœÐ-та.\n"
+"\n"
+" -n,--progname=ИМЕ Име на Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» за диагноÑтика\n"
+" -p,--png=ФÐЙЛ Създаване на PNG-графика и запиÑването и в ФÐЙЛ\n"
+" -d,--data=ФÐЙЛ Създаване на двоичен файл Ñ Ð´Ð°Ð½Ð½Ð¸ и запиÑването му в ФÐЙЛ\n"
+" -u,--unbuffered Да не Ñе буферира изхода\n"
+" -b,--buffer=РÐЗМЕР Събиране на РÐЗМЕР запиÑа преди извеждането им\n"
+" --no-timer Да не Ñе Ñъбира допълнителна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ñ‡Ñ€ÐµÐ· хронометър\n"
+" -m,--mmap Също проÑледи mmap и приÑтели\n"
+"\n"
+" -?,--help Извеждане на тази помощ и изход\n"
+" --usage Извеждане на лаконичен Ñъвет за използване\n"
+" -V,--version Извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° верÑиÑта и изход\n"
+"\n"
+" Следните опции Ñе прилагат Ñамо при графичен изход:\n"
+" -t,--time-based Да Ñе направи линейна по време графика\n"
+" -T,--total Също начертаване на графика на общото използване на паметта\n"
+" --title=ÐИЗ Използване на ÐИЗ като заглавие на графиката\n"
+" -x,--x-size=РÐЗМЕР Създаване на графика широка РÐЗМЕР пикÑела\n"
+" -y,--y-size=РÐЗМЕР Създаване на графика виÑока РÐЗМЕР пикÑела\n"
+"\n"
+"Задължителни аргументи за \"дълги\" опции Ñа Ñъщо задължителни за вÑички\n"
+"ÑъответÑтващи \"къÑи\" опции.\n"
+"\n"
-#: malloc/memusage.sh:99
+#: malloc/memusage.sh:101
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
" [--title=STRING] [--x-size=SIZE] [--y-size=SIZE]\n"
" PROGRAM [PROGRAMOPTION]..."
msgstr ""
+"СинтакÑиÑ: memusage [--data=ФÐЙЛ] [--progname=ИМЕ] [--png=ФÐЙЛ] [--unbuffered]\n"
+" [--buffer=РÐЗМЕР] [--no-timer] [--time-based] [--total]\n"
+" [--title=ÐИЗ] [--x-size=РÐЗМЕР] [--y-size=РÐЗМЕР]\n"
+" ПРОГРÐМР[ПРОГ_ОПЦИЯ]..."
-#: malloc/memusage.sh:191
+#: malloc/memusage.sh:193
msgid "memusage: option \\`${1##*=}' is ambiguous"
-msgstr ""
+msgstr "memusage: опциÑта \"${1##*=}\" е двуÑмиÑлен"
-#: malloc/memusage.sh:200
+#: malloc/memusage.sh:202
msgid "memusage: unrecognized option \\`$1'"
-msgstr ""
+msgstr "memusage: неразпозната Ð¾Ð¿Ñ†Ð¸Ñ \"$1\""
-#: malloc/memusage.sh:213
+#: malloc/memusage.sh:215
msgid "No program name given"
-msgstr ""
+msgstr "Ðе е зададено име на програмата"
-#: malloc/memusagestat.c:54
-#, fuzzy
+#: malloc/memusagestat.c:57
msgid "Name output file"
-msgstr "Именован типов файл е"
+msgstr "Име на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»"
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:58
msgid "Title string used in output graphic"
-msgstr ""
+msgstr "Ðиз използван като заглавие при графичен изход"
-#: malloc/memusagestat.c:56
+#: malloc/memusagestat.c:59
msgid "Generate output linear to time (default is linear to number of function calls)"
-msgstr ""
+msgstr "Създаване на изход линеен по време (по подразбиране е линеен по Ð±Ñ€Ð¾Ñ Ð½Ð° извикваниÑта на функции)"
-#: malloc/memusagestat.c:58
+#: malloc/memusagestat.c:61
msgid "Also draw graph for total memory consumption"
-msgstr ""
+msgstr "Също начертаване на графика на общото използване на паметта"
-#: malloc/memusagestat.c:59
+#: malloc/memusagestat.c:62
msgid "Make output graphic VALUE pixels wide"
-msgstr ""
+msgstr "Създаване на графика широка РÐЗМЕР пикÑела"
-#: malloc/memusagestat.c:60
+#: malloc/memusagestat.c:63
msgid "Make output graphic VALUE pixels high"
-msgstr ""
+msgstr "Създаване на графика виÑока РÐЗМЕР пикÑела"
-#: malloc/memusagestat.c:65
+#: malloc/memusagestat.c:68
msgid "Generate graphic from memory profiling data"
-msgstr ""
+msgstr "Създаване на графика по диагноÑтичните данни за памет"
-#: malloc/memusagestat.c:68
+#: malloc/memusagestat.c:71
msgid "DATAFILE [OUTFILE]"
-msgstr ""
+msgstr "ФÐЙЛ_ДÐÐÐИ [ИЗХ_ФÐЙЛ]"
-#: misc/error.c:118 timezone/zic.c:417
+#: misc/error.c:118
msgid "Unknown system error"
-msgstr ""
+msgstr "ÐеизвеÑтна ÑиÑтемна грешка"
#: nis/nis_callback.c:189
-#, fuzzy
msgid "unable to free arguments"
-msgstr "Ðеправилен аргумент"
+msgstr "не може да Ñе оÑвободÑÑ‚ аргументите"
-#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr "УÑпешно"
#: nis/nis_error.h:2
msgid "Probable success"
-msgstr ""
+msgstr "ВероÑтен уÑпех"
#: nis/nis_error.h:3
-#, fuzzy
msgid "Not found"
-msgstr "Ðе е открит ноÑител"
+msgstr "Ðе е намерен"
#: nis/nis_error.h:4
msgid "Probably not found"
-msgstr ""
+msgstr "ВероÑтно не е намерен"
#: nis/nis_error.h:5
-#, fuzzy
msgid "Cache expired"
-msgstr "Изтекъл таймер"
+msgstr "ВалидноÑтта на кешът е изтекла"
# TODO
#: nis/nis_error.h:6
-#, fuzzy
msgid "NIS+ servers unreachable"
-msgstr "Мрежата е недоÑтъпна"
+msgstr "ÐедоÑтъпни NIS+ Ñървери"
#: nis/nis_error.h:7
msgid "Unknown object"
-msgstr ""
+msgstr "ÐеизвеÑтен обект"
#: nis/nis_error.h:8
msgid "Server busy, try again"
-msgstr ""
+msgstr "Сървърът е зает - опитайте отново"
# TODO
#: nis/nis_error.h:9
-#, fuzzy
msgid "Generic system error"
-msgstr "Грешка при оÑведомÑване"
+msgstr "Обща ÑиÑтемна грешка"
#: nis/nis_error.h:10
msgid "First/next chain broken"
-msgstr ""
+msgstr "Счупено първо/Ñледващо звено"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
msgstr "Отказан доÑтъп"
#: nis/nis_error.h:12
msgid "Not owner"
-msgstr ""
+msgstr "Ðе е ÑобÑтвеник"
#: nis/nis_error.h:13
msgid "Name not served by this server"
-msgstr ""
+msgstr "Името не Ñе обÑлужва от този Ñървър"
#: nis/nis_error.h:14
msgid "Server out of memory"
-msgstr ""
+msgstr "ÐедоÑтиг на памет на Ñървъра"
#: nis/nis_error.h:15
msgid "Object with same name exists"
-msgstr ""
+msgstr "СъщеÑтвува обект ÑÑŠÑ Ñъщото име"
#: nis/nis_error.h:16
msgid "Not master server for this domain"
-msgstr ""
+msgstr "Ðе е главен Ñървър за този домейн"
#: nis/nis_error.h:17
msgid "Invalid object for operation"
-msgstr ""
+msgstr "Ðеправилен обект за операциÑта"
#: nis/nis_error.h:18
msgid "Malformed name, or illegal name"
-msgstr ""
+msgstr "Деформирано или незаконно име"
#: nis/nis_error.h:19
msgid "Unable to create callback"
-msgstr ""
+msgstr "Ðе може да Ñе Ñъздаде обратна връзка"
#: nis/nis_error.h:20
msgid "Results sent to callback proc"
-msgstr ""
+msgstr "Резултата е изпратен на процедурата за обратна връзка"
#: nis/nis_error.h:21
msgid "Not found, no such name"
-msgstr ""
+msgstr "Ðе е намерено или нÑма такова име"
#: nis/nis_error.h:22
msgid "Name/entry isn't unique"
-msgstr ""
+msgstr "Името/запиÑа не е уникален"
#: nis/nis_error.h:23
msgid "Modification failed"
-msgstr ""
+msgstr "ПромÑната не уÑпÑ"
#: nis/nis_error.h:24
msgid "Database for table does not exist"
-msgstr ""
+msgstr "Ðе ÑъщеÑтвува база данни за таблицата"
#: nis/nis_error.h:25
msgid "Entry/table type mismatch"
-msgstr ""
+msgstr "ÐеÑъответÑтвие на типа за запиÑ/таблица"
#: nis/nis_error.h:26
msgid "Link points to illegal name"
-msgstr ""
+msgstr "Връзката Ñочи към незаконно име"
#: nis/nis_error.h:27
msgid "Partial success"
-msgstr ""
+msgstr "ЧаÑтичен уÑпех"
#: nis/nis_error.h:28
-#, fuzzy
msgid "Too many attributes"
-msgstr "Твърде много потребители"
+msgstr "Твърде много атрибути"
#: nis/nis_error.h:29
msgid "Error in RPC subsystem"
-msgstr ""
+msgstr "Грешка в RPC подÑиÑтемата"
#: nis/nis_error.h:30
msgid "Missing or malformed attribute"
-msgstr ""
+msgstr "ЛипÑващ или деформиран атрибут"
# TODO
#: nis/nis_error.h:31
-#, fuzzy
msgid "Named object is not searchable"
-msgstr "Мрежата е недоÑтъпна"
+msgstr "Ð˜Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚ не е доÑтъпен за Ñ‚ÑŠÑ€Ñене"
#: nis/nis_error.h:32
msgid "Error while talking to callback proc"
-msgstr ""
+msgstr "Грешка при бърборенето Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°Ñ‚Ð° за обратна връзка"
#: nis/nis_error.h:33
msgid "Non NIS+ namespace encountered"
-msgstr ""
+msgstr "СблъÑкване Ñ Ð¸Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð¾ проÑтранÑтво неÑвързано Ñ NIS+"
#: nis/nis_error.h:34
msgid "Illegal object type for operation"
-msgstr ""
+msgstr "Ðезаконен тип на обект за операциÑта"
#: nis/nis_error.h:35
msgid "Passed object is not the same object on server"
-msgstr ""
+msgstr "ПодадениÑÑ‚ обект не е ÑÑŠÑ‰Ð¸Ñ ÐºÐ°Ñ‚Ð¾ обекта на Ñървъра"
#: nis/nis_error.h:36
-#, fuzzy
msgid "Modify operation failed"
-msgstr "Отменена операциÑ"
+msgstr "Пропадна операциÑта за промÑна"
#: nis/nis_error.h:37
msgid "Query illegal for named table"
-msgstr ""
+msgstr "Ðезаконно питане за именуван обект"
#: nis/nis_error.h:38
msgid "Attempt to remove a non-empty table"
-msgstr ""
+msgstr "Опит за премахване на таблица, коÑто не е празна"
#: nis/nis_error.h:39
msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
-msgstr ""
+msgstr "Грешка при доÑтъп до файла за Ñтудено Ñтартиране на NIS+. ИнÑталиран ли е NIS+?"
#: nis/nis_error.h:40
-#, fuzzy
msgid "Full resync required for directory"
-msgstr "ÐÑма такъв файл или директориÑ"
+msgstr "За Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñе изиÑква пълно повторно Ñинхронизиране"
#: nis/nis_error.h:41
-#, fuzzy
msgid "NIS+ operation failed"
-msgstr "Отменена операциÑ"
+msgstr "Пропадна NIS+ операциÑта"
#: nis/nis_error.h:42
msgid "NIS+ service is unavailable or not installed"
-msgstr ""
+msgstr "NIS+ уÑлугата е недоÑтъпна или не е инÑталирана"
#: nis/nis_error.h:43
msgid "Yes, 42 is the meaning of life"
-msgstr ""
+msgstr "Да, 42 е ÑмиÑълът на живота"
#: nis/nis_error.h:44
msgid "Unable to authenticate NIS+ server"
-msgstr ""
+msgstr "Ðе може да Ñе уÑтанови доÑтоверноÑтта на NIS+ Ñървъра"
#: nis/nis_error.h:45
msgid "Unable to authenticate NIS+ client"
-msgstr ""
+msgstr "Ðе може да Ñе уÑтанови доÑтоверноÑтта на NIS+ клиента"
#: nis/nis_error.h:46
-#, fuzzy
msgid "No file space on server"
-msgstr "ÐÑма Ñвободно мÑÑто на уÑтройÑтвото"
+msgstr "ÐÑма Ñвободно мÑÑто на Ñървъра"
#: nis/nis_error.h:47
msgid "Unable to create process on server"
-msgstr ""
+msgstr "Ðе може да Ñе Ñъздаде Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° Ñървъра"
#: nis/nis_error.h:48
msgid "Master server busy, full dump rescheduled."
-msgstr ""
+msgstr "Ð“Ð»Ð°Ð²Ð½Ð¸Ñ Ñървър е зает, пълното разтоварване на паметта е планирано отново."
#: nis/nis_local_names.c:122
#, c-format
msgid "LOCAL entry for UID %d in directory %s not unique\n"
-msgstr ""
+msgstr "ЗапиÑа LOCAL за потребител Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ %d в каталога %s не е уникален\n"
#: nis/nis_print.c:51
msgid "UNKNOWN"
-msgstr ""
+msgstr "ÐЕИЗВЕСТЕÐ"
#: nis/nis_print.c:109
msgid "BOGUS OBJECT\n"
-msgstr ""
+msgstr "ФÐЛШИВ ОБЕКТ\n"
#: nis/nis_print.c:112
msgid "NO OBJECT\n"
-msgstr ""
+msgstr "ÐЕ Е ОБЕКТ\n"
#: nis/nis_print.c:115
msgid "DIRECTORY\n"
-msgstr ""
+msgstr "КÐТÐЛОГ\n"
#: nis/nis_print.c:118
msgid "GROUP\n"
-msgstr ""
+msgstr "ГРУПÐ\n"
#: nis/nis_print.c:121
msgid "TABLE\n"
-msgstr ""
+msgstr "ТÐБЛИЦÐ\n"
#: nis/nis_print.c:124
msgid "ENTRY\n"
-msgstr ""
+msgstr "ЗÐПИС\n"
#: nis/nis_print.c:127
msgid "LINK\n"
-msgstr ""
+msgstr "ВРЪЗКÐ\n"
#: nis/nis_print.c:130
msgid "PRIVATE\n"
-msgstr ""
+msgstr "ЧÐСТЕÐ\n"
#: nis/nis_print.c:133
msgid "(Unknown object)\n"
-msgstr ""
+msgstr "(ÐеизвеÑтен обект)\n"
#: nis/nis_print.c:167
#, c-format
msgid "Name : `%s'\n"
-msgstr ""
+msgstr "Име : \"%s\"\n"
#: nis/nis_print.c:168
#, c-format
msgid "Type : %s\n"
-msgstr ""
+msgstr "Тип : %s\n"
#: nis/nis_print.c:173
msgid "Master Server :\n"
-msgstr ""
+msgstr "Главен Ñървър :\n"
#: nis/nis_print.c:175
msgid "Replicate :\n"
-msgstr ""
+msgstr "Сървър копие :\n"
#: nis/nis_print.c:176
#, c-format
msgid "\tName : %s\n"
-msgstr ""
+msgstr "\tИме : %s\n"
#: nis/nis_print.c:177
msgid "\tPublic Key : "
-msgstr ""
+msgstr "\tПубличен ключ : "
#: nis/nis_print.c:181
msgid "None.\n"
-msgstr ""
+msgstr "Без.\n"
#: nis/nis_print.c:184
#, c-format
msgid "Diffie-Hellmann (%d bits)\n"
-msgstr ""
+msgstr "Дифи-Хелман (%d бита)\n"
#: nis/nis_print.c:189
#, c-format
msgid "RSA (%d bits)\n"
-msgstr ""
+msgstr "RSA (%d бита)\n"
#: nis/nis_print.c:192
msgid "Kerberos.\n"
-msgstr ""
+msgstr "ЦербероÑ.\n"
#: nis/nis_print.c:195
#, c-format
msgid "Unknown (type = %d, bits = %d)\n"
-msgstr ""
+msgstr "ÐеизвеÑтен (тип = %d, битове = %d)\n"
#: nis/nis_print.c:206
#, c-format
msgid "\tUniversal addresses (%u)\n"
-msgstr ""
+msgstr "\tУниверÑални адреÑи (%u)\n"
#: nis/nis_print.c:228
msgid "Time to live : "
-msgstr ""
+msgstr "Време на живот : "
#: nis/nis_print.c:230
msgid "Default Access rights :\n"
-msgstr ""
+msgstr "Права за доÑтъп по подразбиране :\n"
#: nis/nis_print.c:239
#, c-format
msgid "\tType : %s\n"
-msgstr ""
+msgstr "\tТип : %s\n"
#: nis/nis_print.c:240
msgid "\tAccess rights: "
-msgstr ""
+msgstr "\tПрава за доÑтъп: "
#: nis/nis_print.c:254
msgid "Group Flags :"
-msgstr ""
+msgstr "Флагове за групата :"
#: nis/nis_print.c:257
msgid ""
"\n"
"Group Members :\n"
msgstr ""
+"\n"
+"Членове на групата :\n"
#: nis/nis_print.c:269
#, c-format
msgid "Table Type : %s\n"
-msgstr ""
+msgstr "Тип на таблица : %s\n"
#: nis/nis_print.c:270
#, c-format
msgid "Number of Columns : %d\n"
-msgstr ""
+msgstr "Брой на колони : %d\n"
#: nis/nis_print.c:271
#, c-format
msgid "Character Separator : %c\n"
-msgstr ""
+msgstr "Разделител на знаци : %c\n"
#: nis/nis_print.c:272
#, c-format
msgid "Search Path : %s\n"
-msgstr ""
+msgstr "Път за Ñ‚ÑŠÑ€Ñене : %s\n"
#: nis/nis_print.c:273
msgid "Columns :\n"
-msgstr ""
+msgstr "Колони :\n"
#: nis/nis_print.c:276
#, c-format
msgid "\t[%d]\tName : %s\n"
-msgstr ""
+msgstr "\t[%d]\tИме : %s\n"
#: nis/nis_print.c:278
msgid "\t\tAttributes : "
-msgstr ""
+msgstr "\t\tÐтрибути : "
#: nis/nis_print.c:280
msgid "\t\tAccess Rights : "
-msgstr ""
+msgstr "\t\tПрава за доÑтъп : "
#: nis/nis_print.c:290
msgid "Linked Object Type : "
-msgstr ""
+msgstr "Тип на Ñвързан обект : "
#: nis/nis_print.c:292
#, c-format
msgid "Linked to : %s\n"
-msgstr ""
+msgstr "Свързан към : %s\n"
#: nis/nis_print.c:302
#, c-format
msgid "\tEntry data of type %s\n"
-msgstr ""
+msgstr "\tДанни за Ð·Ð°Ð¿Ð¸Ñ Ð¾Ñ‚ тип %s\n"
#: nis/nis_print.c:305
#, c-format
msgid "\t[%u] - [%u bytes] "
-msgstr ""
+msgstr "\t[%u] - [%u байта] "
#: nis/nis_print.c:308
msgid "Encrypted data\n"
-msgstr ""
+msgstr "Шифрирани данни\n"
#: nis/nis_print.c:310
msgid "Binary data\n"
-msgstr ""
+msgstr "Двоични данни\n"
#: nis/nis_print.c:326
#, c-format
msgid "Object Name : %s\n"
-msgstr ""
+msgstr "Име на обект : %s\n"
#: nis/nis_print.c:327
#, c-format
msgid "Directory : %s\n"
-msgstr ""
+msgstr "Каталог : %s\n"
#: nis/nis_print.c:328
#, c-format
msgid "Owner : %s\n"
-msgstr ""
+msgstr "СобÑтвеник : %s\n"
#: nis/nis_print.c:329
#, c-format
msgid "Group : %s\n"
-msgstr ""
+msgstr "Група : %s\n"
#: nis/nis_print.c:330
msgid "Access Rights : "
-msgstr ""
+msgstr "Права за доÑтъп : "
#: nis/nis_print.c:332
#, c-format
@@ -3278,104 +3363,106 @@ msgid ""
"\n"
"Time to Live : "
msgstr ""
+"\n"
+"Време на живот : "
#: nis/nis_print.c:335
#, c-format
msgid "Creation Time : %s"
-msgstr ""
+msgstr "Време на Ñъзд. : %s"
#: nis/nis_print.c:337
#, c-format
msgid "Mod. Time : %s"
-msgstr ""
+msgstr "Време на модиф.: %s"
#: nis/nis_print.c:338
msgid "Object Type : "
-msgstr ""
+msgstr "Тип на обект : "
#: nis/nis_print.c:358
#, c-format
msgid " Data Length = %u\n"
-msgstr ""
+msgstr "Дължина на данните = %u\n"
#: nis/nis_print.c:372
#, c-format
msgid "Status : %s\n"
-msgstr ""
+msgstr "СъÑтоÑние : %s\n"
#: nis/nis_print.c:373
#, c-format
msgid "Number of objects : %u\n"
-msgstr ""
+msgstr "Брой на обектите : %u\n"
#: nis/nis_print.c:377
#, c-format
msgid "Object #%d:\n"
-msgstr ""
+msgstr "Обект #%d:\n"
#: nis/nis_print_group_entry.c:117
#, c-format
msgid "Group entry for \"%s.%s\" group:\n"
-msgstr ""
+msgstr "Групов Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° група \"%s.%s\":\n"
#: nis/nis_print_group_entry.c:125
msgid " Explicit members:\n"
-msgstr ""
+msgstr " Явни членове:\n"
#: nis/nis_print_group_entry.c:130
msgid " No explicit members\n"
-msgstr ""
+msgstr " ÐÑма Ñвни членове\n"
#: nis/nis_print_group_entry.c:133
msgid " Implicit members:\n"
-msgstr ""
+msgstr " КоÑвени членове:\n"
#: nis/nis_print_group_entry.c:138
msgid " No implicit members\n"
-msgstr ""
+msgstr " ÐÑма коÑвени членове\n"
#: nis/nis_print_group_entry.c:141
msgid " Recursive members:\n"
-msgstr ""
+msgstr " РекурÑивни членове:\n"
#: nis/nis_print_group_entry.c:146
msgid " No recursive members\n"
-msgstr ""
+msgstr " ÐÑма рекурÑивни членове\n"
#: nis/nis_print_group_entry.c:149
msgid " Explicit nonmembers:\n"
-msgstr ""
+msgstr " Явни не-членове:\n"
#: nis/nis_print_group_entry.c:154
msgid " No explicit nonmembers\n"
-msgstr ""
+msgstr " ÐÑма Ñвни не-членове\n"
#: nis/nis_print_group_entry.c:157
msgid " Implicit nonmembers:\n"
-msgstr ""
+msgstr " КоÑвени не-членове:\n"
#: nis/nis_print_group_entry.c:162
msgid " No implicit nonmembers\n"
-msgstr ""
+msgstr " ÐÑма коÑвени не-членове\n"
#: nis/nis_print_group_entry.c:165
msgid " Recursive nonmembers:\n"
-msgstr ""
+msgstr " РекурÑивни не-членове:\n"
#: nis/nis_print_group_entry.c:170
msgid " No recursive nonmembers\n"
-msgstr ""
+msgstr " ÐÑма рекурÑивни не-членове\n"
#: nis/nss_nisplus/nisplus-publickey.c:101
#: nis/nss_nisplus/nisplus-publickey.c:183
#, c-format
msgid "DES entry for netname %s not unique\n"
-msgstr ""
+msgstr "запиÑÑŠÑ‚ DES за netname %s не е уникален\n"
#: nis/nss_nisplus/nisplus-publickey.c:220
#, c-format
msgid "netname2user: missing group id list in `%s'"
-msgstr ""
+msgstr "netname2user: липÑва ÑпиÑък на групови идентификатори в \"%s\""
#: nis/nss_nisplus/nisplus-publickey.c:302
#: nis/nss_nisplus/nisplus-publickey.c:308
@@ -3383,534 +3470,570 @@ msgstr ""
#: nis/nss_nisplus/nisplus-publickey.c:382
#, c-format
msgid "netname2user: (nis+ lookup): %s\n"
-msgstr ""
+msgstr "netname2user: (nis+ Ñ‚ÑŠÑ€Ñене): %s\n"
#: nis/nss_nisplus/nisplus-publickey.c:321
#, c-format
msgid "netname2user: DES entry for %s in directory %s not unique"
-msgstr ""
+msgstr "netname2user: запиÑÑŠÑ‚ DES %s в каталога %s не е уникален"
#: nis/nss_nisplus/nisplus-publickey.c:339
#, c-format
msgid "netname2user: principal name `%s' too long"
-msgstr ""
+msgstr "netname2user: оÑновното име \"%s\" е твърде дълго"
#: nis/nss_nisplus/nisplus-publickey.c:395
#, c-format
msgid "netname2user: LOCAL entry for %s in directory %s not unique"
-msgstr ""
+msgstr "netname2user: запиÑÑŠÑ‚ LOCAL за %s в каталога %s не е уникален"
#: nis/nss_nisplus/nisplus-publickey.c:402
msgid "netname2user: should not have uid 0"
-msgstr ""
+msgstr "netname2user: не може да има 0 за идентификатор на потребител"
-#: nis/ypclnt.c:825
+#: nis/ypclnt.c:836
msgid "Request arguments bad"
-msgstr ""
+msgstr "Ðеправилен аргумент на заÑвка"
-#: nis/ypclnt.c:828
+#: nis/ypclnt.c:839
msgid "RPC failure on NIS operation"
-msgstr ""
+msgstr "RPC неуÑпех при NIS операциÑ"
-#: nis/ypclnt.c:831
+#: nis/ypclnt.c:842
msgid "Can't bind to server which serves this domain"
-msgstr ""
+msgstr "Ðе може да Ñе привържа към Ñървъра, който обÑлужва този домейн"
-#: nis/ypclnt.c:834
+#: nis/ypclnt.c:845
msgid "No such map in server's domain"
-msgstr ""
+msgstr "ÐÑма такова изображение в домейна на Ñървъра"
-#: nis/ypclnt.c:837
-#, fuzzy
+#: nis/ypclnt.c:848
msgid "No such key in map"
-msgstr "ÐÑма такова уÑтройÑтво"
+msgstr "ÐÑма такъв ключ в изображението"
-#: nis/ypclnt.c:840
+#: nis/ypclnt.c:851
msgid "Internal NIS error"
-msgstr ""
+msgstr "Вътрешна грешка на NIS"
-#: nis/ypclnt.c:843
+#: nis/ypclnt.c:854
msgid "Local resource allocation failure"
-msgstr ""
+msgstr "ЗаделÑнето на локани реÑурÑи не уÑпÑ"
-#: nis/ypclnt.c:846
+#: nis/ypclnt.c:857
msgid "No more records in map database"
-msgstr ""
+msgstr "ÐÑма повече запиÑи в базата данни за изображениÑ"
-#: nis/ypclnt.c:849
+#: nis/ypclnt.c:860
msgid "Can't communicate with portmapper"
-msgstr ""
+msgstr "Ðе може да Ñе Ñвържа Ñ portmapper"
-#: nis/ypclnt.c:852
+#: nis/ypclnt.c:863
msgid "Can't communicate with ypbind"
-msgstr ""
+msgstr "Ðе може да Ñе Ñвържа Ñ ypbind"
-#: nis/ypclnt.c:855
+#: nis/ypclnt.c:866
msgid "Can't communicate with ypserv"
-msgstr ""
+msgstr "Ðе може да Ñе Ñвържа Ñ ypserv"
-#: nis/ypclnt.c:858
+#: nis/ypclnt.c:869
msgid "Local domain name not set"
-msgstr ""
+msgstr "Ðе е зададено локалното име на домейн "
-#: nis/ypclnt.c:861
+#: nis/ypclnt.c:872
msgid "NIS map database is bad"
-msgstr ""
+msgstr "NIS базата данни за Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ðµ неправилна"
-#: nis/ypclnt.c:864
+#: nis/ypclnt.c:875
msgid "NIS client/server version mismatch - can't supply service"
-msgstr ""
+msgstr "ÐеÑъответÑтвие на верÑиÑта на NIS клиента/Ñървъра - не може да Ñе предоÑтави уÑлугата"
-#: nis/ypclnt.c:870
+#: nis/ypclnt.c:881
msgid "Database is busy"
-msgstr ""
+msgstr "Базата данни е заета"
-#: nis/ypclnt.c:873
+#: nis/ypclnt.c:884
msgid "Unknown NIS error code"
-msgstr ""
+msgstr "ÐеизвеÑтен код за грешка на NIS"
-#: nis/ypclnt.c:913
-#, fuzzy
+#: nis/ypclnt.c:924
msgid "Internal ypbind error"
-msgstr "Канална грешка при потоци"
+msgstr "Вътрешна грешка на ypbind"
-#: nis/ypclnt.c:916
+#: nis/ypclnt.c:927
msgid "Domain not bound"
-msgstr ""
+msgstr "Домейнът не привързан"
-#: nis/ypclnt.c:919
+#: nis/ypclnt.c:930
msgid "System resource allocation failure"
-msgstr ""
+msgstr "ЗаделÑнето на ÑиÑтемни реÑурÑи Ñе провали"
-#: nis/ypclnt.c:922
+#: nis/ypclnt.c:933
msgid "Unknown ypbind error"
-msgstr ""
+msgstr "ÐеизвеÑтна грешка на ypbind"
-#: nis/ypclnt.c:963
+#: nis/ypclnt.c:974
msgid "yp_update: cannot convert host to netname\n"
-msgstr ""
+msgstr "yp_update: не може да Ñе преобразува от име на компютър към мрежово\n"
-#: nis/ypclnt.c:981
+#: nis/ypclnt.c:992
msgid "yp_update: cannot get server address\n"
-msgstr ""
+msgstr "yp_update: не може да Ñе вземе адреÑÑŠÑ‚ на Ñървъра\n"
-#: nscd/aicache.c:77 nscd/hstcache.c:462
+#: nscd/aicache.c:82 nscd/hstcache.c:481
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
-msgstr ""
+msgstr "Ðе е намерен \"%s\" в кеша Ñ Ð¸Ð¼ÐµÐ½Ð° на компютри!"
-#: nscd/aicache.c:79 nscd/hstcache.c:464
+#: nscd/aicache.c:84 nscd/hstcache.c:483
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
-msgstr ""
+msgstr "Презареждане на \"%s\" в кеша Ñ Ð¸Ð¼ÐµÐ½Ð° на компютри!"
-#: nscd/cache.c:146
+#: nscd/cache.c:150
#, c-format
msgid "add new entry \"%s\" of type %s for %s to cache%s"
-msgstr ""
+msgstr "добавÑне на нов Ð·Ð°Ð¿Ð¸Ñ \"%s\", от тип %s, за %s, към кеша%s"
-#: nscd/cache.c:148
+#: nscd/cache.c:152
msgid " (first)"
-msgstr ""
+msgstr " (първи)"
-#: nscd/cache.c:256 nscd/connections.c:786
+#: nscd/cache.c:286 nscd/connections.c:866
#, c-format
msgid "cannot stat() file `%s': %s"
-msgstr ""
+msgstr "не може да Ñе изпълни stat() за файла \"%s\": %s"
-#: nscd/cache.c:285
+#: nscd/cache.c:328
#, c-format
msgid "pruning %s cache; time %ld"
-msgstr ""
+msgstr "подрÑзване на кеша %s - Ñ‡Ð°Ñ %ld"
-#: nscd/cache.c:312
+#: nscd/cache.c:357
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
-msgstr ""
+msgstr "разглеждане на Ð·Ð°Ð¿Ð¸Ñ %s \"%s\", проÑрочка %<PRIu64>"
-#: nscd/connections.c:505 nscd/connections.c:517 nscd/connections.c:529
-#: nscd/connections.c:548
+#: nscd/connections.c:570
#, c-format
msgid "invalid persistent database file \"%s\": %s"
-msgstr ""
+msgstr "неправилен файл за поÑтоÑнна база данни \"%s\": %s"
-#: nscd/connections.c:519
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr "неинициализирано заглавие"
+
+#: nscd/connections.c:583
msgid "header size does not match"
-msgstr ""
+msgstr "не ÑъответÑтва размерът на заглавието"
-#: nscd/connections.c:531
+#: nscd/connections.c:593
msgid "file size does not match"
-msgstr ""
+msgstr "не ÑъответÑтва размерът на файлът"
-#: nscd/connections.c:550
-#, fuzzy
+#: nscd/connections.c:610
msgid "verification failed"
-msgstr "Отменена операциÑ"
+msgstr "проверката пропадна"
-#: nscd/connections.c:564
+#: nscd/connections.c:624
#, c-format
msgid "suggested size of table for database %s larger than the persistent database's table"
-msgstr ""
+msgstr "предложениÑÑ‚ размен на таблица за базата данни %s е по-голÑм от таблицата в поÑтоÑнната база данни"
-#: nscd/connections.c:574 nscd/connections.c:655
+#: nscd/connections.c:635 nscd/connections.c:720
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
-msgstr ""
+msgstr "не може да Ñе Ñъздаде опиÑание за \"%s\" - нÑма изображение в паметта"
+
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr "'%s' не е доÑтъпен"
-#: nscd/connections.c:634
+#: nscd/connections.c:699
#, c-format
msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
-msgstr ""
+msgstr "базата данни за %s е повредена или Ñе използва едновременно - ако е необходимо премахнете ръчно %s и пуÑнете отново"
-#: nscd/connections.c:641
+#: nscd/connections.c:706
#, c-format
msgid "cannot create %s; no persistent database used"
-msgstr ""
+msgstr "не може да Ñе Ñъздаде %s - не Ñе използва поÑтоÑнна база данни"
-#: nscd/connections.c:644
+#: nscd/connections.c:709
#, c-format
msgid "cannot create %s; no sharing possible"
-msgstr ""
+msgstr "не може да Ñе Ñъздаде %s - не е възможно ÑподелÑне"
-#: nscd/connections.c:715
+#: nscd/connections.c:780
#, c-format
msgid "cannot write to database file %s: %s"
-msgstr ""
+msgstr "не може да Ñе запише във файла на базата данни %s: %s"
-#: nscd/connections.c:749
+#: nscd/connections.c:819
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
-msgstr ""
+msgstr "не може да Ñе зададе затварÑне на гнездо, при извикване на exec: %s - забранÑване на параноичен режим"
-#: nscd/connections.c:799
+#: nscd/connections.c:902
#, c-format
msgid "cannot open socket: %s"
-msgstr ""
+msgstr "не може да Ñе отвори гнездо: %s"
-#: nscd/connections.c:816
+#: nscd/connections.c:922
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
-msgstr ""
+msgstr "не може да Ñе приведе гнездото в не-блокиращ режим: %s"
-#: nscd/connections.c:824
+#: nscd/connections.c:930
#, c-format
msgid "cannot set socket to close on exec: %s"
-msgstr ""
+msgstr "не може да Ñе зададе гнездото да Ñе затвори, при извикване на exec: %s"
-#: nscd/connections.c:835
+#: nscd/connections.c:943
#, c-format
msgid "cannot enable socket to accept connections: %s"
-msgstr ""
+msgstr "не може да Ñе направи гнездото да приеме ÑвързваниÑ: %s"
-#: nscd/connections.c:926
+#: nscd/connections.c:1043
#, c-format
msgid "provide access to FD %d, for %s"
-msgstr ""
+msgstr "оÑигурÑване на доÑтъп, до файлов деÑкриптор %d, за %s"
-#: nscd/connections.c:938
+#: nscd/connections.c:1055
#, c-format
msgid "cannot handle old request version %d; current version is %d"
-msgstr ""
+msgstr "не може да Ñе обработи заÑвка от Ñтара верÑÐ¸Ñ %d - текущата верÑÐ¸Ñ Ðµ %d"
-#: nscd/connections.c:980 nscd/connections.c:1033
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr "заÑвката от %ld не е обработена поради липÑващи права"
+
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr "заÑвката от '%s' [%ld] не е обработена поради липÑващи права"
+
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr "заÑвката не е обработена поради липÑващи права"
+
+#: nscd/connections.c:1125 nscd/connections.c:1178
#, c-format
msgid "cannot write result: %s"
-msgstr ""
+msgstr "не може да Ñе запише резултата: %s"
-#: nscd/connections.c:1116
+#: nscd/connections.c:1261
#, c-format
msgid "error getting caller's id: %s"
-msgstr ""
+msgstr "грешка при получаване на идентификатора на извикващиÑ: %s"
-#: nscd/connections.c:1175
+#: nscd/connections.c:1320
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
-msgstr ""
+msgstr "не може да Ñе отвори /proc/self/cmdline: %s- забранÑване на Ð¿Ð°Ñ€Ð°Ð½Ð¾Ð¸Ñ‡Ð½Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼"
-#: nscd/connections.c:1189
+#: nscd/connections.c:1334
#, c-format
msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
-msgstr ""
+msgstr "не може да Ñе прочете /proc/self/cmdline: %s - забранÑване на Ð¿Ð°Ñ€Ð°Ð½Ð¾Ð¸Ñ‡Ð½Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼"
-#: nscd/connections.c:1229
+#: nscd/connections.c:1374
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
-msgstr ""
+msgstr "не може да Ñе върне към Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¸Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ на потребител: %s - забранÑване на Ð¿Ð°Ñ€Ð°Ð½Ð¾Ð¸Ñ‡Ð½Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼"
-#: nscd/connections.c:1239
+#: nscd/connections.c:1384
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
-msgstr ""
+msgstr "не може да Ñе върне към Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¸Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ на група: %s - забранÑване на Ð¿Ð°Ñ€Ð°Ð½Ð¾Ð¸Ñ‡Ð½Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼"
-#: nscd/connections.c:1252
+#: nscd/connections.c:1397
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
-msgstr ""
+msgstr "не може да Ñе върне към предишната работна директориÑ: %s - забранÑване на Ð¿Ð°Ñ€Ð°Ð½Ð¾Ð¸Ñ‡Ð½Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼"
-#: nscd/connections.c:1280
+#: nscd/connections.c:1429
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
-msgstr ""
+msgstr "повторното изпълнение не уÑпÑ: %s - забранÑване на Ð¿Ð°Ñ€Ð°Ð½Ð¾Ð¸Ñ‡Ð½Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼"
-#: nscd/connections.c:1289
+#: nscd/connections.c:1438
#, c-format
msgid "cannot change current working directory to \"/\": %s"
-msgstr ""
+msgstr "не може да Ñе Ñмени текущата работна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° \"/\": %s"
-#: nscd/connections.c:1407
+#: nscd/connections.c:1644
#, c-format
msgid "short read while reading request: %s"
-msgstr ""
+msgstr "недоÑтиг при четене докато Ñе четеше заÑвката: %s"
-#: nscd/connections.c:1438
+#: nscd/connections.c:1677
#, c-format
msgid "key length in request too long: %d"
-msgstr ""
+msgstr "дължината на ключа в заÑвката е твърде голÑма: %d"
-#: nscd/connections.c:1451
+#: nscd/connections.c:1690
#, c-format
msgid "short read while reading request key: %s"
-msgstr ""
+msgstr "недоÑтиг при четене докато Ñе четеше заÑÐ²ÐµÐ½Ð¸Ñ ÐºÐ»ÑŽÑ‡: %s"
-#: nscd/connections.c:1460
+#: nscd/connections.c:1699
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
-msgstr ""
+msgstr "handle_request: получена заÑвка (верÑÐ¸Ñ = %d) от Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð¾Ð¼ÐµÑ€(PID) %ld"
-#: nscd/connections.c:1465
+#: nscd/connections.c:1704
#, c-format
msgid "handle_request: request received (Version = %d)"
-msgstr ""
+msgstr "handle_request: получена заÑвка (верÑÐ¸Ñ = %d)"
-#: nscd/connections.c:1826
+#: nscd/connections.c:1903 nscd/connections.c:2101
#, c-format
-msgid "could only start %d threads; terminating"
-msgstr ""
+msgid "disabled inotify after read error %d"
+msgstr "inotify е забранен Ñлед грешка при четене %d"
-#: nscd/connections.c:1874 nscd/connections.c:1875 nscd/connections.c:1892
-#: nscd/connections.c:1901 nscd/connections.c:1919 nscd/connections.c:1930
-#: nscd/connections.c:1941
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr "не може да Ñе инициализира уÑловна променлива"
+
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr "не може да Ñе Ñтартира почиÑтваща нишка; прекратÑване"
+
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr "не може да Ñе Ñтартира работна нишка; прекратÑване"
+
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
#, c-format
msgid "Failed to run nscd as user '%s'"
-msgstr ""
+msgstr "Ðе уÑÐ¿Ñ Ð´Ð° Ñе пуÑне nscd от името на потребител \"%s\""
-#: nscd/connections.c:1893
+#: nscd/connections.c:2322
#, c-format
msgid "initial getgrouplist failed"
-msgstr ""
+msgstr "първоначалниÑÑ‚ getgrouplist не уÑпÑ"
-#: nscd/connections.c:1902
+#: nscd/connections.c:2331
#, c-format
msgid "getgrouplist failed"
-msgstr ""
+msgstr "getgrouplist не уÑпÑ"
-#: nscd/connections.c:1920
+#: nscd/connections.c:2349
#, c-format
msgid "setgroups failed"
-msgstr ""
+msgstr "setgroups не уÑпÑ"
-#: nscd/grpcache.c:402 nscd/hstcache.c:412 nscd/initgrcache.c:412
-#: nscd/pwdcache.c:397 nscd/servicescache.c:342
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
#, c-format
msgid "short write in %s: %s"
-msgstr ""
+msgstr "недоÑтиг при Ð·Ð°Ð¿Ð¸Ñ Ð² %s: %s"
-#: nscd/grpcache.c:445 nscd/initgrcache.c:78
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
-msgstr ""
+msgstr "Ðе е намерено \"%s\" в кеша за групи!"
-#: nscd/grpcache.c:447 nscd/initgrcache.c:80
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
-msgstr ""
+msgstr "Презареждане на \"%s\" в кеша за групи!"
-#: nscd/grpcache.c:524
+#: nscd/grpcache.c:517
#, c-format
msgid "Invalid numeric gid \"%s\"!"
-msgstr ""
+msgstr "Ðеправилен цифров идентификатор на група \"%s\"!"
-#: nscd/mem.c:383
+#: nscd/mem.c:457
#, c-format
msgid "freed %zu bytes in %s cache"
-msgstr ""
+msgstr "оÑвободени %zu байта в кеша %s"
-#: nscd/mem.c:512
+#: nscd/mem.c:594
#, c-format
msgid "no more memory for database '%s'"
-msgstr ""
+msgstr "недоÑтатъчно памет за базата данни \"%s\""
-#: nscd/nscd.c:98
+#: nscd/nscd.c:101
msgid "Read configuration data from NAME"
-msgstr ""
+msgstr "Прочитане на данни за конфигурациÑта от ИМЕ"
-#: nscd/nscd.c:100
+#: nscd/nscd.c:103
msgid "Do not fork and display messages on the current tty"
-msgstr ""
+msgstr "Да не Ñе разклонÑва и на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð» да Ñе извеждат ÑъобщениÑ"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "NUMBER"
-msgstr ""
+msgstr "БРОЙ"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "Start NUMBER threads"
-msgstr ""
+msgstr "ПуÑкане на БРОЙ нишки"
-#: nscd/nscd.c:102
+#: nscd/nscd.c:105
msgid "Shut the server down"
-msgstr ""
+msgstr "Изключване на Ñървъра"
-#: nscd/nscd.c:103
-msgid "Print current configuration statistic"
-msgstr ""
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
+msgstr "Извеждане на текуща ÑтатиÑтика за конфигурациÑта"
-#: nscd/nscd.c:104
+#: nscd/nscd.c:107
msgid "TABLE"
-msgstr ""
+msgstr "ТÐБЛИЦÐ"
-#: nscd/nscd.c:105
+#: nscd/nscd.c:108
msgid "Invalidate the specified cache"
-msgstr ""
+msgstr "Ðнулиране на Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð¸Ñ ÐºÐµÑˆ"
-#: nscd/nscd.c:106
+#: nscd/nscd.c:109
msgid "TABLE,yes"
-msgstr ""
+msgstr "ТÐБЛИЦÐ,yes"
-#: nscd/nscd.c:107
+#: nscd/nscd.c:110
msgid "Use separate cache for each user"
-msgstr ""
+msgstr "Да Ñе използва отделен кеш за вÑеки потребител"
-#: nscd/nscd.c:112
+#: nscd/nscd.c:115
msgid "Name Service Cache Daemon."
-msgstr ""
+msgstr "Демон на уÑлуга за кеширане на имена(nscd)."
-#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
-#, fuzzy, c-format
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
+#, c-format
msgid "wrong number of arguments"
-msgstr "Ðомер на връзка извън диапазона"
+msgstr "неправилен брой на аргументи"
-#: nscd/nscd.c:154
+#: nscd/nscd.c:157
#, c-format
msgid "failure while reading configuration file; this is fatal"
-msgstr ""
+msgstr "четенето на конфигурационниÑÑ‚ файл не уÑпÑва - това е пагубно"
-#: nscd/nscd.c:163
+#: nscd/nscd.c:166
#, c-format
msgid "already running"
-msgstr ""
+msgstr "вече е пуÑнат"
-#: nscd/nscd.c:178 nscd/nscd.c:233
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
msgid "cannot fork"
-msgstr ""
+msgstr "не може да Ñе разклони"
-#: nscd/nscd.c:241
+#: nscd/nscd.c:244
#, c-format
msgid "cannot change current working directory to \"/\""
-msgstr ""
+msgstr "не може да Ñе Ñмени текущата работна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° \"/\""
-#: nscd/nscd.c:249
+#: nscd/nscd.c:252
msgid "Could not create log file"
-msgstr ""
+msgstr "Ðе може да Ñе Ñъздаде региÑтрационен файл"
-#: nscd/nscd.c:302 nscd/nscd.c:327 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
msgid "Only root is allowed to use this option!"
-msgstr ""
+msgstr "Разрешено е Ñамо Ñуперпотребител да използва тази опциÑ!"
-#: nscd/nscd.c:364 nscd/nscd_stat.c:191
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr "'%s' не е позната база данни"
+
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
msgid "write incomplete"
-msgstr ""
+msgstr "непълно запиÑване"
-#: nscd/nscd.c:375
+#: nscd/nscd.c:381
#, c-format
msgid "cannot read invalidate ACK"
-msgstr ""
+msgstr "не може да Ñе прочете потвърждение за анулиране"
-#: nscd/nscd.c:381
+#: nscd/nscd.c:387
#, c-format
msgid "invalidation failed"
-msgstr ""
+msgstr "анулирането пропадна"
-#: nscd/nscd.c:391
+#: nscd/nscd.c:397
#, c-format
msgid "secure services not implemented anymore"
-msgstr ""
+msgstr "Ñигурни уÑлуги нÑма да Ñе реализират повече"
#: nscd/nscd_conf.c:57
-#, fuzzy, c-format
+#, c-format
msgid "database %s is not supported"
-msgstr "Ðеподдържана операциÑ"
+msgstr "не Ñе поддържа базата данни %s"
# TODO
#: nscd/nscd_conf.c:108
-#, fuzzy, c-format
+#, c-format
msgid "Parse error: %s"
-msgstr "Грешка при оÑведомÑване"
+msgstr "Грешка при разбор: %s"
-#: nscd/nscd_conf.c:193
+#: nscd/nscd_conf.c:194
#, c-format
msgid "Must specify user name for server-user option"
-msgstr ""
+msgstr "ТрÑбва да Ñе зададе потребителÑко име за опциÑта server-user\""
-#: nscd/nscd_conf.c:200
+#: nscd/nscd_conf.c:201
#, c-format
msgid "Must specify user name for stat-user option"
-msgstr ""
+msgstr "ТрÑбва да Ñе зададе потребителÑко име за опциÑта \"stat-user\""
-#: nscd/nscd_conf.c:244
+#: nscd/nscd_conf.c:245
#, c-format
msgid "invalid value for 'reload-count': %u"
-msgstr ""
+msgstr "неправилна ÑтойноÑÑ‚ за \"reload-count\": %u"
-#: nscd/nscd_conf.c:259
+#: nscd/nscd_conf.c:260
#, c-format
msgid "Must specify value for restart-interval option"
-msgstr ""
+msgstr "ТрÑбва да Ñе зададе ÑтойноÑÑ‚ за интервала на реÑтартиране"
-#: nscd/nscd_conf.c:273
+#: nscd/nscd_conf.c:274
#, c-format
msgid "Unknown option: %s %s %s"
-msgstr ""
+msgstr "ÐеизвеÑтна опциÑ: %s %s %s"
-#: nscd/nscd_conf.c:286
+#: nscd/nscd_conf.c:287
#, c-format
msgid "cannot get current working directory: %s; disabling paranoia mode"
-msgstr ""
+msgstr "не може да Ñе взема текущата работна директориÑ: %s - забранÑване на Ð¿Ð°Ñ€Ð°Ð½Ð¾Ð¸Ñ‡Ð½Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼"
-#: nscd/nscd_conf.c:306
+#: nscd/nscd_conf.c:307
#, c-format
msgid "maximum file size for %s database too small"
-msgstr ""
+msgstr "макÑималниÑÑ‚ размер на файл, за база данни %s, е много малък"
#: nscd/nscd_stat.c:141
#, c-format
msgid "cannot write statistics: %s"
-msgstr ""
+msgstr "не може да Ñе запише ÑтатиÑтиката: %s"
#: nscd/nscd_stat.c:156
msgid "yes"
-msgstr ""
+msgstr "да"
#: nscd/nscd_stat.c:157
msgid "no"
-msgstr ""
+msgstr "не"
#: nscd/nscd_stat.c:168
#, c-format
msgid "Only root or %s is allowed to use this option!"
-msgstr ""
+msgstr "Разрешено е Ñамо на Ñуперпотребител или %s да използва тази опциÑ!"
#: nscd/nscd_stat.c:179
#, c-format
msgid "nscd not running!\n"
-msgstr ""
+msgstr "nscd не е пуÑнат!\n"
#: nscd/nscd_stat.c:203
#, c-format
msgid "cannot read statistics data"
-msgstr ""
+msgstr "не може да Ñе прочетат ÑтатиÑтичеÑките данни"
#: nscd/nscd_stat.c:206
#, c-format
@@ -3919,26 +4042,29 @@ msgid ""
"\n"
"%15d server debug level\n"
msgstr ""
+"ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð½Ð° nscd:\n"
+"\n"
+"%15d ниво за теÑтова Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð½Ð° Ñървъра\n"
#: nscd/nscd_stat.c:230
#, c-format
msgid "%3ud %2uh %2um %2lus server runtime\n"
-msgstr ""
+msgstr "%3uд %2uч %2uм %2luÑ Ð²Ñ€ÐµÐ¼Ðµ на работа на Ñървъра\n"
#: nscd/nscd_stat.c:233
#, c-format
msgid " %2uh %2um %2lus server runtime\n"
-msgstr ""
+msgstr " %2uч %2uм %2luÑ Ð²Ñ€ÐµÐ¼Ðµ на работа на Ñървъра\n"
#: nscd/nscd_stat.c:235
#, c-format
msgid " %2um %2lus server runtime\n"
-msgstr ""
+msgstr " %2uм %2luÑ Ð²Ñ€ÐµÐ¼Ðµ на работа на Ñървъра\n"
#: nscd/nscd_stat.c:237
#, c-format
msgid " %2lus server runtime\n"
-msgstr ""
+msgstr " %2luÑ Ð²Ñ€ÐµÐ¼Ðµ на работа на Ñървъра\n"
#: nscd/nscd_stat.c:239
#, c-format
@@ -3949,6 +4075,11 @@ msgid ""
"%15s paranoia mode enabled\n"
"%15lu restart internal\n"
msgstr ""
+"%15d текущ брой нишки\n"
+"%15d макÑимален брой нишки\n"
+"%15lu брой на Ñлучаите, когато клиента е чакал\n"
+"%15s разрешен параноичен режим\n"
+"%15lu вътрешни реÑтартираниÑ\n"
#: nscd/nscd_stat.c:273
#, c-format
@@ -3977,94 +4108,121 @@ msgid ""
"%15<PRIuMAX> memory allocations failed\n"
"%15s check /etc/%s for changes\n"
msgstr ""
-
-#: nscd/pwdcache.c:440
+"\n"
+"%s кеш:\n"
+"\n"
+"%15s кешът е разрешен\n"
+"%15s кешът е поÑтоÑнен\n"
+"%15s кешът е Ñподелен\n"
+"%15zu предложен размер\n"
+"%15zu общ обем на пул за данни\n"
+"%15zu използван обем на пул за данни\n"
+"%15lu време на живот, в Ñекунди, за положителни запиÑи\n"
+"%15lu време на живот, в Ñекунди, за отрицателни запиÑи\n"
+"%15<PRIuMAX> Ð¿Ð¾Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð·Ð° положителни запиÑи\n"
+"%15<PRIuMAX> Ð¿Ð¾Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð·Ð° отрицателни запиÑи\n"
+"%15<PRIuMAX> пропуÑÐºÐ°Ð½Ð¸Ñ Ð·Ð° положителни запиÑи\n"
+"%15<PRIuMAX> пропуÑÐºÐ°Ð½Ð¸Ñ Ð·Ð° отрицателни запиÑи\n"
+"%15lu%% чеÑтота на Ð¿Ð¾Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð² кеша\n"
+"%15zu текущ брой на кешираните значениÑ\n"
+"%15zu макÑимален брой на кешираните значениÑ\n"
+"%15zu макÑимална дължина на веригата при Ñ‚ÑŠÑ€Ñене\n"
+"%15<PRIuMAX> брой на задържаниÑта на rdlock\n"
+"%15<PRIuMAX> брой на задържаниÑта на wrlock\n"
+"%15<PRIuMAX> пропаднали заделÑÐ½Ð¸Ñ Ð½Ð° памет\n"
+"%15s Ñледене на /etc/%s за промÑна\n"
+
+#: nscd/pwdcache.c:443
#, c-format
msgid "Haven't found \"%s\" in password cache!"
-msgstr ""
+msgstr "В кеша за пароли не е намерен \"%s\"!"
-#: nscd/pwdcache.c:442
+#: nscd/pwdcache.c:445
#, c-format
msgid "Reloading \"%s\" in password cache!"
-msgstr ""
+msgstr "Презареждане на \"%s\" в кеша за пароли!"
-#: nscd/pwdcache.c:520
+#: nscd/pwdcache.c:523
#, c-format
msgid "Invalid numeric uid \"%s\"!"
-msgstr ""
+msgstr "Ðеправилен чиÑлов идентификатор на потребител \"%s\"!"
#: nscd/selinux.c:156
#, c-format
msgid "Failed opening connection to the audit subsystem: %m"
-msgstr ""
+msgstr "Пропадна отварÑнето на връзка към подÑиÑтемата за Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ Ð¸ контрол: %m"
#: nscd/selinux.c:177
msgid "Failed to set keep-capabilities"
-msgstr ""
+msgstr "Ðе можа да Ñе вдигне флага \"задръж-ÑпоÑобноÑти\""
#: nscd/selinux.c:178 nscd/selinux.c:241
#, c-format
msgid "prctl(KEEPCAPS) failed"
-msgstr ""
+msgstr "prctl(KEEPCAPS) не уÑпÑ"
#: nscd/selinux.c:192
msgid "Failed to initialize drop of capabilities"
-msgstr ""
+msgstr "Ðе можа да Ñе подготви ÑвалÑнето на \"ÑпоÑобноÑтите\""
#: nscd/selinux.c:193
#, c-format
msgid "cap_init failed"
-msgstr ""
+msgstr "cap_init не уÑпÑ"
#: nscd/selinux.c:214 nscd/selinux.c:231
msgid "Failed to drop capabilities"
-msgstr ""
+msgstr "Ðе можаха да Ñе ÑвалÑÑ‚ \"ÑпоÑобноÑтите\""
#: nscd/selinux.c:215 nscd/selinux.c:232
#, c-format
msgid "cap_set_proc failed"
-msgstr ""
+msgstr "cap_set_proc не уÑпÑ"
#: nscd/selinux.c:240
msgid "Failed to unset keep-capabilities"
-msgstr ""
+msgstr "Ðе можа да Ñе Ñвали флагът \"задръж-ÑпоÑобноÑти\""
#: nscd/selinux.c:256
msgid "Failed to determine if kernel supports SELinux"
-msgstr ""
+msgstr "Ðе можа да Ñе уÑтанови дали Ñдрото поддържа SELinux"
#: nscd/selinux.c:271
#, c-format
msgid "Failed to start AVC thread"
-msgstr ""
+msgstr "Ðе можа да Ñе пуÑне нишка за AVC"
#: nscd/selinux.c:293
#, c-format
msgid "Failed to create AVC lock"
-msgstr ""
+msgstr "Ðе можа да Ñе Ñъздаде заключване за AVC"
#: nscd/selinux.c:333
-#, fuzzy, c-format
+#, c-format
msgid "Failed to start AVC"
-msgstr "Твърде голÑм файл"
+msgstr "Пропадна пуÑкането на AVC"
#: nscd/selinux.c:335
msgid "Access Vector Cache (AVC) started"
-msgstr ""
+msgstr "Access Vector Cache (AVC) пуÑнат"
#: nscd/selinux.c:356
msgid "Error getting context of socket peer"
-msgstr ""
+msgstr "Грешка при извличане, от гнездото, на контекÑта на другата Ñтрана"
#: nscd/selinux.c:361
msgid "Error getting context of nscd"
-msgstr ""
+msgstr "Грешка при взимане на контекÑта на nscd"
#: nscd/selinux.c:367
msgid "Error getting sid from context"
-msgstr ""
+msgstr "Грешка при извличане на sid от контекÑта"
+
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr "при компилирането не е зададена подръжка на правила в базата данни"
-#: nscd/selinux.c:399
+#: nscd/selinux.c:407
#, c-format
msgid ""
"\n"
@@ -4079,65 +4237,74 @@ msgid ""
"%15u CAV probes\n"
"%15u CAV misses\n"
msgstr ""
+"\n"
+"СтатиÑтика за SELinux AVC:\n"
+"\n"
+"%15u Ñ‚ÑŠÑ€ÑÐµÐ½Ð¸Ñ Ð½Ð° запиÑи\n"
+"%15u Ð¿Ð¾Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð½Ð° запиÑи\n"
+"%15u пропуÑÐºÐ°Ð½Ð¸Ñ Ð½Ð° запиÑи\n"
+"%15u отхвърлÑÐ½Ð¸Ñ Ð½Ð° запиÑи\n"
+"%15u CAV Ñ‚ÑŠÑ€ÑениÑ\n"
+"%15u CAV попадениÑ\n"
+"%15u CAV проверки\n"
+"%15u CAV пропуÑканиÑ\n"
-#: nscd/servicescache.c:389
+#: nscd/servicescache.c:390
#, c-format
msgid "Haven't found \"%s\" in services cache!"
-msgstr ""
+msgstr "Ðе е намерен \"%s\" в кеша на уÑлугите!"
-#: nscd/servicescache.c:391
+#: nscd/servicescache.c:392
#, c-format
msgid "Reloading \"%s\" in services cache!"
-msgstr ""
+msgstr "Презареждане на \"%s\" в кеша на уÑлугите!"
#: nss/getent.c:52
msgid "database [key ...]"
-msgstr ""
+msgstr "база_данни [ключ ...]"
#: nss/getent.c:57
msgid "Service configuration to be used"
-msgstr ""
+msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð½Ð° уÑлугата, коÑто да Ñе използва"
#: nss/getent.c:62
-msgid ""
-"Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
+msgid "Get entries from administrative database."
+msgstr "Получаване на запиÑи от админиÑтративна база данни."
-#: nss/getent.c:145 nss/getent.c:394
-#, fuzzy, c-format
+#: nss/getent.c:143 nss/getent.c:408
+#, c-format
msgid "Enumeration not supported on %s\n"
-msgstr "Ðеподдържана операциÑ"
+msgstr "Ðе Ñе поддържа изброим тип от %s\n"
-#: nss/getent.c:782
+#: nss/getent.c:794
#, c-format
msgid "Unknown database name"
-msgstr ""
+msgstr "ÐеизвеÑтно има на база данни"
-#: nss/getent.c:808
+#: nss/getent.c:820
msgid "Supported databases:\n"
-msgstr ""
+msgstr "Поддържани бази данни:\n"
-#: nss/getent.c:868
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
-msgstr ""
+msgstr "ÐеизвеÑтна база данни: %s\n"
#: nss/makedb.c:60
msgid "Convert key to lower case"
-msgstr ""
+msgstr "Обръщане на ключ в малки букви"
#: nss/makedb.c:63
msgid "Do not print messages while building database"
-msgstr ""
+msgstr "Да не Ñе извеждат ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð¾ÐºÐ°Ñ‚Ð¾ Ñе Ñъздава базата данни"
#: nss/makedb.c:65
msgid "Print content of database file, one entry a line"
-msgstr ""
+msgstr "Извеждане на Ñъдържание на файл от базата данни, по един Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° ред"
#: nss/makedb.c:70
msgid "Create simple DB database from textual input."
-msgstr ""
+msgstr "Създаване на проÑта база данни от текÑтовите входни данни."
#: nss/makedb.c:73
msgid ""
@@ -4145,855 +4312,928 @@ msgid ""
"-o OUTPUT-FILE INPUT-FILE\n"
"-u INPUT-FILE"
msgstr ""
+"ВХОДЕÐ-ФÐЙЛ ИЗХОДЕÐ-ФÐЙЛ\n"
+"-o ИЗХОДЕÐ-ФÐЙЛ ВХОДЕÐ-ФÐЙЛ\n"
+"-u ВХОДЕÐ-ФÐЙЛ"
#: nss/makedb.c:142
#, c-format
msgid "No usable database library found."
-msgstr ""
+msgstr "Ðе е намерена подходÑща библиотека за база данни."
#: nss/makedb.c:149
#, c-format
msgid "cannot open database file `%s': %s"
-msgstr ""
+msgstr "не може да Ñе отвори файлът на базата данни \"%s\": %s"
#: nss/makedb.c:151
msgid "incorrectly formatted file"
-msgstr ""
+msgstr "файл Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщ формат"
#: nss/makedb.c:331
msgid "duplicate key"
-msgstr ""
+msgstr "повторение на ключ"
#: nss/makedb.c:337
#, c-format
msgid "while writing database file"
-msgstr ""
+msgstr "при четене на файла на базата данни"
#: nss/makedb.c:348
#, c-format
msgid "problems while reading `%s'"
-msgstr ""
+msgstr "проблеми при прочитането на \"%s\""
#: nss/makedb.c:368 nss/makedb.c:385
#, c-format
msgid "while reading database"
-msgstr ""
+msgstr "при прочитането на базата данни"
#: posix/getconf.c:945
#, c-format
msgid "Usage: %s [-v specification] variable_name [pathname]\n"
-msgstr ""
+msgstr "Употреба: %s [-v уточнÑване] име_на_променлива [път]\n"
#: posix/getconf.c:948
#, c-format
msgid " %s -a [pathname]\n"
+msgstr " %s -a [път]\n"
+
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
msgstr ""
+"Употреба: getconf [-v СПЕЦИФ] ПРОМ\n"
+" или: getconf [-v СПЕЦИФ] ПЪТ_ПРОМ ПЪТ\n"
+"\n"
+"Получаване на конфигурираната ÑтойноÑÑ‚ за променлива ПРОМ или за променлива\n"
+"ПЪТ_ПРОМ от Ð¿ÑŠÑ‚Ñ ÐŸÐªÐ¢. Ðко е зададена СПЕЦИФ, Ñе дава ÑтойноÑтта на\n"
+"променливата при компилиране.\n"
+"\n"
-#: posix/getconf.c:1067
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
-msgstr ""
+msgstr "неизвеÑтно уточнÑване \"%s\""
-#: posix/getconf.c:1095
+#: posix/getconf.c:1109
#, c-format
msgid "Couldn't execute %s"
-msgstr ""
+msgstr "Ðе може да Ñе изпълни %s"
-#: posix/getconf.c:1135 posix/getconf.c:1151
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
-msgstr ""
+msgstr "неопределен"
-#: posix/getconf.c:1173
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
-msgstr ""
+msgstr "Ðеразпозната променлива \"%s\""
-#: posix/getopt.c:571 posix/getopt.c:587
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
msgid "%s: option '%s' is ambiguous\n"
-msgstr ""
+msgstr "%s: опциÑта '%s' е двуÑмиÑлена\n"
-#: posix/getopt.c:620 posix/getopt.c:624
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr ""
+msgstr "%s: опциÑта '--%s' не позволÑва аргумент\n"
-#: posix/getopt.c:633 posix/getopt.c:638
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr ""
+msgstr "%s: опциÑта '%c%s' не позволÑва аргумент\n"
-#: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
-#: posix/getopt.c:1035
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
msgid "%s: option '%s' requires an argument\n"
-msgstr ""
+msgstr "%s: опциÑта '%s' изиÑква аргумент\n"
-#: posix/getopt.c:738 posix/getopt.c:741
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
msgid "%s: unrecognized option '--%s'\n"
-msgstr ""
+msgstr "%s: неразпозната Ð¾Ð¿Ñ†Ð¸Ñ '--%s'\n"
-#: posix/getopt.c:749 posix/getopt.c:752
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
-msgstr ""
-
-#: posix/getopt.c:804 posix/getopt.c:807
-#, c-format
-msgid "%s: illegal option -- '%c'\n"
-msgstr ""
+msgstr "%s: неразпозната Ð¾Ð¿Ñ†Ð¸Ñ '%c%s'\n"
-#: posix/getopt.c:813 posix/getopt.c:816
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
msgid "%s: invalid option -- '%c'\n"
-msgstr ""
+msgstr "%s: неправилна Ð¾Ð¿Ñ†Ð¸Ñ -- '%c'\n"
-#: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
-#: posix/getopt.c:1106
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
-msgstr ""
+msgstr "%s: опциÑта изиÑква аргумент -- '%c'\n"
-#: posix/getopt.c:937 posix/getopt.c:953
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
-msgstr ""
+msgstr "%s: опциÑта '-W %s' е двуÑмиÑлена\n"
-#: posix/getopt.c:977 posix/getopt.c:995
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr ""
+msgstr "%s: опциÑта '-W %s' не позволÑва аргумент\n"
-#: posix/regcomp.c:135
+#: posix/regcomp.c:136
msgid "No match"
-msgstr ""
+msgstr "ÐеÑъответÑтвие"
-#: posix/regcomp.c:138
-#, fuzzy
+#: posix/regcomp.c:139
msgid "Invalid regular expression"
-msgstr "Ðеправилен аргумент"
+msgstr "Ðеправилен регулÑрен израз"
-#: posix/regcomp.c:141
-#, fuzzy
+#: posix/regcomp.c:142
msgid "Invalid collation character"
-msgstr "Ðеправилен или непълен многобайтов или широк пиÑмен знак"
+msgstr "Ðеправилен Ñимвол за Ñравнение на знаци"
-#: posix/regcomp.c:144
+#: posix/regcomp.c:145
msgid "Invalid character class name"
-msgstr ""
+msgstr "Ðеправилно име на ÐºÐ»Ð°Ñ Ð·Ð° знаци"
-#: posix/regcomp.c:147
+#: posix/regcomp.c:148
msgid "Trailing backslash"
-msgstr ""
+msgstr "Обратна наклонена черта в краÑ"
-#: posix/regcomp.c:150
-#, fuzzy
+#: posix/regcomp.c:151
msgid "Invalid back reference"
-msgstr "Ðеправилен аргумент"
+msgstr "Ðеправилна препратка назад"
-#: posix/regcomp.c:153
+#: posix/regcomp.c:154
msgid "Unmatched [ or [^"
-msgstr ""
+msgstr "ÐеÑъответÑтвие на [ или [^"
-#: posix/regcomp.c:156
+#: posix/regcomp.c:157
msgid "Unmatched ( or \\("
-msgstr ""
+msgstr "ÐеÑъответÑтвие на ( или \\("
-#: posix/regcomp.c:159
+#: posix/regcomp.c:160
msgid "Unmatched \\{"
-msgstr ""
+msgstr "ÐеÑъответÑтвие на \\{"
-#: posix/regcomp.c:162
+#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
-msgstr ""
+msgstr "Ðеправилно Ñъдържание в \\{\\}"
-#: posix/regcomp.c:165
-#, fuzzy
+#: posix/regcomp.c:166
msgid "Invalid range end"
-msgstr "Ðеправилен аргумент"
+msgstr "Ðеправилен край за диапазон"
-#: posix/regcomp.c:168
+#: posix/regcomp.c:169
msgid "Memory exhausted"
-msgstr ""
+msgstr "Паметта е изчерпана"
-#: posix/regcomp.c:171
+#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
-msgstr ""
+msgstr "Ðеправилен предшеÑтващ регулÑрен израз"
-#: posix/regcomp.c:174
+#: posix/regcomp.c:175
msgid "Premature end of regular expression"
-msgstr ""
+msgstr "Преждевременен край на регулÑрниÑÑ‚ израз"
-#: posix/regcomp.c:177
+#: posix/regcomp.c:178
msgid "Regular expression too big"
-msgstr ""
+msgstr "РегулÑрниÑÑ‚ израз е твърде дълъг"
-#: posix/regcomp.c:180
+#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
-msgstr ""
+msgstr "ÐеÑъответÑтвие на ) или \\)"
-#: posix/regcomp.c:660
+#: posix/regcomp.c:681
msgid "No previous regular expression"
-msgstr ""
+msgstr "ЛипÑва предишен регулÑрен израз"
-#: posix/wordexp.c:1798
+#: posix/wordexp.c:1832
msgid "parameter null or not set"
-msgstr ""
+msgstr "параметърът е празен или не е зададен"
#: resolv/herror.c:68
msgid "Resolver Error 0 (no error)"
-msgstr ""
+msgstr "Грешка 0 на \"resolver\" (нÑма грешка)"
#: resolv/herror.c:69
msgid "Unknown host"
-msgstr ""
+msgstr "ÐеизвеÑтно име на компютър"
#: resolv/herror.c:70
msgid "Host name lookup failure"
-msgstr ""
+msgstr "ÐеуÑпех при Ñ‚ÑŠÑ€Ñенето на името на компютъра"
#: resolv/herror.c:71
msgid "Unknown server error"
-msgstr ""
+msgstr "ÐеизвеÑтна Ñървърна грешка"
#: resolv/herror.c:72
msgid "No address associated with name"
-msgstr ""
+msgstr "За това име не е аÑоцииран адреÑ"
#: resolv/herror.c:107
msgid "Resolver internal error"
-msgstr ""
+msgstr "Вътрешна грешка на \"resolver\""
#: resolv/herror.c:110
msgid "Unknown resolver error"
-msgstr ""
+msgstr "ÐеизвеÑтна грешка на \"resolver\""
#: resolv/res_hconf.c:124
#, c-format
msgid "%s: line %d: cannot specify more than %d trim domains"
-msgstr ""
+msgstr "%s: ред %d: не може да Ñе зададът повече от %d домейна за изрÑзване"
#: resolv/res_hconf.c:145
#, c-format
msgid "%s: line %d: list delimiter not followed by domain"
-msgstr ""
+msgstr "%s: ред %d: разделителÑÑ‚ за ÑпиÑък не е поÑледван от домейн"
#: resolv/res_hconf.c:204
#, c-format
msgid "%s: line %d: expected `on' or `off', found `%s'\n"
-msgstr ""
+msgstr "%s: ред %d: очаква Ñе \"on\" или \"off\", а е намерено \"%s\"\n"
#: resolv/res_hconf.c:247
#, c-format
msgid "%s: line %d: bad command `%s'\n"
-msgstr ""
+msgstr "%s: ред %d: неправилна команда \"%s\"\n"
#: resolv/res_hconf.c:282
#, c-format
msgid "%s: line %d: ignoring trailing garbage `%s'\n"
-msgstr ""
+msgstr "%s: ред %d: пренебрегване на оÑÑ‚Ð°Ð½Ð°Ð»Ð¸Ñ Ð±Ð¾ÐºÐ»ÑƒÐº \"%s\"\n"
#: stdio-common/psignal.c:51
#, c-format
msgid "%s%sUnknown signal %d\n"
-msgstr ""
+msgstr "%s%sÐеизвеÑтен Ñигнал %d\n"
#: stdio-common/psignal.c:52
msgid "Unknown signal"
-msgstr ""
+msgstr "ÐеизвеÑтен Ñигнал"
#: string/_strerror.c:45 sysdeps/mach/_strerror.c:87
msgid "Unknown error "
-msgstr ""
+msgstr "ÐеизвеÑтна грешка "
# TODO
#: string/strerror.c:43
-#, fuzzy
msgid "Unknown error"
-msgstr "Грешка при srmount"
+msgstr "ÐеизвеÑтна грешка"
#: string/strsignal.c:65
#, c-format
msgid "Real-time signal %d"
-msgstr ""
+msgstr "Сигнал %d при реално време"
#: string/strsignal.c:69
#, c-format
msgid "Unknown signal %d"
-msgstr ""
+msgstr "ÐеизвеÑтен Ñигнал %d"
-#: sunrpc/auth_unix.c:114
-msgid "authunix_create: out of memory\n"
-msgstr ""
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "недоÑтиг на памет\n"
#: sunrpc/auth_unix.c:350
msgid "auth_unix.c: Fatal marshalling problem"
-msgstr ""
+msgstr "auth_unix.c: Пагубен проблем при прехвърлÑне на данни"
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr ""
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s: %s; мин. верÑиÑ= %lu, макÑ. верÑÐ¸Ñ = %lu"
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr ""
+#: sunrpc/clnt_perr.c:112
+#, c-format
+msgid "%s: %s; why = %s\n"
+msgstr "%s: %s; причина = %s\n"
-#: sunrpc/clnt_perr.c:132
-#, fuzzy, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "Грешка при удоÑтоверÑване (authentication)"
+#: sunrpc/clnt_perr.c:114
+#, c-format
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s: %s; причина = (неизвеÑтна грешка при удоÑтоверÑване - %d)\n"
-#: sunrpc/clnt_perr.c:172
-#, fuzzy
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
-msgstr "УÑпешно"
+msgstr "RPC: УÑпешно"
-#: sunrpc/clnt_perr.c:175
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
-msgstr ""
+msgstr "RPC: Ðе може да Ñе поÑтроÑÑ‚ аргументите"
-#: sunrpc/clnt_perr.c:179
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
-msgstr ""
+msgstr "RPC: Ðе може да Ñе преобразува резултатът"
-#: sunrpc/clnt_perr.c:183
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
-msgstr ""
+msgstr "RPC: Ðе може да Ñе изпраща"
-#: sunrpc/clnt_perr.c:187
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
-msgstr ""
+msgstr "RPC: Ðе може да Ñе приема"
-#: sunrpc/clnt_perr.c:191
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
-msgstr ""
+msgstr "RPC: ПроÑрочване"
-#: sunrpc/clnt_perr.c:195
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
-msgstr ""
+msgstr "RPC: ÐеÑъвмеÑтима верÑÐ¸Ñ Ð½Ð° RPC"
-#: sunrpc/clnt_perr.c:199
-#, fuzzy
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
-msgstr "Грешка при удоÑтоверÑване (authentication)"
+msgstr "RPC: Грешка при удоÑтоверÑване"
-#: sunrpc/clnt_perr.c:203
-#, fuzzy
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
-msgstr "ÐедоÑтъпна RPC-програма"
+msgstr "RPC: ÐедоÑтъпна програма"
-#: sunrpc/clnt_perr.c:207
-#, fuzzy
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
-msgstr "Ðеправилна верÑÐ¸Ñ Ð½Ð° RPC-програма"
+msgstr "RPC: ÐеÑъответÑтвие при програма/верÑиÑ"
-#: sunrpc/clnt_perr.c:211
-#, fuzzy
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
-msgstr "ÐедоÑтъпна RPC-програма"
+msgstr "RPC: ÐедоÑтъпна процедура"
-#: sunrpc/clnt_perr.c:215
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
-msgstr ""
+msgstr "RPC: Сървърът не може да преобразува аргументите"
-#: sunrpc/clnt_perr.c:219
-#, fuzzy
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
-msgstr "Отдалечена входно-изходна грешка"
+msgstr "RPC: Отдалечена ÑиÑтемна грешка"
-#: sunrpc/clnt_perr.c:223
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
-msgstr ""
+msgstr "RPC: ÐеизвеÑтно име на компютър"
-#: sunrpc/clnt_perr.c:227
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
-msgstr ""
+msgstr "RPC: ÐеизвеÑтен протокол"
-#: sunrpc/clnt_perr.c:231
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
-msgstr ""
+msgstr "RPC: ÐÐ²Ð°Ñ€Ð¸Ñ Ð² portmapper"
-#: sunrpc/clnt_perr.c:235
-#, fuzzy
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
-msgstr "ÐедоÑтъпна RPC-програма"
+msgstr "RPC: програмата не е региÑтрирана"
-#: sunrpc/clnt_perr.c:239
-#, fuzzy
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
-msgstr "RFS-грешка"
+msgstr "RPC: ÐеуÑпех (неопределена грешка)"
-#: sunrpc/clnt_perr.c:280
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
-msgstr ""
+msgstr "RPC: (неизвеÑтен код за грешка)"
-#: sunrpc/clnt_perr.c:342
-#, fuzzy
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
-msgstr "Грешка при удоÑтоверÑване (authentication)"
+msgstr "УÑпешно удоÑтоверÑване"
-#: sunrpc/clnt_perr.c:345
-#, fuzzy
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
-msgstr "Ðеправилен код на заÑвка"
+msgstr "Ðеправилни клиентÑки препоръки"
-#: sunrpc/clnt_perr.c:349
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
-msgstr ""
+msgstr "Сървърът Ð¾Ñ‚Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¿Ñ€ÐµÐ¿Ð¾Ñ€ÑŠÐºÐ¸Ñ‚Ðµ"
-#: sunrpc/clnt_perr.c:353
-#, fuzzy
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
-msgstr "Ðеправилен деÑкриптор на заÑвка"
+msgstr "Ðеправилни \"данни за проверка\" от клиента"
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
-msgstr ""
+msgstr "Сървърът Ð¾Ñ‚Ñ…Ð²ÑŠÑ€Ð»Ñ \"данните за проверка\""
-#: sunrpc/clnt_perr.c:361
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
-msgstr ""
+msgstr "КлиентÑките препоръки Ñа твърде ненадеждни"
-#: sunrpc/clnt_perr.c:365
-#, fuzzy
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
-msgstr "Ðеправилен деÑкриптор на заÑвка"
+msgstr "Ðеправилни \"данни за проверка\" от Ñървъра"
-#: sunrpc/clnt_perr.c:369
-#, fuzzy
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
-msgstr "RFS-грешка"
+msgstr "ÐеуÑпех (неопределена грешка)"
#: sunrpc/clnt_raw.c:117
msgid "clnt_raw.c: fatal header serialization error"
-msgstr ""
-
-#: sunrpc/clnt_tcp.c:131
-msgid "clnttcp_create: out of memory\n"
-msgstr ""
-
-#: sunrpc/clnt_udp.c:139
-msgid "clntudp_create: out of memory\n"
-msgstr ""
-
-#: sunrpc/clnt_unix.c:128
-msgid "clntunix_create: out of memory\n"
-msgstr ""
+msgstr "clnt_raw.c: пагубна грешка при издаването на чаÑти на заглавието"
#: sunrpc/pm_getmaps.c:83
msgid "pmap_getmaps.c: rpc problem"
-msgstr ""
+msgstr "pmap_getmaps.c: rpc проблем"
#: sunrpc/pmap_clnt.c:129
msgid "Cannot register service"
-msgstr ""
+msgstr "Ðе може да Ñе региÑтрира уÑлуга"
#: sunrpc/pmap_rmt.c:248
msgid "Cannot create socket for broadcast rpc"
-msgstr ""
+msgstr "Ðе може да Ñе Ñъздаде гнездо за разпръÑкване на rpc"
#: sunrpc/pmap_rmt.c:255
msgid "Cannot set socket option SO_BROADCAST"
-msgstr ""
+msgstr "Ðа гнездото не може да Ñе уÑтанови флага SO_BROADCAST"
#: sunrpc/pmap_rmt.c:307
msgid "Cannot send broadcast packet"
-msgstr ""
+msgstr "Ðе може да Ñе изпрати пакет за разпръÑкване"
#: sunrpc/pmap_rmt.c:332
msgid "Broadcast poll problem"
-msgstr ""
+msgstr "Проблем от poll при разпръÑкване"
#: sunrpc/pmap_rmt.c:345
msgid "Cannot receive reply to broadcast"
-msgstr ""
+msgstr "Ðе може да Ñе получи отговор на разпръÑкването"
-#: sunrpc/rpc_main.c:286
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
-msgstr ""
+msgstr "%s: извеждането ще презапише %s\n"
-#: sunrpc/rpc_main.c:293
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
-msgstr ""
+msgstr "%s: не може да Ñе отвори %s: %m\n"
-#: sunrpc/rpc_main.c:305
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
-msgstr ""
+msgstr "%s: при запиÑване на изхода %s: %m"
-#: sunrpc/rpc_main.c:340
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
-msgstr ""
+msgstr "не е намерен Си препроцеÑор: %s \n"
-#: sunrpc/rpc_main.c:348
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
-msgstr ""
+msgstr "не е намерен никакъв Си препроцеÑор (cpp)\n"
-#: sunrpc/rpc_main.c:417
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
-msgstr ""
+msgstr "%s: Си препроцеÑорът пропадна ÑÑŠÑ Ñигнал %d\n"
-#: sunrpc/rpc_main.c:420
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
-msgstr ""
+msgstr "%s: Си препроцеÑорът пропадна Ñ ÐºÐ¾Ð´ за излизане %d\n"
-#: sunrpc/rpc_main.c:460
+#: sunrpc/rpc_main.c:464
#, c-format
msgid "illegal nettype: `%s'\n"
-msgstr ""
+msgstr "незаконен мреж_тип: \"%s\"\n"
-#: sunrpc/rpc_main.c:1122
+#: sunrpc/rpc_main.c:1130
#, c-format
msgid "rpcgen: too many defines\n"
-msgstr ""
+msgstr "rpcgen: твърде много дефиниции\n"
-#: sunrpc/rpc_main.c:1134
+#: sunrpc/rpc_main.c:1142
#, c-format
msgid "rpcgen: arglist coding error\n"
-msgstr ""
+msgstr "rpcgen: грешка при Ñъздаване на ÑпиÑък Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸(arglist)\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1167
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
-msgstr ""
+msgstr "файлът \"%s\" ÑъщеÑтвува и може да бъде презапиÑан\n"
-#: sunrpc/rpc_main.c:1212
+#: sunrpc/rpc_main.c:1220
#, c-format
msgid "Cannot specify more than one input file!\n"
-msgstr ""
+msgstr "Ðе може да Ñе зададе повече от един входен файл!\n"
-#: sunrpc/rpc_main.c:1382
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
-msgstr ""
+msgstr "Тази Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ðµ поддържа Ð½Ð¾Ð²Ð¸Ñ Ñтил или безопаÑен многонишков код!\n"
-#: sunrpc/rpc_main.c:1391
+#: sunrpc/rpc_main.c:1403
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
-msgstr ""
+msgstr "Ðе може да Ñе използва флагът мреж_ид заедно Ñ Ñ„Ð»Ð°Ð³Ð° inetd!\n"
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
-msgstr ""
+msgstr "Ðе може да Ñе използва флагът мреж_ид без TIRPC!\n"
-#: sunrpc/rpc_main.c:1410
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
-msgstr ""
+msgstr "Ðе може да Ñе използват флагове за таблица при Ð½Ð¾Ð²Ð¸Ñ Ñтил!\n"
-#: sunrpc/rpc_main.c:1429
+#: sunrpc/rpc_main.c:1441
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
-msgstr ""
+msgstr "\"вх_файл\" е необходим за флаговете за Ñъздаване на шаблони.\n"
-#: sunrpc/rpc_main.c:1434
+#: sunrpc/rpc_main.c:1446
#, c-format
msgid "Cannot have more than one file generation flag!\n"
-msgstr ""
+msgstr "Ðе може да Ñе използва повече от един флаг Ñъздаващ файл!\n"
-#: sunrpc/rpc_main.c:1443
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
-msgstr ""
+msgstr "употреба: %s вх_файл\n"
-#: sunrpc/rpc_main.c:1444
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
-msgstr ""
+msgstr "\t%s [-abkCLNTM][-Dиме[=ÑтойноÑÑ‚]] [-i размер] [-I [-K Ñекунди]] [-Y път] вх_файл\n"
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
-msgstr ""
+msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o изх_файл] [вх_файл]\n"
-#: sunrpc/rpc_main.c:1448
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
-msgstr ""
+msgstr "\t%s [-s мреж_тип]* [-o изх_файл] [вх_файл]\n"
-#: sunrpc/rpc_main.c:1449
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
-msgstr ""
+msgstr "\t%s [-n мреж_ид]* [-o изх_файл] [вх_файл]\n"
+
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr "опции:\n"
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr "-a\t\tÑъздаване на вÑички файлове, включително примерни\n"
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr "-b\t\tрежим на ÑъвмеÑтимоÑÑ‚ Ñ Ð¿Ñ€ÐµÐ´Ð¸ (Ñъздаване на код за SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr "-c\t\tÑъздаване на XDR методи\n"
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr "-C\t\tANSI Си режим\n"
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr "-Dиме[=ÑтойноÑÑ‚]\tдефиниране на Ñимвол (Ñъщо като #define)\n"
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr "-h\t\tÑъздаване на заглавен файл\n"
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr "-i размер\t\tразмер при който започва Ñъздаване на вграден код\n"
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr "-I\t\tÑъздаване на код в Ñървера, за поддръжка на inetd (за SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr "-K Ñекунди\tÑървера напуÑка Ñлед K Ñекунди бездейÑтвие\n"
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr "-l\t\tÑъздаване на празни клиентÑки методи\n"
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr "-L\t\tизвеждане на Ñърверни грешки в syslog\n"
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr "-m\t\tÑъздаване на празни Ñърверни методи\n"
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr "-M\t\tÑъздаване на безопаÑен многонишков код\n"
+
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr "-n мреж_ид\tÑъздаване на Ñърверен код поддържащ именуван мреж_ид\n"
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr "-N\t\tподдръжка на много аргументи и извикване по ÑтойноÑÑ‚\n"
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr "-o изхфайл\tиме на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»\n"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr "-s мреж_тип\tÑъздаване на Ñърверен код поддържащ именуван мреж_тип\n"
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr "-Sc\t\tÑъздаване на примерен клиентÑки код, който използва отдалечени процедури\n"
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr "-Ss\t\tÑъздаване на примерен Ñърверен код, който дефинира отдалечени процедури\n"
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr "-Sm \t\tÑъздаване на makefile шаблон \n"
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr "-t\t\tÑъздаване на RPC препращаща таблица\n"
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr "-T\t\tÑъздаване на код поддържащ RPC препращаща таблица\n"
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr "-Y път\t\tиме на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° Ñ‚ÑŠÑ€Ñене на Си препроцеÑор (cpp)\n"
#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
-msgstr ""
+msgstr "очаква Ñе конÑтанта или идентификатор"
#: sunrpc/rpc_scan.c:310
msgid "illegal character in file: "
-msgstr ""
+msgstr "незаконен знак в файла: "
#: sunrpc/rpc_scan.c:349 sunrpc/rpc_scan.c:375
msgid "unterminated string constant"
-msgstr ""
+msgstr "незавършена конÑтанта от тип низ"
#: sunrpc/rpc_scan.c:381
msgid "empty char string"
-msgstr ""
+msgstr "празен низ"
#: sunrpc/rpc_scan.c:523 sunrpc/rpc_scan.c:533
-#, fuzzy
msgid "preprocessor error"
-msgstr "Протоколна грешка"
+msgstr "грешка при преработка"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
-#, fuzzy, c-format
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
+#, c-format
msgid "program %lu is not available\n"
-msgstr "ÐедоÑтъпна RPC-програма"
+msgstr "програмата %lu не е доÑтъпна\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
-#, fuzzy, c-format
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
+#, c-format
msgid "program %lu version %lu is not available\n"
-msgstr "ÐедоÑтъпна RPC-програма"
+msgstr "програмата %lu, верÑÐ¸Ñ %lu, не е доÑтъпна\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
-msgstr ""
+msgstr "програмата %lu, верÑÐ¸Ñ %lu, е готова и очаква\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
-msgstr ""
+msgstr "rpcinfo: не може да Ñе Ñвържа Ñ portmapper"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
-msgstr ""
+msgstr "Отдалечената програма не е региÑтрирана.\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
-msgstr ""
+msgstr " прог. в-Ñ Ð¿Ñ€Ð¾Ñ‚. порт\n"
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
-msgstr ""
+msgstr "(неизвеÑтен)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
-msgstr ""
+msgstr "rpcinfo: разпръÑкването пропадна: %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
-msgstr ""
+msgstr "За Ñъжаление, Вие не Ñте Ñуперпотребител\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
-msgstr ""
+msgstr "rpcinfo: Ðе може да Ñе премахне региÑтрациÑта на програма %s, верÑÐ¸Ñ %s\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
-msgstr ""
+msgstr "Употреба: rpcinfo [ -n ном_порт ] -u компютър ном_прог [ ном_вер ]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
-msgstr ""
+msgstr " rpcinfo [ -n ном_порт ] -t компютър ном_прог [ ном_вер ]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
-msgstr ""
+msgstr " rpcinfo -p [ компютър ]\n"
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
-msgstr ""
+msgstr " rpcinfo -b ном_прог ном_вер\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
-msgstr ""
+msgstr " rpcinfo -d ном_прог ном_вер\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
-msgstr ""
+msgstr "rpcinfo: неизвеÑтна уÑлуга %s\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
-msgstr ""
+msgstr "rpcinfo: неизвеÑтен компютър %s\n"
#: sunrpc/svc_run.c:70
msgid "svc_run: - out of memory"
-msgstr ""
+msgstr "svc_run: - недоÑтиг на памет"
#: sunrpc/svc_run.c:90
msgid "svc_run: - poll failed"
-msgstr ""
+msgstr "svc_run: - poll не уÑпÑ"
#: sunrpc/svc_simple.c:87
#, c-format
msgid "can't reassign procedure number %ld\n"
-msgstr ""
+msgstr "не може да Ñе преназначи процедура номер %ld\n"
#: sunrpc/svc_simple.c:97
msgid "couldn't create an rpc server\n"
-msgstr ""
+msgstr "не можа да Ñе Ñъздаде rpc Ñървър\n"
#: sunrpc/svc_simple.c:105
#, c-format
msgid "couldn't register prog %ld vers %ld\n"
-msgstr ""
+msgstr "не можа да Ñе региÑтрира програма %ld, верÑÐ¸Ñ %ld\n"
#: sunrpc/svc_simple.c:113
msgid "registerrpc: out of memory\n"
-msgstr ""
+msgstr "registerrpc: недоÑтиг на памет\n"
#: sunrpc/svc_simple.c:173
#, c-format
msgid "trouble replying to prog %d\n"
-msgstr ""
+msgstr "повреда при отговарÑне на програма %d\n"
#: sunrpc/svc_simple.c:182
#, c-format
msgid "never registered prog %d\n"
-msgstr ""
+msgstr "никога не е региÑтрирана програма %d\n"
#: sunrpc/svc_tcp.c:155
msgid "svc_tcp.c - tcp socket creation problem"
-msgstr ""
+msgstr "svc_tcp.c - проблем при Ñъздаване на tcp гнездо"
#: sunrpc/svc_tcp.c:170
msgid "svc_tcp.c - cannot getsockname or listen"
-msgstr ""
-
-#: sunrpc/svc_tcp.c:179
-msgid "svctcp_create: out of memory\n"
-msgstr ""
-
-#: sunrpc/svc_tcp.c:218
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr ""
+msgstr "svc_tcp.c - getsockname или listen не уÑпÑ"
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
-msgstr ""
+msgstr "svcudp_create: проблем при Ñъздаване на гнезда"
#: sunrpc/svc_udp.c:142
msgid "svcudp_create - cannot getsockname"
-msgstr ""
+msgstr "svcudp_create - getsockname не уÑпÑ"
-#: sunrpc/svc_udp.c:152
-msgid "svcudp_create: out of memory\n"
-msgstr ""
-
-#: sunrpc/svc_udp.c:174
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
-msgstr ""
+msgstr "svcudp_create: xp_pad е твърде малък за IP_PKTINFO\n"
-#: sunrpc/svc_udp.c:474
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
-msgstr ""
+msgstr "enablecache: кешът вече е разрешен"
-#: sunrpc/svc_udp.c:480
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
-msgstr ""
+msgstr "enablecache: не може да Ñе задели кеш"
-#: sunrpc/svc_udp.c:489
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
-msgstr ""
+msgstr "enablecache: не може да Ñе задели за данни на кеша"
-#: sunrpc/svc_udp.c:497
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
-msgstr ""
+msgstr "enablecache: не може да Ñе задели за буфер(fifo) на кеша"
-#: sunrpc/svc_udp.c:532
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
-msgstr ""
+msgstr "cache_set: жертвата не е намерена"
-#: sunrpc/svc_udp.c:543
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
-msgstr ""
+msgstr "cache_set: заделÑнето на памет за жертвата пропадна"
-#: sunrpc/svc_udp.c:550
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
-msgstr ""
+msgstr "cache_set: не може да Ñе задели нов rpc_buffer"
#: sunrpc/svc_unix.c:150
msgid "svc_unix.c - AF_UNIX socket creation problem"
-msgstr ""
+msgstr "svc_unix.c - проблем при Ñъздаване на Ð®Ð½Ð¸ÐºÑ Ð´Ð¾Ð¼ÐµÐ¹Ð½ гнезда"
#: sunrpc/svc_unix.c:166
msgid "svc_unix.c - cannot getsockname or listen"
-msgstr ""
-
-#: sunrpc/svc_unix.c:176
-msgid "svcunix_create: out of memory\n"
-msgstr ""
-
-#: sunrpc/svc_unix.c:215
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr ""
-
-#: sunrpc/xdr.c:566
-msgid "xdr_bytes: out of memory\n"
-msgstr ""
-
-#: sunrpc/xdr.c:718
-msgid "xdr_string: out of memory\n"
-msgstr ""
-
-#: sunrpc/xdr_array.c:106
-msgid "xdr_array: out of memory\n"
-msgstr ""
-
-#: sunrpc/xdr_rec.c:156
-msgid "xdrrec_create: out of memory\n"
-msgstr ""
-
-#: sunrpc/xdr_ref.c:86
-msgid "xdr_reference: out of memory\n"
-msgstr ""
+msgstr "svc_unix.c - getsockname или listen не уÑпÑва"
#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
msgid "Hangup"
-msgstr ""
+msgstr "Затворено"
#: sysdeps/generic/siglist.h:30 sysdeps/unix/siglist.c:28
msgid "Interrupt"
-msgstr ""
+msgstr "ПрекъÑване"
#: sysdeps/generic/siglist.h:31 sysdeps/unix/siglist.c:29
msgid "Quit"
-msgstr ""
+msgstr "Излизане"
#: sysdeps/generic/siglist.h:32 sysdeps/unix/siglist.c:30
msgid "Illegal instruction"
-msgstr ""
+msgstr "Ðезаконна инÑтрукциÑ"
#: sysdeps/generic/siglist.h:33 sysdeps/unix/siglist.c:31
msgid "Trace/breakpoint trap"
-msgstr ""
+msgstr "Прихващане на траÑиране/точка на прекъÑване"
#: sysdeps/generic/siglist.h:34
msgid "Aborted"
-msgstr ""
+msgstr "ПрекъÑнат"
#: sysdeps/generic/siglist.h:35 sysdeps/unix/siglist.c:34
msgid "Floating point exception"
-msgstr ""
+msgstr "Изключение при плаваща запетаÑ"
#: sysdeps/generic/siglist.h:36 sysdeps/unix/siglist.c:35
msgid "Killed"
-msgstr ""
+msgstr "БезуÑловно прекъÑнат"
# TODO
#: sysdeps/generic/siglist.h:37 sysdeps/unix/siglist.c:36
-#, fuzzy
msgid "Bus error"
-msgstr "Безпричинна грешка"
+msgstr "Грешка на адреÑната шина"
#: sysdeps/generic/siglist.h:38 sysdeps/unix/siglist.c:37
msgid "Segmentation fault"
-msgstr ""
+msgstr "Ðарушение на разделÑнето(segfault)"
#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
#. TRANS Every library function that returns this error code also generates a
@@ -5007,103 +5247,95 @@ msgstr "ПрекъÑнат канал"
#: sysdeps/generic/siglist.h:40 sysdeps/unix/siglist.c:40
msgid "Alarm clock"
-msgstr ""
+msgstr "Будилник"
#: sysdeps/generic/siglist.h:41 sysdeps/unix/siglist.c:41
msgid "Terminated"
-msgstr ""
+msgstr "Прекратен"
#: sysdeps/generic/siglist.h:42 sysdeps/unix/siglist.c:42
msgid "Urgent I/O condition"
-msgstr ""
+msgstr "Ðалежащо вх./изх. обÑтоÑтелÑтво"
#: sysdeps/generic/siglist.h:43 sysdeps/unix/siglist.c:43
msgid "Stopped (signal)"
-msgstr ""
+msgstr "ПодтиÑнат (Ñигнал)"
#: sysdeps/generic/siglist.h:44 sysdeps/unix/siglist.c:44
msgid "Stopped"
-msgstr ""
+msgstr "ПодтиÑнат"
#: sysdeps/generic/siglist.h:45 sysdeps/unix/siglist.c:45
-#, fuzzy
msgid "Continued"
-msgstr "Отказано Ñвързване"
+msgstr "Продължен"
#: sysdeps/generic/siglist.h:46 sysdeps/unix/siglist.c:46
-#, fuzzy
msgid "Child exited"
-msgstr "Файлът ÑъщеÑтвува"
+msgstr "Изход на подпроцеÑ"
#: sysdeps/generic/siglist.h:47 sysdeps/unix/siglist.c:47
msgid "Stopped (tty input)"
-msgstr ""
+msgstr "ПодтиÑнат (въвеждане от терминал)"
#: sysdeps/generic/siglist.h:48 sysdeps/unix/siglist.c:48
msgid "Stopped (tty output)"
-msgstr ""
+msgstr "ПодтиÑнат (извеждане на терминал)"
#: sysdeps/generic/siglist.h:49 sysdeps/unix/siglist.c:49
msgid "I/O possible"
-msgstr ""
+msgstr "Възможен вход/изход"
#: sysdeps/generic/siglist.h:50 sysdeps/unix/siglist.c:50
msgid "CPU time limit exceeded"
-msgstr ""
+msgstr "Превишено време за използване на ЦПУ"
#: sysdeps/generic/siglist.h:51 sysdeps/unix/siglist.c:51
-#, fuzzy
msgid "File size limit exceeded"
-msgstr "Ðадвишена диÑкова квота"
+msgstr "Ðадвишено ограничение за размер на файл"
#: sysdeps/generic/siglist.h:52 sysdeps/unix/siglist.c:52
-#, fuzzy
msgid "Virtual timer expired"
-msgstr "Изтекъл таймер"
+msgstr "Изтекъл виртуален хронометър"
#: sysdeps/generic/siglist.h:53 sysdeps/unix/siglist.c:53
-#, fuzzy
msgid "Profiling timer expired"
-msgstr "Изтекъл таймер"
+msgstr "Изтекъл хронометър за диагноÑтика"
#: sysdeps/generic/siglist.h:54 sysdeps/unix/siglist.c:54
-#, fuzzy
msgid "Window changed"
-msgstr "Ðеправилен обмен"
+msgstr "Прозорецът е променен"
#: sysdeps/generic/siglist.h:55 sysdeps/unix/siglist.c:56
msgid "User defined signal 1"
-msgstr ""
+msgstr "Определен от Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ñигнал 1"
#: sysdeps/generic/siglist.h:56 sysdeps/unix/siglist.c:57
msgid "User defined signal 2"
-msgstr ""
+msgstr "Определен от Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ñигнал 2"
#: sysdeps/generic/siglist.h:60 sysdeps/unix/siglist.c:33
msgid "EMT trap"
-msgstr ""
+msgstr "Прихващане на EMT"
#: sysdeps/generic/siglist.h:63 sysdeps/unix/siglist.c:38
-#, fuzzy
msgid "Bad system call"
-msgstr "ПрекъÑнато ÑиÑтемно извикване"
+msgstr "Ðеправилно ÑиÑтемно извикване"
#: sysdeps/generic/siglist.h:66
msgid "Stack fault"
-msgstr ""
+msgstr "Ðарушен Ñтек"
#: sysdeps/generic/siglist.h:69
-#, fuzzy
msgid "Information request"
-msgstr "Ðеправилен код на заÑвка"
+msgstr "ЗаÑвка за ÑÑŠÑтоÑние"
#: sysdeps/generic/siglist.h:71
msgid "Power failure"
-msgstr ""
+msgstr "Спиране на захранването"
#: sysdeps/generic/siglist.h:74 sysdeps/unix/siglist.c:55
msgid "Resource lost"
-msgstr ""
+msgstr "Загуба на реÑурÑ"
#. TRANS Operation not permitted; only the owner of the file (or other resource)
#. TRANS or processes with special privileges can perform the operation.
@@ -5286,7 +5518,7 @@ msgstr "ÐÑма Ñвободно мÑÑто на уÑтройÑтвото"
#. TRANS Invalid seek operation (such as on a pipe).
#: sysdeps/gnu/errlist.c:326
msgid "Illegal seek"
-msgstr "Ðеправилно позициониране"
+msgstr "Ðезаконно позициониране"
#. TRANS An attempt was made to modify something on a read-only file system.
#: sysdeps/gnu/errlist.c:335
@@ -5310,7 +5542,7 @@ msgstr "ЧиÑлов аргумент извън дефиниционната о
#. TRANS not representable because of overflow or underflow.
#: sysdeps/gnu/errlist.c:379
msgid "Numerical result out of range"
-msgstr "ÐепредÑтавим чиÑлов резултат"
+msgstr "Ðе предÑтавим чиÑлов резултат"
#. TRANS Resource temporarily unavailable; the call might work if you try again
#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
@@ -5536,12 +5768,12 @@ msgstr "Твърде дълго файлово име"
#. TRANS The remote host for a requested network connection is down.
#: sysdeps/gnu/errlist.c:726
msgid "Host is down"
-msgstr "ХоÑÑ‚ÑŠÑ‚ е изключен"
+msgstr "Компютърът е изключен"
#. TRANS The remote host for a requested network connection is not reachable.
#: sysdeps/gnu/errlist.c:735
msgid "No route to host"
-msgstr "ÐÑма маршрут до хоÑта"
+msgstr "ÐÑма маршрут до компютъра"
#. TRANS Directory not empty, where an empty directory was expected. Typically,
#. TRANS this error occurs when you are trying to delete a directory.
@@ -5664,7 +5896,7 @@ msgstr "Ðе Ñе поддържа"
#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
#: sysdeps/gnu/errlist.c:930
msgid "Invalid or incomplete multibyte or wide character"
-msgstr "Ðеправилен или непълен многобайтов или широк пиÑмен знак"
+msgstr "Ðеправилен или непълен много-байтов или широк пиÑмен знак"
#. TRANS In the GNU system, servers supporting the @code{term} protocol return
#. TRANS this error for certain operations when the caller is not in the
@@ -5701,7 +5933,7 @@ msgstr "Този път наиÑтина Ñе издънихте"
# пукна, Ñе гътна, геберÑÑа
#
# Има и евфемизми, но вÑичките ми звучат грозно и миÑлÑ, че Ñа
-# неподходÑщи. (Ð.З.)
+# неподходÑщи. (Ð.З.)
#. TRANS Go home and have a glass of warm, dairy-fresh milk.
#: sysdeps/gnu/errlist.c:984
msgid "Computer bought the farm"
@@ -5748,7 +5980,7 @@ msgstr "УÑтройÑтвото не е поток"
#: sysdeps/gnu/errlist.c:1065
msgid "Value too large for defined data type"
-msgstr "Твърде голÑма ÑтойноÑÑ‚ за Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿ данни"
+msgstr "Твърде голÑма ÑтойноÑÑ‚ за този тип данни"
#: sysdeps/gnu/errlist.c:1073
msgid "Protocol error"
@@ -5756,7 +5988,7 @@ msgstr "Протоколна грешка"
#: sysdeps/gnu/errlist.c:1081
msgid "Timer expired"
-msgstr "Изтекъл таймер"
+msgstr "ПроÑрочен хронометър"
#. TRANS Operation canceled; an asynchronous operation was canceled before it
#. TRANS completed. @xref{Asynchronous I/O}. When you call @code{aio_cancel},
@@ -5813,11 +6045,11 @@ msgstr "Ðеправилен деÑкриптор на заÑвка"
# TODO
#: sysdeps/gnu/errlist.c:1189
msgid "Exchange full"
-msgstr "Пълен обмен"
+msgstr "Препълнен обмен"
#: sysdeps/gnu/errlist.c:1197
msgid "No anode"
-msgstr "ÐÑма анод"
+msgstr "ÐÑма а-възел(a-node)"
#: sysdeps/gnu/errlist.c:1205
msgid "Invalid request code"
@@ -5833,7 +6065,7 @@ msgstr "Грешка от безизходно положение при закÐ
#: sysdeps/gnu/errlist.c:1229
msgid "Bad font file format"
-msgstr "Ðеправилен формат на шрифтов файл"
+msgstr "Ðеправилен формат на файл Ñ ÑˆÑ€Ð¸Ñ„Ñ‚"
#: sysdeps/gnu/errlist.c:1237
msgid "Machine is not on the network"
@@ -5875,7 +6107,7 @@ msgstr "ОтдалечениÑÑ‚ Ð°Ð´Ñ€ÐµÑ Ðµ Ñменен"
#: sysdeps/gnu/errlist.c:1309
msgid "Can not access a needed shared library"
-msgstr "Ðе може да бъде доÑтъпена необходима Ñподелена библиотека"
+msgstr "Ðе е доÑтъпна необходимата Ñподелена библиотека"
#: sysdeps/gnu/errlist.c:1317
msgid "Accessing a corrupted shared library"
@@ -5904,7 +6136,7 @@ msgstr "Структурата Ñе нуждае от почиÑтване"
# TODO
#: sysdeps/gnu/errlist.c:1365
msgid "Not a XENIX named type file"
-msgstr "Ðе е XENIX-именован типов файл"
+msgstr "Ðе е XENIX-именуван типов файл"
#: sysdeps/gnu/errlist.c:1373
msgid "No XENIX semaphores available"
@@ -5912,7 +6144,7 @@ msgstr "ÐÑма налични XENIX-Ñемафори"
#: sysdeps/gnu/errlist.c:1381
msgid "Is a named type file"
-msgstr "Именован типов файл е"
+msgstr "Именуван типов файл е"
#: sysdeps/gnu/errlist.c:1389
msgid "Remote I/O error"
@@ -5928,7 +6160,7 @@ msgstr "Ðеправилен тип на ноÑител"
#: sysdeps/gnu/errlist.c:1413
msgid "Required key not available"
-msgstr "Ðеобходим ключ не е наличен"
+msgstr "ÐеобходимиÑÑ‚ ключ не е наличен"
#: sysdeps/gnu/errlist.c:1421
msgid "Key has expired"
@@ -5948,517 +6180,514 @@ msgstr "СобÑтвеникът умрÑ"
#: sysdeps/gnu/errlist.c:1453
msgid "State not recoverable"
-msgstr "СъÑтоÑнието не възÑтановимо"
+msgstr "ÐевъзÑтановимо ÑÑŠÑтоÑние"
#: sysdeps/mach/_strerror.c:57
msgid "Error in unknown error system: "
-msgstr ""
+msgstr "Грешка за неизвеÑтна ÑиÑтемна грешка: "
#: sysdeps/posix/gai_strerror-strs.h:1
-#, fuzzy
msgid "Address family for hostname not supported"
-msgstr "Ðеподдържано адреÑно ÑемейÑтво от протокола"
+msgstr "Ðеподдържано адреÑно ÑемейÑтво за името на компютъра"
#: sysdeps/posix/gai_strerror-strs.h:2
msgid "Temporary failure in name resolution"
-msgstr ""
+msgstr "Временен неуÑпех при определÑнето на име"
#: sysdeps/posix/gai_strerror-strs.h:3
msgid "Bad value for ai_flags"
-msgstr ""
+msgstr "Погрешна ÑтойноÑÑ‚ за ai_flags"
#: sysdeps/posix/gai_strerror-strs.h:4
msgid "Non-recoverable failure in name resolution"
-msgstr ""
+msgstr "ÐевъзÑтановим провал при анализа за име"
#: sysdeps/posix/gai_strerror-strs.h:5
-#, fuzzy
msgid "ai_family not supported"
msgstr "Ðеподдържано ÑемейÑтво протоколи"
#: sysdeps/posix/gai_strerror-strs.h:6
msgid "Memory allocation failure"
-msgstr ""
+msgstr "ЗаделÑнето на памет не уÑпÑ"
#: sysdeps/posix/gai_strerror-strs.h:7
msgid "No address associated with hostname"
-msgstr ""
+msgstr "Ðе е аÑоцииран Ð°Ð´Ñ€ÐµÑ Ð·Ð° името на компютъра"
#: sysdeps/posix/gai_strerror-strs.h:8
msgid "Name or service not known"
-msgstr ""
+msgstr "Ðе е извеÑтно името на уÑлугата"
#: sysdeps/posix/gai_strerror-strs.h:9
msgid "Servname not supported for ai_socktype"
-msgstr ""
+msgstr "Име на уÑлуга не Ñе поддържа за типа гнездо(ai_socktype)"
#: sysdeps/posix/gai_strerror-strs.h:10
-#, fuzzy
msgid "ai_socktype not supported"
-msgstr "Ðеподдържан тип гнездо (socket)"
+msgstr "неподдържан тип гнездо (socket)"
#: sysdeps/posix/gai_strerror-strs.h:11
-#, fuzzy
msgid "System error"
-msgstr "Канална грешка при потоци"
+msgstr "СиÑтемна грешка"
#: sysdeps/posix/gai_strerror-strs.h:12
-#, fuzzy
msgid "Processing request in progress"
-msgstr "ОперациÑта вече Ñе изпълнÑва"
+msgstr "ИзпълнÑва Ñе обработка на заÑвката"
#: sysdeps/posix/gai_strerror-strs.h:13
-#, fuzzy
msgid "Request canceled"
-msgstr "Отменена операциÑ"
+msgstr "ПрекъÑната заÑвка"
#: sysdeps/posix/gai_strerror-strs.h:14
-#, fuzzy
msgid "Request not canceled"
-msgstr "Отменена операциÑ"
+msgstr "ЗаÑвката не е прекъÑната"
#: sysdeps/posix/gai_strerror-strs.h:15
-#, fuzzy
msgid "All requests done"
-msgstr "Ðеправилен код на заÑвка"
+msgstr "Ð’Ñички заÑвки Ñа изпълнени"
#: sysdeps/posix/gai_strerror-strs.h:16
-#, fuzzy
msgid "Interrupted by a signal"
-msgstr "ПрекъÑнато ÑиÑтемно извикване"
+msgstr "ПрекъÑнат по Ñигнал"
#: sysdeps/posix/gai_strerror-strs.h:17
msgid "Parameter string not correctly encoded"
-msgstr ""
+msgstr "ÐеподходÑщо кодиран параметър от тип низ"
#: sysdeps/unix/siglist.c:26
msgid "Signal 0"
-msgstr ""
+msgstr "Сигнал 0"
#: sysdeps/unix/siglist.c:32
msgid "IOT trap"
-msgstr ""
+msgstr "IOT капан"
#: sysdeps/unix/sysv/linux/i386/readelflib.c:49
#, c-format
msgid "%s is for unknown machine %d.\n"
-msgstr ""
+msgstr "%s е за неизвеÑтна машина %d.\n"
#: sysdeps/unix/sysv/linux/ia64/makecontext.c:63
#, c-format
msgid "makecontext: does not know how to handle more than 8 arguments\n"
+msgstr "makecontext: не Ñе поддържат повече от 8 аргумента\n"
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
msgstr ""
+"Употреба: lddlibc4 ФÐЙЛ\n"
+"\n"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
msgid "cannot open `%s'"
-msgstr ""
+msgstr "не може да Ñе отвори \"%s\""
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
msgid "cannot read header from `%s'"
-msgstr ""
+msgstr "не може да Ñе прочете заглавието на \"%s\""
-#: timezone/zdump.c:211
+#: timezone/zdump.c:210
msgid "lacks alphabetic at start"
-msgstr ""
+msgstr "не започва Ñ Ð±ÑƒÐºÐ²Ð°"
-#: timezone/zdump.c:213
+#: timezone/zdump.c:212
msgid "has fewer than 3 alphabetics"
-msgstr ""
+msgstr "е Ñ Ð¿Ð¾-малко от три букви"
-#: timezone/zdump.c:215
+#: timezone/zdump.c:214
msgid "has more than 6 alphabetics"
-msgstr ""
+msgstr "е Ñ Ð¿Ð¾-вече от шеÑÑ‚ букви"
-#: timezone/zdump.c:223
+#: timezone/zdump.c:222
msgid "differs from POSIX standard"
-msgstr ""
+msgstr "не Ñъвпада Ñ POSIX Ñтандарта"
-#: timezone/zdump.c:229
+#: timezone/zdump.c:228
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
-msgstr ""
+msgstr "%s: предупреждение: зоната \"%s\", ÑÑŠÑ Ñъкращение \"%s\", %s\n"
-#: timezone/zdump.c:280
+#: timezone/zdump.c:279
#, c-format
msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
-msgstr ""
+msgstr "%s: употребата е %s [ --version ] [ -v ] [ -c [отгодина,]догодина ] именазона ...\n"
-#: timezone/zdump.c:297
+#: timezone/zdump.c:296
#, c-format
msgid "%s: wild -c argument %s\n"
-msgstr ""
+msgstr "%s: безумен -c аргумент %s\n"
-#: timezone/zdump.c:388
+#: timezone/zdump.c:387
msgid "Error writing to standard output"
-msgstr ""
+msgstr "Грешка при запиÑване в ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´"
-#: timezone/zdump.c:411
+#: timezone/zdump.c:410
#, c-format
msgid "%s: use of -v on system with floating time_t other than float or double\n"
-msgstr ""
+msgstr "%s: употребÑвайте -v на ÑиÑтеми, за които типът на time_t, Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° точноÑÑ‚, е различен от float или double\n"
-#: timezone/zic.c:392
+#: timezone/zic.c:388
#, c-format
msgid "%s: Memory exhausted: %s\n"
-msgstr ""
+msgstr "%s: Изчерпана памет: %s\n"
-#: timezone/zic.c:451
+#: timezone/zic.c:434
#, c-format
msgid "\"%s\", line %d: %s"
-msgstr ""
+msgstr "\"%s\", ред %d: %s"
-#: timezone/zic.c:454
+#: timezone/zic.c:437
#, c-format
msgid " (rule from \"%s\", line %d)"
-msgstr ""
+msgstr " (правило от \"%s\", ред %d)"
-#: timezone/zic.c:466
+#: timezone/zic.c:449
msgid "warning: "
-msgstr ""
+msgstr "предупреждение: "
-#: timezone/zic.c:476
+#: timezone/zic.c:459
#, c-format
msgid ""
"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
msgstr ""
+"%s: употребата е %s [ --version ] [ -v ] [ -l локалновреме ] [ -p posix_правило ] \\\n"
+"\t[ -d Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ ] [ -L виÑокоÑниÑекунди ] [ -y типнагодина ] [ именафайл ... ]\n"
-#: timezone/zic.c:511
+#: timezone/zic.c:494
msgid "wild compilation-time specification of zic_t"
-msgstr ""
+msgstr "при компилирането е зададен безумен тип за zic_t"
-#: timezone/zic.c:528
+#: timezone/zic.c:511
#, c-format
msgid "%s: More than one -d option specified\n"
-msgstr ""
+msgstr "%s: Зададена е повече от една -d опциÑ\n"
-#: timezone/zic.c:538
+#: timezone/zic.c:521
#, c-format
msgid "%s: More than one -l option specified\n"
-msgstr ""
+msgstr "%s: Зададена е повече от една -l опциÑ\n"
-#: timezone/zic.c:548
+#: timezone/zic.c:531
#, c-format
msgid "%s: More than one -p option specified\n"
-msgstr ""
+msgstr "%s: Зададена е повече от една -p опциÑ\n"
-#: timezone/zic.c:558
+#: timezone/zic.c:541
#, c-format
msgid "%s: More than one -y option specified\n"
-msgstr ""
+msgstr "%s: Зададена е повече от една -y опциÑ\n"
-#: timezone/zic.c:568
+#: timezone/zic.c:551
#, c-format
msgid "%s: More than one -L option specified\n"
-msgstr ""
+msgstr "%s: Зададена е повече от една -L опциÑ\n"
-#: timezone/zic.c:617
+#: timezone/zic.c:600
msgid "link to link"
-msgstr ""
+msgstr "връзка към връзка"
-#: timezone/zic.c:682
+#: timezone/zic.c:665
msgid "hard link failed, symbolic link used"
-msgstr ""
+msgstr "%s: Ñъздаването на твърда връзка пропадна - използвана е Ñимволна"
-#: timezone/zic.c:690
+#: timezone/zic.c:673
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
-msgstr ""
+msgstr "%s: Ðе може да Ñе Ñъздаде връзка от %s към %s: %s\n"
-#: timezone/zic.c:762 timezone/zic.c:764
-#, fuzzy
+#: timezone/zic.c:745 timezone/zic.c:747
msgid "same rule name in multiple files"
-msgstr "Именован типов файл е"
+msgstr "едно и Ñъщо име на правило в много файлове"
-#: timezone/zic.c:805
+#: timezone/zic.c:788
msgid "unruly zone"
-msgstr ""
+msgstr "непокорна зона"
-#: timezone/zic.c:812
+#: timezone/zic.c:795
#, c-format
msgid "%s in ruleless zone"
-msgstr ""
+msgstr "%s в зона без правила"
-#: timezone/zic.c:833
+#: timezone/zic.c:816
msgid "standard input"
-msgstr ""
+msgstr "Ñтандартен вход"
-#: timezone/zic.c:838
+#: timezone/zic.c:821
#, c-format
msgid "%s: Can't open %s: %s\n"
-msgstr ""
+msgstr "%s: Ðе може да Ñе отвори %s: %s\n"
-#: timezone/zic.c:849
-#, fuzzy
+#: timezone/zic.c:832
msgid "line too long"
-msgstr "Твърде дълго файлово име"
+msgstr "Твърде дълъг ред"
-#: timezone/zic.c:869
+#: timezone/zic.c:852
msgid "input line of unknown type"
-msgstr ""
+msgstr "ВходÑщ ред от неизвеÑтен тип"
-#: timezone/zic.c:885
+#: timezone/zic.c:868
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
-msgstr ""
+msgstr "%s: редът за Leap не е във файл за виÑокоÑни Ñекунди %s\n"
-#: timezone/zic.c:892 timezone/zic.c:1323 timezone/zic.c:1345
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
-msgstr ""
+msgstr "%s: паника: Ðеправилен израз отлÑво(lvalue) %d\n"
-#: timezone/zic.c:900
+#: timezone/zic.c:883
#, c-format
msgid "%s: Error reading %s\n"
-msgstr ""
+msgstr "%s: Грешка при прочитането на %s\n"
-#: timezone/zic.c:907
+#: timezone/zic.c:890
#, c-format
msgid "%s: Error closing %s: %s\n"
-msgstr ""
+msgstr "%s: Грешка при затварÑне %s: %s\n"
-#: timezone/zic.c:912
+#: timezone/zic.c:895
msgid "expected continuation line not found"
-msgstr ""
+msgstr "липÑва ред за продължение"
+
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
+msgid "time overflow"
+msgstr "препълване на ÑтойноÑтта за време"
-#: timezone/zic.c:956
+#: timezone/zic.c:943
msgid "24:00 not handled by pre-1998 versions of zic"
-msgstr ""
+msgstr "24:00 не Ñе поддържат от верÑии на zic преди 1998"
+
+#: timezone/zic.c:946
+msgid "values over 24 hours not handled by pre-2007 versions of zic"
+msgstr "не Ñе поддържат ÑтойноÑти над 24 чаÑа от верÑии на zic преди 2007"
-#: timezone/zic.c:970
+#: timezone/zic.c:959
msgid "wrong number of fields on Rule line"
-msgstr ""
+msgstr "неправилен брой полета на ред за Rule"
-#: timezone/zic.c:974
+#: timezone/zic.c:963
msgid "nameless rule"
-msgstr ""
+msgstr "правило без име"
-#: timezone/zic.c:979
-#, fuzzy
+#: timezone/zic.c:968
msgid "invalid saved time"
-msgstr "Ðеправилен Ñлот"
+msgstr "неправилно запиÑано време"
-#: timezone/zic.c:1000
+#: timezone/zic.c:989
msgid "wrong number of fields on Zone line"
-msgstr ""
+msgstr "неправилен брой полета на ред за Zone"
-#: timezone/zic.c:1006
+#: timezone/zic.c:995
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
-msgstr ""
+msgstr "Редът \"Zone %s\" и опциÑта -l Ñа взаимно изключващи Ñе"
-#: timezone/zic.c:1014
+#: timezone/zic.c:1003
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
-msgstr ""
+msgstr "Редът \"Zone %s\" и опциÑта -p Ñа взаимно изключващи Ñе"
-#: timezone/zic.c:1026
+#: timezone/zic.c:1015
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
-msgstr ""
+msgstr "повторено име на зона %s (файл \"%s\", ред %d)"
-#: timezone/zic.c:1042
+#: timezone/zic.c:1031
msgid "wrong number of fields on Zone continuation line"
-msgstr ""
+msgstr "неправилен брой полета на ред за продължаване на Zone"
-#: timezone/zic.c:1082
-#, fuzzy
+#: timezone/zic.c:1071
msgid "invalid UTC offset"
-msgstr "Ðеправилен Ñлот"
+msgstr "неправилно отмеÑтване ÑпрÑмо \"УниверÑалното време\""
-#: timezone/zic.c:1085
+#: timezone/zic.c:1074
msgid "invalid abbreviation format"
-msgstr ""
+msgstr "Ðеправилен формат за Ñъкращение"
-#: timezone/zic.c:1114
+#: timezone/zic.c:1103
msgid "Zone continuation line end time is not after end time of previous line"
-msgstr ""
+msgstr "на ред за продължаване на Zone, крайното време не е Ñлед крайното време на Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¸Ñ Ñ€ÐµÐ´"
-#: timezone/zic.c:1142
+#: timezone/zic.c:1131
msgid "wrong number of fields on Leap line"
-msgstr ""
+msgstr "неправилен брой полета за ред за Leap"
-#: timezone/zic.c:1151
-#, fuzzy
+#: timezone/zic.c:1140
msgid "invalid leaping year"
-msgstr "Ðеправилен обмен"
+msgstr "Ðеправилна виÑокоÑна година"
-#: timezone/zic.c:1171 timezone/zic.c:1277
-#, fuzzy
+#: timezone/zic.c:1160 timezone/zic.c:1266
msgid "invalid month name"
-msgstr "Ðеправилен Ñлот"
+msgstr "Ðеправилно име на меÑец"
-#: timezone/zic.c:1184 timezone/zic.c:1390 timezone/zic.c:1404
-#, fuzzy
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
msgid "invalid day of month"
-msgstr "Ðеправилен аргумент"
+msgstr "Ðеправилен ден от меÑеца"
-#: timezone/zic.c:1189
+#: timezone/zic.c:1178
msgid "time before zero"
-msgstr ""
+msgstr "СтойноÑтта за Ñ‡Ð°Ñ Ðµ преди нулата"
-#: timezone/zic.c:1193
+#: timezone/zic.c:1182
msgid "time too small"
-msgstr ""
+msgstr "СтойноÑтта за Ñ‡Ð°Ñ Ðµ много малка"
-#: timezone/zic.c:1197
-#, fuzzy
+#: timezone/zic.c:1186
msgid "time too large"
-msgstr "Твърде голÑм файл"
+msgstr "СтойноÑтта за Ñ‡Ð°Ñ Ðµ много голÑма"
-#: timezone/zic.c:1201 timezone/zic.c:1306
+#: timezone/zic.c:1190 timezone/zic.c:1295
msgid "invalid time of day"
-msgstr ""
+msgstr "неправилен чаÑ"
-#: timezone/zic.c:1220
+#: timezone/zic.c:1209
msgid "illegal CORRECTION field on Leap line"
-msgstr ""
+msgstr "незаконно поле CORRECTION за ред Leap"
-#: timezone/zic.c:1225
+#: timezone/zic.c:1214
msgid "illegal Rolling/Stationary field on Leap line"
-msgstr ""
+msgstr "незаконно поле Rolling/Stationary на реда за Leap "
-#: timezone/zic.c:1241
+#: timezone/zic.c:1230
msgid "wrong number of fields on Link line"
-msgstr ""
+msgstr "неправилен брой полета на ред за Link"
-#: timezone/zic.c:1245
+#: timezone/zic.c:1234
msgid "blank FROM field on Link line"
-msgstr ""
+msgstr "празно поле FROM на ред за Link"
-#: timezone/zic.c:1249
+#: timezone/zic.c:1238
msgid "blank TO field on Link line"
-msgstr ""
+msgstr "празно поле TO на ред за Link"
-#: timezone/zic.c:1327
+#: timezone/zic.c:1316
msgid "invalid starting year"
-msgstr ""
+msgstr "неправилна начална година"
-#: timezone/zic.c:1349
-#, fuzzy
+#: timezone/zic.c:1338
msgid "invalid ending year"
-msgstr "Ðеправилен обмен"
+msgstr "неправилна крайна година"
-#: timezone/zic.c:1353
+#: timezone/zic.c:1342
msgid "starting year greater than ending year"
-msgstr ""
+msgstr "началната година е по-голÑма от крайната"
-#: timezone/zic.c:1360
+#: timezone/zic.c:1349
msgid "typed single year"
-msgstr ""
+msgstr "една единÑтвена година е зададена"
-#: timezone/zic.c:1395
-#, fuzzy
+#: timezone/zic.c:1384
msgid "invalid weekday name"
-msgstr "Ðеправилен обмен"
+msgstr "неправилно име на ден от Ñедмицата"
-#: timezone/zic.c:1573
+#: timezone/zic.c:1562
#, c-format
msgid "%s: Can't remove %s: %s\n"
-msgstr ""
+msgstr "%s: Ðе може да Ñе изтрие %s: %s\n"
-#: timezone/zic.c:1583
+#: timezone/zic.c:1572
#, c-format
msgid "%s: Can't create %s: %s\n"
-msgstr ""
+msgstr "%s: Ðе може да Ñе Ñъздаде %s: %s\n"
-#: timezone/zic.c:1733
+#: timezone/zic.c:1722
#, c-format
msgid "%s: Error writing %s\n"
-msgstr ""
+msgstr "%s: Грешка при запиÑване %s\n"
-#: timezone/zic.c:2025
+#: timezone/zic.c:2015
msgid "no POSIX environment variable for zone"
-msgstr ""
+msgstr "в обкръжението, липÑва POSIX променлива за зона"
-#: timezone/zic.c:2179
+#: timezone/zic.c:2172
msgid "can't determine time zone abbreviation to use just after until time"
-msgstr ""
+msgstr "не може да Ñе определи Ñъкращението за чаÑова зона, което да Ñе ползва, веднага Ñлед крайното време"
-#: timezone/zic.c:2225
-#, fuzzy
+#: timezone/zic.c:2218
msgid "too many transitions?!"
-msgstr "Твърде много връзки"
+msgstr "твърде много прехвърлÑниÑ?!"
-#: timezone/zic.c:2244
+#: timezone/zic.c:2237
msgid "internal error - addtype called with bad isdst"
-msgstr ""
+msgstr "вътрешна грешка - addtype е извикан Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÐµÐ½ isdst"
-#: timezone/zic.c:2248
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad ttisstd"
-msgstr ""
+msgstr "вътрешна грешка - addtype е извикан Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÐµÐ½ ttisstd"
-#: timezone/zic.c:2252
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisgmt"
-msgstr ""
+msgstr "вътрешна грешка - addtype е извикан Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÐµÐ½ ttisgmt"
-#: timezone/zic.c:2271
-#, fuzzy
+#: timezone/zic.c:2264
msgid "too many local time types"
-msgstr "Твърде много процеÑи"
+msgstr "твърде много типове за локално време"
-#: timezone/zic.c:2299
-#, fuzzy
+#: timezone/zic.c:2268
+msgid "UTC offset out of range"
+msgstr "ОтмеÑтването ÑпрÑмо \"УниверÑалното време\" е извън обхвата"
+
+#: timezone/zic.c:2296
msgid "too many leap seconds"
-msgstr "Твърде много връзки"
+msgstr "твърде много виÑокоÑни Ñекунди"
-#: timezone/zic.c:2305
+#: timezone/zic.c:2302
msgid "repeated leap second moment"
-msgstr ""
+msgstr "повтарÑщ Ñе момент за виÑокоÑна Ñекунда"
-#: timezone/zic.c:2357
+#: timezone/zic.c:2354
msgid "Wild result from command execution"
-msgstr ""
+msgstr "Безумен резултат от изпълнението на команда"
-#: timezone/zic.c:2358
+#: timezone/zic.c:2355
#, c-format
msgid "%s: command was '%s', result was %d\n"
-msgstr ""
+msgstr "%s: командата бе '%s' и резултатът бе %d\n"
-#: timezone/zic.c:2456
+#: timezone/zic.c:2453
msgid "Odd number of quotation marks"
-msgstr ""
+msgstr "Ðеочакван брой кавички"
-#: timezone/zic.c:2479 timezone/zic.c:2498
-msgid "time overflow"
-msgstr ""
-
-#: timezone/zic.c:2545
+#: timezone/zic.c:2542
msgid "use of 2/29 in non leap-year"
-msgstr ""
+msgstr "използване на 29.2 за невиÑокоÑна година"
-#: timezone/zic.c:2580
+#: timezone/zic.c:2577
msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
-msgstr ""
+msgstr "правилото Ð¿Ñ€ÐµÑ…Ð²ÑŠÑ€Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð¾Ñ‚Ð¾/ÐºÑ€Ð°Ñ Ð½Ð° меÑеца--нÑма да работи Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð½Ð° zic от преди 2004"
-#: timezone/zic.c:2612
+#: timezone/zic.c:2609
msgid "time zone abbreviation lacks alphabetic at start"
-msgstr ""
+msgstr "Ñъкращението за чаÑова зона не започва Ñ Ð±ÑƒÐºÐ²Ð°"
-#: timezone/zic.c:2614
+#: timezone/zic.c:2611
msgid "time zone abbreviation has more than 3 alphabetics"
-msgstr ""
+msgstr "Ñъкращението за чаÑова зона е Ñ Ð¿Ð¾Ð²ÐµÑ‡Ðµ от три букви"
-#: timezone/zic.c:2616
+#: timezone/zic.c:2613
msgid "time zone abbreviation has too many alphabetics"
-msgstr ""
+msgstr "Ñъкращението за чаÑова зона е Ñ Ñ‚Ð²ÑŠÑ€Ð´Ðµ много букви"
-#: timezone/zic.c:2626
+#: timezone/zic.c:2623
msgid "time zone abbreviation differs from POSIX standard"
-msgstr ""
+msgstr "Ñъкращението за чаÑова зона Ñе различава от POSIX Ñтандарта"
-#: timezone/zic.c:2638
+#: timezone/zic.c:2635
msgid "too many, or too long, time zone abbreviations"
-msgstr ""
+msgstr "твърде много или твърде дълго Ñъкращение за чаÑова зона"
-#: timezone/zic.c:2679
+#: timezone/zic.c:2676
#, c-format
msgid "%s: Can't create directory %s: %s\n"
-msgstr ""
+msgstr "%s: Ðе може да Ñе Ñъздаде Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ %s: %s\n"
-#: timezone/zic.c:2701
+#: timezone/zic.c:2698
#, c-format
msgid "%s: %d did not sign extend correctly\n"
-msgstr ""
+msgstr "%s: при преобразуването %d не запази знак\n"
diff --git a/po/ca.po b/po/ca.po
index 98b9bd65ac..0872dcbb59 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -1,6 +1,7 @@
# Catalan messages for GNU libc.
-# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
-# Ivan Vilata i Balaguer <ivan@selidor.net>, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007.
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the glibc package.
+# Ivan Vilata i Balaguer <ivan@selidor.net>, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2009.
#
# Sóc Ivan, aquestes són les convencions que adopte per a la 2.4:
#
@@ -46,9 +47,9 @@
# bonic, excepte quan quede realment horrend o porte a confusió).
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.7\n"
-"POT-Creation-Date: 2007-10-15 21:18-0700\n"
-"PO-Revision-Date: 2007-12-02 18:45+0100\n"
+"Project-Id-Version: libc 2.9.90\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-04-20 15:27+0200\n"
"Last-Translator: Ivan Vilata i Balaguer <ivan@selidor.net>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
"MIME-Version: 1.0\n"
@@ -142,7 +143,7 @@ msgstr "%s%s%s:%u: %s%sError inesperat: %s.\n"
msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
msgstr "%s%s%s:%u: %s%sL’asserció «%s» ha fallat.\n"
-#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
msgid "NAME"
msgstr "NOM"
@@ -178,9 +179,15 @@ msgstr ""
"-o FITXER_EIXIDA [FITXER_ENTRADA]…\n"
"[FITXER_EIXIDA [FITXER_ENTRADA]…]"
-#: catgets/gencat.c:232 debug/pcprofiledump.c:204 iconv/iconv_prog.c:411
-#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
-#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
@@ -188,12 +195,13 @@ msgstr ""
"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:296
-#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:426
-#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
-#: posix/getconf.c:1012
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -205,10 +213,12 @@ msgstr ""
"de còpia. No hi ha CAP garantia; ni tan sols de COMERCIABILITAT o\n"
"ADEQUACIÓ PER A UN PROPÒSIT PARTICULAR.\n"
-#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:301 elf/sprof.c:361
-#: iconv/iconv_prog.c:431 iconv/iconvconfig.c:400 locale/programs/locale.c:280
-#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
-#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
#, c-format
msgid "Written by %s.\n"
msgstr "Escrit per %s.\n"
@@ -217,7 +227,7 @@ msgstr "Escrit per %s.\n"
msgid "*standard input*"
msgstr "*entrada estàndard*"
-#: catgets/gencat.c:288 iconv/iconv_charmap.c:158 iconv/iconv_prog.c:298
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
#: nss/makedb.c:170
#, c-format
msgid "cannot open input file `%s'"
@@ -318,17 +328,17 @@ msgstr "Bolca la informació generada en perfilar el comptador de programa."
msgid "[FILE]"
msgstr "[FITXER]"
-#: debug/pcprofiledump.c:104
+#: debug/pcprofiledump.c:108
#, c-format
msgid "cannot open input file"
msgstr "no s’ha pogut obrir el fitxer d’entrada"
-#: debug/pcprofiledump.c:111
+#: debug/pcprofiledump.c:115
#, c-format
msgid "cannot read header"
msgstr "no s’ha pogut llegir la capçalera"
-#: debug/pcprofiledump.c:175
+#: debug/pcprofiledump.c:179
#, c-format
msgid "invalid pointer size"
msgstr "la mida del punter no és vàlida"
@@ -358,8 +368,6 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
"Traça l’execució d’un programa mostrant la funció que s’està executant\n"
"actualment.\n"
@@ -374,23 +382,21 @@ msgstr ""
"Els arguments obligatoris per a les opcions llargues també ho són per a les\n"
"opcions curtes corresponents.\n"
"\n"
-"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
-#: debug/xtrace.sh:125
+#: debug/xtrace.sh:127
msgid "xtrace: unrecognized option \\`$1'\\n"
msgstr "xtrace: l’opció «$1» no és reconeguda\\n"
-#: debug/xtrace.sh:138
+#: debug/xtrace.sh:140
msgid "No program name given\\n"
msgstr "no s’ha indicat un nom de programa\\n"
-#: debug/xtrace.sh:146
+#: debug/xtrace.sh:148
#, sh-format
msgid "executable \\`$program' not found\\n"
msgstr "no s’ha trobat l’executable «$program»\\n"
-#: debug/xtrace.sh:150
+#: debug/xtrace.sh:152
#, sh-format
msgid "\\`$program' is no executable\\n"
msgstr "«$program» no és executable\\n"
@@ -411,7 +417,7 @@ msgstr "l’espai de noms no és vàlid"
msgid "invalid mode"
msgstr "el mode no és vàlid"
-#: dlfcn/dlopen.c:64
+#: dlfcn/dlopen.c:65
msgid "invalid mode parameter"
msgstr "el paràmetre de mode no és vàlid"
@@ -434,7 +440,7 @@ msgstr "SO desconegut"
msgid ", OS ABI: %s %d.%d.%d"
msgstr ", ABI del SO: %s %d.%d.%d"
-#: elf/cache.c:134 elf/ldconfig.c:1270
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
msgid "Can't open cache file %s\n"
msgstr "no s’ha pogut obrir el fitxer «%s» de memòria cau\n"
@@ -479,7 +485,7 @@ msgstr "no s’ha pogut reanomenar «%s» a «%s»"
msgid "cannot create scope list"
msgstr "no s’ha pogut crear la llista d’àmbits"
-#: elf/dl-close.c:724
+#: elf/dl-close.c:725
msgid "shared object not open"
msgstr "l’objecte compartit no és obert"
@@ -560,11 +566,11 @@ msgstr "ha fallat stat() sobre l’objecte compartit"
msgid "cannot open zero fill device"
msgstr "no s’ha pogut obrir el dispositiu de zeros"
-#: elf/dl-load.c:979 elf/dl-load.c:2224
+#: elf/dl-load.c:979 elf/dl-load.c:2215
msgid "cannot create shared object descriptor"
msgstr "no s’ha pogut crear el descriptor d’objecte compartit"
-#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
msgid "cannot read file data"
msgstr "no s’han pogut llegir les dades del fitxer"
@@ -628,68 +634,64 @@ msgstr "no s’ha pogut habilitar la pila executable a requeriment de l’object
msgid "cannot close file descriptor"
msgstr "no s’ha pogut tancar un descriptor de fitxer"
-#: elf/dl-load.c:1478
-msgid "cannot create searchlist"
-msgstr "no s’ha pogut crear la llista de cerca"
-
-#: elf/dl-load.c:1656
+#: elf/dl-load.c:1647
msgid "file too short"
msgstr "el fitxer és massa curt"
-#: elf/dl-load.c:1685
+#: elf/dl-load.c:1676
msgid "invalid ELF header"
msgstr "la capçalera ELF no és vàlida"
-#: elf/dl-load.c:1697
+#: elf/dl-load.c:1688
msgid "ELF file data encoding not big-endian"
msgstr "la codificació de les dades del fitxer ELF no és bigâ€endian"
-#: elf/dl-load.c:1699
+#: elf/dl-load.c:1690
msgid "ELF file data encoding not little-endian"
msgstr "la codificació de les dades del fitxer ELF no és littleâ€endian"
-#: elf/dl-load.c:1703
+#: elf/dl-load.c:1694
msgid "ELF file version ident does not match current one"
msgstr "la identificació de la versió del fitxer ELF no concorda amb l’actual"
# ivb (2001/11(06)
# ivb ABI = Application Binary Interface (interfície binària d'aplicació)
-#: elf/dl-load.c:1707
+#: elf/dl-load.c:1698
msgid "ELF file OS ABI invalid"
msgstr "l’ABI de sistema operatiu del fitxer ELF no és vàlida"
-#: elf/dl-load.c:1709
+#: elf/dl-load.c:1700
msgid "ELF file ABI version invalid"
msgstr "la versió de l’ABI del fitxer ELF no és vàlida"
-#: elf/dl-load.c:1712
+#: elf/dl-load.c:1703
msgid "internal error"
msgstr "error intern"
-#: elf/dl-load.c:1719
+#: elf/dl-load.c:1710
msgid "ELF file version does not match current one"
msgstr "la versió del fitxer ELF no concorda amb l’actual"
-#: elf/dl-load.c:1727
+#: elf/dl-load.c:1718
msgid "only ET_DYN and ET_EXEC can be loaded"
msgstr "només es poden carregar els tipus ET_DYN i ET_EXEC"
# ivb (2001/11/01)
# ivb La traducció completa de «phentsize» vindria a ser: mida d'entrada
# ivb de taula de la capçalera de programa.
-#: elf/dl-load.c:1733
+#: elf/dl-load.c:1724
msgid "ELF file's phentsize not the expected size"
msgstr "el valor de «phentsize» del fitxer ELF no és l’esperat"
-#: elf/dl-load.c:2240
+#: elf/dl-load.c:2231
msgid "wrong ELF class: ELFCLASS64"
msgstr "la classe ELF no és vàlida: ELFCLASS64"
-#: elf/dl-load.c:2241
+#: elf/dl-load.c:2232
msgid "wrong ELF class: ELFCLASS32"
msgstr "la classe ELF no és vàlida: ELFCLASS32"
-#: elf/dl-load.c:2244
+#: elf/dl-load.c:2235
msgid "cannot open shared object file"
msgstr "no s’ha pogut obrir el fitxer objecte compartit"
@@ -723,11 +725,11 @@ msgstr "no resten espais de noms disponibles per a dlmopen()"
msgid "invalid target namespace in dlmopen()"
msgstr "l’espai de noms destí de dlmopen() no és vàlid"
-#: elf/dl-reloc.c:54
+#: elf/dl-reloc.c:121
msgid "cannot allocate memory in static TLS block"
msgstr "no s’ha pogut reservar memòria al bloc TLS estàtic"
-#: elf/dl-reloc.c:196
+#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
msgstr "no s’ha pogut fer escrivible el segment per a reubicarâ€lo"
@@ -756,11 +758,11 @@ msgstr "no s’ha pogut protegir la memòria després de reubicar"
msgid "RTLD_NEXT used in code not dynamically loaded"
msgstr "s’ha emprat RTLD_NEXT en un codi no carregat dinàmicament"
-#: elf/dl-sysdep.c:469 elf/dl-sysdep.c:481
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
msgid "cannot create capability list"
msgstr "no s’ha pogut crear la llista de capacitats"
-#: elf/dl-tls.c:825
+#: elf/dl-tls.c:864
msgid "cannot create TLS data structures"
msgstr "no s’han pogut crear les estructures de dades TLS"
@@ -769,225 +771,225 @@ msgid "cannot allocate version reference table"
msgstr "no s’ha pogut reservar la taula de referències de versions"
# Més ajudes. ivb
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:141
msgid "Print cache"
msgstr "Mostra la memòria cau."
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:142
msgid "Generate verbose messages"
msgstr "Genera missatges detallats."
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:143
msgid "Don't build cache"
msgstr "No construeix la memòria cau."
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:144
msgid "Don't generate links"
msgstr "No genera enllaços."
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "Change to and use ROOT as root directory"
msgstr "Canvia a i empra ARREL com a directori arrel."
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "ROOT"
msgstr "ARREL"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "CACHE"
msgstr "CACHE"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "Use CACHE as cache file"
msgstr "Empra CACHE com a fitxer de memòria cau."
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "CONF"
msgstr "CONF"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "Use CONF as configuration file"
msgstr "Empra CONF com a fitxer de configuració."
-#: elf/ldconfig.c:145
+#: elf/ldconfig.c:148
msgid "Only process directories specified on the command line. Don't build cache."
msgstr "Només processa els directoris especificats a la línia d’ordres. No construeix la memòria cau."
-#: elf/ldconfig.c:146
+#: elf/ldconfig.c:149
msgid "Manually link individual libraries."
msgstr "Per a enllaçar les biblioteques manualment."
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "FORMAT"
msgstr "FORMAT"
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "Format to use: new, old or compat (default)"
msgstr "FORMAT a emprar: «new» (nou), «old» (antic) o «compat» (compatible, per defecte)."
-#: elf/ldconfig.c:148
+#: elf/ldconfig.c:151
msgid "Ignore auxiliary cache file"
msgstr "No té en compte el fitxer de memòria cau auxilar."
-#: elf/ldconfig.c:156
+#: elf/ldconfig.c:159
msgid "Configure Dynamic Linker Run Time Bindings."
msgstr "Configura els vincles en temps d’execució de l’enllaçador dinàmic."
-#: elf/ldconfig.c:319
+#: elf/ldconfig.c:339
#, c-format
msgid "Path `%s' given more than once"
msgstr "s’ha indicat el camí «%s» més d’una volta"
-#: elf/ldconfig.c:359
+#: elf/ldconfig.c:379
#, c-format
msgid "%s is not a known library type"
msgstr "«%s» no és un tipus conegut de biblioteca"
-#: elf/ldconfig.c:384
+#: elf/ldconfig.c:404
#, c-format
msgid "Can't stat %s"
msgstr "ha fallat stat() sobre «%s»"
-#: elf/ldconfig.c:458
+#: elf/ldconfig.c:478
#, c-format
msgid "Can't stat %s\n"
msgstr "ha fallat stat() sobre «%s»\n"
-#: elf/ldconfig.c:468
+#: elf/ldconfig.c:488
#, c-format
msgid "%s is not a symbolic link\n"
msgstr "«%s» no és un enllaç simbòlic\n"
-#: elf/ldconfig.c:487
+#: elf/ldconfig.c:507
#, c-format
msgid "Can't unlink %s"
msgstr "no s’ha pogut desenllaçar «%s»"
-#: elf/ldconfig.c:493
+#: elf/ldconfig.c:513
#, c-format
msgid "Can't link %s to %s"
msgstr "no s’ha pogut crear un enllaç des de «%s» cap a «%s»"
# ivb (2001/10/28)
# ivb Es refereix a un enllaç -> masculí.
-#: elf/ldconfig.c:499
+#: elf/ldconfig.c:519
msgid " (changed)\n"
msgstr " (canviat)\n"
# ivb (2001/10/28)
# ivb Es refereix a fer o no l'enllaç, no importa el gènere.
-#: elf/ldconfig.c:501
+#: elf/ldconfig.c:521
msgid " (SKIPPED)\n"
msgstr " (SALTAT)\n"
-#: elf/ldconfig.c:556
+#: elf/ldconfig.c:576
#, c-format
msgid "Can't find %s"
msgstr "no s’ha pogut trobar «%s»"
-#: elf/ldconfig.c:572 elf/ldconfig.c:745 elf/ldconfig.c:793 elf/ldconfig.c:827
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
msgid "Cannot lstat %s"
msgstr "ha fallat lstat() sobre «%s»"
-#: elf/ldconfig.c:579
+#: elf/ldconfig.c:599
#, c-format
msgid "Ignored file %s since it is not a regular file."
msgstr "es descarta el fitxer «%s» que no és un fitxer ordinari"
-#: elf/ldconfig.c:588
+#: elf/ldconfig.c:608
#, c-format
msgid "No link created since soname could not be found for %s"
msgstr "no s’ha creat l’enllaç perquè no s’ha trobat el nom d’objecte compartit de «%s»"
-#: elf/ldconfig.c:671
+#: elf/ldconfig.c:691
#, c-format
msgid "Can't open directory %s"
msgstr "no s’ha pogut obrir el directori «%s»"
-#: elf/ldconfig.c:759
+#: elf/ldconfig.c:779
#, c-format
msgid "Cannot stat %s"
msgstr "ha fallat stat() sobre «%s»"
-#: elf/ldconfig.c:814 elf/readlib.c:91
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
msgid "Input file %s not found.\n"
msgstr "no s’ha trobat el fitxer d’entrada «%s»\n"
-#: elf/ldconfig.c:888
+#: elf/ldconfig.c:908
#, c-format
msgid "libc5 library %s in wrong directory"
msgstr "la biblioteca «%s» per a libc5 es troba en un directori incorrecte"
-#: elf/ldconfig.c:891
+#: elf/ldconfig.c:911
#, c-format
msgid "libc6 library %s in wrong directory"
msgstr "la biblioteca «%s» per a libc6 es troba en un directori incorrecte"
-#: elf/ldconfig.c:894
+#: elf/ldconfig.c:914
#, c-format
msgid "libc4 library %s in wrong directory"
msgstr "la biblioteca «%s» per a libc4 es troba en un directori incorrecte"
-#: elf/ldconfig.c:922
+#: elf/ldconfig.c:942
#, c-format
msgid "libraries %s and %s in directory %s have same soname but different type."
msgstr "les biblioteques «%s» i «%s» del directori «%s» tenen el mateix nom d’objecte compartit però diferent tipus."
-#: elf/ldconfig.c:1031
+#: elf/ldconfig.c:1051
#, c-format
msgid "Can't open configuration file %s"
msgstr "no s’ha pogut obrir el fitxer «%s» de configuració"
-#: elf/ldconfig.c:1095
+#: elf/ldconfig.c:1115
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
msgstr "%s:%u: la sintaxi de la línia «hwcap» no és vàlida"
-#: elf/ldconfig.c:1101
+#: elf/ldconfig.c:1121
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
msgstr "%s:%u: la «hwcap» amb índex %lu està sobre el màxim %u"
# La substitució final és per un nom. ivb
-#: elf/ldconfig.c:1108 elf/ldconfig.c:1116
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
msgstr "%s:%u: la «hwcap» amb índex %lu ja ha estat definida com a «%s»"
-#: elf/ldconfig.c:1119
+#: elf/ldconfig.c:1139
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
msgstr "%s:%u: la «hwcap» %lu amb nom «%s» està duplicada"
-#: elf/ldconfig.c:1141
+#: elf/ldconfig.c:1161
#, c-format
msgid "need absolute file name for configuration file when using -r"
msgstr "cal indicar el camí absolut del fitxer de configuració en emprar «-r»"
-#: elf/ldconfig.c:1148 locale/programs/xmalloc.c:70 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
msgid "memory exhausted"
msgstr "la memòria s’ha exhaurit"
-#: elf/ldconfig.c:1178
+#: elf/ldconfig.c:1198
#, c-format
msgid "%s:%u: cannot read directory %s"
msgstr "%s:%u: no s’ha pogut llegir el directori «%s»"
-#: elf/ldconfig.c:1223
+#: elf/ldconfig.c:1242
#, c-format
msgid "relative path `%s' used to build cache"
msgstr "s’ha indicat el camí relatiu «%s» per a construir la memòria cau"
-#: elf/ldconfig.c:1249
+#: elf/ldconfig.c:1268
#, c-format
msgid "Can't chdir to /"
msgstr "no s’ha pogut canviar al directori arrel"
-#: elf/ldconfig.c:1291
+#: elf/ldconfig.c:1310
#, c-format
msgid "Can't open cache file directory %s\n"
msgstr "no s’ha pogut obrir el directori «%s» de fitxers de memòria cau\n"
@@ -1005,8 +1007,6 @@ msgid ""
" -r, --function-relocs process data and function relocations\n"
" -u, --unused print unused direct dependencies\n"
" -v, --verbose print all information\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Forma d’ús: ldd [OPCIÓ]… FITXER…\n"
"\n"
@@ -1017,54 +1017,52 @@ msgstr ""
" --help Mostra aquesta ajuda i ix.\n"
" --version Mostra informació sobre la versió i ix.\n"
"\n"
-"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: elf/ldd.bash.in:80
+#: elf/ldd.bash.in:82
msgid "ldd: option \\`$1' is ambiguous"
msgstr "ldd: l’opció «$1» és ambígua"
-#: elf/ldd.bash.in:87
+#: elf/ldd.bash.in:89
msgid "unrecognized option"
msgstr "l’opció no és reconeguda"
-#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
msgid "Try \\`ldd --help' for more information."
msgstr "Proveu «ldd --help» per a obtenir més informació."
-#: elf/ldd.bash.in:125
+#: elf/ldd.bash.in:127
msgid "missing file arguments"
msgstr "manquen arguments fitxer"
#. TRANS No such file or directory. This is a ``file doesn't exist'' error
#. TRANS for ordinary files that are referenced in contexts where they are
#. TRANS expected to already exist.
-#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
msgstr "El fitxer o directori no existeix"
# ivb (2001/10/31)
# ivb Cal tenir en compte que «ordinary» a l'anglés és cosa pler diferent ;)
-#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
msgid "not regular file"
msgstr "no és un fitxer ordinari"
# Darrere va el nom de fitxer, no puc canviar les cometes. :( ivb
-#: elf/ldd.bash.in:154
+#: elf/ldd.bash.in:156
msgid "warning: you do not have execution permission for"
msgstr "avís: no teniu permís d’execució per a"
-#: elf/ldd.bash.in:183
+#: elf/ldd.bash.in:185
msgid "\tnot a dynamic executable"
msgstr "\tno és un executable dinàmic"
# Davant va el nom de fitxer, no puc canviar les cometes. :( ivb
-#: elf/ldd.bash.in:191
+#: elf/ldd.bash.in:193
msgid "exited with unknown exit code"
msgstr "ha finalitzat amb un codi d’eixida desconegut"
# Darrere va el nom de fitxer, no puc canviar les cometes. :( ivb
-#: elf/ldd.bash.in:196
+#: elf/ldd.bash.in:198
msgid "error: you do not have read permission for"
msgstr "error: no teniu permís de lectura per a"
@@ -1123,6 +1121,45 @@ msgstr "ha fallat mmap() sobre el fitxer «%s»\n"
msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
msgstr "«%s» no és un fitxer ELF: els octets màgics del començament no són correctes\n"
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+"Forma d’ús: sln ORIGEN DESTÃ|FITXER\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s: error en obrir el fitxer: %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "manca un destí a la línia %d\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s: el destí no ha de ser un directori\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr "%s: no s’ha pogut esborrar el destí antic\n"
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s: el destí no és vàlid: %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "l’enllaç des de «%s» cap a «%s» no és vàlid: %s\n"
+
# Més ajudes. ivb
#: elf/sprof.c:77
msgid "Output selection:"
@@ -1140,133 +1177,131 @@ msgstr "Genera un perfil pla amb recomptes i unitats de temps."
msgid "generate call graph"
msgstr "Genera un gràfic de crides."
-# FIXME: Don't use \v.
#: elf/sprof.c:89
-msgid ""
-"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Llig i mostra les dades de perfilat d’un objecte compartit.\n"
-"\n"
-"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Read and display shared object profiling data."
+msgstr "Llig i mostra les dades de perfilat d’un objecte compartit."
#: elf/sprof.c:94
msgid "SHOBJ [PROFDATA]"
msgstr "OBJECTE_COMPARTIT [DADES_PERFILAT]"
-#: elf/sprof.c:400
+#: elf/sprof.c:420
#, c-format
msgid "failed to load shared object `%s'"
msgstr "no s’ha pogut carregar l’objecte compartit «%s»"
-#: elf/sprof.c:409
+#: elf/sprof.c:429
#, c-format
msgid "cannot create internal descriptors"
msgstr "no s’han pogut crear els descriptors interns"
-#: elf/sprof.c:528
+#: elf/sprof.c:548
#, c-format
msgid "Reopening shared object `%s' failed"
msgstr "no s’ha pogut reobrir l’objecte compartit «%s»"
-#: elf/sprof.c:535 elf/sprof.c:629
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
msgid "reading of section headers failed"
msgstr "la lectura de les capçaleres de secció ha fallat"
-#: elf/sprof.c:543 elf/sprof.c:637
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
msgid "reading of section header string table failed"
msgstr "la lectura de la taula de cadenes de capçalera de secció ha fallat"
-#: elf/sprof.c:569
+#: elf/sprof.c:589
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
msgstr "*** No s’ha pogut llegir el nom del fitxer d’informació de depuració: %m\n"
-#: elf/sprof.c:589
+#: elf/sprof.c:609
#, c-format
msgid "cannot determine file name"
msgstr "no s’ha pogut determinar un nom de fitxer"
-#: elf/sprof.c:622
+#: elf/sprof.c:642
#, c-format
msgid "reading of ELF header failed"
msgstr "la lectura de la capçalera ELF ha fallat"
-#: elf/sprof.c:658
+#: elf/sprof.c:678
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
msgstr "*** El fitxer «%s» no conté símbols: no és possible l’anàlisi detallada\n"
-#: elf/sprof.c:688
+#: elf/sprof.c:708
#, c-format
msgid "failed to load symbol data"
msgstr "no s’han pogut carregar les dades simbòliques"
-#: elf/sprof.c:755
+#: elf/sprof.c:775
#, c-format
msgid "cannot load profiling data"
msgstr "no s’han pogut carregar les dades de perfilat"
-#: elf/sprof.c:764
+#: elf/sprof.c:784
#, c-format
msgid "while stat'ing profiling data file"
msgstr "en cridar stat() sobre el fitxer de dades de perfilat"
-#: elf/sprof.c:772
+#: elf/sprof.c:792
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
msgstr "el fitxer «%s» de dades de perfilat no correspon a l’objecte compartit «%s»"
-#: elf/sprof.c:783
+#: elf/sprof.c:803
#, c-format
msgid "failed to mmap the profiling data file"
msgstr "ha fallat mmap() sobre el fitxer de dades de perfilat"
-#: elf/sprof.c:791
+#: elf/sprof.c:811
#, c-format
msgid "error while closing the profiling data file"
msgstr "error en tancar el fitxer de dades de perfilat"
-#: elf/sprof.c:800 elf/sprof.c:870
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
msgid "cannot create internal descriptor"
msgstr "no s’ha pogut crear un descriptor intern"
-#: elf/sprof.c:846
+#: elf/sprof.c:866
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
msgstr "«%s» no és un fitxer vàlid de perfilat de «%s»"
-#: elf/sprof.c:1027 elf/sprof.c:1085
+#: elf/sprof.c:1047 elf/sprof.c:1105
#, c-format
msgid "cannot allocate symbol data"
msgstr "no s’han pogut reservar les dades de símbols"
-#: iconv/iconv_charmap.c:176 iconv/iconv_prog.c:316
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "no s’ha pogut obrir el fitxer d’eixida"
+
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
msgstr "error en tancar l’entrada «%s»"
-#: iconv/iconv_charmap.c:450
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
msgstr "hi ha una seqüència d’entrada no vàlida a la posició %Zd"
-#: iconv/iconv_charmap.c:469 iconv/iconv_prog.c:526
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
#, c-format
msgid "incomplete character or shift sequence at end of buffer"
msgstr "hi ha un caràcter o seqüència de desplaçament incompleta al final de la memòria intermèdia"
-#: iconv/iconv_charmap.c:514 iconv/iconv_charmap.c:550 iconv/iconv_prog.c:569
-#: iconv/iconv_prog.c:605
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
#, c-format
msgid "error while reading the input"
msgstr "error en llegir l’entrada"
-#: iconv/iconv_charmap.c:532 iconv/iconv_prog.c:587
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
#, c-format
msgid "unable to allocate buffer for input"
msgstr "no s’ha pogut reservar memòria intermèdia per a l’entrada"
@@ -1320,62 +1355,57 @@ msgstr "Converteix els fitxers especificats d’una codificació a una altra."
msgid "[FILE...]"
msgstr "[FITXER…]"
-#: iconv/iconv_prog.c:200
-#, c-format
-msgid "cannot open output file"
-msgstr "no s’ha pogut obrir el fitxer d’eixida"
-
-#: iconv/iconv_prog.c:242
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
msgstr "les conversions de «%s» i a «%s» no estan implementades"
-#: iconv/iconv_prog.c:247
+#: iconv/iconv_prog.c:239
#, c-format
msgid "conversion from `%s' is not supported"
msgstr "la conversió de «%s» no està implementada"
-#: iconv/iconv_prog.c:254
+#: iconv/iconv_prog.c:246
#, c-format
msgid "conversion to `%s' is not supported"
msgstr "la conversió a «%s» no està implementada"
-#: iconv/iconv_prog.c:258
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
msgstr "la conversió de «%s» a «%s» no està implementada"
-#: iconv/iconv_prog.c:268
+#: iconv/iconv_prog.c:260
#, c-format
msgid "failed to start conversion processing"
msgstr "no s’ha pogut començar a processar la conversió"
-#: iconv/iconv_prog.c:362
+#: iconv/iconv_prog.c:358
#, c-format
msgid "error while closing output file"
msgstr "error en tancar el fitxer d’eixida"
-#: iconv/iconv_prog.c:471 iconv/iconv_prog.c:497
+#: iconv/iconv_prog.c:456
#, c-format
msgid "conversion stopped due to problem in writing the output"
msgstr "la conversió s’ha detingut a causa d’un problema en escriure l’eixida"
-#: iconv/iconv_prog.c:522
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
msgstr "hi ha una seqüència d’entrada no vàlida a la posició %ld"
-#: iconv/iconv_prog.c:530
+#: iconv/iconv_prog.c:541
#, c-format
msgid "internal error (illegal descriptor)"
msgstr "error intern (el descriptor no és vàlid)"
-#: iconv/iconv_prog.c:533
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
msgstr "error desconegut %d a iconv()"
-#: iconv/iconv_prog.c:779
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -1617,7 +1647,7 @@ msgstr "sobren octets a la codificació del caràcter"
msgid "no symbolic name given for end of range"
msgstr "no s’ha indicat un nom simbòlic per a la fi del rang"
-#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
#: locale/programs/ld-identification.c:452
@@ -1645,8 +1675,8 @@ msgstr "el valor de %s ha de ser un enter"
msgid "%s: error in state machine"
msgstr "%s: error a la màquina d’estats"
-#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
-#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4115
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
#: locale/programs/ld-identification.c:468
#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
@@ -1668,7 +1698,7 @@ msgstr "el caràcter «%s» no és conegut"
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
msgstr "el nombre d’octets de les seqüències d’inici i final del rang no són iguals: %d i %d"
-#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3047
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
msgstr "els noms del rang de caràcters no són vàlids"
@@ -1693,7 +1723,7 @@ msgstr "el límit superior del rang és menor que l’inferior"
msgid "resulting bytes for range not representable."
msgstr "els octets resultants del rang no són representables"
-#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
@@ -1703,10 +1733,10 @@ msgstr "els octets resultants del rang no són representables"
msgid "No definition for %s category found"
msgstr "no s’ha trobat cap definició de la categoria «%s»"
-#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
-#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
-#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
-#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
@@ -1719,14 +1749,14 @@ msgstr "no s’ha trobat cap definició de la categoria «%s»"
msgid "%s: field `%s' not defined"
msgstr "%s: no s’ha definit el camp «%s»"
-#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
-#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
msgstr "%s: el camp «%s» no ha d’estar buit"
-#: locale/programs/ld-address.c:168
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
msgstr "%s: la seqüència d’escapada «%%%c» del camp «%s» no és vàlida"
@@ -1735,34 +1765,34 @@ msgstr "%s: la seqüència d’escapada «%%%c» del camp «%s» no és vàlida"
# ivb Pel que sembla hi ha un codi terminològic de llengua i un
# ivb codi bibliogràfic de llengua.
# ivb http://anubis.dkuug.dk/i18n/iso-639-2-dis.txt
-#: locale/programs/ld-address.c:219
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
msgstr "%s: no s’ha definit el codi terminològic de llengua «%s»"
-#: locale/programs/ld-address.c:244
+#: locale/programs/ld-address.c:246
#, c-format
msgid "%s: field `%s' must not be defined"
msgstr "%s: no s’ha de definir el camp «%s»"
-#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
msgstr "%s: no s’ha definit l’abreviatura de llengua «%s»"
-#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
-#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
msgstr "%s: el valor de «%s» no concorda amb el valor de «%s»"
-#: locale/programs/ld-address.c:312
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
msgstr "%s: el codi numèric de país «%d» no és vàlid"
-#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
-#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
#: locale/programs/ld-identification.c:364
#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
@@ -1774,7 +1804,7 @@ msgstr "%s: el codi numèric de país «%d» no és vàlid"
msgid "%s: field `%s' declared more than once"
msgstr "%s: el camp «%s» ha estat declarat més d’una volta"
-#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
@@ -1784,7 +1814,7 @@ msgstr "%s: el camp «%s» ha estat declarat més d’una volta"
msgid "%s: unknown character in field `%s'"
msgstr "%s: el camp «%s» conté un caràcter desconegut"
-#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
@@ -1794,10 +1824,10 @@ msgstr "%s: el camp «%s» conté un caràcter desconegut"
msgid "%s: incomplete `END' line"
msgstr "%s: la línia «END» és incompleta"
-#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:542
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
-#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4105
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
#: locale/programs/ld-identification.c:459
@@ -1940,7 +1970,7 @@ msgstr "no s’ha definit «UNDEFINED»"
msgid "too many errors; giving up"
msgstr "hi ha massa errors: s’abandona"
-#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4044
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
#, c-format
msgid "%s: nested conditionals not supported"
msgstr "%s: no es permeten els condicionals niats"
@@ -1960,27 +1990,27 @@ msgstr "%s: la definició de «%s» és duplicada"
msgid "%s: duplicate declaration of section `%s'"
msgstr "%s: la declaració de la secció «%s» és duplicada"
-#: locale/programs/ld-collate.c:3027
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
msgstr "%s: el nom del símbol d’ordenació conté un caràcter desconegut"
-#: locale/programs/ld-collate.c:3159
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
msgstr "%s: el nom de la definició equivalent conté un caràcter desconegut"
-#: locale/programs/ld-collate.c:3172
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
msgstr "%s: el valor de la definició equivalent conté un caràcter desconegut"
-#: locale/programs/ld-collate.c:3182
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
msgstr "%s: la definició equivalent conté el símbol desconegut «%s»"
-#: locale/programs/ld-collate.c:3191
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
msgstr "error en afegir un símbol d’ordenació equivalent"
@@ -2060,12 +2090,12 @@ msgstr "%s: no es permet una descripció buida de la categoria"
msgid "%s: missing `reorder-sections-end' keyword"
msgstr "%s: manca la paraula clau «reorder-sections-end»"
-#: locale/programs/ld-collate.c:4077
+#: locale/programs/ld-collate.c:4079
#, c-format
msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
msgstr "%s: s’ha trobat un «%s» sense el corresponent «ifdef» o «ifndef»"
-#: locale/programs/ld-collate.c:4095
+#: locale/programs/ld-collate.c:4097
#, c-format
msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
msgstr "%s: s’ha trobat un «endif» sense el corresponent «ifdef» o «ifndef»"
@@ -2389,7 +2419,7 @@ msgstr "%s: brossa al final de la data de començament de la cadena %Zd del camp
msgid "%s: starting date is invalid in string %Zd in `era' field"
msgstr "%s: la data de començament de la cadena %Zd del camp «era» no és vàlida"
-#: locale/programs/ld-time.c:407
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
msgstr "%s: la data d’acabament de la cadena %Zd del camp «era» no és vàlida"
@@ -2399,11 +2429,6 @@ msgstr "%s: la data d’acabament de la cadena %Zd del camp «era» no és vàli
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
msgstr "%s: brossa al final de la data d’acabament de la cadena %Zd del camp «era»"
-#: locale/programs/ld-time.c:435
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s: la data d’acabament de la cadena %Zd del camp «era» no és vàlida"
-
#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
@@ -2508,18 +2533,11 @@ msgstr "Mostra els noms de les paraules clau seleccionades."
msgid "Print more information"
msgstr "Mostra més informació."
-# FIXME: Don't use \v.
#: locale/programs/locale.c:87
-msgid ""
-"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Obté informació específica del locale.\n"
-"\n"
-"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get locale-specific information."
+msgstr "Obté informació específica del locale."
-#: locale/programs/locale.c:92
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
@@ -2527,27 +2545,27 @@ msgstr ""
"NOM\n"
"[-a | -m]"
-#: locale/programs/locale.c:193
+#: locale/programs/locale.c:194
#, c-format
msgid "Cannot set LC_CTYPE to default locale"
msgstr "no s’ha pogut establir LC_CTYPE al locale per defecte"
-#: locale/programs/locale.c:195
+#: locale/programs/locale.c:196
#, c-format
msgid "Cannot set LC_MESSAGES to default locale"
msgstr "no s’ha pogut establir LC_MESSAGES al locale per defecte"
-#: locale/programs/locale.c:208
+#: locale/programs/locale.c:209
#, c-format
msgid "Cannot set LC_COLLATE to default locale"
msgstr "no s’ha pogut establir LC_COLLATE al locale per defecte"
-#: locale/programs/locale.c:224
+#: locale/programs/locale.c:225
#, c-format
msgid "Cannot set LC_ALL to default locale"
msgstr "no s’ha pogut establir LC_ALL al locale per defecte"
-#: locale/programs/locale.c:500
+#: locale/programs/locale.c:518
#, c-format
msgid "while preparing output"
msgstr "en preparar l’eixida"
@@ -2844,7 +2862,7 @@ msgid "cannot create output file `%s' for category `%s'"
msgstr "no s’ha pogut crear el fitxer d’eixida «%s» de la categoria «%s»"
#: locale/programs/locfile.c:782
-msgid "expect string argument for `copy'"
+msgid "expecting string argument for `copy'"
msgstr "cal una cadena com a argument de «copy»"
#: locale/programs/locfile.c:786
@@ -2963,8 +2981,6 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Forma d’ús: memusage [OPCIÓ]… PROGRAMA [OPCIÓ_DE_PROGRAMA]…\n"
"Fa un perfilat de l’ús de memòria del PROGRAMA.\n"
@@ -2982,6 +2998,7 @@ msgstr ""
" -V, --version Mostra informació sobre la versió i ix.\n"
"\n"
"Les opcions següents només es tenen en compte en generar un gràfic d’eixida:\n"
+"\n"
" -t, --time-based Genera un gràfic lineal en el temps.\n"
" -T, --total Inclou un gràfic de l’ús total de memòria.\n"
" --title=CADENA Empra la CADENA com a títol del gràfic.\n"
@@ -2991,11 +3008,9 @@ msgstr ""
"Els arguments obligatoris per a les opcions llargues també ho són per a les\n"
"opcions curtes corresponents.\n"
"\n"
-"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
# Resumit com la resta. ivb
-#: malloc/memusage.sh:99
+#: malloc/memusage.sh:101
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
@@ -3003,52 +3018,52 @@ msgid ""
" PROGRAM [PROGRAMOPTION]..."
msgstr "Sintaxi: memusage [OPCIÓ]… PROGRAMA [OPCIÓ_DE_PROGRAMA]…"
-#: malloc/memusage.sh:191
+#: malloc/memusage.sh:193
msgid "memusage: option \\`${1##*=}' is ambiguous"
msgstr "memusage: l’opció «${1##*=}» és ambígua"
-#: malloc/memusage.sh:200
+#: malloc/memusage.sh:202
msgid "memusage: unrecognized option \\`$1'"
msgstr "memusage: l’opció «$1» no és reconeguda"
-#: malloc/memusage.sh:213
+#: malloc/memusage.sh:215
msgid "No program name given"
msgstr "No s’ha indicat un nom de programa"
# Més ajudes. ivb
-#: malloc/memusagestat.c:54
+#: malloc/memusagestat.c:57
msgid "Name output file"
msgstr "Especifica el fitxer d’eixida."
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:58
msgid "Title string used in output graphic"
msgstr "Cadena amb el títol a emprar al gràfic d’eixida."
-#: malloc/memusagestat.c:56
+#: malloc/memusagestat.c:59
msgid "Generate output linear to time (default is linear to number of function calls)"
msgstr "Genera una eixida lineal respecte el temps (per defecte és lineal respecte el nombre de crides a funció)."
-#: malloc/memusagestat.c:58
+#: malloc/memusagestat.c:61
msgid "Also draw graph for total memory consumption"
msgstr "També mostra un gràfic del consum total de memòria."
-#: malloc/memusagestat.c:59
+#: malloc/memusagestat.c:62
msgid "Make output graphic VALUE pixels wide"
msgstr "Fa el gràfic d’eixida de VALOR píxels d’amplada."
-#: malloc/memusagestat.c:60
+#: malloc/memusagestat.c:63
msgid "Make output graphic VALUE pixels high"
msgstr "Fa el gràfic d’eixida de VALOR píxels d’altura."
-#: malloc/memusagestat.c:65
+#: malloc/memusagestat.c:68
msgid "Generate graphic from memory profiling data"
msgstr "Genera un gràfic amb les dades de perfilat de memòria."
-#: malloc/memusagestat.c:68
+#: malloc/memusagestat.c:71
msgid "DATAFILE [OUTFILE]"
msgstr "FITXER_DADES [FITXER_EIXIDA]"
-#: misc/error.c:118 timezone/zic.c:417
+#: misc/error.c:118
msgid "Unknown system error"
msgstr "error desconegut del sistema"
@@ -3056,7 +3071,7 @@ msgstr "error desconegut del sistema"
msgid "unable to free arguments"
msgstr "no s’han pogut alliberar els arguments"
-#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr "Èxit"
@@ -3098,7 +3113,7 @@ msgid "First/next chain broken"
msgstr "S’ha trencat la cadena de primer/següent"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
msgstr "S’ha denegat el permís"
@@ -3618,219 +3633,241 @@ msgstr "netname2user: l’entrada LOCAL de «%s» al directori «%s» no és ún
msgid "netname2user: should not have uid 0"
msgstr "netname2user: no ha de tenir l’UID 0"
-#: nis/ypclnt.c:825
+#: nis/ypclnt.c:836
msgid "Request arguments bad"
msgstr "Els arguments de la petició són incorrectes"
-#: nis/ypclnt.c:828
+#: nis/ypclnt.c:839
msgid "RPC failure on NIS operation"
msgstr "El procediment RPC ha fallat en una operació NIS"
-#: nis/ypclnt.c:831
+#: nis/ypclnt.c:842
msgid "Can't bind to server which serves this domain"
msgstr "No s’ha pogut enllaçar amb el servidor d’aquest domini"
-#: nis/ypclnt.c:834
+#: nis/ypclnt.c:845
msgid "No such map in server's domain"
msgstr "El mapa no és al domini del servidor"
-#: nis/ypclnt.c:837
+#: nis/ypclnt.c:848
msgid "No such key in map"
msgstr "La clau no és al mapa"
-#: nis/ypclnt.c:840
+#: nis/ypclnt.c:851
msgid "Internal NIS error"
msgstr "Error intern de NIS"
-#: nis/ypclnt.c:843
+#: nis/ypclnt.c:854
msgid "Local resource allocation failure"
msgstr "No s’ha pogut assignar un recurs local"
-#: nis/ypclnt.c:846
+#: nis/ypclnt.c:857
msgid "No more records in map database"
msgstr "No hi ha més registres a la base de dades del mapa"
-#: nis/ypclnt.c:849
+#: nis/ypclnt.c:860
msgid "Can't communicate with portmapper"
msgstr "No s’ha pogut comunicar amb el mapador de ports"
-#: nis/ypclnt.c:852
+#: nis/ypclnt.c:863
msgid "Can't communicate with ypbind"
msgstr "No s’ha pogut comunicar amb «ypbind»"
-#: nis/ypclnt.c:855
+#: nis/ypclnt.c:866
msgid "Can't communicate with ypserv"
msgstr "No s’ha pogut comunicar amb «ypserv»"
-#: nis/ypclnt.c:858
+#: nis/ypclnt.c:869
msgid "Local domain name not set"
msgstr "No s’ha establert nom del domini local"
-#: nis/ypclnt.c:861
+#: nis/ypclnt.c:872
msgid "NIS map database is bad"
msgstr "La base de dades de mapes NIS és feta malbé"
-#: nis/ypclnt.c:864
+#: nis/ypclnt.c:875
msgid "NIS client/server version mismatch - can't supply service"
msgstr "Les versions de client i servidor NIS difereixen; no es pot donar servei"
-#: nis/ypclnt.c:870
+#: nis/ypclnt.c:881
msgid "Database is busy"
msgstr "La base de dades es troba ocupada"
-#: nis/ypclnt.c:873
+#: nis/ypclnt.c:884
msgid "Unknown NIS error code"
msgstr "Codi d’error desconegut de NIS"
-#: nis/ypclnt.c:913
+#: nis/ypclnt.c:924
msgid "Internal ypbind error"
msgstr "Error intern d’«ypbind»"
-#: nis/ypclnt.c:916
+#: nis/ypclnt.c:927
msgid "Domain not bound"
msgstr "El domini no és vinculat"
-#: nis/ypclnt.c:919
+#: nis/ypclnt.c:930
msgid "System resource allocation failure"
msgstr "No s’han pogut assignar recursos del sistema"
-#: nis/ypclnt.c:922
+#: nis/ypclnt.c:933
msgid "Unknown ypbind error"
msgstr "Error desconegut d’«ypbind»"
-#: nis/ypclnt.c:963
+#: nis/ypclnt.c:974
msgid "yp_update: cannot convert host to netname\n"
msgstr "yp_update: no s’ha pogut convertir el nom d’estació a nom de xarxa\n"
-#: nis/ypclnt.c:981
+#: nis/ypclnt.c:992
msgid "yp_update: cannot get server address\n"
msgstr "yp_update: no s’ha pogut obtenir l’adreça del servidor\n"
# El nom de la base de dades s’usa més a sovint que la descripció. ivb
-#: nscd/aicache.c:77 nscd/hstcache.c:468
+#: nscd/aicache.c:82 nscd/hstcache.c:481
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
msgstr "no s’ha trobat «%s» a la memòria cau de «hosts»"
# El nom de la base de dades s’usa més a sovint que la descripció. ivb
-#: nscd/aicache.c:79 nscd/hstcache.c:470
+#: nscd/aicache.c:84 nscd/hstcache.c:483
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
msgstr "es torna a carregar «%s» a la memòria cau de «hosts»"
# La 2a. és de l’estil de «GETPWBYNAME», la 3a. com «passwd». ivb
# Al darrere pot anar « (first)» o no. ivb
-#: nscd/cache.c:146
+#: nscd/cache.c:150
#, c-format
msgid "add new entry \"%s\" of type %s for %s to cache%s"
msgstr "s’afegeix una nova entrada «%s» de tipus %s a la memòria cau de «%s»%s"
# FIXME: language-dependent construct ivb
# Supose que vol dir «abans». ivb
-#: nscd/cache.c:148
+#: nscd/cache.c:152
msgid " (first)"
msgstr " (primer)"
-#: nscd/cache.c:256 nscd/connections.c:810
+#: nscd/cache.c:286 nscd/connections.c:866
#, c-format
msgid "cannot stat() file `%s': %s"
msgstr "ha fallat stat() sobre el fitxer «%s»: %s"
-#: nscd/cache.c:285
+#: nscd/cache.c:328
#, c-format
msgid "pruning %s cache; time %ld"
msgstr "neteja de la memòria cau de «%s», hora %ld"
# La 2a. és de l’estil de «GETPWBYNAME». ivb
-#: nscd/cache.c:312
+#: nscd/cache.c:357
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
msgstr "es considera l’entrada %s «%s», expiració %<PRIu64>"
-#: nscd/connections.c:521 nscd/connections.c:533 nscd/connections.c:545
-#: nscd/connections.c:564
+#: nscd/connections.c:570
#, c-format
msgid "invalid persistent database file \"%s\": %s"
msgstr "el fitxer de base de dades persistent «%s» no és vàlid: %s"
-#: nscd/connections.c:535
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr "la capçalera no es troba iniciada"
+
+#: nscd/connections.c:583
msgid "header size does not match"
msgstr "la mida de la capçalera no concorda"
-#: nscd/connections.c:547
+#: nscd/connections.c:593
msgid "file size does not match"
msgstr "la mida del fitxer no concorda"
-#: nscd/connections.c:566
+#: nscd/connections.c:610
msgid "verification failed"
msgstr "la verificació ha fallat"
-#: nscd/connections.c:580
+#: nscd/connections.c:624
#, c-format
msgid "suggested size of table for database %s larger than the persistent database's table"
msgstr "la mida de taula suggerida per a la base de dades «%s» és major que la de la base de dades persistent"
-#: nscd/connections.c:591 nscd/connections.c:673
+#: nscd/connections.c:635 nscd/connections.c:720
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
msgstr "no s’ha pogut crear un descriptor de només lectura per a «%s»; no s’emprarà mmap()"
-#: nscd/connections.c:652
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr "no s’ha pogut accedir a «%s»"
+
+#: nscd/connections.c:699
#, c-format
msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
msgstr "la base de dades de «%s» està corrupta o sent emprada concurrentment; elimineu «%s» manualment si cal i reinicieu"
-#: nscd/connections.c:659
+#: nscd/connections.c:706
#, c-format
msgid "cannot create %s; no persistent database used"
msgstr "no s’ha pogut crear «%s»; no s’emprarà una base de dades persistent"
-#: nscd/connections.c:662
+#: nscd/connections.c:709
#, c-format
msgid "cannot create %s; no sharing possible"
msgstr "no s’ha pogut crear «%s»; no es podrà compartir"
-#: nscd/connections.c:733
+#: nscd/connections.c:780
#, c-format
msgid "cannot write to database file %s: %s"
msgstr "no s’ha pogut escriure al fitxer de base de dades «%s»: %s"
-#: nscd/connections.c:772
+#: nscd/connections.c:819
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
msgstr "no s’ha pogut indicar que el connector es tanque en fer exec(): %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:823
+#: nscd/connections.c:902
#, c-format
msgid "cannot open socket: %s"
msgstr "no s’ha pogut obrir el connector: %s"
-#: nscd/connections.c:840
+#: nscd/connections.c:922
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
msgstr "no s’ha pogut canviar el connector al mode no blocador: %s"
-#: nscd/connections.c:848
+#: nscd/connections.c:930
#, c-format
msgid "cannot set socket to close on exec: %s"
msgstr "no s’ha pogut indicar que el connector es tanque en fer exec(): %s"
-#: nscd/connections.c:859
+#: nscd/connections.c:943
#, c-format
msgid "cannot enable socket to accept connections: %s"
msgstr "no s’ha pogut habilitar el connector per a acceptar connexions: %s"
-#: nscd/connections.c:955
+#: nscd/connections.c:1043
#, c-format
msgid "provide access to FD %d, for %s"
msgstr "es proporciona accés al descriptor de fitxer %d, per a «%s»"
-#: nscd/connections.c:967
+#: nscd/connections.c:1055
#, c-format
msgid "cannot handle old request version %d; current version is %d"
msgstr "no s’ha pogut atendre la petició amb versió antiga %d; la versió actual és %d"
-#: nscd/connections.c:1009 nscd/connections.c:1062
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr "no s’atén la petició de %ld per manca de permissos"
+
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr "no s’atén la petició de «%s» (%ld) per manca de permissos"
+
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr "no s’atén la petició per manca de permissos"
+
+#: nscd/connections.c:1125 nscd/connections.c:1178
#, c-format
msgid "cannot write result: %s"
msgstr "no s’ha pogut escriure el resultat: %s"
@@ -3840,228 +3877,245 @@ msgstr "no s’ha pogut escriure el resultat: %s"
# ivb dimoni «nscd» per consultar la memòria cau o invalidar-la. Per
# ivb això faig servir «programa de control» (com «ndc» amb «named» o
# ivb «chronyc» amb «chronyd»).
-#: nscd/connections.c:1145
+#: nscd/connections.c:1261
#, c-format
msgid "error getting caller's id: %s"
msgstr "error en obtenir l’identificador del programa de control: %s"
-#: nscd/connections.c:1204
+#: nscd/connections.c:1320
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "no s’ha pogut obrir «/proc/self/cmdline»: %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:1218
+#: nscd/connections.c:1334
#, c-format
msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "no s’ha pogut llegir «/proc/self/cmdline»: %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:1258
+#: nscd/connections.c:1374
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
msgstr "no s’ha pogut tornar a l’UID vell: %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:1268
+#: nscd/connections.c:1384
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
msgstr "no s’ha pogut tornar al GID vell: %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:1281
+#: nscd/connections.c:1397
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
msgstr "no s’ha pogut tornar al directori vell de treball: %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:1310
+#: nscd/connections.c:1429
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
msgstr "ha fallat la reexecució: %s; s’inhabilita el mode paranoic"
-#: nscd/connections.c:1319
+#: nscd/connections.c:1438
#, c-format
msgid "cannot change current working directory to \"/\": %s"
msgstr "no s’ha pogut canviar el directori de treball a «/»: %s"
-#: nscd/connections.c:1437
+#: nscd/connections.c:1644
#, c-format
msgid "short read while reading request: %s"
msgstr "lectura incompleta en llegir la petició: %s"
-#: nscd/connections.c:1468
+#: nscd/connections.c:1677
#, c-format
msgid "key length in request too long: %d"
msgstr "la longitud de la clau de la petició és massa gran: %d"
-#: nscd/connections.c:1481
+#: nscd/connections.c:1690
#, c-format
msgid "short read while reading request key: %s"
msgstr "lectura incompleta en llegir la clau de la petició: %s"
-#: nscd/connections.c:1490
+#: nscd/connections.c:1699
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
msgstr "handle_request: s’ha rebut una petició (amb versió %d) del PID %ld"
-#: nscd/connections.c:1495
+#: nscd/connections.c:1704
#, c-format
msgid "handle_request: request received (Version = %d)"
msgstr "handle_request: s’ha rebut una petició (amb versió %d)"
-#: nscd/connections.c:1856
+#: nscd/connections.c:1903 nscd/connections.c:2101
#, c-format
-msgid "could only start %d threads; terminating"
-msgstr "no s’han pogut iniciar %d fils d’execució; s’està finalitzant"
+msgid "disabled inotify after read error %d"
+msgstr "s’inhabilita «inotify» per l’error de lectura amb codi %d"
+
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr "no s’ha pogut iniciar la variable condicional"
-#: nscd/connections.c:1904 nscd/connections.c:1905 nscd/connections.c:1922
-#: nscd/connections.c:1931 nscd/connections.c:1949 nscd/connections.c:1960
-#: nscd/connections.c:1971
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr "no s’ha pogut iniciar el fil d’execució de neteja; s’està finalitzant"
+
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr "no s’ha pogut iniciar cap fil d’execució treballador; s’està finalitzant"
+
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
#, c-format
msgid "Failed to run nscd as user '%s'"
msgstr "no s’ha pogut executar «nscd» com a l’usuari «%s»"
-#: nscd/connections.c:1923
+#: nscd/connections.c:2322
#, c-format
msgid "initial getgrouplist failed"
msgstr "ha fallat getgrouplist() inicial"
-#: nscd/connections.c:1932
+#: nscd/connections.c:2331
#, c-format
msgid "getgrouplist failed"
msgstr "ha fallat getgrouplist()"
-#: nscd/connections.c:1950
+#: nscd/connections.c:2349
#, c-format
msgid "setgroups failed"
msgstr "ha fallat setgroups()"
-#: nscd/grpcache.c:402 nscd/hstcache.c:418 nscd/initgrcache.c:412
-#: nscd/pwdcache.c:397 nscd/servicescache.c:343
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
#, c-format
msgid "short write in %s: %s"
msgstr "escriptura incompleta a «%s»: %s"
# El nom de la base de dades s’usa més a sovint que la descripció. ivb
-#: nscd/grpcache.c:445 nscd/initgrcache.c:78
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
msgstr "no s’ha trobat «%s» a la memòria cau de «group»"
# El nom de la base de dades s’usa més a sovint que la descripció. ivb
-#: nscd/grpcache.c:447 nscd/initgrcache.c:80
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
msgstr "es torna a carregar «%s» a la memòria cau de «group»"
-#: nscd/grpcache.c:524
+#: nscd/grpcache.c:517
#, c-format
msgid "Invalid numeric gid \"%s\"!"
msgstr "«%s» no és un identificador numèric de grup vàlid"
-#: nscd/mem.c:383
+#: nscd/mem.c:457
#, c-format
msgid "freed %zu bytes in %s cache"
msgstr "s’han alliberat %zu octets de la memòria cau de «%s»"
-#: nscd/mem.c:512
+#: nscd/mem.c:594
#, c-format
msgid "no more memory for database '%s'"
msgstr "no resta memòria per a la base de dades «%s»"
# Més ajudes. ivb
-#: nscd/nscd.c:98
+#: nscd/nscd.c:101
msgid "Read configuration data from NAME"
msgstr "Llegeix les dades de configuració de NOM."
-#: nscd/nscd.c:100
+#: nscd/nscd.c:103
msgid "Do not fork and display messages on the current tty"
msgstr "No fa fork() i mostra els missatges al terminal actual."
# ivb (2001/10/30)
# ivb Es refereix al _nombre_ de fils a llançar.
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "NUMBER"
msgstr "NOMBRE"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "Start NUMBER threads"
msgstr "Llança NOMBRE fils d’exeució."
-#: nscd/nscd.c:102
+#: nscd/nscd.c:105
msgid "Shut the server down"
msgstr "Finalitza el servidor."
-#: nscd/nscd.c:103
-msgid "Print current configuration statistic"
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
msgstr "Mostra estadístiques de la configuració actual."
-#: nscd/nscd.c:104
+#: nscd/nscd.c:107
msgid "TABLE"
msgstr "TAULA"
-#: nscd/nscd.c:105
+#: nscd/nscd.c:108
msgid "Invalidate the specified cache"
msgstr "Invalida la memòria cau especificada."
-#: nscd/nscd.c:106
+#: nscd/nscd.c:109
msgid "TABLE,yes"
msgstr "TAULA,yes"
-#: nscd/nscd.c:107
+#: nscd/nscd.c:110
msgid "Use separate cache for each user"
msgstr "Empra una memòria cau diferent per a cada usuari."
-#: nscd/nscd.c:112
+#: nscd/nscd.c:115
msgid "Name Service Cache Daemon."
msgstr "Dimoni de memòria cau del servei de noms."
-#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
#, c-format
msgid "wrong number of arguments"
msgstr "el nombre d’arguments és incorrecte"
-#: nscd/nscd.c:154
+#: nscd/nscd.c:157
#, c-format
msgid "failure while reading configuration file; this is fatal"
msgstr "error en llegir el fitxer de configuració; açò és fatal"
-#: nscd/nscd.c:163
+#: nscd/nscd.c:166
#, c-format
msgid "already running"
msgstr "ja es troba en marxa"
-#: nscd/nscd.c:178 nscd/nscd.c:233
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
msgid "cannot fork"
msgstr "ha fallat fork()"
-#: nscd/nscd.c:241
+#: nscd/nscd.c:244
#, c-format
msgid "cannot change current working directory to \"/\""
msgstr "no s’ha pogut canviar el directori de treball a «/»"
-#: nscd/nscd.c:249
+#: nscd/nscd.c:252
msgid "Could not create log file"
msgstr "no s’ha pogut crear el fitxer de registre"
-#: nscd/nscd.c:302 nscd/nscd.c:327 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
msgid "Only root is allowed to use this option!"
msgstr "només root pot emprar aquesta opció"
-#: nscd/nscd.c:364 nscd/nscd_stat.c:191
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr "«%s» no és una base de dades coneguda"
+
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
msgid "write incomplete"
msgstr "escriptura incompleta"
-#: nscd/nscd.c:375
+#: nscd/nscd.c:381
#, c-format
msgid "cannot read invalidate ACK"
msgstr "no s’ha pogut llegir l’ACK d’invalidació"
-#: nscd/nscd.c:381
+#: nscd/nscd.c:387
#, c-format
msgid "invalidation failed"
msgstr "la invalidació ha fallat"
-#: nscd/nscd.c:391
+#: nscd/nscd.c:397
#, c-format
msgid "secure services not implemented anymore"
msgstr "ja no s’implementen els serveis segurs"
@@ -4076,37 +4130,37 @@ msgstr "la base de dades «%s» no s’accepta"
msgid "Parse error: %s"
msgstr "error d’anàlisi: %s"
-#: nscd/nscd_conf.c:193
+#: nscd/nscd_conf.c:194
#, c-format
msgid "Must specify user name for server-user option"
msgstr "cal especificar un nom d’usuari per a l’opció «server-user»"
-#: nscd/nscd_conf.c:200
+#: nscd/nscd_conf.c:201
#, c-format
msgid "Must specify user name for stat-user option"
msgstr "cal especificar un nom d’usuari per a l’opció «stat-user»"
-#: nscd/nscd_conf.c:244
+#: nscd/nscd_conf.c:245
#, c-format
msgid "invalid value for 'reload-count': %u"
msgstr "el valor de «reload-count» no és vàlid: %u"
-#: nscd/nscd_conf.c:259
+#: nscd/nscd_conf.c:260
#, c-format
msgid "Must specify value for restart-interval option"
msgstr "cal especificar un valor per a l’opció «restart-interval»"
-#: nscd/nscd_conf.c:273
+#: nscd/nscd_conf.c:274
#, c-format
msgid "Unknown option: %s %s %s"
msgstr "l’opció no és coneguda: %s %s %s"
-#: nscd/nscd_conf.c:286
+#: nscd/nscd_conf.c:287
#, c-format
msgid "cannot get current working directory: %s; disabling paranoia mode"
msgstr "no s’ha pogut obtenir el directori de treball actual: %s; s’inhabilita el mode paranoic"
-#: nscd/nscd_conf.c:306
+#: nscd/nscd_conf.c:307
#, c-format
msgid "maximum file size for %s database too small"
msgstr "la mida màxima de fitxer per a la base de dades «%s» és massa menuda"
@@ -4239,18 +4293,18 @@ msgstr ""
"%15s comprovar «/etc/%s» per si hi ha hagut canvis?\n"
# El nom de la base de dades s’usa més a sovint que la descripció. ivb
-#: nscd/pwdcache.c:440
+#: nscd/pwdcache.c:443
#, c-format
msgid "Haven't found \"%s\" in password cache!"
msgstr "no s’ha trobat «%s» a la memòria cau de «passwd»"
# El nom de la base de dades s’usa més a sovint que la descripció. ivb
-#: nscd/pwdcache.c:442
+#: nscd/pwdcache.c:445
#, c-format
msgid "Reloading \"%s\" in password cache!"
msgstr "es torna a carregar «%s» a la memòria cau de «passwd»"
-#: nscd/pwdcache.c:520
+#: nscd/pwdcache.c:523
#, c-format
msgid "Invalid numeric uid \"%s\"!"
msgstr "«%s» no és un identificador numèric d’usuari vàlid"
@@ -4326,7 +4380,11 @@ msgstr "error en obtenir el context d’«nscd»"
msgid "Error getting sid from context"
msgstr "error en obtenir el SID del context"
-#: nscd/selinux.c:399
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr "no s’ha compiŀlat la compatibilitat amb polítiques de bases de dades"
+
+#: nscd/selinux.c:407
#, c-format
msgid ""
"\n"
@@ -4374,32 +4432,25 @@ msgstr "BASE_DE_DADES [CLAU…]"
msgid "Service configuration to be used"
msgstr "Configuració a emprar del servei."
-# FIXME: Don't use \v.
#: nss/getent.c:62
-msgid ""
-"Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Obté entrades de les bases de dades d’administració.\n"
-"\n"
-"Per a obtenir instruccions sobre com informar d’un error, vegeu\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get entries from administrative database."
+msgstr "Obté entrades de les bases de dades d’administració."
-#: nss/getent.c:145 nss/getent.c:394
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
msgid "Enumeration not supported on %s\n"
msgstr "no es permet l’enumeració sobre «%s»\n"
-#: nss/getent.c:782
+#: nss/getent.c:794
#, c-format
msgid "Unknown database name"
msgstr "el nom de la base de dades no és conegut"
-#: nss/getent.c:808
+#: nss/getent.c:820
msgid "Supported databases:\n"
msgstr "Bases de dades acceptades:\n"
-#: nss/getent.c:868
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
msgstr "la base de dades no és coneguda: %s\n"
@@ -4474,153 +4525,167 @@ msgstr "Forma d’ús: %s [-v ESPECIFICACIÓ] NOM_DE_VARIABLE [CAMÃ]\n"
msgid " %s -a [pathname]\n"
msgstr " %s -a [CAMÃ]\n"
-#: posix/getconf.c:1067
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
+"Forma d’ús: getconf [-v ESPECIFICACIÓ] VARIABLE\n"
+" o bé: getconf [-v ESPECIFICACIÓ] VARIABLE_DE_CAMà CAMÃ\n"
+"\n"
+"Obté el valor de configuració per a la VARIABLE, o per a la VARIABLE_DE_CAMÃ\n"
+"donat un CAMÃ. Si s’indica una ESPECIFICACIÓ, mostra els valors per a l’entorn\n"
+"de compiŀlació indicat.\n"
+"\n"
+
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
msgstr "l’especificació «%s» no és coneguda"
-#: posix/getconf.c:1095
+#: posix/getconf.c:1109
#, c-format
msgid "Couldn't execute %s"
msgstr "no s’ha pogut executar «%s»"
# ivb (2001/11/01)
# ivb Es refereix a variables de configuració -> femení.
-#: posix/getconf.c:1135 posix/getconf.c:1151
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
msgstr "indefinida"
-#: posix/getconf.c:1173
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
msgstr "la variable «%s» no és reconeguda"
-#: posix/getopt.c:571 posix/getopt.c:587
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: l’opció «%s» és ambígua\n"
-#: posix/getopt.c:620 posix/getopt.c:624
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: l’opció «--%s» no admet arguments\n"
-#: posix/getopt.c:633 posix/getopt.c:638
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: l’opció «%c%s» no admet arguments\n"
-#: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
-#: posix/getopt.c:1035
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: l’opció «%s» necessita un argument\n"
-#: posix/getopt.c:738 posix/getopt.c:741
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: l’opció «--%s» no és reconeguda\n"
-#: posix/getopt.c:749 posix/getopt.c:752
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: l’opció «%c%s» no és reconeguda\n"
-#: posix/getopt.c:804 posix/getopt.c:807
-#, c-format
-msgid "%s: illegal option -- '%c'\n"
-msgstr "%s: no es permet l’opció «%c»\n"
-
-#: posix/getopt.c:813 posix/getopt.c:816
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: l’opció «%c» no és vàlida\n"
-#: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
-#: posix/getopt.c:1106
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: l’opció «%c» necessita un argument\n"
-#: posix/getopt.c:937 posix/getopt.c:953
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: l’opció «-W %s» és ambígua\n"
-#: posix/getopt.c:977 posix/getopt.c:995
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: l’opció «-W %s» no admet arguments\n"
-#: posix/regcomp.c:135
+#: posix/regcomp.c:136
msgid "No match"
msgstr "No hi ha cap coincidència"
-#: posix/regcomp.c:138
+#: posix/regcomp.c:139
msgid "Invalid regular expression"
msgstr "L’expressió regular no és vàlida"
-#: posix/regcomp.c:141
+#: posix/regcomp.c:142
msgid "Invalid collation character"
msgstr "El caràcter d’ordenació no és vàlid"
-#: posix/regcomp.c:144
+#: posix/regcomp.c:145
msgid "Invalid character class name"
msgstr "El nom de la classe de caràcters no és vàlid"
-#: posix/regcomp.c:147
+#: posix/regcomp.c:148
msgid "Trailing backslash"
msgstr "Hi ha una barra invertida sobrant al final"
-#: posix/regcomp.c:150
+#: posix/regcomp.c:151
msgid "Invalid back reference"
msgstr "La referència cap enrere no és vàlida"
-#: posix/regcomp.c:153
+#: posix/regcomp.c:154
msgid "Unmatched [ or [^"
msgstr "«[» o «[^» desaparellat"
-#: posix/regcomp.c:156
+#: posix/regcomp.c:157
msgid "Unmatched ( or \\("
msgstr "«(» o «\\(» desaparellat"
-#: posix/regcomp.c:159
+#: posix/regcomp.c:160
msgid "Unmatched \\{"
msgstr "«\\{» desaparellat"
-#: posix/regcomp.c:162
+#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
msgstr "El contingut de «\\{\\}» no és vàlid"
-#: posix/regcomp.c:165
+#: posix/regcomp.c:166
msgid "Invalid range end"
msgstr "El final del rang no és vàlid"
-#: posix/regcomp.c:168
+#: posix/regcomp.c:169
msgid "Memory exhausted"
msgstr "La memòria s’ha exhaurit"
-#: posix/regcomp.c:171
+#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
msgstr "L’expressió regular precedent és incorrecta"
-#: posix/regcomp.c:174
+#: posix/regcomp.c:175
msgid "Premature end of regular expression"
msgstr "Fi prematura de l’expressió regular"
-#: posix/regcomp.c:177
+#: posix/regcomp.c:178
msgid "Regular expression too big"
msgstr "L’expressió regular és massa llarga"
-#: posix/regcomp.c:180
+#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
msgstr "«)» o «\\)» desaparellat"
-#: posix/regcomp.c:660
+#: posix/regcomp.c:681
msgid "No previous regular expression"
msgstr "No hi ha expressió regular prèvia"
-#: posix/wordexp.c:1798
+#: posix/wordexp.c:1832
msgid "parameter null or not set"
msgstr "el paràmetre és nul o no s’ha establert"
@@ -4707,9 +4772,13 @@ msgstr "Senyal de temps real %d"
msgid "Unknown signal %d"
msgstr "Senyal desconegut %d"
-#: sunrpc/auth_unix.c:114
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create: no resta memòria\n"
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "no resta memòria\n"
# ivb (2001/11/01)
# ivb D'acord amb un comentari del propi fitxer.
@@ -4717,125 +4786,126 @@ msgstr "authunix_create: no resta memòria\n"
msgid "auth_unix.c: Fatal marshalling problem"
msgstr "auth_none.c: error fatal de preserialització"
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; versió menor = %lu, versió major = %lu"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s: %s; versió menor = %lu, versió major = %lu"
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr "; causa = "
+#: sunrpc/clnt_perr.c:112
+#, c-format
+msgid "%s: %s; why = %s\n"
+msgstr "%s: %s; causa = %s\n"
-#: sunrpc/clnt_perr.c:132
+#: sunrpc/clnt_perr.c:114
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(error desconegut d’autenticació: %d)"
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s: %s; causa = (error desconegut d’autenticació: %d)\n"
-#: sunrpc/clnt_perr.c:172
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
msgstr "RPC: Èxit"
-#: sunrpc/clnt_perr.c:175
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
msgstr "RPC: No s’han pogut codificar els arguments"
-#: sunrpc/clnt_perr.c:179
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
msgstr "RPC: No s’ha pogut descodificar el resultat"
-#: sunrpc/clnt_perr.c:183
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
msgstr "RPC: No s’ha pogut fer l’enviament"
-#: sunrpc/clnt_perr.c:187
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
msgstr "RPC: No s’ha pogut rebre"
-#: sunrpc/clnt_perr.c:191
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
msgstr "RPC: S’ha excedit el temps"
-#: sunrpc/clnt_perr.c:195
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
msgstr "RPC: Les versions d’RPC són incompatibles"
-#: sunrpc/clnt_perr.c:199
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
msgstr "RPC: Error d’autenticació"
-#: sunrpc/clnt_perr.c:203
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
msgstr "RPC: El programa no es troba disponible"
-#: sunrpc/clnt_perr.c:207
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
msgstr "RPC: No hi ha coincidència programa/versió"
-#: sunrpc/clnt_perr.c:211
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
msgstr "RPC: El procediment no es troba disponible"
-#: sunrpc/clnt_perr.c:215
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
msgstr "RPC: El servidor no ha pogut descodificar els arguments"
-#: sunrpc/clnt_perr.c:219
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
msgstr "RPC: Error al sistema remot"
-#: sunrpc/clnt_perr.c:223
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
msgstr "RPC: L’estació no és coneguda"
-#: sunrpc/clnt_perr.c:227
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
msgstr "RPC: El protocol no és conegut"
-#: sunrpc/clnt_perr.c:231
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
msgstr "RPC: Fallada del mapador de ports"
-#: sunrpc/clnt_perr.c:235
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
msgstr "RPC: El programa no s’ha donat d’alta"
-#: sunrpc/clnt_perr.c:239
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
msgstr "RPC: Ha fallat (error no especificat)"
-#: sunrpc/clnt_perr.c:280
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
msgstr "RPC: (codi d’error desconegut)"
-#: sunrpc/clnt_perr.c:342
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
msgstr "L’autenticació és vàlida"
-#: sunrpc/clnt_perr.c:345
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
msgstr "La credencial donada pel client no és vàlida"
-#: sunrpc/clnt_perr.c:349
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
msgstr "El servidor ha rebutjat la credencial"
-#: sunrpc/clnt_perr.c:353
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
msgstr "El verificador del client no és vàlid"
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
msgstr "El servidor ha rebutjat el verificador"
-#: sunrpc/clnt_perr.c:361
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
msgstr "La credencial del client és massa fluixa"
-#: sunrpc/clnt_perr.c:365
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
msgstr "El verificador del servidor no és vàlid"
-#: sunrpc/clnt_perr.c:369
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
msgstr "Ha fallat (no s’especifica l’error)"
@@ -4843,18 +4913,6 @@ msgstr "Ha fallat (no s’especifica l’error)"
msgid "clnt_raw.c: fatal header serialization error"
msgstr "clnt_raw.c: error fatal de serialització de capçaleres"
-#: sunrpc/clnt_tcp.c:131
-msgid "clnttcp_create: out of memory\n"
-msgstr "clnttcp_create: no resta memòria\n"
-
-#: sunrpc/clnt_udp.c:139
-msgid "clntudp_create: out of memory\n"
-msgstr "clntudp_create: no resta memòria\n"
-
-#: sunrpc/clnt_unix.c:128
-msgid "clntunix_create: out of memory\n"
-msgstr "clntunix_create: no resta memòria\n"
-
#: sunrpc/pm_getmaps.c:83
msgid "pmap_getmaps.c: rpc problem"
msgstr "pmap_getmaps.c: problema d’RPC"
@@ -4887,118 +4945,262 @@ msgstr "problema amb el sondeig de la difusió"
msgid "Cannot receive reply to broadcast"
msgstr "no s’ha pogut rebre una resposta a la difusió"
-#: sunrpc/rpc_main.c:286
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr "%s: l’eixida sobreescriuria «%s»\n"
-#: sunrpc/rpc_main.c:293
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr "%s: no s’ha pogut obrir «%s»: %m\n"
-#: sunrpc/rpc_main.c:305
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
msgstr "%s: en escriure a l’eixida «%s»: %m"
-#: sunrpc/rpc_main.c:340
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
msgstr "no s’ha pogut trobar el preprocessador de C: %s\n"
-#: sunrpc/rpc_main.c:348
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
msgstr "no s’ha pogut trobar cap preprocessador de C (cpp)\n"
-#: sunrpc/rpc_main.c:417
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
msgstr "%s: el preprocessador de C ha fallat amb el senyal %d\n"
-#: sunrpc/rpc_main.c:420
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
msgstr "%s: el preprocessador de C ha fallat amb el codi d’eixida %d\n"
-#: sunrpc/rpc_main.c:460
+#: sunrpc/rpc_main.c:464
#, c-format
msgid "illegal nettype: `%s'\n"
msgstr "el tipus de xarxa no és permès: «%s»\n"
-#: sunrpc/rpc_main.c:1122
+#: sunrpc/rpc_main.c:1130
#, c-format
msgid "rpcgen: too many defines\n"
msgstr "rpcgen: hi ha massa definicions\n"
-#: sunrpc/rpc_main.c:1134
+#: sunrpc/rpc_main.c:1142
#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr "rpcgen: error en codificar els arguments\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1167
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
msgstr "el fitxer «%s» ja existeix i podria ser sobreescrit\n"
-#: sunrpc/rpc_main.c:1212
+#: sunrpc/rpc_main.c:1220
#, c-format
msgid "Cannot specify more than one input file!\n"
msgstr "no es pot especificar més d’un fitxer d’entrada\n"
-#: sunrpc/rpc_main.c:1382
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
msgstr "aquesta implementació no accepta l’estil nou ni el codi compatible amb MT\n"
-#: sunrpc/rpc_main.c:1391
+#: sunrpc/rpc_main.c:1403
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
msgstr "no es pot emprar l’opció IDXARXA («-n») amb l’opció d’inetd («-I»)\n"
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
msgstr "no es pot emprar l’opció IDXARXA («-n») sense TIRPC\n"
-#: sunrpc/rpc_main.c:1410
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
msgstr "no es poden emprar opcions de taula amb l’estil nou («-N»)\n"
-#: sunrpc/rpc_main.c:1429
+#: sunrpc/rpc_main.c:1441
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
msgstr "cal FITXER_ENTRADA per als senyaladors de generació de plantilles\n"
-#: sunrpc/rpc_main.c:1434
+#: sunrpc/rpc_main.c:1446
#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr "no es pot tenir més d’un senyalador de generació de fitxers\n"
-#: sunrpc/rpc_main.c:1443
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
msgstr "Forma d’ús: %s FITXER_ENTRADA\n"
-#: sunrpc/rpc_main.c:1444
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
-msgstr "\t%s [-abkCLNTM][-D NOM[=VALOR]] [-i MIDA] [-I [-K SEGONS]] [-Y CAMÃ] FITXER_ENTRADA\n"
+msgstr ""
+" %s [-abkCLNTM] [-DNOM[=VALOR]] [-i MIDA] [-I [-K SEGONS]]\n"
+" [-Y CAMÃ] FITXER_ENTRADA\n"
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
-msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o FITXER_EIXIDA] [FITXER_ENTRADA]\n"
+msgstr ""
+" %s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o FITXER_EIXIDA]\n"
+" [FITXER_ENTRADA]\n"
-#: sunrpc/rpc_main.c:1448
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
-msgstr "\t%s [-s TIPUS_DE_XARXA]… [-o FITXER_EIXIDA] [FITXER_ENTRADA]\n"
+msgstr " %s [-s TIPUS_DE_XARXA]… [-o FITXER_EIXIDA] [FITXER_ENTRADA]\n"
-#: sunrpc/rpc_main.c:1449
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
-msgstr "\t%s [-n IDXARXA]… [-o FITXER_EIXIDA] [FITXER_ENTRADA]\n"
+msgstr " %s [-n IDXARXA]… [-o FITXER_EIXIDA] [FITXER_ENTRADA]\n"
+
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr ""
+"Opcions:\n"
+"\n"
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr " -a Genera tots els fitxers, incloent els exemples.\n"
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr ""
+" -b Mode de compatibilitat cap enrere (genera codi per a\n"
+" SunOS 4.1).\n"
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr " -c Genera rutines XDR.\n"
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr " -C Mode ANSI C.\n"
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr " -DNOM[=VALOR] Defineix un símbol (equival a «#define»).\n"
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr " -h Genera un fitxer de capçaleres.\n"
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr " -i MIDA Indica la MIDA on començar a generar codi en línia.\n"
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr ""
+" -I Genera codi de compatibilitat amb «inetd» per al\n"
+" servidor (per a SunOS 4.1).\n"
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr ""
+" -K SEGONS Fa que el servidor isca després del nombre indicat de\n"
+" SEGONS d’inactivitat.\n"
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr " -l Genera esquelets per a la part del client.\n"
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr " -L Fa que els errors del servidor s’envien a «syslog».\n"
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr " -m Genera esquelets per a la part del servidor.\n"
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr " -M Genera codi compatible amb múltiples fils d’execució.\n"
+
+# Sembla que «netid» és una expressió de la jerga RPC. ivb
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr " -n NETID Genera codi compatible amb el NETID indicat.\n"
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr " -N Permet arguments múltiples i pas d’arguments per valor.\n"
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr " -o FITXER_EIXIDA Nom del fitxer d’eixida.\n"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr ""
+" -s TIPUS_DE_XARXA Genera codi de servidor compatible amb el TIPUS_DE_XARXA\n"
+" indicat.\n"
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr ""
+" -Sc Genera codi d’exemple per a un client que empra\n"
+" procediments remots.\n"
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr ""
+" -Ss Genera codi d’exemple per a un servidor que defineix\n"
+" procediments remots.\n"
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr " -Sm Genera una plantilla de fitxer «Makefile».\n"
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr " -t Genera una taula de despatxat de crides RPC.\n"
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr ""
+" -T Genera codi per a treballar amb taules de despatxat de\n"
+" crides RPC.\n"
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr " -Y CAMÃ Directori on es troba el preprocessador de C (cpp).\n"
#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
@@ -5020,81 +5222,81 @@ msgstr "la cadena de caràcters és buida"
msgid "preprocessor error"
msgstr "error del preprocessador"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
msgstr "el programa %lu no es troba disponible\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
msgstr "el programa %lu, versió %lu, no es troba disponible\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr "el programa %lu, versió %lu, es troba llest i esperant\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
msgstr "rpcinfo: no s’ha pogut contactar amb el mapador de ports"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
msgstr "no hi ha cap programa remot donat d’alta\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
msgstr " programa vers proto port\n"
# ivb (2001/10/28)
# ivb Es refereix al nom d'una estació -> masculí.
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
msgstr "(desconegut)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
msgstr "rpcinfo: la difusió ha fallat: %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
msgstr "ho sent, no sou root\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
msgstr "rpcinfo: no s’ha pogut donar de baixa el programa «%s», versió %s\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
msgstr "Forma d’ús: rpcinfo [-n NÚMPORT] -u ESTACIÓ NÚMPROGRAMA [NÚMVERSIÓ]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr " rpcinfo [-n NÚMPORT] -t ESTACIÓ NÚMPROGRAMA [NÚMVERSIÓ]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
msgstr " rpcinfo -p [ESTACIÓ]\n"
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
msgstr " rpcinfo -b NÚMPROGRAMA NÚMVERSIÓ\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
msgstr " rpcinfo -d NÚMPROGRAMA NÚMVERSIÓ\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr "rpcinfo: el servei «%s» no és conegut\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
msgstr "rpcinfo: l’estació «%s» no és coneguda\n"
@@ -5145,14 +5347,6 @@ msgstr "svc_tcp.c: problemes en crear un connector TCP"
msgid "svc_tcp.c - cannot getsockname or listen"
msgstr "svc_tcp.c: ha fallat getsockname() o listen()"
-#: sunrpc/svc_tcp.c:179
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create: no resta memòria\n"
-
-#: sunrpc/svc_tcp.c:218
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp: makefd_xprt: no resta memòria\n"
-
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
msgstr "svcudp_create: problemes en crear un connector"
@@ -5161,39 +5355,35 @@ msgstr "svcudp_create: problemes en crear un connector"
msgid "svcudp_create - cannot getsockname"
msgstr "svcudp_create: ha fallat getsockname()"
-#: sunrpc/svc_udp.c:152
-msgid "svcudp_create: out of memory\n"
-msgstr "svcudp_create: no resta memòria\n"
-
-#: sunrpc/svc_udp.c:174
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
msgstr "svcudp_create: «xp_pad» és massa menut per a IP_PKTINFO\n"
-#: sunrpc/svc_udp.c:474
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
msgstr "enablecache: la memòria cau ja està habilitada"
-#: sunrpc/svc_udp.c:480
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
msgstr "enablecache: no s’ha pogut reservar espai per a la memòria cau"
-#: sunrpc/svc_udp.c:489
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
msgstr "enablecache: no s’ha pogut reservar espai per a les dades de la memòria cau"
-#: sunrpc/svc_udp.c:497
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
msgstr "enablecache: no s’ha pogut reservar la cua FIFO de la memòria cau"
-#: sunrpc/svc_udp.c:532
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
msgstr "cache_set: no s’ha trobat la víctima"
-#: sunrpc/svc_udp.c:543
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
msgstr "cache_set: no s’ha pogut reservar la víctima"
-#: sunrpc/svc_udp.c:550
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
msgstr "cache_set: no s’ha pogut reservar un nou «rpc_buffer»"
@@ -5205,34 +5395,6 @@ msgstr "svc_unix.c: problemes en crear un connector AF_UNIX"
msgid "svc_unix.c - cannot getsockname or listen"
msgstr "svc_unix.c: ha fallat getsockname() o listen()"
-#: sunrpc/svc_unix.c:176
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create: no resta memòria\n"
-
-#: sunrpc/svc_unix.c:215
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix: makefd_xprt: no resta memòria\n"
-
-#: sunrpc/xdr.c:566
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes: no resta memòria\n"
-
-#: sunrpc/xdr.c:718
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string: no resta memòria\n"
-
-#: sunrpc/xdr_array.c:106
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array: no resta memòria\n"
-
-#: sunrpc/xdr_rec.c:156
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create: no resta memòria\n"
-
-#: sunrpc/xdr_ref.c:86
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_reference: no resta memòria\n"
-
#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
msgid "Hangup"
msgstr "Penjat"
@@ -6312,74 +6474,83 @@ msgstr "«%s» és per a la màquina desconeguda %d\n"
msgid "makecontext: does not know how to handle more than 8 arguments\n"
msgstr "makecontext: no es poden tractar més de 8 arguments\n"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
+"Forma d’ús: lddlibc4 FITXER\n"
+"\n"
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
msgid "cannot open `%s'"
msgstr "no s’ha pogut obrir «%s»"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
msgid "cannot read header from `%s'"
msgstr "no s’ha pogut llegir la capçalera de «%s»"
-#: timezone/zdump.c:211
+#: timezone/zdump.c:210
msgid "lacks alphabetic at start"
msgstr "no comença per un caràcter alfabètic"
-#: timezone/zdump.c:213
+#: timezone/zdump.c:212
msgid "has fewer than 3 alphabetics"
msgstr "té menys de 3 caràcters alfabètics"
-#: timezone/zdump.c:215
+#: timezone/zdump.c:214
msgid "has more than 6 alphabetics"
msgstr "té més de 6 caràcters alfabètics"
-#: timezone/zdump.c:223
+#: timezone/zdump.c:222
msgid "differs from POSIX standard"
msgstr "difereix de l’estàndard POSIX"
# FIXME: language-dependent
# La cadena final és una de les anteriors. ivb
-#: timezone/zdump.c:229
+#: timezone/zdump.c:228
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
msgstr "%1$s: avís: l’abreviatura «%3$s» de la zona «%2$s» %4$s\n"
-#: timezone/zdump.c:280
+#: timezone/zdump.c:279
#, c-format
msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
msgstr "%s: la forma d’ús és %s [--version] [-v] [-c [ANY_INF,]ANY_SUP] NOM_DE_ZONA…\n"
-#: timezone/zdump.c:297
+#: timezone/zdump.c:296
#, c-format
msgid "%s: wild -c argument %s\n"
msgstr "%s: l’argument de l’opció «-c» no és vàlid: %s\n"
-#: timezone/zdump.c:388
+#: timezone/zdump.c:387
msgid "Error writing to standard output"
msgstr "error en escriure a l’eixida estàndard"
-#: timezone/zdump.c:411
+#: timezone/zdump.c:410
#, c-format
msgid "%s: use of -v on system with floating time_t other than float or double\n"
msgstr "%s: no es pot emprar «-v» ja que «time_t» en aquest sistema és un tipus flotant diferent de «float» i «double»\n"
-#: timezone/zic.c:392
+#: timezone/zic.c:388
#, c-format
msgid "%s: Memory exhausted: %s\n"
msgstr "%s: la memòria s’ha exhaurit: %s\n"
-#: timezone/zic.c:451
+#: timezone/zic.c:434
#, c-format
msgid "\"%s\", line %d: %s"
msgstr "«%s», línia %d: %s"
-#: timezone/zic.c:454
+#: timezone/zic.c:437
#, c-format
msgid " (rule from \"%s\", line %d)"
msgstr " (regla de «%s», línia %d)"
-#: timezone/zic.c:466
+#: timezone/zic.c:449
msgid "warning: "
msgstr "avís: "
@@ -6387,7 +6558,7 @@ msgstr "avís: "
# ivb Deixe algunes paraules per traduir perquè es refereixen a paraules
# ivb reservades dels fitxers amb què treballa zic.
# Sembla que la barra al final de la línia no pinta res. ivb
-#: timezone/zic.c:476
+#: timezone/zic.c:459
#, c-format
msgid ""
"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
@@ -6397,341 +6568,341 @@ msgstr ""
"\t[-d DIRECTORI] [-L FITXER_SEGONS_INTERCALARS] [-y yearistype]\n"
"\t[FITXER…]\n"
-#: timezone/zic.c:511
+#: timezone/zic.c:494
msgid "wild compilation-time specification of zic_t"
msgstr "l’especificació de «zic_t» en temps de compiŀlació no és vàlida"
-#: timezone/zic.c:528
+#: timezone/zic.c:511
#, c-format
msgid "%s: More than one -d option specified\n"
msgstr "%s: s’ha indicat l’opció «-d» més d’una volta\n"
-#: timezone/zic.c:538
+#: timezone/zic.c:521
#, c-format
msgid "%s: More than one -l option specified\n"
msgstr "%s: s’ha indicat l’opció «-l» més d’una volta\n"
-#: timezone/zic.c:548
+#: timezone/zic.c:531
#, c-format
msgid "%s: More than one -p option specified\n"
msgstr "%s: s’ha indicat l’opció «-p» més d’una volta\n"
-#: timezone/zic.c:558
+#: timezone/zic.c:541
#, c-format
msgid "%s: More than one -y option specified\n"
msgstr "%s: s’ha indicat l’opció «-y» més d’una volta\n"
-#: timezone/zic.c:568
+#: timezone/zic.c:551
#, c-format
msgid "%s: More than one -L option specified\n"
msgstr "%s: s’ha indicat l’opció «-L» més d’una volta\n"
-#: timezone/zic.c:617
+#: timezone/zic.c:600
msgid "link to link"
msgstr "enllaç a un altre enllaç"
-#: timezone/zic.c:682
+#: timezone/zic.c:665
msgid "hard link failed, symbolic link used"
msgstr "no s’ha pogut crear un enllaç fort, se n’ha emprat un de simbòlic"
-#: timezone/zic.c:690
+#: timezone/zic.c:673
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
msgstr "%s: no s’ha pogut crear un enllaç des de «%s» cap a «%s»: %s\n"
-#: timezone/zic.c:762 timezone/zic.c:764
+#: timezone/zic.c:745 timezone/zic.c:747
msgid "same rule name in multiple files"
msgstr "el mateix nom de regla és repetit a diversos fitxers"
-#: timezone/zic.c:805
+#: timezone/zic.c:788
msgid "unruly zone"
msgstr "la zona no té regles"
-#: timezone/zic.c:812
+#: timezone/zic.c:795
#, c-format
msgid "%s in ruleless zone"
msgstr "«%s» en una zona sense regles"
-#: timezone/zic.c:833
+#: timezone/zic.c:816
msgid "standard input"
msgstr "entrada estàndard"
-#: timezone/zic.c:838
+#: timezone/zic.c:821
#, c-format
msgid "%s: Can't open %s: %s\n"
msgstr "%s: no s’ha pogut obrir «%s»: %s\n"
-#: timezone/zic.c:849
+#: timezone/zic.c:832
msgid "line too long"
msgstr "la línia és massa llarga"
-#: timezone/zic.c:869
+#: timezone/zic.c:852
msgid "input line of unknown type"
msgstr "la línia introduïda pertany a un tipus desconegut"
-#: timezone/zic.c:885
+#: timezone/zic.c:868
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
msgstr "%s: línia «Leap» en fitxer no de segons intercalars «%s»\n"
-#: timezone/zic.c:892 timezone/zic.c:1329 timezone/zic.c:1351
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
msgstr "%s: pànic: el valor esquerre %d no és vàlid\n"
-#: timezone/zic.c:900
+#: timezone/zic.c:883
#, c-format
msgid "%s: Error reading %s\n"
msgstr "%s: error en llegir «%s»\n"
-#: timezone/zic.c:907
+#: timezone/zic.c:890
#, c-format
msgid "%s: Error closing %s: %s\n"
msgstr "%s: error en tancar «%s»: %s\n"
-#: timezone/zic.c:912
+#: timezone/zic.c:895
msgid "expected continuation line not found"
msgstr "cal una línia de continuació, però se’n troba cap"
-#: timezone/zic.c:956 timezone/zic.c:2489 timezone/zic.c:2508
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
msgid "time overflow"
msgstr "desbordament de l’hora"
-#: timezone/zic.c:960
+#: timezone/zic.c:943
msgid "24:00 not handled by pre-1998 versions of zic"
msgstr "les versions de «zic» anteriors a 1998 no admeten «24:00»"
-#: timezone/zic.c:963
+#: timezone/zic.c:946
msgid "values over 24 hours not handled by pre-2007 versions of zic"
msgstr "les versions de «zic» anteriors a 2007 no admeten valors majors que 24 hores"
-#: timezone/zic.c:976
+#: timezone/zic.c:959
msgid "wrong number of fields on Rule line"
msgstr "el nombre de camps de la línia «Rule» és incorrecte"
-#: timezone/zic.c:980
+#: timezone/zic.c:963
msgid "nameless rule"
msgstr "la regla no té nom"
-#: timezone/zic.c:985
+#: timezone/zic.c:968
msgid "invalid saved time"
msgstr "el temps estalviat no és vàlid"
-#: timezone/zic.c:1006
+#: timezone/zic.c:989
msgid "wrong number of fields on Zone line"
msgstr "el nombre de camps de la línia «Zone» no és correcte"
-#: timezone/zic.c:1012
+#: timezone/zic.c:995
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
msgstr "la línia «Zone %s» i l’opció «-l» són mútuament excloents"
-#: timezone/zic.c:1020
+#: timezone/zic.c:1003
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
msgstr "la línia «Zone %s» i l’opció «-p» són mútuament excloents"
-#: timezone/zic.c:1032
+#: timezone/zic.c:1015
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
msgstr "el nom de zona «%s» (fitxer «%s», línia %d) és duplicat"
-#: timezone/zic.c:1048
+#: timezone/zic.c:1031
msgid "wrong number of fields on Zone continuation line"
msgstr "el nombre de camps de la línia de continuació de «Zone» no és correcte"
-#: timezone/zic.c:1088
+#: timezone/zic.c:1071
msgid "invalid UTC offset"
msgstr "el desplaçament d’UTC no és vàlid"
-#: timezone/zic.c:1091
+#: timezone/zic.c:1074
msgid "invalid abbreviation format"
msgstr "el format de l’abreviatura no és vàlid"
-#: timezone/zic.c:1120
+#: timezone/zic.c:1103
msgid "Zone continuation line end time is not after end time of previous line"
msgstr "el temps final de la línia de continuació de «Zone» no ve darrere del temps final de la línia anterior"
-#: timezone/zic.c:1148
+#: timezone/zic.c:1131
msgid "wrong number of fields on Leap line"
msgstr "el nombre de camps de la línia «Leap» no és correcte"
-#: timezone/zic.c:1157
+#: timezone/zic.c:1140
msgid "invalid leaping year"
msgstr "l’any bixest no és vàlid"
-#: timezone/zic.c:1177 timezone/zic.c:1283
+#: timezone/zic.c:1160 timezone/zic.c:1266
msgid "invalid month name"
msgstr "el nom del mes no és vàlid"
-#: timezone/zic.c:1190 timezone/zic.c:1396 timezone/zic.c:1410
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
msgid "invalid day of month"
msgstr "el dia del mes no és vàlid"
-#: timezone/zic.c:1195
+#: timezone/zic.c:1178
msgid "time before zero"
msgstr "l’hora és anterior a zero"
-#: timezone/zic.c:1199
+#: timezone/zic.c:1182
msgid "time too small"
msgstr "l’hora és massa menuda"
-#: timezone/zic.c:1203
+#: timezone/zic.c:1186
msgid "time too large"
msgstr "l’hora és massa gran"
-#: timezone/zic.c:1207 timezone/zic.c:1312
+#: timezone/zic.c:1190 timezone/zic.c:1295
msgid "invalid time of day"
msgstr "l’hora del dia no és vàlida"
-#: timezone/zic.c:1226
+#: timezone/zic.c:1209
msgid "illegal CORRECTION field on Leap line"
msgstr "el camp de correcció de la línia de «Leap» no és vàlid"
-#: timezone/zic.c:1231
+#: timezone/zic.c:1214
msgid "illegal Rolling/Stationary field on Leap line"
msgstr "el camp «Rolling/Stationary» de la línia «Leap» no és vàlid"
-#: timezone/zic.c:1247
+#: timezone/zic.c:1230
msgid "wrong number of fields on Link line"
msgstr "el nombre de camps de la línia «Link» no és correcte"
# El nom del camp no és una paraula clau del fitxer. ivb
-#: timezone/zic.c:1251
+#: timezone/zic.c:1234
msgid "blank FROM field on Link line"
msgstr "el camp d’inici de la línia «Link» és buit"
# El nom del camp no és una paraula clau del fitxer. ivb
-#: timezone/zic.c:1255
+#: timezone/zic.c:1238
msgid "blank TO field on Link line"
msgstr "el camp d’acabament de la línia «Link» és buit"
-#: timezone/zic.c:1333
+#: timezone/zic.c:1316
msgid "invalid starting year"
msgstr "l’any de començament no és vàlid"
-#: timezone/zic.c:1355
+#: timezone/zic.c:1338
msgid "invalid ending year"
msgstr "l’any d’acabament no és vàlid"
-#: timezone/zic.c:1359
+#: timezone/zic.c:1342
msgid "starting year greater than ending year"
msgstr "l’any de començament és major que el d’acabament"
-#: timezone/zic.c:1366
+#: timezone/zic.c:1349
msgid "typed single year"
msgstr "s’ha especificat un sol any"
-#: timezone/zic.c:1401
+#: timezone/zic.c:1384
msgid "invalid weekday name"
msgstr "el nom del dia de la setmana no és vàlid"
-#: timezone/zic.c:1579
+#: timezone/zic.c:1562
#, c-format
msgid "%s: Can't remove %s: %s\n"
msgstr "%s: no s’ha pogut eliminar «%s»: %s\n"
-#: timezone/zic.c:1589
+#: timezone/zic.c:1572
#, c-format
msgid "%s: Can't create %s: %s\n"
msgstr "%s: no s’ha pogut crear «%s»: %s\n"
-#: timezone/zic.c:1739
+#: timezone/zic.c:1722
#, c-format
msgid "%s: Error writing %s\n"
msgstr "%s: error en escriure «%s»\n"
-#: timezone/zic.c:2031
+#: timezone/zic.c:2015
msgid "no POSIX environment variable for zone"
msgstr "no s’ha establert una variable d’entorn POSIX per a la zona"
-#: timezone/zic.c:2185
+#: timezone/zic.c:2172
msgid "can't determine time zone abbreviation to use just after until time"
msgstr "no s’ha pogut determinar l’abreviatura de zona horària a emprar just després de la data límit (until)"
-#: timezone/zic.c:2231
+#: timezone/zic.c:2218
msgid "too many transitions?!"
msgstr "hi ha massa transicions?!"
-#: timezone/zic.c:2250
+#: timezone/zic.c:2237
msgid "internal error - addtype called with bad isdst"
msgstr "error intern: s’ha cridat addtype() amb un valor erroni per a «isdst»"
-#: timezone/zic.c:2254
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad ttisstd"
msgstr "error intern: s’ha cridat addtype() amb un valor erroni per a «ttisstd»"
-#: timezone/zic.c:2258
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisgmt"
msgstr "error intern: s’ha cridat addtype() amb un valor erroni per a «ttisgmt»"
-#: timezone/zic.c:2277
+#: timezone/zic.c:2264
msgid "too many local time types"
msgstr "hi ha massa tipus d’hora local"
-#: timezone/zic.c:2281
+#: timezone/zic.c:2268
msgid "UTC offset out of range"
msgstr "el desplaçament respecte UTC és fora de rang"
-#: timezone/zic.c:2309
+#: timezone/zic.c:2296
msgid "too many leap seconds"
msgstr "hi ha massa segons intercalars"
-#: timezone/zic.c:2315
+#: timezone/zic.c:2302
msgid "repeated leap second moment"
msgstr "el moment de segon intercalar és repetit"
-#: timezone/zic.c:2367
+#: timezone/zic.c:2354
msgid "Wild result from command execution"
msgstr "l’execució de l’ordre ha donat un resultat estrany"
-#: timezone/zic.c:2368
+#: timezone/zic.c:2355
#, c-format
msgid "%s: command was '%s', result was %d\n"
msgstr "%s: l’ordre ha estat «%s», el resultat ha estat %d\n"
# ivb (2001/10/30)
# ivb Es refereix a les cometes dobles «"».
-#: timezone/zic.c:2466
+#: timezone/zic.c:2453
msgid "Odd number of quotation marks"
msgstr "el nombre de cometes és senar"
-#: timezone/zic.c:2555
+#: timezone/zic.c:2542
msgid "use of 2/29 in non leap-year"
msgstr "s’ha emprat el dia 29 de febrer en un any no bixest"
-#: timezone/zic.c:2590
+#: timezone/zic.c:2577
msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
msgstr "la regla va més enllà de l’inici o fi del mes; no funcionarà en les versions de «zic» anteriors a 2004"
-#: timezone/zic.c:2622
+#: timezone/zic.c:2609
msgid "time zone abbreviation lacks alphabetic at start"
msgstr "l’abreviatura de la zona horària no comença per un caràcter alfabètic"
-#: timezone/zic.c:2624
+#: timezone/zic.c:2611
msgid "time zone abbreviation has more than 3 alphabetics"
msgstr "l’abreviatura de la zona horària té més de 3 caràcters alfabètics"
-#: timezone/zic.c:2626
+#: timezone/zic.c:2613
msgid "time zone abbreviation has too many alphabetics"
msgstr "l’abreviatura de la zona horària té massa caràcters alfabètics"
-#: timezone/zic.c:2636
+#: timezone/zic.c:2623
msgid "time zone abbreviation differs from POSIX standard"
msgstr "l’abreviatura de la zona horària difereix de l’estàndard POSIX"
-#: timezone/zic.c:2648
+#: timezone/zic.c:2635
msgid "too many, or too long, time zone abbreviations"
msgstr "hi ha massa abreviatures de zona horària (o són massa llargues)"
-#: timezone/zic.c:2689
+#: timezone/zic.c:2676
#, c-format
msgid "%s: Can't create directory %s: %s\n"
msgstr "%s: no s’ha pogut crear el directori «%s»: %s\n"
# ivb (2001/10/28)
# ivb Resulta d'assignar un «int» a un «long».
-#: timezone/zic.c:2711
+#: timezone/zic.c:2698
#, c-format
msgid "%s: %d did not sign extend correctly\n"
msgstr "%s: el signe de %d no s’ha estès correctament\n"
diff --git a/po/cs.po b/po/cs.po
index d1d3d72aa9..25742ce5e7 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -1,11 +1,12 @@
# Czech translations for GNU libc.
# Copyright (C) 1997 Free Software Foundation, Inc.
+# This file is distributed under the same license as the glibc package.
# Vladimir Michl <Vladimir.Michl@seznam.cz>, 1997.
+# Petr Pisar <petr.pisar@atlas.cz>, 2007, 2009.
#
# Thanks to:
# Petr Kolar <Petr.Kolar@vslib.cz>
# Stanislav Brabec <utx@k332.feld.cvut.cz>, 1998.
-# Petr Pisar <petr.pisar@atlas.cz>, 2007.
#
# Describe of some function:
# error(status, errnum, "message") => "progname: message: error_message"
@@ -13,7 +14,7 @@
#
# Notes:
# host, name, hostname - jméno, název, oznaÄení?
-# Untranslated: netid, nettype
+# Untranslated: netid (RFC 1833: Network Identifier), nettype
# Translations of "socket" => "soket",
# byte => bajt, "out of memory" => "nedostatek paměti"
# collation something => ???
@@ -21,9 +22,9 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.7\n"
-"POT-Creation-Date: 2007-10-15 21:18-0700\n"
-"PO-Revision-Date: 2007-11-13 21:35+0100\n"
+"Project-Id-Version: libc 2.10.1\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-10-08 21:33+0200\n"
"Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
@@ -40,11 +41,10 @@ msgstr "%.*s: Parametr ARGP_HELP_FMT vyžaduje hodnotu"
msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
msgstr "%.*s: Neznámý parametr ARGP_HELP_FMT"
-# Garbage -> nesmysly
#: argp/argp-help.c:251
#, c-format
msgid "Garbage in ARGP_HELP_FMT: %s"
-msgstr "Smetí v ARGP_HELP_FMT: %s"
+msgstr "Nesmysly v ARGP_HELP_FMT: %s"
#: argp/argp-help.c:1215
msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
@@ -118,7 +118,7 @@ msgstr "%s%s%s:%u: %s%sNeoÄekávaná chyba: %s.\n"
msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
msgstr "%s%s%s:%u: %s%sPředpoklad „%s“ nesplněn.\n"
-#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
msgid "NAME"
msgstr "NÃZEV"
@@ -152,9 +152,15 @@ msgstr ""
"-o VÃSTUPNÃ_SOUBOR [VSTUPNÃ_SOUBOR]…\n"
"[ VÃSTUPNÃ_SOUBOR [VSTUPNÃ_SOUBOR]…]"
-#: catgets/gencat.c:232 debug/pcprofiledump.c:204 iconv/iconv_prog.c:411
-#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
-#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
@@ -162,12 +168,13 @@ msgstr ""
"Rady, jak nahlásit chybu, naleznete na:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:296
-#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:426
-#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
-#: posix/getconf.c:1012
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -179,10 +186,12 @@ msgstr ""
"naleznete ve zdrojových textech. Toto programové vybavení je zcela BEZ ZÃRUKY,\n"
"a to i bez záruky PRODEJNOSTI nebo VHODNOSTI PRO NĚJAKà KONKRÉTNà ÚČEL.\n"
-#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:301 elf/sprof.c:361
-#: iconv/iconv_prog.c:431 iconv/iconvconfig.c:400 locale/programs/locale.c:280
-#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
-#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
#, c-format
msgid "Written by %s.\n"
msgstr "Autor: %s.\n"
@@ -191,7 +200,7 @@ msgstr "Autor: %s.\n"
msgid "*standard input*"
msgstr "*standardní vstup*"
-#: catgets/gencat.c:288 iconv/iconv_charmap.c:158 iconv/iconv_prog.c:298
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
#: nss/makedb.c:170
#, c-format
msgid "cannot open input file `%s'"
@@ -283,17 +292,17 @@ msgstr "Vypíše informace získané při profilování přes PC."
msgid "[FILE]"
msgstr "[SOUBOR]"
-#: debug/pcprofiledump.c:104
+#: debug/pcprofiledump.c:108
#, c-format
msgid "cannot open input file"
msgstr "vstupní soubor nelze otevřít"
-#: debug/pcprofiledump.c:111
+#: debug/pcprofiledump.c:115
#, c-format
msgid "cannot read header"
msgstr "hlaviÄku nelze pÅ™eÄíst"
-#: debug/pcprofiledump.c:175
+#: debug/pcprofiledump.c:179
#, c-format
msgid "invalid pointer size"
msgstr "neplatná velikost ukazatele"
@@ -323,38 +332,34 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
"Sleduje běh programu a vypisuje právě prováděné funkce.\n"
"\n"
" --data=SOUBOR Nespustí program, jen vypíše data ze SOUBORU.\n"
"\n"
" -?,--help Vypíše tuto nápovÄ›du a skonÄí\n"
-" --usage Vrátí krátký návod k použití\n"
+" --usage Vrátí krátký návod na použití\n"
" -V,--version Vypíše informace o verzi a skonÄí\n"
"\n"
"Povinné argumenty dlouhých pÅ™epínaÄů jsou také povinné u odpovídajících\n"
"krátkých pÅ™epínaÄů.\n"
"\n"
-"Návod, jak nahlásit chybu, naleznete na:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
# Říká, že žádný pÅ™epínaÄ takového jména nebyl nalezen.
-#: debug/xtrace.sh:125
+#: debug/xtrace.sh:127
msgid "xtrace: unrecognized option \\`$1'\\n"
msgstr "xtrace: nerozpoznaný pÅ™epínaÄ â€ž$1“\\n"
-#: debug/xtrace.sh:138
+#: debug/xtrace.sh:140
msgid "No program name given\\n"
msgstr "Nezadán žádný název programu\\n"
-#: debug/xtrace.sh:146
+#: debug/xtrace.sh:148
#, sh-format
msgid "executable \\`$program' not found\\n"
msgstr "spustitelný program „$program“ nenalezen\\n"
-#: debug/xtrace.sh:150
+#: debug/xtrace.sh:152
#, sh-format
msgid "\\`$program' is no executable\\n"
msgstr "„$program“ není spustitelný\\n"
@@ -375,7 +380,7 @@ msgstr "neplatný jmenný prostor"
msgid "invalid mode"
msgstr "neplatný režim"
-#: dlfcn/dlopen.c:64
+#: dlfcn/dlopen.c:65
msgid "invalid mode parameter"
msgstr "neplatný parametr režimu"
@@ -392,7 +397,7 @@ msgstr "Neznámý OS"
msgid ", OS ABI: %s %d.%d.%d"
msgstr ", ABI OS: %s %d.%d.%d"
-#: elf/cache.c:134 elf/ldconfig.c:1270
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
msgid "Can't open cache file %s\n"
msgstr "Soubor s keší %s nelze otevřít\n"
@@ -436,7 +441,7 @@ msgstr "Přejmenování z %s na %s selhalo"
msgid "cannot create scope list"
msgstr "seznam rozsahů nelze vytvořit"
-#: elf/dl-close.c:724
+#: elf/dl-close.c:725
msgid "shared object not open"
msgstr "sdílený objekt není otevřen"
@@ -509,11 +514,11 @@ msgstr "nelze získat informace o sdíleném objektu"
msgid "cannot open zero fill device"
msgstr "nulami vyplněné zařízení (zero) nelze otevřít"
-#: elf/dl-load.c:979 elf/dl-load.c:2224
+#: elf/dl-load.c:979 elf/dl-load.c:2215
msgid "cannot create shared object descriptor"
msgstr "deskriptor sdíleného objektu nelze vytvořit"
-#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
msgid "cannot read file data"
msgstr "data ze souboru nelze naÄíst"
@@ -545,10 +550,9 @@ msgstr "namapování segmentu ze sdíleného objektu se nepodařilo"
msgid "cannot dynamically load executable"
msgstr "spustitelný kód nelze dynamicky nahrát"
-# s/z
#: elf/dl-load.c:1298
msgid "cannot change memory protections"
-msgstr "ochranu paměti nelze změnit"
+msgstr "ochrany paměti nelze změnit"
#: elf/dl-load.c:1317
msgid "cannot map zero-fill pages"
@@ -578,63 +582,59 @@ msgstr "nemohu povolit spustitelnost zásobníku, jak vyžaduje sdílený objekt
msgid "cannot close file descriptor"
msgstr "deskriptor souboru nelze zavřít"
-#: elf/dl-load.c:1478
-msgid "cannot create searchlist"
-msgstr "vyhledávací seznam nelze vytvořit"
-
-#: elf/dl-load.c:1656
+#: elf/dl-load.c:1647
msgid "file too short"
msgstr "soubor je příliš krátký"
-#: elf/dl-load.c:1685
+#: elf/dl-load.c:1676
msgid "invalid ELF header"
msgstr "neplatný hlaviÄka ELF"
-#: elf/dl-load.c:1697
+#: elf/dl-load.c:1688
msgid "ELF file data encoding not big-endian"
msgstr "Kódování dat souboru ELF nemá velkou endianitu"
-#: elf/dl-load.c:1699
+#: elf/dl-load.c:1690
msgid "ELF file data encoding not little-endian"
msgstr "Kódování dat souboru ELF nemá malou endianitu"
-#: elf/dl-load.c:1703
+#: elf/dl-load.c:1694
msgid "ELF file version ident does not match current one"
msgstr "ident verze souboru ELF se neshoduje se souÄasnou"
-#: elf/dl-load.c:1707
+#: elf/dl-load.c:1698
msgid "ELF file OS ABI invalid"
msgstr "Chybné ABI OS souboru ELF"
-#: elf/dl-load.c:1709
+#: elf/dl-load.c:1700
msgid "ELF file ABI version invalid"
msgstr "Chybná verze ABI souboru ELF"
-#: elf/dl-load.c:1712
+#: elf/dl-load.c:1703
msgid "internal error"
msgstr "vnitřní chyba"
-#: elf/dl-load.c:1719
+#: elf/dl-load.c:1710
msgid "ELF file version does not match current one"
msgstr "Verze souboru ELD se neshoduje se souÄasnou"
-#: elf/dl-load.c:1727
+#: elf/dl-load.c:1718
msgid "only ET_DYN and ET_EXEC can be loaded"
msgstr "jen ET_DYN a ET_EXEC mohou být nahráni"
-#: elf/dl-load.c:1733
+#: elf/dl-load.c:1724
msgid "ELF file's phentsize not the expected size"
msgstr "phentsize souboru ELF má neoÄekávanou velikost"
-#: elf/dl-load.c:2240
+#: elf/dl-load.c:2231
msgid "wrong ELF class: ELFCLASS64"
msgstr "chybná třída ELF: ELFCLASS64"
-#: elf/dl-load.c:2241
+#: elf/dl-load.c:2232
msgid "wrong ELF class: ELFCLASS32"
msgstr "chybná třída ELF: ELFCLASS32"
-#: elf/dl-load.c:2244
+#: elf/dl-load.c:2235
msgid "cannot open shared object file"
msgstr "sdílený objektový soubor nelze otevřít"
@@ -666,11 +666,11 @@ msgstr "pro dlmopen() již není dostupný žádný další jmenný prostor"
msgid "invalid target namespace in dlmopen()"
msgstr "neplatný cílový jmenný prostor v dlmopen()"
-#: elf/dl-reloc.c:54
+#: elf/dl-reloc.c:121
msgid "cannot allocate memory in static TLS block"
msgstr "nelze alokovat paměť uvnitř statického bloku TLS"
-#: elf/dl-reloc.c:196
+#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
msgstr "segment nelze kvůli pÅ™emístÄ›ní uÄinit zapisovatelný"
@@ -696,11 +696,11 @@ msgstr "po pÅ™emístÄ›ní nelze nelze uplatnit dodateÄnou ochranu pamÄ›ti"
msgid "RTLD_NEXT used in code not dynamically loaded"
msgstr "RTLD_NEXT je použito pro kód, který není dynamicky zaveden"
-#: elf/dl-sysdep.c:469 elf/dl-sysdep.c:481
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
msgid "cannot create capability list"
msgstr "nelze vytvořit seznam kvalifikací"
-#: elf/dl-tls.c:825
+#: elf/dl-tls.c:864
msgid "cannot create TLS data structures"
msgstr "datové struktury TLS nelze vytvořit"
@@ -708,220 +708,220 @@ msgstr "datové struktury TLS nelze vytvořit"
msgid "cannot allocate version reference table"
msgstr "tabulku odkazů na verze nelze alokovat"
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:141
msgid "Print cache"
msgstr "Vypsat keš"
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:142
msgid "Generate verbose messages"
msgstr "Vypisuje podrobné zprávy"
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:143
msgid "Don't build cache"
msgstr "Nevybuduje keš"
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:144
msgid "Don't generate links"
msgstr "Nevygeneruje odkazy"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "Change to and use ROOT as root directory"
msgstr "Přepne se do a použije KOŘEN jako kořenový adresář"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "ROOT"
msgstr "KOŘEN"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "CACHE"
msgstr "KEÅ "
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "Use CACHE as cache file"
msgstr "Použije KEŠ jako soubor s keší"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "CONF"
msgstr "KONFIG"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "Use CONF as configuration file"
msgstr "Použije KONFIG jako konfiguraÄní soubor"
-#: elf/ldconfig.c:145
+#: elf/ldconfig.c:148
msgid "Only process directories specified on the command line. Don't build cache."
msgstr "Zpracuje jen adresáře uvedené na příkazovém řádku. Nevybuduje keš."
-#: elf/ldconfig.c:146
+#: elf/ldconfig.c:149
msgid "Manually link individual libraries."
msgstr "RuÄnÄ› odkazuje jednotlivé knihovny."
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "FORMAT"
msgstr "FORMÃT"
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "Format to use: new, old or compat (default)"
msgstr "Který formát použije: „new“ (nový), „old“ (starý) nebo „compat“ (kompatibilní)"
-#: elf/ldconfig.c:148
+#: elf/ldconfig.c:151
msgid "Ignore auxiliary cache file"
msgstr "Ignoruje pomocné soubory s keší"
-#: elf/ldconfig.c:156
+#: elf/ldconfig.c:159
msgid "Configure Dynamic Linker Run Time Bindings."
msgstr "Nastaví vazby dynamického linkeru pro dobu běhu"
-#: elf/ldconfig.c:319
+#: elf/ldconfig.c:339
#, c-format
msgid "Path `%s' given more than once"
msgstr "Cesta „%s“ zadána více krát"
-#: elf/ldconfig.c:359
+#: elf/ldconfig.c:379
#, c-format
msgid "%s is not a known library type"
msgstr "%s není knihovna známého typu"
-#: elf/ldconfig.c:384
+#: elf/ldconfig.c:404
#, c-format
msgid "Can't stat %s"
msgstr "Nelze získat informace o %s"
-#: elf/ldconfig.c:458
+#: elf/ldconfig.c:478
#, c-format
msgid "Can't stat %s\n"
msgstr "Nelze získat informace o %s\n"
-#: elf/ldconfig.c:468
+#: elf/ldconfig.c:488
#, c-format
msgid "%s is not a symbolic link\n"
msgstr "%s není symbolický odkaz\n"
-#: elf/ldconfig.c:487
+#: elf/ldconfig.c:507
#, c-format
msgid "Can't unlink %s"
msgstr "Nelze smazat odkaz na %s"
-#: elf/ldconfig.c:493
+#: elf/ldconfig.c:513
#, c-format
msgid "Can't link %s to %s"
msgstr "Odkaz na %2$s z %1$s nelze vytvořit"
-#: elf/ldconfig.c:499
+#: elf/ldconfig.c:519
msgid " (changed)\n"
msgstr " (změněno)\n"
-#: elf/ldconfig.c:501
+#: elf/ldconfig.c:521
msgid " (SKIPPED)\n"
msgstr " (PŘESKOČENO)\n"
-#: elf/ldconfig.c:556
+#: elf/ldconfig.c:576
#, c-format
msgid "Can't find %s"
msgstr "%s nezle nalézt"
-#: elf/ldconfig.c:572 elf/ldconfig.c:745 elf/ldconfig.c:793 elf/ldconfig.c:827
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
msgid "Cannot lstat %s"
msgstr "Informace o symbolickém odkazu %s nelze získat"
-#: elf/ldconfig.c:579
+#: elf/ldconfig.c:599
#, c-format
msgid "Ignored file %s since it is not a regular file."
msgstr "Soubor %s ignorován, neb se nejedná o obyÄejný soubor."
-#: elf/ldconfig.c:588
+#: elf/ldconfig.c:608
#, c-format
msgid "No link created since soname could not be found for %s"
msgstr "Protože nebyl nalezen název sdílené knihovny (soname) %s, žádný odkaz nebyl vytvořeni."
-#: elf/ldconfig.c:671
+#: elf/ldconfig.c:691
#, c-format
msgid "Can't open directory %s"
msgstr "Adresář %s nelze otevřít"
-#: elf/ldconfig.c:759
+#: elf/ldconfig.c:779
#, c-format
msgid "Cannot stat %s"
msgstr "Informace o %s nelze získat"
-#: elf/ldconfig.c:814 elf/readlib.c:91
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
msgid "Input file %s not found.\n"
msgstr "Vstupní soubor %s nebyl nalezen.\n"
-#: elf/ldconfig.c:888
+#: elf/ldconfig.c:908
#, c-format
msgid "libc5 library %s in wrong directory"
msgstr "libc5 knihovna %s je ve špatném adresáři"
-#: elf/ldconfig.c:891
+#: elf/ldconfig.c:911
#, c-format
msgid "libc6 library %s in wrong directory"
msgstr "libc6 knihovna %s je ve špatném adresáři"
-#: elf/ldconfig.c:894
+#: elf/ldconfig.c:914
#, c-format
msgid "libc4 library %s in wrong directory"
msgstr "libc4 knihovna %s je ve špatném adresáři"
-#: elf/ldconfig.c:922
+#: elf/ldconfig.c:942
#, c-format
msgid "libraries %s and %s in directory %s have same soname but different type."
msgstr "knihovny %s a %s z adresáře %s mají stejný název (soname), ale rozdílný typ."
-#: elf/ldconfig.c:1031
+#: elf/ldconfig.c:1051
#, c-format
msgid "Can't open configuration file %s"
msgstr "KonfiguraÄní soubor %s nelze otevřít"
-#: elf/ldconfig.c:1095
+#: elf/ldconfig.c:1115
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
msgstr "%s:%u: chybná syntaxe na řádku hwcap"
-#: elf/ldconfig.c:1101
+#: elf/ldconfig.c:1121
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
msgstr "%s:%u: index hwcap %lu přesáhl maximum %u"
-#: elf/ldconfig.c:1108 elf/ldconfig.c:1116
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
msgstr "%s:%u: index hwcap %lu již definován jako %s"
-#: elf/ldconfig.c:1119
+#: elf/ldconfig.c:1139
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
msgstr "%s:%u: duplicitní hwcap %lu %s"
-#: elf/ldconfig.c:1141
+#: elf/ldconfig.c:1161
#, c-format
msgid "need absolute file name for configuration file when using -r"
msgstr "PÅ™i použití -r je tÅ™eba zadat absolutní jméno konfiguraÄního souboru"
-#: elf/ldconfig.c:1148 locale/programs/xmalloc.c:70 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
msgid "memory exhausted"
msgstr "paměť vyÄerpána"
-#: elf/ldconfig.c:1178
+#: elf/ldconfig.c:1198
#, c-format
msgid "%s:%u: cannot read directory %s"
msgstr "%s:%u: adresář %s nelze naÄíst"
-#: elf/ldconfig.c:1223
+#: elf/ldconfig.c:1242
#, c-format
msgid "relative path `%s' used to build cache"
msgstr "pro vybudování keše byla použita relativní cesta „%s“"
-#: elf/ldconfig.c:1249
+#: elf/ldconfig.c:1268
#, c-format
msgid "Can't chdir to /"
msgstr "Nelze se přepnout do adresáře /"
-#: elf/ldconfig.c:1291
+#: elf/ldconfig.c:1310
#, c-format
msgid "Can't open cache file directory %s\n"
msgstr "Adresář %s se soubory keší nelze otevřít\n"
@@ -939,8 +939,6 @@ msgid ""
" -r, --function-relocs process data and function relocations\n"
" -u, --unused print unused direct dependencies\n"
" -v, --verbose print all information\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Použití: ldd [PŘEPÃNAÄŒ]… SOUBOR…\n"
" --help vypíše tuto nápovÄ›du a skonÄí\n"
@@ -949,51 +947,48 @@ msgstr ""
" -r, --function-relocs provede přemístění dat a funkcí\n"
" -u, --unused vypíše nepoužité přímé závislosti\n"
" -v, --verbose vypíše všechny informace\n"
-"Návod, jak nahlásit chybu, naleznete na:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: elf/ldd.bash.in:80
+#: elf/ldd.bash.in:82
msgid "ldd: option \\`$1' is ambiguous"
msgstr "ldd: pÅ™epínaÄ â€ž$1“ není jednoznaÄný"
# Říká, že žádný pÅ™epínaÄ takového jména nebyl nalezen.
-#: elf/ldd.bash.in:87
+#: elf/ldd.bash.in:89
msgid "unrecognized option"
msgstr "nerozpoznaný pÅ™epínaÄ"
-#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
msgid "Try \\`ldd --help' for more information."
msgstr "Více informací získáte příkazem „ldd --help“."
-#: elf/ldd.bash.in:125
+#: elf/ldd.bash.in:127
msgid "missing file arguments"
msgstr "postrádám souborové argumenty"
-# Adresář nebo soubor neexistuje
#. TRANS No such file or directory. This is a ``file doesn't exist'' error
#. TRANS for ordinary files that are referenced in contexts where they are
#. TRANS expected to already exist.
-#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
-msgstr "není souborem ani adresářem"
+msgstr "Adresář nebo soubor neexistuje"
-#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
msgid "not regular file"
msgstr "není obyÄejným souborem"
-#: elf/ldd.bash.in:154
+#: elf/ldd.bash.in:156
msgid "warning: you do not have execution permission for"
-msgstr "varování: nemáte práva ke spuštení"
+msgstr "varování: nemáte práva ke spuštění"
-#: elf/ldd.bash.in:183
+#: elf/ldd.bash.in:185
msgid "\tnot a dynamic executable"
msgstr "\tnení dynamickým spustitelným kódem"
-#: elf/ldd.bash.in:191
+#: elf/ldd.bash.in:193
msgid "exited with unknown exit code"
msgstr "skonÄil s neznám výstupním kódem"
-#: elf/ldd.bash.in:196
+#: elf/ldd.bash.in:198
msgid "error: you do not have read permission for"
msgstr "chyba: nemáte oprávnÄ›ní Äíst"
@@ -1052,6 +1047,45 @@ msgstr "Soubor %s nelze namapovat.\n"
msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
msgstr "%s není soubor typu ELF – na svém zaÄátku má chybné magické bajty.\n"
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+"Použití: sln zdroj cíl|soubor\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s: chyba při otvírání souboru: %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "Žádný cíl na řádku %d neexistuje\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s: cíl nesmí být adresář\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr "%s: starý cíl se nepodařilo odstranit\n"
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s: neplatný cíl: %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "Neplatný odkaz z „%s“ na „%s“: %s\n"
+
#: elf/sprof.c:77
msgid "Output selection:"
msgstr "Výběr výstupu:"
@@ -1069,131 +1103,132 @@ msgid "generate call graph"
msgstr "vytvoří graf volání"
#: elf/sprof.c:89
-msgid ""
-"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"NaÄte a zobrazí profilovací data sdíleného objektu.\vNávod, jak nahlásit chybu, naleznete na:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Read and display shared object profiling data."
+msgstr "Čte a vypisuje profilovací data sdíleného objektu."
#: elf/sprof.c:94
msgid "SHOBJ [PROFDATA]"
msgstr "SDÃLENÃ_OBJEKT [PROF_DATA]"
-#: elf/sprof.c:400
+#: elf/sprof.c:420
#, c-format
msgid "failed to load shared object `%s'"
msgstr "sdílený objekt „%s“ se nepodařilo zavést"
-#: elf/sprof.c:409
+#: elf/sprof.c:429
#, c-format
msgid "cannot create internal descriptors"
msgstr "interní deskriptory nelze vytvořit"
-#: elf/sprof.c:528
+#: elf/sprof.c:548
#, c-format
msgid "Reopening shared object `%s' failed"
msgstr "Znovuotevření sdíleného objektu „%s“ nebylo úspěšné"
-#: elf/sprof.c:535 elf/sprof.c:629
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
msgid "reading of section headers failed"
-msgstr "chyba pÅ™i Ättení hlaviÄek sekcí"
+msgstr "Ätení hlaviÄek sekcí selhalo"
-#: elf/sprof.c:543 elf/sprof.c:637
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
msgid "reading of section header string table failed"
msgstr "chyba pÅ™i naÄítání tabulky Å™etÄ›zců z hlaviÄky sekce"
-#: elf/sprof.c:569
+#: elf/sprof.c:589
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
msgstr "*** Nelze pÅ™eÄíst název souboru s ladícími informaci: %m\n"
-#: elf/sprof.c:589
+#: elf/sprof.c:609
#, c-format
msgid "cannot determine file name"
msgstr "název souboru nelze urÄit"
-#: elf/sprof.c:622
+#: elf/sprof.c:642
#, c-format
msgid "reading of ELF header failed"
msgstr "chyba pÅ™i Ätení hlaviÄky ELF"
-#: elf/sprof.c:658
+#: elf/sprof.c:678
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
msgstr ""
"*** Ze souboru „%s“ byly odstraněny ladící informace: podrobná analýza\n"
"není možná\n"
-#: elf/sprof.c:688
+#: elf/sprof.c:708
#, c-format
msgid "failed to load symbol data"
msgstr "data symbolů se nepodaÅ™ila naÄíst"
-#: elf/sprof.c:755
+#: elf/sprof.c:775
#, c-format
msgid "cannot load profiling data"
msgstr "profilovací data nelze naÄíst"
-#: elf/sprof.c:764
+#: elf/sprof.c:784
#, c-format
msgid "while stat'ing profiling data file"
msgstr "během funkce stat() na soubor profilovacích informací"
-#: elf/sprof.c:772
+#: elf/sprof.c:792
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
msgstr "profilovací data „%s“ nesouhlasí se sdíleným objektem „%s“"
-#: elf/sprof.c:783
+#: elf/sprof.c:803
#, c-format
msgid "failed to mmap the profiling data file"
msgstr "soubor profilovacích dat se nepodařilo namapovat mmapem"
-#: elf/sprof.c:791
+#: elf/sprof.c:811
#, c-format
msgid "error while closing the profiling data file"
msgstr "chyba během uzavírání souboru profilovacích dat"
-#: elf/sprof.c:800 elf/sprof.c:870
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
msgid "cannot create internal descriptor"
msgstr "interní deskriptor nelze vytvořit"
-#: elf/sprof.c:846
+#: elf/sprof.c:866
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
msgstr "„%s“ nejsou správná profilovací data pro „%s“"
-#: elf/sprof.c:1027 elf/sprof.c:1085
+#: elf/sprof.c:1047 elf/sprof.c:1105
#, c-format
msgid "cannot allocate symbol data"
msgstr "paměť pro symboly nelze alokovat"
-#: iconv/iconv_charmap.c:176 iconv/iconv_prog.c:316
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "výstupní soubor nelze otevřít"
+
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
msgstr "chyba během uzavírání vstupu „%s“"
-#: iconv/iconv_charmap.c:450
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
msgstr "nepovolená vstupní sekvence na pozici %Zd"
-#: iconv/iconv_charmap.c:469 iconv/iconv_prog.c:526
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
#, c-format
msgid "incomplete character or shift sequence at end of buffer"
msgstr "nekompletní znak nebo shift sekvence na konci vyrovnávací paměti"
-#: iconv/iconv_charmap.c:514 iconv/iconv_charmap.c:550 iconv/iconv_prog.c:569
-#: iconv/iconv_prog.c:605
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
#, c-format
msgid "error while reading the input"
msgstr "chyba bÄ›hem Ätení vstupu"
-#: iconv/iconv_charmap.c:532 iconv/iconv_prog.c:587
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
#, c-format
msgid "unable to allocate buffer for input"
msgstr "vyrovnávací paměť pro vstup nelze alokovat"
@@ -1246,62 +1281,57 @@ msgstr "Konvertuje zadané soubory z jednoho kódování do druhého."
msgid "[FILE...]"
msgstr "[SOUBOR…]"
-#: iconv/iconv_prog.c:200
-#, c-format
-msgid "cannot open output file"
-msgstr "výstupní soubor nelze otevřít"
-
-#: iconv/iconv_prog.c:242
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
msgstr "konverze z „%s“ a do „%s“ není podporována"
-#: iconv/iconv_prog.c:247
+#: iconv/iconv_prog.c:239
#, c-format
msgid "conversion from `%s' is not supported"
msgstr "konverze z „%s“ není podporována"
-#: iconv/iconv_prog.c:254
+#: iconv/iconv_prog.c:246
#, c-format
msgid "conversion to `%s' is not supported"
msgstr "konverze do „%s“ není podporována"
-#: iconv/iconv_prog.c:258
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
msgstr "konverze z „%s“ do „%s“ není podporována"
-#: iconv/iconv_prog.c:268
+#: iconv/iconv_prog.c:260
#, c-format
msgid "failed to start conversion processing"
msgstr "konverze se nezdařila"
-#: iconv/iconv_prog.c:362
+#: iconv/iconv_prog.c:358
#, c-format
msgid "error while closing output file"
msgstr "chyba během uzavírání výstupního souboru"
-#: iconv/iconv_prog.c:471 iconv/iconv_prog.c:497
+#: iconv/iconv_prog.c:456
#, c-format
msgid "conversion stopped due to problem in writing the output"
msgstr "konverze zastavena kvůli problému při zápisu výstupu"
-#: iconv/iconv_prog.c:522
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
msgstr "nepovolená vstupní sekvence na pozici %ld"
-#: iconv/iconv_prog.c:530
+#: iconv/iconv_prog.c:541
#, c-format
msgid "internal error (illegal descriptor)"
msgstr "vnitřní chyba (nepřípustný deskriptor)"
-#: iconv/iconv_prog.c:533
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
msgstr "neznámá chyba funkce iconv() (%d)"
-#: iconv/iconv_prog.c:779
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -1364,12 +1394,10 @@ msgstr "rcmd: Nelze alokovat paměť\n"
msgid "rcmd: socket: All ports in use\n"
msgstr "rcmd: soket: Volný port nebyl nalezen\n"
-# připojen na adresu %s:
-# spojení s adresou %s:
#: inet/rcmd.c:200
#, c-format
msgid "connect to address %s: "
-msgstr "připojení na adresou %s: "
+msgstr "připojení na adresu %s: "
#: inet/rcmd.c:213
#, c-format
@@ -1419,10 +1447,9 @@ msgstr "chybný vlastník"
msgid "writeable by other than owner"
msgstr "zapisovatelný nejen pro vlastníka"
-# někde existuje pevný odkaz
#: inet/rcmd.c:496
msgid "hard linked somewhere"
-msgstr "na soubor se odkazuje více pevných odkazů"
+msgstr "někde existuje pevný odkaz"
#: inet/ruserpass.c:170 inet/ruserpass.c:193
msgid "out of memory"
@@ -1539,7 +1566,7 @@ msgstr "v kódu znaku je příliš mnoho bajtů"
msgid "no symbolic name given for end of range"
msgstr "žádné symbolické jméno nebylo pro konec rozsahu zadáno"
-#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
#: locale/programs/ld-identification.c:452
@@ -1566,8 +1593,8 @@ msgstr "hodnota pro %s musí být celé Äíslo"
msgid "%s: error in state machine"
msgstr "%s: chyba ve stavovém automatu"
-#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
-#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4115
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
#: locale/programs/ld-identification.c:468
#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
@@ -1589,7 +1616,7 @@ msgstr "neznámý znak „%s“"
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
msgstr "poÄet bajtů sekvence pro poÄátek a konec rozsahu není stejný: %d vs. %d"
-#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3047
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
msgstr "nepovolené názvy pro rozsah znaků"
@@ -1611,7 +1638,7 @@ msgstr "horní mez rozsahu je menší než dolní mez"
msgid "resulting bytes for range not representable."
msgstr "výsledné bajty rozsahu nejsou reprezentovatelné."
-#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
@@ -1621,10 +1648,10 @@ msgstr "výsledné bajty rozsahu nejsou reprezentovatelné."
msgid "No definition for %s category found"
msgstr "Žádná definice kategorie %s nebyla nalezena"
-#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
-#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
-#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
-#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
@@ -1637,46 +1664,46 @@ msgstr "Žádná definice kategorie %s nebyla nalezena"
msgid "%s: field `%s' not defined"
msgstr "%s: položka „%s“ není definována"
-#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
-#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
msgstr "%s: položka „%s“ nesmí být prázdná"
-#: locale/programs/ld-address.c:168
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
msgstr "%s: chybná escape sekvence „%%%c“ v položce „%s“"
-#: locale/programs/ld-address.c:219
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
msgstr "%s: názvoslovný kód jazyka „%s“ není definován"
-#: locale/programs/ld-address.c:244
+#: locale/programs/ld-address.c:246
#, c-format
msgid "%s: field `%s' must not be defined"
msgstr "%s: položka „%s“ nesmí být definována"
-#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
msgstr "%s: zkratka jazyka „%s“ není definována"
-#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
-#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
msgstr "%s: hodnota „%s“ nesouhlasí s hodnotou „%s“"
-#: locale/programs/ld-address.c:312
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
msgstr "%s: Äíselný kód zemÄ› „%d“ není platný"
-#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
-#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
#: locale/programs/ld-identification.c:364
#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
@@ -1688,7 +1715,7 @@ msgstr "%s: Äíselný kód zemÄ› „%d“ není platný"
msgid "%s: field `%s' declared more than once"
msgstr "%s: položka „%s“ deklarována více krát"
-#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
@@ -1698,7 +1725,7 @@ msgstr "%s: položka „%s“ deklarována více krát"
msgid "%s: unknown character in field `%s'"
msgstr "%s: neznámý znak v položce „%s“"
-#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
@@ -1708,10 +1735,10 @@ msgstr "%s: neznámý znak v položce „%s“"
msgid "%s: incomplete `END' line"
msgstr "%s: neúplný řádek „END“"
-#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:542
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
-#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4105
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
#: locale/programs/ld-identification.c:459
@@ -1828,7 +1855,7 @@ msgstr "%s: „%s“ musí být znak"
#: locale/programs/ld-collate.c:1573
#, c-format
msgid "%s: `position' must be used for a specific level in all sections or none"
-msgstr "%s: „position“ (pozice) musí být použita pro urÄitou úrovÄ›n ve vÅ¡ech sekcích, nebo v žádných"
+msgstr "%s: „position“ (pozice) musí být použita pro urÄitou úroveň ve vÅ¡ech sekcích, nebo v žádné"
#: locale/programs/ld-collate.c:1598
#, c-format
@@ -1855,7 +1882,7 @@ msgstr "chybí definice symbolu „UNDEFINED“"
msgid "too many errors; giving up"
msgstr "příliš mnoho chyb, vzdávám to"
-#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4044
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
#, c-format
msgid "%s: nested conditionals not supported"
msgstr "%s: vnořené podmínky nejsou podporovány"
@@ -1875,27 +1902,27 @@ msgstr "%s: duplicitní definice „%s“"
msgid "%s: duplicate declaration of section `%s'"
msgstr "%s: duplicitní deklarace sekce „%s“"
-#: locale/programs/ld-collate.c:3027
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
msgstr "%s: neznámý znak v názvu řadicího symbolu"
-#: locale/programs/ld-collate.c:3159
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
msgstr "%s: neznámý znak ve jméně definice rovnocennosti"
-#: locale/programs/ld-collate.c:3172
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
msgstr "%s: neznámý znak v hodnotě definice rovnocennosti"
-#: locale/programs/ld-collate.c:3182
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
msgstr "%s: neznámý symbol „%s“ v definici rovnocennosti"
-#: locale/programs/ld-collate.c:3191
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
msgstr "chyba při přidávání rovnocenného řadicího symbolu"
@@ -1975,12 +2002,12 @@ msgstr "%s: prázdný popis kategorie není dovolen"
msgid "%s: missing `reorder-sections-end' keyword"
msgstr "%s: chybí klíÄové slovo „reorder-sections-end“"
-#: locale/programs/ld-collate.c:4077
+#: locale/programs/ld-collate.c:4079
#, c-format
msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
msgstr "%s: „%s“ bez odpovídajícího „ifdef“ nebo „ifndef“"
-#: locale/programs/ld-collate.c:4095
+#: locale/programs/ld-collate.c:4097
#, c-format
msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
msgstr "%s: „endif“ bez odpovídajícího „ifdef“ nebo „ifndef“"
@@ -2304,7 +2331,7 @@ msgstr "%s: smetí na konci poÄáteÄního data v Å™etÄ›zci %Zd položky „era
msgid "%s: starting date is invalid in string %Zd in `era' field"
msgstr "%s: nepovolené poÄáteÄní datum v Å™etÄ›zci %Zd položky „era“"
-#: locale/programs/ld-time.c:407
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
msgstr "%s: neplatné koncové datum v řetězci %Zd položky „era“"
@@ -2314,11 +2341,6 @@ msgstr "%s: neplatné koncové datum v řetězci %Zd položky „era“"
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
msgstr "%s: smetí na konci koncového data v řetězci %Zd položky „era“"
-#: locale/programs/ld-time.c:435
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s: nepovolené koncové datum v řetězci %Zd položky „era“"
-
#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
@@ -2421,14 +2443,10 @@ msgid "Print more information"
msgstr "Vypisuje další informace"
#: locale/programs/locale.c:87
-msgid ""
-"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Vrátí informace o národním prostředí.\vNávod, jak nahlásit chybu, naleznete na:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get locale-specific information."
+msgstr "Získání urÄitých informací o národním prostÅ™edí."
-#: locale/programs/locale.c:92
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
@@ -2436,27 +2454,27 @@ msgstr ""
"NÃZEV\n"
"[-a|-m]"
-#: locale/programs/locale.c:193
+#: locale/programs/locale.c:194
#, c-format
msgid "Cannot set LC_CTYPE to default locale"
msgstr "LC_CTYPE nelze nastavit na implicitní národní prostředí"
-#: locale/programs/locale.c:195
+#: locale/programs/locale.c:196
#, c-format
msgid "Cannot set LC_MESSAGES to default locale"
msgstr "LC_MESSAGES nelze nastavit na implicitní národní prostředí"
-#: locale/programs/locale.c:208
+#: locale/programs/locale.c:209
#, c-format
msgid "Cannot set LC_COLLATE to default locale"
msgstr "LC_COLLATE nelze nastavit na implicitní národní prostředí"
-#: locale/programs/locale.c:224
+#: locale/programs/locale.c:225
#, c-format
msgid "Cannot set LC_ALL to default locale"
msgstr "LC_ALL nelze nastavit na implicitní národní prostředí"
-#: locale/programs/locale.c:500
+#: locale/programs/locale.c:518
#, c-format
msgid "while preparing output"
msgstr "během přípravy výstupu"
@@ -2741,7 +2759,7 @@ msgid "cannot create output file `%s' for category `%s'"
msgstr "výstupní soubor „%s“ pro kategorii „%s“ nelze vytvořit"
#: locale/programs/locfile.c:782
-msgid "expect string argument for `copy'"
+msgid "expecting string argument for `copy'"
msgstr "jako argument pro „copy“ oÄekáván Å™etÄ›zec"
#: locale/programs/locfile.c:786
@@ -2858,38 +2876,34 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Použití: memusage [PŘEPÃNAÄŒ]… PROGRAM [PŘEPÃNAÄŒE_PROGRAMU]…\n"
"Vyšetří využití paměti PROGRAMEM.\n"
"\n"
" -n,--progname=JMÉNO Jméno souboru s programem, který se má vyšetřit\n"
" -p,--png=SOUBOR Generuje PNG obrázek a uloží jej do SOUBORU\n"
-" -d,--data=SOUBOR Generuje binární data uloží je do SOUBORU\n"
+" -d,--data=SOUBOR Generuje binární data a uloží je do SOUBORU\n"
" -u,--unbuffered Nebufferuje výstup\n"
" -b,--buffer=VELIKOST Posbírá VELIKOST položek dříve, než je vypíše\n"
-" --no-timer Další informace neshromažÄuje za použití ÄasovaÄe\n"
-" -m,--mmap Také sleduje mmap() a podobné\n"
+" --no-timer NeshromažÄuje další informace za použití ÄasovaÄe\n"
+" -m,--mmap Sleduje také mmap() a související volání\n"
"\n"
" -?,--help Vypíše tuto nápovÄ›du a skonÄí\n"
" --usage Vrátí krátký návod na použití\n"
" -V,--version Vypíše informace o verzi a skonÄí\n"
"\n"
" Následující pÅ™epínaÄe mají smysl jen pÅ™i grafickém výstupu:\n"
-" -t,--time-based UdÄ›lá graf lineární v Äase\n"
+" -t,--time-based UdÄ›lá graf lineární vzhledem k Äasu\n"
" -T,--total Vykreslí také graf celkového využití paměti\n"
" --title=ŘETĚZEC Jako nadpis grafu se použije ŘETĚZEC\n"
" -x,--x-size=VELIKOST Šířka obrázku v pixelech\n"
" -y,--y-size=VELIKOST Výška obrázku v pixelech\n"
"\n"
"Argumenty povinné u dlouhých pÅ™epínaÄů jsou také povinné u jejich\n"
-"krátkých forem\n"
+"krátkých forem.\n"
"\n"
-"Návod, jak nahlásit chybu, naleznete na:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: malloc/memusage.sh:99
+#: malloc/memusage.sh:101
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
@@ -2901,51 +2915,51 @@ msgstr ""
" [--total] [--title=ŘETĚZEC] [--x-size=VELIKOST] [--y-size=VELIKOST]\n"
" PROGRAM [PŘEPÃNAÄŒ_PROGRAMU]…"
-#: malloc/memusage.sh:191
+#: malloc/memusage.sh:193
msgid "memusage: option \\`${1##*=}' is ambiguous"
msgstr "memusage: pÅ™epínaÄ â€ž${1##*=}“ není jednoznaÄný"
-#: malloc/memusage.sh:200
+#: malloc/memusage.sh:202
msgid "memusage: unrecognized option \\`$1'"
msgstr "memusage: nerozpoznaný pÅ™epínaÄ â€ž$1“"
-#: malloc/memusage.sh:213
+#: malloc/memusage.sh:215
msgid "No program name given"
msgstr "Nezadán žádný název programu"
-#: malloc/memusagestat.c:54
+#: malloc/memusagestat.c:57
msgid "Name output file"
msgstr "Název výstupního souboru"
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:58
msgid "Title string used in output graphic"
msgstr "Text nadpisu použitý ve výstupní grafice"
-#: malloc/memusagestat.c:56
+#: malloc/memusagestat.c:59
msgid "Generate output linear to time (default is linear to number of function calls)"
msgstr "Vytvoří výstup lineární v Äase (implicitní chování je linearita vzhledem k poÄtu volání funkce) "
-#: malloc/memusagestat.c:58
+#: malloc/memusagestat.c:61
msgid "Also draw graph for total memory consumption"
msgstr "Vykreslí také graf celkové spotřeby paměti"
-#: malloc/memusagestat.c:59
+#: malloc/memusagestat.c:62
msgid "Make output graphic VALUE pixels wide"
msgstr "Vytvoří výstupní grafiku širokou VELIKOST pixelů"
-#: malloc/memusagestat.c:60
+#: malloc/memusagestat.c:63
msgid "Make output graphic VALUE pixels high"
msgstr "Vytvoří výstupní grafiku vysokou VELIKOST pixelů"
-#: malloc/memusagestat.c:65
+#: malloc/memusagestat.c:68
msgid "Generate graphic from memory profiling data"
msgstr "Vykreslí obrázek na základě dat z šetření"
-#: malloc/memusagestat.c:68
+#: malloc/memusagestat.c:71
msgid "DATAFILE [OUTFILE]"
msgstr "DATOVÃ_SOUBOR [VÃSTUPNÃ_SOUBOR]"
-#: misc/error.c:118 timezone/zic.c:417
+#: misc/error.c:118
msgid "Unknown system error"
msgstr "Neznámá chyba systému"
@@ -2953,7 +2967,7 @@ msgstr "Neznámá chyba systému"
msgid "unable to free arguments"
msgstr "argumenty nelze uvolnit"
-#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr "Úspěch"
@@ -2995,9 +3009,9 @@ msgid "First/next chain broken"
msgstr "První další řetězec porušen"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
-msgstr "Přístup odmítnut"
+msgstr "Operace zamítnuta"
#: nis/nis_error.h:12
msgid "Not owner"
@@ -3086,10 +3100,9 @@ msgstr "Pojmenovaný objekt není prohledávatelný"
msgid "Error while talking to callback proc"
msgstr "Chyba během komunikace s procedurou zpětného volání"
-# Zaznamenán prostor názvů mimo NIS+
#: nis/nis_error.h:33
msgid "Non NIS+ namespace encountered"
-msgstr "Spatřen prostor názvů mimo NIS+"
+msgstr "Zaznamenán prostor názvů mimo NIS+"
#: nis/nis_error.h:34
msgid "Illegal object type for operation"
@@ -3102,7 +3115,7 @@ msgstr "Došlý objekt není na serveru tímtéž objektem"
# Chyba NIS_MODFAIL
#: nis/nis_error.h:36
msgid "Modify operation failed"
-msgstr "Operace změny nebyla provedena úspěšně"
+msgstr "Operace změny selhala"
#: nis/nis_error.h:37
msgid "Query illegal for named table"
@@ -3150,7 +3163,7 @@ msgstr "Na serveru nelze vytvořit proces"
#: nis/nis_error.h:48
msgid "Master server busy, full dump rescheduled."
-msgstr "Hlavní server je zaneprázdněn, úplný přenos byl přeplánován."
+msgstr "Hlavní server je zaneprázdněn, úplný přenos byl znovu naplánován."
#: nis/nis_local_names.c:122
#, c-format
@@ -3211,10 +3224,10 @@ msgstr "Typ : %s\n"
msgid "Master Server :\n"
msgstr "Hlavní server:\n"
-# Replika :
+# Master server nebo replicated slave (replikát)
#: nis/nis_print.c:175
msgid "Replicate :\n"
-msgstr "Kopie:\n"
+msgstr "Replika:\n"
#: nis/nis_print.c:176
#, c-format
@@ -3476,7 +3489,7 @@ msgstr "DES záznam pro síťové jméno %s není jednoznaÄný\n"
#: nis/nss_nisplus/nisplus-publickey.c:220
#, c-format
msgid "netname2user: missing group id list in `%s'"
-msgstr "netname2user: v „%s“ není seznam id skupin."
+msgstr "netname2user: v „%s“ chybí seznam ID skupin"
#: nis/nss_nisplus/nisplus-publickey.c:302
#: nis/nss_nisplus/nisplus-publickey.c:308
@@ -3496,444 +3509,482 @@ msgstr "netname2user: DES záznam pro %s v adresáři %s není jednoznaÄný"
msgid "netname2user: principal name `%s' too long"
msgstr "netname2user: hlavní (principal) název „%s“ je příliš dlouhý"
-# netname2user: LOCAL záznam pro %s v adresáři %s není jednoznaÄný
#: nis/nss_nisplus/nisplus-publickey.c:395
#, c-format
msgid "netname2user: LOCAL entry for %s in directory %s not unique"
-msgstr "netname2user: LOKÃLNà záznam pro %s v adresáři %s není jednoznaÄný"
+msgstr "netname2user: záznam LOCAL pro %s v adresáři %s není jednoznaÄný"
#: nis/nss_nisplus/nisplus-publickey.c:402
msgid "netname2user: should not have uid 0"
msgstr "netname2user: neměl bych mít uid 0"
-#: nis/ypclnt.c:825
+#: nis/ypclnt.c:836
msgid "Request arguments bad"
msgstr "Chybné argumenty žádosti"
-#: nis/ypclnt.c:828
+#: nis/ypclnt.c:839
msgid "RPC failure on NIS operation"
msgstr "Selhal RPC při NIS operaci"
-#: nis/ypclnt.c:831
+#: nis/ypclnt.c:842
msgid "Can't bind to server which serves this domain"
msgstr "K serveru obsluhujícímu tuto doménu se nelze připojit"
-#: nis/ypclnt.c:834
+#: nis/ypclnt.c:845
msgid "No such map in server's domain"
msgstr "Tato mapa se v doméně serveru nenachází"
-#: nis/ypclnt.c:837
+#: nis/ypclnt.c:848
msgid "No such key in map"
msgstr "Tento klÃ­Ä v mapÄ› neexistuje"
-#: nis/ypclnt.c:840
+#: nis/ypclnt.c:851
msgid "Internal NIS error"
msgstr "Vnitřní chyba NIS"
-#: nis/ypclnt.c:843
+#: nis/ypclnt.c:854
msgid "Local resource allocation failure"
msgstr "Chyba při přidělování místních prostředků"
# V NIS databázi již nejsou další záznamy
-#: nis/ypclnt.c:846
+#: nis/ypclnt.c:857
msgid "No more records in map database"
-msgstr "Žádné další záznamy v map databázi"
+msgstr "V databázi mapování nejsou žádné další záznamy"
-#: nis/ypclnt.c:849
+#: nis/ypclnt.c:860
msgid "Can't communicate with portmapper"
msgstr "S portmapperem nelze komunikovat"
-#: nis/ypclnt.c:852
+#: nis/ypclnt.c:863
msgid "Can't communicate with ypbind"
msgstr "S ypbind nelze komunikovat"
-#: nis/ypclnt.c:855
+#: nis/ypclnt.c:866
msgid "Can't communicate with ypserv"
msgstr "S ypserv nelze komunikovat"
-#: nis/ypclnt.c:858
+#: nis/ypclnt.c:869
msgid "Local domain name not set"
msgstr "Jméno místní domény není nastaveno"
-#: nis/ypclnt.c:861
+#: nis/ypclnt.c:872
msgid "NIS map database is bad"
msgstr "NIS map databáze je chybná"
-#: nis/ypclnt.c:864
+#: nis/ypclnt.c:875
msgid "NIS client/server version mismatch - can't supply service"
msgstr "Rozdílné verze NIS klienta a serveru - službu nelze poskytnout"
-#: nis/ypclnt.c:870
+#: nis/ypclnt.c:881
msgid "Database is busy"
msgstr "Databáze je používána"
-#: nis/ypclnt.c:873
+#: nis/ypclnt.c:884
msgid "Unknown NIS error code"
msgstr "Neznámý chybový kód služby NIS"
-#: nis/ypclnt.c:913
+#: nis/ypclnt.c:924
msgid "Internal ypbind error"
msgstr "Vnitřní chyba ypbind"
-#: nis/ypclnt.c:916
+#: nis/ypclnt.c:927
msgid "Domain not bound"
msgstr "Doména není připojena"
-#: nis/ypclnt.c:919
+#: nis/ypclnt.c:930
msgid "System resource allocation failure"
msgstr "Přidělení systémového prostředku nebylo úspěšné"
-#: nis/ypclnt.c:922
+#: nis/ypclnt.c:933
msgid "Unknown ypbind error"
msgstr "Neznámá chyba ypbind"
-#: nis/ypclnt.c:963
+#: nis/ypclnt.c:974
msgid "yp_update: cannot convert host to netname\n"
msgstr "yp_update: název poÄítaÄe nelze konvertovat na síťový název\n"
-#: nis/ypclnt.c:981
+#: nis/ypclnt.c:992
msgid "yp_update: cannot get server address\n"
msgstr "yp_update: adresu serveru nelze zjistit\n"
-#: nscd/aicache.c:77 nscd/hstcache.c:468
+#: nscd/aicache.c:82 nscd/hstcache.c:481
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
msgstr "„%s“ nebylo v cache pamÄ›ti pro poÄítaÄe nalezeno!"
-#: nscd/aicache.c:79 nscd/hstcache.c:470
+#: nscd/aicache.c:84 nscd/hstcache.c:483
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
msgstr "Znovu naÄítám „%s“ do keÅ¡e pro jména poÄítaÄů!"
-#: nscd/cache.c:146
+#: nscd/cache.c:150
#, c-format
msgid "add new entry \"%s\" of type %s for %s to cache%s"
msgstr "přidat novou položku „%s“ typu %s pro %s fo keše%s"
-#: nscd/cache.c:148
+#: nscd/cache.c:152
msgid " (first)"
msgstr " (první)"
-#: nscd/cache.c:256 nscd/connections.c:810
+#: nscd/cache.c:286 nscd/connections.c:866
#, c-format
msgid "cannot stat() file `%s': %s"
msgstr "na soubor „%s“ nelze vykonat stat(): %s"
-#: nscd/cache.c:285
+#: nscd/cache.c:328
#, c-format
msgid "pruning %s cache; time %ld"
msgstr "Äistím keÅ¡ %s, Äas %ld"
-#: nscd/cache.c:312
+#: nscd/cache.c:357
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
msgstr "zvažuji %s-položku „%s“, životnost %<PRIu64>"
-#: nscd/connections.c:521 nscd/connections.c:533 nscd/connections.c:545
-#: nscd/connections.c:564
+#: nscd/connections.c:570
#, c-format
msgid "invalid persistent database file \"%s\": %s"
msgstr "chybný soubor „%s“ s trvalou databází: %s"
-#: nscd/connections.c:535
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr "neinicializovaná hlaviÄka"
+
+#: nscd/connections.c:583
msgid "header size does not match"
msgstr "velikost hlaviÄky nesouhlasí"
-#: nscd/connections.c:547
+#: nscd/connections.c:593
msgid "file size does not match"
msgstr "velikost souboru nesouhlasí"
-#: nscd/connections.c:566
+#: nscd/connections.c:610
msgid "verification failed"
msgstr "ověření selhalo"
-#: nscd/connections.c:580
+#: nscd/connections.c:624
#, c-format
msgid "suggested size of table for database %s larger than the persistent database's table"
msgstr "navrhovaná velikost tabulky pro databázi %s je větší než tabulka trvalých databází"
-#: nscd/connections.c:591 nscd/connections.c:673
+#: nscd/connections.c:635 nscd/connections.c:720
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
msgstr "deskriptor jen-pro-Ätení „%s“ nelze vytvoÅ™it: žádný mmap"
-#: nscd/connections.c:652
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr "k „%s“ nelze přistoupit"
+
+#: nscd/connections.c:699
#, c-format
msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
msgstr "Databáze pro %s je poÅ¡kozena nebo vícenásobnÄ› používána. Je-li tÅ™eba, ruÄnÄ› odstraňte %s a restartuje."
-#: nscd/connections.c:659
+#: nscd/connections.c:706
#, c-format
msgid "cannot create %s; no persistent database used"
msgstr "%s nelze vytvořit, žádná trvalá databáze nebude použita"
-#: nscd/connections.c:662
+#: nscd/connections.c:709
#, c-format
msgid "cannot create %s; no sharing possible"
msgstr "%s nelze vytvořit, sdílení není možno"
-#: nscd/connections.c:733
+#: nscd/connections.c:780
#, c-format
msgid "cannot write to database file %s: %s"
msgstr "do databázového soubor %s nelze zapsat: %s"
-#: nscd/connections.c:772
+#: nscd/connections.c:819
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
msgstr "soket nelze nastavit na uzavření při spuštění, %s, vypínám paranoidní režim"
-#: nscd/connections.c:823
+#: nscd/connections.c:902
#, c-format
msgid "cannot open socket: %s"
msgstr "soket nelze otevřít: %s"
-#: nscd/connections.c:840
+#: nscd/connections.c:922
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
msgstr "soket nelze přepnout do neblokujícího režimu: %s"
-#: nscd/connections.c:848
+#: nscd/connections.c:930
#, c-format
msgid "cannot set socket to close on exec: %s"
msgstr "soket nelze nastavit na uzavření při spuštění, %s"
-#: nscd/connections.c:859
+#: nscd/connections.c:943
#, c-format
msgid "cannot enable socket to accept connections: %s"
msgstr "soket nemůže přijímat spojení: %s"
-#: nscd/connections.c:955
+#: nscd/connections.c:1043
#, c-format
msgid "provide access to FD %d, for %s"
msgstr "poskytnout přístup na deskriptor souboru %d pro %s"
-#: nscd/connections.c:967
+#: nscd/connections.c:1055
#, c-format
msgid "cannot handle old request version %d; current version is %d"
msgstr "žádost staré verze (%d) nelze zpracovat; aktuální verze je %d"
-#: nscd/connections.c:1009 nscd/connections.c:1062
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr "požadavek z %ld neobsloužen kvůli chybějícím právům"
+
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr "požadavek z „%s“ [%ld] neobsloužen kvůli chybějícím právům"
+
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr "požadavek neobsloužen kvůli chybějícím právům"
+
+#: nscd/connections.c:1125 nscd/connections.c:1178
#, c-format
msgid "cannot write result: %s"
msgstr "výsledek nelze zapsat: %s"
-#: nscd/connections.c:1145
+#: nscd/connections.c:1261
#, c-format
msgid "error getting caller's id: %s"
msgstr "chyba při zjišťování id volajícího: %s"
-#: nscd/connections.c:1204
+#: nscd/connections.c:1320
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "/proc/self/cmdline nelze otevřít: %s, vypínám paranoidní režim"
-#: nscd/connections.c:1218
+#: nscd/connections.c:1334
#, c-format
msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "/proc/self/cmdline nelze naÄíst: %s, vypínám paranoidní režim"
-#: nscd/connections.c:1258
+#: nscd/connections.c:1374
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
msgstr "nelze se přepnout do starého UID: %s. vypínám paranoidní režim"
-#: nscd/connections.c:1268
+#: nscd/connections.c:1384
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
msgstr "nelze se přepnout do starého GID: %s, vypínám paranoidní režim"
-#: nscd/connections.c:1281
+#: nscd/connections.c:1397
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
msgstr "nelze se přepnout do starého pracovního adresáře: %s. vypínám paranoidní režim"
-#: nscd/connections.c:1310
+#: nscd/connections.c:1429
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
msgstr "znovuspuštění selhalo: %s, vypínám paranoidní režim"
-#: nscd/connections.c:1319
+#: nscd/connections.c:1438
#, c-format
msgid "cannot change current working directory to \"/\": %s"
msgstr "souÄasný pracovní adresář nelze zmÄ›nit na „/“: %s"
-#: nscd/connections.c:1437
+#: nscd/connections.c:1644
#, c-format
msgid "short read while reading request: %s"
msgstr "neúplné Ätení žádosti: „%s“"
-#: nscd/connections.c:1468
+#: nscd/connections.c:1677
#, c-format
msgid "key length in request too long: %d"
msgstr "délka klíÄe v žádosti je příliÅ¡ dlouhá: %d"
-#: nscd/connections.c:1481
+#: nscd/connections.c:1690
#, c-format
msgid "short read while reading request key: %s"
msgstr "neúplné Ätení klíÄe žádosti: %s"
-#: nscd/connections.c:1490
+#: nscd/connections.c:1699
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
msgstr "handle_request: žádost přijata (verze = %d) od PID %ld"
-#: nscd/connections.c:1495
+#: nscd/connections.c:1704
#, c-format
msgid "handle_request: request received (Version = %d)"
msgstr "handle_request: žádost přijata (verze = %d)"
-#: nscd/connections.c:1856
+#: nscd/connections.c:1903 nscd/connections.c:2101
#, c-format
-msgid "could only start %d threads; terminating"
-msgstr "spustit mohu jen %d vláken, konÄím"
+msgid "disabled inotify after read error %d"
+msgstr "po chybÄ› v Ätení %d zakázáno inotify"
+
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr "proměnnou podmínky nebylo možné inicializovat"
+
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr "nebylo možné spustit úklidové vlákno, konÄím"
-#: nscd/connections.c:1904 nscd/connections.c:1905 nscd/connections.c:1922
-#: nscd/connections.c:1931 nscd/connections.c:1949 nscd/connections.c:1960
-#: nscd/connections.c:1971
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr "nebylo možné spustit jakékoliv výkonné vlákno, konÄím"
+
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
#, c-format
msgid "Failed to run nscd as user '%s'"
msgstr "Spuštění nscd pod uživatelem „%s“ selhalo"
-#: nscd/connections.c:1923
+#: nscd/connections.c:2322
#, c-format
msgid "initial getgrouplist failed"
msgstr "prvotní získání seznamu skupin (getgrouplist) selhalo"
-#: nscd/connections.c:1932
+#: nscd/connections.c:2331
#, c-format
msgid "getgrouplist failed"
msgstr "getgrouplist (získej seznam skupin) selhalo"
-#: nscd/connections.c:1950
+#: nscd/connections.c:2349
#, c-format
msgid "setgroups failed"
msgstr "funkce setgroups() selhala"
-#: nscd/grpcache.c:402 nscd/hstcache.c:418 nscd/initgrcache.c:412
-#: nscd/pwdcache.c:397 nscd/servicescache.c:343
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
#, c-format
msgid "short write in %s: %s"
msgstr "neúplný zápis v %s(): %s"
-#: nscd/grpcache.c:445 nscd/initgrcache.c:78
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
msgstr "„%s“ nebylo v cache paměti pro skupiny nalezeno!"
-#: nscd/grpcache.c:447 nscd/initgrcache.c:80
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
-msgstr "Znovunahrávám „%s“ do keše skupin!"
+msgstr "Znovu nahrávám „%s“ do keše skupin!"
-#: nscd/grpcache.c:524
+#: nscd/grpcache.c:517
#, c-format
msgid "Invalid numeric gid \"%s\"!"
msgstr "Chybná Äíselné GID „%s“!"
-#: nscd/mem.c:383
+#: nscd/mem.c:457
#, c-format
msgid "freed %zu bytes in %s cache"
msgstr "z keše %2$s uvolněno %1$zu bajtů"
-#: nscd/mem.c:512
+#: nscd/mem.c:594
#, c-format
msgid "no more memory for database '%s'"
msgstr "Žádná další paměť pro databázi „%s“"
-#: nscd/nscd.c:98
+#: nscd/nscd.c:101
msgid "Read configuration data from NAME"
msgstr "NaÄtení údajů o konfiguraci ze souboru NÃZEV"
-#: nscd/nscd.c:100
+#: nscd/nscd.c:103
msgid "Do not fork and display messages on the current tty"
msgstr "Nespouští samostatný proces a vypisuje zprávy na aktuálním terminálu"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "NUMBER"
msgstr "POÄŒET"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "Start NUMBER threads"
msgstr "Spustí POČET vláken"
-#: nscd/nscd.c:102
+#: nscd/nscd.c:105
msgid "Shut the server down"
msgstr "Zastavení serveru"
-#: nscd/nscd.c:103
-msgid "Print current configuration statistic"
-msgstr "Vypíše statistiky aktuální konfigurace"
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
+msgstr "Vypíše statistiku aktuální konfigurace"
-#: nscd/nscd.c:104
+#: nscd/nscd.c:107
msgid "TABLE"
msgstr "TABULKA"
-#: nscd/nscd.c:105
+#: nscd/nscd.c:108
msgid "Invalidate the specified cache"
msgstr "Zneplatnění zadané cache"
-#: nscd/nscd.c:106
+#: nscd/nscd.c:109
msgid "TABLE,yes"
msgstr "TABULKA,yes"
-#: nscd/nscd.c:107
+#: nscd/nscd.c:110
msgid "Use separate cache for each user"
msgstr "Použije oddělenou cache pro každého uživatele"
-#: nscd/nscd.c:112
+#: nscd/nscd.c:115
msgid "Name Service Cache Daemon."
msgstr "NSC (Name Service Cache) démon [pro kešování jmenných služeb]."
-#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
#, c-format
msgid "wrong number of arguments"
msgstr "chybný poÄet argumentů"
-#: nscd/nscd.c:154
+#: nscd/nscd.c:157
#, c-format
msgid "failure while reading configuration file; this is fatal"
msgstr "chyba pÅ™i naÄítání konfiguraÄního souboru, toto je fatální"
-#: nscd/nscd.c:163
+#: nscd/nscd.c:166
#, c-format
msgid "already running"
msgstr "již běží"
-#: nscd/nscd.c:178 nscd/nscd.c:233
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
msgid "cannot fork"
msgstr "nelze vytvořit potomka pomocí fork()"
-#: nscd/nscd.c:241
+#: nscd/nscd.c:244
#, c-format
msgid "cannot change current working directory to \"/\""
msgstr "nelze zmÄ›nit souÄasný pracovní adresář na „/“"
-#: nscd/nscd.c:249
+#: nscd/nscd.c:252
msgid "Could not create log file"
msgstr "Soubor s protokolem nelze vytvořit"
-#: nscd/nscd.c:302 nscd/nscd.c:327 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
msgid "Only root is allowed to use this option!"
msgstr "Tento pÅ™epínaÄ je dostupný pouze superuživateli!"
-#: nscd/nscd.c:364 nscd/nscd_stat.c:191
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr "„%s“ není známá databáze"
+
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
msgid "write incomplete"
msgstr "neúplný zápis"
-#: nscd/nscd.c:375
+#: nscd/nscd.c:381
#, c-format
msgid "cannot read invalidate ACK"
msgstr "zneplatnÄ›ný ACK (potvrzení) nelze naÄíst"
-#: nscd/nscd.c:381
+#: nscd/nscd.c:387
#, c-format
msgid "invalidation failed"
msgstr "zneplatnění selhalo"
-#: nscd/nscd.c:391
+#: nscd/nscd.c:397
#, c-format
msgid "secure services not implemented anymore"
msgstr "bezpeÄné služby již nejsou implementovány"
@@ -3948,38 +3999,38 @@ msgstr "databáze %s není podporována"
msgid "Parse error: %s"
msgstr "Chyba analýzy: %s"
-#: nscd/nscd_conf.c:193
+#: nscd/nscd_conf.c:194
#, c-format
msgid "Must specify user name for server-user option"
msgstr "U volby server-user musíte uvést jméno uživatele"
-#: nscd/nscd_conf.c:200
+#: nscd/nscd_conf.c:201
#, c-format
msgid "Must specify user name for stat-user option"
msgstr "U volby stat-user musíte uvést jméno uživatele"
-#: nscd/nscd_conf.c:244
+#: nscd/nscd_conf.c:245
#, c-format
msgid "invalid value for 'reload-count': %u"
msgstr "neplatná hodnota pro „reload-count“: %u"
-#: nscd/nscd_conf.c:259
+#: nscd/nscd_conf.c:260
#, c-format
msgid "Must specify value for restart-interval option"
msgstr "U volby restart-interval musíte uvést hodnotu"
# Volba na řádku v nscd.conf nenalezena
-#: nscd/nscd_conf.c:273
+#: nscd/nscd_conf.c:274
#, c-format
msgid "Unknown option: %s %s %s"
msgstr "Neznámá volba: %s %s %s"
-#: nscd/nscd_conf.c:286
+#: nscd/nscd_conf.c:287
#, c-format
msgid "cannot get current working directory: %s; disabling paranoia mode"
msgstr "nelze získat název souÄasného pracovního adresáře: %s, vypínám paranoidní režim"
-#: nscd/nscd_conf.c:306
+#: nscd/nscd_conf.c:307
#, c-format
msgid "maximum file size for %s database too small"
msgstr "maximální velikost souboru pro databázi %s je příliš malá"
@@ -4021,7 +4072,7 @@ msgid ""
msgstr ""
"konfigurace nscd:\n"
"\n"
-"%15d ladící úroveň serveru\n"
+"%15d úroveň ladění serveru\n"
#: nscd/nscd_stat.c:230
#, c-format
@@ -4110,17 +4161,17 @@ msgstr ""
"%15<PRIuMAX> selhání alokace paměti\n"
"%15s kontrolovat změny v /etc/%s\n"
-#: nscd/pwdcache.c:440
+#: nscd/pwdcache.c:443
#, c-format
msgid "Haven't found \"%s\" in password cache!"
msgstr "„%s“ nebylo v keš pro hesla nalezeno!"
-#: nscd/pwdcache.c:442
+#: nscd/pwdcache.c:445
#, c-format
msgid "Reloading \"%s\" in password cache!"
-msgstr "ZnovunaÄítám „%s“ do keÅ¡e pro hesla!"
+msgstr "Znovu naÄítám „%s“ do keÅ¡e hesel!"
-#: nscd/pwdcache.c:520
+#: nscd/pwdcache.c:523
#, c-format
msgid "Invalid numeric uid \"%s\"!"
msgstr "Neplatné Äíselné UID „%s“"
@@ -4196,7 +4247,11 @@ msgstr "Chyba při zjišťování kontextu nscd"
msgid "Error getting sid from context"
msgstr "Chyba při získávání SID z kontextu"
-#: nscd/selinux.c:399
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr "podpora pro politiku databází v době překladu chybí"
+
+#: nscd/selinux.c:407
#, c-format
msgid ""
"\n"
@@ -4242,28 +4297,24 @@ msgid "Service configuration to be used"
msgstr "Konfigurace služby, která má být použita"
#: nss/getent.c:62
-msgid ""
-"Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Získá položky z administrativní databáze.\vNávod, jak nahlásit chybu, naleznete na:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get entries from administrative database."
+msgstr "Získá záznamy ze správní databáze."
-#: nss/getent.c:145 nss/getent.c:394
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
msgid "Enumeration not supported on %s\n"
msgstr "VýÄet není podporován na %s\n"
-#: nss/getent.c:782
+#: nss/getent.c:794
#, c-format
msgid "Unknown database name"
msgstr "Neznámé jméno databáze"
-#: nss/getent.c:808
+#: nss/getent.c:820
msgid "Supported databases:\n"
msgstr "Podporované databáze:\n"
-#: nss/getent.c:868
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
msgstr "Neznámá databáze: %s\n"
@@ -4338,158 +4389,166 @@ msgstr "Použití: %s [-v SPECIFIKACE] JMÉNO_PROMĚNNÉ [CESTA]\n"
msgid " %s -a [pathname]\n"
msgstr " %s -a [CESTA]\n"
-#: posix/getconf.c:1067
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
+"Použití: getconf [-v SPEC] PROMÄšNNÃ\n"
+" nebo: getconf [-v SPEC] PROMÄšNNÃ_CESTY CESTA\n"
+"\n"
+"Získá konfiguraÄní hodnotu promÄ›nné PROMÄšNNà nebo promÄ›nné\n"
+"PROMÄšNNÃ_CESTY pro cestu CESTA. Je-li uvedeno SPEC, vrátí hodnoty\n"
+"pro prostředí překladu SPEC.\n"
+"\n"
+
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
msgstr "neznámá specifikace „%s“"
-#: posix/getconf.c:1095
+#: posix/getconf.c:1109
#, c-format
msgid "Couldn't execute %s"
msgstr "Nelze spustit %s"
-#: posix/getconf.c:1135 posix/getconf.c:1151
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
msgstr "není definováno"
-#: posix/getconf.c:1173
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
msgstr "Neznámá proměnná „%s“"
-#: posix/getopt.c:571 posix/getopt.c:587
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: pÅ™epínaÄ â€ž%s“ není jednoznaÄný\n"
-#: posix/getopt.c:620 posix/getopt.c:624
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: pÅ™epínaÄ â€ž--%s“ musí být zadán bez argumentu\n"
+msgstr "%s: pÅ™epínaÄ â€ž--%s“ nedovoluje žádný argument\n"
-#: posix/getopt.c:633 posix/getopt.c:638
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: pÅ™epínaÄ â€ž%c%s“ musí být zadán bez argumentu\n"
+msgstr "%s: pÅ™epínaÄ â€ž%c%s“ nedovoluje žádný argument\n"
-#: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
-#: posix/getopt.c:1035
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: pÅ™epínaÄ â€ž%s“ vyžaduje argument\n"
-# Říká, že žádný pÅ™epínaÄ takového jména nebyl nalezen.
-#: posix/getopt.c:738 posix/getopt.c:741
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: neznámý pÅ™epínaÄ â€ž--%s“\n"
+msgstr "%s: nerozpoznaný pÅ™epínaÄ â€ž--%s“\n"
-# Říká, že žádný pÅ™epínaÄ takového jména nebyl nalezen.
-#: posix/getopt.c:749 posix/getopt.c:752
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: neznámý pÅ™epínaÄ â€ž%c%s“\n"
+msgstr "%s: nerozpoznaný pÅ™epínaÄ â€ž%c%s“\n"
-# Rozdíl mezi 'illegal option' a 'invalid option' není žádný. To která zpráva
-# je vypisována je dáno tím, zda má být výstup podle normy 'POSIX' nebo ne.
-# 'Illegal option' je POSIXové.
-#: posix/getopt.c:804 posix/getopt.c:807
-#, c-format
-msgid "%s: illegal option -- '%c'\n"
-msgstr "%s: neznámý pÅ™epínaÄ -- %c\n"
-
-# Vysvětlení viz 'illegal option'
-#: posix/getopt.c:813 posix/getopt.c:816
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: neznámý pÅ™epínaÄ -- %c\n"
+msgstr "%s: neplatný pÅ™epínaÄ – „%c“\n"
-#: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
-#: posix/getopt.c:1106
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: pÅ™epínaÄ vyžaduje argument – %c\n"
+msgstr "%s: pÅ™epínaÄ vyžaduje argument – „%c“\n"
-#: posix/getopt.c:937 posix/getopt.c:953
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: pÅ™epínaÄ â€ž-W %s“ není jednoznaÄný\n"
-#: posix/getopt.c:977 posix/getopt.c:995
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: pÅ™epínaÄ â€ž-W %s“ musí být zadán bez argumentu\n"
+msgstr "%s: pÅ™epínaÄ â€ž-W %s“ nedovoluje žádný argument\n"
# Nenalezeno
-#: posix/regcomp.c:135
+#: posix/regcomp.c:136
msgid "No match"
msgstr "Žádná shoda"
-#: posix/regcomp.c:138
+#: posix/regcomp.c:139
msgid "Invalid regular expression"
msgstr "Nepřípustný regulární výraz"
-#: posix/regcomp.c:141
+#: posix/regcomp.c:142
msgid "Invalid collation character"
msgstr "Pro řazení nepřípustný znak"
-#: posix/regcomp.c:144
+#: posix/regcomp.c:145
msgid "Invalid character class name"
msgstr "Nepřípustný název třídy znaků"
-#: posix/regcomp.c:147
+#: posix/regcomp.c:148
msgid "Trailing backslash"
msgstr "Koncové zpětné lomítko"
-#: posix/regcomp.c:150
+#: posix/regcomp.c:151
msgid "Invalid back reference"
msgstr "Neplatný zpětný odkaz"
-#: posix/regcomp.c:153
+#: posix/regcomp.c:154
msgid "Unmatched [ or [^"
msgstr "Nepárová [ or [^"
-#: posix/regcomp.c:156
+#: posix/regcomp.c:157
msgid "Unmatched ( or \\("
msgstr "Nepárová ( or \\("
-#: posix/regcomp.c:159
+#: posix/regcomp.c:160
msgid "Unmatched \\{"
msgstr "Nepárová \\{"
-#: posix/regcomp.c:162
+#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
msgstr "Nepřípustný obsah \\{\\}"
-#: posix/regcomp.c:165
+#: posix/regcomp.c:166
msgid "Invalid range end"
msgstr "Nepřípustný konec rozsahu"
-#: posix/regcomp.c:168
+#: posix/regcomp.c:169
msgid "Memory exhausted"
msgstr "Paměť vyÄerpána"
-#: posix/regcomp.c:171
+#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
msgstr "Nepřípustný předchozí regulární výraz"
-#: posix/regcomp.c:174
+#: posix/regcomp.c:175
msgid "Premature end of regular expression"
msgstr "PÅ™edÄasný konec regulárního výrazu"
-#: posix/regcomp.c:177
+#: posix/regcomp.c:178
msgid "Regular expression too big"
msgstr "Regulární výraz je příliš velký"
-#: posix/regcomp.c:180
+#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
msgstr "Nepárová ) or \\)"
-#: posix/regcomp.c:660
+#: posix/regcomp.c:681
msgid "No previous regular expression"
msgstr "Předchozí regulární výraz neexistuje"
-#: posix/wordexp.c:1798
+#: posix/wordexp.c:1832
msgid "parameter null or not set"
msgstr "parametr je nullový nebo prázdný"
@@ -4563,150 +4622,148 @@ msgstr "Neznámá chyba "
msgid "Unknown error"
msgstr "Neznámá chyba"
-# Signál reálného Äasu %d"
#: string/strsignal.c:65
#, c-format
msgid "Real-time signal %d"
-msgstr "Real-timeový signál %d"
+msgstr "Signál reálného Äasu %d"
#: string/strsignal.c:69
#, c-format
msgid "Unknown signal %d"
msgstr "Neznámý signál %d"
-#: sunrpc/auth_unix.c:114
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create: nedostatek paměti\n"
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "nedostatek paměti\n"
#: sunrpc/auth_unix.c:350
msgid "auth_unix.c: Fatal marshalling problem"
msgstr "auth_unix.c: Fatální chyba marshallingu"
-# nižší verze, vyšší verze
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; podverze = %lu, verze = %lu"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s: %s; spodní verze = %lu, horní verze = %lu"
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr "; důvod = "
+#: sunrpc/clnt_perr.c:112
+#, c-format
+msgid "%s: %s; why = %s\n"
+msgstr "%s: %s; důvod = %s\n"
-#: sunrpc/clnt_perr.c:132
+#: sunrpc/clnt_perr.c:114
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(neznámá chyba při ověřování totožnosti – %d)"
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s: %s; důvod = (neznámá chyba při ověřování totožnosti – %d)\n"
-#: sunrpc/clnt_perr.c:172
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
msgstr "RPC: Úspěch"
-#: sunrpc/clnt_perr.c:175
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
msgstr "RPC: Argumenty nelze zakódovat"
-#: sunrpc/clnt_perr.c:179
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
msgstr "RPC: Výsledek nelze dekódovat"
-# Nelze vysílat
-#: sunrpc/clnt_perr.c:183
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
-msgstr "RPC: Nelze vyslat"
+msgstr "RPC: Nelze vysílat"
-# Nelze přijímat
-#: sunrpc/clnt_perr.c:187
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
-msgstr "RPC: Nelze přijmout"
+msgstr "RPC: Nelze přijímat"
-#: sunrpc/clnt_perr.c:191
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
msgstr "RPC: ÄŒasovaÄ vyprÅ¡el"
-#: sunrpc/clnt_perr.c:195
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
msgstr "RPC: Nekompatibilní verze RPC"
-#: sunrpc/clnt_perr.c:199
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
msgstr "RPC: Chyba při ověřování totožnosti"
-#: sunrpc/clnt_perr.c:203
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
msgstr "RPC: Program není k dispozici"
-#: sunrpc/clnt_perr.c:207
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
msgstr "RPC: Nesouhlasí program nebo verze"
-#: sunrpc/clnt_perr.c:211
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
msgstr "RPC: Procedura není k dispozici"
-#: sunrpc/clnt_perr.c:215
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
msgstr "RPC: Server nemůže dekódovat argumenty"
-#: sunrpc/clnt_perr.c:219
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
msgstr "RPC: Chyba vzdáleného systému"
-#: sunrpc/clnt_perr.c:223
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
msgstr "RPC: Neznámý poÄítaÄ"
-#: sunrpc/clnt_perr.c:227
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
msgstr "RPC: Neznámý protokol"
-#: sunrpc/clnt_perr.c:231
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
msgstr "RPC: Chyba portmapperu"
-#: sunrpc/clnt_perr.c:235
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
msgstr "RPC: Program není registrován"
-#: sunrpc/clnt_perr.c:239
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
msgstr "RPC: Chyba (blíže neurÄená)"
-#: sunrpc/clnt_perr.c:280
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
msgstr "RPC: (neznámý chybový kód)"
-#: sunrpc/clnt_perr.c:342
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
msgstr "Ověření totožnosti bylo úspěšné"
-#: sunrpc/clnt_perr.c:345
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
msgstr "Neplatné oprávnění klienta"
-#: sunrpc/clnt_perr.c:349
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
msgstr "Server odmítl oprávnění"
-# Chybný ověřovaÄ klienta
-#: sunrpc/clnt_perr.c:353
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
-msgstr "Neplatné ověření klienta"
+msgstr "Chybný ověřovatel klienta"
-# Server odmítl ověřovaÄe
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
-msgstr "Server odmítl ověření"
+msgstr "Server odmítl ověřovatele"
-#: sunrpc/clnt_perr.c:361
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
msgstr "OprávnÄ›ní klienta je nepostaÄující"
-# Chybný ověřovaÄ serveru
-#: sunrpc/clnt_perr.c:365
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
-msgstr "Neplatné ověření serveru"
+msgstr "Neplatný ověřovatel serveru"
-#: sunrpc/clnt_perr.c:369
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
msgstr "Chyba (blíže nespecifikovaná)"
@@ -4714,18 +4771,6 @@ msgstr "Chyba (blíže nespecifikovaná)"
msgid "clnt_raw.c: fatal header serialization error"
msgstr "clnt_raw.c: fatální chyba pÅ™i serializaci hlaviÄky."
-#: sunrpc/clnt_tcp.c:131
-msgid "clnttcp_create: out of memory\n"
-msgstr "clnttcp_create: nedostatek paměti\n"
-
-#: sunrpc/clnt_udp.c:139
-msgid "clntudp_create: out of memory\n"
-msgstr "clntudp_create: nedostatek paměti\n"
-
-#: sunrpc/clnt_unix.c:128
-msgid "clntunix_create: out of memory\n"
-msgstr "clntunix_create: nedostatek paměti\n"
-
#: sunrpc/pm_getmaps.c:83
msgid "pmap_getmaps.c: rpc problem"
msgstr "pmap_getmaps.c: problém s RPC"
@@ -4754,123 +4799,247 @@ msgstr "Problém při volání poll pro všesměrové vysílání"
msgid "Cannot receive reply to broadcast"
msgstr "OdpovÄ›Ä na vÅ¡esmÄ›rové vysílání nepÅ™iÅ¡la"
-#: sunrpc/rpc_main.c:286
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr "%s: výstup by přepsal %s\n"
-#: sunrpc/rpc_main.c:293
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr "%s: %s nelze otevřít: %m\n"
-#: sunrpc/rpc_main.c:305
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
msgstr "%s: během zápisu do %s: %m"
-#: sunrpc/rpc_main.c:340
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
msgstr "preprocesor jazyka C nelze nalézt: %s \n"
-#: sunrpc/rpc_main.c:348
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
msgstr "žádný preprocesor jazyka C (cpp) nelze nalézt\n"
-#: sunrpc/rpc_main.c:417
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
msgstr "%s: preprocesor jazyka C ukonÄen signálem %d\n"
-#: sunrpc/rpc_main.c:420
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
msgstr "%s: preprocesor jazyka C skonÄil s výstupním kódem %d\n"
-#: sunrpc/rpc_main.c:460
+#: sunrpc/rpc_main.c:464
#, c-format
msgid "illegal nettype: `%s'\n"
msgstr "nepovolený nettype: „%s“\n"
-#: sunrpc/rpc_main.c:1122
+#: sunrpc/rpc_main.c:1130
#, c-format
msgid "rpcgen: too many defines\n"
msgstr "rpcgen: příliš mnoho definic\n"
-#: sunrpc/rpc_main.c:1134
+#: sunrpc/rpc_main.c:1142
#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr "rpcgen: chyba při vkládání do seznamu argumentů\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1167
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
msgstr "soubor „%s“ již existuje a může být přepsán\n"
-#: sunrpc/rpc_main.c:1212
+#: sunrpc/rpc_main.c:1220
#, c-format
msgid "Cannot specify more than one input file!\n"
msgstr "Více než jeden vstupní soubor nelze zadat!\n"
-#: sunrpc/rpc_main.c:1382
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
msgstr "Tato implementace nepodporuje nový MT-bezpeÄný kód!\n"
-#: sunrpc/rpc_main.c:1391
+#: sunrpc/rpc_main.c:1403
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
msgstr "Příznaky netid a inetd nelze použít souÄasnÄ›!\n"
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
msgstr "Příznak netid nelze bez TIRPC použít!\n"
-#: sunrpc/rpc_main.c:1410
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
msgstr "Při použití nového stylu nelze příznaky tabulky použít!\n"
-#: sunrpc/rpc_main.c:1429
+#: sunrpc/rpc_main.c:1441
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
msgstr "„vst_soubor“ je vyžadován při použití příznaků tvorby vzoru.\n"
-#: sunrpc/rpc_main.c:1434
+#: sunrpc/rpc_main.c:1446
#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr "Více než jeden příznak tvorby souboru nelze použít!\n"
-#: sunrpc/rpc_main.c:1443
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
msgstr "Použití: %s vstupní_soubor\n"
-#: sunrpc/rpc_main.c:1444
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
msgstr ""
"\t%s [-abkCLNTM][-Dnázev[=hodnota]] [-i velikost] [-I [-K sekundy]]\n"
" [-Y cesta] vst_soubor\n"
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
msgstr ""
"\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o výst_soubor]\n"
" [vst_soubor]\n"
-#: sunrpc/rpc_main.c:1448
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
msgstr "\t%s [-s nettype]* [-o výst_soubor] [vst_soubor]\n"
-#: sunrpc/rpc_main.c:1449
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
msgstr "\t%s [-n netid]* [-o výst_soubor] [vst_soubor]\n"
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr "pÅ™epínaÄe:\n"
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr "-a\t\tgeneruje vÅ¡echny soubory vÄetnÄ› příkladů\n"
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr "-b\t\trežim zpětné kompatibility (generuje k´od pro SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr "-c\t\tgeneruje rutiny XDR\n"
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr "-C\t\trežim jazyka C ANSI\n"
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr "-Dnázev[=hodnota]\tdefinuje symbol (stejné jako #define)\n"
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr "-h\t\tgeneruje hlaviÄkový soubor\n"
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr "-i velikost\t\tvelikost, pÅ™i které zaÄne generovat inline kód\n"
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr "-I\t\tgeneruje kód pro podporu inetd v serveru (pro SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr "-K sekundy\tserver skonÄí po K sekundách neÄinnosti\n"
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr "-l\t\tgeneruje prázdnou kostru na straně klienta\n"
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr "-L\t\tchyby serveru budou zaznamenávány do syslogu\n"
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr "–m\t\tgeneruje prázdnou kostry na straně serveru\n"
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr "-M\t\tgeneruje MT-bezpeÄný kód\n"
+
+# netid = Network Identifier
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr "-n netid\tgeneruje kód serveru, který podporuje daný netid\n"
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr "-N\t\tpodporuje násobné argumenty a volání hodnotou\n"
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr "-o výstup\tnázev výstupního souboru\n"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr "-s typsítě\tgeneruje kód serveru, který podporuje jmenovaný typ sítě\n"
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr "-Sc\t\tgeneruje kód vzorového klienta, který používá vzdálené procedury\n"
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr "­Ss\t\tgeneruje ukázkový kód serveru, který definuje vzdálené procedury\n"
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr "-Sm\t\tgeneruje Å¡ablonu pro makefile\n"
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr "-t\t\tgeneruje rozhodovací (dispatch) tabulku RPC\n"
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr "-T\t\tgeneruje kód pro podporu rozhodovacích tabulek RPC\n"
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr "-Y cesta\t\tnázev adresáře, kde se nachází preprocesor jazyka C (cpp)\n"
+
#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
msgstr "oÄekávána konstanta nebo identifikátor"
@@ -4879,10 +5048,9 @@ msgstr "oÄekávána konstanta nebo identifikátor"
msgid "illegal character in file: "
msgstr "nepovolený znak v souboru: "
-# neukonÄená Å™etÄ›zcová konstanta
#: sunrpc/rpc_scan.c:349 sunrpc/rpc_scan.c:375
msgid "unterminated string constant"
-msgstr "neukonÄený Å™etÄ›zec"
+msgstr "neukonÄená Å™etÄ›zcová konstanta"
#: sunrpc/rpc_scan.c:381
msgid "empty char string"
@@ -4892,81 +5060,81 @@ msgstr "prázdný znakový řetězec"
msgid "preprocessor error"
msgstr "chyba preprocesoru"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
msgstr "program %lu není dostupný\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
msgstr "program %lu verze %lu není dostupný\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr "program %lu verze %lu je pÅ™ipraven a Äeká\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
msgstr "rpcinfo: s portmapperem se nelze spojit"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
msgstr "Žádné vzdálené programy nejsou registrovány.\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
msgstr " program verz proto port\n"
# Vypisováno následovně:
# IP-adresa jméno_stroje
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
-msgstr "(?)"
+msgstr "(není známo)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
msgstr "rpcinfo: všesměrové vysílání nebylo úspěšné: %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
msgstr "Lituji, nejste superuživatel\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
msgstr "rpcinfo: Registraci programu %s verze %s nelze zrušit\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
msgstr "Použití: rpcinfo [ -n Äíslo_portu ] -u poÄítaÄ Äíslo_programu [ Äíslo_verze ]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr " rpcinfo [ -n Äíslo_portu ] -t poÄítaÄ Äíslo_programu [ Äíslo_verze ]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
msgstr " rpcinfo -p [ poÄítaÄ ]\n"
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
msgstr " rpcinfo -b Äíslo_programu Äíslo_verze\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
msgstr " rpcinfo -d Äíslo_programu Äíslo_verze\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr "rpcinfo: %s je neznámá služba\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
msgstr "rpcinfo: %s je neznámý poÄítaÄ\n"
@@ -5002,11 +5170,10 @@ msgstr "registerrpc: nedostatek paměti\n"
msgid "trouble replying to prog %d\n"
msgstr "problémy při odpovídání programu %d\n"
-# nikdy neregistrovaný program (%d)
#: sunrpc/svc_simple.c:182
#, c-format
msgid "never registered prog %d\n"
-msgstr "dosud neregistrovaný program (%d)\n"
+msgstr "nikdy neregistrovaný program %d\n"
#: sunrpc/svc_tcp.c:155
msgid "svc_tcp.c - tcp socket creation problem"
@@ -5016,14 +5183,6 @@ msgstr "svc_tcp.c –  při vytváření tcp soketu vznikla chyba"
msgid "svc_tcp.c - cannot getsockname or listen"
msgstr "svc_tcp.c – při getsockname nebo listen vznikla chyba"
-#: sunrpc/svc_tcp.c:179
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create: nedostatek paměti\n"
-
-#: sunrpc/svc_tcp.c:218
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp: makefd_xprt: nedostatek paměti\n"
-
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
msgstr "svcudp_create: soket nelze vytvořit"
@@ -5032,39 +5191,35 @@ msgstr "svcudp_create: soket nelze vytvořit"
msgid "svcudp_create - cannot getsockname"
msgstr "svcudp_create - při getsockname vznikla chyba"
-#: sunrpc/svc_udp.c:152
-msgid "svcudp_create: out of memory\n"
-msgstr "svcudp_create: nedostatek paměti\n"
-
-#: sunrpc/svc_udp.c:174
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
msgstr "svcudp_create: xp_pad je pro IP_PKTINFO příliš malý\n"
-#: sunrpc/svc_udp.c:474
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
msgstr "enablecache: cache již je povolena"
-#: sunrpc/svc_udp.c:480
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
msgstr "enablecache: cache nebylo možno alokovat"
-#: sunrpc/svc_udp.c:489
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
msgstr "enablecache: nebylo možno alokovat místo pro data v cache"
-#: sunrpc/svc_udp.c:497
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
msgstr "enablecache: nebylo možno alokovat frontu pro cache"
-#: sunrpc/svc_udp.c:532
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
msgstr "cache_set: oběť nenalezena"
-#: sunrpc/svc_udp.c:543
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
msgstr "cache_set: alokace nové položky cache se nezdařila"
-#: sunrpc/svc_udp.c:550
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
msgstr "cache_set: nešlo alokovat vyrovnávací paměť pro rpc"
@@ -5076,34 +5231,6 @@ msgstr "svc_unix.c – při vytváření AF_UNIX soketu vznikla chyba"
msgid "svc_unix.c - cannot getsockname or listen"
msgstr "svc_unix.c – při getsockname nebo listen vznikla chyba"
-#: sunrpc/svc_unix.c:176
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create: nedostatek paměti\n"
-
-#: sunrpc/svc_unix.c:215
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix: makefd_xprt: nedostatek paměti\n"
-
-#: sunrpc/xdr.c:566
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes: nedostatek paměti\n"
-
-#: sunrpc/xdr.c:718
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string: nedostatek paměti\n"
-
-#: sunrpc/xdr_array.c:106
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array: nedostatek paměti\n"
-
-#: sunrpc/xdr_rec.c:156
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create: nedostatek paměti\n"
-
-#: sunrpc/xdr_ref.c:86
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_reference: nedostatek paměti\n"
-
#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
msgid "Hangup"
msgstr "Odpojen terminál (SIGHUP)"
@@ -5128,10 +5255,9 @@ msgstr "Trasovací/ladící past (SIGTRAP)"
msgid "Aborted"
msgstr "NeúspěšnÄ› ukonÄen (SIGABRT)"
-# Výjimka pohyblivé řádové Äárky?
#: sysdeps/generic/siglist.h:35 sysdeps/unix/siglist.c:34
msgid "Floating point exception"
-msgstr "Výjimka matematického koprocesoru (SIGFPE)"
+msgstr "Výjimka v pohyblivé řádové Äárce (SIGFPE)"
#: sysdeps/generic/siglist.h:36 sysdeps/unix/siglist.c:35
msgid "Killed"
@@ -5153,7 +5279,7 @@ msgstr "Neoprávněný přístup do paměti (SIGSEGV)"
#: sysdeps/generic/siglist.h:39 sysdeps/gnu/errlist.c:359
#: sysdeps/unix/siglist.c:39
msgid "Broken pipe"
-msgstr "Přerušena roura (SIGPIPE)"
+msgstr "Roura přerušena (SIGPIPE)"
#: sysdeps/generic/siglist.h:40 sysdeps/unix/siglist.c:40
msgid "Alarm clock"
@@ -5186,11 +5312,11 @@ msgstr "Potomek skonÄil (SIGCHLD)"
#: sysdeps/generic/siglist.h:47 sysdeps/unix/siglist.c:47
msgid "Stopped (tty input)"
-msgstr "Pozastaven (tty input) (SIGTTIN)"
+msgstr "Pozastaven (vstup TTY) (SIGTTIN)"
#: sysdeps/generic/siglist.h:48 sysdeps/unix/siglist.c:48
msgid "Stopped (tty output)"
-msgstr "Pozastaven (tty output) (SIGTTOU)"
+msgstr "Pozastaven (výstup TTY) (SIGTTOU)"
#: sysdeps/generic/siglist.h:49 sysdeps/unix/siglist.c:49
msgid "I/O possible"
@@ -5234,7 +5360,7 @@ msgstr "Chybné volání systému (SIGSYS)"
#: sysdeps/generic/siglist.h:66
msgid "Stack fault"
-msgstr "Porušen zásobník (SIGSTKFLT)\""
+msgstr "Porušen zásobník (SIGSTKFLT)"
#: sysdeps/generic/siglist.h:69
msgid "Information request"
@@ -5246,7 +5372,7 @@ msgstr "Výpadek napájení (SIGPWR)"
#: sysdeps/generic/siglist.h:74 sysdeps/unix/siglist.c:55
msgid "Resource lost"
-msgstr "Prostředek byl ztracen"
+msgstr "Prostředek byl ztracen (SIGLOST)"
#. TRANS Operation not permitted; only the owner of the file (or other resource)
#. TRANS or processes with special privileges can perform the operation.
@@ -5779,7 +5905,7 @@ msgstr "Ověření totožnosti bylo neúspěšné"
#. TRANS ???
#: sysdeps/gnu/errlist.c:887
msgid "Need authenticator"
-msgstr "Je tÅ™eba ověřovaÄe"
+msgstr "Je třeba ověřovatele"
#. TRANS Function not implemented. This indicates that the function called is
#. TRANS not implemented at all, either in the C library itself or in the
@@ -5828,7 +5954,7 @@ msgstr "Nevhodná operace pro proces na pozadí"
#. TRANS up, before it has connected to the file.
#: sysdeps/gnu/errlist.c:955
msgid "Translator died"
-msgstr "Překladatel zemřel"
+msgstr "PÅ™ekladaÄ zemÅ™el"
#. TRANS The experienced user will know what is wrong.
#. TRANS @c This error code is a joke. Its perror text is part of the joke.
@@ -5842,16 +5968,18 @@ msgstr "?"
msgid "You really blew it this time"
msgstr "Tentokrát jste to skuteÄnÄ› zvoral"
+# Toto je parafráze na vojenský žarogon, kdy refundace za smrt vojáka umožnila
+# pozůstalým zakoupit farmu <http://www.snopes.com/language/phrases/farm.asp>.
#. TRANS Go home and have a glass of warm, dairy-fresh milk.
#: sysdeps/gnu/errlist.c:984
msgid "Computer bought the farm"
-msgstr "PoÄítaÄ koupil farmu"
+msgstr "PoÄítaÄ odeÅ¡el do kÅ™emíkového nebe"
# VdÄ›Äná chyba?
#. TRANS This error code has no purpose.
#: sysdeps/gnu/errlist.c:993
msgid "Gratuitous error"
-msgstr "Dobrovolná chyba"
+msgstr "Svévolná chyba"
#: sysdeps/gnu/errlist.c:1001
msgid "Bad message"
@@ -5869,19 +5997,17 @@ msgstr "Pokus o spojení přes více uzlů"
msgid "No data available"
msgstr "Data nejsou k dispozici"
-# Odkaz byl zpřetrhán?
#: sysdeps/gnu/errlist.c:1033
msgid "Link has been severed"
-msgstr "Odkaz byl zniÄen"
+msgstr "Odkaz byl zpřetrhán"
#: sysdeps/gnu/errlist.c:1041
msgid "No message of desired type"
msgstr "Žádná zpráva žádaného typu"
-# Zdroje proudu vyÄerpány
#: sysdeps/gnu/errlist.c:1049
msgid "Out of streams resources"
-msgstr "Již nejsou volné proudy"
+msgstr "Zdroje proudu vyÄerpány"
#: sysdeps/gnu/errlist.c:1057
msgid "Device not a stream"
@@ -5915,20 +6041,17 @@ msgstr "Přerušené volání systému by mělo být znovu spuštěno"
msgid "Channel number out of range"
msgstr "Číslo kanálu mimo povolený rozsah"
-# Úroveň 2 není synchronizována
#: sysdeps/gnu/errlist.c:1117
msgid "Level 2 not synchronized"
-msgstr "Úroveň 2 - není synchronizováno"
+msgstr "2. vrstva není synchronizována"
-# Úroveň 3 zastavena
#: sysdeps/gnu/errlist.c:1125
msgid "Level 3 halted"
-msgstr "Úroveň 3 - zastaveno"
+msgstr "3. vrstva zastavena"
-# Úroveň 3 nastavena na výchozí hodnoty
#: sysdeps/gnu/errlist.c:1133
msgid "Level 3 reset"
-msgstr "Úroveň 3 - nastaveno na výchozí hodnoty"
+msgstr "3. vrstva nastavena na výchozí hodnoty"
#: sysdeps/gnu/errlist.c:1141
msgid "Link number out of range"
@@ -5942,10 +6065,9 @@ msgstr "OvladaÄ protokolu nepÅ™ipojen"
msgid "No CSI structure available"
msgstr "CSI struktura není dostupná"
-# Úroveň 2 zastavena
#: sysdeps/gnu/errlist.c:1165
msgid "Level 2 halted"
-msgstr "Úroveň 2 - zastaveno"
+msgstr "2. vrstva zastavena"
#: sysdeps/gnu/errlist.c:1173
msgid "Invalid exchange"
@@ -6035,34 +6157,29 @@ msgstr "Pokus o připojení příliš mnoha sdílených knihoven"
msgid "Cannot exec a shared library directly"
msgstr "Sdílenou knihovnu nelze přímo spustit"
-# Chyba roury proudů
#: sysdeps/gnu/errlist.c:1349
msgid "Streams pipe error"
-msgstr "Chyba proudové roury"
+msgstr "Chyba roury proudů"
#: sysdeps/gnu/errlist.c:1357
msgid "Structure needs cleaning"
msgstr "Struktura potřebuje opravu"
-# Nejde o pojmenovaný XENIX soubor
-# není XENIXovsky pojmenovaný typ souboru
#: sysdeps/gnu/errlist.c:1365
msgid "Not a XENIX named type file"
-msgstr "Nejde o pojmenovaný XENIX soubor"
+msgstr "Nejde o Xenixový soubor pojmenovaného typu"
#: sysdeps/gnu/errlist.c:1373
msgid "No XENIX semaphores available"
msgstr "XENIX semafory nejsou dostupné"
-# Je pojmenovaný typ souboru
#: sysdeps/gnu/errlist.c:1381
msgid "Is a named type file"
-msgstr "Je soubor zadaného typu"
+msgstr "Je soubor pojmenovaného typu"
-# Vzdálená V/V chyba
#: sysdeps/gnu/errlist.c:1389
msgid "Remote I/O error"
-msgstr "Chyba vstupu/výstupu na vzdáleném poÄítaÄi"
+msgstr "Vzdálená chyba vstupu/výstupu"
#: sysdeps/gnu/errlist.c:1397
msgid "No medium found"
@@ -6078,9 +6195,8 @@ msgstr "Požadovaný klÃ­Ä není dostupný"
#: sysdeps/gnu/errlist.c:1421
msgid "Key has expired"
-msgstr "KlÃ­Ä již expiroval"
+msgstr "KlíÄi vyprÅ¡ela platnost"
-# Odkaz byl zpřetrhán?
#: sysdeps/gnu/errlist.c:1429
msgid "Key has been revoked"
msgstr "KlÃ­Ä byl odvolán"
@@ -6155,7 +6271,7 @@ msgstr "Požadavek zrušen"
#: sysdeps/posix/gai_strerror-strs.h:14
msgid "Request not canceled"
-msgstr "Požadavak nezrušen"
+msgstr "Požadavek nezrušen"
#: sysdeps/posix/gai_strerror-strs.h:15
msgid "All requests done"
@@ -6187,76 +6303,85 @@ msgstr "%s je pro neznámý stroj %d.\n"
msgid "makecontext: does not know how to handle more than 8 arguments\n"
msgstr "makecontext: nevím, jak zpracovat více jak 8 argumentů\n"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
+"Použití: lddlibc4 SOUBOR\n"
+"\n"
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
msgid "cannot open `%s'"
msgstr "„%s“ nelze otevřít"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
msgid "cannot read header from `%s'"
msgstr "hlaviÄku ze souboru „%s“ nelze pÅ™eÄíst"
-#: timezone/zdump.c:211
+#: timezone/zdump.c:210
msgid "lacks alphabetic at start"
msgstr "na zaÄátku chybí písmeno"
-#: timezone/zdump.c:213
+#: timezone/zdump.c:212
msgid "has fewer than 3 alphabetics"
msgstr "má méně než 3 písmena"
-#: timezone/zdump.c:215
+#: timezone/zdump.c:214
msgid "has more than 6 alphabetics"
msgstr "má více něž 6 písmen"
-#: timezone/zdump.c:223
+#: timezone/zdump.c:222
msgid "differs from POSIX standard"
msgstr "nesouhlasí se standardem POSIX"
-#: timezone/zdump.c:229
+#: timezone/zdump.c:228
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
msgstr "%s: varování: zóna „%s“ zkratka „%s“ %s\n"
-#: timezone/zdump.c:280
+#: timezone/zdump.c:279
#, c-format
msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
msgstr "%s: Použití: %s [--version] [-v] [-c [DOLNÃ_ROK,]HORNÃ_ROK ] ÄŒASOVÉ_PÃSMO…\n"
-#: timezone/zdump.c:297
+#: timezone/zdump.c:296
#, c-format
msgid "%s: wild -c argument %s\n"
msgstr "%s: divoký argument -c: %s\n"
-#: timezone/zdump.c:388
+#: timezone/zdump.c:387
msgid "Error writing to standard output"
msgstr "Chyba při psaní na standardní výstup"
-#: timezone/zdump.c:411
+#: timezone/zdump.c:410
#, c-format
msgid "%s: use of -v on system with floating time_t other than float or double\n"
msgstr "%s: použití –v na systému s desetinnou strukturou time_t jinou než než s float nebo double\n"
-#: timezone/zic.c:392
+#: timezone/zic.c:388
#, c-format
msgid "%s: Memory exhausted: %s\n"
msgstr "%s: Paměť vyÄerpána: %s\n"
-#: timezone/zic.c:451
+#: timezone/zic.c:434
#, c-format
msgid "\"%s\", line %d: %s"
msgstr "„%s“, řádek %d: %s"
-#: timezone/zic.c:454
+#: timezone/zic.c:437
#, c-format
msgid " (rule from \"%s\", line %d)"
msgstr " (pravidlo z „%s“, řádek %d)"
-#: timezone/zic.c:466
+#: timezone/zic.c:449
msgid "warning: "
msgstr "varování: "
-#: timezone/zic.c:476
+#: timezone/zic.c:459
#, c-format
msgid ""
"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
@@ -6266,340 +6391,416 @@ msgstr ""
"\t[-p POSIXOVÃ_PRAVIDLA] [-d ADRESÃŘ] [-L PŘESTUPNÃCH_SEKUND]\n"
"\t[-y TYP_ROKU] [SOUBOR…]\n"
-#: timezone/zic.c:511
+#: timezone/zic.c:494
msgid "wild compilation-time specification of zic_t"
msgstr "divoké urÄení zic_t v dobÄ› pÅ™ekladu"
-#: timezone/zic.c:528
+#: timezone/zic.c:511
#, c-format
msgid "%s: More than one -d option specified\n"
msgstr "%s: PÅ™epínaÄ -d zadán více než jednou\n"
-#: timezone/zic.c:538
+#: timezone/zic.c:521
#, c-format
msgid "%s: More than one -l option specified\n"
msgstr "%s: PÅ™epínaÄ -l zadán více než jednou\n"
-#: timezone/zic.c:548
+#: timezone/zic.c:531
#, c-format
msgid "%s: More than one -p option specified\n"
msgstr "%s: PÅ™epínaÄ -p zadán více než jednou\n"
-#: timezone/zic.c:558
+#: timezone/zic.c:541
#, c-format
msgid "%s: More than one -y option specified\n"
msgstr "%s: PÅ™epínaÄ -y zadán více než jednou\n"
-#: timezone/zic.c:568
+#: timezone/zic.c:551
#, c-format
msgid "%s: More than one -L option specified\n"
msgstr "%s: PÅ™epínaÄ -L zadán více než jednou\n"
-#: timezone/zic.c:617
+#: timezone/zic.c:600
msgid "link to link"
msgstr "odkaz na odkaz"
-#: timezone/zic.c:682
+#: timezone/zic.c:665
msgid "hard link failed, symbolic link used"
msgstr "pevný odkaz nevytvořen, použit symbolický"
-#: timezone/zic.c:690
+#: timezone/zic.c:673
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
msgstr "%s: Odkaz na %s z %s nelze vytvořit: %s\n"
-#: timezone/zic.c:762 timezone/zic.c:764
+#: timezone/zic.c:745 timezone/zic.c:747
msgid "same rule name in multiple files"
msgstr "stejné jméno pravidla je použito ve více souborech"
-#: timezone/zic.c:805
+#: timezone/zic.c:788
msgid "unruly zone"
msgstr "Äasové pásmo bez pravidel"
# Za %s se nic nedosazuje, zprava je vypsana tak jak je.
-#: timezone/zic.c:812
+# XXX: According source code "%s" should be "%%"
+#: timezone/zic.c:795
#, c-format
msgid "%s in ruleless zone"
msgstr "%s v Äasovém pásmu bez pravidel"
-#: timezone/zic.c:833
+#: timezone/zic.c:816
msgid "standard input"
msgstr "standardní vstup"
-#: timezone/zic.c:838
+#: timezone/zic.c:821
#, c-format
msgid "%s: Can't open %s: %s\n"
msgstr "%s: %s nelze otevřít: %s\n"
-#: timezone/zic.c:849
+#: timezone/zic.c:832
msgid "line too long"
msgstr "řádek je příliš dlouhý"
-#: timezone/zic.c:869
+#: timezone/zic.c:852
msgid "input line of unknown type"
msgstr "vstupní řádek neznámého typu"
-#: timezone/zic.c:885
+#: timezone/zic.c:868
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
msgstr "%s: řádek Leap v souboru nepřestupných sekund %s\n"
-#: timezone/zic.c:892 timezone/zic.c:1329 timezone/zic.c:1351
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
msgstr "%s: fatální chyba: Nepřípustná l_hodnota %d\n"
-#: timezone/zic.c:900
+#: timezone/zic.c:883
#, c-format
msgid "%s: Error reading %s\n"
msgstr "%s: Chyba pÅ™i Ätení %s\n"
-#: timezone/zic.c:907
+#: timezone/zic.c:890
#, c-format
msgid "%s: Error closing %s: %s\n"
msgstr "%s: Chyba při uzavírání %s: %s\n"
-#: timezone/zic.c:912
+#: timezone/zic.c:895
msgid "expected continuation line not found"
msgstr "oÄekávaný pokraÄovací řádek nebyl nalezen"
-#: timezone/zic.c:956 timezone/zic.c:2489 timezone/zic.c:2508
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
msgid "time overflow"
msgstr "pÅ™eteÄení Äasu"
-#: timezone/zic.c:960
+#: timezone/zic.c:943
msgid "24:00 not handled by pre-1998 versions of zic"
msgstr "verze zicu před rokem 1998 nepodporovaly 24:00"
-#: timezone/zic.c:963
+#: timezone/zic.c:946
msgid "values over 24 hours not handled by pre-2007 versions of zic"
msgstr "verze zicu před rokem 2007 nepodporovaly hodnoty nad 24 hodin"
-#: timezone/zic.c:976
+#: timezone/zic.c:959
msgid "wrong number of fields on Rule line"
msgstr "Å¡patný poÄet položek v řádku Rule"
-#: timezone/zic.c:980
+#: timezone/zic.c:963
msgid "nameless rule"
msgstr "bezejmenné pravidlo"
-#: timezone/zic.c:985
+#: timezone/zic.c:968
msgid "invalid saved time"
msgstr "neplatný uložený Äas"
-#: timezone/zic.c:1006
+#: timezone/zic.c:989
msgid "wrong number of fields on Zone line"
msgstr "Å¡patný poÄet položek v řádku Zone"
-#: timezone/zic.c:1012
+#: timezone/zic.c:995
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
msgstr "Řádek „Zone %s“ a volba -l se navzájem vyluÄují"
-#: timezone/zic.c:1020
+#: timezone/zic.c:1003
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
msgstr "Řádek „Zone %s“ a volba -p se navzájem vyluÄují"
-#: timezone/zic.c:1032
+#: timezone/zic.c:1015
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
msgstr "duplicitní oznaÄení Äasového pásma %s (soubor „%s“, řádek %d)"
-#: timezone/zic.c:1048
+#: timezone/zic.c:1031
msgid "wrong number of fields on Zone continuation line"
msgstr "Å¡patný poÄet položek v pokraÄovacím řádku Zone"
-#: timezone/zic.c:1088
+#: timezone/zic.c:1071
msgid "invalid UTC offset"
msgstr "neplatné posunutí vůÄi UTC"
-#: timezone/zic.c:1091
+#: timezone/zic.c:1074
msgid "invalid abbreviation format"
msgstr "neplatný formát zkratky"
-#: timezone/zic.c:1120
+#: timezone/zic.c:1103
msgid "Zone continuation line end time is not after end time of previous line"
msgstr "Koncový Äas pokraÄovacího řádku Zone není vÄ›tší než koncový Äas pÅ™edcházejícího řádku"
-#: timezone/zic.c:1148
+#: timezone/zic.c:1131
msgid "wrong number of fields on Leap line"
msgstr "Å¡patný poÄet položek v řádku Leap"
-#: timezone/zic.c:1157
+#: timezone/zic.c:1140
msgid "invalid leaping year"
msgstr "neplatný přestupný rok"
-#: timezone/zic.c:1177 timezone/zic.c:1283
+#: timezone/zic.c:1160 timezone/zic.c:1266
msgid "invalid month name"
msgstr "neplatný název měsíce"
-#: timezone/zic.c:1190 timezone/zic.c:1396 timezone/zic.c:1410
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
msgid "invalid day of month"
msgstr "neplatný den měsíce"
-#: timezone/zic.c:1195
+#: timezone/zic.c:1178
msgid "time before zero"
msgstr "Äas menší než nula"
-#: timezone/zic.c:1199
+#: timezone/zic.c:1182
msgid "time too small"
msgstr "Äas je příliÅ¡ malý"
-#: timezone/zic.c:1203
+#: timezone/zic.c:1186
msgid "time too large"
msgstr "Äas je příliÅ¡ velký"
-#: timezone/zic.c:1207 timezone/zic.c:1312
+#: timezone/zic.c:1190 timezone/zic.c:1295
msgid "invalid time of day"
msgstr "neplatný denní Äas"
-#: timezone/zic.c:1226
+#: timezone/zic.c:1209
msgid "illegal CORRECTION field on Leap line"
msgstr "chybná položka KOREKCE na řádku Leap"
-#: timezone/zic.c:1231
+#: timezone/zic.c:1214
msgid "illegal Rolling/Stationary field on Leap line"
msgstr "chybná položka Rolling/Stationary na řádku Leap"
-#: timezone/zic.c:1247
+#: timezone/zic.c:1230
msgid "wrong number of fields on Link line"
msgstr "Å¡patný poÄet položek v řádku Link"
-#: timezone/zic.c:1251
+#: timezone/zic.c:1234
msgid "blank FROM field on Link line"
msgstr "prázdná položka OD v řádku Link"
-#: timezone/zic.c:1255
+#: timezone/zic.c:1238
msgid "blank TO field on Link line"
msgstr "prázdná položka DO v řádku Link"
-#: timezone/zic.c:1333
+#: timezone/zic.c:1316
msgid "invalid starting year"
msgstr "neplatný poÄáteÄní rok"
-#: timezone/zic.c:1355
+#: timezone/zic.c:1338
msgid "invalid ending year"
msgstr "neplatný koncový rok"
-#: timezone/zic.c:1359
+#: timezone/zic.c:1342
msgid "starting year greater than ending year"
msgstr "poÄáteÄní rok vÄ›tší než koncový"
-#: timezone/zic.c:1366
+#: timezone/zic.c:1349
msgid "typed single year"
msgstr "zadán jeden rok"
-#: timezone/zic.c:1401
+#: timezone/zic.c:1384
msgid "invalid weekday name"
msgstr "neplatný název dne"
-#: timezone/zic.c:1579
+#: timezone/zic.c:1562
#, c-format
msgid "%s: Can't remove %s: %s\n"
msgstr "%s: %s nelze smazat: %s\n"
-#: timezone/zic.c:1589
+#: timezone/zic.c:1572
#, c-format
msgid "%s: Can't create %s: %s\n"
msgstr "%s: %s nelze vytvořit: %s\n"
-#: timezone/zic.c:1739
+#: timezone/zic.c:1722
#, c-format
msgid "%s: Error writing %s\n"
msgstr "%s: Chyba při zápisu %s\n"
-#: timezone/zic.c:2031
+#: timezone/zic.c:2015
msgid "no POSIX environment variable for zone"
msgstr "žádná proměnná prostředí pro zónu podle POSIXU"
-#: timezone/zic.c:2185
+#: timezone/zic.c:2172
msgid "can't determine time zone abbreviation to use just after until time"
msgstr "zkratku Äasového pásma pro použití ihned po Äasovém údaji nelze nelézt"
-#: timezone/zic.c:2231
+#: timezone/zic.c:2218
msgid "too many transitions?!"
msgstr "příliš mnoho přechodů?!"
-#: timezone/zic.c:2250
+#: timezone/zic.c:2237
msgid "internal error - addtype called with bad isdst"
msgstr "vnitřní chyba – addtype volán s chybným isdst"
-#: timezone/zic.c:2254
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad ttisstd"
msgstr "vnitřní chyba – addtype volán s chybným ttisstd"
-#: timezone/zic.c:2258
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisgmt"
msgstr "vnitřní chyba – addtype volán s chybným ttisgmt"
-#: timezone/zic.c:2277
+#: timezone/zic.c:2264
msgid "too many local time types"
msgstr "příliÅ¡ mnoho lokálních Äasových typů"
-#: timezone/zic.c:2281
+#: timezone/zic.c:2268
msgid "UTC offset out of range"
msgstr "posun od UTC mimo povolený rozsah"
-#: timezone/zic.c:2309
+#: timezone/zic.c:2296
msgid "too many leap seconds"
msgstr "příliš mnoho přestupných sekund"
-#: timezone/zic.c:2315
+#: timezone/zic.c:2302
msgid "repeated leap second moment"
msgstr "přestupná sekunda opakována"
-#: timezone/zic.c:2367
+#: timezone/zic.c:2354
msgid "Wild result from command execution"
msgstr "Vykonaný příkaz dal podivný výsledek"
-#: timezone/zic.c:2368
+#: timezone/zic.c:2355
#, c-format
msgid "%s: command was '%s', result was %d\n"
msgstr "%s: příkaz byl „%s“, a jeho výsledek byl %d\n"
-#: timezone/zic.c:2466
+#: timezone/zic.c:2453
msgid "Odd number of quotation marks"
msgstr "Lichý poÄet uvozovek"
-#: timezone/zic.c:2555
+#: timezone/zic.c:2542
msgid "use of 2/29 in non leap-year"
msgstr "použití 29. února v nepřestupném roce"
-#: timezone/zic.c:2590
+#: timezone/zic.c:2577
msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
msgstr "pravidlo zasahuje za zaÄátek/konec mÄ›síce – verze zicu pÅ™ed rokem 2004 nebudou fungovat"
-#: timezone/zic.c:2622
+#: timezone/zic.c:2609
msgid "time zone abbreviation lacks alphabetic at start"
msgstr "zkratka Äasové zóny nezaÄíná písmenem"
-#: timezone/zic.c:2624
+#: timezone/zic.c:2611
msgid "time zone abbreviation has more than 3 alphabetics"
msgstr "zkratka Äasové zóny má více než 3 písmena"
-#: timezone/zic.c:2626
+#: timezone/zic.c:2613
msgid "time zone abbreviation has too many alphabetics"
msgstr "zkratka Äasové zóny má příliÅ¡ mnoho písmen"
-#: timezone/zic.c:2636
+#: timezone/zic.c:2623
msgid "time zone abbreviation differs from POSIX standard"
msgstr "zkratka Äasové zóny nesouhlasí se standardem POSIX"
-#: timezone/zic.c:2648
+#: timezone/zic.c:2635
msgid "too many, or too long, time zone abbreviations"
msgstr "příliÅ¡ mnoho nebo příliÅ¡ dlouhé zkratky Äasového pásma"
-#: timezone/zic.c:2689
+#: timezone/zic.c:2676
#, c-format
msgid "%s: Can't create directory %s: %s\n"
msgstr "%s: Adresář %s nelze vytvořit: %s\n"
-#: timezone/zic.c:2711
+#: timezone/zic.c:2698
#, c-format
msgid "%s: %d did not sign extend correctly\n"
msgstr "%s: při přetypování %d došlo k chybě znaménka\n"
+#~ msgid "cannot create searchlist"
+#~ msgstr "vyhledávací seznam nelze vytvořit"
+
+#~ msgid ""
+#~ "Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "NaÄte a zobrazí profilovací data sdíleného objektu.\vNávod, jak nahlásit chybu, naleznete na:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#~ msgid "%s: stopping date is invalid in string %Zd in `era' field"
+#~ msgstr "%s: nepovolené koncové datum v řetězci %Zd položky „era“"
+
+#~ msgid ""
+#~ "Get locale-specific information.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "Vrátí informace o národním prostředí.\vNávod, jak nahlásit chybu, naleznete na:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#~ msgid ""
+#~ "Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "Získá položky z administrativní databáze.\vNávod, jak nahlásit chybu, naleznete na:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+
+# Rozdíl mezi 'illegal option' a 'invalid option' není žádný. To která zpráva
+# je vypisována je dáno tím, zda má být výstup podle normy 'POSIX' nebo ne.
+# 'Illegal option' je POSIXové.
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: neznámý pÅ™epínaÄ -- %c\n"
+
+#~ msgid "authunix_create: out of memory\n"
+#~ msgstr "authunix_create: nedostatek paměti\n"
+
+#~ msgid "clnttcp_create: out of memory\n"
+#~ msgstr "clnttcp_create: nedostatek paměti\n"
+
+#~ msgid "clntudp_create: out of memory\n"
+#~ msgstr "clntudp_create: nedostatek paměti\n"
+
+#~ msgid "clntunix_create: out of memory\n"
+#~ msgstr "clntunix_create: nedostatek paměti\n"
+
+#~ msgid "svctcp_create: out of memory\n"
+#~ msgstr "svctcp_create: nedostatek paměti\n"
+
+#~ msgid "svc_tcp: makefd_xprt: out of memory\n"
+#~ msgstr "svc_tcp: makefd_xprt: nedostatek paměti\n"
+
+#~ msgid "svcudp_create: out of memory\n"
+#~ msgstr "svcudp_create: nedostatek paměti\n"
+
+#~ msgid "svcunix_create: out of memory\n"
+#~ msgstr "svcunix_create: nedostatek paměti\n"
+
+#~ msgid "svc_unix: makefd_xprt: out of memory\n"
+#~ msgstr "svc_unix: makefd_xprt: nedostatek paměti\n"
+
+#~ msgid "xdr_bytes: out of memory\n"
+#~ msgstr "xdr_bytes: nedostatek paměti\n"
+
+#~ msgid "xdr_string: out of memory\n"
+#~ msgstr "xdr_string: nedostatek paměti\n"
+
+#~ msgid "xdr_array: out of memory\n"
+#~ msgstr "xdr_array: nedostatek paměti\n"
+
+#~ msgid "xdrrec_create: out of memory\n"
+#~ msgstr "xdrrec_create: nedostatek paměti\n"
+
+#~ msgid "xdr_reference: out of memory\n"
+#~ msgstr "xdr_reference: nedostatek paměti\n"
+
#~ msgid "Can't remove old temporary cache file %s"
#~ msgstr "Starý doÄasný soubor s keší „%s“ nelze odstranit"
@@ -6820,9 +7021,6 @@ msgstr "%s: při přetypování %d došlo k chybě znaménka\n"
#~ msgid "File table overflow"
#~ msgstr "PÅ™eteÄení tabulky souborů"
-#~ msgid "Get locale-specific information."
-#~ msgstr "Získání urÄitých informací o národním prostÅ™edí."
-
#~ msgid "Haven't found \"%d\" in group cache!"
#~ msgstr "\"%d\" nebylo v cache paměti pro skupiny nalezeno!"
@@ -6883,9 +7081,6 @@ msgstr "%s: při přetypování %d došlo k chybě znaménka\n"
#~ msgid "Out of stream resources"
#~ msgstr "Již nejsou volné proudy"
-#~ msgid "Read and display shared object profiling data"
-#~ msgstr "PÅ™eÄtení a vypsání profilovacích dat sdíleného objektu."
-
#~ msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
#~ msgstr ""
#~ " Chyby v programu oznamujte pomocí skriptu `glibcbug' na adresu <bugs@gnu.org>\n"
@@ -6972,10 +7167,6 @@ msgstr "%s: při přetypování %d došlo k chybě znaménka\n"
#~ msgid "get_myaddress: ioctl (get interface configuration)"
#~ msgstr "get_myaddress: ioctl (Ätení konfigurace rozhraní)"
-# getent - získává záznamy z administrativní databáze.
-#~ msgid "getent - get entries from administrative database."
-#~ msgstr "Získává záznamy z administrativní databáze."
-
#~ msgid "illegal character constant in string"
#~ msgstr "nepovolený znak v řetězci"
diff --git a/po/da.po b/po/da.po
index 73f077ec15..e823bfcc6b 100644
--- a/po/da.po
+++ b/po/da.po
@@ -1,338 +1,1316 @@
+# translation of libc-2.9.90.po to Danish
# Danish messages for GNU libc.
-# Copyright (C) 1996 Free Software Foundation, Inc.
-# Keld Simonsen <keld@dkuug.dk>, 2000-2002.
+# Copyright (C) 1996, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the glibc package.
#
+# Keld Simonsen <keld@dkuug.dk>, 2000-2002, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.3.2\n"
-"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-"PO-Revision-Date: 2003-03-08 20:18+01:00\n"
+"Project-Id-Version: libc-2.9.90\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-05-20 11:37+0200\n"
"Last-Translator: Keld Simonsen <keld@dkuug.dk>\n"
-"Language-Team: Danish <dansk@klid.dk>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: sysdeps/generic/siglist.h:29 stdio-common/../sysdeps/unix/siglist.c:27
-msgid "Hangup"
-msgstr "Læg på (SIGHUP)"
+#: argp/argp-help.c:228
+#, c-format
+msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
+msgstr "%.*s: ARGP_HELP_FMT-parameteren kræver en værdi"
-#: sysdeps/generic/siglist.h:30 stdio-common/../sysdeps/unix/siglist.c:28
-msgid "Interrupt"
-msgstr "Afbrudt"
+#: argp/argp-help.c:238
+#, c-format
+msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
+msgstr "%.*s: Ukendt ARGP_HELP_FMT-parameter"
-#: sysdeps/generic/siglist.h:31 stdio-common/../sysdeps/unix/siglist.c:29
-msgid "Quit"
-msgstr "Afslut"
+#: argp/argp-help.c:251
+#, c-format
+msgid "Garbage in ARGP_HELP_FMT: %s"
+msgstr "Snavs i ARGP_HELP_FMT: %s"
-#: sysdeps/generic/siglist.h:32 stdio-common/../sysdeps/unix/siglist.c:30
-msgid "Illegal instruction"
-msgstr "Ulovlig instruktion (SIGILL)"
+#: argp/argp-help.c:1215
+msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
+msgstr "Obligatoriske eller frivillige argumenter til lange flag er også obligatoriske eller frivillige for tilsvarende korte flag."
-#: sysdeps/generic/siglist.h:33 stdio-common/../sysdeps/unix/siglist.c:31
-msgid "Trace/breakpoint trap"
-msgstr "Sporings-/stoppunkts-fælde"
+#: argp/argp-help.c:1601
+msgid "Usage:"
+msgstr "Brug:"
-#: sysdeps/generic/siglist.h:34
-msgid "Aborted"
-msgstr "Afbrudt (SIGABRT)"
+#: argp/argp-help.c:1605
+msgid " or: "
+msgstr " eller: "
-#: sysdeps/generic/siglist.h:35 stdio-common/../sysdeps/unix/siglist.c:34
-msgid "Floating point exception"
-msgstr "Undtagelsestilfælde ved flydendetals-operation"
+#: argp/argp-help.c:1617
+msgid " [OPTION...]"
+msgstr " [FLAG...]"
-#: sysdeps/generic/siglist.h:36 stdio-common/../sysdeps/unix/siglist.c:35
-msgid "Killed"
-msgstr "Dræbt"
+#: argp/argp-help.c:1644
+#, c-format
+msgid "Try `%s --help' or `%s --usage' for more information.\n"
+msgstr "Prøv '%s --help' eller '%s --usage' for mere information.\n"
-#: sysdeps/generic/siglist.h:37 stdio-common/../sysdeps/unix/siglist.c:36
-msgid "Bus error"
-msgstr "Busfejl"
+#: argp/argp-help.c:1672
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Rapportér fejl til %s.\n"
-#: sysdeps/generic/siglist.h:38 stdio-common/../sysdeps/unix/siglist.c:37
-msgid "Segmentation fault"
-msgstr "Lagersegmentfejl"
+#: argp/argp-parse.c:102
+msgid "Give this help list"
+msgstr "Giv denne hjælpeliste"
-#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
-#. TRANS Every library function that returns this error code also generates a
-#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled
-#. TRANS or blocked. Thus, your program will never actually see @code{EPIPE}
-#. TRANS unless it has handled or blocked @code{SIGPIPE}.
-#: sysdeps/generic/siglist.h:39 stdio-common/../sysdeps/gnu/errlist.c:351
-#: stdio-common/../sysdeps/unix/siglist.c:39
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:62
-msgid "Broken pipe"
-msgstr "Røret blev brudt"
+#: argp/argp-parse.c:103
+msgid "Give a short usage message"
+msgstr "Giv en kort brugsmeddelelse"
-#: sysdeps/generic/siglist.h:40 stdio-common/../sysdeps/unix/siglist.c:40
-msgid "Alarm clock"
-msgstr "Alarmen gik"
+#: argp/argp-parse.c:104
+msgid "Set the program name"
+msgstr "Angiv programnavnet"
-#: sysdeps/generic/siglist.h:41 stdio-common/../sysdeps/unix/siglist.c:41
-msgid "Terminated"
-msgstr "Termineret"
+#: argp/argp-parse.c:106
+msgid "Hang for SECS seconds (default 3600)"
+msgstr "Hæng i SEK sekunder (forvalgt 3600)"
-#: sysdeps/generic/siglist.h:42 stdio-common/../sysdeps/unix/siglist.c:42
-msgid "Urgent I/O condition"
-msgstr "Kritisk I/O-tilstand"
+#: argp/argp-parse.c:167
+msgid "Print program version"
+msgstr "Skriv programversion"
-#: sysdeps/generic/siglist.h:43 stdio-common/../sysdeps/unix/siglist.c:43
-msgid "Stopped (signal)"
-msgstr "Stoppet (signal)"
+#: argp/argp-parse.c:183
+msgid "(PROGRAM ERROR) No version known!?"
+msgstr "(PROGRAMFEJL) Ingen version kendt!?"
-#: sysdeps/generic/siglist.h:44 stdio-common/../sysdeps/unix/siglist.c:44
-msgid "Stopped"
-msgstr "Stoppet"
+#: argp/argp-parse.c:623
+#, c-format
+msgid "%s: Too many arguments\n"
+msgstr "%s: For mange argumenter\n"
-#: sysdeps/generic/siglist.h:45 stdio-common/../sysdeps/unix/siglist.c:45
-msgid "Continued"
-msgstr "Fortsættes"
+#: argp/argp-parse.c:766
+msgid "(PROGRAM ERROR) Option should have been recognized!?"
+msgstr "(PROGRAMFEJL) Flag skulle have været genkendt!?"
-#: sysdeps/generic/siglist.h:46 stdio-common/../sysdeps/unix/siglist.c:46
-msgid "Child exited"
-msgstr "Barnet afsluttet"
+#: assert/assert-perr.c:57
+#, c-format
+msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
+msgstr "%s%s%s:%u: %s%sUventet fejl: %s.\n"
-#: sysdeps/generic/siglist.h:47 stdio-common/../sysdeps/unix/siglist.c:47
-msgid "Stopped (tty input)"
-msgstr "Stoppet (ville læse fra tty)"
+#: assert/assert.c:57
+#, c-format
+msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
+msgstr "%s%s%s:%u: %s%sForudsætningen (assertion) '%s' fejlede.\n"
-#: sysdeps/generic/siglist.h:48 stdio-common/../sysdeps/unix/siglist.c:48
-msgid "Stopped (tty output)"
-msgstr "Stoppet (ville skrive til tty)"
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
+msgid "NAME"
+msgstr "NAVN"
-#: sysdeps/generic/siglist.h:49 stdio-common/../sysdeps/unix/siglist.c:49
-msgid "I/O possible"
-msgstr "I/O mulig"
+#: catgets/gencat.c:111
+msgid "Create C header file NAME containing symbol definitions"
+msgstr "Opret C-headerfil NAVN som indeholder symboldefinitioner"
-#: sysdeps/generic/siglist.h:50 stdio-common/../sysdeps/unix/siglist.c:50
-msgid "CPU time limit exceeded"
-msgstr "Begrænsning af CPU-tid overskredet"
+#: catgets/gencat.c:113
+msgid "Do not use existing catalog, force new output file"
+msgstr "Brug ikke eksisterende katalog, tving oprettelse af ny uddatafil"
-#: sysdeps/generic/siglist.h:51 stdio-common/../sysdeps/unix/siglist.c:51
-msgid "File size limit exceeded"
-msgstr "Grænse for filstørrelse overskredet"
+#: catgets/gencat.c:114 nss/makedb.c:61
+msgid "Write output to file NAME"
+msgstr "Skriv uddata til fil NAVN"
-#: sysdeps/generic/siglist.h:52 stdio-common/../sysdeps/unix/siglist.c:52
-msgid "Virtual timer expired"
-msgstr "Virtuel tidsgrænse overskredet"
+#: catgets/gencat.c:119
+msgid ""
+"Generate message catalog.\vIf INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
+"is -, output is written to standard output.\n"
+msgstr ""
+"Generér meddelelseskatalog.\\vHvis INDFIL er '-' læses inddata fra standard ind.\n"
+"Hvis UDFIL er '-' skrives uddata til standard ud.\n"
-#: sysdeps/generic/siglist.h:53 stdio-common/../sysdeps/unix/siglist.c:53
-msgid "Profiling timer expired"
-msgstr "Profileringstiden udløb"
+#: catgets/gencat.c:124
+msgid ""
+"-o OUTPUT-FILE [INPUT-FILE]...\n"
+"[OUTPUT-FILE [INPUT-FILE]...]"
+msgstr ""
+"-o UDFIL [INDFIL]...\n"
+"[UDFIL [INDFIL]...]"
-#: sysdeps/generic/siglist.h:54 stdio-common/../sysdeps/unix/siglist.c:54
-msgid "Window changed"
-msgstr "Vinduet blev ændret"
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
+msgid ""
+"For bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgstr ""
+"For fejlrapporterings-instruktioner, se:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+"Rapportér fejl eller synspunkter på oversættelsen til <dansk@dansk-gruppen.dk>.\n"
+
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
+#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
+#, c-format
+msgid ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"This is free software; see the source for copying conditions. There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+msgstr ""
+"Ophavsrettigheder (C) %s Free Software Foundation, Inc.\n"
+"Dette er frit programmel. Se kildekoden for kopieringsbetingelser.\n"
+"Programmellet har ingen garanti, ikke en gang for SALGBARHED eller EGNETHED\n"
+"TIL NOGEN SPECIEL OPGAVE.\n"
-#: sysdeps/generic/siglist.h:55 stdio-common/../sysdeps/unix/siglist.c:56
-msgid "User defined signal 1"
-msgstr "Brugerdefineret signal 1"
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Skrevet af %s.\n"
-#: sysdeps/generic/siglist.h:56 stdio-common/../sysdeps/unix/siglist.c:57
-msgid "User defined signal 2"
-msgstr "Brugerdefineret signal 2"
+#: catgets/gencat.c:282
+msgid "*standard input*"
+msgstr "*standard ind*"
-#: sysdeps/generic/siglist.h:60 stdio-common/../sysdeps/unix/siglist.c:33
-msgid "EMT trap"
-msgstr "Emulatorfælde"
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
+#: nss/makedb.c:170
+#, c-format
+msgid "cannot open input file `%s'"
+msgstr "kan ikke åbne indfil '%s'"
-#: sysdeps/generic/siglist.h:63 stdio-common/../sysdeps/unix/siglist.c:38
-msgid "Bad system call"
-msgstr "Ugyldigt systemkald"
+#: catgets/gencat.c:417 catgets/gencat.c:494
+msgid "illegal set number"
+msgstr "ugyldigt sæt-nummer"
-#: sysdeps/generic/siglist.h:66
-msgid "Stack fault"
-msgstr "Stakfejl"
+#: catgets/gencat.c:444
+msgid "duplicate set definition"
+msgstr "duplikér definition af sæt"
-#: sysdeps/generic/siglist.h:69
-msgid "Information request"
-msgstr "Informationsforespørgsel (SIGINFO)"
+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+msgid "this is the first definition"
+msgstr "dette er den første definition"
-#: sysdeps/generic/siglist.h:71
-msgid "Power failure"
-msgstr "Strømmen gik"
+#: catgets/gencat.c:522
+#, c-format
+msgid "unknown set `%s'"
+msgstr "ukendt sæt '%s'"
-#: sysdeps/generic/siglist.h:74 stdio-common/../sysdeps/unix/siglist.c:55
-msgid "Resource lost"
-msgstr "Resurse tabt"
+#: catgets/gencat.c:563
+msgid "invalid quote character"
+msgstr "ugyldigt anførselstegn"
-#: sysdeps/mach/hurd/mips/dl-machine.c:68
-#: string/../sysdeps/mach/_strerror.c:57
-msgid "Error in unknown error system: "
-msgstr "Fejl i ukendt fejlsystem: "
+#: catgets/gencat.c:576
+#, c-format
+msgid "unknown directive `%s': line ignored"
+msgstr "ukendt nøgleord '%s': linje ignoreret"
-#: sysdeps/mach/hurd/mips/dl-machine.c:83
-#: string/../sysdeps/generic/_strerror.c:44
-#: string/../sysdeps/mach/_strerror.c:87
-msgid "Unknown error "
-msgstr "Ukendt fejl "
+#: catgets/gencat.c:621
+msgid "duplicated message number"
+msgstr "duplikeret meddelelsesnummer"
+
+#: catgets/gencat.c:674
+msgid "duplicated message identifier"
+msgstr "duplikeret meddelelsesidentifikator"
+
+#: catgets/gencat.c:731
+msgid "invalid character: message ignored"
+msgstr "ugyldigt tegn: besked ignoreret"
+
+#: catgets/gencat.c:774
+msgid "invalid line"
+msgstr "ugyldig linje"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: catgets/gencat.c:828
+msgid "malformed line ignored"
+msgstr "fejlagtig linje ignoreret"
+
+#: catgets/gencat.c:992 catgets/gencat.c:1033 nss/makedb.c:183
#, c-format
-msgid "cannot open `%s'"
-msgstr "kan ikke åbne '%s'"
+msgid "cannot open output file `%s'"
+msgstr "kan ikke åbne uddatafil '%s'"
+
+#: catgets/gencat.c:1195 locale/programs/linereader.c:560
+msgid "invalid escape sequence"
+msgstr "ugyldig undvigetegnsekvens"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: catgets/gencat.c:1217
+msgid "unterminated message"
+msgstr "uafsluttet meddelelse"
+
+#: catgets/gencat.c:1241
#, c-format
-msgid "cannot read header from `%s'"
-msgstr "kan ikke læse hoved fra '%s'"
+msgid "while opening old catalog file"
+msgstr "ved åbning af den gamle katalogfil"
-#: iconv/iconv_charmap.c:159 iconv/iconv_prog.c:293 catgets/gencat.c:288
+#: catgets/gencat.c:1332
#, c-format
-msgid "cannot open input file `%s'"
-msgstr "kan ikke åbne indfil '%s'"
+msgid "conversion modules not available"
+msgstr "konverteringsmoduler ikke tilgængelige"
+
+#: catgets/gencat.c:1358
+#, c-format
+msgid "cannot determine escape character"
+msgstr "kan ikke bestemme undvigetegn"
+
+#: debug/pcprofiledump.c:53
+msgid "Don't buffer output"
+msgstr "Bufr ikke resultatet"
+
+#: debug/pcprofiledump.c:58
+msgid "Dump information generated by PC profiling."
+msgstr "Gem information genereret af PC-profilering."
+
+#: debug/pcprofiledump.c:61
+msgid "[FILE]"
+msgstr "[FIL]"
+
+#: debug/pcprofiledump.c:108
+#, c-format
+msgid "cannot open input file"
+msgstr "kan ikke åbne indfil"
+
+#: debug/pcprofiledump.c:115
+#, c-format
+msgid "cannot read header"
+msgstr "kan ikke læse hoved"
+
+#: debug/pcprofiledump.c:179
+#, c-format
+msgid "invalid pointer size"
+msgstr "ugyldig størrelse for pegere"
+
+#: debug/xtrace.sh:27 debug/xtrace.sh:45
+msgid "Usage: xtrace [OPTION]... PROGRAM [PROGRAMOPTION]...\\n"
+msgstr "Brug: xtrace [FLAG]... PROGRAM [PROGRAMFLAG}...\\n"
+
+#: debug/xtrace.sh:33
+msgid "Try \\`xtrace --help' for more information.\\n"
+msgstr "Prøv \\'xtrace --help' for mere information.\\n"
+
+#: debug/xtrace.sh:39
+msgid "xtrace: option \\`$1' requires an argument.\\n"
+msgstr "xtrace: flaget '$1' skal have et argument.\\n"
+
+#: debug/xtrace.sh:46
+msgid ""
+"Trace execution of program by printing currently executed function.\n"
+"\n"
+" --data=FILE Don't run the program, just print the data from FILE.\n"
+"\n"
+" -?,--help Print this help and exit\n"
+" --usage Give a short usage message\n"
+" -V,--version Print version information and exit\n"
+"\n"
+"Mandatory arguments to long options are also mandatory for any corresponding\n"
+"short options.\n"
+"\n"
+msgstr ""
+"Spor udførelse af program ved at udskrive den aktuelt udførte funktion.\n"
+"\n"
+" --data=FIL Kør ikke programmet, men vis kun data fra FIL.\n"
+"\n"
+" -?,--help Vis denne hjælpetekst og afslut\n"
+" --usage Giv en kort besked om brug\n"
+" -V,--version Vis versionsinformation og afslut\n"
+"\n"
+"\n"
+"Obligatoriske argumenter til lange flag er også obligatoriske for tilsvarende korte flag.\n"
+
+#: debug/xtrace.sh:127
+msgid "xtrace: unrecognized option \\`$1'\\n"
+msgstr "xtrace: ukendt flag '$1'\\n"
+
+#: debug/xtrace.sh:140
+msgid "No program name given\\n"
+msgstr "Intet programnavn angivet\\n"
+
+#: debug/xtrace.sh:148
+#, sh-format
+msgid "executable \\`$program' not found\\n"
+msgstr "program \\'$program' blev ikke fundet\\n"
+
+#: debug/xtrace.sh:152
+#, sh-format
+msgid "\\`$program' is no executable\\n"
+msgstr "\\'$program' kan ikke udføres\\n"
+
+#: dlfcn/dlinfo.c:64
+msgid "RTLD_SELF used in code not dynamically loaded"
+msgstr "RTLD_SELF brugt i kode er ikke indlæst dynamisk"
+
+#: dlfcn/dlinfo.c:73
+msgid "unsupported dlinfo request"
+msgstr "dlinfo-forespørgsel ikke understøttet"
+
+#: dlfcn/dlmopen.c:64
+msgid "invalid namespace"
+msgstr "ugyldigt navnerum"
+
+#: dlfcn/dlmopen.c:69
+msgid "invalid mode"
+msgstr "ugyldig tilstand"
+
+#: dlfcn/dlopen.c:65
+msgid "invalid mode parameter"
+msgstr "ugyldig tilstandsparameter"
+
+#: elf/cache.c:69
+msgid "unknown"
+msgstr "ukendt"
+
+#: elf/cache.c:112
+msgid "Unknown OS"
+msgstr "Ukendt OS"
+
+#: elf/cache.c:117
+#, c-format
+msgid ", OS ABI: %s %d.%d.%d"
+msgstr ", OS ABI: %s %d.%d.%d"
+
+#: elf/cache.c:134 elf/ldconfig.c:1289
+#, c-format
+msgid "Can't open cache file %s\n"
+msgstr "Kan ikke åbne hurtigbufferfil %s\n"
+
+#: elf/cache.c:148
+#, c-format
+msgid "mmap of cache file failed.\n"
+msgstr "mmap af bufferfil fejlede\n"
+
+#: elf/cache.c:152 elf/cache.c:166
+#, c-format
+msgid "File is not a cache file.\n"
+msgstr "Fil er ikke en bufferfil.\n"
+
+#: elf/cache.c:199 elf/cache.c:209
+#, c-format
+msgid "%d libs found in cache `%s'\n"
+msgstr "%d libs fundet i hurtigbuffer '%s'\n"
+
+#: elf/cache.c:403
+#, c-format
+msgid "Can't create temporary cache file %s"
+msgstr "Kan ikke oprette midlertidig hurtigbufferfil %s"
+
+#: elf/cache.c:411 elf/cache.c:421 elf/cache.c:425 elf/cache.c:430
+#, c-format
+msgid "Writing of cache data failed"
+msgstr "Udskrivning af bufferdata fejlede"
+
+#: elf/cache.c:435
+#, c-format
+msgid "Changing access rights of %s to %#o failed"
+msgstr "Ændring af adgangsrettigheder for %s til %#o fejlede"
+
+#: elf/cache.c:440
+#, c-format
+msgid "Renaming of %s to %s failed"
+msgstr "Omdøbning af %s til %s fejlede"
+
+#: elf/dl-close.c:378 elf/dl-open.c:460
+msgid "cannot create scope list"
+msgstr "kan ikke oprette omfangsliste"
+
+#: elf/dl-close.c:725
+msgid "shared object not open"
+msgstr "delt objekt er ikke åbent"
+
+#: elf/dl-deps.c:114
+msgid "DST not allowed in SUID/SGID programs"
+msgstr "DST er ikke tilladt i SUIT/SGID-programmer"
+
+#: elf/dl-deps.c:127 elf/dl-open.c:282
+msgid "empty dynamic string token substitution"
+msgstr "tom dynamisk strengelement-erstatning"
+
+#: elf/dl-deps.c:133
+#, c-format
+msgid "cannot load auxiliary `%s' because of empty dynamic string token substitution\n"
+msgstr ""
+"kan ikke indlæse ekstra \"%s\" på grund af at erstatning af\n"
+"\"dynamic string token\" er tom\n"
+
+#: elf/dl-deps.c:474
+msgid "cannot allocate dependency list"
+msgstr "kan ikke allokere afhængighedsliste"
+
+#: elf/dl-deps.c:510 elf/dl-deps.c:565
+msgid "cannot allocate symbol search list"
+msgstr "kan ikke allokere symbolsøgningsliste"
+
+#: elf/dl-deps.c:550
+msgid "Filters not supported with LD_TRACE_PRELINKING"
+msgstr "Filtre understøttes ej med LD_TRACE_PRELINKING"
+
+#: elf/dl-error.c:77
+msgid "DYNAMIC LINKER BUG!!!"
+msgstr "FEJL I DYNAMISK LÆNKER!!!"
+
+#: elf/dl-error.c:124
+msgid "error while loading shared libraries"
+msgstr "fejl ved indlæsning af delte biblioteker"
+
+#: elf/dl-fptr.c:88
+msgid "cannot map pages for fdesc table"
+msgstr "kan ikke hukommelsesmappe sider for fdesc-tabel"
+
+#: elf/dl-fptr.c:192
+msgid "cannot map pages for fptr table"
+msgstr "kan ikke hukommelsesmappe sider for fptr-tabel"
+
+#: elf/dl-fptr.c:221
+msgid "internal error: symidx out of range of fptr table"
+msgstr "intern fejl: symidx er udenfor intervallet for fptr-tabellen"
+
+#: elf/dl-load.c:372
+msgid "cannot allocate name record"
+msgstr "kan ikke allokere navnepost"
+
+#: elf/dl-load.c:474 elf/dl-load.c:582 elf/dl-load.c:667 elf/dl-load.c:780
+msgid "cannot create cache for search path"
+msgstr "Kan ikke oprette buffer for søgesti"
+
+#: elf/dl-load.c:565
+msgid "cannot create RUNPATH/RPATH copy"
+msgstr "kan ikke oprette kopi af RUNPATH/RPATH"
+
+#: elf/dl-load.c:653
+msgid "cannot create search path array"
+msgstr "kan ikke oprette tabel over søgestier"
+
+#: elf/dl-load.c:864
+msgid "cannot stat shared object"
+msgstr "kan ikke tage status på delt objekt"
+
+#: elf/dl-load.c:934
+msgid "cannot open zero fill device"
+msgstr "kan ikke åbne nulstil-enhed"
+
+#: elf/dl-load.c:979 elf/dl-load.c:2215
+msgid "cannot create shared object descriptor"
+msgstr "kan ikke oprette delt objektbeskriver"
+
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
+msgid "cannot read file data"
+msgstr "kan ikke indlæse fildata"
+
+#: elf/dl-load.c:1042
+msgid "ELF load command alignment not page-aligned"
+msgstr "ELF-indlæsningskommandos tilpasning er ikke tilpasset siden"
+
+#: elf/dl-load.c:1049
+msgid "ELF load command address/offset not properly aligned"
+msgstr "ELF-indlæsningskommandos adresse/tillæg er ikke tilpasset ordentligt"
+
+#: elf/dl-load.c:1132
+msgid "cannot allocate TLS data structures for initial thread"
+msgstr "kan ikke oprette TLS-datastrukturer for første tråd"
+
+#: elf/dl-load.c:1155
+msgid "cannot handle TLS data"
+msgstr "kan ikke behandle TLS-data"
+
+#: elf/dl-load.c:1174
+msgid "object file has no loadable segments"
+msgstr "objektfil har ingen indlæsbare segmenter"
+
+#: elf/dl-load.c:1210
+msgid "failed to map segment from shared object"
+msgstr "kunne ikke afbilde segment fra delt objekt'"
+
+#: elf/dl-load.c:1236
+msgid "cannot dynamically load executable"
+msgstr "kan ikke indlæse udførbare programmer dynamisk"
+
+#: elf/dl-load.c:1298
+msgid "cannot change memory protections"
+msgstr "kan ikke ændre hukommelsesbeskyttelser"
+
+#: elf/dl-load.c:1317
+msgid "cannot map zero-fill pages"
+msgstr "kan ikke mappe nulstil-sider"
+
+#: elf/dl-load.c:1331
+msgid "object file has no dynamic section"
+msgstr "objektfil har ingen dynamisk sektion"
+
+#: elf/dl-load.c:1354
+msgid "shared object cannot be dlopen()ed"
+msgstr "delt objekt kan ikke åbnes med dlopen()"
+
+#: elf/dl-load.c:1367
+msgid "cannot allocate memory for program header"
+msgstr "kan ikke allokere hukommelse til programhoved"
+
+#: elf/dl-load.c:1384 elf/dl-open.c:218
+msgid "invalid caller"
+msgstr "ugyldig opkalder"
+
+#: elf/dl-load.c:1423
+msgid "cannot enable executable stack as shared object requires"
+msgstr "kan ikke oprette udførbar stak som kræves af delt objekt"
+
+#: elf/dl-load.c:1436
+msgid "cannot close file descriptor"
+msgstr "kan ikke lukke filbeskriver"
+
+#: elf/dl-load.c:1647
+msgid "file too short"
+msgstr "for kort fil"
+
+#: elf/dl-load.c:1676
+msgid "invalid ELF header"
+msgstr "ugyldigt ELF-hoved"
+
+#: elf/dl-load.c:1688
+msgid "ELF file data encoding not big-endian"
+msgstr "Kodning for ELF-fildata er ikke \"big-endian\""
+
+#: elf/dl-load.c:1690
+msgid "ELF file data encoding not little-endian"
+msgstr "Kodning for ELF-fildata er ikke \"little-endian\""
+
+#: elf/dl-load.c:1694
+msgid "ELF file version ident does not match current one"
+msgstr "ELF-filens version-identitet passer ikke med den aktuelle"
+
+#: elf/dl-load.c:1698
+msgid "ELF file OS ABI invalid"
+msgstr "ELF-filens OS ABI er ugyldigt"
+
+#: elf/dl-load.c:1700
+msgid "ELF file ABI version invalid"
+msgstr "ELF-filens ABI-version er ugyldig"
+
+#: elf/dl-load.c:1703
+msgid "internal error"
+msgstr "intern fejl"
+
+#: elf/dl-load.c:1710
+msgid "ELF file version does not match current one"
+msgstr "ELF-filens version passer ikke med den aktuelle"
+
+#: elf/dl-load.c:1718
+msgid "only ET_DYN and ET_EXEC can be loaded"
+msgstr "kun ET_DYN og ET_EXEC kan indlæses"
+
+#: elf/dl-load.c:1724
+msgid "ELF file's phentsize not the expected size"
+msgstr "ELF-filens 'phentsize' er ikke den forventede størrelse"
+
+#: elf/dl-load.c:2231
+msgid "wrong ELF class: ELFCLASS64"
+msgstr "forkert ELF-klasse: ELFCLASS64"
+
+#: elf/dl-load.c:2232
+msgid "wrong ELF class: ELFCLASS32"
+msgstr "forkert ELF-klasse: ELFCLASS32"
+
+#: elf/dl-load.c:2235
+msgid "cannot open shared object file"
+msgstr "kan ikke åbne delt objektfil"
+
+#: elf/dl-lookup.c:356
+msgid "relocation error"
+msgstr "fejl ved relokering"
+
+#: elf/dl-lookup.c:384
+msgid "symbol lookup error"
+msgstr "fejl ved opslag af symbol"
+
+#: elf/dl-open.c:114
+msgid "cannot extend global scope"
+msgstr "kan ikke udvide globalt defineringområde"
+
+#: elf/dl-open.c:512
+msgid "TLS generation counter wrapped! Please report this."
+msgstr "Generationstæller for TLS tilbagestillet! Vær sød at indsende fejlrapport."
+
+#: elf/dl-open.c:549
+msgid "invalid mode for dlopen()"
+msgstr "ugyldig modus for dlopen()"
+
+#: elf/dl-open.c:566
+msgid "no more namespaces available for dlmopen()"
+msgstr "ikke flere navnerum tilgængelige for dlmopen()"
+
+#: elf/dl-open.c:579
+msgid "invalid target namespace in dlmopen()"
+msgstr "ugyldigt mål-navnerum for dlmopen()"
+
+#: elf/dl-reloc.c:121
+msgid "cannot allocate memory in static TLS block"
+msgstr "Kan ikke tildele hukommelse i statisk TLS-blok"
+
+#: elf/dl-reloc.c:211
+msgid "cannot make segment writable for relocation"
+msgstr "kan ikke gøre segment skrivbart for relokering"
+
+#: elf/dl-reloc.c:277
+#, c-format
+msgid "%s: no PLTREL found in object %s\n"
+msgstr "%s: ingen PLTREL fundet i objekt %s\n"
+
+#: elf/dl-reloc.c:288
+#, c-format
+msgid "%s: out of memory to store relocation results for %s\n"
+msgstr "%s: ikke mere hukommelse til at gemme relokeringsresultat for %s\n"
+
+#: elf/dl-reloc.c:304
+msgid "cannot restore segment prot after reloc"
+msgstr "kan ikke genskabe segmentbeskyttelse efter flytning"
+
+#: elf/dl-reloc.c:329
+msgid "cannot apply additional memory protection after relocation"
+msgstr "kan ikke udføre yderligere hukommelsesbeskyttelser efter flytning"
+
+#: elf/dl-sym.c:162
+msgid "RTLD_NEXT used in code not dynamically loaded"
+msgstr "RTLD_NEXT brugt i kode er ikke dynamisk indlæst"
+
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
+msgid "cannot create capability list"
+msgstr "kan ikke oprette egenskabsliste"
+
+#: elf/dl-tls.c:864
+msgid "cannot create TLS data structures"
+msgstr "kan ikke oprette datastrukturer for TLS"
+
+#: elf/dl-version.c:303
+msgid "cannot allocate version reference table"
+msgstr "kan ikke allokere versionsreferencetabel"
+
+#: elf/ldconfig.c:141
+msgid "Print cache"
+msgstr "Udskriftsbuffer"
+
+#: elf/ldconfig.c:142
+msgid "Generate verbose messages"
+msgstr "Skriv udførlige meddelelser"
+
+#: elf/ldconfig.c:143
+msgid "Don't build cache"
+msgstr "Byg ikke hurtigbuffer"
+
+#: elf/ldconfig.c:144
+msgid "Don't generate links"
+msgstr "Generér ikke lænker"
+
+#: elf/ldconfig.c:145
+msgid "Change to and use ROOT as root directory"
+msgstr "Skift til og brug ROOT som rod-katalog"
+
+#: elf/ldconfig.c:145
+msgid "ROOT"
+msgstr "ROOT"
+
+#: elf/ldconfig.c:146
+msgid "CACHE"
+msgstr "CACHE"
+
+#: elf/ldconfig.c:146
+msgid "Use CACHE as cache file"
+msgstr "Brug CACHE som bufferfil"
+
+#: elf/ldconfig.c:147
+msgid "CONF"
+msgstr "CONF"
+
+#: elf/ldconfig.c:147
+msgid "Use CONF as configuration file"
+msgstr "Brug CONF som konfigurationsfil"
+
+#: elf/ldconfig.c:148
+msgid "Only process directories specified on the command line. Don't build cache."
+msgstr "Kun proces-kataloger angivet på kommandolinjen. Undlad at bygge buffer."
+
+#: elf/ldconfig.c:149
+msgid "Manually link individual libraries."
+msgstr "Lænk manuelt individuelle biblioteker"
+
+#: elf/ldconfig.c:150
+msgid "FORMAT"
+msgstr "FORMAT"
+
+#: elf/ldconfig.c:150
+msgid "Format to use: new, old or compat (default)"
+msgstr "Format der skal bruges: ny, gammel eller kompatibel (standard)"
+
+#: elf/ldconfig.c:151
+msgid "Ignore auxiliary cache file"
+msgstr "Ignorér ekstern bufferfil"
+
+#: elf/ldconfig.c:159
+msgid "Configure Dynamic Linker Run Time Bindings."
+msgstr "Konfigurér kørselsværdier til Dynamisk Lænker"
+
+#: elf/ldconfig.c:339
+#, c-format
+msgid "Path `%s' given more than once"
+msgstr "Stien '%s' givet mere end én gang"
+
+#: elf/ldconfig.c:379
+#, c-format
+msgid "%s is not a known library type"
+msgstr "%s er ikke en kendt bibliotekstype"
+
+#: elf/ldconfig.c:404
+#, c-format
+msgid "Can't stat %s"
+msgstr "Kan ikke stat() %s"
+
+#: elf/ldconfig.c:478
+#, c-format
+msgid "Can't stat %s\n"
+msgstr "Kan ikke stat() %s\n"
+
+#: elf/ldconfig.c:488
+#, c-format
+msgid "%s is not a symbolic link\n"
+msgstr "%s er ikke en symbolsk lænke\n"
+
+#: elf/ldconfig.c:507
+#, c-format
+msgid "Can't unlink %s"
+msgstr "Kan ikke aflænke %s"
+
+#: elf/ldconfig.c:513
+#, c-format
+msgid "Can't link %s to %s"
+msgstr "Kan ikke lænke %s til %s"
+
+#: elf/ldconfig.c:519
+msgid " (changed)\n"
+msgstr " (ændret)\n"
+
+#: elf/ldconfig.c:521
+msgid " (SKIPPED)\n"
+msgstr " (UDELADT)\n"
+
+#: elf/ldconfig.c:576
+#, c-format
+msgid "Can't find %s"
+msgstr "Kan ikke finde %s"
+
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
+#, c-format
+msgid "Cannot lstat %s"
+msgstr "Kan ikke lstat %s"
+
+#: elf/ldconfig.c:599
+#, c-format
+msgid "Ignored file %s since it is not a regular file."
+msgstr "Ignorerede filen %s da den ikke er en almindelig fil."
+
+#: elf/ldconfig.c:608
+#, c-format
+msgid "No link created since soname could not be found for %s"
+msgstr "Ingen lænke oprettet da .so-navn ikke kunne findes for %s"
+
+#: elf/ldconfig.c:691
+#, c-format
+msgid "Can't open directory %s"
+msgstr "Kan ikke åbne katalog %s"
+
+#: elf/ldconfig.c:779
+#, c-format
+msgid "Cannot stat %s"
+msgstr "Kan ikke stat() %s"
+
+#: elf/ldconfig.c:834 elf/readlib.c:91
+#, c-format
+msgid "Input file %s not found.\n"
+msgstr "Inddatafilen %s ikke fundet\n"
+
+#: elf/ldconfig.c:908
+#, c-format
+msgid "libc5 library %s in wrong directory"
+msgstr "libc5-bibliotek %s i forkert katalog"
+
+#: elf/ldconfig.c:911
+#, c-format
+msgid "libc6 library %s in wrong directory"
+msgstr "libc6-bibliotek %s i forkert katalog"
+
+#: elf/ldconfig.c:914
+#, c-format
+msgid "libc4 library %s in wrong directory"
+msgstr "libc4-bibliotek %s i forkert katalog"
+
+#: elf/ldconfig.c:942
+#, c-format
+msgid "libraries %s and %s in directory %s have same soname but different type."
+msgstr "bibliotekerne %s og %s i kataloget %s har samme .so-navn, men forskellig type"
+
+#: elf/ldconfig.c:1051
+#, c-format
+msgid "Can't open configuration file %s"
+msgstr "Kan ikke åbne konfigurationsfil %s"
+
+#: elf/ldconfig.c:1115
+#, c-format
+msgid "%s:%u: bad syntax in hwcap line"
+msgstr "%s:%u: dårlig syntaks på hwcap-linje"
+
+#: elf/ldconfig.c:1121
+#, c-format
+msgid "%s:%u: hwcap index %lu above maximum %u"
+msgstr "%s:%u: hwcap-index %lu er større end maksimum %u"
+
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
+#, c-format
+msgid "%s:%u: hwcap index %lu already defined as %s"
+msgstr "%s:%u hwcap indeks %lu allerede defineret som %s"
+
+#: elf/ldconfig.c:1139
+#, c-format
+msgid "%s:%u: duplicate hwcap %lu %s"
+msgstr "%s:%u: duplikér hwcap %lu %s"
+
+#: elf/ldconfig.c:1161
+#, c-format
+msgid "need absolute file name for configuration file when using -r"
+msgstr "behøver fuldt filnavn for konfigurationsfil når -r bruges"
+
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
+#, c-format
+msgid "memory exhausted"
+msgstr "hukommelsen opbrugt"
+
+#: elf/ldconfig.c:1198
+#, c-format
+msgid "%s:%u: cannot read directory %s"
+msgstr "%s:%u: kan ikke læse katalog %s"
+
+#: elf/ldconfig.c:1242
+#, c-format
+msgid "relative path `%s' used to build cache"
+msgstr "relativ søgesti \"%s\" brugt til at bygge hurtigbuffer"
+
+#: elf/ldconfig.c:1268
+#, c-format
+msgid "Can't chdir to /"
+msgstr "Kan ikke chdir til /"
+
+#: elf/ldconfig.c:1310
+#, c-format
+msgid "Can't open cache file directory %s\n"
+msgstr "Kan ikke åbne hurtigbuffer-katalog %s\n"
+
+#: elf/ldd.bash.in:43
+msgid "Written by %s and %s.\n"
+msgstr "Skrevet af %s og %s.\n"
+
+#: elf/ldd.bash.in:48
+msgid ""
+"Usage: ldd [OPTION]... FILE...\n"
+" --help print this help and exit\n"
+" --version print version information and exit\n"
+" -d, --data-relocs process data relocations\n"
+" -r, --function-relocs process data and function relocations\n"
+" -u, --unused print unused direct dependencies\n"
+" -v, --verbose print all information\n"
+msgstr ""
+"Brug: ldd [FLAG]... FIL...\n"
+" --help vis denne hjælpetekst og afslut\n"
+" --version vis versionsinformation og afslut\n"
+" -d, --data-relocs bearbejd datarelokeringer\n"
+" -r, --function-relocs bearbejd data- og funktionsrelokeringer\n"
+" -u, --unused vis ubrugte direkte afhængigheder\n"
+" -v, --verbose vis al information\n"
+
+#: elf/ldd.bash.in:82
+msgid "ldd: option \\`$1' is ambiguous"
+msgstr "ldd: flaget '$1' er flertydigt"
+
+#: elf/ldd.bash.in:89
+msgid "unrecognized option"
+msgstr "ukendt flag"
+
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
+msgid "Try \\`ldd --help' for more information."
+msgstr "Prøv \\'ldd --help' for mere information."
+
+#: elf/ldd.bash.in:127
+msgid "missing file arguments"
+msgstr "mangler filargumenter"
+
+#. TRANS No such file or directory. This is a ``file doesn't exist'' error
+#. TRANS for ordinary files that are referenced in contexts where they are
+#. TRANS expected to already exist.
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
+msgid "No such file or directory"
+msgstr "Ingen sådan fil eller filkatalog"
+
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
+msgid "not regular file"
+msgstr "ikke en almindelig fil"
+
+#: elf/ldd.bash.in:156
+msgid "warning: you do not have execution permission for"
+msgstr "advarsel: du har ikke udførelsesrettighed for"
+
+#: elf/ldd.bash.in:185
+msgid "\tnot a dynamic executable"
+msgstr "\tikke et dynamisk kørbart programr"
+
+#: elf/ldd.bash.in:193
+msgid "exited with unknown exit code"
+msgstr "afsluttede med ukendt slutstatus"
+
+#: elf/ldd.bash.in:198
+msgid "error: you do not have read permission for"
+msgstr "fejl: du har ikke læserettigheder til"
+
+#: elf/readelflib.c:35
+#, c-format
+msgid "file %s is truncated\n"
+msgstr "fil %s er afkortet\n"
+
+#: elf/readelflib.c:67
+#, c-format
+msgid "%s is a 32 bit ELF file.\n"
+msgstr "%s er en 32-bit ELF-fil.\n"
+
+#: elf/readelflib.c:69
+#, c-format
+msgid "%s is a 64 bit ELF file.\n"
+msgstr "%s er en 64-bit ELF-fil.\n"
+
+#: elf/readelflib.c:71
+#, c-format
+msgid "Unknown ELFCLASS in file %s.\n"
+msgstr "Ukendt ELFCLASS i filen %s.\n"
+
+#: elf/readelflib.c:78
+#, c-format
+msgid "%s is not a shared object file (Type: %d).\n"
+msgstr "%s er ikke en delt objektfil (Type: %d).\n"
+
+#: elf/readelflib.c:109
+#, c-format
+msgid "more than one dynamic segment\n"
+msgstr "mere end ét dynamisk segment\n"
+
+#: elf/readlib.c:97
+#, c-format
+msgid "Cannot fstat file %s.\n"
+msgstr "Kan ikke fstat() fil %s\n"
-#: iconv/iconv_charmap.c:177 iconv/iconv_prog.c:311
+#: elf/readlib.c:108
+#, c-format
+msgid "File %s is empty, not checked."
+msgstr "Fil %s er tom, ikke afprøvet."
+
+#: elf/readlib.c:114
+#, c-format
+msgid "File %s is too small, not checked."
+msgstr "Fil %s er for lille, ikke afprøvet."
+
+#: elf/readlib.c:124
+#, c-format
+msgid "Cannot mmap file %s.\n"
+msgstr "Kan ikke mmap fil %s\n"
+
+#: elf/readlib.c:162
+#, c-format
+msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
+msgstr "%s er ikke en ELF-fil - den har de forkerte signaturtegn i starten.\n"
+
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+"Brug: sln src dest|fil\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s: fejl ved åbning af fil: %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "Intet mål på linje %d\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s: mål må ikke være et katalog\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr "%s: det mislykkedes at fjerne det gamle mål\n"
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s: ugyldigt mål -- %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "Ugyldig lænke fra \"%s\" til \"%s\": %s\n"
+
+#: elf/sprof.c:77
+msgid "Output selection:"
+msgstr "Udskriftsvalg:"
+
+#: elf/sprof.c:79
+msgid "print list of count paths and their number of use"
+msgstr "udskriv liste med tællestier og deres brugsantal"
+
+#: elf/sprof.c:81
+msgid "generate flat profile with counts and ticks"
+msgstr "generér flad profil med tællere og klokketik"
+
+#: elf/sprof.c:82
+msgid "generate call graph"
+msgstr "generér kald-graf"
+
+#: elf/sprof.c:89
+msgid "Read and display shared object profiling data."
+msgstr "Læs og vis profileringsdata for delte objekter."
+
+#: elf/sprof.c:94
+msgid "SHOBJ [PROFDATA]"
+msgstr "SHOBJ [PROFDATA]"
+
+#: elf/sprof.c:420
+#, c-format
+msgid "failed to load shared object `%s'"
+msgstr "kunne ikke indlæse delt objekt '%s'"
+
+#: elf/sprof.c:429
+#, c-format
+msgid "cannot create internal descriptors"
+msgstr "kan ikke oprette interne deskriptorer"
+
+#: elf/sprof.c:548
+#, c-format
+msgid "Reopening shared object `%s' failed"
+msgstr "Genåbning af delt objekt '%s' fejlede"
+
+#: elf/sprof.c:555 elf/sprof.c:649
+#, c-format
+msgid "reading of section headers failed"
+msgstr "læsning af sektionsoverskrifter mislykkedes"
+
+#: elf/sprof.c:563 elf/sprof.c:657
+#, c-format
+msgid "reading of section header string table failed"
+msgstr "læsning af tabel med sektionsoverskriftsstrenge mislykkedes"
+
+#: elf/sprof.c:589
+#, c-format
+msgid "*** Cannot read debuginfo file name: %m\n"
+msgstr "*** Kan ikke læse fil med fejlsøgnings-information: %m\n"
+
+#: elf/sprof.c:609
+#, c-format
+msgid "cannot determine file name"
+msgstr "kan ikke bestemme filnavn"
+
+#: elf/sprof.c:642
+#, c-format
+msgid "reading of ELF header failed"
+msgstr "læsning af ELF-kontrolblok mislykkedes"
+
+#: elf/sprof.c:678
+#, c-format
+msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
+msgstr "*** Filen '%s' er strippet: ingen detaljeret analyse mulig\n"
+
+#: elf/sprof.c:708
+#, c-format
+msgid "failed to load symbol data"
+msgstr "kunne ikke indlæse symboldata"
+
+#: elf/sprof.c:775
+#, c-format
+msgid "cannot load profiling data"
+msgstr "kan ikke indlæse profileringsdata"
+
+#: elf/sprof.c:784
+#, c-format
+msgid "while stat'ing profiling data file"
+msgstr "ved 'stat' af profileringsdatafil"
+
+#: elf/sprof.c:792
+#, c-format
+msgid "profiling data file `%s' does not match shared object `%s'"
+msgstr "profileringsdatafil '%s' passer ikke med delt objekt '%s'"
+
+#: elf/sprof.c:803
+#, c-format
+msgid "failed to mmap the profiling data file"
+msgstr "kunne ikke mmap'e filen med profileringsdata"
+
+#: elf/sprof.c:811
+#, c-format
+msgid "error while closing the profiling data file"
+msgstr "fejl ved lukning af datafilen for profilering"
+
+#: elf/sprof.c:820 elf/sprof.c:890
+#, c-format
+msgid "cannot create internal descriptor"
+msgstr "kan ikke oprette intern deskriptor"
+
+#: elf/sprof.c:866
+#, c-format
+msgid "`%s' is no correct profile data file for `%s'"
+msgstr "'%s' er ikke korrekt profildatafil for '%s'"
+
+#: elf/sprof.c:1047 elf/sprof.c:1105
+#, c-format
+msgid "cannot allocate symbol data"
+msgstr "kan ikke allokere symboldata"
+
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "kan ikke åbne uddatafil"
+
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
-msgstr "fejl ved lukning af indput '%s'"
+msgstr "fejl ved lukning af inddata '%s'"
-#: iconv/iconv_charmap.c:443
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
-msgstr "ulovlig inddatasekvens ved position %Zd"
+msgstr "ugyldig inddatasekvens ved position %Zd"
-#: iconv/iconv_charmap.c:462 iconv/iconv_prog.c:503
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
+#, c-format
msgid "incomplete character or shift sequence at end of buffer"
msgstr "ufuldstændig tegn- eller skifte-sekvens ved slutningen af buffer"
-#: iconv/iconv_charmap.c:507 iconv/iconv_charmap.c:543 iconv/iconv_prog.c:546
-#: iconv/iconv_prog.c:582
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
+#, c-format
msgid "error while reading the input"
msgstr "fejl under læsning af inddata"
-#: iconv/iconv_charmap.c:525 iconv/iconv_prog.c:564
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
+#, c-format
msgid "unable to allocate buffer for input"
msgstr "ikke i stand til at allokere buffer til inddata"
-#: iconv/iconv_prog.c:61
+#: iconv/iconv_prog.c:60
msgid "Input/Output format specification:"
-msgstr "Ind-/ud-formatspecifikation:"
+msgstr "Inddata-/uddata-formatspecifikation:"
-#: iconv/iconv_prog.c:62
+#: iconv/iconv_prog.c:61
msgid "encoding of original text"
msgstr "indkodning af original tekst"
-#: iconv/iconv_prog.c:63
+#: iconv/iconv_prog.c:62
msgid "encoding for output"
msgstr "indkodning for uddata"
-#: iconv/iconv_prog.c:64
+#: iconv/iconv_prog.c:63
msgid "Information:"
msgstr "Information:"
-#: iconv/iconv_prog.c:65
+#: iconv/iconv_prog.c:64
msgid "list all known coded character sets"
msgstr "list alle kendte kodede tegnsæt"
-#: iconv/iconv_prog.c:66 locale/programs/localedef.c:128
+#: iconv/iconv_prog.c:65 locale/programs/localedef.c:127
msgid "Output control:"
msgstr "Udskriftskontrol:"
-#: iconv/iconv_prog.c:67
+#: iconv/iconv_prog.c:66
msgid "omit invalid characters from output"
msgstr "fjern ugyldige tegn fra uddata"
-#: iconv/iconv_prog.c:68
+#: iconv/iconv_prog.c:67
msgid "output file"
-msgstr "udfil"
+msgstr "uddatafil"
-#: iconv/iconv_prog.c:69
+#: iconv/iconv_prog.c:68
msgid "suppress warnings"
msgstr "undertryk advarsler"
-#: iconv/iconv_prog.c:70
+#: iconv/iconv_prog.c:69
msgid "print progress information"
msgstr "skriv fremdriftsinformation"
-#: iconv/iconv_prog.c:75
+#: iconv/iconv_prog.c:74
msgid "Convert encoding of given files from one encoding to another."
msgstr "Konvertér indkodning af givne filer fra en indkodning til en anden."
-#: iconv/iconv_prog.c:79
+#: iconv/iconv_prog.c:78
msgid "[FILE...]"
msgstr "[FIL...]"
-#: iconv/iconv_prog.c:199
-msgid "cannot open output file"
-msgstr "kan ikke åbne udfil"
-
-#: iconv/iconv_prog.c:241
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
-msgstr "konvertering fra '%s' og til '%s' er ikke understøttet"
+msgstr "konverteringer fra '%s' og til '%s' er ikke understøttet"
-#: iconv/iconv_prog.c:246
+#: iconv/iconv_prog.c:239
#, c-format
msgid "conversion from `%s' is not supported"
msgstr "konvertering fra '%s' er ikke understøttet"
-#: iconv/iconv_prog.c:253
+#: iconv/iconv_prog.c:246
#, c-format
msgid "conversion to `%s' is not supported"
msgstr "konvertering til '%s' er ikke understøttet"
-#: iconv/iconv_prog.c:257
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
msgstr "konvertering fra '%s' til '%s' er ikke understøttet"
-#: iconv/iconv_prog.c:263
+#: iconv/iconv_prog.c:260
+#, c-format
msgid "failed to start conversion processing"
-msgstr "klarede ikke at starte konverteringsprocessering"
+msgstr "kunne ikke starte konverteringsprocessering"
#: iconv/iconv_prog.c:358
-msgid "error while closing output file"
-msgstr "fejl ved lukning af udfil"
-
-#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
-#: locale/programs/localedef.c:372 catgets/gencat.c:233
-#: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
-msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
-msgstr "Rapportér fejl ved at bruge skriptet 'glibcbug' til <bugs@gnu.org>.\n"
-
-#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
-#: elf/sprof.c:349
#, c-format
-msgid ""
-"Copyright (C) %s Free Software Foundation, Inc.\n"
-"This is free software; see the source for copying conditions. There is NO\n"
-"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-msgstr ""
-"Ophavsrettigheder (C) %s Free Software Foundation, Inc.\n"
-"Dette er frit programmel. Se kildekoden for kopieringsbetingelser.\n"
-"Programmellet har ingen garanti, ikke en gang for SALGBARHED eller EGNETHED\n"
-"TIL NOGEN SPECIEL OPGAVE.\n"
+msgid "error while closing output file"
+msgstr "fejl ved lukning af uddatafil"
-#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
-#: elf/sprof.c:355
+#: iconv/iconv_prog.c:456
#, c-format
-msgid "Written by %s.\n"
-msgstr "Skrevet af %s.\n"
-
-#: iconv/iconv_prog.c:456 iconv/iconv_prog.c:482
msgid "conversion stopped due to problem in writing the output"
msgstr "konvertering stoppet på grund af problem ved skrivning af uddata"
-#: iconv/iconv_prog.c:499
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
-msgstr "ulovlig inddatasekvens ved position %ld"
+msgstr "ugyldig inddatasekvens ved position %ld"
-#: iconv/iconv_prog.c:507
+#: iconv/iconv_prog.c:541
+#, c-format
msgid "internal error (illegal descriptor)"
-msgstr "intern fejl (ulovlig deskriptor)"
+msgstr "intern fejl (ugyldig deskriptor)"
-#: iconv/iconv_prog.c:510
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
msgstr "ukendt iconv()-fejl %d"
-#: iconv/iconv_prog.c:753
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -343,7 +1321,7 @@ msgid ""
msgstr ""
"Den følgende liste indeholder alle de kendte kodede tegnsæt. Dette\n"
"betyder ikke nødvendigvis at alle kombinationer af disse navne kan blive brugt\n"
-"som FRA- og TIL-kommandolinieparametre. Et kodet tegnsæt kan være listet\n"
+"som FRA- og TIL-kommandolinjeparametre. Et kodet tegnsæt kan være listet\n"
"med flere forskellige navne (alias).\n"
"\n"
" "
@@ -356,780 +1334,905 @@ msgstr "Opret hurtigtindlæst iconv-modul konfigurationsfil."
msgid "[DIR...]"
msgstr "[KAT...]"
-#: iconv/iconvconfig.c:126
+#: iconv/iconvconfig.c:127
msgid "Prefix used for all file accesses"
msgstr "Præfiks brugt for alle filadgange"
-#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
+#: iconv/iconvconfig.c:128
+msgid "Put output in FILE instead of installed location (--prefix does not apply to FILE)"
+msgstr "Gem uddata i FIL i stedet for installationsstedet (--prefix gælder ikke for FIL)"
+
+#: iconv/iconvconfig.c:132
+msgid "Do not search standard directories, only those on the command line"
+msgstr "Søg ikke i standardkatalogerne, kun i dem som blev givet på kommandolinjen"
+
+#: iconv/iconvconfig.c:301
+#, c-format
+msgid "Directory arguments required when using --nostdlib"
+msgstr "Katalogargumenter kræves når --nostdlib bruges"
+
+#: iconv/iconvconfig.c:343 locale/programs/localedef.c:291
+#, c-format
msgid "no output file produced because warnings were issued"
-msgstr "på grund af advarsler blev ingen udfil oprettet"
+msgstr "på grund af advarsler blev ingen uddatafil oprettet"
-#: iconv/iconvconfig.c:405
+#: iconv/iconvconfig.c:429
+#, c-format
msgid "while inserting in search tree"
msgstr "fejl ved indsætning i søgetræ"
-#: iconv/iconvconfig.c:1204
+#: iconv/iconvconfig.c:1238
+#, c-format
msgid "cannot generate output file"
-msgstr "kan ikke generere udfil"
+msgstr "kan ikke generere uddatafil"
+
+#: inet/rcmd.c:157
+msgid "rcmd: Cannot allocate memory\n"
+msgstr "rcmd: Kan ikke tildele hukommelse\n"
+
+#: inet/rcmd.c:172
+msgid "rcmd: socket: All ports in use\n"
+msgstr "rcmd: sokkel: Alle porte i brug\n"
+
+#: inet/rcmd.c:200
+#, c-format
+msgid "connect to address %s: "
+msgstr "forbind til adresse %s: "
+
+#: inet/rcmd.c:213
+#, c-format
+msgid "Trying %s...\n"
+msgstr "Prøver %s...\n"
+
+#: inet/rcmd.c:249
+#, c-format
+msgid "rcmd: write (setting up stderr): %m\n"
+msgstr "rcmd: write: (opsætter standard error): %m\n"
+
+#: inet/rcmd.c:265
+#, c-format
+msgid "rcmd: poll (setting up stderr): %m\n"
+msgstr "rcmd: poll (opsætter stderr): %m\n"
+
+#: inet/rcmd.c:268
+msgid "poll: protocol failure in circuit setup\n"
+msgstr "poll: protokolfejl i opsætning af forbindelse\n"
+
+#: inet/rcmd.c:301
+msgid "socket: protocol failure in circuit setup\n"
+msgstr "sokkel: protokolfejl i opsætning af forbindelse\n"
+
+#: inet/rcmd.c:325
+#, c-format
+msgid "rcmd: %s: short read"
+msgstr "rcmd: %s: kort indlæsning"
+
+#: inet/rcmd.c:481
+msgid "lstat failed"
+msgstr "lstat fejlede"
+
+#: inet/rcmd.c:488
+msgid "cannot open"
+msgstr "kan ikke åbne"
+
+#: inet/rcmd.c:490
+msgid "fstat failed"
+msgstr "fstat fejlede"
+
+#: inet/rcmd.c:492
+msgid "bad owner"
+msgstr "forkert ejer"
+
+#: inet/rcmd.c:494
+msgid "writeable by other than owner"
+msgstr "skrivbar af andre end ejer"
+
+#: inet/rcmd.c:496
+msgid "hard linked somewhere"
+msgstr "hårdlænket et eller andet sted"
+
+#: inet/ruserpass.c:170 inet/ruserpass.c:193
+msgid "out of memory"
+msgstr "tom for hukommelse"
+
+#: inet/ruserpass.c:184
+msgid "Error: .netrc file is readable by others."
+msgstr "Fejl: .netrc-fil kan læses af andre."
+
+#: inet/ruserpass.c:185
+msgid "Remove password or make file unreadable by others."
+msgstr "Fjern adgangskode, eller gør filen ulæselig for andre."
+
+#: inet/ruserpass.c:277
+#, c-format
+msgid "Unknown .netrc keyword %s"
+msgstr "Ukendt .netrc-nøgleord %s"
+
+#: libidn/nfkc.c:464
+msgid "Character out of range for UTF-8"
+msgstr "Tegn uden for område for UTF-8"
#: locale/programs/charmap-dir.c:59
#, c-format
msgid "cannot read character map directory `%s'"
msgstr "kan ikke læse filkataloget for tegntabel, '%s'"
-#: locale/programs/charmap.c:135
+#: locale/programs/charmap.c:138
#, c-format
msgid "character map file `%s' not found"
-msgstr "tegntabelfilen '%s' ikke fundet"
+msgstr "tegntabel-filen '%s' ikke fundet"
-#: locale/programs/charmap.c:193
+#: locale/programs/charmap.c:195
#, c-format
msgid "default character map file `%s' not found"
msgstr "standard tegntabel '%s' ikke fundet"
-#: locale/programs/charmap.c:255
+#: locale/programs/charmap.c:258
#, c-format
msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
-msgstr "tegnsætstabel '%s' er ikke ASCII-kompatibel, lokale er ikke i overensstemmelse med ISO C\n"
+msgstr "tegntabel '%s' er ikke ASCII-kompatibel, lokale er ikke i overensstemmelse med ISO C\n"
-#: locale/programs/charmap.c:332
+#: locale/programs/charmap.c:337
#, c-format
msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
msgstr "%s: <mb_cur_max> skal være større end <mb_cur_min>\n"
-#: locale/programs/charmap.c:352 locale/programs/charmap.c:369
-#: locale/programs/repertoire.c:175
+#: locale/programs/charmap.c:357 locale/programs/charmap.c:374
+#: locale/programs/repertoire.c:174
#, c-format
msgid "syntax error in prolog: %s"
msgstr "syntaksfejl i prolog: %s"
-#: locale/programs/charmap.c:353
+#: locale/programs/charmap.c:358
msgid "invalid definition"
msgstr "ugyldig definition"
-#: locale/programs/charmap.c:370 locale/programs/locfile.c:126
-#: locale/programs/locfile.c:153 locale/programs/repertoire.c:176
+#: locale/programs/charmap.c:375 locale/programs/locfile.c:126
+#: locale/programs/locfile.c:153 locale/programs/repertoire.c:175
msgid "bad argument"
-msgstr "ugyldigt argument"
+msgstr "dårligt argument"
-#: locale/programs/charmap.c:398
+#: locale/programs/charmap.c:403
#, c-format
msgid "duplicate definition of <%s>"
-msgstr "duplikeret definition af <%s>"
+msgstr "duplikér definition af <%s>"
-#: locale/programs/charmap.c:405
+#: locale/programs/charmap.c:410
#, c-format
msgid "value for <%s> must be 1 or greater"
msgstr "værdien på <%s> skal være 1 eller større"
-#: locale/programs/charmap.c:417
+#: locale/programs/charmap.c:422
#, c-format
msgid "value of <%s> must be greater or equal than the value of <%s>"
msgstr "værdien på <%s> skal være større end eller lig værdien på <%s>"
-#: locale/programs/charmap.c:440 locale/programs/repertoire.c:184
+#: locale/programs/charmap.c:445 locale/programs/repertoire.c:183
#, c-format
msgid "argument to <%s> must be a single character"
msgstr "argument til <%s> skal være et enkelt tegn"
-#: locale/programs/charmap.c:466
+#: locale/programs/charmap.c:471
msgid "character sets with locking states are not supported"
msgstr "tegnsæt med låsetilstande er ikke understøttet"
-#: locale/programs/charmap.c:493 locale/programs/charmap.c:547
-#: locale/programs/charmap.c:579 locale/programs/charmap.c:673
-#: locale/programs/charmap.c:728 locale/programs/charmap.c:769
-#: locale/programs/charmap.c:810
+#: locale/programs/charmap.c:498 locale/programs/charmap.c:552
+#: locale/programs/charmap.c:584 locale/programs/charmap.c:678
+#: locale/programs/charmap.c:733 locale/programs/charmap.c:774
+#: locale/programs/charmap.c:815
#, c-format
msgid "syntax error in %s definition: %s"
msgstr "syntaksfejl i definition af %s: %s"
-#: locale/programs/charmap.c:494 locale/programs/charmap.c:674
-#: locale/programs/charmap.c:770 locale/programs/repertoire.c:231
+#: locale/programs/charmap.c:499 locale/programs/charmap.c:679
+#: locale/programs/charmap.c:775 locale/programs/repertoire.c:230
msgid "no symbolic name given"
-msgstr "ikke noget symbolsk navn givet"
+msgstr "ikke noget symbolsk navn angivet"
-#: locale/programs/charmap.c:548
+#: locale/programs/charmap.c:553
msgid "invalid encoding given"
msgstr "ugyldig indkodning angivet"
-#: locale/programs/charmap.c:557
+#: locale/programs/charmap.c:562
msgid "too few bytes in character encoding"
msgstr "for få byte i tegnkodning"
-#: locale/programs/charmap.c:559
+#: locale/programs/charmap.c:564
msgid "too many bytes in character encoding"
-msgstr "for mange tegn i tegnkodning"
+msgstr "for mange byte i tegnkodning"
-#: locale/programs/charmap.c:581 locale/programs/charmap.c:729
-#: locale/programs/charmap.c:812 locale/programs/repertoire.c:297
+#: locale/programs/charmap.c:586 locale/programs/charmap.c:734
+#: locale/programs/charmap.c:817 locale/programs/repertoire.c:296
msgid "no symbolic name given for end of range"
msgstr "ikke noget symbolsk navn givet for slutningen på området"
-#: locale/programs/charmap.c:605 locale/programs/locfile.h:96
-#: locale/programs/repertoire.c:314
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
+#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
+#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
+#: locale/programs/ld-identification.c:452
+#: locale/programs/ld-measurement.c:238 locale/programs/ld-messages.c:332
+#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:307
+#: locale/programs/ld-numeric.c:368 locale/programs/ld-paper.c:241
+#: locale/programs/ld-telephone.c:313 locale/programs/ld-time.c:1221
+#: locale/programs/repertoire.c:313
#, c-format
-msgid "`%1$s' definition does not end with `END %1$s'"
-msgstr "'%1$s' definition slutter ikke med 'END %1$s'"
+msgid "%1$s: definition does not end with `END %1$s'"
+msgstr "'%1$s: definition slutter ikke med 'END %1$s'"
-#: locale/programs/charmap.c:638
+#: locale/programs/charmap.c:643
msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
-msgstr "kun definition af 'WIDTH' må komme efter definition af 'CHARMAP'"
+msgstr "kun definitioner af 'WIDTH' må komme efter definition af 'CHARMAP'"
-#: locale/programs/charmap.c:646 locale/programs/charmap.c:709
+#: locale/programs/charmap.c:651 locale/programs/charmap.c:714
#, c-format
msgid "value for %s must be an integer"
-msgstr "værdien på %s skal være heltal"
+msgstr "værdien på %s skal være et heltal"
-#: locale/programs/charmap.c:837
+#: locale/programs/charmap.c:842
#, c-format
msgid "%s: error in state machine"
msgstr "%s: fejl i tilstandsmaskinen"
-#: locale/programs/charmap.c:845 locale/programs/ld-address.c:605
-#: locale/programs/ld-collate.c:2635 locale/programs/ld-collate.c:3793
-#: locale/programs/ld-ctype.c:2216 locale/programs/ld-ctype.c:2977
-#: locale/programs/ld-identification.c:469
-#: locale/programs/ld-measurement.c:255 locale/programs/ld-messages.c:349
-#: locale/programs/ld-monetary.c:952 locale/programs/ld-name.c:324
-#: locale/programs/ld-numeric.c:392 locale/programs/ld-paper.c:258
-#: locale/programs/ld-telephone.c:330 locale/programs/ld-time.c:1217
-#: locale/programs/locfile.h:103 locale/programs/repertoire.c:325
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
+#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
+#: locale/programs/ld-identification.c:468
+#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
+#: locale/programs/ld-monetary.c:959 locale/programs/ld-name.c:323
+#: locale/programs/ld-numeric.c:384 locale/programs/ld-paper.c:257
+#: locale/programs/ld-telephone.c:329 locale/programs/ld-time.c:1237
+#: locale/programs/locfile.c:826 locale/programs/repertoire.c:324
#, c-format
msgid "%s: premature end of file"
msgstr "%s: for tidlig slut på filen"
-#: locale/programs/charmap.c:864 locale/programs/charmap.c:875
+#: locale/programs/charmap.c:869 locale/programs/charmap.c:880
#, c-format
msgid "unknown character `%s'"
msgstr "ukendt tegn '%s'"
-#: locale/programs/charmap.c:883
+#: locale/programs/charmap.c:888
#, c-format
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
msgstr ""
"antal byte for bytesekvens angivet i begyndelsen respektive slutningen af intervallet\n"
"er forskellige: %d respektive %d"
-#: locale/programs/charmap.c:987 locale/programs/ld-collate.c:2915
-#: locale/programs/repertoire.c:420
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
+#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
msgstr "ugyldige navne for tegnområde"
-#: locale/programs/charmap.c:999 locale/programs/repertoire.c:432
+#: locale/programs/charmap.c:1005 locale/programs/repertoire.c:431
msgid "hexadecimal range format should use only capital characters"
msgstr "heksadecimalt interval-format bør bruge kun store bogstaver"
-#: locale/programs/charmap.c:1017
+#: locale/programs/charmap.c:1023 locale/programs/repertoire.c:449
#, c-format
-msgid "<%s> and <%s> are illegal names for range"
-msgstr "<%s> og <%s> er ulovlige navne for tegnområde"
+msgid "<%s> and <%s> are invalid names for range"
+msgstr "<%s> og <%s> er ugyldige navne for tegnområde"
-#: locale/programs/charmap.c:1023
-msgid "upper limit in range is not higher then lower limit"
-msgstr "øvre grænse i område er ikke større end nedre grænse"
+#: locale/programs/charmap.c:1029 locale/programs/repertoire.c:456
+msgid "upper limit in range is smaller than lower limit"
+msgstr "øvre grænse i område er mindre end nedre grænse"
-#: locale/programs/charmap.c:1081
+#: locale/programs/charmap.c:1087
msgid "resulting bytes for range not representable."
msgstr "de resulterende bytes for området kan ikke repræsenteres."
-#: locale/programs/ld-address.c:134 locale/programs/ld-collate.c:1519
-#: locale/programs/ld-ctype.c:416 locale/programs/ld-identification.c:134
-#: locale/programs/ld-measurement.c:95 locale/programs/ld-messages.c:98
-#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:95
-#: locale/programs/ld-numeric.c:99 locale/programs/ld-paper.c:92
-#: locale/programs/ld-telephone.c:95 locale/programs/ld-time.c:160
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
+#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
+#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
+#: locale/programs/ld-numeric.c:98 locale/programs/ld-paper.c:91
+#: locale/programs/ld-telephone.c:94 locale/programs/ld-time.c:159
#, c-format
msgid "No definition for %s category found"
msgstr "Definition for kategori %s ikke fundet"
-#: locale/programs/ld-address.c:145 locale/programs/ld-address.c:183
-#: locale/programs/ld-address.c:201 locale/programs/ld-address.c:228
-#: locale/programs/ld-address.c:290 locale/programs/ld-address.c:309
-#: locale/programs/ld-address.c:322 locale/programs/ld-identification.c:147
-#: locale/programs/ld-measurement.c:106 locale/programs/ld-monetary.c:206
-#: locale/programs/ld-monetary.c:244 locale/programs/ld-monetary.c:260
-#: locale/programs/ld-monetary.c:272 locale/programs/ld-name.c:106
-#: locale/programs/ld-name.c:143 locale/programs/ld-numeric.c:113
-#: locale/programs/ld-numeric.c:127 locale/programs/ld-paper.c:103
-#: locale/programs/ld-paper.c:112 locale/programs/ld-telephone.c:106
-#: locale/programs/ld-telephone.c:163 locale/programs/ld-time.c:176
-#: locale/programs/ld-time.c:197
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
+#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
+#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
+#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
+#: locale/programs/ld-name.c:142 locale/programs/ld-numeric.c:112
+#: locale/programs/ld-numeric.c:126 locale/programs/ld-paper.c:102
+#: locale/programs/ld-paper.c:111 locale/programs/ld-telephone.c:105
+#: locale/programs/ld-telephone.c:162 locale/programs/ld-time.c:175
+#: locale/programs/ld-time.c:196
#, c-format
msgid "%s: field `%s' not defined"
msgstr "%s: felt '%s' ikke defineret"
-#: locale/programs/ld-address.c:157 locale/programs/ld-address.c:209
-#: locale/programs/ld-address.c:235 locale/programs/ld-address.c:265
-#: locale/programs/ld-name.c:118 locale/programs/ld-telephone.c:118
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
+#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
-msgstr "%s: felt '%s' skal være tomt"
+msgstr "%s: felt '%s' må ikke være tomt"
-#: locale/programs/ld-address.c:169
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
-msgstr "%s: ugyldig undvigesekvens '%%%c' i felt '%s'"
+msgstr "%s: ugyldig undvigetegnsekvens '%%%c' i felt '%s'"
-#: locale/programs/ld-address.c:220
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
msgstr "%s: terminologi-sprogkode '%s' ikke defineret"
-#: locale/programs/ld-address.c:247 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:246
+#, c-format
+msgid "%s: field `%s' must not be defined"
+msgstr "%s: felt '%s' må ikke være defineret"
+
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
msgstr "%s: sprog-forkortelsen '%s' ikke defineret"
-#: locale/programs/ld-address.c:254 locale/programs/ld-address.c:282
-#: locale/programs/ld-address.c:316 locale/programs/ld-address.c:328
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
-msgstr "%s: '%s' værdi er ikke sammenlignelig med '%s' værdi"
+msgstr "%s: '%s' værdi passer ikke overens med '%s' værdi"
-#: locale/programs/ld-address.c:301
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
msgstr "%s: numerisk landekode '%d' er ugyldig"
-#: locale/programs/ld-address.c:497 locale/programs/ld-address.c:534
-#: locale/programs/ld-address.c:572 locale/programs/ld-ctype.c:2592
-#: locale/programs/ld-identification.c:365
-#: locale/programs/ld-measurement.c:222 locale/programs/ld-messages.c:302
-#: locale/programs/ld-monetary.c:694 locale/programs/ld-monetary.c:729
-#: locale/programs/ld-monetary.c:770 locale/programs/ld-name.c:281
-#: locale/programs/ld-numeric.c:264 locale/programs/ld-paper.c:225
-#: locale/programs/ld-telephone.c:289 locale/programs/ld-time.c:1106
-#: locale/programs/ld-time.c:1148
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-identification.c:364
+#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
+#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
+#: locale/programs/ld-monetary.c:777 locale/programs/ld-name.c:280
+#: locale/programs/ld-numeric.c:263 locale/programs/ld-paper.c:224
+#: locale/programs/ld-telephone.c:288 locale/programs/ld-time.c:1126
+#: locale/programs/ld-time.c:1168
#, c-format
msgid "%s: field `%s' declared more than once"
msgstr "%s: felt '%s' erklæret mere end én gang"
-#: locale/programs/ld-address.c:501 locale/programs/ld-address.c:539
-#: locale/programs/ld-identification.c:369 locale/programs/ld-messages.c:312
-#: locale/programs/ld-monetary.c:698 locale/programs/ld-monetary.c:733
-#: locale/programs/ld-name.c:285 locale/programs/ld-numeric.c:268
-#: locale/programs/ld-telephone.c:293 locale/programs/ld-time.c:1000
-#: locale/programs/ld-time.c:1069 locale/programs/ld-time.c:1111
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
+#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
+#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
+#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
+#: locale/programs/ld-telephone.c:292 locale/programs/ld-time.c:1020
+#: locale/programs/ld-time.c:1089 locale/programs/ld-time.c:1131
#, c-format
msgid "%s: unknown character in field `%s'"
msgstr "%s: ukendt tegn i felt '%s'"
-#: locale/programs/ld-address.c:586 locale/programs/ld-collate.c:3775
-#: locale/programs/ld-ctype.c:2957 locale/programs/ld-identification.c:450
-#: locale/programs/ld-measurement.c:236 locale/programs/ld-messages.c:331
-#: locale/programs/ld-monetary.c:934 locale/programs/ld-name.c:306
-#: locale/programs/ld-numeric.c:374 locale/programs/ld-paper.c:240
-#: locale/programs/ld-telephone.c:312 locale/programs/ld-time.c:1199
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
+#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
+#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
+#: locale/programs/ld-numeric.c:366 locale/programs/ld-paper.c:239
+#: locale/programs/ld-telephone.c:311 locale/programs/ld-time.c:1219
#, c-format
msgid "%s: incomplete `END' line"
-msgstr "%s: ufuldstændig 'END'-linie"
-
-#: locale/programs/ld-address.c:589 locale/programs/ld-collate.c:2638
-#: locale/programs/ld-collate.c:3777 locale/programs/ld-ctype.c:2219
-#: locale/programs/ld-ctype.c:2960 locale/programs/ld-identification.c:453
-#: locale/programs/ld-measurement.c:239 locale/programs/ld-messages.c:333
-#: locale/programs/ld-monetary.c:936 locale/programs/ld-name.c:308
-#: locale/programs/ld-numeric.c:376 locale/programs/ld-paper.c:242
-#: locale/programs/ld-telephone.c:314 locale/programs/ld-time.c:1201
-#, c-format
-msgid "%1$s: definition does not end with `END %1$s'"
-msgstr "'%1$s: definition slutter ikke med 'END %1$s'"
-
-#: locale/programs/ld-address.c:596 locale/programs/ld-collate.c:520
-#: locale/programs/ld-collate.c:572 locale/programs/ld-collate.c:869
-#: locale/programs/ld-collate.c:882 locale/programs/ld-collate.c:2625
-#: locale/programs/ld-collate.c:3784 locale/programs/ld-ctype.c:1947
-#: locale/programs/ld-ctype.c:2206 locale/programs/ld-ctype.c:2782
-#: locale/programs/ld-ctype.c:2968 locale/programs/ld-identification.c:460
-#: locale/programs/ld-measurement.c:246 locale/programs/ld-messages.c:340
-#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:315
-#: locale/programs/ld-numeric.c:383 locale/programs/ld-paper.c:249
-#: locale/programs/ld-telephone.c:321 locale/programs/ld-time.c:1208
+msgstr "%s: ufuldstændig 'END'-linje"
+
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
+#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
+#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
+#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
+#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
+#: locale/programs/ld-identification.c:459
+#: locale/programs/ld-measurement.c:245 locale/programs/ld-messages.c:339
+#: locale/programs/ld-monetary.c:950 locale/programs/ld-name.c:314
+#: locale/programs/ld-numeric.c:375 locale/programs/ld-paper.c:248
+#: locale/programs/ld-telephone.c:320 locale/programs/ld-time.c:1228
#, c-format
msgid "%s: syntax error"
msgstr "%s: syntaksfejl"
-#: locale/programs/ld-collate.c:395
+#: locale/programs/ld-collate.c:417
#, c-format
msgid "`%.*s' already defined in charmap"
msgstr "'%.*s' allerede defineret i tegntabel"
-#: locale/programs/ld-collate.c:404
+#: locale/programs/ld-collate.c:426
#, c-format
msgid "`%.*s' already defined in repertoire"
msgstr "'%.*s' allerede defineret i repertoire"
-#: locale/programs/ld-collate.c:411
+#: locale/programs/ld-collate.c:433
#, c-format
msgid "`%.*s' already defined as collating symbol"
msgstr "'%.*s' allerede defineret som sammenligningssymbol"
-#: locale/programs/ld-collate.c:418
+#: locale/programs/ld-collate.c:440
#, c-format
msgid "`%.*s' already defined as collating element"
msgstr "'%.*s' allerede defineret som sammenligningselement"
-#: locale/programs/ld-collate.c:449 locale/programs/ld-collate.c:475
+#: locale/programs/ld-collate.c:471 locale/programs/ld-collate.c:497
#, c-format
msgid "%s: `forward' and `backward' are mutually excluding each other"
msgstr "%s: sorteringsrækkefølgen 'forward' og 'backward' udelukker hinanden"
-#: locale/programs/ld-collate.c:459 locale/programs/ld-collate.c:485
-#: locale/programs/ld-collate.c:501
+#: locale/programs/ld-collate.c:481 locale/programs/ld-collate.c:507
+#: locale/programs/ld-collate.c:523
#, c-format
msgid "%s: `%s' mentioned more than once in definition of weight %d"
msgstr "%s: '%s' nævnt mere end én gang i definitionen af vægt %d"
-#: locale/programs/ld-collate.c:557
+#: locale/programs/ld-collate.c:579
#, c-format
msgid "%s: too many rules; first entry only had %d"
msgstr "%s: for mange regler; første indgang havde kun %d"
-#: locale/programs/ld-collate.c:593
+#: locale/programs/ld-collate.c:615
#, c-format
msgid "%s: not enough sorting rules"
msgstr "%s: ikke nok sorteringsregler"
-#: locale/programs/ld-collate.c:759
+#: locale/programs/ld-collate.c:780
#, c-format
msgid "%s: empty weight string not allowed"
-msgstr "%s: tomt vægt-streng ikke tilladt"
+msgstr "%s: tom vægt-streng ikke tilladt"
-#: locale/programs/ld-collate.c:854
+#: locale/programs/ld-collate.c:875
#, c-format
msgid "%s: weights must use the same ellipsis symbol as the name"
msgstr "%s: vægte skal bruge det samme ellipse-symbol som navnet"
-#: locale/programs/ld-collate.c:910
+#: locale/programs/ld-collate.c:931
#, c-format
msgid "%s: too many values"
msgstr "%s: For mange værdier"
-#: locale/programs/ld-collate.c:1023 locale/programs/ld-collate.c:1194
+#: locale/programs/ld-collate.c:1051 locale/programs/ld-collate.c:1226
#, c-format
msgid "order for `%.*s' already defined at %s:%Zu"
msgstr "sorteringsorden for '%.*s' allerede defineret ved %s:%Zu"
-#: locale/programs/ld-collate.c:1073
+#: locale/programs/ld-collate.c:1101
#, c-format
msgid "%s: the start and the end symbol of a range must stand for characters"
msgstr "%s: start- og slut-symbolet for et interval skal stå for tegn"
-#: locale/programs/ld-collate.c:1100
+#: locale/programs/ld-collate.c:1128
#, c-format
msgid "%s: byte sequences of first and last character must have the same length"
msgstr "%s: bytesekvensen for første og sidste tegn skal have samme længde"
-#: locale/programs/ld-collate.c:1142
+#: locale/programs/ld-collate.c:1170
#, c-format
-msgid "%s: byte sequence of first character of sequence is not lower than that of the last character"
-msgstr "%s: bytesekvensen af det første tegn i sekvensen er ikke mindre end for det sidste tegn"
+msgid "%s: byte sequence of first character of range is not lower than that of the last character"
+msgstr "%s: bytesekvensen af det første tegn i området er ikke mindre end sekvensen for det sidste tegn"
-#: locale/programs/ld-collate.c:1263
+#: locale/programs/ld-collate.c:1295
#, c-format
msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
-msgstr "%s: symbolsk interval-ellipse må ikke komme umiddelbart efter 'order_end'"
+msgstr "%s: symbolsk interval-ellipse må ikke komme umiddelbart efter 'order_start'"
-#: locale/programs/ld-collate.c:1267
+#: locale/programs/ld-collate.c:1299
#, c-format
msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'"
msgstr "%s: symbolsk interval-ellipse må ikke være fulgt umiddelbart af 'order_end'"
-#: locale/programs/ld-collate.c:1287 locale/programs/ld-ctype.c:1467
+#: locale/programs/ld-collate.c:1319 locale/programs/ld-ctype.c:1477
#, c-format
msgid "`%s' and `%.*s' are not valid names for symbolic range"
-msgstr "'%s' og '%.*s' er ikke gyldige navne for tegnområde"
+msgstr "'%s' og '%.*s' er ikke gyldige navne for symbolsk område"
-#: locale/programs/ld-collate.c:1333 locale/programs/ld-collate.c:3712
+#: locale/programs/ld-collate.c:1369 locale/programs/ld-collate.c:3858
#, c-format
msgid "%s: order for `%.*s' already defined at %s:%Zu"
msgstr "%s: rækkefølge for '%.*s' allerede defineret ved %s:%Zu"
-#: locale/programs/ld-collate.c:1342
+#: locale/programs/ld-collate.c:1378
#, c-format
msgid "%s: `%s' must be a character"
msgstr "%s: '%s' skal være et tegn"
-#: locale/programs/ld-collate.c:1535
+#: locale/programs/ld-collate.c:1573
#, c-format
msgid "%s: `position' must be used for a specific level in all sections or none"
-msgstr "%s: 'position' skal bruges på det samme niveau i alle sektioner"
+msgstr "%s: 'position' skal bruges på det samme niveau i alle sektioner, ellers ingen"
-#: locale/programs/ld-collate.c:1560
+#: locale/programs/ld-collate.c:1598
#, c-format
msgid "symbol `%s' not defined"
msgstr "symbol '%s' ikke defineret"
-#: locale/programs/ld-collate.c:1636 locale/programs/ld-collate.c:1742
+#: locale/programs/ld-collate.c:1674 locale/programs/ld-collate.c:1780
#, c-format
msgid "symbol `%s' has the same encoding as"
-msgstr "symbol '%s' har den samme kodning som "
+msgstr "symbol '%s' har den samme kodning som"
-#: locale/programs/ld-collate.c:1640 locale/programs/ld-collate.c:1746
+#: locale/programs/ld-collate.c:1678 locale/programs/ld-collate.c:1784
#, c-format
msgid "symbol `%s'"
msgstr "symbol '%s'"
-#: locale/programs/ld-collate.c:1788
+#: locale/programs/ld-collate.c:1826
+#, c-format
msgid "no definition of `UNDEFINED'"
msgstr "ingen definition af 'UNDEFINED'"
-#: locale/programs/ld-collate.c:1817
+#: locale/programs/ld-collate.c:1855
+#, c-format
msgid "too many errors; giving up"
msgstr "for mange fejl, giver op"
-#: locale/programs/ld-collate.c:2720
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
+#, c-format
+msgid "%s: nested conditionals not supported"
+msgstr "%s betingelser i niveauer er ikke understøttet"
+
+#: locale/programs/ld-collate.c:2677
+#, c-format
+msgid "%s: more then one 'else'"
+msgstr "%s: Mere end ét 'else'"
+
+#: locale/programs/ld-collate.c:2852
#, c-format
msgid "%s: duplicate definition of `%s'"
-msgstr "%s: duplikeret definition af '%s'"
+msgstr "%s: duplikér definition af '%s'"
-#: locale/programs/ld-collate.c:2756
+#: locale/programs/ld-collate.c:2888
#, c-format
msgid "%s: duplicate declaration of section `%s'"
-msgstr "%s: duplikeret definition af sektion '%s'"
+msgstr "%s: duplikér definition af sektion '%s'"
-#: locale/programs/ld-collate.c:2895
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
msgstr "%s: ukendt tegn i sammenligningsymbolnavn"
-#: locale/programs/ld-collate.c:3027
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
msgstr "%s: ukendt tegn i ækvivalens-definitions-navn"
-#: locale/programs/ld-collate.c:3040
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
msgstr "%s: ukendt tegn i ækvivalens-definitions-værdi"
-#: locale/programs/ld-collate.c:3050
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
msgstr "%s: ukendt symbol '%s' i ækvivalens-definition"
-#: locale/programs/ld-collate.c:3059
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
msgstr "fejl under indsætning af ækvivalens-sammenligningssymbol"
-#: locale/programs/ld-collate.c:3089
+#: locale/programs/ld-collate.c:3221
#, c-format
msgid "duplicate definition of script `%s'"
-msgstr "duplikeret definition af skript '%s'"
+msgstr "duplikér definition af skript '%s'"
-#: locale/programs/ld-collate.c:3137
+#: locale/programs/ld-collate.c:3269
#, c-format
-msgid "%s: unknown section name `%s'"
-msgstr "%s: ukendt sektionsnavn '%s'"
+msgid "%s: unknown section name `%.*s'"
+msgstr "%s: ukendt sektionsnavn '%.*s'"
-#: locale/programs/ld-collate.c:3165
+#: locale/programs/ld-collate.c:3298
#, c-format
msgid "%s: multiple order definitions for section `%s'"
-msgstr "%s: duplikeret definition af orden for sektion '%s'"
+msgstr "%s: flere definitioner af orden for sektion '%s'"
-#: locale/programs/ld-collate.c:3190
+#: locale/programs/ld-collate.c:3326
#, c-format
msgid "%s: invalid number of sorting rules"
-msgstr "%s: ulovligt antal sorteringsregler"
+msgstr "%s: ugyldigt antal sorteringsregler"
-#: locale/programs/ld-collate.c:3217
+#: locale/programs/ld-collate.c:3353
#, c-format
msgid "%s: multiple order definitions for unnamed section"
-msgstr "%s: duplikeret definition af orden for unavngiven sektion"
+msgstr "%s: flere definitioner af orden for unavngiven sektion"
-#: locale/programs/ld-collate.c:3271 locale/programs/ld-collate.c:3394
-#: locale/programs/ld-collate.c:3753
+#: locale/programs/ld-collate.c:3407 locale/programs/ld-collate.c:3537
+#: locale/programs/ld-collate.c:3900
#, c-format
msgid "%s: missing `order_end' keyword"
msgstr "%s: manglende 'order_end' nøgleord"
-#: locale/programs/ld-collate.c:3329
+#: locale/programs/ld-collate.c:3470
#, c-format
msgid "%s: order for collating symbol %.*s not yet defined"
msgstr "%s: rækkefølge for sammenligningssymbol '%.*s' endnu ikke defineret"
-#: locale/programs/ld-collate.c:3345
+#: locale/programs/ld-collate.c:3488
#, c-format
msgid "%s: order for collating element %.*s not yet defined"
msgstr "%s: rækkefølge for sammenligningselement '%.*s' endnu ikke defineret"
-#: locale/programs/ld-collate.c:3356
+#: locale/programs/ld-collate.c:3499
#, c-format
msgid "%s: cannot reorder after %.*s: symbol not known"
msgstr "%s: kan ikke ordne efter %.*s: symbol ikke kendt"
-#: locale/programs/ld-collate.c:3408 locale/programs/ld-collate.c:3765
+#: locale/programs/ld-collate.c:3551 locale/programs/ld-collate.c:3912
#, c-format
msgid "%s: missing `reorder-end' keyword"
msgstr "%s: manglende 'reorder-end' nøgleord"
-#: locale/programs/ld-collate.c:3442 locale/programs/ld-collate.c:3637
+#: locale/programs/ld-collate.c:3585 locale/programs/ld-collate.c:3783
#, c-format
msgid "%s: section `%.*s' not known"
msgstr "%s: sektion '%.*s' ukendt"
-#: locale/programs/ld-collate.c:3507
+#: locale/programs/ld-collate.c:3650
#, c-format
msgid "%s: bad symbol <%.*s>"
-msgstr "%s: ugyldigt symbol: <%.*s>"
+msgstr "%s: dårligt symbol: <%.*s>"
-#: locale/programs/ld-collate.c:3700
+#: locale/programs/ld-collate.c:3846
#, c-format
msgid "%s: cannot have `%s' as end of ellipsis range"
msgstr "%s: kan ikke have '%s' som slutning på ellipse-interval"
-#: locale/programs/ld-collate.c:3749
+#: locale/programs/ld-collate.c:3896
#, c-format
msgid "%s: empty category description not allowed"
msgstr "%s: tom kategori-beskrivelse ikke tilladt"
-#: locale/programs/ld-collate.c:3768
+#: locale/programs/ld-collate.c:3915
#, c-format
msgid "%s: missing `reorder-sections-end' keyword"
msgstr "%s: manglende 'reorder-sections-end' nøgleord"
-#: locale/programs/ld-ctype.c:435
+#: locale/programs/ld-collate.c:4079
+#, c-format
+msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
+msgstr "%s: \"%s\" uden tilsvarende \"ifdef\" eller \"ifndef\""
+
+#: locale/programs/ld-collate.c:4097
+#, c-format
+msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
+msgstr "%s: \"endif\" uden tilsvarende \"ifdef\" eller \"ifndef\""
+
+#: locale/programs/ld-ctype.c:439
+#, c-format
msgid "No character set name specified in charmap"
msgstr "Intet tegnsætsnavn angivet i tegntabel"
-#: locale/programs/ld-ctype.c:464
+#: locale/programs/ld-ctype.c:468
#, c-format
msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
msgstr "tegnet L'\\u%0*x' i klassen '%s' skal være i klassen '%s'"
-#: locale/programs/ld-ctype.c:479
+#: locale/programs/ld-ctype.c:483
#, c-format
msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'"
msgstr "tegnet L'\\u%0*x' i klassen '%s' kan ikke være i klassen '%s'"
-#: locale/programs/ld-ctype.c:493 locale/programs/ld-ctype.c:551
+#: locale/programs/ld-ctype.c:497 locale/programs/ld-ctype.c:555
#, c-format
msgid "internal error in %s, line %u"
-msgstr "intern fejl i %s, linie %u"
+msgstr "intern fejl i %s, linje %u"
-#: locale/programs/ld-ctype.c:522
+#: locale/programs/ld-ctype.c:526
#, c-format
msgid "character '%s' in class `%s' must be in class `%s'"
msgstr "tegnet '%s' i klassen '%s' skal være i klassen '%s'"
-#: locale/programs/ld-ctype.c:538
+#: locale/programs/ld-ctype.c:542
#, c-format
msgid "character '%s' in class `%s' must not be in class `%s'"
msgstr "tegnet '%s' i klassen '%s' må ikke være i klassen '%s'"
-#: locale/programs/ld-ctype.c:568 locale/programs/ld-ctype.c:606
+#: locale/programs/ld-ctype.c:572 locale/programs/ld-ctype.c:610
#, c-format
msgid "<SP> character not in class `%s'"
msgstr "tegnet <SP> er ikke i klassen '%s'"
-#: locale/programs/ld-ctype.c:580 locale/programs/ld-ctype.c:617
+#: locale/programs/ld-ctype.c:584 locale/programs/ld-ctype.c:621
#, c-format
msgid "<SP> character must not be in class `%s'"
msgstr "tegnet <SP> må ikke være i klassen '%s'"
-#: locale/programs/ld-ctype.c:595
+#: locale/programs/ld-ctype.c:599
+#, c-format
msgid "character <SP> not defined in character map"
msgstr "tegnet <SP> ikke defineret i tegntabellen"
-#: locale/programs/ld-ctype.c:709
+#: locale/programs/ld-ctype.c:714
+#, c-format
msgid "`digit' category has not entries in groups of ten"
msgstr "'digit' kategori har ikke elementer i grupper af ti"
-#: locale/programs/ld-ctype.c:758
+#: locale/programs/ld-ctype.c:763
+#, c-format
msgid "no input digits defined and none of the standard names in the charmap"
msgstr "ingen inddata-cifre defineret, og ingen af standardnavnene i tegntabellen"
-#: locale/programs/ld-ctype.c:823
+#: locale/programs/ld-ctype.c:828
+#, c-format
msgid "not all characters used in `outdigit' are available in the charmap"
msgstr "ikke alle tegn brugt i 'outdigit' er tilstede i tegntabellen"
-#: locale/programs/ld-ctype.c:840
+#: locale/programs/ld-ctype.c:845
+#, c-format
msgid "not all characters used in `outdigit' are available in the repertoire"
msgstr "ikke alle tegn brugt i 'outdigit' er tilstede i repertoiret"
-#: locale/programs/ld-ctype.c:1235
+#: locale/programs/ld-ctype.c:1245
#, c-format
msgid "character class `%s' already defined"
msgstr "tegnklassen '%s' allerede defineret"
-#: locale/programs/ld-ctype.c:1241
+#: locale/programs/ld-ctype.c:1251
#, c-format
msgid "implementation limit: no more than %Zd character classes allowed"
msgstr "implementationsbegrænsning: ikke flere end %Zd tegnklasser er tilladt"
-#: locale/programs/ld-ctype.c:1267
+#: locale/programs/ld-ctype.c:1277
#, c-format
msgid "character map `%s' already defined"
msgstr "tegntabellen '%s' allerede defineret"
-#: locale/programs/ld-ctype.c:1273
+#: locale/programs/ld-ctype.c:1283
#, c-format
msgid "implementation limit: no more than %d character maps allowed"
msgstr "implementationsbegrænsning: ikke flere end %d tegntabeller tilladt"
-#: locale/programs/ld-ctype.c:1538 locale/programs/ld-ctype.c:1663
-#: locale/programs/ld-ctype.c:1769 locale/programs/ld-ctype.c:2455
-#: locale/programs/ld-ctype.c:3443
+#: locale/programs/ld-ctype.c:1548 locale/programs/ld-ctype.c:1673
+#: locale/programs/ld-ctype.c:1779 locale/programs/ld-ctype.c:2471
+#: locale/programs/ld-ctype.c:3467
#, c-format
msgid "%s: field `%s' does not contain exactly ten entries"
msgstr "%s: felt '%s' indeholder ikke præcis 10 elementer"
-#: locale/programs/ld-ctype.c:1566 locale/programs/ld-ctype.c:2137
+#: locale/programs/ld-ctype.c:1576 locale/programs/ld-ctype.c:2150
#, c-format
msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
msgstr "'to'-værdi <U%0*X> i intervallet er mindre end 'from'-værdi <U%0*X>"
-#: locale/programs/ld-ctype.c:1693
+#: locale/programs/ld-ctype.c:1703
msgid "start and end character sequence of range must have the same length"
msgstr "start og slut tegnsekvens for områder skal have samme længde"
-#: locale/programs/ld-ctype.c:1700
+#: locale/programs/ld-ctype.c:1710
msgid "to-value character sequence is smaller than from-value sequence"
msgstr "'to'-værdi tegnfølgen er mindre end 'from'-værdi tegnfølgen"
-#: locale/programs/ld-ctype.c:2057 locale/programs/ld-ctype.c:2108
+#: locale/programs/ld-ctype.c:2070 locale/programs/ld-ctype.c:2121
msgid "premature end of `translit_ignore' definition"
msgstr "For tidlig afslutning på 'translit_ignore' definition"
-#: locale/programs/ld-ctype.c:2063 locale/programs/ld-ctype.c:2114
-#: locale/programs/ld-ctype.c:2156
+#: locale/programs/ld-ctype.c:2076 locale/programs/ld-ctype.c:2127
+#: locale/programs/ld-ctype.c:2169
msgid "syntax error"
msgstr "syntaksfejl"
-#: locale/programs/ld-ctype.c:2287
+#: locale/programs/ld-ctype.c:2303
#, c-format
msgid "%s: syntax error in definition of new character class"
msgstr "%s: syntaksfejl i definition af ny tegnklasse"
-#: locale/programs/ld-ctype.c:2302
+#: locale/programs/ld-ctype.c:2318
#, c-format
msgid "%s: syntax error in definition of new character map"
msgstr "%s: syntaksfejl i definition af ny tegntabel"
-#: locale/programs/ld-ctype.c:2477
+#: locale/programs/ld-ctype.c:2493
msgid "ellipsis range must be marked by two operands of same type"
msgstr "ellipse-områder skal angives ved to operander af samme type"
-#: locale/programs/ld-ctype.c:2486
+#: locale/programs/ld-ctype.c:2502
msgid "with symbolic name range values the absolute ellipsis `...' must not be used"
msgstr "ved symbolske interval-værdier må den absolutte ellipse '...' ikke bruges"
-#: locale/programs/ld-ctype.c:2501
+#: locale/programs/ld-ctype.c:2517
msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
msgstr "ved UCS-interval-værdier skal man bruge heksadecimal symbolsk ellipse"
-#: locale/programs/ld-ctype.c:2515
+#: locale/programs/ld-ctype.c:2531
msgid "with character code range values one must use the absolute ellipsis `...'"
msgstr "ved tegnkode interval-værdier skal man bruge absolut ellipse '...'"
-#: locale/programs/ld-ctype.c:2666
+#: locale/programs/ld-ctype.c:2682
#, c-format
msgid "duplicated definition for mapping `%s'"
msgstr "duplikeret definition af afbildning '%s'"
-#: locale/programs/ld-ctype.c:2744 locale/programs/ld-ctype.c:2888
+#: locale/programs/ld-ctype.c:2768 locale/programs/ld-ctype.c:2912
#, c-format
msgid "%s: `translit_start' section does not end with `translit_end'"
msgstr "%s: 'translit_start'-sektionen slutter ikke med 'translit_end'"
-#: locale/programs/ld-ctype.c:2839
+#: locale/programs/ld-ctype.c:2863
#, c-format
msgid "%s: duplicate `default_missing' definition"
-msgstr "%s: duplikeret definition af 'default_missing'"
+msgstr "%s: duplikér definition af 'default_missing'"
-#: locale/programs/ld-ctype.c:2844
+#: locale/programs/ld-ctype.c:2868
msgid "previous definition was here"
msgstr "den foregående definition var her"
-#: locale/programs/ld-ctype.c:2866
+#: locale/programs/ld-ctype.c:2890
#, c-format
msgid "%s: no representable `default_missing' definition found"
msgstr "%s: ingen repræsenterbar 'default_missing' definition fundet"
-#: locale/programs/ld-ctype.c:3019
+#: locale/programs/ld-ctype.c:3043 locale/programs/ld-ctype.c:3127
+#: locale/programs/ld-ctype.c:3147 locale/programs/ld-ctype.c:3168
+#: locale/programs/ld-ctype.c:3189 locale/programs/ld-ctype.c:3210
+#: locale/programs/ld-ctype.c:3231 locale/programs/ld-ctype.c:3271
+#: locale/programs/ld-ctype.c:3292 locale/programs/ld-ctype.c:3359
+#: locale/programs/ld-ctype.c:3401 locale/programs/ld-ctype.c:3426
#, c-format
-msgid "%s: character `%s' not defined in charmap while needed as default value"
+msgid "%s: character `%s' not defined while needed as default value"
msgstr "%s: tegnet '%s' ikke defineret, men behøves som standardværdi"
-#: locale/programs/ld-ctype.c:3024 locale/programs/ld-ctype.c:3108
-#: locale/programs/ld-ctype.c:3128 locale/programs/ld-ctype.c:3149
-#: locale/programs/ld-ctype.c:3170 locale/programs/ld-ctype.c:3191
-#: locale/programs/ld-ctype.c:3212 locale/programs/ld-ctype.c:3252
-#: locale/programs/ld-ctype.c:3273 locale/programs/ld-ctype.c:3340
+#: locale/programs/ld-ctype.c:3048 locale/programs/ld-ctype.c:3132
+#: locale/programs/ld-ctype.c:3152 locale/programs/ld-ctype.c:3173
+#: locale/programs/ld-ctype.c:3194 locale/programs/ld-ctype.c:3215
+#: locale/programs/ld-ctype.c:3236 locale/programs/ld-ctype.c:3276
+#: locale/programs/ld-ctype.c:3297 locale/programs/ld-ctype.c:3364
#, c-format
msgid "%s: character `%s' in charmap not representable with one byte"
msgstr "%s: tegnet '%s' i tegntabel ikke repræsenterbar med én byte"
-#: locale/programs/ld-ctype.c:3103 locale/programs/ld-ctype.c:3123
-#: locale/programs/ld-ctype.c:3165 locale/programs/ld-ctype.c:3186
-#: locale/programs/ld-ctype.c:3207 locale/programs/ld-ctype.c:3247
-#: locale/programs/ld-ctype.c:3268 locale/programs/ld-ctype.c:3335
-#: locale/programs/ld-ctype.c:3377 locale/programs/ld-ctype.c:3402
-#, c-format
-msgid "%s: character `%s' not defined while needed as default value"
-msgstr "%s: tegnet '%s' ikke defineret, men behøves som standardværdi"
-
-#: locale/programs/ld-ctype.c:3144
-#, c-format
-msgid "character `%s' not defined while needed as default value"
-msgstr "tegnet '%s' ikke defineret, men behøves som standardværdi"
-
-#: locale/programs/ld-ctype.c:3384 locale/programs/ld-ctype.c:3409
+#: locale/programs/ld-ctype.c:3408 locale/programs/ld-ctype.c:3433
#, c-format
msgid "%s: character `%s' needed as default value not representable with one byte"
msgstr "%s: Tegnet '%s' brugt som standardværdi er ikke repræsenterbar med én byte"
-#: locale/programs/ld-ctype.c:3464
+#: locale/programs/ld-ctype.c:3489
+#, c-format
msgid "no output digits defined and none of the standard names in the charmap"
msgstr "ingen uddata-cifre defineret, og ingen af standardnavnene i tegntabellen"
-#: locale/programs/ld-ctype.c:3755
+#: locale/programs/ld-ctype.c:3780
#, c-format
msgid "%s: transliteration data from locale `%s' not available"
msgstr "%s: transliterationsdata fra lokale '%s' ikke tilgængelige"
-#: locale/programs/ld-ctype.c:3851
+#: locale/programs/ld-ctype.c:3881
#, c-format
msgid "%s: table for class \"%s\": %lu bytes\n"
msgstr "%s: tabel for class \"%s\": %lu byte\n"
-#: locale/programs/ld-ctype.c:3920
+#: locale/programs/ld-ctype.c:3950
#, c-format
msgid "%s: table for map \"%s\": %lu bytes\n"
msgstr "%s: tabel for map \"%s\": %lu byte\n"
-#: locale/programs/ld-ctype.c:4053
+#: locale/programs/ld-ctype.c:4083
#, c-format
msgid "%s: table for width: %lu bytes\n"
msgstr "%s: tabel for width: %lu byte\n"
-#: locale/programs/ld-identification.c:171
+#: locale/programs/ld-identification.c:170
#, c-format
msgid "%s: no identification for category `%s'"
msgstr "%s: ingen identifikation for kategori '%s'"
-#: locale/programs/ld-identification.c:436
+#: locale/programs/ld-identification.c:435
#, c-format
msgid "%s: duplicate category version definition"
-msgstr "%s: duplikeret definition af kategoriversion"
+msgstr "%s: duplikér definition af kategoriversion"
-#: locale/programs/ld-measurement.c:114
+#: locale/programs/ld-measurement.c:113
#, c-format
msgid "%s: invalid value for field `%s'"
msgstr "%s: ugyldig værdi for felt '%s'"
-#: locale/programs/ld-messages.c:115 locale/programs/ld-messages.c:149
+#: locale/programs/ld-messages.c:114 locale/programs/ld-messages.c:148
#, c-format
msgid "%s: field `%s' undefined"
msgstr "%s: felt '%s' udefineret"
-#: locale/programs/ld-messages.c:122 locale/programs/ld-messages.c:156
+#: locale/programs/ld-messages.c:121 locale/programs/ld-messages.c:155
+#: locale/programs/ld-monetary.c:256 locale/programs/ld-numeric.c:118
#, c-format
msgid "%s: value for field `%s' must not be an empty string"
-msgstr "%s: værdien på felt '%s' må ikke være en tom streng"
+msgstr "%s: værdien for felt '%s' må ikke være en tom streng"
-#: locale/programs/ld-messages.c:138 locale/programs/ld-messages.c:172
+#: locale/programs/ld-messages.c:137 locale/programs/ld-messages.c:171
#, c-format
msgid "%s: no correct regular expression for field `%s': %s"
msgstr "%s: intet korrekt regulært udtryk for felt '%s': %s"
@@ -1137,212 +2240,194 @@ msgstr "%s: intet korrekt regulært udtryk for felt '%s': %s"
#: locale/programs/ld-monetary.c:224
#, c-format
msgid "%s: value of field `int_curr_symbol' has wrong length"
-msgstr "%s: værdien for feltet 'int_curr_symbol' har forkert længde"
+msgstr "%s: værdien for felt 'int_curr_symbol' har forkert længde"
-#: locale/programs/ld-monetary.c:232
+#: locale/programs/ld-monetary.c:237
#, c-format
msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217"
-msgstr "%s: værdien for feltet 'int_curr_symbol' svarer ikke til et gyldigt navn i ISO 4217"
-
-#: locale/programs/ld-monetary.c:250 locale/programs/ld-numeric.c:119
-#, c-format
-msgid "%s: value for field `%s' must not be the empty string"
-msgstr "%s: værdien på felt '%s' må ikke være den tomme streng"
+msgstr "%s: værdien for felt 'int_curr_symbol' svarer ikke til et gyldigt navn i ISO 4217"
-#: locale/programs/ld-monetary.c:278 locale/programs/ld-monetary.c:308
+#: locale/programs/ld-monetary.c:285 locale/programs/ld-monetary.c:315
#, c-format
msgid "%s: value for field `%s' must be in range %d...%d"
msgstr "%s: værdi for felt '%s' skal være i intervallet %d...%d"
-#: locale/programs/ld-monetary.c:740 locale/programs/ld-numeric.c:275
+#: locale/programs/ld-monetary.c:747 locale/programs/ld-numeric.c:274
#, c-format
msgid "%s: value for field `%s' must be a single character"
msgstr "%s: værdi for felt '%s' skal være et enkelt tegn"
-#: locale/programs/ld-monetary.c:837 locale/programs/ld-numeric.c:319
+#: locale/programs/ld-monetary.c:844 locale/programs/ld-numeric.c:318
#, c-format
msgid "%s: `-1' must be last entry in `%s' field"
msgstr "%s: '-1' skal være sidste post i '%s' feltet"
-#: locale/programs/ld-monetary.c:859 locale/programs/ld-numeric.c:340
+#: locale/programs/ld-monetary.c:866 locale/programs/ld-numeric.c:335
#, c-format
msgid "%s: values for field `%s' must be smaller than 127"
msgstr "%s: værdier på felt '%s' skal være lavere end 127"
-#: locale/programs/ld-monetary.c:902
+#: locale/programs/ld-monetary.c:909
msgid "conversion rate value cannot be zero"
msgstr "vekselkurs-værdi kan ikke være nul"
-#: locale/programs/ld-name.c:130 locale/programs/ld-telephone.c:127
-#: locale/programs/ld-telephone.c:150
+#: locale/programs/ld-name.c:129 locale/programs/ld-telephone.c:126
+#: locale/programs/ld-telephone.c:149
#, c-format
msgid "%s: invalid escape sequence in field `%s'"
-msgstr "%s: ulovlig undvigetegnsekvens i felt '%s'"
+msgstr "%s: ugyldig undvigetegnsekvens i felt '%s'"
-#: locale/programs/ld-time.c:248
+#: locale/programs/ld-time.c:247
#, c-format
msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'"
msgstr "%s: retningsflag i streng %Zd i 'era'-felt er ikke '+' eller '-'"
-#: locale/programs/ld-time.c:259
+#: locale/programs/ld-time.c:258
#, c-format
msgid "%s: direction flag in string %Zd in `era' field is not a single character"
msgstr "%s: retningsflag i streng %Zd i 'era'-felt er ikke et enkelt tegn"
-#: locale/programs/ld-time.c:272
+#: locale/programs/ld-time.c:271
#, c-format
msgid "%s: invalid number for offset in string %Zd in `era' field"
-msgstr "%s: ulovligt tal for tillægsværdi i streng %Zd i 'era'-felt"
+msgstr "%s: ugyldigt tal for tillægsværdi i streng %Zd i 'era'-felt"
-#: locale/programs/ld-time.c:280
+#: locale/programs/ld-time.c:279
#, c-format
msgid "%s: garbage at end of offset value in string %Zd in `era' field"
msgstr "%s: snavs i slutningen af tillægsværdi i streng %Zd i 'era'-felt"
-#: locale/programs/ld-time.c:331
+#: locale/programs/ld-time.c:330
#, c-format
msgid "%s: invalid starting date in string %Zd in `era' field"
-msgstr "%s: ulovlig startdato i streng %Zd i 'era'-felt"
+msgstr "%s: ugyldig startdato i streng %Zd i 'era'-felt"
-#: locale/programs/ld-time.c:340
+#: locale/programs/ld-time.c:339
#, c-format
msgid "%s: garbage at end of starting date in string %Zd in `era' field "
msgstr "%s: snavs i slutningen af startdato i streng %Zd i 'era'-felt"
-#: locale/programs/ld-time.c:359
+#: locale/programs/ld-time.c:358
#, c-format
msgid "%s: starting date is invalid in string %Zd in `era' field"
msgstr "%s: startdato er ugyldig i streng %Zd i 'era'-felt"
-#: locale/programs/ld-time.c:408
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
-msgstr "%s: ulovlig slutdato i streng %Zd i 'era'-felt"
+msgstr "%s: ugyldig slutdato i streng %Zd i 'era'-felt"
-#: locale/programs/ld-time.c:417
+#: locale/programs/ld-time.c:416
#, c-format
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
msgstr "%s: snavs i slutningen af slutdato i streng %Zd i 'era'-felt"
-#: locale/programs/ld-time.c:436
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s: slutdato er ugyldig i streng %Zd i 'era'-felt"
-
-#: locale/programs/ld-time.c:445
+#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
msgstr "%s: manglende era-navn i streng %Zd i 'era'-felt"
-#: locale/programs/ld-time.c:457
+#: locale/programs/ld-time.c:456
#, c-format
msgid "%s: missing era format in string %Zd in `era' field"
msgstr "%s: manglende era-format i streng %Zd i 'era'-felt"
-#: locale/programs/ld-time.c:486
+#: locale/programs/ld-time.c:497
#, c-format
msgid "%s: third operand for value of field `%s' must not be larger than %d"
msgstr "%s: tredje operand for værdien af felt '%s' må ikke være større end %d"
-#: locale/programs/ld-time.c:494 locale/programs/ld-time.c:502
-#, c-format
-msgid "%s: values of field `%s' must not be larger than %d"
-msgstr "%s: værdier på felt '%s' må ikke være større end %d"
-
-#: locale/programs/ld-time.c:510
+#: locale/programs/ld-time.c:505 locale/programs/ld-time.c:513
+#: locale/programs/ld-time.c:521
#, c-format
msgid "%s: values for field `%s' must not be larger than %d"
msgstr "%s: værdier for felt '%s' må ikke være større end %d"
-#: locale/programs/ld-time.c:984
+#: locale/programs/ld-time.c:1004
#, c-format
msgid "%s: too few values for field `%s'"
msgstr "%s: for få værdier for felt '%s'"
-#: locale/programs/ld-time.c:1029
+#: locale/programs/ld-time.c:1049
msgid "extra trailing semicolon"
msgstr "ekstra efterfølgende semikolon"
-#: locale/programs/ld-time.c:1032
+#: locale/programs/ld-time.c:1052
#, c-format
msgid "%s: too many values for field `%s'"
msgstr "%s: for mange værdier for felt '%s'"
-#: locale/programs/linereader.c:275
+#: locale/programs/linereader.c:130
+msgid "trailing garbage at end of line"
+msgstr "efterfølgende snavs på slutningen af linjen"
+
+#: locale/programs/linereader.c:298
msgid "garbage at end of number"
msgstr "snavs i slutningen af tal"
-#: locale/programs/linereader.c:387
+#: locale/programs/linereader.c:410
msgid "garbage at end of character code specification"
msgstr "snavs i slutningen af tegnkodespecifikation"
-#: locale/programs/linereader.c:473
+#: locale/programs/linereader.c:496
msgid "unterminated symbolic name"
msgstr "uafsluttet symbolsk navn"
-#: locale/programs/linereader.c:537 catgets/gencat.c:1195
-msgid "invalid escape sequence"
-msgstr "ugyldig undtagelsessekvens"
-
-#: locale/programs/linereader.c:600
+#: locale/programs/linereader.c:623
msgid "illegal escape sequence at end of string"
-msgstr "ulovlig tegnsekvens ved slutningen af streng"
+msgstr "ugyldig undvigetegnsekvens ved slutningen af streng"
-#: locale/programs/linereader.c:604 locale/programs/linereader.c:832
+#: locale/programs/linereader.c:627 locale/programs/linereader.c:855
msgid "unterminated string"
msgstr "uafsluttet streng"
-#: locale/programs/linereader.c:646
+#: locale/programs/linereader.c:669
msgid "non-symbolic character value should not be used"
msgstr "ikke-symbolske tegnværdier bør ikke bruges"
-#: locale/programs/linereader.c:793
+#: locale/programs/linereader.c:816
#, c-format
msgid "symbol `%.*s' not in charmap"
msgstr "symbol '%.*s' ikke i tegntabel"
-#: locale/programs/linereader.c:814
+#: locale/programs/linereader.c:837
#, c-format
msgid "symbol `%.*s' not in repertoire map"
-msgstr "symbol '%.*s' repertoiretabel"
-
-#: locale/programs/linereader.h:162
-msgid "trailing garbage at end of line"
-msgstr "efterfølgende snavs på slutningen af linien"
+msgstr "symbol '%.*s' ikke i repertoiretabel"
-#: locale/programs/locale.c:75
+#: locale/programs/locale.c:74
msgid "System information:"
msgstr "Systeminformation:"
-#: locale/programs/locale.c:77
+#: locale/programs/locale.c:76
msgid "Write names of available locales"
-msgstr "Skriv navnene til tilgængelige lokaler"
+msgstr "Skriv navnene på tilgængelige lokaler"
-#: locale/programs/locale.c:79
+#: locale/programs/locale.c:78
msgid "Write names of available charmaps"
-msgstr "Skriv navnene til tilgængelige tegntabel"
+msgstr "Skriv navnene på tilgængelige tegntabeller"
-#: locale/programs/locale.c:80
+#: locale/programs/locale.c:79
msgid "Modify output format:"
-msgstr "Ændre format for uddata:"
+msgstr "Ændr format for uddata:"
-#: locale/programs/locale.c:81
+#: locale/programs/locale.c:80
msgid "Write names of selected categories"
-msgstr "Skriv navnene til valgte kategorier"
+msgstr "Skriv navnene på valgte kategorier"
-#: locale/programs/locale.c:82
+#: locale/programs/locale.c:81
msgid "Write names of selected keywords"
-msgstr "Skriv navnene til valgte nøgleord"
+msgstr "Skriv navnene på valgte nøgleord"
-#: locale/programs/locale.c:83
+#: locale/programs/locale.c:82
msgid "Print more information"
msgstr "Skriv mere information"
-#: locale/programs/locale.c:88
+#: locale/programs/locale.c:87
msgid "Get locale-specific information."
msgstr "Hent information specifik for lokalet."
-#: locale/programs/locale.c:91
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
@@ -1350,83 +2435,104 @@ msgstr ""
"NAVN\n"
"[-a|-m]"
-#: locale/programs/locale.c:512
+#: locale/programs/locale.c:194
+#, c-format
+msgid "Cannot set LC_CTYPE to default locale"
+msgstr "Kan ikke sætte LC_CTYPE til forvalgt lokale"
+
+#: locale/programs/locale.c:196
+#, c-format
+msgid "Cannot set LC_MESSAGES to default locale"
+msgstr "Kan ikke sætte LC_MESSAGES til forvalgt lokale"
+
+#: locale/programs/locale.c:209
+#, c-format
+msgid "Cannot set LC_COLLATE to default locale"
+msgstr "Kan ikke sætte LC_COLLATE til forvalgt lokale"
+
+#: locale/programs/locale.c:225
+#, c-format
+msgid "Cannot set LC_ALL to default locale"
+msgstr "Kan ikke sætte LC_ALL til forvalgt lokale"
+
+#: locale/programs/locale.c:518
+#, c-format
msgid "while preparing output"
-msgstr "da uddata blev forberedt"
+msgstr "under forberedelse af uddata"
-#: locale/programs/localedef.c:121
+#: locale/programs/localedef.c:120
msgid "Input Files:"
-msgstr "Indfiler:"
+msgstr "Inddatafiler:"
-#: locale/programs/localedef.c:123
+#: locale/programs/localedef.c:122
msgid "Symbolic character names defined in FILE"
msgstr "Symbolske tegnnavne defineret i FIL"
-#: locale/programs/localedef.c:124
+#: locale/programs/localedef.c:123
msgid "Source definitions are found in FILE"
-msgstr "Kildedefinitioner ikke fundet i FIL"
+msgstr "Kildedefinitioner er fundet i FIL"
-#: locale/programs/localedef.c:126
+#: locale/programs/localedef.c:125
msgid "FILE contains mapping from symbolic names to UCS4 values"
msgstr "FIL indeholder mapning fra symbolske navne til UCS4-værdier"
-#: locale/programs/localedef.c:130
+#: locale/programs/localedef.c:129
msgid "Create output even if warning messages were issued"
msgstr "Lav uddata selv om advarsler blev givet"
-#: locale/programs/localedef.c:131
+#: locale/programs/localedef.c:130
msgid "Create old-style tables"
msgstr "Opret gammel-stil tabeller"
-#: locale/programs/localedef.c:132
+#: locale/programs/localedef.c:131
msgid "Optional output file prefix"
msgstr "Valgfrit præfiks for uddatafil"
-#: locale/programs/localedef.c:133
+#: locale/programs/localedef.c:132
msgid "Be strictly POSIX conform"
msgstr "Vær strengt POSIX-konform"
-#: locale/programs/localedef.c:135
+#: locale/programs/localedef.c:134
msgid "Suppress warnings and information messages"
msgstr "Undertryk advarsler og informationsmeddelelser"
-#: locale/programs/localedef.c:136
+#: locale/programs/localedef.c:135
msgid "Print more messages"
msgstr "Skriv flere meddelelser"
-#: locale/programs/localedef.c:137
+#: locale/programs/localedef.c:136
msgid "Archive control:"
msgstr "Arkivkontrol:"
-#: locale/programs/localedef.c:139
+#: locale/programs/localedef.c:138
msgid "Don't add new data to archive"
-msgstr "Tilføj ikke nye data til arkivet"
+msgstr "Tilføj ikke nye data til arkiv"
-#: locale/programs/localedef.c:141
+#: locale/programs/localedef.c:140
msgid "Add locales named by parameters to archive"
-msgstr "Tilføj lokaler navngivet af parametre til arkivet"
+msgstr "Tilføj lokaler navngivet af parametre til arkiv"
-#: locale/programs/localedef.c:142
+#: locale/programs/localedef.c:141
msgid "Replace existing archive content"
msgstr "Erstat eksisterende arkivindhold"
-#: locale/programs/localedef.c:144
+#: locale/programs/localedef.c:143
msgid "Remove locales named by parameters from archive"
-msgstr "Fjern lokaler navngivet af parametre fra arkivet"
+msgstr "Fjern lokaler navngivet af parametre fra arkiv"
-#: locale/programs/localedef.c:145
+#: locale/programs/localedef.c:144
msgid "List content of archive"
-msgstr "Vis indeholdet i arkivet"
+msgstr "Vis indeholdet i arkiv"
-#: locale/programs/localedef.c:147
+#: locale/programs/localedef.c:146
msgid "locale.alias file to consult when making archive"
-msgstr "locale.alias-fil som skal bruges når arkivet laves"
+msgstr "locale.alias-fil som skal bruges når arkiv laves"
-#: locale/programs/localedef.c:152
+#: locale/programs/localedef.c:151
msgid "Compile locale specification"
msgstr "Kompilér lokale-specifikation"
-#: locale/programs/localedef.c:155
+#: locale/programs/localedef.c:154
msgid ""
"NAME\n"
"[--add-to-archive|--delete-from-archive] FILE...\n"
@@ -1436,26 +2542,28 @@ msgstr ""
"[--add-to-archive|--delete-from-archive] FIL...\n"
"--list-archive [FIL]"
-#: locale/programs/localedef.c:233
+#: locale/programs/localedef.c:232
+#, c-format
msgid "cannot create directory for output files"
-msgstr "kan ikke oprette katalog for udfiler"
+msgstr "kan ikke oprette katalog for uddatafiler"
-#: locale/programs/localedef.c:244
+#: locale/programs/localedef.c:243
+#, c-format
msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
msgstr "FATALT: systemet definerer ikke '_POSIX2_LOCALEDEF'"
-#: locale/programs/localedef.c:258 locale/programs/localedef.c:274
+#: locale/programs/localedef.c:257 locale/programs/localedef.c:273
#: locale/programs/localedef.c:599 locale/programs/localedef.c:619
#, c-format
msgid "cannot open locale definition file `%s'"
msgstr "kan ikke åbne lokaledefinitionsfil '%s'"
-#: locale/programs/localedef.c:286
+#: locale/programs/localedef.c:285
#, c-format
msgid "cannot write output files to `%s'"
-msgstr "kan ikke skrive udfiler til '%s'"
+msgstr "kan ikke skrive uddatafiler til '%s'"
-#: locale/programs/localedef.c:367
+#: locale/programs/localedef.c:366
#, c-format
msgid ""
"System's directory for character maps : %s\n"
@@ -1469,6 +2577,7 @@ msgstr ""
"%s"
#: locale/programs/localedef.c:567
+#, c-format
msgid "circular dependencies between locale definitions"
msgstr "cirkulære afhængigheder mellem lokale-definitioner"
@@ -1477,2056 +2586,1867 @@ msgstr "cirkulære afhængigheder mellem lokale-definitioner"
msgid "cannot add already read locale `%s' a second time"
msgstr "kan ikke tilføje allerede læst lokale '%s' på ny"
-#: locale/programs/locarchive.c:89 locale/programs/locarchive.c:259
+#: locale/programs/locarchive.c:88 locale/programs/locarchive.c:261
+#, c-format
msgid "cannot create temporary file"
msgstr "Kan ikke oprette midlertidig fil"
-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:307
+#, c-format
msgid "cannot initialize archive file"
msgstr "kan ikke initiere arkivfil"
-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:314
+#, c-format
msgid "cannot resize archive file"
-msgstr "kan ikke skifte størrelse på arkivfil"
+msgstr "kan ikke ændre størrelse på arkivfil"
-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-#: locale/programs/locarchive.c:511
+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:323
+#: locale/programs/locarchive.c:527
+#, c-format
msgid "cannot map archive header"
msgstr "kan ikke læse arkivhoved med mmap"
#: locale/programs/locarchive.c:156
+#, c-format
msgid "failed to create new locale archive"
msgstr "kunne ikke oprette nyt lokalearkiv"
#: locale/programs/locarchive.c:168
+#, c-format
msgid "cannot change mode of new locale archive"
-msgstr "kan ikke ændre adgangtilstand på nyt lokalearkiv"
+msgstr "kan ikke ændre tilstand på nyt lokalearkiv"
-#: locale/programs/locarchive.c:253
+#: locale/programs/locarchive.c:255
+#, c-format
msgid "cannot map locale archive file"
msgstr "kan ikke åbne lokalearkivfil med mmap"
-#: locale/programs/locarchive.c:329
+#: locale/programs/locarchive.c:331
+#, c-format
msgid "cannot lock new archive"
msgstr "kan ikke låse nyt arkiv"
-#: locale/programs/locarchive.c:380
+#: locale/programs/locarchive.c:396
+#, c-format
msgid "cannot extend locale archive file"
msgstr "kan ikke udvide lokalearkivfil"
-#: locale/programs/locarchive.c:389
+#: locale/programs/locarchive.c:405
+#, c-format
msgid "cannot change mode of resized locale archive"
msgstr "kan ikke ændre adgangtilstand på størrelsesændret lokalearkiv"
-#: locale/programs/locarchive.c:397
+#: locale/programs/locarchive.c:413
+#, c-format
msgid "cannot rename new archive"
msgstr "kan ikke omdøbe nyt arkiv"
-#: locale/programs/locarchive.c:450
+#: locale/programs/locarchive.c:466
#, c-format
msgid "cannot open locale archive \"%s\""
msgstr "kan ikke åbne lokalearkiv \"%s\""
-#: locale/programs/locarchive.c:455
+#: locale/programs/locarchive.c:471
#, c-format
msgid "cannot stat locale archive \"%s\""
msgstr "kan ikke udføre 'stat' på lokalearkiv '%s'"
-#: locale/programs/locarchive.c:474
+#: locale/programs/locarchive.c:490
#, c-format
msgid "cannot lock locale archive \"%s\""
msgstr "kan ikke låse lokalearkiv '%s'"
-#: locale/programs/locarchive.c:497
+#: locale/programs/locarchive.c:513
+#, c-format
msgid "cannot read archive header"
msgstr "kan ikke læse arkivhoved"
-#: locale/programs/locarchive.c:557
+#: locale/programs/locarchive.c:573
#, c-format
msgid "locale '%s' already exists"
msgstr "lokale '%s' eksisterer allerede"
-#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
-#: locale/programs/locfile.c:343
+#: locale/programs/locarchive.c:804 locale/programs/locarchive.c:819
+#: locale/programs/locarchive.c:831 locale/programs/locarchive.c:843
+#: locale/programs/locfile.c:344
+#, c-format
msgid "cannot add to locale archive"
msgstr "kan ikke tilføje til lokalearkiv"
-#: locale/programs/locarchive.c:982
+#: locale/programs/locarchive.c:998
#, c-format
msgid "locale alias file `%s' not found"
msgstr "fil \"%s\" for lokalealias findes ikke"
-#: locale/programs/locarchive.c:1126
+#: locale/programs/locarchive.c:1142
#, c-format
msgid "Adding %s\n"
msgstr "Tilføjer %s\n"
-#: locale/programs/locarchive.c:1132
+#: locale/programs/locarchive.c:1148
#, c-format
msgid "stat of \"%s\" failed: %s: ignored"
msgstr "status på \"%s\" mislykkedes: %s: ignoreret"
-#: locale/programs/locarchive.c:1138
+#: locale/programs/locarchive.c:1154
#, c-format
msgid "\"%s\" is no directory; ignored"
msgstr "\"%s\" er ikke et katalog, ignoreret"
-#: locale/programs/locarchive.c:1145
+#: locale/programs/locarchive.c:1161
#, c-format
msgid "cannot open directory \"%s\": %s: ignored"
msgstr "kan ikke åbne katalog \"%s\": %s: ignoreret"
-#: locale/programs/locarchive.c:1217
+#: locale/programs/locarchive.c:1233
#, c-format
msgid "incomplete set of locale files in \"%s\""
-msgstr "ufuldstændig opsætning af lokalefiler i \"%s\""
+msgstr "ufuldstændigt sæt af lokalefiler i \"%s\""
-#: locale/programs/locarchive.c:1281
+#: locale/programs/locarchive.c:1297
#, c-format
msgid "cannot read all files in \"%s\": ignored"
msgstr "kan ikke læse alle filer i \"%s\": ignoreret"
-#: locale/programs/locarchive.c:1351
+#: locale/programs/locarchive.c:1367
#, c-format
msgid "locale \"%s\" not in archive"
-msgstr "lokale \"%s\" findes ikke i arkivet"
+msgstr "lokale \"%s\" findes ikke i arkiv"
#: locale/programs/locfile.c:132
#, c-format
msgid "argument to `%s' must be a single character"
msgstr "argument til '%s' skal være et enkelt tegn"
-#: locale/programs/locfile.c:251
+#: locale/programs/locfile.c:252
msgid "syntax error: not inside a locale definition section"
-msgstr "syntaksfejl: ikke inde i en lokaledefinition"
+msgstr "syntaksfejl: ikke inde i en lokaledefinitionssektion"
-#: locale/programs/locfile.c:625
+#: locale/programs/locfile.c:626
#, c-format
msgid "cannot open output file `%s' for category `%s'"
-msgstr "kan ikke åbne udfil '%s' for kategori '%s'"
+msgstr "kan ikke åbne uddatafil '%s' for kategori '%s'"
-#: locale/programs/locfile.c:649
+#: locale/programs/locfile.c:650
#, c-format
msgid "failure while writing data for category `%s'"
msgstr "fejl ved skrivning af data for kategori '%s'"
-#: locale/programs/locfile.c:745
+#: locale/programs/locfile.c:746
#, c-format
msgid "cannot create output file `%s' for category `%s'"
-msgstr "kan ikke oprette udfil '%s' for kategori '%s'"
+msgstr "kan ikke oprette uddatafil '%s' for kategori '%s'"
-#: locale/programs/locfile.h:59
-msgid "expect string argument for `copy'"
-msgstr "forventet strengargument for 'copy'"
+#: locale/programs/locfile.c:782
+msgid "expecting string argument for `copy'"
+msgstr "forventer strengargument for 'copy'"
-#: locale/programs/locfile.h:63
+#: locale/programs/locfile.c:786
msgid "locale name should consist only of portable characters"
msgstr "lokale-navn bør bestå af bare portable tegn"
-#: locale/programs/locfile.h:82
+#: locale/programs/locfile.c:805
msgid "no other keyword shall be specified when `copy' is used"
-msgstr "ingen andre nøgleord må angives når 'copy' bruges"
+msgstr "ingen andre nøgleord skal angives når 'copy' bruges"
+
+#: locale/programs/locfile.c:819
+#, c-format
+msgid "`%1$s' definition does not end with `END %1$s'"
+msgstr "'%1$s' definition slutter ikke med 'END %1$s'"
-#: locale/programs/repertoire.c:230 locale/programs/repertoire.c:271
-#: locale/programs/repertoire.c:296
+#: locale/programs/repertoire.c:229 locale/programs/repertoire.c:270
+#: locale/programs/repertoire.c:295
#, c-format
msgid "syntax error in repertoire map definition: %s"
msgstr "syntaksfejl i repertoiretabel-definition: %s"
-#: locale/programs/repertoire.c:272
+#: locale/programs/repertoire.c:271
msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
msgstr "ingen <Uxxxx>- eller <Uxxxxxxxx>-værdi givet"
-#: locale/programs/repertoire.c:332
+#: locale/programs/repertoire.c:331
+#, c-format
msgid "cannot save new repertoire map"
msgstr "kan ikke gemme ny repertoiretabel"
-#: locale/programs/repertoire.c:343
+#: locale/programs/repertoire.c:342
#, c-format
msgid "repertoire map file `%s' not found"
msgstr "repertoiretabelfilen '%s' ikke fundet"
-#: locale/programs/repertoire.c:450
+#: login/programs/pt_chown.c:74
#, c-format
-msgid "<%s> and <%s> are invalid names for range"
-msgstr "<%s> og <%s> er ulovlige navne for tegnområde"
-
-#: locale/programs/repertoire.c:457
-msgid "upper limit in range is not smaller then lower limit"
-msgstr "øvre grænse i område er ikke mindre end nedre grænse"
+msgid "Set the owner, group and access permission of the slave pseudo terminal corresponding to the master pseudo terminal passed on file descriptor `%d'. This is the helper program for the `grantpt' function. It is not intended to be run directly from the command line.\n"
+msgstr "Sæt ejer, gruppe og adgangsrettigheder på slavepseudoterminalen som svarer til hovedpseudoterminalen givet ved filidentifikator \"%d\". Dette er hjælpeprogrammet for funktionen \"grantpt\". Det er ikke beregnet til at køres direkte fra kommandolinjen.\n"
-#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-#: posix/getconf.c:1002
-msgid "memory exhausted"
-msgstr "lageret opbrugt"
+#: login/programs/pt_chown.c:84
+#, c-format
+msgid ""
+"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"
+msgstr ""
+"Ejeren sættes til nuværende bruger, gruppen sættes til \"%s\" og adgangsrettigheder sættes til \"%o\".\n"
+"\n"
+"%s"
-#: assert/assert-perr.c:57
+#: login/programs/pt_chown.c:161
#, c-format
-msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
-msgstr "%s%s%s:%u: %s%sUventet fejl: %s.\n"
+msgid "too many arguments"
+msgstr "for mange argumenter"
-#: assert/assert.c:56
+#: login/programs/pt_chown.c:169
#, c-format
-msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
-msgstr "%s%s%s:%u: %s%sForudsætningen (assertion) '%s' fejlede.\n"
+msgid "needs to be installed setuid `root'"
+msgstr "skal installeres som \"setuid root\""
-#: intl/tst-codeset.c:40 intl/tst-codeset.c:50
-msgid "cheese"
-msgstr "ost"
+#: malloc/mcheck.c:330
+msgid "memory is consistent, library is buggy\n"
+msgstr "hukommelsen er konsistent, biblioteket er fejlbehæftet\n"
-#: intl/tst-gettext2.c:37
-msgid "First string for testing."
-msgstr "Første streng til afprøvning."
+#: malloc/mcheck.c:333
+msgid "memory clobbered before allocated block\n"
+msgstr "hukommelse før tildelt blok er snavset til\n"
-#: intl/tst-gettext2.c:38
-msgid "Another string for testing."
-msgstr "En ny streng til afprøvning."
+#: malloc/mcheck.c:336
+msgid "memory clobbered past end of allocated block\n"
+msgstr "hukommelse efter tildelt blok er snavset til\n"
-#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
-msgid "NAME"
-msgstr "NAVN"
+#: malloc/mcheck.c:339
+msgid "block freed twice\n"
+msgstr "blok frigjort to gange\n"
-#: catgets/gencat.c:112
-msgid "Create C header file NAME containing symbol definitions"
-msgstr "Opret C-headerfil NAVN som indeholder symboldefinitioner"
+#: malloc/mcheck.c:342
+msgid "bogus mcheck_status, library is buggy\n"
+msgstr "fejlagtig mcheck_status, biblioteket er fejlbehæftet\n"
-#: catgets/gencat.c:114
-msgid "Do not use existing catalog, force new output file"
-msgstr "Brug ikke eksisterende katalog, tving oprettelse af ny udfil"
+#: malloc/memusage.sh:27
+msgid "Try \\`memusage --help' for more information."
+msgstr "Prøv 'memusage --help' for mere information."
-#: catgets/gencat.c:115
-msgid "Write output to file NAME"
-msgstr "Skriv uddata til fil NAVN"
+#: malloc/memusage.sh:33
+msgid "memusage: option \\`$1' requires an argument"
+msgstr "memusage: flaget \\\"$1\\\" behøver et argument"
-#: catgets/gencat.c:120
+#: malloc/memusage.sh:39
msgid ""
-"Generate message catalog. If INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
-"is -, output is written to standard output.\n"
+"Usage: memusage [OPTION]... PROGRAM [PROGRAMOPTION]...\n"
+"Profile memory usage of PROGRAM.\n"
+"\n"
+" -n,--progname=NAME Name of the program file to profile\n"
+" -p,--png=FILE Generate PNG graphic and store it in FILE\n"
+" -d,--data=FILE Generate binary data file and store it in FILE\n"
+" -u,--unbuffered Don't buffer output\n"
+" -b,--buffer=SIZE Collect SIZE entries before writing them out\n"
+" --no-timer Don't collect additional information through timer\n"
+" -m,--mmap Also trace mmap & friends\n"
+"\n"
+" -?,--help Print this help and exit\n"
+" --usage Give a short usage message\n"
+" -V,--version Print version information and exit\n"
+"\n"
+" The following options only apply when generating graphical output:\n"
+" -t,--time-based Make graph linear in time\n"
+" -T,--total Also draw graph of total memory use\n"
+" --title=STRING Use STRING as title of the graph\n"
+" -x,--x-size=SIZE Make graphic SIZE pixels wide\n"
+" -y,--y-size=SIZE Make graphic SIZE pixels high\n"
+"\n"
+"Mandatory arguments to long options are also mandatory for any corresponding\n"
+"short options.\n"
+"\n"
msgstr ""
-"Generér meddelelseskatalog.\\vHvis INDFIL er '-' læses inddata fra standard ind.\n"
-"Hvis UDFIL er '-' skrives uddata til standard ud.\n"
+"Brug: memusage [FLAG]... PROGRAM [PROGRAMFLAG]...\n"
+"Profilér hukommelsesforbrug af PROGRAM.\n"
+"\n"
+" -n,--progname=NAME Navn på programfilen der skal profileres\n"
+" -p,--png=FIL Generér PNG grafik og gem det i FIL\n"
+" -d,--data=FIL Generér binær datafil og gem den i FIL\n"
+" -u,--unbuffered lav ikke bufring af uddata\n"
+" -b,--buffer=STR Indsaml STR poster før de udskrives\n"
+" --no-timer Indsaml ikke yderligere information via timer\n"
+" -m,--mmap Spor også mmap & venner\n"
+"\n"
+" -?,--help Vis denne hjælpetekst og afslut\n"
+" --usage Giv en kort besked om brug\n"
+" -V,--version Vis versionsinformation og afslut\n"
+"\n"
+" De følgende flag gælder kun ved generering af grafisk uddata:\n"
+" -t,--time-based Gør graf lineær i tid\n"
+" -T,--total Tegn også graf af total hukommelsesbrug\n"
+" --title=STRENG Brug STRENG som titel på grafen\n"
+" -x,--x-size=STR Make grafik STR pixler bred\n"
+" -y,--y-size=STR Make grafik STR pixler høj\n"
+"\n"
+"Obligatoriske argumenter til lange flag er også obligatoriske for tilsvarende korte flag.\n"
-#: catgets/gencat.c:125
+#: malloc/memusage.sh:101
msgid ""
-"-o OUTPUT-FILE [INPUT-FILE]...\n"
-"[OUTPUT-FILE [INPUT-FILE]...]"
+"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
+" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
+" [--title=STRING] [--x-size=SIZE] [--y-size=SIZE]\n"
+" PROGRAM [PROGRAMOPTION]..."
msgstr ""
-"-o UDFIL [INDFIL]...\n"
-"[UDFIL [INDFIL]...]"
-
-#: catgets/gencat.c:282
-msgid "*standard input*"
-msgstr "*standard ind*"
-
-#: catgets/gencat.c:417 catgets/gencat.c:494
-msgid "illegal set number"
-msgstr "ulovligt sæt-nummer"
-
-#: catgets/gencat.c:444
-msgid "duplicate set definition"
-msgstr "duplikeret definition af sæt"
+"Syntaks: memusage [--data=FIL] [--progname=NAVN] [--png=FIL] [--unbuffered]\n"
+" [--buffer=STØRRELSE] [--no-timer] [--time-based] [--total]\n"
+" [--title=STRENG] [--x-size=STØRRELSE] [--y-size=STØRRELSE]\n"
+" PROGRAM [PROGRAMFLAG]..."
-#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
-msgid "this is the first definition"
-msgstr "dette er den første definition"
-
-#: catgets/gencat.c:522
-#, c-format
-msgid "unknown set `%s'"
-msgstr "ukendt sæt '%s'"
+#: malloc/memusage.sh:193
+msgid "memusage: option \\`${1##*=}' is ambiguous"
+msgstr "memusage: flaget '${1##*=}' er flertydigt"
-#: catgets/gencat.c:563
-msgid "invalid quote character"
-msgstr "Ugyldigt anførselstegn"
-
-#: catgets/gencat.c:576
-#, c-format
-msgid "unknown directive `%s': line ignored"
-msgstr "ukendt nøgleord '%s': linie ignoreret"
+#: malloc/memusage.sh:202
+msgid "memusage: unrecognized option \\`$1'"
+msgstr "memusage: ukendt flag '$1'"
-#: catgets/gencat.c:621
-msgid "duplicated message number"
-msgstr "duplikeret meddelelsesnummer"
+#: malloc/memusage.sh:215
+msgid "No program name given"
+msgstr "Intet programnavn angivet"
-#: catgets/gencat.c:674
-msgid "duplicated message identifier"
-msgstr "duplikeret meddelelsesidentifikator"
+#: malloc/memusagestat.c:57
+msgid "Name output file"
+msgstr "Navngiv uddatafil"
-#: catgets/gencat.c:731
-msgid "invalid character: message ignored"
-msgstr "Ugyldigt tegn: besked ignoreret"
+#: malloc/memusagestat.c:58
+msgid "Title string used in output graphic"
+msgstr "Overskriftsstreng brugt i uddatagrafik"
-#: catgets/gencat.c:774
-msgid "invalid line"
-msgstr "ugyldig linje"
+#: malloc/memusagestat.c:59
+msgid "Generate output linear to time (default is linear to number of function calls)"
+msgstr "Generér uddata efter lineær tid (standard er efter antal af funktionskald)"
-#: catgets/gencat.c:828
-msgid "malformed line ignored"
-msgstr "fejlagtig linie ignoreret"
+#: malloc/memusagestat.c:61
+msgid "Also draw graph for total memory consumption"
+msgstr "Tegn også graf for totalt hukommelsesforbrug"
-#: catgets/gencat.c:992 catgets/gencat.c:1033
-#, c-format
-msgid "cannot open output file `%s'"
-msgstr "kan ikke åbne udfil '%s'"
+#: malloc/memusagestat.c:62
+msgid "Make output graphic VALUE pixels wide"
+msgstr "Gør uddata-grafik VÆRDI piksel-bred"
-#: catgets/gencat.c:1217
-msgid "unterminated message"
-msgstr "uafsluttet meddelelse"
+#: malloc/memusagestat.c:63
+msgid "Make output graphic VALUE pixels high"
+msgstr "Gør uddata-grafik VÆRDI piksel-høj"
-#: catgets/gencat.c:1241
-msgid "while opening old catalog file"
-msgstr "da den gamle katalogfil blev åbnet"
+#: malloc/memusagestat.c:68
+msgid "Generate graphic from memory profiling data"
+msgstr "Generér grafik fra hukommelsesprofileringsdata"
-#: catgets/gencat.c:1332
-msgid "conversion modules not available"
-msgstr "konverteringsmoduler ikke tilgængelige"
+#: malloc/memusagestat.c:71
+msgid "DATAFILE [OUTFILE]"
+msgstr "DATAFIL [UDFIL]"
-#: catgets/gencat.c:1358
-msgid "cannot determine escape character"
-msgstr "kan ikke bestemme undvigetegn"
+#: misc/error.c:118
+msgid "Unknown system error"
+msgstr "Ukendt systemfejl"
-#: stdlib/../sysdeps/unix/sysv/linux/ia64/makecontext.c:63
-msgid "makecontext: does not know how to handle more than 8 arguments\n"
-msgstr "makecontext: véd ikke hvordan mere end 8 argumenter skal behandles\n"
+#: nis/nis_callback.c:189
+msgid "unable to free arguments"
+msgstr "kan ikke frigøre argumenter"
-#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
-#: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
+#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr "Succes"
-#. TRANS Operation not permitted; only the owner of the file (or other resource)
-#. TRANS or processes with special privileges can perform the operation.
-#: stdio-common/../sysdeps/gnu/errlist.c:17
-msgid "Operation not permitted"
-msgstr "Operationen er ikke tilladt"
-
-#. TRANS No such file or directory. This is a ``file doesn't exist'' error
-#. TRANS for ordinary files that are referenced in contexts where they are
-#. TRANS expected to already exist.
-#: stdio-common/../sysdeps/gnu/errlist.c:28
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:32
-msgid "No such file or directory"
-msgstr "Ingen sådan fil eller filkatalog"
-
-#. TRANS No process matches the specified process ID.
-#: stdio-common/../sysdeps/gnu/errlist.c:37
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:33
-msgid "No such process"
-msgstr "Ingen sådan proces"
-
-#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
-#. TRANS completion of the call. When this happens, you should try the call
-#. TRANS again.
-#. TRANS
-#. TRANS You can choose to have functions resume after a signal that is handled,
-#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted
-#. TRANS Primitives}.
-#: stdio-common/../sysdeps/gnu/errlist.c:52
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:34
-msgid "Interrupted system call"
-msgstr "Afbrudt systemkald"
+#: nis/nis_error.h:2
+msgid "Probable success"
+msgstr "Formodet succes"
-#. TRANS Input/output error; usually used for physical read or write errors.
-#: stdio-common/../sysdeps/gnu/errlist.c:61
-msgid "Input/output error"
-msgstr "Ind/ud-fejl"
+#: nis/nis_error.h:3
+msgid "Not found"
+msgstr "Ikke fundet"
-#. TRANS No such device or address. The system tried to use the device
-#. TRANS represented by a file you specified, and it couldn't find the device.
-#. TRANS This can mean that the device file was installed incorrectly, or that
-#. TRANS the physical device is missing or not correctly attached to the
-#. TRANS computer.
-#: stdio-common/../sysdeps/gnu/errlist.c:74
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:36
-msgid "No such device or address"
-msgstr "Ingen sådan enhed eller adresse"
+#: nis/nis_error.h:4
+msgid "Probably not found"
+msgstr "Sandsynligvis ikke fundet"
-#. TRANS Argument list too long; used when the arguments passed to a new program
-#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
-#. TRANS File}) occupy too much memory space. This condition never arises in the
-#. TRANS GNU system.
-#: stdio-common/../sysdeps/gnu/errlist.c:86
-msgid "Argument list too long"
-msgstr "Argumentlisten er for lang"
+#: nis/nis_error.h:5
+msgid "Cache expired"
+msgstr "Tidsgrænse for hurtigbuffer løb ud"
-#. TRANS Invalid executable file format. This condition is detected by the
-#. TRANS @code{exec} functions; see @ref{Executing a File}.
-#: stdio-common/../sysdeps/gnu/errlist.c:96
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:38
-msgid "Exec format error"
-msgstr "Ugyldigt format på eksekverbar fil"
+#: nis/nis_error.h:6
+msgid "NIS+ servers unreachable"
+msgstr "NIS+-servere er ikke tilgængelige"
-#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
-#. TRANS closed or reading from a descriptor open only for writing (or vice
-#. TRANS versa).
-#: stdio-common/../sysdeps/gnu/errlist.c:107
-msgid "Bad file descriptor"
-msgstr "Ugyldig fildeskriptor"
+#: nis/nis_error.h:7
+msgid "Unknown object"
+msgstr "Ukendt objekt"
-#. TRANS There are no child processes. This error happens on operations that are
-#. TRANS supposed to manipulate child processes, when there aren't any processes
-#. TRANS to manipulate.
-#: stdio-common/../sysdeps/gnu/errlist.c:118
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:40
-msgid "No child processes"
-msgstr "Ingen børneprocesser"
+#: nis/nis_error.h:8
+msgid "Server busy, try again"
+msgstr "Server optaget, prøv igen"
-#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
-#. TRANS deadlock situation. The system does not guarantee that it will notice
-#. TRANS all such situations. This error means you got lucky and the system
-#. TRANS noticed; it might just hang. @xref{File Locks}, for an example.
-#: stdio-common/../sysdeps/gnu/errlist.c:130
-msgid "Resource deadlock avoided"
-msgstr "Klarede at undgå vranglås ved tildeling af ressource"
+#: nis/nis_error.h:9
+msgid "Generic system error"
+msgstr "Generel systemfejl"
-#. TRANS No memory available. The system cannot allocate more virtual memory
-#. TRANS because its capacity is full.
-#: stdio-common/../sysdeps/gnu/errlist.c:140
-msgid "Cannot allocate memory"
-msgstr "Kan ikke tildele lager"
+#: nis/nis_error.h:10
+msgid "First/next chain broken"
+msgstr "Første-/næstekæde brudt"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: stdio-common/../sysdeps/gnu/errlist.c:149
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:43
-#: nis/nis_error.c:39 nis/ypclnt.c:817
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
msgstr "Adgang nægtet"
-#. TRANS Bad address; an invalid pointer was detected.
-#. TRANS In the GNU system, this error never happens; you get a signal instead.
-#: stdio-common/../sysdeps/gnu/errlist.c:159
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:44
-msgid "Bad address"
-msgstr "Ugyldig adresse"
-
-#. TRANS A file that isn't a block special file was given in a situation that
-#. TRANS requires one. For example, trying to mount an ordinary file as a file
-#. TRANS system in Unix gives this error.
-#: stdio-common/../sysdeps/gnu/errlist.c:170
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:45
-msgid "Block device required"
-msgstr "Blok-enhed kræves"
-
-#. TRANS Resource busy; a system resource that can't be shared is already in use.
-#. TRANS For example, if you try to delete a file that is the root of a currently
-#. TRANS mounted filesystem, you get this error.
-#: stdio-common/../sysdeps/gnu/errlist.c:181
-msgid "Device or resource busy"
-msgstr "Enheden eller ressourcen optaget"
-
-#. TRANS File exists; an existing file was specified in a context where it only
-#. TRANS makes sense to specify a new file.
-#: stdio-common/../sysdeps/gnu/errlist.c:191
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:47
-msgid "File exists"
-msgstr "Filen eksisterer"
-
-#. TRANS An attempt to make an improper link across file systems was detected.
-#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
-#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
-#: stdio-common/../sysdeps/gnu/errlist.c:202
-msgid "Invalid cross-device link"
-msgstr "Ugyldig lænke over adskilte enheder"
-
-#. TRANS The wrong type of device was given to a function that expects a
-#. TRANS particular sort of device.
-#: stdio-common/../sysdeps/gnu/errlist.c:212
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:49
-msgid "No such device"
-msgstr "Ingen sådan enhed"
-
-#. TRANS A file that isn't a directory was specified when a directory is required.
-#: stdio-common/../sysdeps/gnu/errlist.c:221
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:50
-msgid "Not a directory"
-msgstr "Ikke et katalog"
-
-#. TRANS File is a directory; you cannot open a directory for writing,
-#. TRANS or create or remove hard links to it.
-#: stdio-common/../sysdeps/gnu/errlist.c:231
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:51
-msgid "Is a directory"
-msgstr "Er et filkatalog"
-
-#. TRANS Invalid argument. This is used to indicate various kinds of problems
-#. TRANS with passing the wrong argument to a library function.
-#: stdio-common/../sysdeps/gnu/errlist.c:241
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:52
-msgid "Invalid argument"
-msgstr "Ugyldigt argument"
+#: nis/nis_error.h:12
+msgid "Not owner"
+msgstr "Ikke ejer"
-#. TRANS The current process has too many files open and can't open any more.
-#. TRANS Duplicate descriptors do count toward this limit.
-#. TRANS
-#. TRANS In BSD and GNU, the number of open files is controlled by a resource
-#. TRANS limit that can usually be increased. If you get this error, you might
-#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
-#. TRANS @pxref{Limits on Resources}.
-#: stdio-common/../sysdeps/gnu/errlist.c:256
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:54
-msgid "Too many open files"
-msgstr "For mange åbne filer"
+#: nis/nis_error.h:13
+msgid "Name not served by this server"
+msgstr "Navn ikke tilbudt af denne server"
-#. TRANS There are too many distinct file openings in the entire system. Note
-#. TRANS that any number of linked channels count as just one file opening; see
-#. TRANS @ref{Linked Channels}. This error never occurs in the GNU system.
-#: stdio-common/../sysdeps/gnu/errlist.c:267
-msgid "Too many open files in system"
-msgstr "For mange åbne filer i systemet"
+#: nis/nis_error.h:14
+msgid "Server out of memory"
+msgstr "Server tom for hukommelse"
-#. TRANS Inappropriate I/O control operation, such as trying to set terminal
-#. TRANS modes on an ordinary file.
-#: stdio-common/../sysdeps/gnu/errlist.c:277
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:55
-msgid "Inappropriate ioctl for device"
-msgstr "Uegnet 'ioctl' for enhed"
+#: nis/nis_error.h:15
+msgid "Object with same name exists"
+msgstr "Objekt med samme navn eksisterer"
-#. TRANS An attempt to execute a file that is currently open for writing, or
-#. TRANS write to a file that is currently being executed. Often using a
-#. TRANS debugger to run a program is considered having it open for writing and
-#. TRANS will cause this error. (The name stands for ``text file busy''.) This
-#. TRANS is not an error in the GNU system; the text is copied as necessary.
-#: stdio-common/../sysdeps/gnu/errlist.c:290
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:56
-msgid "Text file busy"
-msgstr "Tekstfil optaget"
+#: nis/nis_error.h:16
+msgid "Not master server for this domain"
+msgstr "Ikke hovedserver for dette domæne"
-#. TRANS File too big; the size of a file would be larger than allowed by the system.
-#: stdio-common/../sysdeps/gnu/errlist.c:299
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:57
-msgid "File too large"
-msgstr "For stor fil"
+#: nis/nis_error.h:17
+msgid "Invalid object for operation"
+msgstr "Ugyldigt objekt for operation"
-#. TRANS No space left on device; write operation on a file failed because the
-#. TRANS disk is full.
-#: stdio-common/../sysdeps/gnu/errlist.c:309
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:58
-msgid "No space left on device"
-msgstr "Ikke mere plads på enheden"
+#: nis/nis_error.h:18
+msgid "Malformed name, or illegal name"
+msgstr "Fejlagtigt navn eller ugyldigt navn"
-#. TRANS Invalid seek operation (such as on a pipe).
-#: stdio-common/../sysdeps/gnu/errlist.c:318
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:59
-msgid "Illegal seek"
-msgstr "Ulovlig søgeoperation"
+#: nis/nis_error.h:19
+msgid "Unable to create callback"
+msgstr "Ikke i stand til at lave tilbagekald"
-#. TRANS An attempt was made to modify something on a read-only file system.
-#: stdio-common/../sysdeps/gnu/errlist.c:327
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:60
-msgid "Read-only file system"
-msgstr "Filsystem med kun læseadgang"
+#: nis/nis_error.h:20
+msgid "Results sent to callback proc"
+msgstr "Resultater sendt til tilbagekalds-proces"
-#. TRANS Too many links; the link count of a single file would become too large.
-#. TRANS @code{rename} can cause this error if the file being renamed already has
-#. TRANS as many links as it can take (@pxref{Renaming Files}).
-#: stdio-common/../sysdeps/gnu/errlist.c:338
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:61
-msgid "Too many links"
-msgstr "For mange lænker"
+#: nis/nis_error.h:21
+msgid "Not found, no such name"
+msgstr "Ikke fundet, ikke noget sådant navn"
-#. TRANS Domain error; used by mathematical functions when an argument value does
-#. TRANS not fall into the domain over which the function is defined.
-#: stdio-common/../sysdeps/gnu/errlist.c:361
-msgid "Numerical argument out of domain"
-msgstr "Numerisk argument er udenfor defineret område"
+#: nis/nis_error.h:22
+msgid "Name/entry isn't unique"
+msgstr "Navn/indtastning er ikke unikt"
-#. TRANS Range error; used by mathematical functions when the result value is
-#. TRANS not representable because of overflow or underflow.
-#: stdio-common/../sysdeps/gnu/errlist.c:371
-msgid "Numerical result out of range"
-msgstr "Numerisk resultat er udenfor gyldigt område"
+#: nis/nis_error.h:23
+msgid "Modification failed"
+msgstr "Ændring fejlede"
-#. TRANS Resource temporarily unavailable; the call might work if you try again
-#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
-#. TRANS they are always the same in the GNU C library.
-#. TRANS
-#. TRANS This error can happen in a few different situations:
-#. TRANS
-#. TRANS @itemize @bullet
-#. TRANS @item
-#. TRANS An operation that would block was attempted on an object that has
-#. TRANS non-blocking mode selected. Trying the same operation again will block
-#. TRANS until some external condition makes it possible to read, write, or
-#. TRANS connect (whatever the operation). You can use @code{select} to find out
-#. TRANS when the operation will be possible; @pxref{Waiting for I/O}.
-#. TRANS
-#. TRANS @strong{Portability Note:} In many older Unix systems, this condition
-#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code
-#. TRANS different from @code{EAGAIN}. To make your program portable, you should
-#. TRANS check for both codes and treat them the same.
-#. TRANS
-#. TRANS @item
-#. TRANS A temporary resource shortage made an operation impossible. @code{fork}
-#. TRANS can return this error. It indicates that the shortage is expected to
-#. TRANS pass, so your program can try the call again later and it may succeed.
-#. TRANS It is probably a good idea to delay for a few seconds before trying it
-#. TRANS again, to allow time for other processes to release scarce resources.
-#. TRANS Such shortages are usually fairly serious and affect the whole system,
-#. TRANS so usually an interactive program should report the error to the user
-#. TRANS and return to its command loop.
-#. TRANS @end itemize
-#: stdio-common/../sysdeps/gnu/errlist.c:408
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:41
-msgid "Resource temporarily unavailable"
-msgstr "Resursen midlertidig utilgængelig"
+#: nis/nis_error.h:24
+msgid "Database for table does not exist"
+msgstr "Database for tabel eksisterer ikke"
-#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
-#. TRANS The values are always the same, on every operating system.
-#. TRANS
-#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
-#. TRANS separate error code.
-#: stdio-common/../sysdeps/gnu/errlist.c:421
-msgid "Operation would block"
-msgstr "Operationen ville have blokeret"
+#: nis/nis_error.h:25
+msgid "Entry/table type mismatch"
+msgstr "Indgangs-/tabel-type stemmer ikke overens"
-#. TRANS An operation that cannot complete immediately was initiated on an object
-#. TRANS that has non-blocking mode selected. Some functions that must always
-#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return
-#. TRANS @code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that
-#. TRANS the operation has begun and will take some time. Attempts to manipulate
-#. TRANS the object before the call completes return @code{EALREADY}. You can
-#. TRANS use the @code{select} function to find out when the pending operation
-#. TRANS has completed; @pxref{Waiting for I/O}.
-#: stdio-common/../sysdeps/gnu/errlist.c:437
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:180
-msgid "Operation now in progress"
-msgstr "Operationen er nu under udførelse"
+#: nis/nis_error.h:26
+msgid "Link points to illegal name"
+msgstr "Lænke peger til ugyldigt navn"
-#. TRANS An operation is already in progress on an object that has non-blocking
-#. TRANS mode selected.
-#: stdio-common/../sysdeps/gnu/errlist.c:447
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:179
-msgid "Operation already in progress"
-msgstr "Operationen er allerede under udførelse"
+#: nis/nis_error.h:27
+msgid "Partial success"
+msgstr "Delvis succes"
-#. TRANS A file that isn't a socket was specified when a socket is required.
-#: stdio-common/../sysdeps/gnu/errlist.c:456
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:125
-msgid "Socket operation on non-socket"
-msgstr "Sokkel-operation på noget som ikke er en sokkel"
+#: nis/nis_error.h:28
+msgid "Too many attributes"
+msgstr "For mange attributter"
-#. TRANS The size of a message sent on a socket was larger than the supported
-#. TRANS maximum size.
-#: stdio-common/../sysdeps/gnu/errlist.c:466
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:127
-msgid "Message too long"
-msgstr "For lang meddelse"
+#: nis/nis_error.h:29
+msgid "Error in RPC subsystem"
+msgstr "Fejl i undersystem til RPC"
-#. TRANS The socket type does not support the requested communications protocol.
-#: stdio-common/../sysdeps/gnu/errlist.c:475
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:128
-msgid "Protocol wrong type for socket"
-msgstr "Protokollen er ikke rigtig type for sokkel"
+#: nis/nis_error.h:30
+msgid "Missing or malformed attribute"
+msgstr "Attribut mangler eller er fejlagtig"
-#. TRANS You specified a socket option that doesn't make sense for the
-#. TRANS particular protocol being used by the socket. @xref{Socket Options}.
-#: stdio-common/../sysdeps/gnu/errlist.c:485
-msgid "Protocol not available"
-msgstr "Protokollen er ikke tilgængelig"
+#: nis/nis_error.h:31
+msgid "Named object is not searchable"
+msgstr "Navngivet objekt er ikke søgbart"
-#. TRANS The socket domain does not support the requested communications protocol
-#. TRANS (perhaps because the requested protocol is completely invalid).
-#. TRANS @xref{Creating a Socket}.
-#: stdio-common/../sysdeps/gnu/errlist.c:496
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:150
-msgid "Protocol not supported"
-msgstr "Protokollen er ikke tilgængelig"
+#: nis/nis_error.h:32
+msgid "Error while talking to callback proc"
+msgstr "Fejl ved kommunikation med tilbagekaldsproces"
-#. TRANS The socket type is not supported.
-#: stdio-common/../sysdeps/gnu/errlist.c:505
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:151
-msgid "Socket type not supported"
-msgstr "Sokkel-typen er ikke understøttet"
+#: nis/nis_error.h:33
+msgid "Non NIS+ namespace encountered"
+msgstr "Stødte på navneområde som ikke tilhører NIS+"
-#. TRANS The operation you requested is not supported. Some socket functions
-#. TRANS don't make sense for all types of sockets, and others may not be
-#. TRANS implemented for all communications protocols. In the GNU system, this
-#. TRANS error can happen for many calls when the object does not support the
-#. TRANS particular operation; it is a generic indication that the server knows
-#. TRANS nothing to do for that call.
-#: stdio-common/../sysdeps/gnu/errlist.c:519
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:78
-msgid "Operation not supported"
-msgstr "Operationen er ikke understøttet"
+#: nis/nis_error.h:34
+msgid "Illegal object type for operation"
+msgstr "Ulovlig objekttype for operation"
-#. TRANS The socket communications protocol family you requested is not supported.
-#: stdio-common/../sysdeps/gnu/errlist.c:528
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:153
-msgid "Protocol family not supported"
-msgstr "Protokol-familien er ikke understøttet"
+#: nis/nis_error.h:35
+msgid "Passed object is not the same object on server"
+msgstr "Overført objekt er ikke det samme objekt på serveren"
-#. TRANS The address family specified for a socket is not supported; it is
-#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}.
-#: stdio-common/../sysdeps/gnu/errlist.c:538
-msgid "Address family not supported by protocol"
-msgstr "Adressefamilien er ikke understøttet af protokollen"
+#: nis/nis_error.h:36
+msgid "Modify operation failed"
+msgstr "Ændringsoperation fejlede"
-#. TRANS The requested socket address is already in use. @xref{Socket Addresses}.
-#: stdio-common/../sysdeps/gnu/errlist.c:547
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:155
-msgid "Address already in use"
-msgstr "Adressen er allerede i brug"
+#: nis/nis_error.h:37
+msgid "Query illegal for named table"
+msgstr "Spørgsmål ugyldigt for given tabel"
-#. TRANS The requested socket address is not available; for example, you tried
-#. TRANS to give a socket a name that doesn't match the local host name.
-#. TRANS @xref{Socket Addresses}.
-#: stdio-common/../sysdeps/gnu/errlist.c:558
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:156
-msgid "Cannot assign requested address"
-msgstr "Kan ikke benytte den ønskede adresse"
+#: nis/nis_error.h:38
+msgid "Attempt to remove a non-empty table"
+msgstr "Forsøg på at fjerne en tabel som ikke er tom"
-#. TRANS A socket operation failed because the network was down.
-#: stdio-common/../sysdeps/gnu/errlist.c:567
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:157
-msgid "Network is down"
-msgstr "Netværket er nede"
+#: nis/nis_error.h:39
+msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
+msgstr "Fejl ved læsning af NIS+ koldstartsfil. Er NIS+ installeret?"
-#. TRANS A socket operation failed because the subnet containing the remote host
-#. TRANS was unreachable.
-#: stdio-common/../sysdeps/gnu/errlist.c:577
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:158
-msgid "Network is unreachable"
-msgstr "Netværket er ikke tilgængeligt"
+#: nis/nis_error.h:40
+msgid "Full resync required for directory"
+msgstr "Fuld resynkronisering behøves for katalog"
-#. TRANS A network connection was reset because the remote host crashed.
-#: stdio-common/../sysdeps/gnu/errlist.c:586
-msgid "Network dropped connection on reset"
-msgstr "Netværket nedlagde forbindelsen ved genstart"
+#: nis/nis_error.h:41
+msgid "NIS+ operation failed"
+msgstr "NIS+-operation fejlede"
-#. TRANS A network connection was aborted locally.
-#: stdio-common/../sysdeps/gnu/errlist.c:595
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:160
-msgid "Software caused connection abort"
-msgstr "Programmet forårsagede forbindelsesafbrud"
+#: nis/nis_error.h:42
+msgid "NIS+ service is unavailable or not installed"
+msgstr "NIS+-tjeneste er utilgængelig eller ikke installeret"
-#. TRANS A network connection was closed for reasons outside the control of the
-#. TRANS local host, such as by the remote machine rebooting or an unrecoverable
-#. TRANS protocol violation.
-#: stdio-common/../sysdeps/gnu/errlist.c:606
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:161
-msgid "Connection reset by peer"
-msgstr "Forbindelsen brudt i den anden ende"
+#: nis/nis_error.h:43
+msgid "Yes, 42 is the meaning of life"
+msgstr "Ja, 42 er meningen med livet"
-#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this
-#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
-#. TRANS other from network operations.
-#: stdio-common/../sysdeps/gnu/errlist.c:617
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:162
-msgid "No buffer space available"
-msgstr "Ikke mere buffer-plads tilgængelig"
+#: nis/nis_error.h:44
+msgid "Unable to authenticate NIS+ server"
+msgstr "Ikke i stand til at autentificere NIS+-server"
-#. TRANS You tried to connect a socket that is already connected.
-#. TRANS @xref{Connecting}.
-#: stdio-common/../sysdeps/gnu/errlist.c:627
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:163
-msgid "Transport endpoint is already connected"
-msgstr "Transport-endepunkterne er allerede sammenkoblet"
+#: nis/nis_error.h:45
+msgid "Unable to authenticate NIS+ client"
+msgstr "Ikke i stand til at autentificere NIS+-klient"
-#. TRANS The socket is not connected to anything. You get this error when you
-#. TRANS try to transmit data over a socket, without first specifying a
-#. TRANS destination for the data. For a connectionless socket (for datagram
-#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
-#: stdio-common/../sysdeps/gnu/errlist.c:639
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:164
-msgid "Transport endpoint is not connected"
-msgstr "Transport-endepunkterne er ikke sammenkoblet"
+#: nis/nis_error.h:46
+msgid "No file space on server"
+msgstr "Ikke mere plads på server"
-#. TRANS No default destination address was set for the socket. You get this
-#. TRANS error when you try to transmit data over a connectionless socket,
-#. TRANS without first specifying a destination for the data with @code{connect}.
-#: stdio-common/../sysdeps/gnu/errlist.c:650
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:126
-msgid "Destination address required"
-msgstr "Måladresse kræves"
+#: nis/nis_error.h:47
+msgid "Unable to create process on server"
+msgstr "Ikke i stand til at oprette proces på serveren"
-#. TRANS The socket has already been shut down.
-#: stdio-common/../sysdeps/gnu/errlist.c:659
-msgid "Cannot send after transport endpoint shutdown"
-msgstr "Kan ikke sende efter at transportendepunktet har koblet ned"
+#: nis/nis_error.h:48
+msgid "Master server busy, full dump rescheduled."
+msgstr "Hovedserver optaget, fuld lagring udsat."
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:668
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:174
-msgid "Too many references: cannot splice"
-msgstr "For mange referencer: kan ikke splejse sammen"
+#: nis/nis_local_names.c:122
+#, c-format
+msgid "LOCAL entry for UID %d in directory %s not unique\n"
+msgstr "LOKAL indtastning for UID %d i katalog %s er ikke unikt\n"
-#. TRANS A socket operation with a specified timeout received no response during
-#. TRANS the timeout period.
-#: stdio-common/../sysdeps/gnu/errlist.c:678
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:175
-msgid "Connection timed out"
-msgstr "Opkoblingen overskred tidsgrænsen"
+#: nis/nis_print.c:51
+msgid "UNKNOWN"
+msgstr "UKENDT"
-#. TRANS A remote host refused to allow the network connection (typically because
-#. TRANS it is not running the requested service).
-#: stdio-common/../sysdeps/gnu/errlist.c:688
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:176
-msgid "Connection refused"
-msgstr "Opkobling nægtet"
+#: nis/nis_print.c:109
+msgid "BOGUS OBJECT\n"
+msgstr "FALSKT OBJEKT\n"
-#. TRANS Too many levels of symbolic links were encountered in looking up a file name.
-#. TRANS This often indicates a cycle of symbolic links.
-#: stdio-common/../sysdeps/gnu/errlist.c:698
-msgid "Too many levels of symbolic links"
-msgstr "For mange niveauer med symbolske lænker"
+#: nis/nis_print.c:112
+msgid "NO OBJECT\n"
+msgstr "INTET OBJEKT\n"
-#. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for
-#. TRANS Files}) or host name too long (in @code{gethostname} or
-#. TRANS @code{sethostname}; @pxref{Host Identification}).
-#: stdio-common/../sysdeps/gnu/errlist.c:709
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:108
-msgid "File name too long"
-msgstr "For langt filnavn"
+#: nis/nis_print.c:115
+msgid "DIRECTORY\n"
+msgstr "KATALOG\n"
-#. TRANS The remote host for a requested network connection is down.
-#: stdio-common/../sysdeps/gnu/errlist.c:718
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:177
-msgid "Host is down"
-msgstr "Værtsmaskinen er nede"
+#: nis/nis_print.c:118
+msgid "GROUP\n"
+msgstr "GRUPPE\n"
-#. TRANS The remote host for a requested network connection is not reachable.
-#: stdio-common/../sysdeps/gnu/errlist.c:727
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:178
-msgid "No route to host"
-msgstr "Ingen rute til værtsmaskinen"
+#: nis/nis_print.c:121
+msgid "TABLE\n"
+msgstr "TABEL\n"
-#. TRANS Directory not empty, where an empty directory was expected. Typically,
-#. TRANS this error occurs when you are trying to delete a directory.
-#: stdio-common/../sysdeps/gnu/errlist.c:737
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:123
-msgid "Directory not empty"
-msgstr "Filkataloget er ikke tomt"
+#: nis/nis_print.c:124
+msgid "ENTRY\n"
+msgstr "POST\n"
-#. TRANS This means that the per-user limit on new process would be exceeded by
-#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on
-#. TRANS the @code{RLIMIT_NPROC} limit.
-#: stdio-common/../sysdeps/gnu/errlist.c:748
-msgid "Too many processes"
-msgstr "For mange processer"
+#: nis/nis_print.c:127
+msgid "LINK\n"
+msgstr "LINK\n"
-#. TRANS The file quota system is confused because there are too many users.
-#. TRANS @c This can probably happen in a GNU system when using NFS.
-#: stdio-common/../sysdeps/gnu/errlist.c:758
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:124
-msgid "Too many users"
-msgstr "For mange brugere"
+#: nis/nis_print.c:130
+msgid "PRIVATE\n"
+msgstr "PRIVAT\n"
-#. TRANS The user's disk quota was exceeded.
-#: stdio-common/../sysdeps/gnu/errlist.c:767
-msgid "Disk quota exceeded"
-msgstr "Diskkvoten overskredet"
+#: nis/nis_print.c:133
+msgid "(Unknown object)\n"
+msgstr "(Ukendt objekt)\n"
-#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS
-#. TRANS system which is due to file system rearrangements on the server host.
-#. TRANS Repairing this condition usually requires unmounting and remounting
-#. TRANS the NFS file system on the local host.
-#: stdio-common/../sysdeps/gnu/errlist.c:779
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181
-msgid "Stale NFS file handle"
-msgstr "Forældet NFS-filhåndtag"
+#: nis/nis_print.c:167
+#, c-format
+msgid "Name : `%s'\n"
+msgstr "Navn : '%s'\n"
-#. TRANS An attempt was made to NFS-mount a remote file system with a file name that
-#. TRANS already specifies an NFS-mounted file.
-#. TRANS (This is an error on some operating systems, but we expect it to work
-#. TRANS properly on the GNU system, making this error code impossible.)
-#: stdio-common/../sysdeps/gnu/errlist.c:791
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:96
-msgid "Object is remote"
-msgstr "Er et fjernobjekt"
+#: nis/nis_print.c:168
+#, c-format
+msgid "Type : %s\n"
+msgstr "Type : %s\n"
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:800
-msgid "RPC struct is bad"
-msgstr "RPC-strukturen er ugyldig"
+#: nis/nis_print.c:173
+msgid "Master Server :\n"
+msgstr "Hovedserver: \n"
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:809
-msgid "RPC version wrong"
-msgstr "forkert RPC-version"
+#: nis/nis_print.c:175
+msgid "Replicate :\n"
+msgstr "Replikér:\n"
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:818
-msgid "RPC program not available"
-msgstr "RPC-programmet er ikke tilgængelig"
+#: nis/nis_print.c:176
+#, c-format
+msgid "\tName : %s\n"
+msgstr "\tNavn : %s\n"
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:827
-msgid "RPC program version wrong"
-msgstr "RPC: forkert programversion"
+#: nis/nis_print.c:177
+msgid "\tPublic Key : "
+msgstr "\tOffentlig nøgle: "
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:836
-msgid "RPC bad procedure for program"
-msgstr "RPC: ugyldig procedure for program"
+#: nis/nis_print.c:181
+msgid "None.\n"
+msgstr "Ingen.\n"
-#. TRANS No locks available. This is used by the file locking facilities; see
-#. TRANS @ref{File Locks}. This error is never generated by the GNU system, but
-#. TRANS it can result from an operation to an NFS server running another
-#. TRANS operating system.
-#: stdio-common/../sysdeps/gnu/errlist.c:848
-msgid "No locks available"
-msgstr "Ingen låse tilgængelige"
+#: nis/nis_print.c:184
+#, c-format
+msgid "Diffie-Hellmann (%d bits)\n"
+msgstr "Diffie-Hellmannn (%d bit)\n"
-#. TRANS Inappropriate file type or format. The file was the wrong type for the
-#. TRANS operation, or a data file had the wrong format.
-#. TRANS
-#. TRANS On some systems @code{chmod} returns this error if you try to set the
-#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
-#: stdio-common/../sysdeps/gnu/errlist.c:861
-msgid "Inappropriate file type or format"
-msgstr "Uegnet filtype eller format"
+#: nis/nis_print.c:189
+#, c-format
+msgid "RSA (%d bits)\n"
+msgstr "RSA (%d bit)\n"
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:870
-msgid "Authentication error"
-msgstr "Autentificeringsfejl"
+#: nis/nis_print.c:192
+msgid "Kerberos.\n"
+msgstr "Kerberos.\n"
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:879
-msgid "Need authenticator"
-msgstr "Skal have nogen til at autentificere"
+#: nis/nis_print.c:195
+#, c-format
+msgid "Unknown (type = %d, bits = %d)\n"
+msgstr "Ukendt (type = %d, bit = %d)\n"
-#. TRANS Function not implemented. This indicates that the function called is
-#. TRANS not implemented at all, either in the C library itself or in the
-#. TRANS operating system. When you get this error, you can be sure that this
-#. TRANS particular function will always fail with @code{ENOSYS} unless you
-#. TRANS install a new version of the C library or the operating system.
-#: stdio-common/../sysdeps/gnu/errlist.c:892
-msgid "Function not implemented"
-msgstr "Funktionen er ikke implementeret"
+#: nis/nis_print.c:206
+#, c-format
+msgid "\tUniversal addresses (%u)\n"
+msgstr "\tUniversale adresser (%u)\n"
-#. TRANS Not supported. A function returns this error when certain parameter
-#. TRANS values are valid, but the functionality they request is not available.
-#. TRANS This can mean that the function does not implement a particular command
-#. TRANS or option value or flag bit at all. For functions that operate on some
-#. TRANS object given in a parameter, such as a file descriptor or a port, it
-#. TRANS might instead mean that only @emph{that specific object} (file
-#. TRANS descriptor, port, etc.) is unable to support the other parameters given;
-#. TRANS different file descriptors might support different ranges of parameter
-#. TRANS values.
-#. TRANS
-#. TRANS If the entire function is not available at all in the implementation,
-#. TRANS it returns @code{ENOSYS} instead.
-#: stdio-common/../sysdeps/gnu/errlist.c:912
-msgid "Not supported"
-msgstr "Ikke understøttet"
+#: nis/nis_print.c:228
+msgid "Time to live : "
+msgstr "Levetid: "
-#. TRANS While decoding a multibyte character the function came along an invalid
-#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
-#: stdio-common/../sysdeps/gnu/errlist.c:922
-msgid "Invalid or incomplete multibyte or wide character"
-msgstr "Ugyldigt eller ufuldstændigt multibyte eller bredt tegn"
+#: nis/nis_print.c:230
+msgid "Default Access rights :\n"
+msgstr "Forvalgte adgangsrettigheder:\n"
-#. TRANS In the GNU system, servers supporting the @code{term} protocol return
-#. TRANS this error for certain operations when the caller is not in the
-#. TRANS foreground process group of the terminal. Users do not usually see this
-#. TRANS error because functions such as @code{read} and @code{write} translate
-#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control},
-#. TRANS for information on process groups and these signals.
-#: stdio-common/../sysdeps/gnu/errlist.c:936
-msgid "Inappropriate operation for background process"
-msgstr "Uegnet operation for baggrundsproces"
+#: nis/nis_print.c:239
+#, c-format
+msgid "\tType : %s\n"
+msgstr "\tType : %s\n"
-#. TRANS In the GNU system, opening a file returns this error when the file is
-#. TRANS translated by a program and the translator program dies while starting
-#. TRANS up, before it has connected to the file.
-#: stdio-common/../sysdeps/gnu/errlist.c:947
-msgid "Translator died"
-msgstr "Oversætteren døde"
+#: nis/nis_print.c:240
+msgid "\tAccess rights: "
+msgstr "\tAdgangsrettigheder: "
-#. TRANS The experienced user will know what is wrong.
-#. TRANS @c This error code is a joke. Its perror text is part of the joke.
-#. TRANS @c Don't change it.
-#: stdio-common/../sysdeps/gnu/errlist.c:958
-msgid "?"
-msgstr "?"
+#: nis/nis_print.c:254
+msgid "Group Flags :"
+msgstr "Gruppeflag :"
-#. TRANS You did @strong{what}?
-#: stdio-common/../sysdeps/gnu/errlist.c:967
-msgid "You really blew it this time"
-msgstr "Denne gang gjorde du virkelig i nælderne"
+#: nis/nis_print.c:257
+msgid ""
+"\n"
+"Group Members :\n"
+msgstr ""
+"\n"
+"Gruppemedlemmer :\n"
-#. TRANS Go home and have a glass of warm, dairy-fresh milk.
-#: stdio-common/../sysdeps/gnu/errlist.c:976
-msgid "Computer bought the farm"
-msgstr "Datamaskinen tog på ferie"
+#: nis/nis_print.c:269
+#, c-format
+msgid "Table Type : %s\n"
+msgstr "Tabeltype : %s\n"
-#. TRANS This error code has no purpose.
-#: stdio-common/../sysdeps/gnu/errlist.c:985
-msgid "Gratuitous error"
-msgstr "Umotiveret fejl"
+#: nis/nis_print.c:270
+#, c-format
+msgid "Number of Columns : %d\n"
+msgstr "Antal kolonner : %d\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:993
-msgid "Bad message"
-msgstr "Ugyldig meddelelse"
+#: nis/nis_print.c:271
+#, c-format
+msgid "Character Separator : %c\n"
+msgstr "Tegn-separator : %c\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1001
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:66
-msgid "Identifier removed"
-msgstr "Identifikator fjernet"
+#: nis/nis_print.c:272
+#, c-format
+msgid "Search Path : %s\n"
+msgstr "Søgesti : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1009
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:104
-msgid "Multihop attempted"
-msgstr "Forsøgte viderehop"
+#: nis/nis_print.c:273
+msgid "Columns :\n"
+msgstr "Kolonner :\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1017
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:91
-msgid "No data available"
-msgstr "Ingen data er tilgængelige"
+#: nis/nis_print.c:276
+#, c-format
+msgid "\t[%d]\tName : %s\n"
+msgstr "\t[%d]\tNavn : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1025
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:97
-msgid "Link has been severed"
-msgstr "Lænken er blevet skadet"
+#: nis/nis_print.c:278
+msgid "\t\tAttributes : "
+msgstr "\t\tAttributter :"
-#: stdio-common/../sysdeps/gnu/errlist.c:1033
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:65
-msgid "No message of desired type"
-msgstr "Ingen meddelelser af ønsket type"
+#: nis/nis_print.c:280
+msgid "\t\tAccess Rights : "
+msgstr "\t\tAdgangsrettigheder :"
-#: stdio-common/../sysdeps/gnu/errlist.c:1041
-msgid "Out of streams resources"
-msgstr "Ikke flere strøm-ressourcer"
+#: nis/nis_print.c:290
+msgid "Linked Object Type : "
+msgstr "Lænket objekttype : "
-#: stdio-common/../sysdeps/gnu/errlist.c:1049
-msgid "Device not a stream"
-msgstr "Enheden er ikke en strøm"
+#: nis/nis_print.c:292
+#, c-format
+msgid "Linked to : %s\n"
+msgstr "Lænket til : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1057
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:109
-msgid "Value too large for defined data type"
-msgstr "Værdien er for stor for den definerede datatype"
+#: nis/nis_print.c:302
+#, c-format
+msgid "\tEntry data of type %s\n"
+msgstr "\tIndtastningsdata af type %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1065
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:101
-msgid "Protocol error"
-msgstr "Protokolfejl"
+#: nis/nis_print.c:305
+#, c-format
+msgid "\t[%u] - [%u bytes] "
+msgstr "\t[%u] - [%u byte] "
-#: stdio-common/../sysdeps/gnu/errlist.c:1073
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:92
-msgid "Timer expired"
-msgstr "Tidsgrænse udløb"
+#: nis/nis_print.c:308
+msgid "Encrypted data\n"
+msgstr "Krypteret data\n"
-#. TRANS Operation canceled; an asynchronous operation was canceled before it
-#. TRANS completed. @xref{Asynchronous I/O}. When you call @code{aio_cancel},
-#. TRANS the normal result is for the operations affected to complete with this
-#. TRANS error; @pxref{Cancel AIO Operations}.
-#: stdio-common/../sysdeps/gnu/errlist.c:1085
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:77
-msgid "Operation canceled"
-msgstr "Operationen afbrudt"
+#: nis/nis_print.c:310
+msgid "Binary data\n"
+msgstr "Binære data\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1093
-msgid "Interrupted system call should be restarted"
-msgstr "Afbrudt systemkald burde startes om"
+#: nis/nis_print.c:326
+#, c-format
+msgid "Object Name : %s\n"
+msgstr "Objektnavn : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1101
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:67
-msgid "Channel number out of range"
-msgstr "Kanalnummer udenfor gyldigt interval"
+#: nis/nis_print.c:327
+#, c-format
+msgid "Directory : %s\n"
+msgstr "Katalog : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1109
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:68
-msgid "Level 2 not synchronized"
-msgstr "Niveau 2 ikke synkroniseret"
+#: nis/nis_print.c:328
+#, c-format
+msgid "Owner : %s\n"
+msgstr "Ejer : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1117
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:69
-msgid "Level 3 halted"
-msgstr "Niveau 3 stoppet"
+#: nis/nis_print.c:329
+#, c-format
+msgid "Group : %s\n"
+msgstr "Gruppe : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1125
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:70
-msgid "Level 3 reset"
-msgstr "Niveau 3 startet forfra"
+#: nis/nis_print.c:330
+msgid "Access Rights : "
+msgstr "Adgangsrettigheder: "
-#: stdio-common/../sysdeps/gnu/errlist.c:1133
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:71
-msgid "Link number out of range"
-msgstr "Lænkenummer udenfor gyldigt område"
+#: nis/nis_print.c:332
+#, c-format
+msgid ""
+"\n"
+"Time to Live : "
+msgstr ""
+"\n"
+"Levetid : "
-#: stdio-common/../sysdeps/gnu/errlist.c:1141
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:72
-msgid "Protocol driver not attached"
-msgstr "Protokoldriver er ikke tilkoblet"
+#: nis/nis_print.c:335
+#, c-format
+msgid "Creation Time : %s"
+msgstr "Oprettelsestid: %s"
-#: stdio-common/../sysdeps/gnu/errlist.c:1149
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:73
-msgid "No CSI structure available"
-msgstr "Ingen CSI-strukturer tilgængelige"
+#: nis/nis_print.c:337
+#, c-format
+msgid "Mod. Time : %s"
+msgstr "Ændringstid : %s"
-#: stdio-common/../sysdeps/gnu/errlist.c:1157
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:74
-msgid "Level 2 halted"
-msgstr "Niveau 2 stoppet"
+#: nis/nis_print.c:338
+msgid "Object Type : "
+msgstr "Objekttype : "
-#: stdio-common/../sysdeps/gnu/errlist.c:1165
-msgid "Invalid exchange"
-msgstr "Ugyldig veksel"
+#: nis/nis_print.c:358
+#, c-format
+msgid " Data Length = %u\n"
+msgstr " Datalængde = %u\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1173
-msgid "Invalid request descriptor"
-msgstr "Ugyldig forespørgseldeskriptor"
+#: nis/nis_print.c:372
+#, c-format
+msgid "Status : %s\n"
+msgstr "Status : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1181
-msgid "Exchange full"
-msgstr "Veksel fuld"
+#: nis/nis_print.c:373
+#, c-format
+msgid "Number of objects : %u\n"
+msgstr "Antal objekter : %u\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1189
-msgid "No anode"
-msgstr "Ingen anode"
+#: nis/nis_print.c:377
+#, c-format
+msgid "Object #%d:\n"
+msgstr "Objekt #%d:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1197
-msgid "Invalid request code"
-msgstr "Ugyldig adgangskode"
+#: nis/nis_print_group_entry.c:117
+#, c-format
+msgid "Group entry for \"%s.%s\" group:\n"
+msgstr "Gruppeindtastning for '%s.%s'-gruppen:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1205
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:85
-msgid "Invalid slot"
-msgstr "Ugyldig plads"
+#: nis/nis_print_group_entry.c:125
+msgid " Explicit members:\n"
+msgstr " Eksplicitte medlemmer:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1213
-msgid "File locking deadlock error"
-msgstr "Fillåsning fejlede på grund af vranglås"
+#: nis/nis_print_group_entry.c:130
+msgid " No explicit members\n"
+msgstr " Ingen eksplicitte medlemmer\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1221
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:87
-msgid "Bad font file format"
-msgstr "Ugyldigt format på typesnitsfil"
+#: nis/nis_print_group_entry.c:133
+msgid " Implicit members:\n"
+msgstr " Implicitte medlemmer:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1229
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:94
-msgid "Machine is not on the network"
-msgstr "Maskinen er ikke på netværket"
+#: nis/nis_print_group_entry.c:138
+msgid " No implicit members\n"
+msgstr " Ingen implicitte medlemmer\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1237
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:95
-msgid "Package not installed"
-msgstr "Pakken er ikke installeret"
+#: nis/nis_print_group_entry.c:141
+msgid " Recursive members:\n"
+msgstr " Rekursive medlemmer:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1245
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:98
-msgid "Advertise error"
-msgstr "Annonceringsfejl"
+#: nis/nis_print_group_entry.c:146
+msgid " No recursive members\n"
+msgstr " Ingen rekursive medlemmer\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1253
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:99
-msgid "Srmount error"
-msgstr "Srmount-fejl"
+#: nis/nis_print_group_entry.c:149
+msgid " Explicit nonmembers:\n"
+msgstr " Eksplicitte ikke-medlemmer:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1261
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:100
-msgid "Communication error on send"
-msgstr "Kommunikationsfejl ved sending"
+#: nis/nis_print_group_entry.c:154
+msgid " No explicit nonmembers\n"
+msgstr " Ingen eksplicitte ikke-medlemmer\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1269
-msgid "RFS specific error"
-msgstr "RFS-specifik fejl"
+#: nis/nis_print_group_entry.c:157
+msgid " Implicit nonmembers:\n"
+msgstr " Implicitte ikke-medlemmer:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1277
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:110
-msgid "Name not unique on network"
-msgstr "Navnet er ikke unikt på netværket"
+#: nis/nis_print_group_entry.c:162
+msgid " No implicit nonmembers\n"
+msgstr " Ingen implicitte ikke-medlemmer\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1285
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:111
-msgid "File descriptor in bad state"
-msgstr "Fildeskriptor i ugyldig tilstand"
+#: nis/nis_print_group_entry.c:165
+msgid " Recursive nonmembers:\n"
+msgstr " Rekursive ikke-medlemmer:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1293
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:112
-msgid "Remote address changed"
-msgstr "Fjernadresse ændret"
+#: nis/nis_print_group_entry.c:170
+msgid " No recursive nonmembers\n"
+msgstr " Ingen rekursive ikke-medlemmer\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1301
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:113
-msgid "Can not access a needed shared library"
-msgstr "Kan ikke tilgå et nødvendig delt bibliotek"
+#: nis/nss_nisplus/nisplus-publickey.c:101
+#: nis/nss_nisplus/nisplus-publickey.c:183
+#, c-format
+msgid "DES entry for netname %s not unique\n"
+msgstr "DES-indtastning for netnavn %s er ikke unikt\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1309
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:114
-msgid "Accessing a corrupted shared library"
-msgstr "Aksesserer et skadet delt bibliotek"
+#: nis/nss_nisplus/nisplus-publickey.c:220
+#, c-format
+msgid "netname2user: missing group id list in `%s'"
+msgstr "netname2user: manglende gruppeid-liste i '%s'"
-#: stdio-common/../sysdeps/gnu/errlist.c:1317
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:115
-msgid ".lib section in a.out corrupted"
-msgstr ".lib-sektion i a.out skadet"
+#: nis/nss_nisplus/nisplus-publickey.c:302
+#: nis/nss_nisplus/nisplus-publickey.c:308
+#: nis/nss_nisplus/nisplus-publickey.c:373
+#: nis/nss_nisplus/nisplus-publickey.c:382
+#, c-format
+msgid "netname2user: (nis+ lookup): %s\n"
+msgstr "netname2user: (nis+-opslag): %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1325
-msgid "Attempting to link in too many shared libraries"
-msgstr "Forsøger at indlænke for mange delte biblioteker"
+#: nis/nss_nisplus/nisplus-publickey.c:321
+#, c-format
+msgid "netname2user: DES entry for %s in directory %s not unique"
+msgstr "netname2user: DES-indtastning for %s i katalog %s er ikke unikt"
-#: stdio-common/../sysdeps/gnu/errlist.c:1333
-msgid "Cannot exec a shared library directly"
-msgstr "Kan ikke eksekvere et delt bibliotek direkte"
+#: nis/nss_nisplus/nisplus-publickey.c:339
+#, c-format
+msgid "netname2user: principal name `%s' too long"
+msgstr "netname2user: navn på 'principal' '%s' for langt"
-#: stdio-common/../sysdeps/gnu/errlist.c:1341
-msgid "Streams pipe error"
-msgstr "Strøm-rørfejl"
+#: nis/nss_nisplus/nisplus-publickey.c:395
+#, c-format
+msgid "netname2user: LOCAL entry for %s in directory %s not unique"
+msgstr "netname2user: LOKAL-indtastning for %s i katalog %s er ikke unikt"
-#: stdio-common/../sysdeps/gnu/errlist.c:1349
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:165
-msgid "Structure needs cleaning"
-msgstr "Strukturen trænger til oprydning"
+#: nis/nss_nisplus/nisplus-publickey.c:402
+msgid "netname2user: should not have uid 0"
+msgstr "netname2user: burde ikke have uid 0"
-#: stdio-common/../sysdeps/gnu/errlist.c:1357
-msgid "Not a XENIX named type file"
-msgstr "Ikke en XENIX navngiven fil"
+#: nis/ypclnt.c:836
+msgid "Request arguments bad"
+msgstr "Argumenter for forespørgsel er ugyldige"
-#: stdio-common/../sysdeps/gnu/errlist.c:1365
-msgid "No XENIX semaphores available"
-msgstr "Ingen XENIX-semaforer tilgængelige"
+#: nis/ypclnt.c:839
+msgid "RPC failure on NIS operation"
+msgstr "RPC-fejl ved NIS-operation"
-#: stdio-common/../sysdeps/gnu/errlist.c:1373
-msgid "Is a named type file"
-msgstr "Er en navngiven filtype"
+# nis/ypclnt.c:637+
+#: nis/ypclnt.c:842
+msgid "Can't bind to server which serves this domain"
+msgstr "Kan ikke forbinde til server for dette domæne"
-#: stdio-common/../sysdeps/gnu/errlist.c:1381
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:170
-msgid "Remote I/O error"
-msgstr "I/O-fejl på fjern maskine"
+#: nis/ypclnt.c:845
+msgid "No such map in server's domain"
+msgstr "Ingen sådan tabel i serverens domæne"
-#: stdio-common/../sysdeps/gnu/errlist.c:1389
-msgid "No medium found"
-msgstr "Medium ikke fundet"
+#: nis/ypclnt.c:848
+msgid "No such key in map"
+msgstr "Ingen sådan nøgle i tabellen"
-#: stdio-common/../sysdeps/gnu/errlist.c:1397
-msgid "Wrong medium type"
-msgstr "Gal mediatype"
+#: nis/ypclnt.c:851
+msgid "Internal NIS error"
+msgstr "Intern NIS-fejl"
-#: stdio-common/../sysdeps/unix/siglist.c:26
-msgid "Signal 0"
-msgstr "Signal 0"
+#: nis/ypclnt.c:854
+msgid "Local resource allocation failure"
+msgstr "Tildelingsfejl for lokal ressource"
-#: stdio-common/../sysdeps/unix/siglist.c:32
-msgid "IOT trap"
-msgstr "IOT-fælde"
+#: nis/ypclnt.c:857
+msgid "No more records in map database"
+msgstr "Ikke flere poster i tabel-database"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:30
-msgid "Error 0"
-msgstr "Fejl 0"
+#: nis/ypclnt.c:860
+msgid "Can't communicate with portmapper"
+msgstr "Kan ikke kommunikere med portmapper"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:31
-#: nis/nis_error.c:40
-msgid "Not owner"
-msgstr "Ikke ejer"
+#: nis/ypclnt.c:863
+msgid "Can't communicate with ypbind"
+msgstr "Kan ikke kommunikere med ypbind"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:35
-msgid "I/O error"
-msgstr "I/O-fejl"
+#: nis/ypclnt.c:866
+msgid "Can't communicate with ypserv"
+msgstr "Kan ikke kommunikere med ypserv"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:37
-msgid "Arg list too long"
-msgstr "Argumentlisten er for lang"
+#: nis/ypclnt.c:869
+msgid "Local domain name not set"
+msgstr "Lokalt domænenavn er ikke sat"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:39
-msgid "Bad file number"
-msgstr "Ugyldigt filnummer"
+#: nis/ypclnt.c:872
+msgid "NIS map database is bad"
+msgstr "NIS' tabel-database er dårlig"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:42
-msgid "Not enough space"
-msgstr "Ikke nok plads"
+#: nis/ypclnt.c:875
+msgid "NIS client/server version mismatch - can't supply service"
+msgstr "NIS klient/server versionsforskel - kan ikke betjene"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:46
-msgid "Device busy"
-msgstr "Enheden optaget"
+#: nis/ypclnt.c:881
+msgid "Database is busy"
+msgstr "Databasen er optaget"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:48
-msgid "Cross-device link"
-msgstr "Lænke over adskilte enheder"
+#: nis/ypclnt.c:884
+msgid "Unknown NIS error code"
+msgstr "Ukendt NIS-fejlkode"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:53
-msgid "File table overflow"
-msgstr "Filtabel overfyldt"
+#: nis/ypclnt.c:924
+msgid "Internal ypbind error"
+msgstr "Intern ypbind-fejl"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:63
-msgid "Argument out of domain"
-msgstr "Argument er udenfor område"
+#: nis/ypclnt.c:927
+msgid "Domain not bound"
+msgstr "Domænet er ikke bundet"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:64
-msgid "Result too large"
-msgstr "Resultat for stort"
+#: nis/ypclnt.c:930
+msgid "System resource allocation failure"
+msgstr "Kunne ikke tildele systemressource"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:75
-msgid "Deadlock situation detected/avoided"
-msgstr "Vranglås-situation fundet/afværget"
+#: nis/ypclnt.c:933
+msgid "Unknown ypbind error"
+msgstr "Ukendt ypbind-fejl"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:76
-msgid "No record locks available"
-msgstr "Ingen post-låse tilgængelige"
+#: nis/ypclnt.c:974
+msgid "yp_update: cannot convert host to netname\n"
+msgstr "yp_update: kan ikke konvertere vært til netnavn\n"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:79
-msgid "Disc quota exceeded"
-msgstr "Diskkvoten er overskredet"
+#: nis/ypclnt.c:992
+msgid "yp_update: cannot get server address\n"
+msgstr "yp_update: kan ikke hente serveradresse\n"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:80
-msgid "Bad exchange descriptor"
-msgstr "Ugyldig udvekslings-deskriptor"
+#: nscd/aicache.c:82 nscd/hstcache.c:481
+#, c-format
+msgid "Haven't found \"%s\" in hosts cache!"
+msgstr "Har ikke fundet '%s' i værts-nærbuffer!"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:81
-msgid "Bad request descriptor"
-msgstr "Ugyldig forespørgseldeskriptor"
+#: nscd/aicache.c:84 nscd/hstcache.c:483
+#, c-format
+msgid "Reloading \"%s\" in hosts cache!"
+msgstr "Genindlæser '%s' i værts-nærbuffer!"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:82
-msgid "Message tables full"
-msgstr "Meddelsestabeller fulde"
+#: nscd/cache.c:150
+#, c-format
+msgid "add new entry \"%s\" of type %s for %s to cache%s"
+msgstr "tilføj ny post \"%s\" af typen %s for %s til cache%s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:83
-msgid "Anode table overflow"
-msgstr "Anode-tabel overfyldt"
+#: nscd/cache.c:152
+msgid " (first)"
+msgstr " (første)"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:84
-msgid "Bad request code"
-msgstr "Ugyldig forespørgselskode"
+#: nscd/cache.c:286 nscd/connections.c:866
+#, c-format
+msgid "cannot stat() file `%s': %s"
+msgstr "kan ikke udføre stat() på fil '%s': %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:86
-msgid "File locking deadlock"
-msgstr "Fillåsning vranglås"
+#: nscd/cache.c:328
+#, c-format
+msgid "pruning %s cache; time %ld"
+msgstr "formindsker %s cache; tid %ld"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:88
-msgid "Error 58"
-msgstr "Fejl 58"
+#: nscd/cache.c:357
+#, c-format
+msgid "considering %s entry \"%s\", timeout %<PRIu64>"
+msgstr "overvejer %s-post \"%s\", tidsgrænse %<PRIu64>"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:89
-msgid "Error 59"
-msgstr "Fejl 59"
+#: nscd/connections.c:570
+#, c-format
+msgid "invalid persistent database file \"%s\": %s"
+msgstr "Ugyldig overlevende databasefil '%s': %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:90
-msgid "Not a stream device"
-msgstr "Ikke en strøm-enhed"
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr "uinitieret hoved"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:93
-msgid "Out of stream resources"
-msgstr "Ikke flere strøm-ressourcer"
+#: nscd/connections.c:583
+msgid "header size does not match"
+msgstr "hovedstørrelse er ikke overensstemmende"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:102
-msgid "Error 72"
-msgstr "Fejl 72"
+#: nscd/connections.c:593
+msgid "file size does not match"
+msgstr "filstørrelse er ikke overensstemmende"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:103
-msgid "Error 73"
-msgstr "Fejl 73"
+#: nscd/connections.c:610
+msgid "verification failed"
+msgstr "efterprøvelse mislykkedes"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:105
-msgid "Error 75"
-msgstr "Fejl 75"
+#: nscd/connections.c:624
+#, c-format
+msgid "suggested size of table for database %s larger than the persistent database's table"
+msgstr "foreslået størrelse på tabellen for database %s er større end den overlevende databases tabel"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:106
-msgid "Error 76"
-msgstr "Fejl 76"
+#: nscd/connections.c:635 nscd/connections.c:720
+#, c-format
+msgid "cannot create read-only descriptor for \"%s\"; no mmap"
+msgstr "kan ikke oprette kun læsbar filidentifikator for \"%s\", ingen mmap"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:107
-msgid "Not a data message"
-msgstr "Ikke en data-meddelelse"
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr "kan ikke få adgang til '%s'"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:116
-msgid "Attempting to link in more shared libraries than system limit"
-msgstr "Forsøger at indlænke flere delte biblioteker end systemet tillader"
+#: nscd/connections.c:699
+#, c-format
+msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
+msgstr "database for %s ødelagt eller brugt af flere samtidigt; fjern %s manuelt hvis det behøves og genstart"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:117
-msgid "Can not exec a shared library directly"
-msgstr "Kan ikke eksekvere et delt bibliotek direkte"
+#: nscd/connections.c:706
+#, c-format
+msgid "cannot create %s; no persistent database used"
+msgstr "kan ikke oprette %s, ingen overlevende database brugt"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:118
-msgid "Illegal byte sequence"
-msgstr "Ulovlig byte-sekvens"
+#: nscd/connections.c:709
+#, c-format
+msgid "cannot create %s; no sharing possible"
+msgstr "Kan ikke oprette %s, ingen deling mulig"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:119
-msgid "Operation not applicable"
-msgstr "Operationen er ikke udførbar"
+#: nscd/connections.c:780
+#, c-format
+msgid "cannot write to database file %s: %s"
+msgstr "kan ikke skrive til databasefil '%s': %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:120
-msgid "Number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"
-msgstr "Antal symbolske lænker besøgt ved gennemgang af søgesti overstiger MAXSYMLINKS"
+#: nscd/connections.c:819
+#, c-format
+msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
+msgstr "kan ikke sætte sokkel til at lukkes ved programstart: %s; deaktiverer paranoiatilstand"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:121
-msgid "Error 91"
-msgstr "Fejl 91"
+#: nscd/connections.c:902
+#, c-format
+msgid "cannot open socket: %s"
+msgstr "kan ikke åbne sokkel: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:122
-msgid "Error 92"
-msgstr "Fejl 92"
+#: nscd/connections.c:922
+#, c-format
+msgid "cannot change socket to nonblocking mode: %s"
+msgstr "kan ikke ændre sokkel til ikke-blokerende tilstand: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:129
-msgid "Option not supported by protocol"
-msgstr "Valgmulighed er ikke understøttet af protokollen"
+#: nscd/connections.c:930
+#, c-format
+msgid "cannot set socket to close on exec: %s"
+msgstr "kan ikke få sokkel til at lukke ved programstart: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:130
-msgid "Error 100"
-msgstr "Fejl 100"
+#: nscd/connections.c:943
+#, c-format
+msgid "cannot enable socket to accept connections: %s"
+msgstr "kan ikke få sokkel til at acceptere forbindelser: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:131
-msgid "Error 101"
-msgstr "Fejl 101"
+#: nscd/connections.c:1043
+#, c-format
+msgid "provide access to FD %d, for %s"
+msgstr "giv adgang til FD %d, for %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:132
-msgid "Error 102"
-msgstr "Fejl 102"
+#: nscd/connections.c:1055
+#, c-format
+msgid "cannot handle old request version %d; current version is %d"
+msgstr "kan ikke håndtere gammel forespørgsel af version %d. Nuværende version er %d"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:133
-msgid "Error 103"
-msgstr "Fejl 103"
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr "forespørgsel fra %ld ikke behandlet da rettigheder mangler"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:134
-msgid "Error 104"
-msgstr "Fejl 104"
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr "forespørgsel fra \"%s\" [%ld] ikke behandlet da rettigheder mangler"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:135
-msgid "Error 105"
-msgstr "Fejl 105"
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr "forespørgsel ikke behandlet da rettigheder mangler"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:136
-msgid "Error 106"
-msgstr "Fejl 106"
+#: nscd/connections.c:1125 nscd/connections.c:1178
+#, c-format
+msgid "cannot write result: %s"
+msgstr "kan ikke udskrive resultat: '%s'"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:137
-msgid "Error 107"
-msgstr "Fejl 107"
+#: nscd/connections.c:1261
+#, c-format
+msgid "error getting caller's id: %s"
+msgstr "fejl ved indhentning af opkalders id: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:138
-msgid "Error 108"
-msgstr "Fejl 108"
+#: nscd/connections.c:1320
+#, c-format
+msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
+msgstr "kan ikke åbne /proc/self/cmdline: %s, deaktiverer paranoiatilstand"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:139
-msgid "Error 109"
-msgstr "Fejl 109"
+#: nscd/connections.c:1334
+#, c-format
+msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
+msgstr "kan ikke læse /proc/self/cmdline: %s, deaktiverer paranoiatilstand"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:140
-msgid "Error 110"
-msgstr "Fejl 110"
+#: nscd/connections.c:1374
+#, c-format
+msgid "cannot change to old UID: %s; disabling paranoia mode"
+msgstr "kan ikke ændre til foregående UID: %s; deaktiverer paranoiatilstand"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:141
-msgid "Error 111"
-msgstr "Fejl 111"
+#: nscd/connections.c:1384
+#, c-format
+msgid "cannot change to old GID: %s; disabling paranoia mode"
+msgstr "kan ikke ændre til foregående GID: %s; deaktiverer paranoiatilstand"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:142
-msgid "Error 112"
-msgstr "Fejl 112"
+#: nscd/connections.c:1397
+#, c-format
+msgid "cannot change to old working directory: %s; disabling paranoia mode"
+msgstr "kan ikke ændre til foregående arbejdskatalog: %s; deaktiverer paranoiatilstand"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:143
-msgid "Error 113"
-msgstr "Fejl 113"
+#: nscd/connections.c:1429
+#, c-format
+msgid "re-exec failed: %s; disabling paranoia mode"
+msgstr "genstart mislykkedes: %s; deaktiverer paranoiatilstand"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:144
-msgid "Error 114"
-msgstr "Fejl 114"
+#: nscd/connections.c:1438
+#, c-format
+msgid "cannot change current working directory to \"/\": %s"
+msgstr "kan ikke ændre aktuelt arbejdskatalog to \"/\": %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:145
-msgid "Error 115"
-msgstr "Fejl 115"
+#: nscd/connections.c:1644
+#, c-format
+msgid "short read while reading request: %s"
+msgstr "afkortet læsning ved læsning af forespørgsel: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:146
-msgid "Error 116"
-msgstr "Fejl 116"
+#: nscd/connections.c:1677
+#, c-format
+msgid "key length in request too long: %d"
+msgstr "nøglelængde i forespørgsel for lang: %d"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:147
-msgid "Error 117"
-msgstr "Fejl 117"
+#: nscd/connections.c:1690
+#, c-format
+msgid "short read while reading request key: %s"
+msgstr "afkortet læsning ved læsning af forespørgsels-nøgle: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:148
-msgid "Error 118"
-msgstr "Fejl 118"
+#: nscd/connections.c:1699
+#, c-format
+msgid "handle_request: request received (Version = %d) from PID %ld"
+msgstr "handle_request: forespørgsel modtaget (version = %d) fra PID %ld"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:149
-msgid "Error 119"
-msgstr "Fejl 119"
+#: nscd/connections.c:1704
+#, c-format
+msgid "handle_request: request received (Version = %d)"
+msgstr "handle_request: forespørgsel modtaget (version = %d)"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:152
-msgid "Operation not supported on transport endpoint"
-msgstr "Operationen er ikke understøttet, eller endepunkt for transport"
+#: nscd/connections.c:1903 nscd/connections.c:2101
+#, c-format
+msgid "disabled inotify after read error %d"
+msgstr "deaktiverede inotify efter læsefejl %d"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:154
-msgid "Address family not supported by protocol family"
-msgstr "Adressefamilien er ikke understøttet af protokolfamilien"
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr "kan ikke initiere betingelsesvariabel"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:159
-msgid "Network dropped connection because of reset"
-msgstr "Netværket nedlagde forbindelsen på grund af genstart"
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr "kunne ikke starte oprydningstråd; afslutter"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:166
-msgid "Error 136"
-msgstr "Fejl 136"
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr "kunne ikke starte nogen arbejdstråd; afslutter"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:167
-msgid "Not a name file"
-msgstr "Ikke en navnefil"
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
+#, c-format
+msgid "Failed to run nscd as user '%s'"
+msgstr "Kunne ikke køre nscd som bruger \"%s\""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:168
-msgid "Not available"
-msgstr "Ikke tilgængelig"
+#: nscd/connections.c:2322
+#, c-format
+msgid "initial getgrouplist failed"
+msgstr "indledende getgrouplist mislykkedes"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:169
-msgid "Is a name file"
-msgstr "Er en navnefil"
+#: nscd/connections.c:2331
+#, c-format
+msgid "getgrouplist failed"
+msgstr "getgrouplist mislykkedes"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:171
-msgid "Reserved for future use"
-msgstr "Reserveret til fremtidigt brug"
+#: nscd/connections.c:2349
+#, c-format
+msgid "setgroups failed"
+msgstr "setgroups mislykkedes"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:172
-msgid "Error 142"
-msgstr "Fejl 142"
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
+#, c-format
+msgid "short write in %s: %s"
+msgstr "afkortet skrivning i %s: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:173
-msgid "Cannot send after socket shutdown"
-msgstr "Kan ikke sende efter at sokkel er koblet ned"
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
+#, c-format
+msgid "Haven't found \"%s\" in group cache!"
+msgstr "Har ikke fundet '%s' i gruppe-nærbuffer!"
-#: stdio-common/psignal.c:63
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
-msgid "%s%sUnknown signal %d\n"
-msgstr "%s%sUkendt signal %d\n"
+msgid "Reloading \"%s\" in group cache!"
+msgstr "Genindlæser '%s' i gruppe-nærbuffer!"
-#: malloc/mcheck.c:346
-msgid "memory is consistent, library is buggy\n"
-msgstr "lageret er konsistent, biblioteket er fejlbehæftet\n"
+#: nscd/grpcache.c:517
+#, c-format
+msgid "Invalid numeric gid \"%s\"!"
+msgstr "Ugyldigt numerisk gruppe-id (gid) \"%s\"!"
-#: malloc/mcheck.c:349
-msgid "memory clobbered before allocated block\n"
-msgstr "området foran tildelt lagerblok snavset til\n"
+#: nscd/mem.c:457
+#, c-format
+msgid "freed %zu bytes in %s cache"
+msgstr "frigjorde %zu byte i %s cache"
-#: malloc/mcheck.c:352
-msgid "memory clobbered past end of allocated block\n"
-msgstr "området efter tildelt lagerblok snavset til\n"
+#: nscd/mem.c:594
+#, c-format
+msgid "no more memory for database '%s'"
+msgstr "Ikke mere hukommelse for database '%s'"
-#: malloc/mcheck.c:355
-msgid "block freed twice\n"
-msgstr "blok frigjort to gange\n"
+#: nscd/nscd.c:101
+msgid "Read configuration data from NAME"
+msgstr "Læs konfigurationsdata fra NAVN"
-#: malloc/mcheck.c:358
-msgid "bogus mcheck_status, library is buggy\n"
-msgstr "fejlagtig mcheck_status, biblioteket er fejlbehæftet\n"
+#: nscd/nscd.c:103
+msgid "Do not fork and display messages on the current tty"
+msgstr "Forgren ikke ny proces og vis meddelelser på nuværende tty"
-#: malloc/memusagestat.c:53
-msgid "Name output file"
-msgstr "Navngiv udfil"
+#: nscd/nscd.c:104
+msgid "NUMBER"
+msgstr "NUMMER"
-#: malloc/memusagestat.c:54
-msgid "Title string used in output graphic"
-msgstr "Overskriftsstreng brugt i uddatagrafik"
+#: nscd/nscd.c:104
+msgid "Start NUMBER threads"
+msgstr "Start ANTAL tråde"
-#: malloc/memusagestat.c:55
-msgid "Generate output linear to time (default is linear to number of function calls)"
-msgstr "Generér uddata efter tid (standard er efter antal af funktionskald)"
+#: nscd/nscd.c:105
+msgid "Shut the server down"
+msgstr "Luk serveren ned"
-#: malloc/memusagestat.c:57
-msgid "Also draw graph for total memory consumption"
-msgstr "Tegn også graf for totalt lagerforbrug"
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
+msgstr "Skriv nuværende konfigurationsstatistik ud"
-#: malloc/memusagestat.c:58
-msgid "make output graphic VALUE pixel wide"
-msgstr "gør uddata-grafik VÆRDI piksel-bred"
+#: nscd/nscd.c:107
+msgid "TABLE"
+msgstr "TABEL"
-#: malloc/memusagestat.c:59
-msgid "make output graphic VALUE pixel high"
-msgstr "gør uddata-grafik VÆRDI piksel-høj"
+#: nscd/nscd.c:108
+msgid "Invalidate the specified cache"
+msgstr "Ugyldiggør den opgivne hurtigbuffer"
-#: malloc/memusagestat.c:64
-msgid "Generate graphic from memory profiling data"
-msgstr "Generér grafik fra lagerprofileringsdata"
+#: nscd/nscd.c:109
+msgid "TABLE,yes"
+msgstr "TABEL,ja"
-#: malloc/memusagestat.c:67
-msgid "DATAFILE [OUTFILE]"
-msgstr "DATAFIL [UDFIL]"
+#: nscd/nscd.c:110
+msgid "Use separate cache for each user"
+msgstr "Brug separat buffer for hver bruger"
-#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-msgid "Unknown error"
-msgstr "Ukendt fejl"
+#: nscd/nscd.c:115
+msgid "Name Service Cache Daemon."
+msgstr "Dæmon for bufring af navnetjeneste"
-#: string/strsignal.c:69
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
#, c-format
-msgid "Real-time signal %d"
-msgstr "Realtid-signal %d"
+msgid "wrong number of arguments"
+msgstr "galt antal argumenter"
-#: string/strsignal.c:73
+#: nscd/nscd.c:157
#, c-format
-msgid "Unknown signal %d"
-msgstr "Ukendt signal %d"
+msgid "failure while reading configuration file; this is fatal"
+msgstr "fejl ved læsning af konfigurationsfil; dette er fatalt"
-#: timezone/zdump.c:175
+#: nscd/nscd.c:166
#, c-format
-msgid "%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"
-msgstr "%s: brug er %s [ -v ] [ -c grænse ] zonenavn ...\n"
+msgid "already running"
+msgstr "kører allerede"
-#: timezone/zdump.c:268
-msgid "Error writing to standard output"
-msgstr "Fejl ved skrivning til standard ud"
+#: nscd/nscd.c:181 nscd/nscd.c:236
+#, c-format
+msgid "cannot fork"
+msgstr "kan ikke duplikere program"
-#: timezone/zic.c:365
+#: nscd/nscd.c:244
#, c-format
-msgid "%s: Memory exhausted: %s\n"
-msgstr "%s: Lageret opbrugt: %s\n"
+msgid "cannot change current working directory to \"/\""
+msgstr "kan ikke ændre aktuelt arbejdskatalog til \"/\""
-#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
-msgid "Unknown system error"
-msgstr "Ukendt systemfejl"
+#: nscd/nscd.c:252
+msgid "Could not create log file"
+msgstr "Kunne ikke oprette logfil"
-#: timezone/zic.c:424
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
-msgid "\"%s\", line %d: %s"
-msgstr "'%s', linie %d: %s"
+msgid "Only root is allowed to use this option!"
+msgstr "Kun 'root' har lov til at bruge dette flag!"
-#: timezone/zic.c:427
+#: nscd/nscd.c:345
#, c-format
-msgid " (rule from \"%s\", line %d)"
-msgstr " (regel fra '%s', linie %d)"
+msgid "'%s' is not a known database"
+msgstr "'%s' er ikke en kendt database"
-#: timezone/zic.c:439
-msgid "warning: "
-msgstr "advarsel: "
-
-#: timezone/zic.c:449
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
-msgid ""
-"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
-"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
-msgstr ""
-"%s: brug er %s [ -s ] [ -v ] [ -l lokaltid ] [ -p posixregler ] \\\n"
-"\t[ -d katalog ] [ -L skudsekunder ] [ -y årkontrolprogram ] [ filnavn ... ]\n"
+msgid "write incomplete"
+msgstr "skrivning ufuldstændig"
-#: timezone/zic.c:491
+#: nscd/nscd.c:381
#, c-format
-msgid "%s: More than one -d option specified\n"
-msgstr "%s: Mere end et -d-flag specificeret\n"
+msgid "cannot read invalidate ACK"
+msgstr "kan ikke læse ugyldiggørelses-ACK"
-#: timezone/zic.c:501
+#: nscd/nscd.c:387
#, c-format
-msgid "%s: More than one -l option specified\n"
-msgstr "%s: Mere end et -l-flag specificeret\n"
+msgid "invalidation failed"
+msgstr "ugyldiggørelse mislykkedes"
-#: timezone/zic.c:511
+#: nscd/nscd.c:397
#, c-format
-msgid "%s: More than one -p option specified\n"
-msgstr "%s: Mere end et -p-flag specificeret\n"
+msgid "secure services not implemented anymore"
+msgstr "sikre tjenester er ikke længere implementerede"
-#: timezone/zic.c:521
+#: nscd/nscd_conf.c:57
#, c-format
-msgid "%s: More than one -y option specified\n"
-msgstr "%s: Mere end et -y-flag specificeret\n"
+msgid "database %s is not supported"
+msgstr "database %s er ikke understøttet"
-#: timezone/zic.c:531
+#: nscd/nscd_conf.c:108
#, c-format
-msgid "%s: More than one -L option specified\n"
-msgstr "%s: Mere end et -L-flag specificeret\n"
+msgid "Parse error: %s"
+msgstr "Fejl under tolkning: %s"
-#: timezone/zic.c:638
+#: nscd/nscd_conf.c:194
#, c-format
-msgid "%s: Can't unlink %s: %s\n"
-msgstr "%s: Kan ikke aflænke %s: %s\n"
-
-#: timezone/zic.c:645
-msgid "hard link failed, symbolic link used"
-msgstr "hård lænke fejlede, symbolsk lænke brugt"
+msgid "Must specify user name for server-user option"
+msgstr "Brugernavn skal angives for server-bruger-mulighed"
-#: timezone/zic.c:653
+#: nscd/nscd_conf.c:201
#, c-format
-msgid "%s: Can't link from %s to %s: %s\n"
-msgstr "%s: Kan ikke oprette lænke fra %s til %s: %s\n"
-
-#: timezone/zic.c:751 timezone/zic.c:753
-msgid "same rule name in multiple files"
-msgstr "samme regel i flere filer"
+msgid "Must specify user name for stat-user option"
+msgstr "Brugernavn skal angives for stat-bruger-mulighed"
-#: timezone/zic.c:794
-msgid "unruly zone"
-msgstr "vanskelig zone"
-
-#: timezone/zic.c:801
+#: nscd/nscd_conf.c:245
#, c-format
-msgid "%s in ruleless zone"
-msgstr "%s i zone uden regel"
-
-#: timezone/zic.c:822
-msgid "standard input"
-msgstr "standard indkanal"
+msgid "invalid value for 'reload-count': %u"
+msgstr "ugyldig værdi for 'reload-count': %u"
-#: timezone/zic.c:827
+#: nscd/nscd_conf.c:260
#, c-format
-msgid "%s: Can't open %s: %s\n"
-msgstr "%s: Kan ikke åbne %s: %s\n"
-
-#: timezone/zic.c:838
-msgid "line too long"
-msgstr "for lang linie"
-
-#: timezone/zic.c:858
-msgid "input line of unknown type"
-msgstr "inddatalinie af ukendt type"
+msgid "Must specify value for restart-interval option"
+msgstr "Skal angive værdi for \"restart-interval\"-flaget"
-#: timezone/zic.c:874
+#: nscd/nscd_conf.c:274
#, c-format
-msgid "%s: Leap line in non leap seconds file %s\n"
-msgstr "%s: 'Leap'-linie i fil %s som ikke er skudsekundsfil\n"
+msgid "Unknown option: %s %s %s"
+msgstr "Ukendt flag: %s %s %s"
-#: timezone/zic.c:881 timezone/zic.c:1295 timezone/zic.c:1320
+#: nscd/nscd_conf.c:287
#, c-format
-msgid "%s: panic: Invalid l_value %d\n"
-msgstr "%s: panik: ugyldig l_value %d\n"
+msgid "cannot get current working directory: %s; disabling paranoia mode"
+msgstr "kan ikke få fat på aktuelt arbejdskatalog: %s; deaktiverer paranoiatilstand"
-#: timezone/zic.c:889
+#: nscd/nscd_conf.c:307
#, c-format
-msgid "%s: Error reading %s\n"
-msgstr "%s: Fejl ved læsning fra %s\n"
+msgid "maximum file size for %s database too small"
+msgstr "maksimal filstørrelse for \"%s\"-databasen er for lille"
-#: timezone/zic.c:896
+#: nscd/nscd_stat.c:141
#, c-format
-msgid "%s: Error closing %s: %s\n"
-msgstr "%s: Fejl ved lukning af %s: %s\n"
-
-#: timezone/zic.c:901
-msgid "expected continuation line not found"
-msgstr "forventet fortsættelseslinie ikke fundet"
-
-#: timezone/zic.c:957
-msgid "wrong number of fields on Rule line"
-msgstr "galt antal felter på 'Rule'-linie"
-
-#: timezone/zic.c:961
-msgid "nameless rule"
-msgstr "navnløs regel"
+msgid "cannot write statistics: %s"
+msgstr "kan ikke udskrive statistik: '%s'"
-#: timezone/zic.c:966
-msgid "invalid saved time"
-msgstr "ugyldig lagret tid"
+#: nscd/nscd_stat.c:156
+msgid "yes"
+msgstr "ja"
-#: timezone/zic.c:985
-msgid "wrong number of fields on Zone line"
-msgstr "galt antal felter på 'Zone'-linie"
+#: nscd/nscd_stat.c:157
+msgid "no"
+msgstr "nej"
-#: timezone/zic.c:991
+#: nscd/nscd_stat.c:168
#, c-format
-msgid "\"Zone %s\" line and -l option are mutually exclusive"
-msgstr "'Zone %s'-linie og flaget -l udelukker hinanden"
+msgid "Only root or %s is allowed to use this option!"
+msgstr "Kun 'root' eller '%s' har lov til at bruge dette flag!"
-#: timezone/zic.c:999
+#: nscd/nscd_stat.c:179
#, c-format
-msgid "\"Zone %s\" line and -p option are mutually exclusive"
-msgstr "'Zone %s'-linie og flaget -p udelukker hinanden"
+msgid "nscd not running!\n"
+msgstr "nscd kører ikke!\n"
-#: timezone/zic.c:1011
+#: nscd/nscd_stat.c:203
#, c-format
-msgid "duplicate zone name %s (file \"%s\", line %d)"
-msgstr "duplikeret zonenavn %s (fil '%s', linie %d)"
-
-#: timezone/zic.c:1027
-msgid "wrong number of fields on Zone continuation line"
-msgstr "galt antal felter på 'Zone'-fortsættelseslinie"
-
-#: timezone/zic.c:1067
-msgid "invalid UTC offset"
-msgstr "ugyldig UTC-forskydning"
-
-#: timezone/zic.c:1070
-msgid "invalid abbreviation format"
-msgstr "ugyldig forkortelsesformat"
-
-#: timezone/zic.c:1096
-msgid "Zone continuation line end time is not after end time of previous line"
-msgstr "Sluttiden på fortsætningslinien til en zone kommer før sluttiden på foregående linie"
+msgid "cannot read statistics data"
+msgstr "kan ikke læse statistikdata"
-#: timezone/zic.c:1123
-msgid "wrong number of fields on Leap line"
-msgstr "galt antal felter på 'Leap'-linie"
+#: nscd/nscd_stat.c:206
+#, c-format
+msgid ""
+"nscd configuration:\n"
+"\n"
+"%15d server debug level\n"
+msgstr ""
+"nscd-konfiguration:\n"
+"\n"
+"%15d fejlsøgningsniveau for server\n"
-#: timezone/zic.c:1132
-msgid "invalid leaping year"
-msgstr "ugyldigt skudår"
+#: nscd/nscd_stat.c:230
+#, c-format
+msgid "%3ud %2uh %2um %2lus server runtime\n"
+msgstr "%3ud %2uh %2um %2lus kørende server\n"
-#: timezone/zic.c:1147 timezone/zic.c:1250
-msgid "invalid month name"
-msgstr "ugyldigt månedsnavn"
+#: nscd/nscd_stat.c:233
+#, c-format
+msgid " %2uh %2um %2lus server runtime\n"
+msgstr " %2uh %2um %2lus kørende server\n"
-#: timezone/zic.c:1160 timezone/zic.c:1372 timezone/zic.c:1386
-msgid "invalid day of month"
-msgstr "ugyldig dag i måneden"
+#: nscd/nscd_stat.c:235
+#, c-format
+msgid " %2um %2lus server runtime\n"
+msgstr " %2um %2lus kørende server\n"
-#: timezone/zic.c:1165
-msgid "time before zero"
-msgstr "tid før nul"
+#: nscd/nscd_stat.c:237
+#, c-format
+msgid " %2lus server runtime\n"
+msgstr " %2lus kørende server\n"
-#: timezone/zic.c:1173 timezone/zic.c:2049 timezone/zic.c:2068
-msgid "time overflow"
-msgstr "for stor tidsværdi"
+#: nscd/nscd_stat.c:239
+#, c-format
+msgid ""
+"%15d current number of threads\n"
+"%15d maximum number of threads\n"
+"%15lu number of times clients had to wait\n"
+"%15s paranoia mode enabled\n"
+"%15lu restart internal\n"
+msgstr ""
+"%15d nuværende antal tråde\n"
+"%15d maksimalt antal tråde\n"
+"%15lu antal gange klienter behøvede at vente\n"
+"%15s paranoiatilstand aktiveret\n"
+"%15lu genstart internt\n"
-#: timezone/zic.c:1176 timezone/zic.c:1279
-msgid "invalid time of day"
-msgstr "ugyldig tid på dagen"
+#: nscd/nscd_stat.c:273
+#, c-format
+msgid ""
+"\n"
+"%s cache:\n"
+"\n"
+"%15s cache is enabled\n"
+"%15s cache is persistent\n"
+"%15s cache is shared\n"
+"%15zu suggested size\n"
+"%15zu total data pool size\n"
+"%15zu used data pool size\n"
+"%15lu seconds time to live for positive entries\n"
+"%15lu seconds time to live for negative entries\n"
+"%15<PRIuMAX> cache hits on positive entries\n"
+"%15<PRIuMAX> cache hits on negative entries\n"
+"%15<PRIuMAX> cache misses on positive entries\n"
+"%15<PRIuMAX> cache misses on negative entries\n"
+"%15lu%% cache hit rate\n"
+"%15zu current number of cached values\n"
+"%15zu maximum number of cached values\n"
+"%15zu maximum chain length searched\n"
+"%15<PRIuMAX> number of delays on rdlock\n"
+"%15<PRIuMAX> number of delays on wrlock\n"
+"%15<PRIuMAX> memory allocations failed\n"
+"%15s check /etc/%s for changes\n"
+msgstr ""
+"\n"
+"%s hurtigbuffer (cache):\n"
+"\n"
+"%15s hurtigbuffer er aktiveret\n"
+"%15s hurtigbuffer overlever mellem sessioner\n"
+"%15s hurtigbuffer er delt\n"
+"%15zu foreslået størrelse\n"
+"%15zu total størrelse af datapulje\n"
+"%15zu brugt størrelse af datapulje\n"
+"%15lu sekunders levetid for positive indtastninger\n"
+"%15lu sekunders levetid for negative indtastninger\n"
+"%15<PRIuMAX> træf i hurtigbuffer for positive indtastninger\n"
+"%15<PRIuMAX> træf i hurtigbuffer for negative indtastninger\n"
+"%15<PRIuMAX> bom i hurtigbuffer for positive indtastninger\n"
+"%15<PRIuMAX> bom i hurtigbuffer for negative indtastninger\n"
+"%15lu%% træfrate for hurtigbuffer\n"
+"%15zu aktuelt antal værdier i hurtigbuffer\n"
+"%15zu største antal værdier i hurtigbuffer\n"
+"%15zu største længde på søgekæde\n"
+"%15<PRIuMAX> antal forsinkelser på rdlock\n"
+"%15<PRIuMAX> antal forsinkelser på wrlock\n"
+"%15<PRIuMAX> hukommelsesallokeringer mislykket\n"
+"%15s tjek /etc/%s for ændringer\n"
-#: timezone/zic.c:1195
-msgid "illegal CORRECTION field on Leap line"
-msgstr "ulovligt 'CORRECTION'-felt på 'Leap'-linie"
+#: nscd/pwdcache.c:443
+#, c-format
+msgid "Haven't found \"%s\" in password cache!"
+msgstr "Har ikke fundet '%s' i adgangskode-nærbuffer!"
-#: timezone/zic.c:1199
-msgid "illegal Rolling/Stationary field on Leap line"
-msgstr "ulovligt 'Rolling/Stationary'-felt på 'Leap'-linie"
+#: nscd/pwdcache.c:445
+#, c-format
+msgid "Reloading \"%s\" in password cache!"
+msgstr "Genindlæser '%s' i adgangskode-nærbuffer!"
-#: timezone/zic.c:1214
-msgid "wrong number of fields on Link line"
-msgstr "galt antal felter på 'Link'-linie"
+#: nscd/pwdcache.c:523
+#, c-format
+msgid "Invalid numeric uid \"%s\"!"
+msgstr "Ugyldig numerisk bruger-id (uid) \"%s\"!"
-#: timezone/zic.c:1218
-msgid "blank FROM field on Link line"
-msgstr "tomt 'FROM'-felt på 'Link'-linie"
+#: nscd/selinux.c:156
+#, c-format
+msgid "Failed opening connection to the audit subsystem: %m"
+msgstr "Kunne ikke åbne en forbindelse til undersystemet for revision (audit): %m"
-#: timezone/zic.c:1222
-msgid "blank TO field on Link line"
-msgstr "tomt 'TO'-felt på 'Link'-linie"
+#: nscd/selinux.c:177
+msgid "Failed to set keep-capabilities"
+msgstr "Kunne ikke sætte \"keep\"-kapabiliteter"
-#: timezone/zic.c:1299
-msgid "invalid starting year"
-msgstr "ugyldigt startår"
+#: nscd/selinux.c:178 nscd/selinux.c:241
+#, c-format
+msgid "prctl(KEEPCAPS) failed"
+msgstr "prctl(KEEPCAPS) mislykkedes"
-#: timezone/zic.c:1303 timezone/zic.c:1328
-msgid "starting year too low to be represented"
-msgstr "startår for lavt til at blive repræsenteret"
+#: nscd/selinux.c:192
+msgid "Failed to initialize drop of capabilities"
+msgstr "Kunne ikke initiere fjernelse af kapabiliteter"
-#: timezone/zic.c:1305 timezone/zic.c:1330
-msgid "starting year too high to be represented"
-msgstr "startår for højt til at blive repræsenteret"
+#: nscd/selinux.c:193
+#, c-format
+msgid "cap_init failed"
+msgstr "cap_init mislykkedes"
-#: timezone/zic.c:1324
-msgid "invalid ending year"
-msgstr "ugyldigt slutår"
+#: nscd/selinux.c:214 nscd/selinux.c:231
+msgid "Failed to drop capabilities"
+msgstr "Kunne ikke fjerne kapabiliteter"
-#: timezone/zic.c:1333
-msgid "starting year greater than ending year"
-msgstr "startår er højere end slutår"
+#: nscd/selinux.c:215 nscd/selinux.c:232
+#, c-format
+msgid "cap_set_proc failed"
+msgstr "cap_set_proc mislykkedes"
-#: timezone/zic.c:1340
-msgid "typed single year"
-msgstr "satte type på bare et år"
+#: nscd/selinux.c:240
+msgid "Failed to unset keep-capabilities"
+msgstr "Kunne ikke fjerne \"keep\"-kapabiliteter"
-#: timezone/zic.c:1377
-msgid "invalid weekday name"
-msgstr "ugyldigt ugedagsnavn"
+#: nscd/selinux.c:256
+msgid "Failed to determine if kernel supports SELinux"
+msgstr "Kunne ikke finde ud af om kernen understøtter SELinux"
-#: timezone/zic.c:1492
+#: nscd/selinux.c:271
#, c-format
-msgid "%s: Can't remove %s: %s\n"
-msgstr "%s: Kan ikke fjerne %s: %s\n"
+msgid "Failed to start AVC thread"
+msgstr "Kunne ikke starte AVC-tråd"
-#: timezone/zic.c:1502
+#: nscd/selinux.c:293
#, c-format
-msgid "%s: Can't create %s: %s\n"
-msgstr "%s: Kan ikke oprette %s: %s\n"
+msgid "Failed to create AVC lock"
+msgstr "Kunne ikke oprette AVC-lås"
-#: timezone/zic.c:1568
+#: nscd/selinux.c:333
#, c-format
-msgid "%s: Error writing %s\n"
-msgstr "%s: Fejl ved skrivning til %s\n"
+msgid "Failed to start AVC"
+msgstr "Kunne ikke starte AVC"
-#: timezone/zic.c:1758
-msgid "can't determine time zone abbreviation to use just after until time"
-msgstr "kan ikke afgøre tidszoneforkortelse for brug lige efter 'until'-tid"
+#: nscd/selinux.c:335
+msgid "Access Vector Cache (AVC) started"
+msgstr "Access Vector Cache (AVC) startet"
-#: timezone/zic.c:1801
-msgid "too many transitions?!"
-msgstr "for mange overgange?!"
+#: nscd/selinux.c:356
+msgid "Error getting context of socket peer"
+msgstr "Kunne ikke hente kontekst for sokkelpartner (socket peer)"
-#: timezone/zic.c:1820
-msgid "internal error - addtype called with bad isdst"
-msgstr "intern fejl - addtype kaldt med fejlagtig isdst"
+#: nscd/selinux.c:361
+msgid "Error getting context of nscd"
+msgstr "Kunne ikke hente kontekst for nscd"
-#: timezone/zic.c:1824
-msgid "internal error - addtype called with bad ttisstd"
-msgstr "intern fejl - addtype kaldt med fejlagtig ttisstd"
+#: nscd/selinux.c:367
+msgid "Error getting sid from context"
+msgstr "Kunne ikke hente \"sid\" fra kontekst"
-#: timezone/zic.c:1828
-msgid "internal error - addtype called with bad ttisgmt"
-msgstr "intern fejl - addtype kaldt med fejlagtig ttisgmt"
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr "indkompileret understøttelse for databasepolicy mangler"
-#: timezone/zic.c:1847
-msgid "too many local time types"
-msgstr "for mange lokale tidstyper"
-
-#: timezone/zic.c:1875
-msgid "too many leap seconds"
-msgstr "for mange skudsekunder"
-
-#: timezone/zic.c:1881
-msgid "repeated leap second moment"
-msgstr "repeteret skudsekundstidspunkt"
-
-#: timezone/zic.c:1933
-msgid "Wild result from command execution"
-msgstr "Vildt resultat fra eksekvering af kommando"
+#: nscd/selinux.c:407
+#, c-format
+msgid ""
+"\n"
+"SELinux AVC Statistics:\n"
+"\n"
+"%15u entry lookups\n"
+"%15u entry hits\n"
+"%15u entry misses\n"
+"%15u entry discards\n"
+"%15u CAV lookups\n"
+"%15u CAV hits\n"
+"%15u CAV probes\n"
+"%15u CAV misses\n"
+msgstr ""
+"\n"
+"SELinux AVC Statistik:\n"
+"\n"
+"%15u postopslag\n"
+"%15u posttræffere\n"
+"%15u postmissere\n"
+"%15u afviste poster\n"
+"%15u CAV-opslag\n"
+"%15u CAV-træffere\n"
+"%15u CAV-sonderinger\n"
+"%15u CAV-missere\n"
-#: timezone/zic.c:1934
+#: nscd/servicescache.c:390
#, c-format
-msgid "%s: command was '%s', result was %d\n"
-msgstr "%s: kommandoen var '%s', resultatet blev %d\n"
+msgid "Haven't found \"%s\" in services cache!"
+msgstr "Har ikke fundet '%s' i tjeneste-nærbuffer!"
-#: timezone/zic.c:2029
-msgid "Odd number of quotation marks"
-msgstr "Ulige antal anførselstegn"
+#: nscd/servicescache.c:392
+#, c-format
+msgid "Reloading \"%s\" in services cache!"
+msgstr "Genindlæser '%s' i tjeneste-nærbuffer!"
-#: timezone/zic.c:2115
-msgid "use of 2/29 in non leap-year"
-msgstr "bruger 29/2 i ikke-skudår"
+#: nss/getent.c:52
+msgid "database [key ...]"
+msgstr "database [nøgle ...]"
-#: timezone/zic.c:2149
-msgid "no day in month matches rule"
-msgstr "ingen dag i måneden passer til reglen"
+#: nss/getent.c:57
+msgid "Service configuration to be used"
+msgstr "Tjenestekonfiguration som skal bruges"
-#: timezone/zic.c:2172
-msgid "too many, or too long, time zone abbreviations"
-msgstr "for mange eller for lange tidszoneforkortelser"
+#: nss/getent.c:62
+msgid "Get entries from administrative database."
+msgstr "Hent poster fra administrativ database."
-#: timezone/zic.c:2213
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
-msgid "%s: Can't create directory %s: %s\n"
-msgstr "%s: Kan ikke oprette filkatalog %s: %s\n"
+msgid "Enumeration not supported on %s\n"
+msgstr "Enumeration er ikke understøttet på %s\n"
-#: timezone/zic.c:2235
+#: nss/getent.c:794
#, c-format
-msgid "%s: %d did not sign extend correctly\n"
-msgstr "%s: fortegnsudvidelsen af %d blev forkert\n"
+msgid "Unknown database name"
+msgstr "Ukendt databasenavn"
-#: posix/../sysdeps/generic/wordexp.c:1801
-msgid "parameter null or not set"
-msgstr "parameter er nul eller ikke sat"
+#: nss/getent.c:820
+msgid "Supported databases:\n"
+msgstr "Understøttede databaser:\n"
-#: posix/../sysdeps/posix/gai_strerror.c:31
-msgid "Address family for hostname not supported"
-msgstr "Adressefamilien for værtsnavn er ikke understøttet"
-
-#: posix/../sysdeps/posix/gai_strerror.c:32
-msgid "Temporary failure in name resolution"
-msgstr "Midlertidig fejl i navneopslag"
-
-#: posix/../sysdeps/posix/gai_strerror.c:33
-msgid "Bad value for ai_flags"
-msgstr "Ugyldig værdi for ai_flags"
-
-#: posix/../sysdeps/posix/gai_strerror.c:34
-msgid "Non-recoverable failure in name resolution"
-msgstr "Uoverkommelig fejl i navneopslag"
+#: nss/getent.c:886
+#, c-format
+msgid "Unknown database: %s\n"
+msgstr "Ukendt database: %s\n"
-#: posix/../sysdeps/posix/gai_strerror.c:35
-msgid "ai_family not supported"
-msgstr "ai_family er ikke understøttet"
+#: nss/makedb.c:60
+msgid "Convert key to lower case"
+msgstr "Konvertér nøgle til små bogstaver"
-#: posix/../sysdeps/posix/gai_strerror.c:36
-msgid "Memory allocation failure"
-msgstr "Lagerallokeringsfejl"
+#: nss/makedb.c:63
+msgid "Do not print messages while building database"
+msgstr "Skriv ikke meddelelser under opbygning af databasen"
-#: posix/../sysdeps/posix/gai_strerror.c:37
-msgid "No address associated with hostname"
-msgstr "Ingen adresse associeret med værtsnavn"
+#: nss/makedb.c:65
+msgid "Print content of database file, one entry a line"
+msgstr "Skriv indholdet af en databasefil ud, en post per linje"
-#: posix/../sysdeps/posix/gai_strerror.c:38
-msgid "Name or service not known"
-msgstr "Navn eller tjeneste ukendt"
+#: nss/makedb.c:70
+msgid "Create simple DB database from textual input."
+msgstr "Lav en enkel DB-database fra tekst-inddata."
-#: posix/../sysdeps/posix/gai_strerror.c:39
-msgid "Servname not supported for ai_socktype"
-msgstr "Servname ikke understøttet for ai_socktype"
+#: nss/makedb.c:73
+msgid ""
+"INPUT-FILE OUTPUT-FILE\n"
+"-o OUTPUT-FILE INPUT-FILE\n"
+"-u INPUT-FILE"
+msgstr ""
+"INDFIL UDFIL\n"
+"-o UDFIL INDFIL\n"
+"-u INDFIL"
-#: posix/../sysdeps/posix/gai_strerror.c:40
-msgid "ai_socktype not supported"
-msgstr "ai_socktype er ikke understøttet"
+#: nss/makedb.c:142
+#, c-format
+msgid "No usable database library found."
+msgstr "Intet brugbart database-bibliotek fundet."
-#: posix/../sysdeps/posix/gai_strerror.c:41
-msgid "System error"
-msgstr "Systemfejl"
+#: nss/makedb.c:149
+#, c-format
+msgid "cannot open database file `%s': %s"
+msgstr "kan ikke åbne databasefil '%s': %s"
-#: posix/../sysdeps/posix/gai_strerror.c:42
-msgid "Processing request in progress"
-msgstr "Operationen er under udførelse"
+#: nss/makedb.c:151
+msgid "incorrectly formatted file"
+msgstr "forkert formatteret fil"
-#: posix/../sysdeps/posix/gai_strerror.c:43
-msgid "Request canceled"
-msgstr "Forespørgsel annulleret"
+#: nss/makedb.c:331
+msgid "duplicate key"
+msgstr "duplikér nøgle"
-#: posix/../sysdeps/posix/gai_strerror.c:44
-msgid "Request not canceled"
-msgstr "Forespørgsel ikke annulleret"
+#: nss/makedb.c:337
+#, c-format
+msgid "while writing database file"
+msgstr "under skrivning til databasefil"
-#: posix/../sysdeps/posix/gai_strerror.c:45
-msgid "All requests done"
-msgstr "Alle forespørgsler behandlet"
+#: nss/makedb.c:348
+#, c-format
+msgid "problems while reading `%s'"
+msgstr "problemer ved læsning af '%s'"
-#: posix/../sysdeps/posix/gai_strerror.c:46
-msgid "Interrupted by a signal"
-msgstr "Afbrudt af et signal"
+#: nss/makedb.c:368 nss/makedb.c:385
+#, c-format
+msgid "while reading database"
+msgstr "ved læsning af database"
-#: posix/getconf.c:889
+#: posix/getconf.c:945
#, c-format
msgid "Usage: %s [-v specification] variable_name [pathname]\n"
msgstr "Brug: %s [-v specifikation] variabelnavn [søgesti]\n"
-#: posix/getconf.c:947
+#: posix/getconf.c:948
+#, c-format
+msgid " %s -a [pathname]\n"
+msgstr " %s -a [søgesti]\n"
+
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
+"Brug: getconf [-v SPEC] VAR\n"
+" eller: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Hent konfigureringsværdien for variablen VAR, eller for variablen PATH_VAR\n"
+"for søgesti PATH. Hvis SPEC er givet, så brug værdier for kompileringsspecifikationen\n"
+"SPEC.\n"
+"\n"
+
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
msgstr "ukendt specifikation '%s'"
-#: posix/getconf.c:974 posix/getconf.c:990
+#: posix/getconf.c:1109
+#, c-format
+msgid "Couldn't execute %s"
+msgstr "Kunne ikke udføre %s"
+
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
msgstr "udefineret"
-#: posix/getconf.c:1012
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
msgstr "Ukendt variabel '%s'"
-#: posix/getopt.c:692 posix/getopt.c:704
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: flaget '%s' er flertydigt\n"
-#: posix/getopt.c:737 posix/getopt.c:741
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: flaget '--%s' tager ikke argumenter\n"
+msgstr "%s: flaget '--%s' tillader ikke et argument\n"
-#: posix/getopt.c:750 posix/getopt.c:755
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: flaget '%c%s' tager ikke argumenter\n"
+msgstr "%s: flaget '%c%s' tillader ikke et argument\n"
-#: posix/getopt.c:791 posix/getopt.c:804 posix/getopt.c:1093
-#: posix/getopt.c:1106
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: flaget '%s' skal have et argument\n"
-#: posix/getopt.c:842 posix/getopt.c:845
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: ukendt flag '--%s'\n"
-#: posix/getopt.c:853 posix/getopt.c:856
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: ukendt flag '%c%s'\n"
-#: posix/getopt.c:903 posix/getopt.c:906
-#, c-format
-msgid "%s: illegal option -- '%c'\n"
-msgstr "%s: ulovligt flag -- %c\n"
-
-#: posix/getopt.c:912 posix/getopt.c:915
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: ugyldigt flag -- %c\n"
-#: posix/getopt.c:962 posix/getopt.c:973 posix/getopt.c:1159
-#: posix/getopt.c:1172
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: flaget skal have et argument -- %c\n"
-#: posix/getopt.c:1025 posix/getopt.c:1036
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: flaget '-W %s' er flertydigt\n"
-#: posix/getopt.c:1060 posix/getopt.c:1072
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: flaget '-W %s' tager ikke argumenter\n"
+msgstr "%s: flaget '-W %s' tillader ikke et argument\n"
#: posix/regcomp.c:136
msgid "No match"
@@ -3566,7 +4486,7 @@ msgstr "Ubalanceret \\{"
#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
-msgstr "Ugyldig brug af \\{\\}"
+msgstr "Ugyldig indhold af \\{\\}"
#: posix/regcomp.c:166
msgid "Invalid range end"
@@ -3592,103 +4512,33 @@ msgstr "Regulært udtryk for stort"
msgid "Unmatched ) or \\)"
msgstr "Ubalanceret ) eller \\)"
-#: posix/regcomp.c:615
+#: posix/regcomp.c:681
msgid "No previous regular expression"
msgstr "Intet foregående regulært udtryk"
-#: argp/argp-help.c:213
-#, c-format
-msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
-msgstr "%.*s: ARGP_HELP_FMT-parameteren kræver en værdi"
-
-#: argp/argp-help.c:222
-#, c-format
-msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
-msgstr "%.*s: Ukendt ARGP_HELP_FMT-parameter"
-
-#: argp/argp-help.c:234
-#, c-format
-msgid "Garbage in ARGP_HELP_FMT: %s"
-msgstr "Snavs i ARGP_HELP_FMT: %s"
-
-#: argp/argp-help.c:1189
-msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
-msgstr "Obligatoriske eller frivillige argumenter til lange flag er også obligatoriske eller frivillige for tilsvarende korte flag."
-
-#: argp/argp-help.c:1572
-msgid "Usage:"
-msgstr "Brug:"
-
-#: argp/argp-help.c:1576
-msgid " or: "
-msgstr " eller: "
-
-#: argp/argp-help.c:1588
-msgid " [OPTION...]"
-msgstr " [FLAG...]"
-
-#: argp/argp-help.c:1615
-#, c-format
-msgid "Try `%s --help' or `%s --usage' for more information.\n"
-msgstr "Prøv '%s --help' eller '%s --usage' for mere information.\n"
-
-#: argp/argp-help.c:1643
-#, c-format
-msgid "Report bugs to %s.\n"
-msgstr "Rapportér fejl til %s.\n"
-
-#: argp/argp-parse.c:100
-msgid "Give this help list"
-msgstr "Giv denne hjælpeliste"
-
-#: argp/argp-parse.c:101
-msgid "Give a short usage message"
-msgstr "Giv en kort brugsmeddelelse"
-
-#: argp/argp-parse.c:102
-msgid "Set the program name"
-msgstr "Angiv programnavnet"
-
-#: argp/argp-parse.c:104
-msgid "Hang for SECS seconds (default 3600)"
-msgstr "Hæng i SEK sekunder (forvalgt 3600)"
-
-#: argp/argp-parse.c:161
-msgid "Print program version"
-msgstr "Skriv programversion"
-
-#: argp/argp-parse.c:177
-msgid "(PROGRAM ERROR) No version known!?"
-msgstr "(PROGRAMFEJL) Ingen version kendt!?"
-
-#: argp/argp-parse.c:653
-#, c-format
-msgid "%s: Too many arguments\n"
-msgstr "%s: For mange argumenter\n"
-
-#: argp/argp-parse.c:794
-msgid "(PROGRAM ERROR) Option should have been recognized!?"
-msgstr "(PROGRAMFEJL) Flag skulle have været genkendt!?"
+#: posix/wordexp.c:1832
+msgid "parameter null or not set"
+msgstr "parameter er nul eller ikke sat"
-#: resolv/herror.c:67
+#: resolv/herror.c:68
msgid "Resolver Error 0 (no error)"
msgstr "Navnetjeneste-fejl 0 (ingen fejl)"
-#: resolv/herror.c:68
+#: resolv/herror.c:69
msgid "Unknown host"
msgstr "Ukendt vært"
-#: resolv/herror.c:69
+#: resolv/herror.c:70
msgid "Host name lookup failure"
msgstr "Opslag af værtsnavn fejlede"
-#: resolv/herror.c:70
+#: resolv/herror.c:71
msgid "Unknown server error"
-msgstr "Ukendt tjener-fejl"
+msgstr "Ukendt server-fejl"
-#: resolv/herror.c:71
+#: resolv/herror.c:72
msgid "No address associated with name"
-msgstr "Ingen adresse associeret med navnet"
+msgstr "Ingen adresse knyttet til navnet"
#: resolv/herror.c:107
msgid "Resolver internal error"
@@ -3698,581 +4548,563 @@ msgstr "Intern fejl i navnetjenesten"
msgid "Unknown resolver error"
msgstr "Ukendt navnetjeneste-fejl"
-#: resolv/res_hconf.c:147
-#, c-format
-msgid "%s: line %d: expected service, found `%s'\n"
-msgstr "%s: linje %d: forventede tjeneste, fandt '%s'\n"
-
-#: resolv/res_hconf.c:165
-#, c-format
-msgid "%s: line %d: cannot specify more than %d services"
-msgstr "%s: linje %d: kan ikke specificere mere end %d tjenester"
-
-#: resolv/res_hconf.c:191
-#, c-format
-msgid "%s: line %d: list delimiter not followed by keyword"
-msgstr "%s: linje %d: listeadskiller ikke fulgt af nøgleord"
-
-#: resolv/res_hconf.c:231
+#: resolv/res_hconf.c:124
#, c-format
msgid "%s: line %d: cannot specify more than %d trim domains"
msgstr "%s: linje %d: kan ikke specificere mere end %d trim-domæner"
-#: resolv/res_hconf.c:256
+#: resolv/res_hconf.c:145
#, c-format
msgid "%s: line %d: list delimiter not followed by domain"
msgstr "%s: linje %d: listeadskiller ikke fulgt af domæne"
-#: resolv/res_hconf.c:319
+#: resolv/res_hconf.c:204
#, c-format
msgid "%s: line %d: expected `on' or `off', found `%s'\n"
msgstr "%s: linje %d: forventede 'on' eller 'off', fandt '%s'\n"
-#: resolv/res_hconf.c:366
+#: resolv/res_hconf.c:247
#, c-format
msgid "%s: line %d: bad command `%s'\n"
-msgstr "%s: linje %d: forkert kommando `%s'\n"
+msgstr "%s: linje %d: dårlig kommando `%s'\n"
-#: resolv/res_hconf.c:395
+#: resolv/res_hconf.c:282
#, c-format
msgid "%s: line %d: ignoring trailing garbage `%s'\n"
-msgstr "%s: linje %d: ignorerer efterfølgende fnadder '%s'\n"
+msgstr "%s: linje %d: ignorerer efterfølgende snavs '%s'\n"
-#: nss/getent.c:51
-msgid "database [key ...]"
-msgstr "database [nøgle ...]"
-
-#: nss/getent.c:56
-msgid "Service configuration to be used"
-msgstr "Tjenestekonfiguration som skal bruges"
-
-#: nss/getent.c:136 nss/getent.c:308
+#: stdio-common/psignal.c:51
#, c-format
-msgid "Enumeration not supported on %s\n"
-msgstr "Enumeration er ikke understøttet på %s\n"
-
-#: nss/getent.c:732
-msgid "getent - get entries from administrative database."
-msgstr "getent - hent indtastninger fra administrativ database."
-
-#: nss/getent.c:733
-msgid "Supported databases:"
-msgstr "Understøttede databaser:"
-
-#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
-msgid "wrong number of arguments"
-msgstr "galt antal argumenter"
-
-#: nss/getent.c:800
-#, c-format
-msgid "Unknown database: %s\n"
-msgstr "Ukendt database: %s\n"
-
-#: debug/pcprofiledump.c:52
-msgid "Don't buffer output"
-msgstr "Buffr ikke resultatet"
-
-#: debug/pcprofiledump.c:57
-msgid "Dump information generated by PC profiling."
-msgstr "Tilstandsinformation genereret af PC-profilering"
-
-#: debug/pcprofiledump.c:60
-msgid "[FILE]"
-msgstr "[FIL]"
-
-#: debug/pcprofiledump.c:100
-msgid "cannot open input file"
-msgstr "kan ikke åbne indfil"
-
-#: debug/pcprofiledump.c:106
-msgid "cannot read header"
-msgstr "kan ikke læse hoved"
-
-#: debug/pcprofiledump.c:170
-msgid "invalid pointer size"
-msgstr "ugyldig størrelse for pegere"
-
-#: inet/rcmd.c:163 inet/rcmd.c:166
-msgid "rcmd: Cannot allocate memory\n"
-msgstr "rcmd: Kan ikke tildele lager\n"
-
-#: inet/rcmd.c:185 inet/rcmd.c:188
-msgid "rcmd: socket: All ports in use\n"
-msgstr "rcmd: sokkel: Alle porte i brug\n"
+msgid "%s%sUnknown signal %d\n"
+msgstr "%s%sUkendt signal %d\n"
-#: inet/rcmd.c:222
-#, c-format
-msgid "connect to address %s: "
-msgstr "koble til adresse %s: "
+#: stdio-common/psignal.c:52
+msgid "Unknown signal"
+msgstr "Ukendt signal"
-#: inet/rcmd.c:240
-#, c-format
-msgid "Trying %s...\n"
-msgstr "Prøver %s...\n"
+#: string/_strerror.c:45 sysdeps/mach/_strerror.c:87
+msgid "Unknown error "
+msgstr "Ukendt fejl "
-#: inet/rcmd.c:289
-#, c-format
-msgid "rcmd: write (setting up stderr): %m\n"
-msgstr "rcmd: write: (opsætter standard error): %m\n"
+#: string/strerror.c:43
+msgid "Unknown error"
+msgstr "Ukendt fejl"
-#: inet/rcmd.c:310
+#: string/strsignal.c:65
#, c-format
-msgid "rcmd: poll (setting up stderr): %m\n"
-msgstr "rcmd: poll (opsætter stderr): %m\n"
-
-#: inet/rcmd.c:313
-msgid "poll: protocol failure in circuit setup\n"
-msgstr "poll: protokolfejl i opsætning af forbindelse\n"
-
-#: inet/rcmd.c:358
-msgid "socket: protocol failure in circuit setup\n"
-msgstr "sokkel: protokolfejl i opsætning af forbindelse\n"
+msgid "Real-time signal %d"
+msgstr "Realtid-signal %d"
-#: inet/rcmd.c:387
+#: string/strsignal.c:69
#, c-format
-msgid "rcmd: %s: short read"
-msgstr "rcmd: %s: kort indlæsning"
-
-#: inet/rcmd.c:549
-msgid "lstat failed"
-msgstr "lstat fejlede"
-
-#: inet/rcmd.c:551
-msgid "not regular file"
-msgstr "ikke en almindelig fil"
-
-#: inet/rcmd.c:556
-msgid "cannot open"
-msgstr "kan ikke åbne"
-
-#: inet/rcmd.c:558
-msgid "fstat failed"
-msgstr "fstat fejlede"
-
-#: inet/rcmd.c:560
-msgid "bad owner"
-msgstr "forkert ejer"
-
-#: inet/rcmd.c:562
-msgid "writeable by other than owner"
-msgstr "skrivbar af andre end ejer"
-
-#: inet/rcmd.c:564
-msgid "hard linked somewhere"
-msgstr "hårdlænket et eller andet sted"
-
-#: inet/ruserpass.c:170 inet/ruserpass.c:193
-msgid "out of memory"
-msgstr "tom for lager"
+msgid "Unknown signal %d"
+msgstr "Ukendt signal %d"
-#: inet/ruserpass.c:184
-msgid "Error: .netrc file is readable by others."
-msgstr "Fejl: .netrc kan læses af andre."
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "ikke mere hukommelse\n"
-#: inet/ruserpass.c:185
-msgid "Remove password or make file unreadable by others."
-msgstr "Fjern adgangskode, eller gør filen ulæselig for andre."
+#: sunrpc/auth_unix.c:350
+msgid "auth_unix.c: Fatal marshalling problem"
+msgstr "auth_unix.c - Fatalt kodningsproblem"
-#: inet/ruserpass.c:277
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "Unknown .netrc keyword %s"
-msgstr "Ukendt .netrc-nøgleord %s"
-
-#: sunrpc/auth_unix.c:115 sunrpc/auth_unix.c:118
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create: ikke mere lager\n"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s: %s; nedre version = %lu, øvre version = %lu"
-#: sunrpc/auth_unix.c:318
-msgid "auth_none.c - Fatal marshalling problem"
-msgstr "auth_none.c - Fatal kodningsfejl"
-
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:112
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; nedre version = %lu, øvre version = %lu"
-
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr "; hvorfor = "
+msgid "%s: %s; why = %s\n"
+msgstr "%s: %s; hvorfor = %s\n"
-#: sunrpc/clnt_perr.c:132
+#: sunrpc/clnt_perr.c:114
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(ukendt fejl ved autentificering - %d)"
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s: %s; hvorfor = (ukendt fejl ved autentificering - %d)\n"
-#: sunrpc/clnt_perr.c:177
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
msgstr "RPC: Succes"
-#: sunrpc/clnt_perr.c:180
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
-msgstr "RPC: Kan ikke kode argumentet"
+msgstr "RPC: Kan ikke kode argumenterne"
-#: sunrpc/clnt_perr.c:184
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
msgstr "RPC: Kan ikke afkode resultatet"
-#: sunrpc/clnt_perr.c:188
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
msgstr "RPC: Kan ikke sende"
-#: sunrpc/clnt_perr.c:192
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
-msgstr "RPC: Kan ikke tage imod"
+msgstr "RPC: Kan ikke modtage"
-#: sunrpc/clnt_perr.c:196
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
msgstr "RPC: Tidsgrænsen overskredet"
-#: sunrpc/clnt_perr.c:200
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
msgstr "RPC: Inkompatible versioner af RPC"
-#: sunrpc/clnt_perr.c:204
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
msgstr "RPC: Fejl ved autentificering"
-#: sunrpc/clnt_perr.c:208
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
msgstr "RPC: Programmet utilgængeligt"
-#: sunrpc/clnt_perr.c:212
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
msgstr "RPC: Program/version-uoverensstemmelse"
-#: sunrpc/clnt_perr.c:216
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
msgstr "RPC: Procedure ikke tilgængelig"
-#: sunrpc/clnt_perr.c:220
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
-msgstr "RPC: Tjener kan ikke afkode argumenterne"
+msgstr "RPC: Server kan ikke afkode argumenterne"
-#: sunrpc/clnt_perr.c:224
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
-msgstr "RPC: Systemfejl hos modtager"
+msgstr "RPC: Fjernsystemfejl"
-#: sunrpc/clnt_perr.c:228
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
msgstr "RPC: Ukendt værtsmaskine"
-#: sunrpc/clnt_perr.c:232
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
msgstr "RPC: Ukendt protokol"
-#: sunrpc/clnt_perr.c:236
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
msgstr "RPC: Fejl i portmapper"
-#: sunrpc/clnt_perr.c:240
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
msgstr "RPC: Programmet ikke registreret"
-#: sunrpc/clnt_perr.c:244
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
msgstr "RPC: Fejlet (uspecificeret fejl)"
-#: sunrpc/clnt_perr.c:285
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
msgstr "RPC: (ukendt fejlkode)"
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
msgstr "Autentificering OK"
-#: sunrpc/clnt_perr.c:360
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
-msgstr "Ugyldige klientreferencer"
+msgstr "Ugyldig klientlegitimation"
-#: sunrpc/clnt_perr.c:364
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
-msgstr "Tjener afviste referencerne"
+msgstr "Server afviste legitimation"
-#: sunrpc/clnt_perr.c:368
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
msgstr "Ugyldig klientverifikator"
-#: sunrpc/clnt_perr.c:372
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
-msgstr "Tjener afviste verifikator"
+msgstr "Server afviste verifikator"
-#: sunrpc/clnt_perr.c:376
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
msgstr "Klientens troværdighed er for svag"
-#: sunrpc/clnt_perr.c:380
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
-msgstr "Ugyldig tjenerverifikator"
+msgstr "Ugyldig serververifikator"
-#: sunrpc/clnt_perr.c:384
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
msgstr "Fejlet (uspecificeret fejl)"
#: sunrpc/clnt_raw.c:117
-msgid "clnt_raw.c - Fatal header serialization error."
-msgstr "clnt_raw.c - Fatal fejl ved serialisering af hoved."
-
-#: sunrpc/clnt_tcp.c:134 sunrpc/clnt_tcp.c:137
-msgid "clnttcp_create: out of memory\n"
-msgstr "cnlttcp_create: ikke mere lager\n"
-
-#: sunrpc/clnt_udp.c:141 sunrpc/clnt_udp.c:144
-msgid "clntudp_create: out of memory\n"
-msgstr "cnltudp_create: ikke mere lager\n"
+msgid "clnt_raw.c: fatal header serialization error"
+msgstr "clnt_raw.c - Fatal fejl ved serialisering af hoved"
-#: sunrpc/clnt_unix.c:131 sunrpc/clnt_unix.c:134
-msgid "clntunix_create: out of memory\n"
-msgstr "cnlsunix_create: ikke mere lager\n"
+#: sunrpc/pm_getmaps.c:83
+msgid "pmap_getmaps.c: rpc problem"
+msgstr "pmap_getmaps.c: rpc-problem"
-#: sunrpc/get_myaddr.c:78
-msgid "get_myaddress: ioctl (get interface configuration)"
-msgstr "get_myaddress: ioctl (hent grænsesnitskonfiguration)"
-
-#: sunrpc/pm_getmaps.c:74
-msgid "pmap_getmaps rpc problem"
-msgstr "pmap_getmaps rpc-problem"
-
-#: sunrpc/pmap_clnt.c:72
-msgid "__get_myaddress: ioctl (get interface configuration)"
-msgstr "__get_myaddress: ioctl (hent grænsesnitskonfiguration)"
-
-#: sunrpc/pmap_clnt.c:137
+#: sunrpc/pmap_clnt.c:129
msgid "Cannot register service"
msgstr "Kan ikke registrere tjeneste"
-#: sunrpc/pmap_rmt.c:190
-msgid "broadcast: ioctl (get interface configuration)"
-msgstr "broadcast: ioctl (hent grænsesnitkonfiguration)"
-
-#: sunrpc/pmap_rmt.c:199
-msgid "broadcast: ioctl (get interface flags)"
-msgstr "broadcast: ioctl (hent grænsesnitsflag)"
-
-#: sunrpc/pmap_rmt.c:269
+#: sunrpc/pmap_rmt.c:248
msgid "Cannot create socket for broadcast rpc"
msgstr "Kan ikke oprette sokkel for rundsendings-rpc"
-#: sunrpc/pmap_rmt.c:276
+#: sunrpc/pmap_rmt.c:255
msgid "Cannot set socket option SO_BROADCAST"
msgstr "Kan ikke sætte sokkel-flag SO_BROADCAST"
-#: sunrpc/pmap_rmt.c:328
+#: sunrpc/pmap_rmt.c:307
msgid "Cannot send broadcast packet"
msgstr "Kan ikke sende rundsendingspakke"
-#: sunrpc/pmap_rmt.c:353
+#: sunrpc/pmap_rmt.c:332
msgid "Broadcast poll problem"
msgstr "Problem med 'polling' ved rundsending"
-#: sunrpc/pmap_rmt.c:366
+#: sunrpc/pmap_rmt.c:345
msgid "Cannot receive reply to broadcast"
-msgstr "Kan ikke tage imod svar på rundsending"
+msgstr "Kan ikke modtage svar på rundsending"
-#: sunrpc/rpc_main.c:288
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr "%s: udskrift ville overskrive %s\n"
-#: sunrpc/rpc_main.c:295
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr "%s: kan ikke åbne %s: %m\n"
-#: sunrpc/rpc_main.c:307
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
msgstr "%s: under skrivning af uddata %s: %m"
-#: sunrpc/rpc_main.c:342
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
msgstr "kan ikke finde C-præprocessor: %s \n"
-#: sunrpc/rpc_main.c:350
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
msgstr "kan ikke finde nogen C-præprocessor (cpp)\n"
-#: sunrpc/rpc_main.c:419
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
msgstr "%s: C-præprocessoren fejlede med signal %d\n"
-#: sunrpc/rpc_main.c:422
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
msgstr "%s: C-præprocessoren fejlede med slutkode %d\n"
-#: sunrpc/rpc_main.c:462
+#: sunrpc/rpc_main.c:464
#, c-format
-msgid "illegal nettype :`%s'\n"
-msgstr "ulovlig nettype: '%s'\n"
+msgid "illegal nettype: `%s'\n"
+msgstr "ugyldig nettype: '%s'\n"
-#: sunrpc/rpc_main.c:1104
+#: sunrpc/rpc_main.c:1130
+#, c-format
msgid "rpcgen: too many defines\n"
msgstr "rpcgen: for mange definitioner\n"
-#: sunrpc/rpc_main.c:1116
+#: sunrpc/rpc_main.c:1142
+#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr "rpcgen: arglist kode-fejl\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1149
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
msgstr "filen '%s' eksisterer allerede og kan blive overskrevet\n"
-#: sunrpc/rpc_main.c:1194
+#: sunrpc/rpc_main.c:1220
+#, c-format
msgid "Cannot specify more than one input file!\n"
msgstr "Kan ikke specificere mere end én indfil!\n"
-#: sunrpc/rpc_main.c:1364
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
msgstr "Denne implementation understøtter ikke nystil eller MT-sikker kode!\n"
-#: sunrpc/rpc_main.c:1373
+#: sunrpc/rpc_main.c:1403
+#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
msgstr "Kan ikke bruge netid-flag med inetd-flag!\n"
-#: sunrpc/rpc_main.c:1385
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
msgstr "Kan ikke bruge netid-flag uden TIRPC!\n"
-#: sunrpc/rpc_main.c:1392
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
msgstr "Kan ikke bruge tabelflag med ny stil!\n"
-#: sunrpc/rpc_main.c:1411
+#: sunrpc/rpc_main.c:1441
+#, c-format
msgid "\"infile\" is required for template generation flags.\n"
msgstr "'indfil' er nødvendig for flag til at generere skabelon.\n"
-#: sunrpc/rpc_main.c:1416
+#: sunrpc/rpc_main.c:1446
+#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr "Kan ikke have mere end et fil-genereringsflag!\n"
-#: sunrpc/rpc_main.c:1425
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
msgstr "brug: %s indfil\n"
-#: sunrpc/rpc_main.c:1426
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
msgstr "\t%s [-abkCLNTM] [-Dnavn[=værdi]] [-i størrelse] [-I [-K sekunder]] [-Y søgesti] indfil\n"
-#: sunrpc/rpc_main.c:1428
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
-msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o udfil] [indfil]\n"
+msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o uddatafil] [indfil]\n"
-#: sunrpc/rpc_main.c:1430
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
-msgstr "\t%s [-s nettype]* [-o udfil] [indfil]\n"
+msgstr "\t%s [-s nettype]* [-o uddatafil] [indfil]\n"
-#: sunrpc/rpc_main.c:1431
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
-msgstr "\t%s [-n netid]* [-o udfil] [indfil]\n"
+msgstr "\t%s [-n netid]* [-o uddatafil] [indfil]\n"
+
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr "flag:\n"
-#: sunrpc/rpc_scan.c:116
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr "-a\t\tgenerér alle filer, inklusive eksempler\n"
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr "-b\t\tbagudkompatibel tilstand (genererer kode for SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr "'-c\t\tgenerér XDR-funktioner\n"
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr "-C\t\tISO C-tilstand\n"
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr "-Dnavn[=værdi]\tdefinér et symbol (samme som #define)\n"
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr "-h\t\tgenerér hovedfil\n"
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr "-i størrelse\t\tstørrelse hvor inline-kode begynder at blive genereret\n"
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr "-I\t\tgenerér kode for inetd-understøttelse i serveren (for SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr "-K sekunder\tserver afslutter efter K sekunders inaktivitet\n"
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr "-l\t\tgenerér stubbe for klienten\n"
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr "-L\t\tserverfejl logges til syslog\n"
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr "-m\t\tgenerér stubbe for serveren\n"
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr "-M\t\tgenerér trådsikker kode\n"
+
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr "-n netid\tgenerér serverkode som understøtter navngivet netid\n"
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr "-N\t\tunderstøtter flere argumenter og kald-via-værdi\n"
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr "-o uddatafil\tnavn på uddatafilen\n"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr "-s nettype\tgenerér serverkode som understøtter navngiven nettype\n"
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr "-Sc\t\tgenerér eksempelkode for klienten som anvender fjernprocedurer\n"
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr "-Ss\t\tgenerér eksempelkode for server som definerer fjernprocedurer\n"
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr "-Sm\t\tgenerér makefile-skabelon\n"
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr "-t\t\tgenerér en RPC-hoptabel\n"
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr "-T\t\tgenerér kode for at understøtte RPC-hoptabeller\n"
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr "-Y søgesti\t\tkatalog til at finde C præprocessoren (cpp)\n"
+
+#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
msgstr "konstant eller identifikator ventet"
-#: sunrpc/rpc_scan.c:312
+#: sunrpc/rpc_scan.c:310
msgid "illegal character in file: "
-msgstr "ulovligt tegn i fil: "
+msgstr "ugyldigt tegn i fil: "
-#: sunrpc/rpc_scan.c:351 sunrpc/rpc_scan.c:377
+#: sunrpc/rpc_scan.c:349 sunrpc/rpc_scan.c:375
msgid "unterminated string constant"
msgstr "uafsluttet strengkonstant"
-#: sunrpc/rpc_scan.c:383
+#: sunrpc/rpc_scan.c:381
msgid "empty char string"
msgstr "tom tegnstreng"
-#: sunrpc/rpc_scan.c:525 sunrpc/rpc_scan.c:535
+#: sunrpc/rpc_scan.c:523 sunrpc/rpc_scan.c:533
msgid "preprocessor error"
msgstr "præprocessorfejl"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
-msgstr "program %lu er ikke tilgængelig\n"
+msgstr "program %lu er ikke tilgængeligt\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
-msgstr "program %lu version %lu er ikke tilgængelig\n"
+msgstr "program %lu version %lu er ikke tilgængeligt\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr "program %lu version %lu klar og venter\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
msgstr "rpcinfo: kan ikke kontakte portmapper"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
msgstr "Ingen fjernprogrammer registrerede.\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
msgstr " program vers proto port\n"
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
msgstr "(ukendt)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
msgstr "rpcinfo: rundsending fejlede: %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
msgstr "Beklager. Du er ikke 'root'\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
msgstr "rpcinfo: Kunne ikke fjerne registrering af prog %s version %s\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
msgstr "Brug: rpcinfo [ -n portnr ] -u vært prognr [ versnr ]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr " rpcinfo [ -n portnr ] -t vært prognr [ versnr ]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
msgstr " rpcinfo -p [ vært ]\n"
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
msgstr " rpcinfo -b prognr versnr\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
msgstr " rpcinfo -d prognr versnr\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr "rpcinfo: %s er en ukendt tjeneste\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
msgstr "rpcinfo: %s er en ukendt vært\n"
-#: sunrpc/svc_run.c:76
+#: sunrpc/svc_run.c:70
+msgid "svc_run: - out of memory"
+msgstr "svctcp_run: ikke mere hukommelse"
+
+#: sunrpc/svc_run.c:90
msgid "svc_run: - poll failed"
msgstr "svc_run: - poll fejlede"
@@ -4281,25 +5113,25 @@ msgstr "svc_run: - poll fejlede"
msgid "can't reassign procedure number %ld\n"
msgstr "kan ikke omfordele procedurenummer %ld\n"
-#: sunrpc/svc_simple.c:96
+#: sunrpc/svc_simple.c:97
msgid "couldn't create an rpc server\n"
-msgstr "kunne ikke oprette en rpc-tjener\n"
+msgstr "kunne ikke oprette en rpc-server\n"
-#: sunrpc/svc_simple.c:104
+#: sunrpc/svc_simple.c:105
#, c-format
msgid "couldn't register prog %ld vers %ld\n"
msgstr "kunne ikke registrere prog %ld vers %ld\n"
-#: sunrpc/svc_simple.c:111
+#: sunrpc/svc_simple.c:113
msgid "registerrpc: out of memory\n"
-msgstr "registerrpc: ikke mere lager\n"
+msgstr "registerrpc: ikke mere hukommelse\n"
-#: sunrpc/svc_simple.c:175
+#: sunrpc/svc_simple.c:173
#, c-format
msgid "trouble replying to prog %d\n"
msgstr "problem med at svare prog %d\n"
-#: sunrpc/svc_simple.c:183
+#: sunrpc/svc_simple.c:182
#, c-format
msgid "never registered prog %d\n"
msgstr "aldrig registreret prog %d\n"
@@ -4312,14 +5144,6 @@ msgstr "svc_tcp.c - problem med oprettelse af tcp-sokkel"
msgid "svc_tcp.c - cannot getsockname or listen"
msgstr "svc_tcp.c - kan ikke kalde getsockname() eller listen()"
-#: sunrpc/svc_tcp.c:181 sunrpc/svc_tcp.c:184
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create: ikke mere lager\n"
-
-#: sunrpc/svc_tcp.c:225 sunrpc/svc_tcp.c:228
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp: makefd_xprt: ikke mere lager\n"
-
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
msgstr "svcudp_create: problem ved oprettelse af sokkel"
@@ -4328,39 +5152,35 @@ msgstr "svcudp_create: problem ved oprettelse af sokkel"
msgid "svcudp_create - cannot getsockname"
msgstr "svcudp_create - kan ikke kalde getsockname()"
-#: sunrpc/svc_udp.c:154 sunrpc/svc_udp.c:157
-msgid "svcudp_create: out of memory\n"
-msgstr "svcudp_create: ikke mere lager\n"
-
-#: sunrpc/svc_udp.c:182 sunrpc/svc_udp.c:185
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
msgstr "svcudp_create: xp_pad er for lille til IP_PKTINFO\n"
-#: sunrpc/svc_udp.c:471
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
msgstr "enablecache: cache/hurtiglager allerede sluttet til"
-#: sunrpc/svc_udp.c:477
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
msgstr "enablecache: kunne ikke tildele cache/hurtiglager"
-#: sunrpc/svc_udp.c:485
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
msgstr "enablecache: kunne ikke tildele cache/hurtiglager-data"
-#: sunrpc/svc_udp.c:492
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
msgstr "enablecache: kunne ikke tildele cache/hurtiglager-fifo"
-#: sunrpc/svc_udp.c:528
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
msgstr "cache_set: offer ikke fundet"
-#: sunrpc/svc_udp.c:539
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
msgstr "cache_set: offer-allokering fejlede"
-#: sunrpc/svc_udp.c:545
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
msgstr "cache_set: kunne ikke allokere ny rpc-buffer"
@@ -4372,1945 +5192,1483 @@ msgstr "svc_unix.c - problem med oprettelse af AF_UNIX-sokkel"
msgid "svc_unix.c - cannot getsockname or listen"
msgstr "svc_unix.c - kan ikke kalde getsockname() eller listen()"
-#: sunrpc/svc_unix.c:178 sunrpc/svc_unix.c:181
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create: ikke mere lager\n"
+#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
+msgid "Hangup"
+msgstr "Læg på (SIGHUP)"
-#: sunrpc/svc_unix.c:222 sunrpc/svc_unix.c:225
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix: makefd_xprt: ikke mere lager\n"
+#: sysdeps/generic/siglist.h:30 sysdeps/unix/siglist.c:28
+msgid "Interrupt"
+msgstr "Afbrudt"
-#: sunrpc/xdr.c:570 sunrpc/xdr.c:573
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes: ikke mere lager\n"
+#: sysdeps/generic/siglist.h:31 sysdeps/unix/siglist.c:29
+msgid "Quit"
+msgstr "Afslut"
-#: sunrpc/xdr.c:725 sunrpc/xdr.c:728
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string: ikke mere lager\n"
+#: sysdeps/generic/siglist.h:32 sysdeps/unix/siglist.c:30
+msgid "Illegal instruction"
+msgstr "Ulovlig instruktion (SIGILL)"
-#: sunrpc/xdr_array.c:111 sunrpc/xdr_array.c:114
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array: ikke mere lager\n"
+#: sysdeps/generic/siglist.h:33 sysdeps/unix/siglist.c:31
+msgid "Trace/breakpoint trap"
+msgstr "Sporings-/stoppunkts-fælde"
-#: sunrpc/xdr_rec.c:158 sunrpc/xdr_rec.c:161
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create: ikke mere lager\n"
+#: sysdeps/generic/siglist.h:34
+msgid "Aborted"
+msgstr "Afbrudt (SIGABRT)"
-#: sunrpc/xdr_ref.c:88 sunrpc/xdr_ref.c:91
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_reference: ikke mere lager\n"
+#: sysdeps/generic/siglist.h:35 sysdeps/unix/siglist.c:34
+msgid "Floating point exception"
+msgstr "Undtagelsestilfælde ved flydende taloperation"
-#: nis/nis_callback.c:189
-msgid "unable to free arguments"
-msgstr "kan ikke frigøre argumenter"
+#: sysdeps/generic/siglist.h:36 sysdeps/unix/siglist.c:35
+msgid "Killed"
+msgstr "Dræbt"
-#: nis/nis_error.c:30
-msgid "Probable success"
-msgstr "Formodet succes"
+#: sysdeps/generic/siglist.h:37 sysdeps/unix/siglist.c:36
+msgid "Bus error"
+msgstr "Busfejl"
-#: nis/nis_error.c:31
-msgid "Not found"
-msgstr "Ikke fundet"
+#: sysdeps/generic/siglist.h:38 sysdeps/unix/siglist.c:37
+msgid "Segmentation fault"
+msgstr "Segmentfejl"
-#: nis/nis_error.c:32
-msgid "Probably not found"
-msgstr "Sandsynligvis ikke fundet"
+#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
+#. TRANS Every library function that returns this error code also generates a
+#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled
+#. TRANS or blocked. Thus, your program will never actually see @code{EPIPE}
+#. TRANS unless it has handled or blocked @code{SIGPIPE}.
+#: sysdeps/generic/siglist.h:39 sysdeps/gnu/errlist.c:359
+#: sysdeps/unix/siglist.c:39
+msgid "Broken pipe"
+msgstr "Kanalen blev brudt"
-#: nis/nis_error.c:33
-msgid "Cache expired"
-msgstr "Tidsgrænse for hurtigbuffer løb ud"
+#: sysdeps/generic/siglist.h:40 sysdeps/unix/siglist.c:40
+msgid "Alarm clock"
+msgstr "Alarmklokke"
-#: nis/nis_error.c:34
-msgid "NIS+ servers unreachable"
-msgstr "NIS+-tjenere er ikke tilgængelige"
+#: sysdeps/generic/siglist.h:41 sysdeps/unix/siglist.c:41
+msgid "Terminated"
+msgstr "Termineret"
-#: nis/nis_error.c:35
-msgid "Unknown object"
-msgstr "Ukendt objekt"
+#: sysdeps/generic/siglist.h:42 sysdeps/unix/siglist.c:42
+msgid "Urgent I/O condition"
+msgstr "Kritisk I/O-tilstand"
-#: nis/nis_error.c:36
-msgid "Server busy, try again"
-msgstr "Tjener optaget, prøv igen"
+#: sysdeps/generic/siglist.h:43 sysdeps/unix/siglist.c:43
+msgid "Stopped (signal)"
+msgstr "Stoppet (signal)"
-#: nis/nis_error.c:37
-msgid "Generic system error"
-msgstr "Generel systemfejl"
+#: sysdeps/generic/siglist.h:44 sysdeps/unix/siglist.c:44
+msgid "Stopped"
+msgstr "Stoppet"
-#: nis/nis_error.c:38
-msgid "First/next chain broken"
-msgstr "Første-/næstekæde brudt"
+#: sysdeps/generic/siglist.h:45 sysdeps/unix/siglist.c:45
+msgid "Continued"
+msgstr "Fortsættes"
-#: nis/nis_error.c:41
-msgid "Name not served by this server"
-msgstr "Navn ikke tilbudt af denne tjenere"
+#: sysdeps/generic/siglist.h:46 sysdeps/unix/siglist.c:46
+msgid "Child exited"
+msgstr "Barnet afsluttet"
-#: nis/nis_error.c:42
-msgid "Server out of memory"
-msgstr "Tjener tom for lager"
+#: sysdeps/generic/siglist.h:47 sysdeps/unix/siglist.c:47
+msgid "Stopped (tty input)"
+msgstr "Stoppet (ville læse fra tty)"
-#: nis/nis_error.c:43
-msgid "Object with same name exists"
-msgstr "Objekt med samme navn eksisterer"
+#: sysdeps/generic/siglist.h:48 sysdeps/unix/siglist.c:48
+msgid "Stopped (tty output)"
+msgstr "Stoppet (ville skrive til tty)"
-#: nis/nis_error.c:44
-msgid "Not master server for this domain"
-msgstr "Ikke hovedtjener for dette domæne"
+#: sysdeps/generic/siglist.h:49 sysdeps/unix/siglist.c:49
+msgid "I/O possible"
+msgstr "I/O mulig"
-#: nis/nis_error.c:45
-msgid "Invalid object for operation"
-msgstr "Ugyldigt objekt for operation"
+#: sysdeps/generic/siglist.h:50 sysdeps/unix/siglist.c:50
+msgid "CPU time limit exceeded"
+msgstr "Begrænsning af CPU-tid overskredet"
-#: nis/nis_error.c:46
-msgid "Malformed name, or illegal name"
-msgstr "Fejlagtigt navn eller ugyldigt navn"
+#: sysdeps/generic/siglist.h:51 sysdeps/unix/siglist.c:51
+msgid "File size limit exceeded"
+msgstr "Grænse for filstørrelse overskredet"
-#: nis/nis_error.c:47
-msgid "Unable to create callback"
-msgstr "Ikke i stand til at lave tilbagekald"
+#: sysdeps/generic/siglist.h:52 sysdeps/unix/siglist.c:52
+msgid "Virtual timer expired"
+msgstr "Virtuel tidsgrænse overskredet"
-#: nis/nis_error.c:48
-msgid "Results sent to callback proc"
-msgstr "Resultater sendt til tilbagekalds-proces"
+#: sysdeps/generic/siglist.h:53 sysdeps/unix/siglist.c:53
+msgid "Profiling timer expired"
+msgstr "Profileringstiden udløb"
-#: nis/nis_error.c:49
-msgid "Not found, no such name"
-msgstr "Ikke fundet, ikke noget sådant navn"
+#: sysdeps/generic/siglist.h:54 sysdeps/unix/siglist.c:54
+msgid "Window changed"
+msgstr "Vinduet blev ændret"
-#: nis/nis_error.c:50
-msgid "Name/entry isn't unique"
-msgstr "Navn/indtastninger er ikke unikt"
+#: sysdeps/generic/siglist.h:55 sysdeps/unix/siglist.c:56
+msgid "User defined signal 1"
+msgstr "Brugerdefineret signal 1"
-#: nis/nis_error.c:51
-msgid "Modification failed"
-msgstr "Ændring fejlede"
+#: sysdeps/generic/siglist.h:56 sysdeps/unix/siglist.c:57
+msgid "User defined signal 2"
+msgstr "Brugerdefineret signal 2"
-#: nis/nis_error.c:52
-msgid "Database for table does not exist"
-msgstr "Database for tabel eksisterer ikke"
+#: sysdeps/generic/siglist.h:60 sysdeps/unix/siglist.c:33
+msgid "EMT trap"
+msgstr "EMT-fælde"
-#: nis/nis_error.c:53
-msgid "Entry/table type mismatch"
-msgstr "Indgangs-/tabel-type stemmer ikke overens"
+#: sysdeps/generic/siglist.h:63 sysdeps/unix/siglist.c:38
+msgid "Bad system call"
+msgstr "Ugyldigt systemkald"
-#: nis/nis_error.c:54
-msgid "Link points to illegal name"
-msgstr "Lænke peger til ulovligt navn"
+#: sysdeps/generic/siglist.h:66
+msgid "Stack fault"
+msgstr "Stakfejl"
-#: nis/nis_error.c:55
-msgid "Partial success"
-msgstr "Delvis succes"
+#: sysdeps/generic/siglist.h:69
+msgid "Information request"
+msgstr "Informationsforespørgsel (SIGINFO)"
-#: nis/nis_error.c:56
-msgid "Too many attributes"
-msgstr "For mange attributter"
+#: sysdeps/generic/siglist.h:71
+msgid "Power failure"
+msgstr "Strømmen gik"
-#: nis/nis_error.c:57
-msgid "Error in RPC subsystem"
-msgstr "Fejl i undersystem til RPC"
+#: sysdeps/generic/siglist.h:74 sysdeps/unix/siglist.c:55
+msgid "Resource lost"
+msgstr "Resurse tabt"
-#: nis/nis_error.c:58
-msgid "Missing or malformed attribute"
-msgstr "Attribut mangler eller er fejlagtig"
+#. TRANS Operation not permitted; only the owner of the file (or other resource)
+#. TRANS or processes with special privileges can perform the operation.
+#: sysdeps/gnu/errlist.c:25
+msgid "Operation not permitted"
+msgstr "Operationen er ikke tilladt"
-#: nis/nis_error.c:59
-msgid "Named object is not searchable"
-msgstr "Navngivet objekt er ikke søgbart"
+#. TRANS No process matches the specified process ID.
+#: sysdeps/gnu/errlist.c:45
+msgid "No such process"
+msgstr "Ingen sådan proces"
-#: nis/nis_error.c:60
-msgid "Error while talking to callback proc"
-msgstr "Fejl ved kommunikation med tilbagekaldsproces"
+#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
+#. TRANS completion of the call. When this happens, you should try the call
+#. TRANS again.
+#. TRANS
+#. TRANS You can choose to have functions resume after a signal that is handled,
+#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted
+#. TRANS Primitives}.
+#: sysdeps/gnu/errlist.c:60
+msgid "Interrupted system call"
+msgstr "Afbrudt systemkald"
-#: nis/nis_error.c:61
-msgid "Non NIS+ namespace encountered"
-msgstr "Stødte på navneområde som ikke tilhører NIS+"
+#. TRANS Input/output error; usually used for physical read or write errors.
+#: sysdeps/gnu/errlist.c:69
+msgid "Input/output error"
+msgstr "Inddata/uddata-fejl"
-#: nis/nis_error.c:62
-msgid "Illegal object type for operation"
-msgstr "Ulovlig objekttype for operation"
+#. TRANS No such device or address. The system tried to use the device
+#. TRANS represented by a file you specified, and it couldn't find the device.
+#. TRANS This can mean that the device file was installed incorrectly, or that
+#. TRANS the physical device is missing or not correctly attached to the
+#. TRANS computer.
+#: sysdeps/gnu/errlist.c:82
+msgid "No such device or address"
+msgstr "Ingen sådan enhed eller adresse"
-#: nis/nis_error.c:63
-msgid "Passed object is not the same object on server"
-msgstr "Overført objekt er ikke det samme objekt på tjeneren"
+#. TRANS Argument list too long; used when the arguments passed to a new program
+#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
+#. TRANS File}) occupy too much memory space. This condition never arises in the
+#. TRANS GNU system.
+#: sysdeps/gnu/errlist.c:94
+msgid "Argument list too long"
+msgstr "Argumentlisten er for lang"
-#: nis/nis_error.c:64
-msgid "Modify operation failed"
-msgstr "Ændringsoperation fejlede"
+#. TRANS Invalid executable file format. This condition is detected by the
+#. TRANS @code{exec} functions; see @ref{Executing a File}.
+#: sysdeps/gnu/errlist.c:104
+msgid "Exec format error"
+msgstr "Ugyldigt format på eksekverbar fil"
-#: nis/nis_error.c:65
-msgid "Query illegal for named table"
-msgstr "Spørgsmål ulovligt for given tabel"
+#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
+#. TRANS closed or reading from a descriptor open only for writing (or vice
+#. TRANS versa).
+#: sysdeps/gnu/errlist.c:115
+msgid "Bad file descriptor"
+msgstr "Ugyldig fildeskriptor"
-#: nis/nis_error.c:66
-msgid "Attempt to remove a non-empty table"
-msgstr "Forsøg på at fjerne en tabel som ikke er tom"
+#. TRANS There are no child processes. This error happens on operations that are
+#. TRANS supposed to manipulate child processes, when there aren't any processes
+#. TRANS to manipulate.
+#: sysdeps/gnu/errlist.c:126
+msgid "No child processes"
+msgstr "Ingen børneprocesser"
-#: nis/nis_error.c:67
-msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
-msgstr "Fejl ved læsning af NIS+ koldstartsfil. Er NIS+ installeret?"
+#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
+#. TRANS deadlock situation. The system does not guarantee that it will notice
+#. TRANS all such situations. This error means you got lucky and the system
+#. TRANS noticed; it might just hang. @xref{File Locks}, for an example.
+#: sysdeps/gnu/errlist.c:138
+msgid "Resource deadlock avoided"
+msgstr "Klarede at undgå baglås ved tildeling af ressource"
-#: nis/nis_error.c:68
-msgid "Full resync required for directory"
-msgstr "Fuld resynkronisering behøves for katalog"
+#. TRANS No memory available. The system cannot allocate more virtual memory
+#. TRANS because its capacity is full.
+#: sysdeps/gnu/errlist.c:148
+msgid "Cannot allocate memory"
+msgstr "Kan ikke tildele hukommelse"
-#: nis/nis_error.c:69
-msgid "NIS+ operation failed"
-msgstr "NIS+-operation fejlede"
+#. TRANS Bad address; an invalid pointer was detected.
+#. TRANS In the GNU system, this error never happens; you get a signal instead.
+#: sysdeps/gnu/errlist.c:167
+msgid "Bad address"
+msgstr "Ugyldig adresse"
-#: nis/nis_error.c:70
-msgid "NIS+ service is unavailable or not installed"
-msgstr "NIS+-tjeneste er utilgængelig eller ikke installeret"
+#. TRANS A file that isn't a block special file was given in a situation that
+#. TRANS requires one. For example, trying to mount an ordinary file as a file
+#. TRANS system in Unix gives this error.
+#: sysdeps/gnu/errlist.c:178
+msgid "Block device required"
+msgstr "Blok-enhed kræves"
-#: nis/nis_error.c:71
-msgid "Yes, 42 is the meaning of life"
-msgstr "Ja, 42 er meningen med livet"
+#. TRANS Resource busy; a system resource that can't be shared is already in use.
+#. TRANS For example, if you try to delete a file that is the root of a currently
+#. TRANS mounted filesystem, you get this error.
+#: sysdeps/gnu/errlist.c:189
+msgid "Device or resource busy"
+msgstr "Enheden eller ressourcen optaget"
-#: nis/nis_error.c:72
-msgid "Unable to authenticate NIS+ server"
-msgstr "Ikke i stand til at autentificere NIS+-tjener"
+#. TRANS File exists; an existing file was specified in a context where it only
+#. TRANS makes sense to specify a new file.
+#: sysdeps/gnu/errlist.c:199
+msgid "File exists"
+msgstr "Filen eksisterer"
-#: nis/nis_error.c:73
-msgid "Unable to authenticate NIS+ client"
-msgstr "Ikke i stand til at autentificere NIS+-klient"
+#. TRANS An attempt to make an improper link across file systems was detected.
+#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
+#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
+#: sysdeps/gnu/errlist.c:210
+msgid "Invalid cross-device link"
+msgstr "Ugyldig lænke over adskilte enheder"
-#: nis/nis_error.c:74
-msgid "No file space on server"
-msgstr "Ikke mere plads på enheden"
+#. TRANS The wrong type of device was given to a function that expects a
+#. TRANS particular sort of device.
+#: sysdeps/gnu/errlist.c:220
+msgid "No such device"
+msgstr "Ingen sådan enhed"
-#: nis/nis_error.c:75
-msgid "Unable to create process on server"
-msgstr "Ikke i stand til at oprette proces på tjeneren"
+#. TRANS A file that isn't a directory was specified when a directory is required.
+#: sysdeps/gnu/errlist.c:229
+msgid "Not a directory"
+msgstr "Ikke et katalog"
-#: nis/nis_error.c:76
-msgid "Master server busy, full dump rescheduled."
-msgstr "Hovedtjener optaget, fuld lagring udsat."
+#. TRANS File is a directory; you cannot open a directory for writing,
+#. TRANS or create or remove hard links to it.
+#: sysdeps/gnu/errlist.c:239
+msgid "Is a directory"
+msgstr "Er et filkatalog"
-#: nis/nis_local_names.c:126
-#, c-format
-msgid "LOCAL entry for UID %d in directory %s not unique\n"
-msgstr "LOKALT indtastning for UID %d i katalog %s er ikke unikt\n"
+#. TRANS Invalid argument. This is used to indicate various kinds of problems
+#. TRANS with passing the wrong argument to a library function.
+#: sysdeps/gnu/errlist.c:249
+msgid "Invalid argument"
+msgstr "Ugyldigt argument"
-#: nis/nis_print.c:51
-msgid "UNKNOWN"
-msgstr "UKENDT"
+#. TRANS The current process has too many files open and can't open any more.
+#. TRANS Duplicate descriptors do count toward this limit.
+#. TRANS
+#. TRANS In BSD and GNU, the number of open files is controlled by a resource
+#. TRANS limit that can usually be increased. If you get this error, you might
+#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
+#. TRANS @pxref{Limits on Resources}.
+#: sysdeps/gnu/errlist.c:264
+msgid "Too many open files"
+msgstr "For mange åbne filer"
-#: nis/nis_print.c:109
-msgid "BOGUS OBJECT\n"
-msgstr "FALSKT OBJEKT\n"
+#. TRANS There are too many distinct file openings in the entire system. Note
+#. TRANS that any number of linked channels count as just one file opening; see
+#. TRANS @ref{Linked Channels}. This error never occurs in the GNU system.
+#: sysdeps/gnu/errlist.c:275
+msgid "Too many open files in system"
+msgstr "For mange åbne filer i systemet"
-#: nis/nis_print.c:112
-msgid "NO OBJECT\n"
-msgstr "IKKE NOGET OBJEKT\n"
+#. TRANS Inappropriate I/O control operation, such as trying to set terminal
+#. TRANS modes on an ordinary file.
+#: sysdeps/gnu/errlist.c:285
+msgid "Inappropriate ioctl for device"
+msgstr "Uegnet 'ioctl' for enhed"
-#: nis/nis_print.c:115
-msgid "DIRECTORY\n"
-msgstr "KATALOG\n"
+#. TRANS An attempt to execute a file that is currently open for writing, or
+#. TRANS write to a file that is currently being executed. Often using a
+#. TRANS debugger to run a program is considered having it open for writing and
+#. TRANS will cause this error. (The name stands for ``text file busy''.) This
+#. TRANS is not an error in the GNU system; the text is copied as necessary.
+#: sysdeps/gnu/errlist.c:298
+msgid "Text file busy"
+msgstr "Tekstfil optaget"
-#: nis/nis_print.c:118
-msgid "GROUP\n"
-msgstr "GRUPPE\n"
+#. TRANS File too big; the size of a file would be larger than allowed by the system.
+#: sysdeps/gnu/errlist.c:307
+msgid "File too large"
+msgstr "For stor fil"
-#: nis/nis_print.c:121
-msgid "TABLE\n"
-msgstr "TABEL\n"
+#. TRANS No space left on device; write operation on a file failed because the
+#. TRANS disk is full.
+#: sysdeps/gnu/errlist.c:317
+msgid "No space left on device"
+msgstr "Ikke mere plads på enheden"
-#: nis/nis_print.c:124
-msgid "ENTRY\n"
-msgstr "INDGANG\n"
+#. TRANS Invalid seek operation (such as on a pipe).
+#: sysdeps/gnu/errlist.c:326
+msgid "Illegal seek"
+msgstr "Ulovlig søgeoperation"
-#: nis/nis_print.c:127
-msgid "LINK\n"
-msgstr "LINK\n"
+#. TRANS An attempt was made to modify something on a read-only file system.
+#: sysdeps/gnu/errlist.c:335
+msgid "Read-only file system"
+msgstr "Filsystem med kun læseadgang"
-#: nis/nis_print.c:130
-msgid "PRIVATE\n"
-msgstr "PRIVAT\n"
+#. TRANS Too many links; the link count of a single file would become too large.
+#. TRANS @code{rename} can cause this error if the file being renamed already has
+#. TRANS as many links as it can take (@pxref{Renaming Files}).
+#: sysdeps/gnu/errlist.c:346
+msgid "Too many links"
+msgstr "For mange lænker"
-#: nis/nis_print.c:133
-msgid "(Unknown object)\n"
-msgstr "(Ukendt objekt)\n"
+#. TRANS Domain error; used by mathematical functions when an argument value does
+#. TRANS not fall into the domain over which the function is defined.
+#: sysdeps/gnu/errlist.c:369
+msgid "Numerical argument out of domain"
+msgstr "Numerisk argument er udenfor defineret område"
-#: nis/nis_print.c:166
-#, c-format
-msgid "Name : `%s'\n"
-msgstr "Navn : '%s'\n"
+#. TRANS Range error; used by mathematical functions when the result value is
+#. TRANS not representable because of overflow or underflow.
+#: sysdeps/gnu/errlist.c:379
+msgid "Numerical result out of range"
+msgstr "Numerisk resultat er udenfor gyldigt område"
-#: nis/nis_print.c:167
-#, c-format
-msgid "Type : %s\n"
-msgstr "Type : %s\n"
+#. TRANS Resource temporarily unavailable; the call might work if you try again
+#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
+#. TRANS they are always the same in the GNU C library.
+#. TRANS
+#. TRANS This error can happen in a few different situations:
+#. TRANS
+#. TRANS @itemize @bullet
+#. TRANS @item
+#. TRANS An operation that would block was attempted on an object that has
+#. TRANS non-blocking mode selected. Trying the same operation again will block
+#. TRANS until some external condition makes it possible to read, write, or
+#. TRANS connect (whatever the operation). You can use @code{select} to find out
+#. TRANS when the operation will be possible; @pxref{Waiting for I/O}.
+#. TRANS
+#. TRANS @strong{Portability Note:} In many older Unix systems, this condition
+#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code
+#. TRANS different from @code{EAGAIN}. To make your program portable, you should
+#. TRANS check for both codes and treat them the same.
+#. TRANS
+#. TRANS @item
+#. TRANS A temporary resource shortage made an operation impossible. @code{fork}
+#. TRANS can return this error. It indicates that the shortage is expected to
+#. TRANS pass, so your program can try the call again later and it may succeed.
+#. TRANS It is probably a good idea to delay for a few seconds before trying it
+#. TRANS again, to allow time for other processes to release scarce resources.
+#. TRANS Such shortages are usually fairly serious and affect the whole system,
+#. TRANS so usually an interactive program should report the error to the user
+#. TRANS and return to its command loop.
+#. TRANS @end itemize
+#: sysdeps/gnu/errlist.c:416
+msgid "Resource temporarily unavailable"
+msgstr "Resursen midlertidig utilgængelig"
-#: nis/nis_print.c:172
-msgid "Master Server :\n"
-msgstr "Hovedtjener: \n"
+#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
+#. TRANS The values are always the same, on every operating system.
+#. TRANS
+#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
+#. TRANS separate error code.
+#: sysdeps/gnu/errlist.c:429
+msgid "Operation would block"
+msgstr "Operationen ville have blokeret"
-#: nis/nis_print.c:174
-msgid "Replicate :\n"
-msgstr "Replikér:\n"
+#. TRANS An operation that cannot complete immediately was initiated on an object
+#. TRANS that has non-blocking mode selected. Some functions that must always
+#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return
+#. TRANS @code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that
+#. TRANS the operation has begun and will take some time. Attempts to manipulate
+#. TRANS the object before the call completes return @code{EALREADY}. You can
+#. TRANS use the @code{select} function to find out when the pending operation
+#. TRANS has completed; @pxref{Waiting for I/O}.
+#: sysdeps/gnu/errlist.c:445
+msgid "Operation now in progress"
+msgstr "Operationen er nu under udførelse"
-#: nis/nis_print.c:175
-#, c-format
-msgid "\tName : %s\n"
-msgstr "\tNavn : %s\n"
+#. TRANS An operation is already in progress on an object that has non-blocking
+#. TRANS mode selected.
+#: sysdeps/gnu/errlist.c:455
+msgid "Operation already in progress"
+msgstr "Operationen er allerede under udførelse"
-#: nis/nis_print.c:176
-msgid "\tPublic Key : "
-msgstr "\tOffentlig nøgle: "
+#. TRANS A file that isn't a socket was specified when a socket is required.
+#: sysdeps/gnu/errlist.c:464
+msgid "Socket operation on non-socket"
+msgstr "Sokkel-operation på noget som ikke er en sokkel"
-#: nis/nis_print.c:180
-msgid "None.\n"
-msgstr "Ingen.\n"
+#. TRANS The size of a message sent on a socket was larger than the supported
+#. TRANS maximum size.
+#: sysdeps/gnu/errlist.c:474
+msgid "Message too long"
+msgstr "For lang meddelse"
-#: nis/nis_print.c:183
-#, c-format
-msgid "Diffie-Hellmann (%d bits)\n"
-msgstr "Diffie-Hellmannn (%d bits)\n"
+#. TRANS The socket type does not support the requested communications protocol.
+#: sysdeps/gnu/errlist.c:483
+msgid "Protocol wrong type for socket"
+msgstr "Protokollen er ikke rigtig type for sokkel"
-#: nis/nis_print.c:188
-#, c-format
-msgid "RSA (%d bits)\n"
-msgstr "RSA (%d bit)\n"
+#. TRANS You specified a socket option that doesn't make sense for the
+#. TRANS particular protocol being used by the socket. @xref{Socket Options}.
+#: sysdeps/gnu/errlist.c:493
+msgid "Protocol not available"
+msgstr "Protokollen er ikke tilgængelig"
-#: nis/nis_print.c:191
-msgid "Kerberos.\n"
-msgstr "Kerberos.\n"
+#. TRANS The socket domain does not support the requested communications protocol
+#. TRANS (perhaps because the requested protocol is completely invalid).
+#. TRANS @xref{Creating a Socket}.
+#: sysdeps/gnu/errlist.c:504
+msgid "Protocol not supported"
+msgstr "Protokollen er ikke understøttet"
-#: nis/nis_print.c:194
-#, c-format
-msgid "Unknown (type = %d, bits = %d)\n"
-msgstr "Ukendt (type = %d, bit = %d)\n"
+#. TRANS The socket type is not supported.
+#: sysdeps/gnu/errlist.c:513
+msgid "Socket type not supported"
+msgstr "Sokkel-typen er ikke understøttet"
-#: nis/nis_print.c:205
-#, c-format
-msgid "\tUniversal addresses (%u)\n"
-msgstr "\tUniversale adresser (%u)\n"
+#. TRANS The operation you requested is not supported. Some socket functions
+#. TRANS don't make sense for all types of sockets, and others may not be
+#. TRANS implemented for all communications protocols. In the GNU system, this
+#. TRANS error can happen for many calls when the object does not support the
+#. TRANS particular operation; it is a generic indication that the server knows
+#. TRANS nothing to do for that call.
+#: sysdeps/gnu/errlist.c:527
+msgid "Operation not supported"
+msgstr "Operationen er ikke understøttet"
-#: nis/nis_print.c:227
-msgid "Time to live : "
-msgstr "Levetid: "
+#. TRANS The socket communications protocol family you requested is not supported.
+#: sysdeps/gnu/errlist.c:536
+msgid "Protocol family not supported"
+msgstr "Protokol-familien er ikke understøttet"
-#: nis/nis_print.c:229
-msgid "Default Access rights :\n"
-msgstr "Forvalgte adgangsrettigheder:\n"
+#. TRANS The address family specified for a socket is not supported; it is
+#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}.
+#: sysdeps/gnu/errlist.c:546
+msgid "Address family not supported by protocol"
+msgstr "Adressefamilien er ikke understøttet af protokollen"
-#: nis/nis_print.c:238
-#, c-format
-msgid "\tType : %s\n"
-msgstr "\tType : %s\n"
+#. TRANS The requested socket address is already in use. @xref{Socket Addresses}.
+#: sysdeps/gnu/errlist.c:555
+msgid "Address already in use"
+msgstr "Adressen er allerede i brug"
-#: nis/nis_print.c:239
-msgid "\tAccess rights: "
-msgstr "\tAdgangsrettigheder: "
+#. TRANS The requested socket address is not available; for example, you tried
+#. TRANS to give a socket a name that doesn't match the local host name.
+#. TRANS @xref{Socket Addresses}.
+#: sysdeps/gnu/errlist.c:566
+msgid "Cannot assign requested address"
+msgstr "Kan ikke tildele den ønskede adresse"
-#: nis/nis_print.c:252
-msgid "Group Flags :"
-msgstr "Gruppeflag :"
+#. TRANS A socket operation failed because the network was down.
+#: sysdeps/gnu/errlist.c:575
+msgid "Network is down"
+msgstr "Netværket er nede"
-#: nis/nis_print.c:255
-msgid ""
-"\n"
-"Group Members :\n"
-msgstr ""
-"\n"
-"Gruppemedlemmer :\n"
+#. TRANS A socket operation failed because the subnet containing the remote host
+#. TRANS was unreachable.
+#: sysdeps/gnu/errlist.c:585
+msgid "Network is unreachable"
+msgstr "Netværket er ikke tilgængeligt"
-#: nis/nis_print.c:266
-#, c-format
-msgid "Table Type : %s\n"
-msgstr "Tabeltype : %s\n"
+#. TRANS A network connection was reset because the remote host crashed.
+#: sysdeps/gnu/errlist.c:594
+msgid "Network dropped connection on reset"
+msgstr "Netværket nedlagde forbindelsen ved genstart"
-#: nis/nis_print.c:267
-#, c-format
-msgid "Number of Columns : %d\n"
-msgstr "Antal kolonner : %d\n"
+#. TRANS A network connection was aborted locally.
+#: sysdeps/gnu/errlist.c:603
+msgid "Software caused connection abort"
+msgstr "Programmet forårsagede forbindelsesafbrud"
-#: nis/nis_print.c:268
-#, c-format
-msgid "Character Separator : %c\n"
-msgstr "Tegn-separator : %c\n"
+#. TRANS A network connection was closed for reasons outside the control of the
+#. TRANS local host, such as by the remote machine rebooting or an unrecoverable
+#. TRANS protocol violation.
+#: sysdeps/gnu/errlist.c:614
+msgid "Connection reset by peer"
+msgstr "Forbindelsen brudt i den anden ende"
-#: nis/nis_print.c:269
-#, c-format
-msgid "Search Path : %s\n"
-msgstr "Søgesti : %s\n"
+#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this
+#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
+#. TRANS other from network operations.
+#: sysdeps/gnu/errlist.c:625
+msgid "No buffer space available"
+msgstr "Ikke mere buffer-plads tilgængelig"
-#: nis/nis_print.c:270
-msgid "Columns :\n"
-msgstr "Kolonner :\n"
+#. TRANS You tried to connect a socket that is already connected.
+#. TRANS @xref{Connecting}.
+#: sysdeps/gnu/errlist.c:635
+msgid "Transport endpoint is already connected"
+msgstr "Transport-endepunkt er allerede forbundet"
-#: nis/nis_print.c:273
-#, c-format
-msgid "\t[%d]\tName : %s\n"
-msgstr "\t[%d]\tNavn : %s\n"
+#. TRANS The socket is not connected to anything. You get this error when you
+#. TRANS try to transmit data over a socket, without first specifying a
+#. TRANS destination for the data. For a connectionless socket (for datagram
+#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
+#: sysdeps/gnu/errlist.c:647
+msgid "Transport endpoint is not connected"
+msgstr "Transport-endepunkt er ikke forbundet"
-#: nis/nis_print.c:275
-msgid "\t\tAttributes : "
-msgstr "\t\tAttributter :"
+#. TRANS No default destination address was set for the socket. You get this
+#. TRANS error when you try to transmit data over a connectionless socket,
+#. TRANS without first specifying a destination for the data with @code{connect}.
+#: sysdeps/gnu/errlist.c:658
+msgid "Destination address required"
+msgstr "Måladresse kræves"
-#: nis/nis_print.c:277
-msgid "\t\tAccess Rights : "
-msgstr "\t\tAdgangsrettigheder :"
+#. TRANS The socket has already been shut down.
+#: sysdeps/gnu/errlist.c:667
+msgid "Cannot send after transport endpoint shutdown"
+msgstr "Kan ikke sende efter at transportendepunktet er lukket ned"
-#: nis/nis_print.c:286
-msgid "Linked Object Type : "
-msgstr "Lænket objekttype : "
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:676
+msgid "Too many references: cannot splice"
+msgstr "For mange referencer: kan ikke splejse sammen"
-#: nis/nis_print.c:288
-#, c-format
-msgid "Linked to : %s\n"
-msgstr "Lænket til : %s\n"
+#. TRANS A socket operation with a specified timeout received no response during
+#. TRANS the timeout period.
+#: sysdeps/gnu/errlist.c:686
+msgid "Connection timed out"
+msgstr "Opkoblingen overskred tidsgrænsen"
-#: nis/nis_print.c:297
-#, c-format
-msgid "\tEntry data of type %s\n"
-msgstr "\tIndtastningsdata af type %s\n"
+#. TRANS A remote host refused to allow the network connection (typically because
+#. TRANS it is not running the requested service).
+#: sysdeps/gnu/errlist.c:696
+msgid "Connection refused"
+msgstr "Opkobling nægtet"
-#: nis/nis_print.c:300
-#, c-format
-msgid "\t[%u] - [%u bytes] "
-msgstr "\t[%u] - [%u byte] "
+#. TRANS Too many levels of symbolic links were encountered in looking up a file name.
+#. TRANS This often indicates a cycle of symbolic links.
+#: sysdeps/gnu/errlist.c:706
+msgid "Too many levels of symbolic links"
+msgstr "For mange niveauer med symbolske lænker"
-#: nis/nis_print.c:303
-msgid "Encrypted data\n"
-msgstr "Krypteret data\n"
+#. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for
+#. TRANS Files}) or host name too long (in @code{gethostname} or
+#. TRANS @code{sethostname}; @pxref{Host Identification}).
+#: sysdeps/gnu/errlist.c:717
+msgid "File name too long"
+msgstr "For langt filnavn"
-#: nis/nis_print.c:305
-msgid "Binary data\n"
-msgstr "Binære data\n"
+#. TRANS The remote host for a requested network connection is down.
+#: sysdeps/gnu/errlist.c:726
+msgid "Host is down"
+msgstr "Værtsmaskinen er nede"
-#: nis/nis_print.c:320
-#, c-format
-msgid "Object Name : %s\n"
-msgstr "Objektnavn : %s\n"
+#. TRANS The remote host for a requested network connection is not reachable.
+#: sysdeps/gnu/errlist.c:735
+msgid "No route to host"
+msgstr "Ingen rute til værtsmaskinen"
-#: nis/nis_print.c:321
-#, c-format
-msgid "Directory : %s\n"
-msgstr "Katalog : %s\n"
+#. TRANS Directory not empty, where an empty directory was expected. Typically,
+#. TRANS this error occurs when you are trying to delete a directory.
+#: sysdeps/gnu/errlist.c:745
+msgid "Directory not empty"
+msgstr "Filkataloget er ikke tomt"
-#: nis/nis_print.c:322
-#, c-format
-msgid "Owner : %s\n"
-msgstr "Ejer : %s\n"
+#. TRANS This means that the per-user limit on new process would be exceeded by
+#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on
+#. TRANS the @code{RLIMIT_NPROC} limit.
+#: sysdeps/gnu/errlist.c:756
+msgid "Too many processes"
+msgstr "For mange processer"
-#: nis/nis_print.c:323
-#, c-format
-msgid "Group : %s\n"
-msgstr "Gruppe : %s\n"
+#. TRANS The file quota system is confused because there are too many users.
+#. TRANS @c This can probably happen in a GNU system when using NFS.
+#: sysdeps/gnu/errlist.c:766
+msgid "Too many users"
+msgstr "For mange brugere"
-#: nis/nis_print.c:324
-msgid "Access Rights : "
-msgstr "Adgangsrettigheder: "
+#. TRANS The user's disk quota was exceeded.
+#: sysdeps/gnu/errlist.c:775
+msgid "Disk quota exceeded"
+msgstr "Diskkvoten overskredet"
-#: nis/nis_print.c:326
-msgid ""
-"\n"
-"Time to Live : "
-msgstr ""
-"\n"
-"Levetid : "
+#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS
+#. TRANS system which is due to file system rearrangements on the server host.
+#. TRANS Repairing this condition usually requires unmounting and remounting
+#. TRANS the NFS file system on the local host.
+#: sysdeps/gnu/errlist.c:787
+msgid "Stale NFS file handle"
+msgstr "Forældet NFS-filhåndtag"
-#: nis/nis_print.c:329
-#, c-format
-msgid "Creation Time : %s"
-msgstr "Oprettelsestid: %s"
+#. TRANS An attempt was made to NFS-mount a remote file system with a file name that
+#. TRANS already specifies an NFS-mounted file.
+#. TRANS (This is an error on some operating systems, but we expect it to work
+#. TRANS properly on the GNU system, making this error code impossible.)
+#: sysdeps/gnu/errlist.c:799
+msgid "Object is remote"
+msgstr "Er et fjernobjekt"
-#: nis/nis_print.c:331
-#, c-format
-msgid "Mod. Time : %s"
-msgstr "Ændringstid : %s"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:808
+msgid "RPC struct is bad"
+msgstr "RPC-strukturen er dårlig"
-#: nis/nis_print.c:332
-msgid "Object Type : "
-msgstr "Objekttype : "
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:817
+msgid "RPC version wrong"
+msgstr "forkert RPC-version"
-#: nis/nis_print.c:352
-#, c-format
-msgid " Data Length = %u\n"
-msgstr " Datalængde = %u\n"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:826
+msgid "RPC program not available"
+msgstr "RPC-programmet er ikke tilgængeligt"
-#: nis/nis_print.c:365
-#, c-format
-msgid "Status : %s\n"
-msgstr "Status : %s\n"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:835
+msgid "RPC program version wrong"
+msgstr "RPC: forkert programversion"
-#: nis/nis_print.c:366
-#, c-format
-msgid "Number of objects : %u\n"
-msgstr "Antal objekter : %u\n"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:844
+msgid "RPC bad procedure for program"
+msgstr "RPC: dårlig procedure for program"
-#: nis/nis_print.c:370
-#, c-format
-msgid "Object #%d:\n"
-msgstr "Objekt #%d:\n"
+#. TRANS No locks available. This is used by the file locking facilities; see
+#. TRANS @ref{File Locks}. This error is never generated by the GNU system, but
+#. TRANS it can result from an operation to an NFS server running another
+#. TRANS operating system.
+#: sysdeps/gnu/errlist.c:856
+msgid "No locks available"
+msgstr "Ingen låse tilgængelige"
-#: nis/nis_print_group_entry.c:115
-#, c-format
-msgid "Group entry for \"%s.%s\" group:\n"
-msgstr "Gruppeindtastninger for '%s.%s'-gruppen:\n"
+#. TRANS Inappropriate file type or format. The file was the wrong type for the
+#. TRANS operation, or a data file had the wrong format.
+#. TRANS
+#. TRANS On some systems @code{chmod} returns this error if you try to set the
+#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
+#: sysdeps/gnu/errlist.c:869
+msgid "Inappropriate file type or format"
+msgstr "Uegnet filtype eller format"
-#: nis/nis_print_group_entry.c:123
-msgid " Explicit members:\n"
-msgstr " Eksplicitte medlemmer:\n"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:878
+msgid "Authentication error"
+msgstr "Autentificeringsfejl"
-#: nis/nis_print_group_entry.c:128
-msgid " No explicit members\n"
-msgstr " Ingen eksplicitte medlemmer\n"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:887
+msgid "Need authenticator"
+msgstr "Skal have nogen til at autentificere"
-#: nis/nis_print_group_entry.c:131
-msgid " Implicit members:\n"
-msgstr " Implicitte medlemmer:\n"
+#. TRANS Function not implemented. This indicates that the function called is
+#. TRANS not implemented at all, either in the C library itself or in the
+#. TRANS operating system. When you get this error, you can be sure that this
+#. TRANS particular function will always fail with @code{ENOSYS} unless you
+#. TRANS install a new version of the C library or the operating system.
+#: sysdeps/gnu/errlist.c:900
+msgid "Function not implemented"
+msgstr "Funktionen er ikke implementeret"
-#: nis/nis_print_group_entry.c:136
-msgid " No implicit members\n"
-msgstr " Ingen implicitte medlemmer\n"
+#. TRANS Not supported. A function returns this error when certain parameter
+#. TRANS values are valid, but the functionality they request is not available.
+#. TRANS This can mean that the function does not implement a particular command
+#. TRANS or option value or flag bit at all. For functions that operate on some
+#. TRANS object given in a parameter, such as a file descriptor or a port, it
+#. TRANS might instead mean that only @emph{that specific object} (file
+#. TRANS descriptor, port, etc.) is unable to support the other parameters given;
+#. TRANS different file descriptors might support different ranges of parameter
+#. TRANS values.
+#. TRANS
+#. TRANS If the entire function is not available at all in the implementation,
+#. TRANS it returns @code{ENOSYS} instead.
+#: sysdeps/gnu/errlist.c:920
+msgid "Not supported"
+msgstr "Ikke understøttet"
-#: nis/nis_print_group_entry.c:139
-msgid " Recursive members:\n"
-msgstr " Rekursive medlemmer:\n"
+#. TRANS While decoding a multibyte character the function came along an invalid
+#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
+#: sysdeps/gnu/errlist.c:930
+msgid "Invalid or incomplete multibyte or wide character"
+msgstr "Ugyldigt eller ufuldstændigt multibyte eller bredt tegn"
-#: nis/nis_print_group_entry.c:144
-msgid " No recursive members\n"
-msgstr " Ingen rekursive medlemmer\n"
+#. TRANS In the GNU system, servers supporting the @code{term} protocol return
+#. TRANS this error for certain operations when the caller is not in the
+#. TRANS foreground process group of the terminal. Users do not usually see this
+#. TRANS error because functions such as @code{read} and @code{write} translate
+#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control},
+#. TRANS for information on process groups and these signals.
+#: sysdeps/gnu/errlist.c:944
+msgid "Inappropriate operation for background process"
+msgstr "Uegnet operation for baggrundsproces"
-#: nis/nis_print_group_entry.c:147 nis/nis_print_group_entry.c:163
-msgid " Explicit nonmembers:\n"
-msgstr " Eksplicitte ikke-medlemmer:\n"
+#. TRANS In the GNU system, opening a file returns this error when the file is
+#. TRANS translated by a program and the translator program dies while starting
+#. TRANS up, before it has connected to the file.
+#: sysdeps/gnu/errlist.c:955
+msgid "Translator died"
+msgstr "Oversætteren døde"
-#: nis/nis_print_group_entry.c:152
-msgid " No explicit nonmembers\n"
-msgstr " Ingen eksplicitte ikke-medlemmer\n"
+#. TRANS The experienced user will know what is wrong.
+#. TRANS @c This error code is a joke. Its perror text is part of the joke.
+#. TRANS @c Don't change it.
+#: sysdeps/gnu/errlist.c:966
+msgid "?"
+msgstr "?"
-#: nis/nis_print_group_entry.c:155
-msgid " Implicit nonmembers:\n"
-msgstr " Implicitte ikke-medlemmer:\n"
+#. TRANS You did @strong{what}?
+#: sysdeps/gnu/errlist.c:975
+msgid "You really blew it this time"
+msgstr "Denne gang gjorde du virkelig i nælderne"
-#: nis/nis_print_group_entry.c:160
-msgid " No implicit nonmembers\n"
-msgstr " Ingen implicitte ikke-medlemmer\n"
+#. TRANS Go home and have a glass of warm, dairy-fresh milk.
+#: sysdeps/gnu/errlist.c:984
+msgid "Computer bought the farm"
+msgstr "Datamaskinen tog på ferie"
-#: nis/nis_print_group_entry.c:168
-msgid " No recursive nonmembers\n"
-msgstr " Ingen rekursive ikke-medlemmer\n"
+#. TRANS This error code has no purpose.
+#: sysdeps/gnu/errlist.c:993
+msgid "Gratuitous error"
+msgstr "Umotiveret fejl"
-#: nis/nss_nisplus/nisplus-publickey.c:96
-#: nis/nss_nisplus/nisplus-publickey.c:172
-#, c-format
-msgid "DES entry for netname %s not unique\n"
-msgstr "DES-indtastninger for netnavn %s er ikke unikt\n"
+#: sysdeps/gnu/errlist.c:1001
+msgid "Bad message"
+msgstr "Ugyldig meddelelse"
-#: nis/nss_nisplus/nisplus-publickey.c:208
-#, c-format
-msgid "netname2user: missing group id list in `%s'."
-msgstr "netname2user: manglende gruppeid-liste i '%s'."
+#: sysdeps/gnu/errlist.c:1009
+msgid "Identifier removed"
+msgstr "Identifikator fjernet"
-#: nis/nss_nisplus/nisplus-publickey.c:285
-#: nis/nss_nisplus/nisplus-publickey.c:291
-#: nis/nss_nisplus/nisplus-publickey.c:350
-#: nis/nss_nisplus/nisplus-publickey.c:359
-#, c-format
-msgid "netname2user: (nis+ lookup): %s\n"
-msgstr "netname2user: (nis+-opslag): %s\n"
+#: sysdeps/gnu/errlist.c:1017
+msgid "Multihop attempted"
+msgstr "Forsøgte viderehop"
-#: nis/nss_nisplus/nisplus-publickey.c:304
-#, c-format
-msgid "netname2user: DES entry for %s in directory %s not unique"
-msgstr "netname2user: DES-indtastninger for %s i katalog %s er ikke unikt"
+#: sysdeps/gnu/errlist.c:1025
+msgid "No data available"
+msgstr "Ingen data er tilgængelige"
-#: nis/nss_nisplus/nisplus-publickey.c:322
-#, c-format
-msgid "netname2user: principal name `%s' too long"
-msgstr "netname2user: navn på 'principal' '%s' for langt"
+#: sysdeps/gnu/errlist.c:1033
+msgid "Link has been severed"
+msgstr "Lænken er blevet skadet"
-#: nis/nss_nisplus/nisplus-publickey.c:372
-#, c-format
-msgid "netname2user: LOCAL entry for %s in directory %s not unique"
-msgstr "netname2user: LOKAL-indtastninger for %s i katalog %s er ikke unikt"
+#: sysdeps/gnu/errlist.c:1041
+msgid "No message of desired type"
+msgstr "Ingen meddelelser af ønsket type"
-#: nis/nss_nisplus/nisplus-publickey.c:379
-msgid "netname2user: should not have uid 0"
-msgstr "netname2user: burde ikke have uid 0"
+#: sysdeps/gnu/errlist.c:1049
+msgid "Out of streams resources"
+msgstr "Ikke flere strøm-ressourcer"
-#: nis/ypclnt.c:174
-#, c-format
-msgid "YPBINDPROC_DOMAIN: %s\n"
-msgstr "YPBINDPROC_DOMAIN: %s\n"
+#: sysdeps/gnu/errlist.c:1057
+msgid "Device not a stream"
+msgstr "Enheden er ikke en strøm"
-#: nis/ypclnt.c:789
-msgid "Request arguments bad"
-msgstr "Argumenter for forespørgsel er ugyldige"
+#: sysdeps/gnu/errlist.c:1065
+msgid "Value too large for defined data type"
+msgstr "Værdien er for stor for den definerede datatype"
-#: nis/ypclnt.c:791
-msgid "RPC failure on NIS operation"
-msgstr "RPC-fejl ved NIS-operation"
+#: sysdeps/gnu/errlist.c:1073
+msgid "Protocol error"
+msgstr "Protokolfejl"
-# nis/ypclnt.c:637+
-#: nis/ypclnt.c:793
-msgid "Can't bind to server which serves this domain"
-msgstr "Kan ikke koble til tjener for dette domæne"
+#: sysdeps/gnu/errlist.c:1081
+msgid "Timer expired"
+msgstr "Tidstager udløb"
-#: nis/ypclnt.c:795
-msgid "No such map in server's domain"
-msgstr "Ingen sådan tabel i tjenerens domæne"
+#. TRANS Operation canceled; an asynchronous operation was canceled before it
+#. TRANS completed. @xref{Asynchronous I/O}. When you call @code{aio_cancel},
+#. TRANS the normal result is for the operations affected to complete with this
+#. TRANS error; @pxref{Cancel AIO Operations}.
+#: sysdeps/gnu/errlist.c:1093
+msgid "Operation canceled"
+msgstr "Operationen afbrudt"
-#: nis/ypclnt.c:797
-msgid "No such key in map"
-msgstr "Ingen sådan nøgle i tabellen"
+#: sysdeps/gnu/errlist.c:1101
+msgid "Interrupted system call should be restarted"
+msgstr "Afbrudt systemkald bør genstartes"
-#: nis/ypclnt.c:799
-msgid "Internal NIS error"
-msgstr "Intern NIS-fejl"
+#: sysdeps/gnu/errlist.c:1109
+msgid "Channel number out of range"
+msgstr "Kanalnummer udenfor gyldigt interval"
-#: nis/ypclnt.c:801
-msgid "Local resource allocation failure"
-msgstr "Tildelingsfejl for lokal ressource"
+#: sysdeps/gnu/errlist.c:1117
+msgid "Level 2 not synchronized"
+msgstr "Niveau 2 ikke synkroniseret"
-#: nis/ypclnt.c:803
-msgid "No more records in map database"
-msgstr "Ikke flere poster i tabellen"
+#: sysdeps/gnu/errlist.c:1125
+msgid "Level 3 halted"
+msgstr "Niveau 3 stoppet"
-#: nis/ypclnt.c:805
-msgid "Can't communicate with portmapper"
-msgstr "Kan ikke kommunikere med portmapper"
+#: sysdeps/gnu/errlist.c:1133
+msgid "Level 3 reset"
+msgstr "Niveau 3 startet forfra"
-#: nis/ypclnt.c:807
-msgid "Can't communicate with ypbind"
-msgstr "Kan ikke kommunikere med ypbind"
+#: sysdeps/gnu/errlist.c:1141
+msgid "Link number out of range"
+msgstr "Lænkenummer udenfor gyldigt område"
-#: nis/ypclnt.c:809
-msgid "Can't communicate with ypserv"
-msgstr "Kan ikke kommunikere med ypserv"
+#: sysdeps/gnu/errlist.c:1149
+msgid "Protocol driver not attached"
+msgstr "Protokoldriver er ikke tilkoblet"
-#: nis/ypclnt.c:811
-msgid "Local domain name not set"
-msgstr "Lokalt domænenavn er ikke sat"
+#: sysdeps/gnu/errlist.c:1157
+msgid "No CSI structure available"
+msgstr "Ingen CSI-strukturer tilgængelige"
-#: nis/ypclnt.c:813
-msgid "NIS map database is bad"
-msgstr "NIS' tabel-database er korrupt"
+#: sysdeps/gnu/errlist.c:1165
+msgid "Level 2 halted"
+msgstr "Niveau 2 stoppet"
-#: nis/ypclnt.c:815
-msgid "NIS client/server version mismatch - can't supply service"
-msgstr "NIS klient/tjener versionsforskel - kan ikke betjene"
+#: sysdeps/gnu/errlist.c:1173
+msgid "Invalid exchange"
+msgstr "Ugyldig veksel"
-#: nis/ypclnt.c:819
-msgid "Database is busy"
-msgstr "Databasen er optaget"
+#: sysdeps/gnu/errlist.c:1181
+msgid "Invalid request descriptor"
+msgstr "Ugyldig forespørgseldeskriptor"
-#: nis/ypclnt.c:821
-msgid "Unknown NIS error code"
-msgstr "Ukendt NIS-fejlkode"
+#: sysdeps/gnu/errlist.c:1189
+msgid "Exchange full"
+msgstr "Veksel fuld"
-#: nis/ypclnt.c:863
-msgid "Internal ypbind error"
-msgstr "Intern ypbind-fejl"
+#: sysdeps/gnu/errlist.c:1197
+msgid "No anode"
+msgstr "Ingen anode"
-#: nis/ypclnt.c:865
-msgid "Domain not bound"
-msgstr "Domænet er ikke bundet"
+#: sysdeps/gnu/errlist.c:1205
+msgid "Invalid request code"
+msgstr "Ugyldig adgangskode"
-#: nis/ypclnt.c:867
-msgid "System resource allocation failure"
-msgstr "Kunne ikke tildele systemressource"
+#: sysdeps/gnu/errlist.c:1213
+msgid "Invalid slot"
+msgstr "Ugyldig plads"
-#: nis/ypclnt.c:869
-msgid "Unknown ypbind error"
-msgstr "Ukendt ypbind-fejl"
+#: sysdeps/gnu/errlist.c:1221
+msgid "File locking deadlock error"
+msgstr "Fillåsning fejlede på grund af baglås"
-#: nis/ypclnt.c:908
-msgid "yp_update: cannot convert host to netname\n"
-msgstr "yp_update: kan ikke konvertere vært til netnavn\n"
+#: sysdeps/gnu/errlist.c:1229
+msgid "Bad font file format"
+msgstr "Ugyldigt format på skrifttypefil"
-#: nis/ypclnt.c:920
-msgid "yp_update: cannot get server address\n"
-msgstr "yp_update: kan ikke hente tjeneradresse\n"
+#: sysdeps/gnu/errlist.c:1237
+msgid "Machine is not on the network"
+msgstr "Maskinen er ikke på netværket"
-#: nscd/cache.c:88
-msgid "while allocating hash table entry"
-msgstr "under allokering af hashtabel-indtastninger"
+#: sysdeps/gnu/errlist.c:1245
+msgid "Package not installed"
+msgstr "Pakken er ikke installeret"
-#: nscd/cache.c:150 nscd/connections.c:187
-#, c-format
-msgid "cannot stat() file `%s': %s"
-msgstr "kan ikke udføre stat() på fil '%s': %s"
+#: sysdeps/gnu/errlist.c:1253
+msgid "Advertise error"
+msgstr "Annonceringsfejl"
-#: nscd/connections.c:146
-msgid "cannot read configuration file; this is fatal"
-msgstr "kan ikke læse konfigurationsfil; dette er fatalt"
+#: sysdeps/gnu/errlist.c:1261
+msgid "Srmount error"
+msgstr "Srmount-fejl"
-#: nscd/connections.c:153
-msgid "Cannot run nscd in secure mode as unprivileged user"
-msgstr "Kan ikke køre nscd i sikker tilstand som upriviligieret bruger"
+#: sysdeps/gnu/errlist.c:1269
+msgid "Communication error on send"
+msgstr "Kommunikationsfejl ved sending"
-#: nscd/connections.c:175
-#, c-format
-msgid "while allocating cache: %s"
-msgstr "under allokering af buffer: %s"
+#: sysdeps/gnu/errlist.c:1277
+msgid "RFS specific error"
+msgstr "RFS-specifik fejl"
-#: nscd/connections.c:200
-#, c-format
-msgid "cannot open socket: %s"
-msgstr "kan ikke åbne sokkel: %s"
+#: sysdeps/gnu/errlist.c:1285
+msgid "Name not unique on network"
+msgstr "Navnet er ikke unikt på netværket"
-#: nscd/connections.c:218
-#, c-format
-msgid "cannot enable socket to accept connections: %s"
-msgstr "kan ikke få sokkel til at acceptere forbindelser: %s"
+#: sysdeps/gnu/errlist.c:1293
+msgid "File descriptor in bad state"
+msgstr "Fildeskriptor i dårlig tilstand"
-#: nscd/connections.c:260
-#, c-format
-msgid "handle_request: request received (Version = %d)"
-msgstr "handle_request: forespørgsel modtaget (version = %d)"
+#: sysdeps/gnu/errlist.c:1301
+msgid "Remote address changed"
+msgstr "Fjernadresse ændret"
-#: nscd/connections.c:266
-#, c-format
-msgid "cannot handle old request version %d; current version is %d"
-msgstr "kan ikke håndtere gammel forespørgsel af version %d. Nuværende version er %d"
+#: sysdeps/gnu/errlist.c:1309
+msgid "Can not access a needed shared library"
+msgstr "Kan ikke få adgang til et nødvendigt delt bibliotek"
-#: nscd/connections.c:304 nscd/connections.c:326
-#, c-format
-msgid "cannot write result: %s"
-msgstr "kan ikke udskrive resultat: '%s'"
+#: sysdeps/gnu/errlist.c:1317
+msgid "Accessing a corrupted shared library"
+msgstr "Får adgang til et skadet delt bibliotek"
-#: nscd/connections.c:405 nscd/connections.c:499
-#, c-format
-msgid "error getting caller's id: %s"
-msgstr "fejl ved forespørgsel på opkaldets id: %s"
+#: sysdeps/gnu/errlist.c:1325
+msgid ".lib section in a.out corrupted"
+msgstr ".lib-sektion i a.out skadet"
-#: nscd/connections.c:471
-#, c-format
-msgid "while accepting connection: %s"
-msgstr "under accept af forbindelse: %s"
+#: sysdeps/gnu/errlist.c:1333
+msgid "Attempting to link in too many shared libraries"
+msgstr "Forsøger at indlænke for mange delte biblioteker"
-#: nscd/connections.c:482
-#, c-format
-msgid "short read while reading request: %s"
-msgstr "afkortet læsning ved læsning af forespørgsel: %s"
+#: sysdeps/gnu/errlist.c:1341
+msgid "Cannot exec a shared library directly"
+msgstr "Kan ikke eksekvere et delt bibliotek direkte"
-#: nscd/connections.c:518
-#, c-format
-msgid "key length in request too long: %d"
-msgstr "nøglelængde i forespørgsel for lang: %d"
+#: sysdeps/gnu/errlist.c:1349
+msgid "Streams pipe error"
+msgstr "Strøm-kanalfejl"
-#: nscd/connections.c:532
-#, c-format
-msgid "short read while reading request key: %s"
-msgstr "afkortet læsning ved læsning af forespørgsels-nøgle: %s"
+#: sysdeps/gnu/errlist.c:1357
+msgid "Structure needs cleaning"
+msgstr "Strukturen trænger til oprydning"
-#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
-#, c-format
-msgid "Failed to run nscd as user '%s'"
-msgstr "Kunne ikke køre nscd som bruger \"%s\""
+#: sysdeps/gnu/errlist.c:1365
+msgid "Not a XENIX named type file"
+msgstr "Ikke en XENIX navngiven typefil"
-#: nscd/connections.c:612
-msgid "getgrouplist failed"
-msgstr "getgrouplist mislykkedes"
+#: sysdeps/gnu/errlist.c:1373
+msgid "No XENIX semaphores available"
+msgstr "Ingen XENIX-semaforer tilgængelige"
-#: nscd/connections.c:625
-msgid "setgroups failed"
-msgstr "setgroups mislykkedes"
+#: sysdeps/gnu/errlist.c:1381
+msgid "Is a named type file"
+msgstr "Er en navngiven filtype"
-#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
-msgid "while allocating key copy"
-msgstr "under allokering af nøglekopi"
+#: sysdeps/gnu/errlist.c:1389
+msgid "Remote I/O error"
+msgstr "I/O-fejl på fjernmaskine"
-#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
-msgid "while allocating cache entry"
-msgstr "under allokering af nærbuffer-indtastninger"
+#: sysdeps/gnu/errlist.c:1397
+msgid "No medium found"
+msgstr "Medie ikke fundet"
-#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
-#, c-format
-msgid "short write in %s: %s"
-msgstr "afkortet skrivning i %s: %s"
+#: sysdeps/gnu/errlist.c:1405
+msgid "Wrong medium type"
+msgstr "Forkert medietype"
-#: nscd/grpcache.c:218
-#, c-format
-msgid "Haven't found \"%s\" in group cache!"
-msgstr "Har ikke fundet '%s' i gruppe-nærbuffer!"
+#: sysdeps/gnu/errlist.c:1413
+msgid "Required key not available"
+msgstr "Obligatorisk nøgle ikke tilgængelig"
-#: nscd/grpcache.c:284
-#, c-format
-msgid "Invalid numeric gid \"%s\"!"
-msgstr "Ugyldigt numerisk gruppe-id (gid) \"%s\"!"
+#: sysdeps/gnu/errlist.c:1421
+msgid "Key has expired"
+msgstr "Nøgle er udløbet"
-#: nscd/grpcache.c:291
-#, c-format
-msgid "Haven't found \"%d\" in group cache!"
-msgstr "Har ikke fundet '%d' i gruppe-nærbuffer!"
+#: sysdeps/gnu/errlist.c:1429
+msgid "Key has been revoked"
+msgstr "Nøglen er blevet tilbagekaldt"
-#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-#: nscd/hstcache.c:500
-#, c-format
-msgid "Haven't found \"%s\" in hosts cache!"
-msgstr "Har ikke fundet '%s' i værts-nærbuffer!"
+#: sysdeps/gnu/errlist.c:1437
+msgid "Key was rejected by service"
+msgstr "Nøglen blev afvist af tjeneste"
-#: nscd/nscd.c:85
-msgid "Read configuration data from NAME"
-msgstr "Læs konfigurationsdata fra NAVN"
+#: sysdeps/gnu/errlist.c:1445
+msgid "Owner died"
+msgstr "Ejeren døde"
-#: nscd/nscd.c:87
-msgid "Do not fork and display messages on the current tty"
-msgstr "Udspalt ikke ny proces og vis meddelelser på nuværende tty"
+#: sysdeps/gnu/errlist.c:1453
+msgid "State not recoverable"
+msgstr "Tilstanden kan ikke genskabes"
-#: nscd/nscd.c:88
-msgid "NUMBER"
-msgstr "NUMMER"
+#: sysdeps/mach/_strerror.c:57
+msgid "Error in unknown error system: "
+msgstr "Fejl i ukendt fejlsystem: "
-#: nscd/nscd.c:88
-msgid "Start NUMBER threads"
-msgstr "Start ANTAL tråde"
+#: sysdeps/posix/gai_strerror-strs.h:1
+msgid "Address family for hostname not supported"
+msgstr "Adressefamilien for værtsnavn er ikke understøttet"
-#: nscd/nscd.c:89
-msgid "Shut the server down"
-msgstr "Afbryd tjeneren"
+#: sysdeps/posix/gai_strerror-strs.h:2
+msgid "Temporary failure in name resolution"
+msgstr "Midlertidig fejl i navneopslag"
-#: nscd/nscd.c:90
-msgid "Print current configuration statistic"
-msgstr "Skriv nuværende konfigurationsstatistik ud"
+#: sysdeps/posix/gai_strerror-strs.h:3
+msgid "Bad value for ai_flags"
+msgstr "Ugyldig værdi for ai_flags"
-#: nscd/nscd.c:91
-msgid "TABLE"
-msgstr "TABEL"
+#: sysdeps/posix/gai_strerror-strs.h:4
+msgid "Non-recoverable failure in name resolution"
+msgstr "Uoverkommelig fejl i navneopslag"
-#: nscd/nscd.c:92
-msgid "Invalidate the specified cache"
-msgstr "Ugyldiggør den opgivne hurtigbuffer"
+#: sysdeps/posix/gai_strerror-strs.h:5
+msgid "ai_family not supported"
+msgstr "ai_family er ikke understøttet"
-#: nscd/nscd.c:93
-msgid "TABLE,yes"
-msgstr "TABEL,ja"
+#: sysdeps/posix/gai_strerror-strs.h:6
+msgid "Memory allocation failure"
+msgstr "Lagerallokeringsfejl"
-#: nscd/nscd.c:93
-msgid "Use separate cache for each user"
-msgstr "Brug separat buffer for hver bruger"
+#: sysdeps/posix/gai_strerror-strs.h:7
+msgid "No address associated with hostname"
+msgstr "Ingen adresse associeret med værtsnavn"
-#: nscd/nscd.c:98
-msgid "Name Service Cache Daemon."
-msgstr "Dæmon for bufring af navnetjeneste"
+#: sysdeps/posix/gai_strerror-strs.h:8
+msgid "Name or service not known"
+msgstr "Navn eller tjeneste ukendt"
-#: nscd/nscd.c:131
-msgid "already running"
-msgstr "kører allerede"
+#: sysdeps/posix/gai_strerror-strs.h:9
+msgid "Servname not supported for ai_socktype"
+msgstr "Servname ikke understøttet for ai_socktype"
-#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
-msgid "Only root is allowed to use this option!"
-msgstr "Kun 'root' har lov til at bruge dette flag!"
+#: sysdeps/posix/gai_strerror-strs.h:10
+msgid "ai_socktype not supported"
+msgstr "ai_socktype er ikke understøttet"
-#: nscd/nscd_conf.c:83
-#, c-format
-msgid "Parse error: %s"
-msgstr "Fejl under tolkning: %s"
+#: sysdeps/posix/gai_strerror-strs.h:11
+msgid "System error"
+msgstr "Systemfejl"
-#: nscd/nscd_conf.c:166
-#, c-format
-msgid "Could not create log file \"%s\""
-msgstr "Kunne ikke oprette logfil '%s'"
+#: sysdeps/posix/gai_strerror-strs.h:12
+msgid "Processing request in progress"
+msgstr "Procesforespørgsel er under udførelse"
-#: nscd/nscd_conf.c:182
-msgid "Must specify user name for server-user option"
-msgstr "Brugernavn skal angives for server-bruger-mulighed"
+#: sysdeps/posix/gai_strerror-strs.h:13
+msgid "Request canceled"
+msgstr "Forespørgsel annulleret"
-#: nscd/nscd_conf.c:187
-#, c-format
-msgid "Unknown option: %s %s %s"
-msgstr "Ukendt flag: %s %s %s"
+#: sysdeps/posix/gai_strerror-strs.h:14
+msgid "Request not canceled"
+msgstr "Forespørgsel ikke annulleret"
-#: nscd/nscd_stat.c:87
-#, c-format
-msgid "cannot write statistics: %s"
-msgstr "kan ikke udskrive statistik: '%s'"
+#: sysdeps/posix/gai_strerror-strs.h:15
+msgid "All requests done"
+msgstr "Alle forespørgsler udført"
-#: nscd/nscd_stat.c:105
-msgid "nscd not running!\n"
-msgstr "nscd kører ikke!\n"
+#: sysdeps/posix/gai_strerror-strs.h:16
+msgid "Interrupted by a signal"
+msgstr "Afbrudt af et signal"
-#: nscd/nscd_stat.c:116
-msgid "write incomplete"
-msgstr "skrivning ufuldstændig"
+#: sysdeps/posix/gai_strerror-strs.h:17
+msgid "Parameter string not correctly encoded"
+msgstr "Parameterstreng fejlagtigt kodet"
-#: nscd/nscd_stat.c:128
-msgid "cannot read statistics data"
-msgstr "kan ikke læse statistikdata"
+#: sysdeps/unix/siglist.c:26
+msgid "Signal 0"
+msgstr "Signal 0"
-#: nscd/nscd_stat.c:131
-#, c-format
-msgid ""
-"nscd configuration:\n"
-"\n"
-"%15d server debug level\n"
-msgstr ""
-"nscd-konfiguration:\n"
-"\n"
-"%15d debugniveau for tjener\n"
+#: sysdeps/unix/siglist.c:32
+msgid "IOT trap"
+msgstr "IOT-fælde"
-#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
-msgid " no"
-msgstr " nej"
+#: sysdeps/unix/sysv/linux/i386/readelflib.c:49
+#, c-format
+msgid "%s is for unknown machine %d.\n"
+msgstr "%s er til ukendt maskine %d.\n"
-#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
-msgid " yes"
-msgstr " ja"
+#: sysdeps/unix/sysv/linux/ia64/makecontext.c:63
+#, c-format
+msgid "makecontext: does not know how to handle more than 8 arguments\n"
+msgstr "makecontext: véd ikke hvordan mere end 8 argumenter skal behandles\n"
-#: nscd/nscd_stat.c:154
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
#, c-format
msgid ""
+"Usage: lddlibc4 FILE\n"
"\n"
-"%s cache:\n"
-"\n"
-"%15s cache is enabled\n"
-"%15Zd suggested size\n"
-"%15ld seconds time to live for positive entries\n"
-"%15ld seconds time to live for negative entries\n"
-"%15ld cache hits on positive entries\n"
-"%15ld cache hits on negative entries\n"
-"%15ld cache misses on positive entries\n"
-"%15ld cache misses on negative entries\n"
-"%15ld%% cache hit rate\n"
-"%15s check /etc/%s for changes\n"
msgstr ""
+"Brug: lddlibc4 FIL\n"
"\n"
-"%s hurtigbuffer (cache):\n"
-"\n"
-"%15s hurtigbuffer er på\n"
-"%15Zd foreslået størrelse\n"
-"%15ld sekunders levetid for positive indtastninger\n"
-"%15ld sekunders levetid for negative indtastninger\n"
-"%15ld træf i hurtigbuffer for positive indtastninger\n"
-"%15ld træf i hurtigbuffer for negative indtastninger\n"
-"%15ld bom i hurtigbuffer for positive indtastninger\n"
-"%15ld bom i hurtigbuffer for negative indtastninger\n"
-"%15ld%% træfrate for hurtigbuffer\n"
-"%15s tjek /etc/%s for ændringer\n"
-#: nscd/pwdcache.c:214
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
-msgid "Haven't found \"%s\" in password cache!"
-msgstr "Har ikke fundet '%s' i adgangskode-nærbuffer!"
+msgid "cannot open `%s'"
+msgstr "kan ikke åbne '%s'"
-#: nscd/pwdcache.c:280
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
-msgid "Invalid numeric uid \"%s\"!"
-msgstr "Ugyldig numerisk bruger-id (uid) \"%s\"!"
+msgid "cannot read header from `%s'"
+msgstr "kan ikke læse hoved fra '%s'"
-#: nscd/pwdcache.c:287
-#, c-format
-msgid "Haven't found \"%d\" in password cache!"
-msgstr "Har ikke fundet '%d' i adgangskode-nærbuffer!"
+#: timezone/zdump.c:210
+msgid "lacks alphabetic at start"
+msgstr "mangler alfabetisk tegn i begyndelsen"
-#: elf/../sysdeps/generic/dl-sysdep.c:357
-msgid "cannot create capability list"
-msgstr "kan ikke oprette egenskabsliste"
+#: timezone/zdump.c:212
+msgid "has fewer than 3 alphabetics"
+msgstr "har mindre end 3 alfabetiske tegn"
-#: elf/../sysdeps/generic/readelflib.c:35
-#, c-format
-msgid "file %s is truncated\n"
-msgstr "Fil %s er afkortet\n"
+#: timezone/zdump.c:214
+msgid "has more than 6 alphabetics"
+msgstr "har mere end 6 alfabetiske tegn"
-#: elf/../sysdeps/generic/readelflib.c:67
-#, c-format
-msgid "%s is a 32 bit ELF file.\n"
-msgstr "%s er en 32-bit ELF-fil.\n"
+#: timezone/zdump.c:222
+msgid "differs from POSIX standard"
+msgstr "afviger fra POSIX-standard"
-#: elf/../sysdeps/generic/readelflib.c:69
+#: timezone/zdump.c:228
#, c-format
-msgid "%s is a 64 bit ELF file.\n"
-msgstr "%s er en 64-bit ELF-fil.\n"
+msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
+msgstr "%s: advarsel: zone \"%s\" forkortelse \"%s\": %s\n"
-#: elf/../sysdeps/generic/readelflib.c:71
+#: timezone/zdump.c:279
#, c-format
-msgid "Unknown ELFCLASS in file %s.\n"
-msgstr "Ukendt ELFCLASS i filen %s.\n"
-
-#: elf/../sysdeps/generic/readelflib.c:78
-#, c-format
-msgid "%s is not a shared object file (Type: %d).\n"
-msgstr "%s er ikke en delt objektfil (Type: %d).\n"
-
-#: elf/../sysdeps/generic/readelflib.c:109
-msgid "more than one dynamic segment\n"
-msgstr "mere end ét dynamisk segment\n"
+msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
+msgstr "%s: brug er %s [ --version ] [ -v ] [ -c [lavtår,]højtår ] zonenavn ...\n"
-#: elf/../sysdeps/unix/sysv/linux/i386/readelflib.c:49
+#: timezone/zdump.c:296
#, c-format
-msgid "%s is for unknown machine %d.\n"
-msgstr "%s er til ukendt maskine %d.\n"
-
-#: elf/cache.c:69
-msgid "unknown"
-msgstr "ukendt"
+msgid "%s: wild -c argument %s\n"
+msgstr "%s: argument \"%s\" til flaget -c har forkert format\n"
-#: elf/cache.c:105
-msgid "Unknown OS"
-msgstr "Ukendt OS"
-
-#: elf/cache.c:110
-#, c-format
-msgid ", OS ABI: %s %d.%d.%d"
-msgstr ", OS ABI: %s %d.%d.%d"
-
-#: elf/cache.c:136 elf/ldconfig.c:1045
-#, c-format
-msgid "Can't open cache file %s\n"
-msgstr "Kan ikke åbne hurtigbufferfil %s\n"
-
-#: elf/cache.c:148
-msgid "mmap of cache file failed.\n"
-msgstr "mmap af bufferfil fejlede\n"
-
-#: elf/cache.c:152 elf/cache.c:162
-msgid "File is not a cache file.\n"
-msgstr "Fil er ikke en bufferfil.\n"
-
-#: elf/cache.c:195 elf/cache.c:205
-#, c-format
-msgid "%d libs found in cache `%s'\n"
-msgstr "%d libs fundet i hurtigbuffer '%s'\n"
+#: timezone/zdump.c:387
+msgid "Error writing to standard output"
+msgstr "Fejl ved skrivning til standard ud"
-#: elf/cache.c:392
+#: timezone/zdump.c:410
#, c-format
-msgid "Can't remove old temporary cache file %s"
-msgstr "Kan ikke fjerne gammel midlertidig fil %s"
+msgid "%s: use of -v on system with floating time_t other than float or double\n"
+msgstr "%s: brug af -v på et system hvor time_t er et andet talformat end \"float\" eller \"double\"\n"
-#: elf/cache.c:399
+#: timezone/zic.c:388
#, c-format
-msgid "Can't create temporary cache file %s"
-msgstr "Kan ikke oprette midlertidig hurtigbufferfil %s"
-
-#: elf/cache.c:407 elf/cache.c:416 elf/cache.c:420
-msgid "Writing of cache data failed"
-msgstr "Udskrivning af bufferdata fejlede"
-
-#: elf/cache.c:424
-msgid "Writing of cache data failed."
-msgstr "Udskrivning af bufferdata fejlede."
+msgid "%s: Memory exhausted: %s\n"
+msgstr "%s: Lageret opbrugt: %s\n"
-#: elf/cache.c:431
+#: timezone/zic.c:434
#, c-format
-msgid "Changing access rights of %s to %#o failed"
-msgstr "Ændring af adgangsrettigheder for %s til %#o fejlede"
+msgid "\"%s\", line %d: %s"
+msgstr "'%s', linje %d: %s"
-#: elf/cache.c:436
+#: timezone/zic.c:437
#, c-format
-msgid "Renaming of %s to %s failed"
-msgstr "Omdøbning af %s til %s fejlede"
-
-#: elf/dl-close.c:128
-msgid "shared object not open"
-msgstr "delt objekt er ikke åbent"
-
-#: elf/dl-close.c:486 elf/dl-open.c:444
-msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
-msgstr ""
-"Generationstæller for TLS tilbagestillet! Vær sød at indsende fejlrapport med\n"
-"\"glibcbug\"-skriptet"
-
-#: elf/dl-deps.c:111 elf/dl-open.c:183
-msgid "DST not allowed in SUID/SGID programs"
-msgstr "DST er ikke tilladt i SUIT/SGID-programmer"
+msgid " (rule from \"%s\", line %d)"
+msgstr " (regel fra '%s', linje %d)"
-#: elf/dl-deps.c:124
-msgid "empty dynamics string token substitution"
-msgstr "tom dynamisk strengelement-erstatning"
+#: timezone/zic.c:449
+msgid "warning: "
+msgstr "advarsel: "
-#: elf/dl-deps.c:130
+#: timezone/zic.c:459
#, c-format
-msgid "cannot load auxiliary `%s' because of empty dynamic string token substitution\n"
+msgid ""
+"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
+"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
msgstr ""
-"kan ikke indlæse ekstra \"%s\" på grund af at substitution af\n"
-"\"dynamic string token\" er tom\n"
-
-#: elf/dl-deps.c:461
-msgid "cannot allocate dependency list"
-msgstr "kan ikke allokere afhængighedsliste"
-
-#: elf/dl-deps.c:494 elf/dl-deps.c:549
-msgid "cannot allocate symbol search list"
-msgstr "kan ikke allokere symbolsøgningsliste"
-
-#: elf/dl-deps.c:534
-msgid "Filters not supported with LD_TRACE_PRELINKING"
-msgstr "Filter understøttes ej med LD_TRACE_PRELINKING"
-
-#: elf/dl-error.c:75
-msgid "DYNAMIC LINKER BUG!!!"
-msgstr "FEJL I DYNAMISK LÆNKER!!!"
-
-#: elf/dl-error.c:108
-msgid "error while loading shared libraries"
-msgstr "fejl da delte biblioteker indlæstes"
-
-#: elf/dl-load.c:339
-msgid "cannot allocate name record"
-msgstr "Kan ikke allokere navnepost"
-
-#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
-msgid "cannot create cache for search path"
-msgstr "Kan ikke oprette buffer for søgesti"
-
-#: elf/dl-load.c:543
-msgid "cannot create RUNPATH/RPATH copy"
-msgstr "kan ikke oprette RUNPATH/RPATH kopi"
-
-#: elf/dl-load.c:598
-msgid "cannot create search path array"
-msgstr "kan ikke oprette tabel over søgestier"
-
-#: elf/dl-load.c:794
-msgid "cannot stat shared object"
-msgstr "kan ikke tage status på delt objekt"
-
-#: elf/dl-load.c:838
-msgid "cannot open zero fill device"
-msgstr "kan ikke åbne nulstil-enhed"
-
-#: elf/dl-load.c:847 elf/dl-load.c:1902
-msgid "cannot create shared object descriptor"
-msgstr "kan ikke oprette delt objektbeskriver"
-
-#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
-msgid "cannot read file data"
-msgstr "kan ikke indlæse fildata"
-
-#: elf/dl-load.c:906
-msgid "ELF load command alignment not page-aligned"
-msgstr "ELF-indlæsningskommandos tilpasning er ikke tilpasset siden"
-
-#: elf/dl-load.c:913
-msgid "ELF load command address/offset not properly aligned"
-msgstr "ELF-indlæsningskommandos adresse/tillæg er ikke tilpasset ordentligt"
-
-#: elf/dl-load.c:988
-msgid "cannot allocate TLS data structures for initial thread"
-msgstr "kan ikke oprette TLS-datastrukturer for første tråd"
-
-#: elf/dl-load.c:1012
-msgid "cannot handle TLS data"
-msgstr "kan ikke behandle TLS-data"
-
-#: elf/dl-load.c:1047
-msgid "failed to map segment from shared object"
-msgstr "klarede ikke at afbilde fra delt objekt'"
-
-#: elf/dl-load.c:1071
-msgid "cannot dynamically load executable"
-msgstr "kan ikke indlæse udførbare dynamisk"
-
-#: elf/dl-load.c:1132
-msgid "cannot change memory protections"
-msgstr "kan ikke ændre lagerbeskyttelser"
-
-#: elf/dl-load.c:1151
-msgid "cannot map zero-fill pages"
-msgstr "kan ikke mappe nulstil-sider"
-
-#: elf/dl-load.c:1169
-msgid "cannot allocate memory for program header"
-msgstr "Kan ikke allokere lager til programhoved"
-
-#: elf/dl-load.c:1200
-msgid "object file has no dynamic section"
-msgstr "objektfil har ingen dynamisk sektion"
-
-#: elf/dl-load.c:1240
-msgid "shared object cannot be dlopen()ed"
-msgstr "delt objekt kan ikke åbnes med dlopen()"
-
-#: elf/dl-load.c:1263
-msgid "cannot create searchlist"
-msgstr "kan ikke læse søgningsliste"
-
-#: elf/dl-load.c:1398
-msgid "file too short"
-msgstr "For kort fil"
-
-#: elf/dl-load.c:1421
-msgid "invalid ELF header"
-msgstr "ugyldigt ELF-hoved"
-
-#: elf/dl-load.c:1430
-msgid "ELF file data encoding not big-endian"
-msgstr "Kodning for ELF-fildata er ikke \"big-endian\""
-
-#: elf/dl-load.c:1432
-msgid "ELF file data encoding not little-endian"
-msgstr "Kodning for ELF-fildata er ikke \"little-endian\""
-
-#: elf/dl-load.c:1436
-msgid "ELF file version ident does not match current one"
-msgstr "ELF-filens version-identitet passer ikke med den aktuelle"
-
-#: elf/dl-load.c:1440
-msgid "ELF file OS ABI invalid"
-msgstr "ELF-filens OS ABI er ugyldig"
-
-#: elf/dl-load.c:1442
-msgid "ELF file ABI version invalid"
-msgstr "ELF-filens ABI-version er ugyldig"
-
-#: elf/dl-load.c:1445
-msgid "internal error"
-msgstr "Intern fejl"
-
-#: elf/dl-load.c:1452
-msgid "ELF file version does not match current one"
-msgstr "ELF-filens version passer ikke med den aktuelle"
-
-#: elf/dl-load.c:1460
-msgid "ELF file's phentsize not the expected size"
-msgstr "ELF-filens 'phentsize' er ikke den forventede størrelse"
-
-#: elf/dl-load.c:1466
-msgid "only ET_DYN and ET_EXEC can be loaded"
-msgstr "kun ET_DYN og ET_EXEC kan indlæses"
-
-#: elf/dl-load.c:1917
-msgid "cannot open shared object file"
-msgstr "kan ikke åbne delt objektfil"
-
-#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
-msgid "relocation error"
-msgstr "fejl ved relokering"
-
-#: elf/dl-open.c:111
-msgid "cannot extend global scope"
-msgstr "Kan ikke udvide globalt defineringområde"
-
-#: elf/dl-open.c:214
-msgid "empty dynamic string token substitution"
-msgstr "tom dynamisk strengelement-erstatning"
-
-#: elf/dl-open.c:351 elf/dl-open.c:362
-msgid "cannot create scope list"
-msgstr "kan ikke oprette omfangsliste"
-
-#: elf/dl-open.c:424
-msgid "cannot create TLS data structures"
-msgstr "kan ikke oprette datastrukturer for TLS"
-
-#: elf/dl-open.c:486
-msgid "invalid mode for dlopen()"
-msgstr "ugyldig modus for dlopen()"
-
-#: elf/dl-reloc.c:58
-msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-msgstr "delt objekt kan ikke åbnes med dlopen(): statisk TLS-hukommelse for lille"
-
-#: elf/dl-reloc.c:118
-msgid "cannot make segment writable for relocation"
-msgstr "Kan ikke gøre segment skrivbart for omflytning"
-
-#: elf/dl-reloc.c:219
-#, c-format
-msgid "%s: profiler found no PLTREL in object %s\n"
-msgstr "%s: profilereren fandt ingen PLTREL i objekt %s\n"
-
-#: elf/dl-reloc.c:231
-#, c-format
-msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
-msgstr "%s: profilereren fik slut på hukommelse for kopiering af PLTREL i %s\n"
-
-#: elf/dl-reloc.c:246
-msgid "cannot restore segment prot after reloc"
-msgstr "kan ikke genskabe segmentbeskyttelse efter omflytning"
-
-#: elf/dl-sym.c:74 elf/dl-sym.c:145
-msgid "RTLD_NEXT used in code not dynamically loaded"
-msgstr "RTLD_NEXT brugt i kode som ikke er dynamisk indlæst"
-
-#: elf/dl-version.c:302
-msgid "cannot allocate version reference table"
-msgstr "kan ikke allokere versionsreferencetabel"
-
-#: elf/ldconfig.c:122
-msgid "Print cache"
-msgstr "Udskriftsbuffer"
-
-#: elf/ldconfig.c:123
-msgid "Generate verbose messages"
-msgstr "Skriv udførlige meddelelser"
-
-#: elf/ldconfig.c:124
-msgid "Don't build cache"
-msgstr "Byg ikke hurtigbuffer"
-
-#: elf/ldconfig.c:125
-msgid "Don't generate links"
-msgstr "Generér ikke lænker"
-
-#: elf/ldconfig.c:126
-msgid "Change to and use ROOT as root directory"
-msgstr "Skift til og brug ROOT som rod-katalog"
-
-#: elf/ldconfig.c:127
-msgid "Use CACHE as cache file"
-msgstr "Brug CACHE som bufferfil"
-
-#: elf/ldconfig.c:128
-msgid "Use CONF as configuration file"
-msgstr "Brug CONF som konfigurationsfil"
-
-#: elf/ldconfig.c:129
-msgid "Only process directories specified on the command line. Don't build cache."
-msgstr "Kun proces-kataloger angivet på kommandolinien. Bygger ikke buffer."
-
-#: elf/ldconfig.c:130
-msgid "Manually link individual libraries."
-msgstr "Lænk manuelt individuelle biblioteker"
-
-#: elf/ldconfig.c:131
-msgid "Format to use: new, old or compat (default)"
-msgstr "Format der skal bruges: ny, gammel eller kompatibel (standard)"
-
-#: elf/ldconfig.c:136
-msgid "Configure Dynamic Linker Run Time Bindings."
-msgstr "Konfigurerer værdier til Dynamisk Lænker"
-
-#: elf/ldconfig.c:294
-#, c-format
-msgid "Path `%s' given more than once"
-msgstr "Stien '%s' givet mere end én gang"
-
-#: elf/ldconfig.c:338
-#, c-format
-msgid "%s is not a known library type"
-msgstr "%s er ikke en kendt bibliotekstype"
-
-#: elf/ldconfig.c:356
-#, c-format
-msgid "Can't stat %s"
-msgstr "Kan ikke stat() %s"
-
-#: elf/ldconfig.c:426
-#, c-format
-msgid "Can't stat %s\n"
-msgstr "Kan ikke stat() %s\n"
-
-#: elf/ldconfig.c:436
-#, c-format
-msgid "%s is not a symbolic link\n"
-msgstr "%s er ikke en symbolsk lænke\n"
-
-#: elf/ldconfig.c:455
-#, c-format
-msgid "Can't unlink %s"
-msgstr "Kan ikke aflænke %s"
-
-#: elf/ldconfig.c:461
-#, c-format
-msgid "Can't link %s to %s"
-msgstr "Kan ikke lænke %s til %s"
-
-#: elf/ldconfig.c:467
-msgid " (changed)\n"
-msgstr " (ændret)\n"
+"%s: brug er %s [ --version ] [ -v ] [ -l lokaltid ] [ -p posixregler ] \\\n"
+"\t[ -d katalog ] [ -L skudsekunder ] [ -y årkontrolprogram ] [ filnavn ... ]\n"
-#: elf/ldconfig.c:469
-msgid " (SKIPPED)\n"
-msgstr " (UDELADT)\n"
+#: timezone/zic.c:494
+msgid "wild compilation-time specification of zic_t"
+msgstr "definitionen af zic_t ved kompilering er urimelig"
-#: elf/ldconfig.c:524
+#: timezone/zic.c:511
#, c-format
-msgid "Can't find %s"
-msgstr "Kan ikke finde %s"
+msgid "%s: More than one -d option specified\n"
+msgstr "%s: Mere end et -d-flag specificeret\n"
-#: elf/ldconfig.c:540
+#: timezone/zic.c:521
#, c-format
-msgid "Can't lstat %s"
-msgstr "Kan ikke lstat %s"
+msgid "%s: More than one -l option specified\n"
+msgstr "%s: Mere end et -l-flag specificeret\n"
-#: elf/ldconfig.c:547
+#: timezone/zic.c:531
#, c-format
-msgid "Ignored file %s since it is not a regular file."
-msgstr "Ignorerede filen %s da den ikke er en almindelig fil."
+msgid "%s: More than one -p option specified\n"
+msgstr "%s: Mere end et -p-flag specificeret\n"
-#: elf/ldconfig.c:555
+#: timezone/zic.c:541
#, c-format
-msgid "No link created since soname could not be found for %s"
-msgstr "Ingen lænke oprettet da .so-navn ikke kunne findes for %s"
+msgid "%s: More than one -y option specified\n"
+msgstr "%s: Mere end et -y-flag specificeret\n"
-#: elf/ldconfig.c:646
+#: timezone/zic.c:551
#, c-format
-msgid "Can't open directory %s"
-msgstr "Kan ikke åbne katalog %s"
+msgid "%s: More than one -L option specified\n"
+msgstr "%s: Mere end et -L-flag specificeret\n"
-#: elf/ldconfig.c:701 elf/ldconfig.c:748
-#, c-format
-msgid "Cannot lstat %s"
-msgstr "Kan ikke lstat %s"
+#: timezone/zic.c:600
+msgid "link to link"
+msgstr "lænke til lænke"
-#: elf/ldconfig.c:713
-#, c-format
-msgid "Cannot stat %s"
-msgstr "Kan ikke stat() %s"
+#: timezone/zic.c:665
+msgid "hard link failed, symbolic link used"
+msgstr "hård lænke fejlede, symbolsk lænke brugt"
-#: elf/ldconfig.c:770 elf/readlib.c:93
+#: timezone/zic.c:673
#, c-format
-msgid "Input file %s not found.\n"
-msgstr "Indputfilen %s ikke fundet\n"
+msgid "%s: Can't link from %s to %s: %s\n"
+msgstr "%s: Kan ikke oprette lænke fra %s til %s: %s\n"
-#: elf/ldconfig.c:804
-#, c-format
-msgid "libc5 library %s in wrong directory"
-msgstr "libc5-bibliotek %s i forkert katalog"
+#: timezone/zic.c:745 timezone/zic.c:747
+msgid "same rule name in multiple files"
+msgstr "samme regelnavn i flere filer"
-#: elf/ldconfig.c:807
-#, c-format
-msgid "libc6 library %s in wrong directory"
-msgstr "libc6-bibliotek %s i forkert katalog"
+#: timezone/zic.c:788
+msgid "unruly zone"
+msgstr "vanskelig zone"
-#: elf/ldconfig.c:810
+#: timezone/zic.c:795
#, c-format
-msgid "libc4 library %s in wrong directory"
-msgstr "libc4-bibliotek %s i forkert katalog"
+msgid "%s in ruleless zone"
+msgstr "%s i zone uden regel"
-#: elf/ldconfig.c:837
-#, c-format
-msgid "libraries %s and %s in directory %s have same soname but different type."
-msgstr "bibliotekerne %s og %s i kataloget %s har samme .so-navn, men forskellig type"
+#: timezone/zic.c:816
+msgid "standard input"
+msgstr "standard inddata"
-#: elf/ldconfig.c:940
+#: timezone/zic.c:821
#, c-format
-msgid "Can't open configuration file %s"
-msgstr "Kan ikke åbne konfigurationsfil %s"
+msgid "%s: Can't open %s: %s\n"
+msgstr "%s: Kan ikke åbne %s: %s\n"
-#: elf/ldconfig.c:1024
-msgid "Can't chdir to /"
-msgstr "Kan ikke chdir til /"
+#: timezone/zic.c:832
+msgid "line too long"
+msgstr "for lang linje"
-#: elf/ldconfig.c:1066
-#, c-format
-msgid "Can't open cache file directory %s\n"
-msgstr "Kan ikke åbne hurtigbufferkatalog %s\n"
+#: timezone/zic.c:852
+msgid "input line of unknown type"
+msgstr "inddatalinje af ukendt type"
-#: elf/readlib.c:99
+#: timezone/zic.c:868
#, c-format
-msgid "Cannot fstat file %s.\n"
-msgstr "Kan ikke fstat() fil %s\n"
+msgid "%s: Leap line in non leap seconds file %s\n"
+msgstr "%s: 'Leap'-linje i fil %s som ikke er skudsekundsfil\n"
-#: elf/readlib.c:109
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
-msgid "File %s is too small, not checked."
-msgstr "Fil %s er for lille, ikke afprøvet."
+msgid "%s: panic: Invalid l_value %d\n"
+msgstr "%s: panik: ugyldig l_value %d\n"
-#: elf/readlib.c:118
+#: timezone/zic.c:883
#, c-format
-msgid "Cannot mmap file %s.\n"
-msgstr "kan ikke mmap fil %s\n"
+msgid "%s: Error reading %s\n"
+msgstr "%s: Fejl ved læsning fra %s\n"
-#: elf/readlib.c:158
+#: timezone/zic.c:890
#, c-format
-msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
-msgstr "%s er ikke en ELF fil - den har de forkerte signaturtegn i starten.\n"
-
-#: elf/sprof.c:72
-msgid "Output selection:"
-msgstr "Udskriftsvalg:"
-
-#: elf/sprof.c:74
-msgid "print list of count paths and their number of use"
-msgstr "udskriv liste med tællestier og deres brugsantal"
-
-#: elf/sprof.c:76
-msgid "generate flat profile with counts and ticks"
-msgstr "generér flad profil med tællere og klokketik"
+msgid "%s: Error closing %s: %s\n"
+msgstr "%s: Fejl ved lukning af %s: %s\n"
-#: elf/sprof.c:77
-msgid "generate call graph"
-msgstr "generér kald-graf"
+#: timezone/zic.c:895
+msgid "expected continuation line not found"
+msgstr "forventet fortsættelseslinje ikke fundet"
-#: elf/sprof.c:84
-msgid "Read and display shared object profiling data"
-msgstr "Læs og vis profileringsdata for delt objekt"
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
+msgid "time overflow"
+msgstr "for stor tidsværdi"
-#: elf/sprof.c:87
-msgid "SHOBJ [PROFDATA]"
-msgstr "SHOBJ [PROFDATA]"
+#: timezone/zic.c:943
+msgid "24:00 not handled by pre-1998 versions of zic"
+msgstr "24:00 håndteres ikke af zic-versioner før 1998"
-#: elf/sprof.c:398
-#, c-format
-msgid "failed to load shared object `%s'"
-msgstr "klarede ikke at indlæse delt objekt '%s'"
+#: timezone/zic.c:946
+msgid "values over 24 hours not handled by pre-2007 versions of zic"
+msgstr "værdier større end 24 timer håndteres ikke af zic-versioner før 2007"
-#: elf/sprof.c:407
-msgid "cannot create internal descriptors"
-msgstr "kan ikke oprette interne deskriptorer"
+#: timezone/zic.c:959
+msgid "wrong number of fields on Rule line"
+msgstr "galt antal felter på 'Rule'-linje"
-#: elf/sprof.c:526
-#, c-format
-msgid "Reopening shared object `%s' failed"
-msgstr "Genåbning af delt objekt '%s' fejlede"
+#: timezone/zic.c:963
+msgid "nameless rule"
+msgstr "navnløs regel"
-#: elf/sprof.c:534
-msgid "mapping of section headers failed"
-msgstr "mapning af sektionsoverskrifter fejlede"
+#: timezone/zic.c:968
+msgid "invalid saved time"
+msgstr "ugyldig lagret tid"
-#: elf/sprof.c:544
-msgid "mapping of section header string table failed"
-msgstr "mapning af tabel med sektionsoverskriftstrenge fejlede"
+#: timezone/zic.c:989
+msgid "wrong number of fields on Zone line"
+msgstr "galt antal felter på 'Zone'-linje"
-#: elf/sprof.c:564
+#: timezone/zic.c:995
#, c-format
-msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
-msgstr "*** Filen '%s' er strippet: ingen detaljeret analyse mulig\n"
-
-#: elf/sprof.c:594
-msgid "failed to load symbol data"
-msgstr "klarede ikke at indlæse symboldata"
-
-#: elf/sprof.c:664
-msgid "cannot load profiling data"
-msgstr "kan ikke indlæse profileringsdata"
-
-#: elf/sprof.c:673
-msgid "while stat'ing profiling data file"
-msgstr "under stat() af profileringsdatafil"
+msgid "\"Zone %s\" line and -l option are mutually exclusive"
+msgstr "'Zone %s'-linje og flaget -l udelukker hinanden"
-#: elf/sprof.c:681
+#: timezone/zic.c:1003
#, c-format
-msgid "profiling data file `%s' does not match shared object `%s'"
-msgstr "profileringsdatafil '%s' passer ikke med del objekt '%s'"
-
-#: elf/sprof.c:692
-msgid "failed to mmap the profiling data file"
-msgstr "klarede ikke at mmap'e filen med profileringsdata"
-
-#: elf/sprof.c:700
-msgid "error while closing the profiling data file"
-msgstr "fejl ved lukning af datafilen for profilering"
-
-#: elf/sprof.c:709 elf/sprof.c:779
-msgid "cannot create internal descriptor"
-msgstr "kan ikke oprette intern deskriptor"
+msgid "\"Zone %s\" line and -p option are mutually exclusive"
+msgstr "'Zone %s'-linje og flaget -p udelukker hinanden"
-#: elf/sprof.c:755
+#: timezone/zic.c:1015
#, c-format
-msgid "`%s' is no correct profile data file for `%s'"
-msgstr "'%s' er ikke korrekt profildatafil for '%s'"
-
-#: elf/sprof.c:936 elf/sprof.c:988
-msgid "cannot allocate symbol data"
-msgstr "kan ikke allokere symboldata"
-
-#~ msgid "\t\t\t\t\t\t\t %s: value for field `%s' must be in range %d...%d"
-#~ msgstr "\t\t\t\t\t\t\t %s: værdier for felt '%s' skal være i området %d...%d"
-
-#~ msgid "Failed to look up user '%s' to run server as"
-#~ msgstr "Kunne ikke slå bruger '%s' op for at køre server som"
-
-#~ msgid "no filename for profiling data given and shared object `%s' has no soname"
-#~ msgstr "ikke noget filnavn for profileringsdata givet, og delt objekt '%s' har ikke noget .so-navn"
-
-#~ msgid "%s: Error writing "
-#~ msgstr "%s: Fejl ved skrivning til "
-
-#~ msgid "CDS"
-#~ msgstr "CDS"
-
-#~ msgid "DNANS"
-#~ msgstr "DNANS"
-
-#~ msgid "DNS"
-#~ msgstr "DNS"
-
-#~ msgid "IVY"
-#~ msgstr "IVY"
-
-#~ msgid "NIS"
-#~ msgstr "NIS"
-
-#~ msgid "SUNYP"
-#~ msgstr "SUNYP"
-
-#~ msgid "X500"
-#~ msgstr "X500"
-
-#~ msgid "XCHS"
-#~ msgstr "XCHS"
-
-#~ msgid "cannot load shared object file"
-#~ msgstr "kan ikke indlæse delt objektfil"
-
-#~ msgid "cannot read locale directory `%s'"
-#~ msgstr "kan ikke læse filkataloget for lokaler, '%s'"
-
-#~ msgid "fcntl: F_SETFD"
-#~ msgstr "fcntl: F_SETFD"
-
-#~ msgid "neither original nor target encoding specified"
-#~ msgstr "hverken original- eller mål-indkodning angivet"
-
-#~ msgid "original encoding not specified using `-f'"
-#~ msgstr "original indkodning ikke specificeret med '-f'"
-
-#~ msgid "standard output"
-#~ msgstr "standard udkanal"
-
-#~ msgid "target encoding not specified using `-t'"
-#~ msgstr "mål-indkodning ikke specificeret med '-t'"
-
-#~ msgid " done\n"
-#~ msgstr " færdig\n"
-
-#~ msgid "%s: cannot get modification time"
-#~ msgstr "%s: kan ikke finde modificeringstid"
-
-#~ msgid "Computing table size for character classes might take a while..."
-#~ msgstr "Beregning af tabelstørrelse for tegnklasser kan tage en stund..."
-
-#~ msgid "Computing table size for collation information might take a while..."
-#~ msgstr "Beregning af tabelstørrelse for sammenligningstabel kan tage en stund..."
-
-#~ msgid "Convert key to lower case"
-#~ msgstr "Konvertér nøgle til små bogstaver"
-
-#~ msgid "Create simple DB database from textual input."
-#~ msgstr "Lav en enkel DB-database fra tekst-indput."
-
-#~ msgid "Device not configured"
-#~ msgstr "Enheden er ikke konfigureret"
-
-#~ msgid "Do not print messages while building database"
-#~ msgstr "Skriv ikke meddelelser under opbygning af databasen"
-
-#~ msgid ""
-#~ "INPUT-FILE OUTPUT-FILE\n"
-#~ "-o OUTPUT-FILE INPUT-FILE\n"
-#~ "-u INPUT-FILE"
-#~ msgstr ""
-#~ "INDFIL UDFIL\n"
-#~ "-o UDFIL INDFIL\n"
-#~ "-u INDFIL"
-
-#~ msgid "Print content of database file, one entry a line"
-#~ msgstr "Skriv indholdet af en databasefil ud, en indtastning per linie"
-
-#~ msgid "`...' must only be used in `...' and `UNDEFINED' entries"
-#~ msgstr "'...' kan kun bruges i posterne '...' og 'UNDEFINED'"
-
-#~ msgid "`from' expected after first argument to `collating-element'"
-#~ msgstr "'from' forventet efter første argument til 'collating-element'"
-
-#~ msgid "`from' string in collation element declaration contains unknown character"
-#~ msgstr "'from'-streng i deklaration af sammenligningsselement indeholder ukendt tegn"
-
-#~ msgid "buffer overflow"
-#~ msgstr "overfyldt buffer"
-
-#~ msgid "cannot insert collation element `%.*s'"
-#~ msgstr "kan ikke indsætte sammenligningselement '%.*s'"
-
-#~ msgid "cannot insert into result table"
-#~ msgstr "kan ikke indsætte i resultattabel"
-
-#~ msgid "cannot insert new collating symbol definition: %s"
-#~ msgstr "kan ikke indsætte ny definition af sammenligningssymbol: %s"
-
-#~ msgid "cannot open database file `%s': %s"
-#~ msgstr "kan ikke åbne databasefil '%s': %s"
-
-#~ msgid "category data requested more than once: should not happen"
-#~ msgstr "kategoridata forespurgt mere end en gang: burde ikke ske"
+msgid "duplicate zone name %s (file \"%s\", line %d)"
+msgstr "duplikér zonenavn %s (fil '%s', linje %d)"
-#~ msgid "collation element `%.*s' appears more than once: ignore line"
-#~ msgstr "sammenligningselement '%.*s' findes mere end en gang: linie ignoreret"
+#: timezone/zic.c:1031
+msgid "wrong number of fields on Zone continuation line"
+msgstr "galt antal felter på 'Zone'-fortsættelseslinje"
-#~ msgid "collation symbol `%.*s' appears more than once: ignore line"
-#~ msgstr "sammenligningssymbol '%.*s' findes mere end en gang: linie ignoreret"
+#: timezone/zic.c:1071
+msgid "invalid UTC offset"
+msgstr "ugyldig UTC-forskydning"
-#~ msgid "collation symbol expected after `%s'"
-#~ msgstr "sammenligningssymbol forventet efter '%s'"
+#: timezone/zic.c:1074
+msgid "invalid abbreviation format"
+msgstr "ugyldig forkortelsesformat"
-#~ msgid "duplicate character name `%s'"
-#~ msgstr "duplikeret tegnnavn '%s'"
+#: timezone/zic.c:1103
+msgid "Zone continuation line end time is not after end time of previous line"
+msgstr "Sluttiden på fortsætningslinjen til en zone kommer før sluttiden på foregående linje"
-#~ msgid "duplicate collating element definition"
-#~ msgstr "duplikeret definition af sammenligningselement"
+#: timezone/zic.c:1131
+msgid "wrong number of fields on Leap line"
+msgstr "galt antal felter på 'Leap'-linje"
-#~ msgid "duplicate key"
-#~ msgstr "duplikeret nøgle"
+#: timezone/zic.c:1140
+msgid "invalid leaping year"
+msgstr "ugyldigt skudår"
-#~ msgid "empty weight name: line ignored"
-#~ msgstr "tomt vægtnavn: linie ignoreret"
+#: timezone/zic.c:1160 timezone/zic.c:1266
+msgid "invalid month name"
+msgstr "ugyldigt månedsnavn"
-#~ msgid "end point of ellipsis range is bigger then start"
-#~ msgstr "slutværdien for ellipseintervallet er større end startværdien"
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
+msgid "invalid day of month"
+msgstr "ugyldig dag i måneden"
-#~ msgid "error while inserting collation element into hash table"
-#~ msgstr "fejl ved indsætning af sammenligningselement i hashtabellen"
+#: timezone/zic.c:1178
+msgid "time before zero"
+msgstr "tid før nul"
-#~ msgid "field `%s' in category `%s' not defined"
-#~ msgstr "feltet '%s' i kategorien '%s' er ikke defineret"
+#: timezone/zic.c:1182
+msgid "time too small"
+msgstr "tid for lille"
-#~ msgid "field `%s' in category `%s' undefined"
-#~ msgstr "feltet '%s' i kategorien '%s' er udefineret"
+#: timezone/zic.c:1186
+msgid "time too large"
+msgstr "tid for stor"
-#~ msgid "from-value of `collating-element' must be a string"
-#~ msgstr "fra-værdi for 'collating-element' skal være en streng"
+#: timezone/zic.c:1190 timezone/zic.c:1295
+msgid "invalid time of day"
+msgstr "ugyldig tid på dagen"
-#~ msgid "illegal character constant in string"
-#~ msgstr "ulovlig tegnkonstant i streng"
+#: timezone/zic.c:1209
+msgid "illegal CORRECTION field on Leap line"
+msgstr "ugyldigt 'CORRECTION'-felt på 'Leap'-linje"
-#~ msgid "illegal collation element"
-#~ msgstr "ulovligt sammenligningselement"
+#: timezone/zic.c:1214
+msgid "illegal Rolling/Stationary field on Leap line"
+msgstr "ugyldigt 'Rolling/Stationary'-felt på 'Leap'-linje"
-#~ msgid "incorrectly formatted file"
-#~ msgstr "forkert formatteret fil"
+#: timezone/zic.c:1230
+msgid "wrong number of fields on Link line"
+msgstr "forkert antal felter på 'Link'-linje"
-#~ msgid "line after ellipsis must contain character definition"
-#~ msgstr "linie efter '...' skal indeholde tegndefinition"
+#: timezone/zic.c:1234
+msgid "blank FROM field on Link line"
+msgstr "tomt 'FROM'-felt på 'Link'-linje"
-#~ msgid "line before ellipsis does not contain definition for character constant"
-#~ msgstr "linie foran '...' indeholder ikke definition for tegnkonstant"
+#: timezone/zic.c:1238
+msgid "blank TO field on Link line"
+msgstr "tomt 'TO'-felt på 'Link'-linje"
-#~ msgid "locale file `%s', used in `copy' statement, not found"
-#~ msgstr "lokalefil '%s', brugt i 'copy', ikke fundet"
+#: timezone/zic.c:1316
+msgid "invalid starting year"
+msgstr "ugyldigt startår"
-#~ msgid "memory exhausted\n"
-#~ msgstr "lageret opbrugt\n"
+#: timezone/zic.c:1338
+msgid "invalid ending year"
+msgstr "ugyldigt slutår"
-#~ msgid "no repertoire map specified: cannot proceed"
-#~ msgstr "repertoiretabel ikke specificeret: kan ikke fortsætte"
+#: timezone/zic.c:1342
+msgid "starting year greater than ending year"
+msgstr "startår er højere end slutår"
-#~ msgid "no weight defined for symbol `%s'"
-#~ msgstr "ingen vægt defineret for symbol '%s'"
+#: timezone/zic.c:1349
+msgid "typed single year"
+msgstr "indtastede enkelt år"
-#~ msgid "problems while reading `%s'"
-#~ msgstr "problem ved læsning af '%s'"
+#: timezone/zic.c:1384
+msgid "invalid weekday name"
+msgstr "ugyldigt ugedagsnavn"
-#~ msgid "symbol for multicharacter collating element `%.*s' duplicates other element definition"
-#~ msgstr ""
-#~ "symbol for flertegnssammenligningsselement '%.*s' duplikerer en anden\n"
-#~ "elementdefinition"
+#: timezone/zic.c:1562
+#, c-format
+msgid "%s: Can't remove %s: %s\n"
+msgstr "%s: Kan ikke fjerne %s: %s\n"
-#~ msgid "symbol for multicharacter collating element `%.*s' duplicates other symbol definition"
-#~ msgstr ""
-#~ "symbol for flertegnssammenligningselement '%.*s' duplikerer en anden\n"
-#~ "symboldefinition"
+#: timezone/zic.c:1572
+#, c-format
+msgid "%s: Can't create %s: %s\n"
+msgstr "%s: Kan ikke oprette %s: %s\n"
-#~ msgid "symbol for multicharacter collating element `%.*s' duplicates symbol definition"
-#~ msgstr ""
-#~ "symbol for flertegnssammenligningselement '%.*s' duplikerer\n"
-#~ "symboldefinition"
+#: timezone/zic.c:1722
+#, c-format
+msgid "%s: Error writing %s\n"
+msgstr "%s: Fejl ved skrivning til %s\n"
-#~ msgid "symbol for multicharacter collating element `%.*s' duplicates symbolic name in charset"
-#~ msgstr ""
-#~ "symbol for flertegnssammenligningselement '%.*s' duplikerer\n"
-#~ "symbolnavn i tegnsæt"
+#: timezone/zic.c:2015
+msgid "no POSIX environment variable for zone"
+msgstr "ingen POSIX-miljøvariabel for zone"
-#~ msgid "syntax error in `order_start' directive"
-#~ msgstr "syntaksfejl i nøgleordet 'order_start'"
+#: timezone/zic.c:2172
+msgid "can't determine time zone abbreviation to use just after until time"
+msgstr "kan ikke afgøre tidszoneforkortelse for brug lige efter 'until'-tid"
-#~ msgid "syntax error in character class definition"
-#~ msgstr "syntaksfejl i definition af tegnklasse"
+#: timezone/zic.c:2218
+msgid "too many transitions?!"
+msgstr "for mange overgange?!"
-#~ msgid "syntax error in character conversion definition"
-#~ msgstr "syntaksfejl i definition af tegnkonvertering"
+#: timezone/zic.c:2237
+msgid "internal error - addtype called with bad isdst"
+msgstr "intern fejl - addtype kaldt med dårlig isdst"
-#~ msgid "syntax error in collating order definition"
-#~ msgstr "syntaksfejl i definition af sammenligningssortering"
+#: timezone/zic.c:2241
+msgid "internal error - addtype called with bad ttisstd"
+msgstr "intern fejl - addtype kaldt med dårlig ttisstd"
-#~ msgid "syntax error in collation definition"
-#~ msgstr "syntaksfejl i definition af sammenligning"
+#: timezone/zic.c:2245
+msgid "internal error - addtype called with bad ttisgmt"
+msgstr "intern fejl - addtype kaldt med dårlig ttisgmt"
-#~ msgid "syntax error in definition of LC_CTYPE category"
-#~ msgstr "syntaksfejl i definition af kategorien LC_CTYPE"
+#: timezone/zic.c:2264
+msgid "too many local time types"
+msgstr "for mange lokale tidstyper"
-#~ msgid "syntax error in message locale definition"
-#~ msgstr "syntaksfejl i definition af meddelelseslokale"
+#: timezone/zic.c:2268
+msgid "UTC offset out of range"
+msgstr "UTC-forskel udenfor interval"
-#~ msgid "syntax error in monetary locale definition"
-#~ msgstr "syntaksfejl i definition af monetærlokale"
+#: timezone/zic.c:2296
+msgid "too many leap seconds"
+msgstr "for mange skudsekunder"
-#~ msgid "syntax error in numeric locale definition"
-#~ msgstr "syntaksfejl i definition af numerisk lokale"
+#: timezone/zic.c:2302
+msgid "repeated leap second moment"
+msgstr "repeteret skudsekunds-tidspunkt"
-#~ msgid "syntax error in order specification"
-#~ msgstr "syntaksfejl i sorteringsspecifikation"
+#: timezone/zic.c:2354
+msgid "Wild result from command execution"
+msgstr "Vildt resultat fra eksekvering af kommando"
-#~ msgid "syntax error in time locale definition"
-#~ msgstr "syntaksfejl i definition af tidslokale"
+#: timezone/zic.c:2355
+#, c-format
+msgid "%s: command was '%s', result was %d\n"
+msgstr "%s: kommandoen var '%s', resultatet blev %d\n"
-#~ msgid "too many character classes defined"
-#~ msgstr "for mange tegnklasser defineret"
+#: timezone/zic.c:2453
+msgid "Odd number of quotation marks"
+msgstr "Ulige antal anførselstegn"
-#~ msgid "too many weights"
-#~ msgstr "for mange vægte"
+#: timezone/zic.c:2542
+msgid "use of 2/29 in non leap-year"
+msgstr "bruger 29/2 i ikke-skudår"
-#~ msgid "two lines in a row containing `...' are not allowed"
-#~ msgstr "to linier efter hinanden med '...' er ikke tilladt"
+#: timezone/zic.c:2577
+msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
+msgstr "reglen går udenfor start/slut på måned, fungerer ikke på zic-versioner fra før 2004"
-#~ msgid "unknown character in field `%s' of category `%s'"
-#~ msgstr "ukendt tegn i felt '%s' i kategori '%s'"
+#: timezone/zic.c:2609
+msgid "time zone abbreviation lacks alphabetic at start"
+msgstr "tidszoneforkortelse mangler alfabetisk tegn i begyndelsen"
-#~ msgid "unknown collation directive"
-#~ msgstr "ukendt sammenligningssnøgleord"
+#: timezone/zic.c:2611
+msgid "time zone abbreviation has more than 3 alphabetics"
+msgstr "tidszoneforkortelse har mere end 3 alfabetiske tegn"
-#~ msgid "unknown symbol `%.*s': line ignored"
-#~ msgstr "ukendt symbol '%.*s': linie ignoreret"
+#: timezone/zic.c:2613
+msgid "time zone abbreviation has too many alphabetics"
+msgstr "tidszoneforkortelse har for mange alfabetiske tegn"
-#~ msgid "unterminated weight name"
-#~ msgstr "uafsluttet vægtnavn"
+#: timezone/zic.c:2623
+msgid "time zone abbreviation differs from POSIX standard"
+msgstr "tidszoneforkortelse afviger fra POSIX-standarden"
-#~ msgid "value for <%s> must lie between 1 and 4"
-#~ msgstr "værdien på <%s> skal være mellem 1 og 4"
+#: timezone/zic.c:2635
+msgid "too many, or too long, time zone abbreviations"
+msgstr "for mange eller for lange tidszoneforkortelser"
-#~ msgid "value for field `%s' in category `%s' must not be the empty string"
-#~ msgstr "værdien for feltet '%s' i kategorien '%s' må ikke være en tom streng"
+#: timezone/zic.c:2676
+#, c-format
+msgid "%s: Can't create directory %s: %s\n"
+msgstr "%s: Kan ikke oprette filkatalog %s: %s\n"
-#~ msgid "value of <mb_cur_max> must be greater than the value of <mb_cur_min>"
-#~ msgstr "værdien af <mb_cur_max> skal være større end værdien af <mb_cur_min>"
-
-#~ msgid "values for field `%s' in category `%s' must be smaller than 127"
-#~ msgstr "værdien for feltet '%s' i kategorien '%s' skal være mindre end 127"
-
-#~ msgid "while reading database"
-#~ msgstr "da databasen blev læst"
-
-#~ msgid "while writing database file"
-#~ msgstr "under skrivning til databasefil"
-
-#~ msgid "%s: only one `include' instruction allowed"
-#~ msgstr "%s: kun én 'include'-instruktion tilladt"
-
-#~ msgid "Can't chroot to %s"
-#~ msgstr "Kan ikke chroot til %s"
-
-#~ msgid "No usable database library found."
-#~ msgstr "Intet brugbart database-bibliotek fundet."
-
-#~ msgid "buffer for snprintf too small for %s/%s--file is ignored\n"
-#~ msgstr "buffer for snprintf for lille til %s/%s - fil ignoreret\n"
-
-#~ msgid "character <U%0*X> not in repertoire map"
-#~ msgstr "tegnet <Y%0*X> ikke defineret i tegntabellen"
-
-#~ msgid "error while adding collating element"
-#~ msgstr "fejl ved indsætning af sammenligningselement"
-
-#~ msgid "error while adding collating symbol"
-#~ msgstr "fejl under indsætning af sammenligningssymbol"
-
-#~ msgid "no output digits defined and none of the standard names in the repertoire"
-#~ msgstr "ingen uddata-cifre defineret, og ingen af standardnavnene i repertoiret"
-
-#~ msgid "symbol `%s' not in charmap"
-#~ msgstr "symbol '%s' ikke i tegntabel "
-
-#~ msgid "Cputime limit exceeded"
-#~ msgstr "Begrænsning af CPU-tid overskredet"
-
-#~ msgid "Filesize limit exceeded"
-#~ msgstr "Grænse for filstørrelse overskredet"
-
-#~ msgid "Illegal Instruction"
-#~ msgstr "Ulovlig instruktion (SIGILL)"
-
-#~ msgid "Trace/BPT trap"
-#~ msgstr "Sporings-/stoppunkts-fælde"
-
-#~ msgid ""
-#~ "Usage: %s [OPTION]... -o OUTPUT-FILE [INPUT-FILE]...\n"
-#~ " %s [OPTION]... [OUTPUT-FILE [INPUT-FILE]...]\n"
-#~ "Mandatory arguments to long options are mandatory for short options too.\n"
-#~ " -H, --header=NAME create C header file NAME containing symbol definitions\n"
-#~ " -h, --help display this help and exit\n"
-#~ " --new do not use existing catalog, force new output file\n"
-#~ " -o, --output=NAME write output to file NAME\n"
-#~ " -V, --version output version information and exit\n"
-#~ "If INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
-#~ "is -, output is written to standard output.\n"
-#~ msgstr ""
-#~ "Brug: %s [FLAG]... -o UDFIL [INDFIL]...\n"
-#~ " %s [FLAG]... [UDFIL [INDFIL]...]\n"
-#~ "Obligatoriske argumenter til lange flag er obligatoriske også for de korte\n"
-#~ " -H, --header=NAVN opret en C-headerfil med symboldefinitioner kaldet NAVN\n"
-#~ " -h, --help vis denne hjælpetekst og afslut\n"
-#~ " --new brug ikke eksisterende katalog, lav en ny udfil\n"
-#~ " -o, --output=NAVN skriv resultatet til filen NAVN\n"
-#~ " -V, --version vis programversion og afslut\n"
-#~ "Dersom INDFIL er -, læses inddata fra standard ind. Hvis UDFIL er -, skrives\n"
-#~ "resultatet til standard ud.\n"
-
-#~ msgid ""
-#~ "Usage: %s [OPTION]... INPUT-FILE OUTPUT-FILE\n"
-#~ " %s [OPTION]... -o OUTPUT-FILE INPUT-FILE\n"
-#~ " %s [OPTION]... -u INPUT-FILE\n"
-#~ "Mandatory arguments to long options are mandatory for short options too.\n"
-#~ " -f, --fold-case convert key to lower case\n"
-#~ " -h, --help display this help and exit\n"
-#~ " -o, --output=NAME write output to file NAME\n"
-#~ " --quiet don't print messages while building database\n"
-#~ " -u, --undo print content of database file, one entry a line\n"
-#~ " -V, --version output version information and exit\n"
-#~ "If INPUT-FILE is -, input is read from standard input.\n"
-#~ msgstr ""
-#~ "Brug: %s [FLAG]... INDFIL UDFIL\n"
-#~ " %s [FLAG]... -o UDFIL INDFIL\n"
-#~ " %s [FLAG]... -u INDFIL\n"
-#~ "Obligatoriske argumenter til lange flag er obligatoriske også for korte\n"
-#~ " -f, --fold-case lav nøgle om til små bogstaver\n"
-#~ " -h, --help vis denne hjælpetekst og afslut\n"
-#~ " -o, --output=NAVN skriv resultatet til filen NAVN\n"
-#~ " --quiet giv ikke meddelelser når databasen bygges op\n"
-#~ " -u, --undo skriv indholdet i databasen, en post per linie\n"
-#~ " -V, --version vis programversion og afslut\n"
-#~ "Dersom INDFIL er -, læses inddata fra standard ind\n"
-
-#~ msgid ""
-#~ "Usage: %s [OPTION]... name\n"
-#~ "Mandatory arguments to long options are mandatory for short options too.\n"
-#~ " -c, --force create output even if warning messages were issued\n"
-#~ " -h, --help display this help and exit\n"
-#~ " -f, --charmap=FILE symbolic character names defined in FILE\n"
-#~ " -i, --inputfile=FILE source definitions are found in FILE\n"
-#~ " -u, --code-set-name=NAME specify code set for mapping ISO 10646 elements\n"
-#~ " -v, --verbose print more messages\n"
-#~ " -V, --version output version information and exit\n"
-#~ " --posix be strictly POSIX conform\n"
-#~ "\n"
-#~ "System's directory for character maps: %s\n"
-#~ " locale files : %s\n"
-#~ msgstr ""
-#~ "Brug: %s [FLAG]... navn\n"
-#~ "Obligatoriske argumenter til lange flag er obligatoriske også for de korte\n"
-#~ " -c, --force opret resultatfil selv om advarsler blev givet\n"
-#~ " -h, --help vis denne hjælpetekst og afslut\n"
-#~ " -f, --charmap=FIL symbolske tegnnavne defineres i FIL\n"
-#~ " -i, --inputfile=FIL kildedefinitioner findes i FIL\n"
-#~ " -u, --code-set-name=NAVN angiv tegnsæt for oversættelse af ISO 10646-\n"
-#~ " elementer\n"
-#~ " -v, --verbose skriv flere meddelelser\n"
-#~ " -V, --version vis programversion og afslut\n"
-#~ " --posix følg POSIX strengt\n"
-#~ "\n"
-#~ "Systemets filkatalog for tegntabel : %s\n"
-#~ " meddelelsesfiler: %s\n"
-
-#~ msgid ""
-#~ "Usage: %s [OPTION]... name\n"
-#~ "Mandatory arguments to long options are mandatory for short options too.\n"
-#~ " -h, --help display this help and exit\n"
-#~ " -V, --version output version information and exit\n"
-#~ "\n"
-#~ " -a, --all-locales write names of available locales\n"
-#~ " -m, --charmaps write names of available charmaps\n"
-#~ "\n"
-#~ " -c, --category-name write names of selected categories\n"
-#~ " -k, --keyword-name write names of selected keywords\n"
-#~ msgstr ""
-#~ "Brug: %s [FLAG]... navn\n"
-#~ "Obligatoriske argumenter til lange flag er obligatoriske også for de korte\n"
-#~ " -h, --help vis denne hjælpetekst og afslut\n"
-#~ " -V, --version vis programversion og afslut\n"
-#~ "\n"
-#~ " -a, --all-locales skriv navn på tilgængelige lokaler\n"
-#~ " -m, --charmaps skriv navn på tilgængelige tegntabel\n"
-#~ "\n"
-#~ " -c, --category-name skriv navn på valgte kategorier\n"
-#~ " -k, --keyword-name skriv navn på valgte nøgleord\n"
-
-#~ msgid "rpcinfo: can't contact portmapper: "
-#~ msgstr "rpcinfo: kan ikke kontakte portmapper: "
-
-#~ msgid "while opening UTMP file"
-#~ msgstr "da UTMP-filen blev åbnet"
+#: timezone/zic.c:2698
+#, c-format
+msgid "%s: %d did not sign extend correctly\n"
+msgstr "%s: fortegnsudvidelsen af %d blev forkert\n"
diff --git a/po/fi.po b/po/fi.po
index 66d9111037..e184b97d0e 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -1,353 +1,1344 @@
# Finnish messages for GNU libc.
-# Copyright © 2003 Free Software Foundation, Inc.
-# Lauri Nurmi <lanurmi@iki.fi>, 2002, 2003.
+# This file is distributed under the same license as the glibc package.
+# Copyright © 2009 Free Software Foundation, Inc.
+# Lauri Nurmi <lanurmi@iki.fi>, 2002, 2003, 2009.
# Thanks to:
# * Timo Laine <tila at surfeu.fi> for suggestions
#
-# "locale" on suomennettu uudella sanalla "maa-asetusto".
+# â€locale†on suomennettu uudella sanalla â€maa-asetustoâ€.
#
-# Pitäisikö signaalien nimien olla aktiivissa vai passiivissa?
-# esim. Terminated = Päättynyt vai Päätetty?
+# Pitäisikö signaalien nimien olla aktiivissa vai passiivissa?
+# esim. Terminated = Päättynyt vai Päätetty?
# Aborted = Keskeytynyt vai Keskeytetty?
-#
+#
#
# (parempia) suomennosehdotuksia kaivataan sanoille:
-# exchange -- vaihto? (mitä ihmettä?)
-# ellipsis -- sanankatkaisu? ATK-sanakirja sanoo näin.
+# exchange -- vaihto? (mitä ihmettä?)
+# ellipsis -- sanankatkaisu? ATK-sanakirja sanoo näin.
# map -- kartoittaa?? vai kuvata? vai jotain muuta?
#
+# ambiguous = ei-yksiselitteinen vs. moniselitteinen?
+#
+# korjaa: executable -> suoritettava (tiedosto)
+# unlink -> ???
+#
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.3.2\n"
-"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-"PO-Revision-Date: 2003-03-08 21:53+0200\n"
+"Project-Id-Version: libc 2.9.90\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-02-28 23:56+0200\n"
"Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: sysdeps/generic/siglist.h:29 stdio-common/../sysdeps/unix/siglist.c:27
-msgid "Hangup"
-msgstr "Linjankatkaisu"
+#: argp/argp-help.c:228
+#, c-format
+msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
+msgstr "%.*s: parametri ARGP_HELP_FMT vaatii arvon"
-#: sysdeps/generic/siglist.h:30 stdio-common/../sysdeps/unix/siglist.c:28
-msgid "Interrupt"
-msgstr "Keskeytys"
+#: argp/argp-help.c:238
+#, c-format
+msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
+msgstr "%.*s: Tuntematon ARGP_HELP_FMT-parametri"
-#: sysdeps/generic/siglist.h:31 stdio-common/../sysdeps/unix/siglist.c:29
-msgid "Quit"
-msgstr "Lopetettu"
+#: argp/argp-help.c:251
+#, c-format
+msgid "Garbage in ARGP_HELP_FMT: %s"
+msgstr "ARGP_HELP_FMT:ssä roskaa: %s"
-#: sysdeps/generic/siglist.h:32 stdio-common/../sysdeps/unix/siglist.c:30
-msgid "Illegal instruction"
-msgstr "Virheellinen käsky"
+#: argp/argp-help.c:1215
+msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
+msgstr "Pakolliset tai valinnaiset argumentit pitkille valitsimille ovat pakollisia tai valinnaisia kaikille vastaaville lyhyille valitsimille."
-#: sysdeps/generic/siglist.h:33 stdio-common/../sysdeps/unix/siglist.c:31
-msgid "Trace/breakpoint trap"
-msgstr "Jäljitys/katkaisupisteansa"
+#: argp/argp-help.c:1601
+msgid "Usage:"
+msgstr "Käyttö:"
-#: sysdeps/generic/siglist.h:34
-msgid "Aborted"
-msgstr "Keskeytetty"
+#: argp/argp-help.c:1605
+msgid " or: "
+msgstr " tai: "
-#: sysdeps/generic/siglist.h:35 stdio-common/../sysdeps/unix/siglist.c:34
-msgid "Floating point exception"
-msgstr "Liukulukupoikkeus"
+#: argp/argp-help.c:1617
+msgid " [OPTION...]"
+msgstr " [VALITSIN...]"
-#: sysdeps/generic/siglist.h:36 stdio-common/../sysdeps/unix/siglist.c:35
-msgid "Killed"
-msgstr "Tapettu"
+#: argp/argp-help.c:1644
+#, c-format
+msgid "Try `%s --help' or `%s --usage' for more information.\n"
+msgstr "Kokeile â€%s --help†tai â€%s --usage†saadaksesi lisää tietoa.\n"
-#: sysdeps/generic/siglist.h:37 stdio-common/../sysdeps/unix/siglist.c:36
-msgid "Bus error"
-msgstr "Väylävirhe"
+#: argp/argp-help.c:1672
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Ilmoita ohjelmistovirheistä osoitteeseen %s.\n"
-#: sysdeps/generic/siglist.h:38 stdio-common/../sysdeps/unix/siglist.c:37
-msgid "Segmentation fault"
-msgstr "Muistialueen ylitys"
+#: argp/argp-parse.c:102
+msgid "Give this help list"
+msgstr "Näytä tämä ohje"
-#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
-#. TRANS Every library function that returns this error code also generates a
-#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled
-#. TRANS or blocked. Thus, your program will never actually see @code{EPIPE}
-#. TRANS unless it has handled or blocked @code{SIGPIPE}.
-#: sysdeps/generic/siglist.h:39 stdio-common/../sysdeps/gnu/errlist.c:351
-#: stdio-common/../sysdeps/unix/siglist.c:39
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:62
-msgid "Broken pipe"
-msgstr "Katkennut putki"
+#: argp/argp-parse.c:103
+msgid "Give a short usage message"
+msgstr "Näytä lyhyt käyttöohje"
-#: sysdeps/generic/siglist.h:40 stdio-common/../sysdeps/unix/siglist.c:40
-msgid "Alarm clock"
-msgstr "Herätyskello"
+#: argp/argp-parse.c:104
+msgid "Set the program name"
+msgstr "Aseta ohjelman nimi"
-#: sysdeps/generic/siglist.h:41 stdio-common/../sysdeps/unix/siglist.c:41
-msgid "Terminated"
-msgstr "Päätetty"
+#: argp/argp-parse.c:106
+msgid "Hang for SECS seconds (default 3600)"
+msgstr "Odota SECS sekuntia (oletus 3600)"
-#: sysdeps/generic/siglist.h:42 stdio-common/../sysdeps/unix/siglist.c:42
-msgid "Urgent I/O condition"
-msgstr "Kiireellinen I/O-tilanne"
+#: argp/argp-parse.c:167
+msgid "Print program version"
+msgstr "Näytä ohjelman versio"
-#: sysdeps/generic/siglist.h:43 stdio-common/../sysdeps/unix/siglist.c:43
-msgid "Stopped (signal)"
-msgstr "Pysäytetty (signaali)"
+#: argp/argp-parse.c:183
+msgid "(PROGRAM ERROR) No version known!?"
+msgstr "(OHJELMAVIRHE) Tuntematon versio!?"
-#: sysdeps/generic/siglist.h:44 stdio-common/../sysdeps/unix/siglist.c:44
-msgid "Stopped"
-msgstr "Pysäytetty"
+#: argp/argp-parse.c:623
+#, c-format
+msgid "%s: Too many arguments\n"
+msgstr "%s: Liian monta argumenttia\n"
-#: sysdeps/generic/siglist.h:45 stdio-common/../sysdeps/unix/siglist.c:45
-msgid "Continued"
-msgstr "Jatkettu"
+#: argp/argp-parse.c:766
+msgid "(PROGRAM ERROR) Option should have been recognized!?"
+msgstr "(OHJELMAVIRHE) Valitsinta ei tunnistettu!?"
-#: sysdeps/generic/siglist.h:46 stdio-common/../sysdeps/unix/siglist.c:46
-msgid "Child exited"
-msgstr "Lapsi lopetti"
+#: assert/assert-perr.c:57
+#, c-format
+msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
+msgstr "%s%s%s:%u: %s%sOdottamaton virhe: %s.\n"
-#: sysdeps/generic/siglist.h:47 stdio-common/../sysdeps/unix/siglist.c:47
-msgid "Stopped (tty input)"
-msgstr "Pysäytetty (päätteen syöte)"
+#: assert/assert.c:57
+#, c-format
+msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
+msgstr "%s%s%s:%u: %s%sAssert-makro â€%s†ei pidä paikkaansa.\n"
-#: sysdeps/generic/siglist.h:48 stdio-common/../sysdeps/unix/siglist.c:48
-msgid "Stopped (tty output)"
-msgstr "Pysäytetty (päätteen tuloste)"
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
+msgid "NAME"
+msgstr "NIMI"
-#: sysdeps/generic/siglist.h:49 stdio-common/../sysdeps/unix/siglist.c:49
-msgid "I/O possible"
-msgstr "I/O mahdollista"
+#: catgets/gencat.c:111
+msgid "Create C header file NAME containing symbol definitions"
+msgstr "Luo C-otsikkotiedosto NAME, joka sisältää symbolimäärittelyt"
-#: sysdeps/generic/siglist.h:50 stdio-common/../sysdeps/unix/siglist.c:50
-msgid "CPU time limit exceeded"
-msgstr "Suoritinaikaraja ylittynyt"
+#: catgets/gencat.c:113
+msgid "Do not use existing catalog, force new output file"
+msgstr "Älä käytä olemassaolevaa katalogia, tee uusi tulostiedosto"
-#: sysdeps/generic/siglist.h:51 stdio-common/../sysdeps/unix/siglist.c:51
-msgid "File size limit exceeded"
-msgstr "Tiedoston kokoraja ylitetty"
+#: catgets/gencat.c:114 nss/makedb.c:61
+msgid "Write output to file NAME"
+msgstr "Kirjoita tuloste tiedostoon NIMI"
-#: sysdeps/generic/siglist.h:52 stdio-common/../sysdeps/unix/siglist.c:52
-msgid "Virtual timer expired"
-msgstr "Virtuaaliajastin vanhentunut"
+#: catgets/gencat.c:119
+msgid ""
+"Generate message catalog.\vIf INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
+"is -, output is written to standard output.\n"
+msgstr ""
+"Luo viestikatalogi.\vJos SYÖTETIEDOSTO on -, syöte luetaan vakiosyötteestä. Jos TULOSTIEDOSTO\n"
+"on -, tuloste kirjoitetaan vakiotulosteeseen.\n"
-#: sysdeps/generic/siglist.h:53 stdio-common/../sysdeps/unix/siglist.c:53
-msgid "Profiling timer expired"
-msgstr "Profilointiajastin vanhentunut"
+#: catgets/gencat.c:124
+msgid ""
+"-o OUTPUT-FILE [INPUT-FILE]...\n"
+"[OUTPUT-FILE [INPUT-FILE]...]"
+msgstr ""
+"-o TULOSTIEDOSTO [SYÖTETIEDOSTO]...\n"
+"[TULOSTIEDOSTO [SYÖTETIEDOSTO]...]"
+
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
+msgid ""
+"For bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgstr ""
+"Ohjeet ohjelmistovioista ilmoittamiseen ovat osoitteessa\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: sysdeps/generic/siglist.h:54 stdio-common/../sysdeps/unix/siglist.c:54
-msgid "Window changed"
-msgstr "Ikkuna vaihtunut"
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
+#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
+#, c-format
+msgid ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"This is free software; see the source for copying conditions. There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+msgstr ""
+"Copyright © %s Free Software Foundation, Inc.\n"
+"Tämä on vapaa ohjelmisto; katso kopiointiehdot lähdekoodista. Takuuta EI\n"
+"ole, ei edes KAUPALLISESTI HYVÄKSYTTÄVÄSTÄ LAADUSTA tai SOPIVUUDESTA TIETTYYN TARKOITUKSEEN.\n"
-#: sysdeps/generic/siglist.h:55 stdio-common/../sysdeps/unix/siglist.c:56
-msgid "User defined signal 1"
-msgstr "Käyttäjän määrittelemä signaali 1"
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Kirjoittanut %s.\n"
-#: sysdeps/generic/siglist.h:56 stdio-common/../sysdeps/unix/siglist.c:57
-msgid "User defined signal 2"
-msgstr "Käyttäjän määrittelemä signaali 2"
+#: catgets/gencat.c:282
+msgid "*standard input*"
+msgstr "*vakiosyöte*"
-#: sysdeps/generic/siglist.h:60 stdio-common/../sysdeps/unix/siglist.c:33
-msgid "EMT trap"
-msgstr "EMT-ansa"
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
+#: nss/makedb.c:170
+#, c-format
+msgid "cannot open input file `%s'"
+msgstr "syötetiedostoa â€%s†ei voi avata"
-#: sysdeps/generic/siglist.h:63 stdio-common/../sysdeps/unix/siglist.c:38
-msgid "Bad system call"
-msgstr "Virheellinen järjestelmäkutsu"
+#: catgets/gencat.c:417 catgets/gencat.c:494
+msgid "illegal set number"
+msgstr "virheellinen viestijoukon numero"
-#: sysdeps/generic/siglist.h:66
-msgid "Stack fault"
-msgstr "Pinovirhe"
+#: catgets/gencat.c:444
+msgid "duplicate set definition"
+msgstr "kaksinkertainen joukon määrittely"
-#: sysdeps/generic/siglist.h:69
-msgid "Information request"
-msgstr "Tietopyyntö"
+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+msgid "this is the first definition"
+msgstr "tämä on ensimmäinen määrittely"
-#: sysdeps/generic/siglist.h:71
-msgid "Power failure"
-msgstr "Sähkökatko"
+#: catgets/gencat.c:522
+#, c-format
+msgid "unknown set `%s'"
+msgstr "tuntematon joukko â€%sâ€"
-#: sysdeps/generic/siglist.h:74 stdio-common/../sysdeps/unix/siglist.c:55
-msgid "Resource lost"
-msgstr "Resurssi menetetty"
+#: catgets/gencat.c:563
+msgid "invalid quote character"
+msgstr "virheellinen lainausmerkki"
-#: sysdeps/mach/hurd/mips/dl-machine.c:68
-#: string/../sysdeps/mach/_strerror.c:57
-msgid "Error in unknown error system: "
-msgstr "Virhe tuntemattomassa virhejärjestelmässä: "
+#: catgets/gencat.c:576
+#, c-format
+msgid "unknown directive `%s': line ignored"
+msgstr "tuntematon direktiivi â€%sâ€: riviä ei huomioida"
-#: sysdeps/mach/hurd/mips/dl-machine.c:83
-#: string/../sysdeps/generic/_strerror.c:44
-#: string/../sysdeps/mach/_strerror.c:87
-msgid "Unknown error "
-msgstr "Tuntematon virhe "
+#: catgets/gencat.c:621
+msgid "duplicated message number"
+msgstr "kaksinkertainen viestinumero"
+
+#: catgets/gencat.c:674
+msgid "duplicated message identifier"
+msgstr "kaksinkertainen viestitunniste"
+
+#: catgets/gencat.c:731
+msgid "invalid character: message ignored"
+msgstr "virheellinen merkki: viestiä ei huomioida"
+
+#: catgets/gencat.c:774
+msgid "invalid line"
+msgstr "virheellinen rivi"
+
+#: catgets/gencat.c:828
+msgid "malformed line ignored"
+msgstr "väärän muotoinen rivi jätetty huomioimatta"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: catgets/gencat.c:992 catgets/gencat.c:1033 nss/makedb.c:183
#, c-format
-msgid "cannot open `%s'"
-msgstr "tiedostoa \"%s\" ei voi avata"
+msgid "cannot open output file `%s'"
+msgstr "tulostiedostoa â€%s†ei voi avata"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: catgets/gencat.c:1195 locale/programs/linereader.c:560
+msgid "invalid escape sequence"
+msgstr "virheellinen ohjaussarja"
+
+#: catgets/gencat.c:1217
+msgid "unterminated message"
+msgstr "päättämätön viesti"
+
+#: catgets/gencat.c:1241
#, c-format
-msgid "cannot read header from `%s'"
-msgstr "tiedoston \"%s\" otsaketta ei voi lukea"
+msgid "while opening old catalog file"
+msgstr "avattaessa vanhaa katalogitiedostoa"
-#: iconv/iconv_charmap.c:159 iconv/iconv_prog.c:293 catgets/gencat.c:288
+#: catgets/gencat.c:1332
#, c-format
-msgid "cannot open input file `%s'"
-msgstr "syötetiedostoa \"%s\" ei voi avata"
+msgid "conversion modules not available"
+msgstr "muunnosmoduulit eivät ole käytettävissä"
+
+#: catgets/gencat.c:1358
+#, c-format
+msgid "cannot determine escape character"
+msgstr "ohjausmerkkiä ei voi määrittää"
+
+#: debug/pcprofiledump.c:53
+msgid "Don't buffer output"
+msgstr "Älä puskuroi tulostetta"
+
+#: debug/pcprofiledump.c:58
+msgid "Dump information generated by PC profiling."
+msgstr "Vedosta PC-profiloinnin luomat tiedot."
+
+#: debug/pcprofiledump.c:61
+msgid "[FILE]"
+msgstr "[TIEDOSTO]"
+
+#: debug/pcprofiledump.c:108
+#, c-format
+msgid "cannot open input file"
+msgstr "syötetiedostoa ei voi avata"
+
+#: debug/pcprofiledump.c:115
+#, c-format
+msgid "cannot read header"
+msgstr "otsaketta ei voi lukea"
+
+#: debug/pcprofiledump.c:179
+#, c-format
+msgid "invalid pointer size"
+msgstr "virheellinen osoittimen koko"
+
+#: debug/xtrace.sh:27 debug/xtrace.sh:45
+msgid "Usage: xtrace [OPTION]... PROGRAM [PROGRAMOPTION]...\\n"
+msgstr "Käyttö: xtrace [VALITSIN]... OHJELMA [OHJELMANVALITSIN]...\\n"
+
+#: debug/xtrace.sh:33
+msgid "Try \\`xtrace --help' for more information.\\n"
+msgstr "Komento â€xtrace --help†antaa lisää tietoa.\\n"
+
+#: debug/xtrace.sh:39
+msgid "xtrace: option \\`$1' requires an argument.\\n"
+msgstr "xtrace: valitsin â€$1†vaatii argumentin.\\n"
+
+#: debug/xtrace.sh:46
+msgid ""
+"Trace execution of program by printing currently executed function.\n"
+"\n"
+" --data=FILE Don't run the program, just print the data from FILE.\n"
+"\n"
+" -?,--help Print this help and exit\n"
+" --usage Give a short usage message\n"
+" -V,--version Print version information and exit\n"
+"\n"
+"Mandatory arguments to long options are also mandatory for any corresponding\n"
+"short options.\n"
+"\n"
+msgstr ""
+"Seuraa ohjelman suoritusta näyttämällä parhaillaan suoritettava funktio.\n"
+"\n"
+" --data=TIEDOSTO Älä aja ohjelmaa, näytä vain data TIEDOSTOsta.\n"
+"\n"
+" -?,--help Näytä tämä ohje ja poistu\n"
+" --usage Näytä lyhyt käyttöohje\n"
+" -V,--version Näytä versiotiedot ja poistu\n"
+"\n"
+"Pakolliset tai valinnaiset argumentit pitkille valitsimille ovat pakollisia tai valinnaisia kaikille vastaaville lyhyille valitsimille.\n"
+
+#: debug/xtrace.sh:127
+msgid "xtrace: unrecognized option \\`$1'\\n"
+msgstr "xtrace: tunnistamaton valitsin â€$1â€\\n"
+
+#: debug/xtrace.sh:140
+msgid "No program name given\\n"
+msgstr "Ohjelman nimeä ei annettu\\n"
+
+#: debug/xtrace.sh:148
+#, sh-format
+msgid "executable \\`$program' not found\\n"
+msgstr ""
+
+#: debug/xtrace.sh:152
+#, fuzzy, sh-format
+msgid "\\`$program' is no executable\\n"
+msgstr "ohjelma %lu ei ole käytettävissä\n"
+
+#: dlfcn/dlinfo.c:64
+#, fuzzy
+msgid "RTLD_SELF used in code not dynamically loaded"
+msgstr "RTLD_NEXT:iä käytetty koodissa, jota ei ole ladattu dynaamisesti"
+
+#: dlfcn/dlinfo.c:73
+#, fuzzy
+msgid "unsupported dlinfo request"
+msgstr "Tietopyyntö"
+
+#: dlfcn/dlmopen.c:64
+#, fuzzy
+msgid "invalid namespace"
+msgstr "virheellinen rivi"
+
+#: dlfcn/dlmopen.c:69
+#, fuzzy
+msgid "invalid mode"
+msgstr "virheellinen rivi"
+
+#: dlfcn/dlopen.c:65
+#, fuzzy
+msgid "invalid mode parameter"
+msgstr "virheellinen lainausmerkki"
+
+#: elf/cache.c:69
+msgid "unknown"
+msgstr "tuntematon"
+
+#: elf/cache.c:112
+msgid "Unknown OS"
+msgstr "Tuntematon käyttöjärjestelmä"
+
+#: elf/cache.c:117
+#, c-format
+msgid ", OS ABI: %s %d.%d.%d"
+msgstr ", OS ABI: %s %d.%d.%d"
+
+#: elf/cache.c:134 elf/ldconfig.c:1289
+#, c-format
+msgid "Can't open cache file %s\n"
+msgstr "Välimuistitiedostoa %s ei voi avata\n"
+
+#: elf/cache.c:148
+#, c-format
+msgid "mmap of cache file failed.\n"
+msgstr "välimuistitiedoston muistikartoitus epäonnistui.\n"
+
+#: elf/cache.c:152 elf/cache.c:166
+#, c-format
+msgid "File is not a cache file.\n"
+msgstr "Tiedosto ei ole välimuistitiedosto.\n"
+
+#: elf/cache.c:199 elf/cache.c:209
+#, c-format
+msgid "%d libs found in cache `%s'\n"
+msgstr "Välimuistista â€%2$s†löytyi %1$d kirjastoa\n"
+
+#: elf/cache.c:403
+#, c-format
+msgid "Can't create temporary cache file %s"
+msgstr "Tilapäistä välimuistitiedostoa %s ei voi luoda"
+
+#: elf/cache.c:411 elf/cache.c:421 elf/cache.c:425 elf/cache.c:430
+#, c-format
+msgid "Writing of cache data failed"
+msgstr "Välimuistidatan kirjoitus epäonnistui"
+
+#: elf/cache.c:435
+#, c-format
+msgid "Changing access rights of %s to %#o failed"
+msgstr "Tiedoston %s oikeuksien muutos arvoon %#o epäonnistui"
+
+#: elf/cache.c:440
+#, c-format
+msgid "Renaming of %s to %s failed"
+msgstr "Uudelleennimeäminen %s -> %s epäonnistui"
+
+#: elf/dl-close.c:378 elf/dl-open.c:460
+msgid "cannot create scope list"
+msgstr "aluelistaa ei voi luoda"
+
+#: elf/dl-close.c:725
+msgid "shared object not open"
+msgstr "jaettu objekti ei ole avoin"
+
+#: elf/dl-deps.c:114
+msgid "DST not allowed in SUID/SGID programs"
+msgstr "DST ei ole sallittu SUID/SGID-ohjelmissa"
+
+#: elf/dl-deps.c:127 elf/dl-open.c:282
+msgid "empty dynamic string token substitution"
+msgstr "tyhjän dynaamisen merkkijonon osan korvaus"
+
+#: elf/dl-deps.c:133
+#, c-format
+msgid "cannot load auxiliary `%s' because of empty dynamic string token substitution\n"
+msgstr "ylimääräistä â€%s†ei voi ladata, koska dynaamisen merkkijonon osa korvattiin tyhjällä\n"
+
+#: elf/dl-deps.c:474
+msgid "cannot allocate dependency list"
+msgstr "riippuvuuslistalle ei voi varata muistia"
+
+#: elf/dl-deps.c:510 elf/dl-deps.c:565
+msgid "cannot allocate symbol search list"
+msgstr "symbolihakulistalle ei voi varata muistia"
+
+#: elf/dl-deps.c:550
+msgid "Filters not supported with LD_TRACE_PRELINKING"
+msgstr "Suodattimet eivät ole tuettuja LD_TRACE_RPELINKING:in kanssa"
+
+#: elf/dl-error.c:77
+msgid "DYNAMIC LINKER BUG!!!"
+msgstr "DYNAAMISEN LINKITTIMEN OHJELMISTOVIKA!!!"
+
+#: elf/dl-error.c:124
+msgid "error while loading shared libraries"
+msgstr "virhe ladattaessa jaettuja kirjastoja"
+
+#: elf/dl-fptr.c:88
+#, fuzzy
+msgid "cannot map pages for fdesc table"
+msgstr "versioviitetaulukolle ei voi varata muistia"
+
+#: elf/dl-fptr.c:192
+#, fuzzy
+msgid "cannot map pages for fptr table"
+msgstr "maa-asetustoarkistoa â€%s†ei voi kartoittaa"
+
+#: elf/dl-fptr.c:221
+msgid "internal error: symidx out of range of fptr table"
+msgstr ""
+
+#: elf/dl-load.c:372
+msgid "cannot allocate name record"
+msgstr "nimitietueelle ei voi varata muistia"
+
+#: elf/dl-load.c:474 elf/dl-load.c:582 elf/dl-load.c:667 elf/dl-load.c:780
+msgid "cannot create cache for search path"
+msgstr "hakupolulle ei voi luoda välimuistia"
+
+#: elf/dl-load.c:565
+msgid "cannot create RUNPATH/RPATH copy"
+msgstr "RUNPATH/RPATH-kopiota ei voi luoda"
+
+#: elf/dl-load.c:653
+msgid "cannot create search path array"
+msgstr "hakupolkutaulukkoa ei voi luoda"
+
+#: elf/dl-load.c:864
+msgid "cannot stat shared object"
+msgstr "jaetun objektin tilaa ei voi lukea"
+
+#: elf/dl-load.c:934
+msgid "cannot open zero fill device"
+msgstr "nollatäyttölaitetta ei voi avata"
+
+#: elf/dl-load.c:979 elf/dl-load.c:2215
+msgid "cannot create shared object descriptor"
+msgstr "jaettua objektikahvaa ei voi luoda"
+
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
+msgid "cannot read file data"
+msgstr "tiedoston dataa ei voi lukea"
+
+#: elf/dl-load.c:1042
+msgid "ELF load command alignment not page-aligned"
+msgstr "ELF-latauskomennon tasaus ei ole sivutasattu"
+
+#: elf/dl-load.c:1049
+msgid "ELF load command address/offset not properly aligned"
+msgstr "ELF-latauskomennon osoite/siirtymä ei ole tasattu oikein"
+
+#: elf/dl-load.c:1132
+msgid "cannot allocate TLS data structures for initial thread"
+msgstr "alkusäikeelle ei voi varata TLS-tietorakenteita"
+
+#: elf/dl-load.c:1155
+msgid "cannot handle TLS data"
+msgstr "TLS-dataa ei voi käsitellä"
+
+#: elf/dl-load.c:1174
+#, fuzzy
+msgid "object file has no loadable segments"
+msgstr "objektitiedostossa ei ole dynaamista osaa"
+
+#: elf/dl-load.c:1210
+msgid "failed to map segment from shared object"
+msgstr "segmentin kartoitus jaetusta objektista epäonnistui"
+
+#: elf/dl-load.c:1236
+msgid "cannot dynamically load executable"
+msgstr "suoritettavaa tiedostoa ei voi ladata dynaamisesti"
+
+#: elf/dl-load.c:1298
+msgid "cannot change memory protections"
+msgstr "muistin suojausta ei voi muuttaa"
+
+#: elf/dl-load.c:1317
+msgid "cannot map zero-fill pages"
+msgstr "nollatäytteisiä sivuja ei voi kartoittaa"
+
+#: elf/dl-load.c:1331
+msgid "object file has no dynamic section"
+msgstr "objektitiedostossa ei ole dynaamista osaa"
+
+#: elf/dl-load.c:1354
+msgid "shared object cannot be dlopen()ed"
+msgstr "jaettua objektia ei voi avata funktiolla dlopen()"
+
+#: elf/dl-load.c:1367
+msgid "cannot allocate memory for program header"
+msgstr "ohjelman otsakkeelle ei voi varata muistia"
+
+#: elf/dl-load.c:1384 elf/dl-open.c:218
+msgid "invalid caller"
+msgstr "virheellinen kutsuja"
+
+#: elf/dl-load.c:1423
+#, fuzzy
+msgid "cannot enable executable stack as shared object requires"
+msgstr "jaettua objektikahvaa ei voi luoda"
+
+#: elf/dl-load.c:1436
+#, fuzzy
+msgid "cannot close file descriptor"
+msgstr "sisäistä kahvaa ei voi ladata"
+
+#: elf/dl-load.c:1647
+msgid "file too short"
+msgstr "tiedosto on liian lyhyt"
+
+#: elf/dl-load.c:1676
+msgid "invalid ELF header"
+msgstr "virheellinen ELF-otsikko"
+
+#: elf/dl-load.c:1688
+msgid "ELF file data encoding not big-endian"
+msgstr "ELF-tiedoston tavujärjestys ei ole â€big-endianâ€"
+
+#: elf/dl-load.c:1690
+msgid "ELF file data encoding not little-endian"
+msgstr "ELF-tiedoston tavujärjestys ei ole â€little-endianâ€"
+
+#: elf/dl-load.c:1694
+msgid "ELF file version ident does not match current one"
+msgstr "ELF-tiedoston versiotunnus ei vastaa nykyistä"
+
+#: elf/dl-load.c:1698
+msgid "ELF file OS ABI invalid"
+msgstr "ELF-tiedoston OS ABI on virheellinen"
+
+#: elf/dl-load.c:1700
+msgid "ELF file ABI version invalid"
+msgstr "ELF-tiedoston ABI-versio virheellinen"
+
+#: elf/dl-load.c:1703
+msgid "internal error"
+msgstr "sisäinen virhe"
+
+#: elf/dl-load.c:1710
+msgid "ELF file version does not match current one"
+msgstr "ELF-tiedoston versio ei vastaa nykyistä"
+
+#: elf/dl-load.c:1718
+msgid "only ET_DYN and ET_EXEC can be loaded"
+msgstr "vain ET_DYN ja ET_EXEC voidaan ladata"
+
+#: elf/dl-load.c:1724
+msgid "ELF file's phentsize not the expected size"
+msgstr "ELF-tiedoston phent-koko ei ole odotetun kokoinen"
+
+#: elf/dl-load.c:2231
+msgid "wrong ELF class: ELFCLASS64"
+msgstr ""
+
+#: elf/dl-load.c:2232
+msgid "wrong ELF class: ELFCLASS32"
+msgstr ""
+
+#: elf/dl-load.c:2235
+msgid "cannot open shared object file"
+msgstr "jaettua objektitiedostoa ei voi avata"
+
+#: elf/dl-lookup.c:356
+msgid "relocation error"
+msgstr "uudelleensijoitusvirhe"
+
+#: elf/dl-lookup.c:384
+msgid "symbol lookup error"
+msgstr ""
+
+#: elf/dl-open.c:114
+msgid "cannot extend global scope"
+msgstr "globaalia aluetta ei voi laajentaa"
+
+#: elf/dl-open.c:512
+#, fuzzy
+msgid "TLS generation counter wrapped! Please report this."
+msgstr "TLS-luontilaskurin ylivuoto! Lähetä raportti â€glibcbugâ€-skriptillä."
+
+#: elf/dl-open.c:549
+msgid "invalid mode for dlopen()"
+msgstr "virheellinen tila funktiolle dlopen()"
+
+#: elf/dl-open.c:566
+msgid "no more namespaces available for dlmopen()"
+msgstr ""
+
+#: elf/dl-open.c:579
+#, fuzzy
+msgid "invalid target namespace in dlmopen()"
+msgstr "virheellinen tila funktiolle dlopen()"
+
+#: elf/dl-reloc.c:121
+#, fuzzy
+msgid "cannot allocate memory in static TLS block"
+msgstr "Muistin varaaminen ei onnistu"
+
+#: elf/dl-reloc.c:211
+msgid "cannot make segment writable for relocation"
+msgstr "segmenttiä ei voi muuttaa kirjoitettavaksi uudelleensijoitusta varten"
+
+#: elf/dl-reloc.c:277
+#, fuzzy, c-format
+msgid "%s: no PLTREL found in object %s\n"
+msgstr "%s: profiloija ei löytänyt PLTREL-kenttää objektista %s\n"
+
+#: elf/dl-reloc.c:288
+#, c-format
+msgid "%s: out of memory to store relocation results for %s\n"
+msgstr ""
+
+#: elf/dl-reloc.c:304
+msgid "cannot restore segment prot after reloc"
+msgstr "segmentin suojausta ei voi palauttaa uudelleensijoituksen jälkeen"
+
+#: elf/dl-reloc.c:329
+#, fuzzy
+msgid "cannot apply additional memory protection after relocation"
+msgstr "muistin suojausta ei voi muuttaa"
+
+#: elf/dl-sym.c:162
+msgid "RTLD_NEXT used in code not dynamically loaded"
+msgstr "RTLD_NEXT:iä käytetty koodissa, jota ei ole ladattu dynaamisesti"
+
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
+msgid "cannot create capability list"
+msgstr "kykylistaa ei voi luoda"
+
+#: elf/dl-tls.c:864
+msgid "cannot create TLS data structures"
+msgstr "TLS-tietorakenteita ei voi luoda"
+
+#: elf/dl-version.c:303
+msgid "cannot allocate version reference table"
+msgstr "versioviitetaulukolle ei voi varata muistia"
+
+#: elf/ldconfig.c:141
+msgid "Print cache"
+msgstr "Näytä välimuisti"
+
+#: elf/ldconfig.c:142
+msgid "Generate verbose messages"
+msgstr "Luo monisanaiset viestit"
+
+#: elf/ldconfig.c:143
+msgid "Don't build cache"
+msgstr "Älä luo välimuistia"
+
+#: elf/ldconfig.c:144
+msgid "Don't generate links"
+msgstr "Älä luo linkkejä"
+
+#: elf/ldconfig.c:145
+msgid "Change to and use ROOT as root directory"
+msgstr "Siirry ja käytä ROOTia juurihakemistona"
+
+#: elf/ldconfig.c:145
+msgid "ROOT"
+msgstr ""
+
+#: elf/ldconfig.c:146
+msgid "CACHE"
+msgstr ""
+
+#: elf/ldconfig.c:146
+msgid "Use CACHE as cache file"
+msgstr "Käytä CACHEa välimuistitiedostona"
+
+#: elf/ldconfig.c:147
+msgid "CONF"
+msgstr ""
+
+#: elf/ldconfig.c:147
+msgid "Use CONF as configuration file"
+msgstr "Käytä CONFia asetustiedostona"
+
+#: elf/ldconfig.c:148
+msgid "Only process directories specified on the command line. Don't build cache."
+msgstr "Käsittele vain komentorivillä annetut hakemistot. Älä luo välimuistia."
+
+#: elf/ldconfig.c:149
+msgid "Manually link individual libraries."
+msgstr "Linkitä yksittäisiä kirjastoja käsin."
+
+#: elf/ldconfig.c:150
+msgid "FORMAT"
+msgstr ""
+
+#: elf/ldconfig.c:150
+msgid "Format to use: new, old or compat (default)"
+msgstr "Käytettävä muoto: â€newâ€, â€old†tai â€compat†(oletus)"
+
+#: elf/ldconfig.c:151
+#, fuzzy
+msgid "Ignore auxiliary cache file"
+msgstr "ei ole tavallinen tiedosto"
+
+#: elf/ldconfig.c:159
+msgid "Configure Dynamic Linker Run Time Bindings."
+msgstr "Säädä dynaamisen linkittäjän ajonaikaiset sidonnat."
+
+#: elf/ldconfig.c:339
+#, c-format
+msgid "Path `%s' given more than once"
+msgstr "Polku â€%s†on annettu useammin kuin kerran"
+
+#: elf/ldconfig.c:379
+#, c-format
+msgid "%s is not a known library type"
+msgstr "%s ei ole tunnettu kirjastotyyppi"
+
+#: elf/ldconfig.c:404
+#, c-format
+msgid "Can't stat %s"
+msgstr "Tiedoston %s tilaa ei voi lukea"
+
+#: elf/ldconfig.c:478
+#, c-format
+msgid "Can't stat %s\n"
+msgstr "Tiedoston %s tilaa ei voi lukea\n"
+
+#: elf/ldconfig.c:488
+#, c-format
+msgid "%s is not a symbolic link\n"
+msgstr "%s ei ole symbolinen linkki\n"
+
+#: elf/ldconfig.c:507
+#, c-format
+msgid "Can't unlink %s"
+msgstr "Tiedoston %s linkitystä ei voi poistaa"
+
+#: elf/ldconfig.c:513
+#, c-format
+msgid "Can't link %s to %s"
+msgstr "Linkitys %s -> %s ei onnistu"
+
+#: elf/ldconfig.c:519
+msgid " (changed)\n"
+msgstr " (muutettu)\n"
+
+#: elf/ldconfig.c:521
+msgid " (SKIPPED)\n"
+msgstr " (OHITETTU)\n"
+
+#: elf/ldconfig.c:576
+#, c-format
+msgid "Can't find %s"
+msgstr "%s ei löydy"
+
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
+#, c-format
+msgid "Cannot lstat %s"
+msgstr "Tiedoston %s tilaa ei voi lukea"
+
+#: elf/ldconfig.c:599
+#, c-format
+msgid "Ignored file %s since it is not a regular file."
+msgstr "Tiedostoa %s ei huomioitu, koska se ei ole tavallinen tiedosto."
+
+#: elf/ldconfig.c:608
+#, c-format
+msgid "No link created since soname could not be found for %s"
+msgstr "Linkkiä ei luotu, koska tiedostolle %s ei löytynyt so-nimeä"
+
+#: elf/ldconfig.c:691
+#, c-format
+msgid "Can't open directory %s"
+msgstr "Hakemistoa %s ei voi avata"
+
+#: elf/ldconfig.c:779
+#, c-format
+msgid "Cannot stat %s"
+msgstr "Tiedoston %s tilaa ei voi lukea"
+
+#: elf/ldconfig.c:834 elf/readlib.c:91
+#, c-format
+msgid "Input file %s not found.\n"
+msgstr "Syötetiedostoa %s ei löydy.\n"
+
+#: elf/ldconfig.c:908
+#, c-format
+msgid "libc5 library %s in wrong directory"
+msgstr "libc5-kirjasto %s on väärässä hakemistossa"
+
+#: elf/ldconfig.c:911
+#, c-format
+msgid "libc6 library %s in wrong directory"
+msgstr "libc6-kirjasto %s on väärässä hakemistossa"
+
+#: elf/ldconfig.c:914
+#, c-format
+msgid "libc4 library %s in wrong directory"
+msgstr "libc4-kirjasto %s on väärässä hakemistossa"
+
+#: elf/ldconfig.c:942
+#, c-format
+msgid "libraries %s and %s in directory %s have same soname but different type."
+msgstr "kirjastoilla %s ja %s hakemistossa %s on sama so-nimi, mutta eri tyypit."
+
+#: elf/ldconfig.c:1051
+#, c-format
+msgid "Can't open configuration file %s"
+msgstr "Asetustiedostoa %s ei voi avata"
+
+#: elf/ldconfig.c:1115
+#, c-format
+msgid "%s:%u: bad syntax in hwcap line"
+msgstr ""
+
+#: elf/ldconfig.c:1121
+#, c-format
+msgid "%s:%u: hwcap index %lu above maximum %u"
+msgstr ""
+
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
+#, fuzzy, c-format
+msgid "%s:%u: hwcap index %lu already defined as %s"
+msgstr "%s: järjestys â€%.*sâ€:lle on jo määritelty kohdassa %s:%Zu"
+
+#: elf/ldconfig.c:1139
+#, c-format
+msgid "%s:%u: duplicate hwcap %lu %s"
+msgstr ""
+
+#: elf/ldconfig.c:1161
+#, c-format
+msgid "need absolute file name for configuration file when using -r"
+msgstr ""
+
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
+#, c-format
+msgid "memory exhausted"
+msgstr "muisti lopussa"
+
+#: elf/ldconfig.c:1198
+#, c-format
+msgid "%s:%u: cannot read directory %s"
+msgstr "%s:%u: hakemistoa %s ei voi lukea"
+
+#: elf/ldconfig.c:1242
+#, c-format
+msgid "relative path `%s' used to build cache"
+msgstr ""
+
+#: elf/ldconfig.c:1268
+#, c-format
+msgid "Can't chdir to /"
+msgstr "Juurihakemistoon / siirtyminen ei onnistu"
+
+#: elf/ldconfig.c:1310
+#, c-format
+msgid "Can't open cache file directory %s\n"
+msgstr "Välimuistihakemistoa %s ei voi avata\n"
+
+#: elf/ldd.bash.in:43
+msgid "Written by %s and %s.\n"
+msgstr "Kirjoittaneet %s ja %s.\n"
+
+#: elf/ldd.bash.in:48
+#, fuzzy
+msgid ""
+"Usage: ldd [OPTION]... FILE...\n"
+" --help print this help and exit\n"
+" --version print version information and exit\n"
+" -d, --data-relocs process data relocations\n"
+" -r, --function-relocs process data and function relocations\n"
+" -u, --unused print unused direct dependencies\n"
+" -v, --verbose print all information\n"
+msgstr ""
+"Käyttö: ldd [VALITSIN]... TIEDOSTO...\n"
+" --help näytä tämä ohje ja poistu\n"
+" --version näytä versiotiedot ja poistu\n"
+" -d, --data-relocs käsittele dataRELOKAATIOT\n"
+" -r, --function-relocs käsittele data- ja FUNKTIORELOKAATIOT\n"
+" -u, --unused näytä käyttämättömät suorat riippuvuudet\n"
+" -v, --verbose näytä kaikki tiedot\n"
+
+#: elf/ldd.bash.in:82
+msgid "ldd: option \\`$1' is ambiguous"
+msgstr "ldd: valitsin â€$1†on moniselitteinen"
+
+#: elf/ldd.bash.in:89
+msgid "unrecognized option"
+msgstr "tunnistamaton valitsin"
+
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
+msgid "Try \\`ldd --help' for more information."
+msgstr "Komento â€ldd --help†antaa lisää tietoa."
+
+#: elf/ldd.bash.in:127
+msgid "missing file arguments"
+msgstr "tiedostoargumentit puuttuvat"
+
+#. TRANS No such file or directory. This is a ``file doesn't exist'' error
+#. TRANS for ordinary files that are referenced in contexts where they are
+#. TRANS expected to already exist.
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
+msgid "No such file or directory"
+msgstr "Tiedostoa tai hakemistoa ei ole"
+
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
+msgid "not regular file"
+msgstr "ei ole tavallinen tiedosto"
+
+#: elf/ldd.bash.in:156
+#, fuzzy
+msgid "warning: you do not have execution permission for"
+msgstr "varoitus: "
+
+#: elf/ldd.bash.in:185
+msgid "\tnot a dynamic executable"
+msgstr "\tkäynnistettävää tiedostoa ei voi ladata dynaamisesti"
+
+#: elf/ldd.bash.in:193
+msgid "exited with unknown exit code"
+msgstr ""
+
+#: elf/ldd.bash.in:198
+msgid "error: you do not have read permission for"
+msgstr ""
+
+#: elf/readelflib.c:35
+#, c-format
+msgid "file %s is truncated\n"
+msgstr "tiedosto %s on typistetty\n"
+
+#: elf/readelflib.c:67
+#, c-format
+msgid "%s is a 32 bit ELF file.\n"
+msgstr "%s on 32-bittinen ELF-tiedosto.\n"
+
+#: elf/readelflib.c:69
+#, c-format
+msgid "%s is a 64 bit ELF file.\n"
+msgstr "%s on 64-bittinen ELF-tiedosto.\n"
+
+#: elf/readelflib.c:71
+#, c-format
+msgid "Unknown ELFCLASS in file %s.\n"
+msgstr "Tuntematon ELFCLASS tiedostossa %s.\n"
+
+#: elf/readelflib.c:78
+#, c-format
+msgid "%s is not a shared object file (Type: %d).\n"
+msgstr "%s ei ole jaettu objektitiedosto (Tyyppi: %d).\n"
+
+#: elf/readelflib.c:109
+#, c-format
+msgid "more than one dynamic segment\n"
+msgstr "useampi kuin yksi dynaaminen segmentti\n"
+
+#: elf/readlib.c:97
+#, c-format
+msgid "Cannot fstat file %s.\n"
+msgstr "Tiedoston %s tilaa ei voi lukea.\n"
+
+#: elf/readlib.c:108
+#, c-format
+msgid "File %s is empty, not checked."
+msgstr "Tiedosto %s on tyhjä, ei tarkastettu."
+
+#: elf/readlib.c:114
+#, c-format
+msgid "File %s is too small, not checked."
+msgstr "Tiedosto %s on liian pieni, ei tarkastettu."
+
+#: elf/readlib.c:124
+#, c-format
+msgid "Cannot mmap file %s.\n"
+msgstr "Tiedoston %s muistikartoitus epäonnistui.\n"
+
+#: elf/readlib.c:162
+#, c-format
+msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
+msgstr "%s ei ole ELF-tiedosto - sen alussa on väärät taikatavut.\n"
+
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+"Käyttö: sln lähde kohde|tiedosto\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s: virhe tiedoston avaamisessa: %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "Ei kohdetta rivillä %d\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s kohde ei saa olla hakemisto\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr ""
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s: virheellinen kohde: %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "Virheellinen linkki â€%s†-> â€%sâ€: %s\n"
+
+#: elf/sprof.c:77
+msgid "Output selection:"
+msgstr "Tulostevalinnat:"
+
+#: elf/sprof.c:79
+msgid "print list of count paths and their number of use"
+msgstr "näytä lista lasketuista poluista ja niiden käyttökertojen määrä"
+
+#: elf/sprof.c:81
+msgid "generate flat profile with counts and ticks"
+msgstr "luo kutsukerrat ja -ajat sisältävä â€litteä†profiili"
+
+#: elf/sprof.c:82
+msgid "generate call graph"
+msgstr "luo kutsukaavio"
+
+#: elf/sprof.c:89
+msgid "Read and display shared object profiling data."
+msgstr "Lue ja näytä jaetun objektin profilointidata."
+
+#: elf/sprof.c:94
+msgid "SHOBJ [PROFDATA]"
+msgstr "JAETTU_OBJEKTI [PROFILOINTIDATA]"
+
+#: elf/sprof.c:420
+#, c-format
+msgid "failed to load shared object `%s'"
+msgstr "jaettua objektia â€%s†ei voitu ladata"
+
+#: elf/sprof.c:429
+#, c-format
+msgid "cannot create internal descriptors"
+msgstr "sisäisiä kahvoja ei voi luoda"
+
+#: elf/sprof.c:548
+#, c-format
+msgid "Reopening shared object `%s' failed"
+msgstr "Jaetun objektin â€%s†uudelleenavaus epäonnistui"
+
+#: elf/sprof.c:555 elf/sprof.c:649
+#, c-format
+msgid "reading of section headers failed"
+msgstr "osaotsikkojen lukeminen epäonnistui"
+
+#: elf/sprof.c:563 elf/sprof.c:657
+#, c-format
+msgid "reading of section header string table failed"
+msgstr "osaotsikkojen taulukon lukeminen epäonnistui"
+
+#: elf/sprof.c:589
+#, c-format
+msgid "*** Cannot read debuginfo file name: %m\n"
+msgstr ""
+
+#: elf/sprof.c:609
+#, fuzzy, c-format
+msgid "cannot determine file name"
+msgstr "ohjausmerkkiä ei voi määrittää"
+
+#: elf/sprof.c:642
+#, c-format
+msgid "reading of ELF header failed"
+msgstr "ELF-otsakkeen lukeminen epäonnistui"
+
+#: elf/sprof.c:678
+#, c-format
+msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
+msgstr "*** Tiedosto â€%s†on karsittu: tarkka analyysi ei ole mahdollinen\n"
+
+#: elf/sprof.c:708
+#, c-format
+msgid "failed to load symbol data"
+msgstr "symbolitietojen lataus ei onnistunut"
+
+#: elf/sprof.c:775
+#, c-format
+msgid "cannot load profiling data"
+msgstr "profilointidataa ei voi ladata"
+
+#: elf/sprof.c:784
+#, c-format
+msgid "while stat'ing profiling data file"
+msgstr "luettaessa profilointidatatiedoston tilaa"
+
+#: elf/sprof.c:792
+#, c-format
+msgid "profiling data file `%s' does not match shared object `%s'"
+msgstr "profilointidatatiedosto â€%s†ei vastaa jaettua objektia â€%sâ€"
+
+#: elf/sprof.c:803
+#, c-format
+msgid "failed to mmap the profiling data file"
+msgstr "profilointidatatiedoston muistikartoitus epäonnistui"
+
+#: elf/sprof.c:811
+#, c-format
+msgid "error while closing the profiling data file"
+msgstr "virhe suljettaessa profilointidatatiedostoa"
+
+#: elf/sprof.c:820 elf/sprof.c:890
+#, c-format
+msgid "cannot create internal descriptor"
+msgstr "sisäistä kahvaa ei voi ladata"
+
+#: elf/sprof.c:866
+#, c-format
+msgid "`%s' is no correct profile data file for `%s'"
+msgstr "â€%s†ei ole oikea profiilidatatiedosto â€%sâ€:lle"
-#: iconv/iconv_charmap.c:177 iconv/iconv_prog.c:311
+#: elf/sprof.c:1047 elf/sprof.c:1105
+#, c-format
+msgid "cannot allocate symbol data"
+msgstr "symbolidatalle ei voi varata muistia"
+
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "tulostiedostoa ei voi avata"
+
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
-msgstr "virhe suljettaessa syötettä \"%s\""
+msgstr "virhe suljettaessa syötettä â€%sâ€"
-#: iconv/iconv_charmap.c:443
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
-msgstr "virheellinen syötesarja kohdassa %Zd"
+msgstr "virheellinen syötesarja kohdassa %Zd"
-#: iconv/iconv_charmap.c:462 iconv/iconv_prog.c:503
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
+#, c-format
msgid "incomplete character or shift sequence at end of buffer"
-msgstr "epätäydellinen merkki- tai siirtosarja puskurin lopussa"
+msgstr "epätäydellinen merkki- tai siirtosarja puskurin lopussa"
-#: iconv/iconv_charmap.c:507 iconv/iconv_charmap.c:543 iconv/iconv_prog.c:546
-#: iconv/iconv_prog.c:582
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
+#, c-format
msgid "error while reading the input"
-msgstr "virhe luettaessa syötettä"
+msgstr "virhe luettaessa syötettä"
-#: iconv/iconv_charmap.c:525 iconv/iconv_prog.c:564
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
+#, c-format
msgid "unable to allocate buffer for input"
-msgstr "muistin varaaminen syötepuskurille ei onnistu"
+msgstr "muistin varaaminen syötepuskurille ei onnistu"
-#: iconv/iconv_prog.c:61
+#: iconv/iconv_prog.c:60
msgid "Input/Output format specification:"
-msgstr "Syöte/tulostemuodon määrittely:"
+msgstr "Syöte/tulostemuodon määrittely:"
-#: iconv/iconv_prog.c:62
+#: iconv/iconv_prog.c:61
msgid "encoding of original text"
-msgstr "alkuperäisen tekstin koodaus"
+msgstr "alkuperäisen tekstin koodaus"
-#: iconv/iconv_prog.c:63
+#: iconv/iconv_prog.c:62
msgid "encoding for output"
msgstr "tulosteen koodaus"
-#: iconv/iconv_prog.c:64
+#: iconv/iconv_prog.c:63
msgid "Information:"
msgstr "Tietoa:"
-#: iconv/iconv_prog.c:65
+#: iconv/iconv_prog.c:64
msgid "list all known coded character sets"
-msgstr "luettele kaikki tunnetut koodatut merkistöt"
+msgstr "luettele kaikki tunnetut koodatut merkistöt"
-#: iconv/iconv_prog.c:66 locale/programs/localedef.c:128
+#: iconv/iconv_prog.c:65 locale/programs/localedef.c:127
msgid "Output control:"
msgstr "Tulosteen hallinta:"
-#: iconv/iconv_prog.c:67
+#: iconv/iconv_prog.c:66
msgid "omit invalid characters from output"
-msgstr "jätä virheelliset merkit pois tulosteesta"
+msgstr "jätä virheelliset merkit pois tulosteesta"
-#: iconv/iconv_prog.c:68
+#: iconv/iconv_prog.c:67
msgid "output file"
msgstr "tulostiedosto"
-#: iconv/iconv_prog.c:69
+#: iconv/iconv_prog.c:68
msgid "suppress warnings"
msgstr "vaienna varoitukset"
-#: iconv/iconv_prog.c:70
+#: iconv/iconv_prog.c:69
msgid "print progress information"
-msgstr "näytä tieto etenemisestä"
+msgstr "näytä tieto etenemisestä"
-#: iconv/iconv_prog.c:75
+#: iconv/iconv_prog.c:74
msgid "Convert encoding of given files from one encoding to another."
msgstr "Muunna annetun tiedoston koodaus toiseksi."
-#: iconv/iconv_prog.c:79
+#: iconv/iconv_prog.c:78
msgid "[FILE...]"
msgstr "[TIEDOSTO...]"
-#: iconv/iconv_prog.c:199
-msgid "cannot open output file"
-msgstr "tulostiedostoa ei voi avata"
-
-#: iconv/iconv_prog.c:241
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
-msgstr "muunnos \"%s\" <-> \"%s\" ei ole tuettu"
+msgstr "muunnos â€%s†<-> â€%s†ei ole tuettu"
-#: iconv/iconv_prog.c:246
+#: iconv/iconv_prog.c:239
#, c-format
msgid "conversion from `%s' is not supported"
-msgstr "muunnos merkistöstä \"%s\" ei ole tuettu"
+msgstr "muunnos merkistöstä â€%s†ei ole tuettu"
-#: iconv/iconv_prog.c:253
+#: iconv/iconv_prog.c:246
#, c-format
msgid "conversion to `%s' is not supported"
-msgstr "muunnos merkistöön \"%s\" ei ole tuettu"
+msgstr "muunnos merkistöön â€%s†ei ole tuettu"
-#: iconv/iconv_prog.c:257
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
-msgstr "muunnos \"%s\" -> \"%s\" ei ole tuettu"
+msgstr "muunnos â€%s†-> â€%s†ei ole tuettu"
-#: iconv/iconv_prog.c:263
+#: iconv/iconv_prog.c:260
+#, c-format
msgid "failed to start conversion processing"
-msgstr "muunnoksen aloittaminen epäonnistui"
+msgstr "muunnoksen aloittaminen epäonnistui"
#: iconv/iconv_prog.c:358
+#, c-format
msgid "error while closing output file"
msgstr "virhe suljettaessa tulostiedostoa"
-#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
-#: locale/programs/localedef.c:372 catgets/gencat.c:233
-#: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
-msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
-msgstr ""
-"Ilmoita ohjelmistovirheistä \"glibcbug\"-skriptillä (englanniksi) osoitteeseen <bugs@gnu.org>.\n"
-"Suomennoksen virheistä voit ilmoittaa listalle <translation-team-fi@lists.sourceforge.net>.\n"
-
-#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
-#: elf/sprof.c:349
+#: iconv/iconv_prog.c:456
#, c-format
-msgid ""
-"Copyright (C) %s Free Software Foundation, Inc.\n"
-"This is free software; see the source for copying conditions. There is NO\n"
-"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-msgstr ""
-"Copyright © %s Free Software Foundation, Inc.\n"
-"Tämä on vapaa ohjelmisto; katso kopiointiehdot lähdekoodista. Takuuta EI\n"
-"ole, ei edes KAUPALLISESTI HYVÄKSYTTÄVÄSTÄ LAADUSTA tai SOPIVUUDESTA TIETTYYN TARKOITUKSEEN.\n"
-
-#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
-#: elf/sprof.c:355
-#, c-format
-msgid "Written by %s.\n"
-msgstr "Kirjoittanut %s.\n"
-
-#: iconv/iconv_prog.c:456 iconv/iconv_prog.c:482
msgid "conversion stopped due to problem in writing the output"
-msgstr "muunnos pysäytettiin tulosteen kirjoitusongelman takia"
+msgstr "muunnos pysäytettiin tulosteen kirjoitusongelman takia"
-#: iconv/iconv_prog.c:499
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
-msgstr "virheellinen syötesarja kohdassa %ld"
+msgstr "virheellinen syötesarja kohdassa %ld"
-#: iconv/iconv_prog.c:507
+#: iconv/iconv_prog.c:541
+#, c-format
msgid "internal error (illegal descriptor)"
-msgstr "sisäinen virhe (virheellinen kahva)"
+msgstr "sisäinen virhe (virheellinen kahva)"
-#: iconv/iconv_prog.c:510
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
msgstr "tuntematon iconv()-virhe %d"
-#: iconv/iconv_prog.c:753
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -356,10 +1347,10 @@ msgid ""
"\n"
" "
msgstr ""
-"Seuraavassa listassa ovat kaikki tunnetut koodatut merkistöt. Se ei\n"
-"kuitenkaan välttämättä tarkoita sitä, että kaikkia näiden nimien\n"
-"yhdistelmiä voidaan käyttää FROM- ja TO-komentoriviparametreina. Yksi\n"
-"koodattu merkistö voi olla listalla useilla eri nimillä (aliaksilla).\n"
+"Seuraavassa listassa ovat kaikki tunnetut koodatut merkistöt. Se ei\n"
+"kuitenkaan välttämättä tarkoita sitä, että kaikkia näiden nimien\n"
+"yhdistelmiä voidaan käyttää FROM- ja TO-komentoriviparametreina. Yksi\n"
+"koodattu merkistö voi olla listalla useilla eri nimillä (aliaksilla).\n"
"\n"
" "
@@ -371,991 +1362,1099 @@ msgstr "Luo nopeasti latautuva iconv-moduuliasetustiedosto."
msgid "[DIR...]"
msgstr "[HAKEMISTO...]"
-#: iconv/iconvconfig.c:126
+#: iconv/iconvconfig.c:127
msgid "Prefix used for all file accesses"
-msgstr "Jokaisen tiedoston käsittelyssä käytettävä etuliite"
+msgstr "Jokaisen tiedoston käsittelyssä käytettävä etuliite"
-#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
+#: iconv/iconvconfig.c:128
+msgid "Put output in FILE instead of installed location (--prefix does not apply to FILE)"
+msgstr ""
+
+#: iconv/iconvconfig.c:132
+msgid "Do not search standard directories, only those on the command line"
+msgstr ""
+
+#: iconv/iconvconfig.c:301
+#, c-format
+msgid "Directory arguments required when using --nostdlib"
+msgstr ""
+
+#: iconv/iconvconfig.c:343 locale/programs/localedef.c:291
+#, c-format
msgid "no output file produced because warnings were issued"
msgstr "tulostiedostoa ei tuotettu varoituksen takia"
-#: iconv/iconvconfig.c:405
+#: iconv/iconvconfig.c:429
+#, c-format
msgid "while inserting in search tree"
-msgstr "lisättäessä hakupuuhun"
+msgstr "lisättäessä hakupuuhun"
-#: iconv/iconvconfig.c:1204
+#: iconv/iconvconfig.c:1238
+#, c-format
msgid "cannot generate output file"
msgstr "tulostiedostoa ei voi luoda"
+#: inet/rcmd.c:157
+msgid "rcmd: Cannot allocate memory\n"
+msgstr "rcmd: Muistin varaaminen ei onnistu\n"
+
+#: inet/rcmd.c:172
+msgid "rcmd: socket: All ports in use\n"
+msgstr "rcmd: socket: Kaikki portit käytössä\n"
+
+#: inet/rcmd.c:200
+#, c-format
+msgid "connect to address %s: "
+msgstr "yhdistä osoitteeseen %s: "
+
+#: inet/rcmd.c:213
+#, c-format
+msgid "Trying %s...\n"
+msgstr "Yritetään %s...\n"
+
+#: inet/rcmd.c:249
+#, c-format
+msgid "rcmd: write (setting up stderr): %m\n"
+msgstr "rcmd: write (alustetaan vakiovirhetuloste): %m\n"
+
+#: inet/rcmd.c:265
+#, c-format
+msgid "rcmd: poll (setting up stderr): %m\n"
+msgstr "rcmd: poll (alustetaan vakiovirhetuloste): %m\n"
+
+#: inet/rcmd.c:268
+msgid "poll: protocol failure in circuit setup\n"
+msgstr "poll: protokollavirhe piiriasetuksissa\n"
+
+#: inet/rcmd.c:301
+msgid "socket: protocol failure in circuit setup\n"
+msgstr "socket: protokollavirhe piiriasetuksissa\n"
+
+#: inet/rcmd.c:325
+#, c-format
+msgid "rcmd: %s: short read"
+msgstr "rcmd: %s: vajaa luku"
+
+#: inet/rcmd.c:481
+msgid "lstat failed"
+msgstr "tiedoston tilan luku epäonnistui"
+
+#: inet/rcmd.c:488
+msgid "cannot open"
+msgstr "ei voi avata"
+
+#: inet/rcmd.c:490
+msgid "fstat failed"
+msgstr "tiedoston tilan luku epäonnistui"
+
+#: inet/rcmd.c:492
+msgid "bad owner"
+msgstr "virheellinen omistaja"
+
+#: inet/rcmd.c:494
+msgid "writeable by other than owner"
+msgstr "kirjoitusoikeus muulla kuin omistajalla"
+
+#: inet/rcmd.c:496
+msgid "hard linked somewhere"
+msgstr "kovalinkitetty johonkin"
+
+#: inet/ruserpass.c:170 inet/ruserpass.c:193
+msgid "out of memory"
+msgstr "muisti lopussa"
+
+#: inet/ruserpass.c:184
+msgid "Error: .netrc file is readable by others."
+msgstr "Virhe: .netrc-tiedosto on muiden luettavissa."
+
+#: inet/ruserpass.c:185
+msgid "Remove password or make file unreadable by others."
+msgstr "Poista salasana tai estä muilta tiedoston luku."
+
+#: inet/ruserpass.c:277
+#, c-format
+msgid "Unknown .netrc keyword %s"
+msgstr "Tuntematon .netrc-avainsana %s"
+
+#: libidn/nfkc.c:464
+#, fuzzy
+msgid "Character out of range for UTF-8"
+msgstr "Kanavan numero on sallitun välin ulkopuolella"
+
#: locale/programs/charmap-dir.c:59
#, c-format
msgid "cannot read character map directory `%s'"
-msgstr "merkistökarttahakemistoa \"%s\" ei voi lukea"
+msgstr "merkistökarttahakemistoa â€%s†ei voi lukea"
-#: locale/programs/charmap.c:135
+#: locale/programs/charmap.c:138
#, c-format
msgid "character map file `%s' not found"
-msgstr "merkistökarttatiedostoa \"%s\" ei löydy"
+msgstr "merkistökarttatiedostoa â€%s†ei löydy"
-#: locale/programs/charmap.c:193
+#: locale/programs/charmap.c:195
#, c-format
msgid "default character map file `%s' not found"
-msgstr "oletusmerkistökarttatiedostoa \"%s\" ei löydy"
+msgstr "oletusmerkistökarttatiedostoa â€%s†ei löydy"
-#: locale/programs/charmap.c:255
+#: locale/programs/charmap.c:258
#, c-format
msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
-msgstr "merkistökartta \"%s\" ei ole ASCII-yhteensopiva, maa-asetusto ei ole ISO C -yhteensopiva\n"
+msgstr "merkistökartta â€%s†ei ole ASCII-yhteensopiva, maa-asetusto ei ole ISO C -yhteensopiva\n"
-#: locale/programs/charmap.c:332
+#: locale/programs/charmap.c:337
#, c-format
msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
msgstr "%s: <mb_cur_max> on oltava suurempi kuin <mb_cur_min>\n"
-#: locale/programs/charmap.c:352 locale/programs/charmap.c:369
-#: locale/programs/repertoire.c:175
-#, c-format
+#: locale/programs/charmap.c:357 locale/programs/charmap.c:374
+#: locale/programs/repertoire.c:174
+#, fuzzy, c-format
msgid "syntax error in prolog: %s"
-msgstr "syntaksivirhe \"prolog\":issa: %s"
+msgstr "syntaksivirhe â€prologâ€:issa: %s"
-#: locale/programs/charmap.c:353
+#: locale/programs/charmap.c:358
msgid "invalid definition"
-msgstr "virheellinen määrittely"
+msgstr "virheellinen määrittely"
-#: locale/programs/charmap.c:370 locale/programs/locfile.c:126
-#: locale/programs/locfile.c:153 locale/programs/repertoire.c:176
+#: locale/programs/charmap.c:375 locale/programs/locfile.c:126
+#: locale/programs/locfile.c:153 locale/programs/repertoire.c:175
msgid "bad argument"
msgstr "virheellinen argumentti"
-#: locale/programs/charmap.c:398
+#: locale/programs/charmap.c:403
#, c-format
msgid "duplicate definition of <%s>"
-msgstr "kaksinkertainen <%s>:n määrittely"
+msgstr "kaksinkertainen <%s>:n määrittely"
-#: locale/programs/charmap.c:405
+#: locale/programs/charmap.c:410
#, c-format
msgid "value for <%s> must be 1 or greater"
msgstr "<%s>:n arvon on oltava 1 tai suurempi"
-#: locale/programs/charmap.c:417
+#: locale/programs/charmap.c:422
#, c-format
msgid "value of <%s> must be greater or equal than the value of <%s>"
-msgstr "<%s>:n arvon on oltava suurempi tai yhtäsuuri kuin <%s>:n arvo"
+msgstr "<%s>:n arvon on oltava suurempi tai yhtäsuuri kuin <%s>:n arvo"
-#: locale/programs/charmap.c:440 locale/programs/repertoire.c:184
+#: locale/programs/charmap.c:445 locale/programs/repertoire.c:183
#, c-format
msgid "argument to <%s> must be a single character"
-msgstr "argumentin <%s>:lle on oltava yksittäinen merkki"
+msgstr "argumentin <%s>:lle on oltava yksittäinen merkki"
-#: locale/programs/charmap.c:466
+#: locale/programs/charmap.c:471
msgid "character sets with locking states are not supported"
-msgstr "lukitustiloja sisältäviä merkistöjä ei tueta"
+msgstr "lukitustiloja sisältäviä merkistöjä ei tueta"
-#: locale/programs/charmap.c:493 locale/programs/charmap.c:547
-#: locale/programs/charmap.c:579 locale/programs/charmap.c:673
-#: locale/programs/charmap.c:728 locale/programs/charmap.c:769
-#: locale/programs/charmap.c:810
+#: locale/programs/charmap.c:498 locale/programs/charmap.c:552
+#: locale/programs/charmap.c:584 locale/programs/charmap.c:678
+#: locale/programs/charmap.c:733 locale/programs/charmap.c:774
+#: locale/programs/charmap.c:815
#, c-format
msgid "syntax error in %s definition: %s"
-msgstr "syntaksivirhe %s-määrittelyssä: %s"
+msgstr "syntaksivirhe %s-määrittelyssä: %s"
-#: locale/programs/charmap.c:494 locale/programs/charmap.c:674
-#: locale/programs/charmap.c:770 locale/programs/repertoire.c:231
+#: locale/programs/charmap.c:499 locale/programs/charmap.c:679
+#: locale/programs/charmap.c:775 locale/programs/repertoire.c:230
msgid "no symbolic name given"
-msgstr "symbolista nimeä ei ole annettu"
+msgstr "symbolista nimeä ei ole annettu"
-#: locale/programs/charmap.c:548
+#: locale/programs/charmap.c:553
msgid "invalid encoding given"
msgstr "annettu koodaus on virheellinen"
-#: locale/programs/charmap.c:557
+#: locale/programs/charmap.c:562
msgid "too few bytes in character encoding"
-msgstr "liian vähän tavuja merkkikoodauksessa"
+msgstr "liian vähän tavuja merkkikoodauksessa"
-#: locale/programs/charmap.c:559
+#: locale/programs/charmap.c:564
msgid "too many bytes in character encoding"
msgstr "liian monta tavua merkkikoodauksessa"
-#: locale/programs/charmap.c:581 locale/programs/charmap.c:729
-#: locale/programs/charmap.c:812 locale/programs/repertoire.c:297
+#: locale/programs/charmap.c:586 locale/programs/charmap.c:734
+#: locale/programs/charmap.c:817 locale/programs/repertoire.c:296
msgid "no symbolic name given for end of range"
-msgstr "välin lopulle ei ole annettu symbolista nimeä"
-
-#: locale/programs/charmap.c:605 locale/programs/locfile.h:96
-#: locale/programs/repertoire.c:314
+msgstr "välin lopulle ei ole annettu symbolista nimeä"
+
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
+#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
+#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
+#: locale/programs/ld-identification.c:452
+#: locale/programs/ld-measurement.c:238 locale/programs/ld-messages.c:332
+#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:307
+#: locale/programs/ld-numeric.c:368 locale/programs/ld-paper.c:241
+#: locale/programs/ld-telephone.c:313 locale/programs/ld-time.c:1221
+#: locale/programs/repertoire.c:313
#, c-format
-msgid "`%1$s' definition does not end with `END %1$s'"
-msgstr "\"%1$s\"-määrittelyn lopusta puuttuu \"END %1$s\""
+msgid "%1$s: definition does not end with `END %1$s'"
+msgstr "%1$s: määrittelyn lopusta puuttuu â€END %1$sâ€"
-#: locale/programs/charmap.c:638
+#: locale/programs/charmap.c:643
msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
-msgstr "CHARMAP-määrittelyn jälkeen vain WIDTH-määrittelyt ovat sallittuja"
+msgstr "CHARMAP-määrittelyn jälkeen vain WIDTH-määrittelyt ovat sallittuja"
-#: locale/programs/charmap.c:646 locale/programs/charmap.c:709
+#: locale/programs/charmap.c:651 locale/programs/charmap.c:714
#, c-format
msgid "value for %s must be an integer"
msgstr "%s:n arvon on oltava kokonaisluku"
-#: locale/programs/charmap.c:837
+#: locale/programs/charmap.c:842
#, c-format
msgid "%s: error in state machine"
msgstr "%s: virhe tilakoneessa"
-#: locale/programs/charmap.c:845 locale/programs/ld-address.c:605
-#: locale/programs/ld-collate.c:2635 locale/programs/ld-collate.c:3793
-#: locale/programs/ld-ctype.c:2216 locale/programs/ld-ctype.c:2977
-#: locale/programs/ld-identification.c:469
-#: locale/programs/ld-measurement.c:255 locale/programs/ld-messages.c:349
-#: locale/programs/ld-monetary.c:952 locale/programs/ld-name.c:324
-#: locale/programs/ld-numeric.c:392 locale/programs/ld-paper.c:258
-#: locale/programs/ld-telephone.c:330 locale/programs/ld-time.c:1217
-#: locale/programs/locfile.h:103 locale/programs/repertoire.c:325
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
+#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
+#: locale/programs/ld-identification.c:468
+#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
+#: locale/programs/ld-monetary.c:959 locale/programs/ld-name.c:323
+#: locale/programs/ld-numeric.c:384 locale/programs/ld-paper.c:257
+#: locale/programs/ld-telephone.c:329 locale/programs/ld-time.c:1237
+#: locale/programs/locfile.c:826 locale/programs/repertoire.c:324
#, c-format
msgid "%s: premature end of file"
msgstr "%s: ennenaikainen tiedoston loppu"
-#: locale/programs/charmap.c:864 locale/programs/charmap.c:875
+#: locale/programs/charmap.c:869 locale/programs/charmap.c:880
#, c-format
msgid "unknown character `%s'"
-msgstr "tuntematon merkki \"%s\""
+msgstr "tuntematon merkki â€%sâ€"
-#: locale/programs/charmap.c:883
+#: locale/programs/charmap.c:888
#, c-format
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
-msgstr "välin alku- ja lopputavusarjojen tavumäärä ei ole sama: %d vs %d"
+msgstr "välin alku- ja lopputavusarjojen tavumäärä ei ole sama: %d vs %d"
-#: locale/programs/charmap.c:987 locale/programs/ld-collate.c:2915
-#: locale/programs/repertoire.c:420
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
+#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
-msgstr "virheelliset nimet merkkivälille"
+msgstr "virheelliset nimet merkkivälille"
-#: locale/programs/charmap.c:999 locale/programs/repertoire.c:432
+#: locale/programs/charmap.c:1005 locale/programs/repertoire.c:431
msgid "hexadecimal range format should use only capital characters"
-msgstr "heksadesimaalisessa muodossa tulee käyttää vain isoja kirjaimia"
+msgstr "heksadesimaalisessa muodossa tulee käyttää vain isoja kirjaimia"
-#: locale/programs/charmap.c:1017
+#: locale/programs/charmap.c:1023 locale/programs/repertoire.c:449
#, c-format
-msgid "<%s> and <%s> are illegal names for range"
-msgstr "<%s> ja <%s> ovat virheellisiä nimiä välille"
+msgid "<%s> and <%s> are invalid names for range"
+msgstr "<%s> ja <%s> ovat virheellisiä nimiä välille"
-#: locale/programs/charmap.c:1023
-msgid "upper limit in range is not higher then lower limit"
-msgstr "välin yläraja ei ole suurempi kuin alaraja"
+#: locale/programs/charmap.c:1029 locale/programs/repertoire.c:456
+msgid "upper limit in range is smaller than lower limit"
+msgstr "välin yläraja on pienempi kuin alaraja"
-#: locale/programs/charmap.c:1081
+#: locale/programs/charmap.c:1087
msgid "resulting bytes for range not representable."
-msgstr "välin tulostavut eivät ole esitettävissä"
+msgstr "välin tulostavut eivät ole esitettävissä"
-#: locale/programs/ld-address.c:134 locale/programs/ld-collate.c:1519
-#: locale/programs/ld-ctype.c:416 locale/programs/ld-identification.c:134
-#: locale/programs/ld-measurement.c:95 locale/programs/ld-messages.c:98
-#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:95
-#: locale/programs/ld-numeric.c:99 locale/programs/ld-paper.c:92
-#: locale/programs/ld-telephone.c:95 locale/programs/ld-time.c:160
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
+#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
+#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
+#: locale/programs/ld-numeric.c:98 locale/programs/ld-paper.c:91
+#: locale/programs/ld-telephone.c:94 locale/programs/ld-time.c:159
#, c-format
msgid "No definition for %s category found"
-msgstr "Kategorian %s määrittelyä ei löytynyt"
-
-#: locale/programs/ld-address.c:145 locale/programs/ld-address.c:183
-#: locale/programs/ld-address.c:201 locale/programs/ld-address.c:228
-#: locale/programs/ld-address.c:290 locale/programs/ld-address.c:309
-#: locale/programs/ld-address.c:322 locale/programs/ld-identification.c:147
-#: locale/programs/ld-measurement.c:106 locale/programs/ld-monetary.c:206
-#: locale/programs/ld-monetary.c:244 locale/programs/ld-monetary.c:260
-#: locale/programs/ld-monetary.c:272 locale/programs/ld-name.c:106
-#: locale/programs/ld-name.c:143 locale/programs/ld-numeric.c:113
-#: locale/programs/ld-numeric.c:127 locale/programs/ld-paper.c:103
-#: locale/programs/ld-paper.c:112 locale/programs/ld-telephone.c:106
-#: locale/programs/ld-telephone.c:163 locale/programs/ld-time.c:176
-#: locale/programs/ld-time.c:197
+msgstr "Kategorian %s määrittelyä ei löytynyt"
+
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
+#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
+#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
+#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
+#: locale/programs/ld-name.c:142 locale/programs/ld-numeric.c:112
+#: locale/programs/ld-numeric.c:126 locale/programs/ld-paper.c:102
+#: locale/programs/ld-paper.c:111 locale/programs/ld-telephone.c:105
+#: locale/programs/ld-telephone.c:162 locale/programs/ld-time.c:175
+#: locale/programs/ld-time.c:196
#, c-format
msgid "%s: field `%s' not defined"
-msgstr "%s: kenttää \"%s\" ei ole määritelty"
+msgstr "%s: kenttää â€%s†ei ole määritelty"
-#: locale/programs/ld-address.c:157 locale/programs/ld-address.c:209
-#: locale/programs/ld-address.c:235 locale/programs/ld-address.c:265
-#: locale/programs/ld-name.c:118 locale/programs/ld-telephone.c:118
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
+#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
-msgstr "%s: kenttä \"%s\" ei saa olla tyhjä"
+msgstr "%s: kenttä â€%s†ei saa olla tyhjä"
-#: locale/programs/ld-address.c:169
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
-msgstr "%s: virheellinen ohjaussarja \"%%%c\" kentässä \"%s\""
+msgstr "%s: virheellinen ohjaussarja â€%%%c†kentässä â€%sâ€"
-#: locale/programs/ld-address.c:220
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
-msgstr "%s: terminologiakielikoodia \"%s\" ei ole määritelty"
+msgstr "%s: terminologiakielikoodia â€%s†ei ole määritelty"
+
+#: locale/programs/ld-address.c:246
+#, c-format
+msgid "%s: field `%s' must not be defined"
+msgstr "%s: kenttä â€%s†ei saa olla määritelty"
-#: locale/programs/ld-address.c:247 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
-msgstr "%s: kielilyhennettä \"%s\" ei ole määritelty"
+msgstr "%s: kielilyhennettä â€%s†ei ole määritelty"
-#: locale/programs/ld-address.c:254 locale/programs/ld-address.c:282
-#: locale/programs/ld-address.c:316 locale/programs/ld-address.c:328
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
-msgstr "%s: \"%s\"-arvo ei vastaa \"%s\"-arvoa"
+msgstr "%s: â€%sâ€-arvo ei vastaa â€%sâ€-arvoa"
-#: locale/programs/ld-address.c:301
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
-msgstr "%s: numeerinen maakoodi \"%d\" ei kelpaa"
-
-#: locale/programs/ld-address.c:497 locale/programs/ld-address.c:534
-#: locale/programs/ld-address.c:572 locale/programs/ld-ctype.c:2592
-#: locale/programs/ld-identification.c:365
-#: locale/programs/ld-measurement.c:222 locale/programs/ld-messages.c:302
-#: locale/programs/ld-monetary.c:694 locale/programs/ld-monetary.c:729
-#: locale/programs/ld-monetary.c:770 locale/programs/ld-name.c:281
-#: locale/programs/ld-numeric.c:264 locale/programs/ld-paper.c:225
-#: locale/programs/ld-telephone.c:289 locale/programs/ld-time.c:1106
-#: locale/programs/ld-time.c:1148
+msgstr "%s: numeerinen maakoodi â€%d†ei kelpaa"
+
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-identification.c:364
+#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
+#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
+#: locale/programs/ld-monetary.c:777 locale/programs/ld-name.c:280
+#: locale/programs/ld-numeric.c:263 locale/programs/ld-paper.c:224
+#: locale/programs/ld-telephone.c:288 locale/programs/ld-time.c:1126
+#: locale/programs/ld-time.c:1168
#, c-format
msgid "%s: field `%s' declared more than once"
-msgstr "%s: kenttä \"%s\" määritelty useammin kuin kerran"
+msgstr "%s: kenttä â€%s†määritelty useammin kuin kerran"
-#: locale/programs/ld-address.c:501 locale/programs/ld-address.c:539
-#: locale/programs/ld-identification.c:369 locale/programs/ld-messages.c:312
-#: locale/programs/ld-monetary.c:698 locale/programs/ld-monetary.c:733
-#: locale/programs/ld-name.c:285 locale/programs/ld-numeric.c:268
-#: locale/programs/ld-telephone.c:293 locale/programs/ld-time.c:1000
-#: locale/programs/ld-time.c:1069 locale/programs/ld-time.c:1111
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
+#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
+#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
+#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
+#: locale/programs/ld-telephone.c:292 locale/programs/ld-time.c:1020
+#: locale/programs/ld-time.c:1089 locale/programs/ld-time.c:1131
#, c-format
msgid "%s: unknown character in field `%s'"
-msgstr "%s: tuntematon merkki kentässä \"%s\""
+msgstr "%s: tuntematon merkki kentässä â€%sâ€"
-#: locale/programs/ld-address.c:586 locale/programs/ld-collate.c:3775
-#: locale/programs/ld-ctype.c:2957 locale/programs/ld-identification.c:450
-#: locale/programs/ld-measurement.c:236 locale/programs/ld-messages.c:331
-#: locale/programs/ld-monetary.c:934 locale/programs/ld-name.c:306
-#: locale/programs/ld-numeric.c:374 locale/programs/ld-paper.c:240
-#: locale/programs/ld-telephone.c:312 locale/programs/ld-time.c:1199
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
+#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
+#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
+#: locale/programs/ld-numeric.c:366 locale/programs/ld-paper.c:239
+#: locale/programs/ld-telephone.c:311 locale/programs/ld-time.c:1219
#, c-format
msgid "%s: incomplete `END' line"
-msgstr "%s: epätäydellinen \"END\"-rivi"
-
-#: locale/programs/ld-address.c:589 locale/programs/ld-collate.c:2638
-#: locale/programs/ld-collate.c:3777 locale/programs/ld-ctype.c:2219
-#: locale/programs/ld-ctype.c:2960 locale/programs/ld-identification.c:453
-#: locale/programs/ld-measurement.c:239 locale/programs/ld-messages.c:333
-#: locale/programs/ld-monetary.c:936 locale/programs/ld-name.c:308
-#: locale/programs/ld-numeric.c:376 locale/programs/ld-paper.c:242
-#: locale/programs/ld-telephone.c:314 locale/programs/ld-time.c:1201
-#, c-format
-msgid "%1$s: definition does not end with `END %1$s'"
-msgstr "%1$s: määrittelyn lopusta puuttuu \"END %1$s\""
-
-#: locale/programs/ld-address.c:596 locale/programs/ld-collate.c:520
-#: locale/programs/ld-collate.c:572 locale/programs/ld-collate.c:869
-#: locale/programs/ld-collate.c:882 locale/programs/ld-collate.c:2625
-#: locale/programs/ld-collate.c:3784 locale/programs/ld-ctype.c:1947
-#: locale/programs/ld-ctype.c:2206 locale/programs/ld-ctype.c:2782
-#: locale/programs/ld-ctype.c:2968 locale/programs/ld-identification.c:460
-#: locale/programs/ld-measurement.c:246 locale/programs/ld-messages.c:340
-#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:315
-#: locale/programs/ld-numeric.c:383 locale/programs/ld-paper.c:249
-#: locale/programs/ld-telephone.c:321 locale/programs/ld-time.c:1208
+msgstr "%s: epätäydellinen â€ENDâ€-rivi"
+
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
+#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
+#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
+#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
+#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
+#: locale/programs/ld-identification.c:459
+#: locale/programs/ld-measurement.c:245 locale/programs/ld-messages.c:339
+#: locale/programs/ld-monetary.c:950 locale/programs/ld-name.c:314
+#: locale/programs/ld-numeric.c:375 locale/programs/ld-paper.c:248
+#: locale/programs/ld-telephone.c:320 locale/programs/ld-time.c:1228
#, c-format
msgid "%s: syntax error"
msgstr "%s: syntaksivirhe"
-#: locale/programs/ld-collate.c:395
+#: locale/programs/ld-collate.c:417
#, c-format
msgid "`%.*s' already defined in charmap"
-msgstr "\"%.*s\" on jo määritelty merkistökartassa"
+msgstr "â€%.*s†on jo määritelty merkistökartassa"
-#: locale/programs/ld-collate.c:404
+#: locale/programs/ld-collate.c:426
#, c-format
msgid "`%.*s' already defined in repertoire"
-msgstr "\"%.*s\" on jo määritelty valikoimassa"
+msgstr "â€%.*s†on jo määritelty valikoimassa"
-#: locale/programs/ld-collate.c:411
+#: locale/programs/ld-collate.c:433
#, c-format
msgid "`%.*s' already defined as collating symbol"
-msgstr "\"%.*s\" on jo määritelty vertailusymboliksi"
+msgstr "â€%.*s†on jo määritelty vertailusymboliksi"
-#: locale/programs/ld-collate.c:418
+#: locale/programs/ld-collate.c:440
#, c-format
msgid "`%.*s' already defined as collating element"
-msgstr "\"%.*s\" on jo määritelty vertailuelementiksi"
+msgstr "â€%.*s†on jo määritelty vertailuelementiksi"
-#: locale/programs/ld-collate.c:449 locale/programs/ld-collate.c:475
+#: locale/programs/ld-collate.c:471 locale/programs/ld-collate.c:497
#, c-format
msgid "%s: `forward' and `backward' are mutually excluding each other"
-msgstr "%s: \"forward\" ja \"backward\" sulkevat toisensa pois"
+msgstr "%s: â€forward†ja â€backward†sulkevat toisensa pois"
-#: locale/programs/ld-collate.c:459 locale/programs/ld-collate.c:485
-#: locale/programs/ld-collate.c:501
+#: locale/programs/ld-collate.c:481 locale/programs/ld-collate.c:507
+#: locale/programs/ld-collate.c:523
#, c-format
msgid "%s: `%s' mentioned more than once in definition of weight %d"
-msgstr "%s: \"%s\" mainittu useammin kuin kerran painon %d määrittelyssä"
+msgstr "%s: â€%s†mainittu useammin kuin kerran painon %d määrittelyssä"
-#: locale/programs/ld-collate.c:557
+#: locale/programs/ld-collate.c:579
#, c-format
msgid "%s: too many rules; first entry only had %d"
-msgstr "%s: liian monta sääntöä; ensimmäisellä merkinnällä oli vain %d"
+msgstr "%s: liian monta sääntöä; ensimmäisellä merkinnällä oli vain %d"
-#: locale/programs/ld-collate.c:593
+#: locale/programs/ld-collate.c:615
#, c-format
msgid "%s: not enough sorting rules"
-msgstr "%s: ei riittävästi lajittelusääntöjä"
+msgstr "%s: ei riittävästi lajittelusääntöjä"
-#: locale/programs/ld-collate.c:759
+#: locale/programs/ld-collate.c:780
#, c-format
msgid "%s: empty weight string not allowed"
-msgstr "%s: tyhjiä painomerkkijonoja ei sallita"
+msgstr "%s: tyhjiä painomerkkijonoja ei sallita"
-#: locale/programs/ld-collate.c:854
+#: locale/programs/ld-collate.c:875
#, c-format
msgid "%s: weights must use the same ellipsis symbol as the name"
-msgstr "%s: painojen on käytettävä samaa sanankatkaisusymbolia kuin nimen"
+msgstr "%s: painojen on käytettävä samaa sanankatkaisusymbolia kuin nimen"
-#: locale/programs/ld-collate.c:910
+#: locale/programs/ld-collate.c:931
#, c-format
msgid "%s: too many values"
msgstr "%s: liian monta arvoa"
-#: locale/programs/ld-collate.c:1023 locale/programs/ld-collate.c:1194
+#: locale/programs/ld-collate.c:1051 locale/programs/ld-collate.c:1226
#, c-format
msgid "order for `%.*s' already defined at %s:%Zu"
-msgstr "järjestys \"%.*s\":lle on jo määritelty paikassa %s:%Zu"
+msgstr "järjestys â€%.*sâ€:lle on jo määritelty paikassa %s:%Zu"
-#: locale/programs/ld-collate.c:1073
+#: locale/programs/ld-collate.c:1101
#, c-format
msgid "%s: the start and the end symbol of a range must stand for characters"
-msgstr "%s: välin alku- ja loppusymbolien tulee edustaa merkkejä"
+msgstr "%s: välin alku- ja loppusymbolien tulee edustaa merkkejä"
-#: locale/programs/ld-collate.c:1100
+#: locale/programs/ld-collate.c:1128
#, c-format
msgid "%s: byte sequences of first and last character must have the same length"
-msgstr "%s: ensimmäisen ja viimeisen merkin tavusarjojen on oltava saman pituiset"
+msgstr "%s: ensimmäisen ja viimeisen merkin tavusarjojen on oltava saman pituiset"
-#: locale/programs/ld-collate.c:1142
-#, c-format
-msgid "%s: byte sequence of first character of sequence is not lower than that of the last character"
-msgstr "%s: sarjan ensimmäisen merkin tavusarja ei ole matalampi kuin viimeisen"
+#: locale/programs/ld-collate.c:1170
+#, fuzzy, c-format
+msgid "%s: byte sequence of first character of range is not lower than that of the last character"
+msgstr "%s: sarjan ensimmäisen merkin tavusarja ei ole matalampi kuin viimeisen"
-#: locale/programs/ld-collate.c:1263
+#: locale/programs/ld-collate.c:1295
#, c-format
msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
-msgstr "%s: symbolisen välin sanankatkaisu ei saa suoraan seurata sanaa \"order_start\""
+msgstr "%s: symbolisen välin sanankatkaisu ei saa suoraan seurata sanaa â€order_startâ€"
-#: locale/programs/ld-collate.c:1267
+#: locale/programs/ld-collate.c:1299
#, c-format
msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'"
-msgstr "%s: symbolisen välin sanankatkaisua ei saa suoraan seurata \"order_end\""
+msgstr "%s: symbolisen välin sanankatkaisua ei saa suoraan seurata â€order_endâ€"
-#: locale/programs/ld-collate.c:1287 locale/programs/ld-ctype.c:1467
+#: locale/programs/ld-collate.c:1319 locale/programs/ld-ctype.c:1477
#, c-format
msgid "`%s' and `%.*s' are not valid names for symbolic range"
-msgstr "\"%s\" ja \"%.*s\" eivät ole kelvollisia nimiä symboliselle välille"
+msgstr "â€%s†ja â€%.*s†eivät ole kelvollisia nimiä symboliselle välille"
-#: locale/programs/ld-collate.c:1333 locale/programs/ld-collate.c:3712
+#: locale/programs/ld-collate.c:1369 locale/programs/ld-collate.c:3858
#, c-format
msgid "%s: order for `%.*s' already defined at %s:%Zu"
-msgstr "%s: järjestys \"%.*s\":lle on jo määritelty kohdassa %s:%Zu"
+msgstr "%s: järjestys â€%.*sâ€:lle on jo määritelty kohdassa %s:%Zu"
-#: locale/programs/ld-collate.c:1342
+#: locale/programs/ld-collate.c:1378
#, c-format
msgid "%s: `%s' must be a character"
-msgstr "%s: \"%s\" on oltava merkki"
+msgstr "%s: â€%s†on oltava merkki"
-#: locale/programs/ld-collate.c:1535
+#: locale/programs/ld-collate.c:1573
#, c-format
msgid "%s: `position' must be used for a specific level in all sections or none"
-msgstr "%s: \"position\" on käytetävä tietylle tasolle kaikissa osissa tai ei yhdessäkään"
+msgstr "%s: â€position†on käytetävä tietylle tasolle kaikissa osissa tai ei yhdessäkään"
-#: locale/programs/ld-collate.c:1560
+#: locale/programs/ld-collate.c:1598
#, c-format
msgid "symbol `%s' not defined"
-msgstr "symbolia \"%s\" ei ole määritelty"
+msgstr "symbolia â€%s†ei ole määritelty"
-#: locale/programs/ld-collate.c:1636 locale/programs/ld-collate.c:1742
+#: locale/programs/ld-collate.c:1674 locale/programs/ld-collate.c:1780
#, c-format
msgid "symbol `%s' has the same encoding as"
-msgstr "symbolilla \"%s\" on sama koodaus kuin"
+msgstr "symbolilla â€%s†on sama koodaus kuin"
-#: locale/programs/ld-collate.c:1640 locale/programs/ld-collate.c:1746
+#: locale/programs/ld-collate.c:1678 locale/programs/ld-collate.c:1784
#, c-format
msgid "symbol `%s'"
-msgstr "symboli \"%s\""
+msgstr "symboli â€%sâ€"
-#: locale/programs/ld-collate.c:1788
+#: locale/programs/ld-collate.c:1826
+#, c-format
msgid "no definition of `UNDEFINED'"
-msgstr "\"UNDEFINED\" ei ole määritelty"
+msgstr "â€UNDEFINED†ei ole määritelty"
-#: locale/programs/ld-collate.c:1817
+#: locale/programs/ld-collate.c:1855
+#, c-format
msgid "too many errors; giving up"
-msgstr "liian monta virhettä; luovutetaan"
+msgstr "liian monta virhettä; luovutetaan"
+
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
+#, fuzzy, c-format
+msgid "%s: nested conditionals not supported"
+msgstr "Toiminto ei ole tuettu"
+
+#: locale/programs/ld-collate.c:2677
+#, c-format
+msgid "%s: more then one 'else'"
+msgstr "%s: useampi kuin yksi â€elseâ€"
-#: locale/programs/ld-collate.c:2720
+#: locale/programs/ld-collate.c:2852
#, c-format
msgid "%s: duplicate definition of `%s'"
-msgstr "%s: kaksinkertainen määrittely \"%s\""
+msgstr "%s: kaksinkertainen määrittely â€%sâ€"
-#: locale/programs/ld-collate.c:2756
+#: locale/programs/ld-collate.c:2888
#, c-format
msgid "%s: duplicate declaration of section `%s'"
-msgstr "%s: kaksinkertainen määrittely osalle \"%s\""
+msgstr "%s: kaksinkertainen määrittely osalle â€%sâ€"
-#: locale/programs/ld-collate.c:2895
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
-msgstr "%s: tuntematon merkki vertailusymbolin nimessä"
+msgstr "%s: tuntematon merkki vertailusymbolin nimessä"
-#: locale/programs/ld-collate.c:3027
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
-msgstr "%s: tuntematon merkki yhtäläisyysmäärittelyn nimessä"
+msgstr "%s: tuntematon merkki yhtäläisyysmäärittelyn nimessä"
-#: locale/programs/ld-collate.c:3040
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
-msgstr "%s: tuntematon merkki yhtäläisyysmäärittelyn arvossa"
+msgstr "%s: tuntematon merkki yhtäläisyysmäärittelyn arvossa"
-#: locale/programs/ld-collate.c:3050
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
-msgstr "%s: tuntematon symboli \"%s\" yhtäläisyysmäärittelyssä"
+msgstr "%s: tuntematon symboli â€%s†yhtäläisyysmäärittelyssä"
-#: locale/programs/ld-collate.c:3059
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
-msgstr "virhe lisättäessä yhtäläisyysvertailusymbolia"
+msgstr "virhe lisättäessä yhtäläisyysvertailusymbolia"
-#: locale/programs/ld-collate.c:3089
+#: locale/programs/ld-collate.c:3221
#, c-format
msgid "duplicate definition of script `%s'"
-msgstr "kaksinkertainen skriptin \"%s\" määrittely"
+msgstr "kaksinkertainen skriptin â€%s†määrittely"
-#: locale/programs/ld-collate.c:3137
-#, c-format
-msgid "%s: unknown section name `%s'"
-msgstr "%s: tuntematon osan nimi \"%s\""
+#: locale/programs/ld-collate.c:3269
+#, fuzzy, c-format
+msgid "%s: unknown section name `%.*s'"
+msgstr "%s: tuntematon osan nimi â€%sâ€"
-#: locale/programs/ld-collate.c:3165
+#: locale/programs/ld-collate.c:3298
#, c-format
msgid "%s: multiple order definitions for section `%s'"
-msgstr "%s: useita järjestysmäärittelyjä osalle \"%s\""
+msgstr "%s: useita järjestysmäärittelyjä osalle â€%sâ€"
-#: locale/programs/ld-collate.c:3190
+#: locale/programs/ld-collate.c:3326
#, c-format
msgid "%s: invalid number of sorting rules"
-msgstr "%s: virheellinen määrä lajittelusääntöjä"
+msgstr "%s: virheellinen määrä lajittelusääntöjä"
-#: locale/programs/ld-collate.c:3217
+#: locale/programs/ld-collate.c:3353
#, c-format
msgid "%s: multiple order definitions for unnamed section"
-msgstr "%s: useita järjestysmäärittelyjä nimettömälle osalle"
+msgstr "%s: useita järjestysmäärittelyjä nimettömälle osalle"
-#: locale/programs/ld-collate.c:3271 locale/programs/ld-collate.c:3394
-#: locale/programs/ld-collate.c:3753
+#: locale/programs/ld-collate.c:3407 locale/programs/ld-collate.c:3537
+#: locale/programs/ld-collate.c:3900
#, c-format
msgid "%s: missing `order_end' keyword"
-msgstr "%s: avainsana \"order_end\" puuttuu"
+msgstr "%s: avainsana â€order_end†puuttuu"
-#: locale/programs/ld-collate.c:3329
+#: locale/programs/ld-collate.c:3470
#, c-format
msgid "%s: order for collating symbol %.*s not yet defined"
-msgstr "%s: vertailusymbolin %.*s järjestystä ei ole vielä määritelty"
+msgstr "%s: vertailusymbolin %.*s järjestystä ei ole vielä määritelty"
-#: locale/programs/ld-collate.c:3345
+#: locale/programs/ld-collate.c:3488
#, c-format
msgid "%s: order for collating element %.*s not yet defined"
-msgstr "%s: vertailuelementin %.*s järjestystä ei ole vielä määritelty"
+msgstr "%s: vertailuelementin %.*s järjestystä ei ole vielä määritelty"
-#: locale/programs/ld-collate.c:3356
+#: locale/programs/ld-collate.c:3499
#, c-format
msgid "%s: cannot reorder after %.*s: symbol not known"
-msgstr "%s: uudelleenjärjestys kohdan %.*s jälkeen ei onnistu: tuntematon symboli"
+msgstr "%s: uudelleenjärjestys kohdan %.*s jälkeen ei onnistu: tuntematon symboli"
-#: locale/programs/ld-collate.c:3408 locale/programs/ld-collate.c:3765
+#: locale/programs/ld-collate.c:3551 locale/programs/ld-collate.c:3912
#, c-format
msgid "%s: missing `reorder-end' keyword"
-msgstr "%s: avainsana \"reorder-end\" puuttuu"
+msgstr "%s: avainsana â€reorder-end†puuttuu"
-#: locale/programs/ld-collate.c:3442 locale/programs/ld-collate.c:3637
+#: locale/programs/ld-collate.c:3585 locale/programs/ld-collate.c:3783
#, c-format
msgid "%s: section `%.*s' not known"
-msgstr "%s: osaa \"%.*s\" ei tunneta"
+msgstr "%s: osaa â€%.*s†ei tunneta"
-#: locale/programs/ld-collate.c:3507
+#: locale/programs/ld-collate.c:3650
#, c-format
msgid "%s: bad symbol <%.*s>"
msgstr "%s: virheellinen symboli <%.*s>"
-#: locale/programs/ld-collate.c:3700
+#: locale/programs/ld-collate.c:3846
#, c-format
msgid "%s: cannot have `%s' as end of ellipsis range"
-msgstr "%s: \"%s\" ei voi olla sanankatkaisuvälin loppuna"
+msgstr "%s: â€%s†ei voi olla sanankatkaisuvälin loppuna"
-#: locale/programs/ld-collate.c:3749
+#: locale/programs/ld-collate.c:3896
#, c-format
msgid "%s: empty category description not allowed"
-msgstr "%s: tyhjää kategoriakuvausta ei sallita"
+msgstr "%s: tyhjää kategoriakuvausta ei sallita"
-#: locale/programs/ld-collate.c:3768
+#: locale/programs/ld-collate.c:3915
#, c-format
msgid "%s: missing `reorder-sections-end' keyword"
-msgstr "%s: avainsana \"reorder-sections-end\" puuttuu"
+msgstr "%s: avainsana â€reorder-sections-end†puuttuu"
+
+#: locale/programs/ld-collate.c:4079
+#, c-format
+msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
+msgstr ""
-#: locale/programs/ld-ctype.c:435
+#: locale/programs/ld-collate.c:4097
+#, c-format
+msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:439
+#, c-format
msgid "No character set name specified in charmap"
-msgstr "Merkistön nimeä ei ole määritelty merkistökartassa"
+msgstr "Merkistön nimeä ei ole määritelty merkistökartassa"
-#: locale/programs/ld-ctype.c:464
+#: locale/programs/ld-ctype.c:468
#, c-format
msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
-msgstr "merkin L'\\u%0*x' luokassa \"%s\" on oltava luokassa \"%s\""
+msgstr "merkin L'\\u%0*x' luokassa â€%s†on oltava luokassa â€%sâ€"
-#: locale/programs/ld-ctype.c:479
+#: locale/programs/ld-ctype.c:483
#, c-format
msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'"
-msgstr "merkki L'\\u%0*x' luokassa \"%s\" ei saa olla luokassa \"%s\""
+msgstr "merkki L'\\u%0*x' luokassa â€%s†ei saa olla luokassa â€%sâ€"
-#: locale/programs/ld-ctype.c:493 locale/programs/ld-ctype.c:551
+#: locale/programs/ld-ctype.c:497 locale/programs/ld-ctype.c:555
#, c-format
msgid "internal error in %s, line %u"
-msgstr "sisäinen virhe tiedostossa %s, rivillä %u"
+msgstr "sisäinen virhe tiedostossa %s, rivillä %u"
-#: locale/programs/ld-ctype.c:522
+#: locale/programs/ld-ctype.c:526
#, c-format
msgid "character '%s' in class `%s' must be in class `%s'"
-msgstr "merkin '%s' luokassa \"%s\" on oltava luokassa \"%s\""
+msgstr "merkin '%s' luokassa â€%s†on oltava luokassa â€%sâ€"
-#: locale/programs/ld-ctype.c:538
+#: locale/programs/ld-ctype.c:542
#, c-format
msgid "character '%s' in class `%s' must not be in class `%s'"
-msgstr "merkin '%s' luokassa \"%s\" ei saa olla luokassa \"%s\""
+msgstr "merkin '%s' luokassa â€%s†ei saa olla luokassa â€%sâ€"
-#: locale/programs/ld-ctype.c:568 locale/programs/ld-ctype.c:606
+#: locale/programs/ld-ctype.c:572 locale/programs/ld-ctype.c:610
#, c-format
msgid "<SP> character not in class `%s'"
-msgstr "<SP>-merkki ei ole luokassa \"%s\""
+msgstr "<SP>-merkki ei ole luokassa â€%sâ€"
-#: locale/programs/ld-ctype.c:580 locale/programs/ld-ctype.c:617
+#: locale/programs/ld-ctype.c:584 locale/programs/ld-ctype.c:621
#, c-format
msgid "<SP> character must not be in class `%s'"
-msgstr "<SP>-merkki ei saa olla luokassa \"%s\""
+msgstr "<SP>-merkki ei saa olla luokassa â€%sâ€"
-#: locale/programs/ld-ctype.c:595
+#: locale/programs/ld-ctype.c:599
+#, c-format
msgid "character <SP> not defined in character map"
-msgstr "merkkiä <SP> ei ole määritelty merkistökartassa"
+msgstr "merkkiä <SP> ei ole määritelty merkistökartassa"
-#: locale/programs/ld-ctype.c:709
+#: locale/programs/ld-ctype.c:714
+#, c-format
msgid "`digit' category has not entries in groups of ten"
-msgstr "\"digit\"-kategorian merkinnät eivät ole kymmenen ryhmissä"
+msgstr "â€digitâ€-kategorian merkinnät eivät ole kymmenen ryhmissä"
-#: locale/programs/ld-ctype.c:758
+#: locale/programs/ld-ctype.c:763
+#, c-format
msgid "no input digits defined and none of the standard names in the charmap"
-msgstr "syötenumeroita ei ole määritelty, eikä merkistökartassa ole standardinimiä"
+msgstr "syötenumeroita ei ole määritelty, eikä merkistökartassa ole standardinimiä"
-#: locale/programs/ld-ctype.c:823
+#: locale/programs/ld-ctype.c:828
+#, c-format
msgid "not all characters used in `outdigit' are available in the charmap"
-msgstr "kaikki \"outdigit\":in merkit eivät ole käytettävissä merkistökartassa"
+msgstr "kaikki â€outdigitâ€:in merkit eivät ole käytettävissä merkistökartassa"
-#: locale/programs/ld-ctype.c:840
+#: locale/programs/ld-ctype.c:845
+#, c-format
msgid "not all characters used in `outdigit' are available in the repertoire"
-msgstr "kaikki \"outditit\":in merkit eivät ole käytettävissä valikoimassa"
+msgstr "kaikki â€outdititâ€:in merkit eivät ole käytettävissä valikoimassa"
-#: locale/programs/ld-ctype.c:1235
+#: locale/programs/ld-ctype.c:1245
#, c-format
msgid "character class `%s' already defined"
-msgstr "merkkiluokka \"%s\" on jo määritelty"
+msgstr "merkkiluokka â€%s†on jo määritelty"
-#: locale/programs/ld-ctype.c:1241
+#: locale/programs/ld-ctype.c:1251
#, c-format
msgid "implementation limit: no more than %Zd character classes allowed"
msgstr "toteutuksen rajoitus: korkeintaan %Zd merkkiluokkaa sallittu"
-#: locale/programs/ld-ctype.c:1267
+#: locale/programs/ld-ctype.c:1277
#, c-format
msgid "character map `%s' already defined"
-msgstr "merkistökartta \"%s\" on jo määritelty"
+msgstr "merkistökartta â€%s†on jo määritelty"
-#: locale/programs/ld-ctype.c:1273
+#: locale/programs/ld-ctype.c:1283
#, c-format
msgid "implementation limit: no more than %d character maps allowed"
-msgstr "toteutuksen rajoitus: korkeintaan %d merkistökarttaa sallittu"
+msgstr "toteutuksen rajoitus: korkeintaan %d merkistökarttaa sallittu"
-#: locale/programs/ld-ctype.c:1538 locale/programs/ld-ctype.c:1663
-#: locale/programs/ld-ctype.c:1769 locale/programs/ld-ctype.c:2455
-#: locale/programs/ld-ctype.c:3443
+#: locale/programs/ld-ctype.c:1548 locale/programs/ld-ctype.c:1673
+#: locale/programs/ld-ctype.c:1779 locale/programs/ld-ctype.c:2471
+#: locale/programs/ld-ctype.c:3467
#, c-format
msgid "%s: field `%s' does not contain exactly ten entries"
-msgstr "%s: kenttä \"%s\" ei sisällä tasan kymmentä merkintää"
+msgstr "%s: kenttä â€%s†ei sisällä tasan kymmentä merkintää"
-#: locale/programs/ld-ctype.c:1566 locale/programs/ld-ctype.c:2137
+#: locale/programs/ld-ctype.c:1576 locale/programs/ld-ctype.c:2150
#, c-format
msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
-msgstr "välin to-arvo <U%0*X> on pienempi kuin from-arvo <U%0*X>"
+msgstr "välin to-arvo <U%0*X> on pienempi kuin from-arvo <U%0*X>"
-#: locale/programs/ld-ctype.c:1693
+#: locale/programs/ld-ctype.c:1703
msgid "start and end character sequence of range must have the same length"
-msgstr "välin aloitus- ja lopetusmerkkisarjojen on oltava saman pituiset"
+msgstr "välin aloitus- ja lopetusmerkkisarjojen on oltava saman pituiset"
-#: locale/programs/ld-ctype.c:1700
+#: locale/programs/ld-ctype.c:1710
msgid "to-value character sequence is smaller than from-value sequence"
msgstr "to-arvon merkkisarja on pienempi kuin from-arvon sarja"
-#: locale/programs/ld-ctype.c:2057 locale/programs/ld-ctype.c:2108
+#: locale/programs/ld-ctype.c:2070 locale/programs/ld-ctype.c:2121
msgid "premature end of `translit_ignore' definition"
-msgstr "ennenaikainen \"translit_ignore\"-määrittelyn loppu"
+msgstr "ennenaikainen â€translit_ignoreâ€-määrittelyn loppu"
-#: locale/programs/ld-ctype.c:2063 locale/programs/ld-ctype.c:2114
-#: locale/programs/ld-ctype.c:2156
+#: locale/programs/ld-ctype.c:2076 locale/programs/ld-ctype.c:2127
+#: locale/programs/ld-ctype.c:2169
msgid "syntax error"
msgstr "syntaksivirhe"
-#: locale/programs/ld-ctype.c:2287
+#: locale/programs/ld-ctype.c:2303
#, c-format
msgid "%s: syntax error in definition of new character class"
-msgstr "%s: syntaksivirhe uuden merkkiluokan määrittelyssä"
+msgstr "%s: syntaksivirhe uuden merkkiluokan määrittelyssä"
-#: locale/programs/ld-ctype.c:2302
+#: locale/programs/ld-ctype.c:2318
#, c-format
msgid "%s: syntax error in definition of new character map"
-msgstr "%s: syntaksivirhe uuden merkistökartan määrittelyssä"
+msgstr "%s: syntaksivirhe uuden merkistökartan määrittelyssä"
-#: locale/programs/ld-ctype.c:2477
+#: locale/programs/ld-ctype.c:2493
msgid "ellipsis range must be marked by two operands of same type"
-msgstr "sanankatkaisuväliä on merkittävä kahdella saman tyyppisellä operandilla"
+msgstr "sanankatkaisuväliä on merkittävä kahdella saman tyyppisellä operandilla"
-#: locale/programs/ld-ctype.c:2486
+#: locale/programs/ld-ctype.c:2502
msgid "with symbolic name range values the absolute ellipsis `...' must not be used"
-msgstr "absoluuttista sanankatkaisua \"...\" ei saa käyttää symbolisen nimivälin arvojen kanssa"
+msgstr "absoluuttista sanankatkaisua â€...†ei saa käyttää symbolisen nimivälin arvojen kanssa"
-#: locale/programs/ld-ctype.c:2501
+#: locale/programs/ld-ctype.c:2517
msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
-msgstr "UCS-välin arvojen kanssa on käytettävä heksadesimaalista symbolista sanankatkaisua \"..\""
+msgstr "UCS-välin arvojen kanssa on käytettävä heksadesimaalista symbolista sanankatkaisua â€..â€"
-#: locale/programs/ld-ctype.c:2515
+#: locale/programs/ld-ctype.c:2531
msgid "with character code range values one must use the absolute ellipsis `...'"
-msgstr "merkkikoodivälin arvojen kanssa on käytettävä absoluuttista sanankatkaisua \"...\""
+msgstr "merkkikoodivälin arvojen kanssa on käytettävä absoluuttista sanankatkaisua â€...â€"
-#: locale/programs/ld-ctype.c:2666
+#: locale/programs/ld-ctype.c:2682
#, c-format
msgid "duplicated definition for mapping `%s'"
-msgstr "kaksinkertainen määrittely kartoitukselle \"%s\""
+msgstr "kaksinkertainen määrittely kartoitukselle â€%sâ€"
-#: locale/programs/ld-ctype.c:2744 locale/programs/ld-ctype.c:2888
+#: locale/programs/ld-ctype.c:2768 locale/programs/ld-ctype.c:2912
#, c-format
msgid "%s: `translit_start' section does not end with `translit_end'"
-msgstr "%s: \"translit_start\"-osa ei lopu tekstiin \"translit_end\""
+msgstr "%s: â€translit_startâ€-osa ei lopu tekstiin â€translit_endâ€"
-#: locale/programs/ld-ctype.c:2839
+#: locale/programs/ld-ctype.c:2863
#, c-format
msgid "%s: duplicate `default_missing' definition"
-msgstr "%s: kaksinkertainen \"default_missing\"-määrittely"
+msgstr "%s: kaksinkertainen â€default_missingâ€-määrittely"
-#: locale/programs/ld-ctype.c:2844
+#: locale/programs/ld-ctype.c:2868
msgid "previous definition was here"
-msgstr "edellinen määrittely oli täällä"
+msgstr "edellinen määrittely oli täällä"
-#: locale/programs/ld-ctype.c:2866
+#: locale/programs/ld-ctype.c:2890
#, c-format
msgid "%s: no representable `default_missing' definition found"
-msgstr "%s: esitettävissä olevaa \"default_missing\"-määrittelyä ei löytynyt"
-
-#: locale/programs/ld-ctype.c:3019
-#, c-format
-msgid "%s: character `%s' not defined in charmap while needed as default value"
-msgstr "%s: oletusarvona tarvittavaa merkkiä \"%s\" ei ole määritelty merkistökartassa"
+msgstr "%s: esitettävissä olevaa â€default_missingâ€-määrittelyä ei löytynyt"
-#: locale/programs/ld-ctype.c:3024 locale/programs/ld-ctype.c:3108
-#: locale/programs/ld-ctype.c:3128 locale/programs/ld-ctype.c:3149
-#: locale/programs/ld-ctype.c:3170 locale/programs/ld-ctype.c:3191
-#: locale/programs/ld-ctype.c:3212 locale/programs/ld-ctype.c:3252
-#: locale/programs/ld-ctype.c:3273 locale/programs/ld-ctype.c:3340
-#, c-format
-msgid "%s: character `%s' in charmap not representable with one byte"
-msgstr "%s: merkistökartan merkki \"%s\" ei ole esitettävissä yhdellä tavulla"
-
-#: locale/programs/ld-ctype.c:3103 locale/programs/ld-ctype.c:3123
-#: locale/programs/ld-ctype.c:3165 locale/programs/ld-ctype.c:3186
-#: locale/programs/ld-ctype.c:3207 locale/programs/ld-ctype.c:3247
-#: locale/programs/ld-ctype.c:3268 locale/programs/ld-ctype.c:3335
-#: locale/programs/ld-ctype.c:3377 locale/programs/ld-ctype.c:3402
+#: locale/programs/ld-ctype.c:3043 locale/programs/ld-ctype.c:3127
+#: locale/programs/ld-ctype.c:3147 locale/programs/ld-ctype.c:3168
+#: locale/programs/ld-ctype.c:3189 locale/programs/ld-ctype.c:3210
+#: locale/programs/ld-ctype.c:3231 locale/programs/ld-ctype.c:3271
+#: locale/programs/ld-ctype.c:3292 locale/programs/ld-ctype.c:3359
+#: locale/programs/ld-ctype.c:3401 locale/programs/ld-ctype.c:3426
#, c-format
msgid "%s: character `%s' not defined while needed as default value"
-msgstr "%s: oletusarvona tarvittavaa merkkiä \"%s\" ei ole määritelty"
+msgstr "%s: oletusarvona tarvittavaa merkkiä â€%s†ei ole määritelty"
-#: locale/programs/ld-ctype.c:3144
+#: locale/programs/ld-ctype.c:3048 locale/programs/ld-ctype.c:3132
+#: locale/programs/ld-ctype.c:3152 locale/programs/ld-ctype.c:3173
+#: locale/programs/ld-ctype.c:3194 locale/programs/ld-ctype.c:3215
+#: locale/programs/ld-ctype.c:3236 locale/programs/ld-ctype.c:3276
+#: locale/programs/ld-ctype.c:3297 locale/programs/ld-ctype.c:3364
#, c-format
-msgid "character `%s' not defined while needed as default value"
-msgstr "oletusarvona tarvittavaa merkkiä \"%s\" ei ole määritelty"
+msgid "%s: character `%s' in charmap not representable with one byte"
+msgstr "%s: merkistökartan merkki â€%s†ei ole esitettävissä yhdellä tavulla"
-#: locale/programs/ld-ctype.c:3384 locale/programs/ld-ctype.c:3409
+#: locale/programs/ld-ctype.c:3408 locale/programs/ld-ctype.c:3433
#, c-format
msgid "%s: character `%s' needed as default value not representable with one byte"
-msgstr "%s: oletusarvona tarvittava merkki \"%s\" ei ole esitettävissä yhdellä tavulla"
+msgstr "%s: oletusarvona tarvittava merkki â€%s†ei ole esitettävissä yhdellä tavulla"
-#: locale/programs/ld-ctype.c:3464
+#: locale/programs/ld-ctype.c:3489
+#, c-format
msgid "no output digits defined and none of the standard names in the charmap"
-msgstr "tulostenumeroita ei ole määritelty, eikä merkistökartassa ole standardinimiä"
+msgstr "tulostenumeroita ei ole määritelty, eikä merkistökartassa ole standardinimiä"
-#: locale/programs/ld-ctype.c:3755
+#: locale/programs/ld-ctype.c:3780
#, c-format
msgid "%s: transliteration data from locale `%s' not available"
-msgstr "%s: translitterointidata maa-asetustosta \"%s\" ei ole käytettävissä"
+msgstr "%s: translitterointidata maa-asetustosta â€%s†ei ole käytettävissä"
-#: locale/programs/ld-ctype.c:3851
+#: locale/programs/ld-ctype.c:3881
#, c-format
msgid "%s: table for class \"%s\": %lu bytes\n"
-msgstr "%s: taulukko luokalle \"%s\": %lu tavua\n"
+msgstr "%s: taulukko luokalle â€%sâ€: %lu tavua\n"
-#: locale/programs/ld-ctype.c:3920
+#: locale/programs/ld-ctype.c:3950
#, c-format
msgid "%s: table for map \"%s\": %lu bytes\n"
-msgstr "%s: taulukko kartalle \"%s\": %lu tavua\n"
+msgstr "%s: taulukko kartalle â€%sâ€: %lu tavua\n"
-#: locale/programs/ld-ctype.c:4053
+#: locale/programs/ld-ctype.c:4083
#, c-format
msgid "%s: table for width: %lu bytes\n"
msgstr "%s: taulukko leveydelle: %lu tavua\n"
-#: locale/programs/ld-identification.c:171
+#: locale/programs/ld-identification.c:170
#, c-format
msgid "%s: no identification for category `%s'"
-msgstr "%s: ei tunnistetta kategorialle \"%s\""
+msgstr "%s: ei tunnistetta kategorialle â€%sâ€"
-#: locale/programs/ld-identification.c:436
+#: locale/programs/ld-identification.c:435
#, c-format
msgid "%s: duplicate category version definition"
-msgstr "%s: kaksinkertainen kategorian versiomäärittely"
+msgstr "%s: kaksinkertainen kategorian versiomäärittely"
-#: locale/programs/ld-measurement.c:114
+#: locale/programs/ld-measurement.c:113
#, c-format
msgid "%s: invalid value for field `%s'"
-msgstr "%s: virheellinen arvo kentälle \"%s\""
+msgstr "%s: virheellinen arvo kentälle â€%sâ€"
-#: locale/programs/ld-messages.c:115 locale/programs/ld-messages.c:149
+#: locale/programs/ld-messages.c:114 locale/programs/ld-messages.c:148
#, c-format
msgid "%s: field `%s' undefined"
-msgstr "%s: kenttä \"%s\" on määrittelemätön"
+msgstr "%s: kenttä â€%s†on määrittelemätön"
-#: locale/programs/ld-messages.c:122 locale/programs/ld-messages.c:156
+#: locale/programs/ld-messages.c:121 locale/programs/ld-messages.c:155
+#: locale/programs/ld-monetary.c:256 locale/programs/ld-numeric.c:118
#, c-format
msgid "%s: value for field `%s' must not be an empty string"
-msgstr "%s: kentän \"%s\" arvo ei saa olla tyhjä merkkijono"
+msgstr "%s: kentän â€%s†arvo ei saa olla tyhjä merkkijono"
-#: locale/programs/ld-messages.c:138 locale/programs/ld-messages.c:172
+#: locale/programs/ld-messages.c:137 locale/programs/ld-messages.c:171
#, c-format
msgid "%s: no correct regular expression for field `%s': %s"
-msgstr "%s: ei kelvollista säännöllistä ilmausta kentälle \"%s\": %s"
+msgstr "%s: ei kelvollista säännöllistä ilmausta kentälle â€%sâ€: %s"
#: locale/programs/ld-monetary.c:224
#, c-format
msgid "%s: value of field `int_curr_symbol' has wrong length"
-msgstr "%s: kentän \"int_curr_symbol\" arvo on väärän pituinen"
+msgstr "%s: â€int_curr_symbolâ€-kentän arvo on väärän pituinen"
-#: locale/programs/ld-monetary.c:232
+#: locale/programs/ld-monetary.c:237
#, c-format
msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217"
-msgstr "%s: kentän \"int_curr_symbol\" arvo ei vastaa kelvollista nimeä ISO 4217:ssä"
-
-#: locale/programs/ld-monetary.c:250 locale/programs/ld-numeric.c:119
-#, c-format
-msgid "%s: value for field `%s' must not be the empty string"
-msgstr "%s: kentän \"%s\" arvo ei saa olla tyhjä merkkijono"
+msgstr "%s: â€int_curr_symbolâ€-kentä arvo ei vastaa kelvollista nimeä ISO 4217:ssä"
-#: locale/programs/ld-monetary.c:278 locale/programs/ld-monetary.c:308
+#: locale/programs/ld-monetary.c:285 locale/programs/ld-monetary.c:315
#, c-format
msgid "%s: value for field `%s' must be in range %d...%d"
-msgstr "%s: kentän \"%s\" arvon on oltava välillä %d...%d"
+msgstr "%s: kentän â€%s†arvon on oltava välillä %d...%d"
-#: locale/programs/ld-monetary.c:740 locale/programs/ld-numeric.c:275
+#: locale/programs/ld-monetary.c:747 locale/programs/ld-numeric.c:274
#, c-format
msgid "%s: value for field `%s' must be a single character"
-msgstr "%s: kentän \"%s\" arvon on oltava yksittäinen merkki"
+msgstr "%s: kentän â€%s†arvon on oltava yksittäinen merkki"
-#: locale/programs/ld-monetary.c:837 locale/programs/ld-numeric.c:319
+#: locale/programs/ld-monetary.c:844 locale/programs/ld-numeric.c:318
#, c-format
msgid "%s: `-1' must be last entry in `%s' field"
-msgstr "%s: \"-1\" on oltava viimeinen merkintä kentässä \"%s\""
+msgstr "%s: â€-1†on oltava viimeinen merkintä kentässä â€%sâ€"
-#: locale/programs/ld-monetary.c:859 locale/programs/ld-numeric.c:340
+#: locale/programs/ld-monetary.c:866 locale/programs/ld-numeric.c:335
#, c-format
msgid "%s: values for field `%s' must be smaller than 127"
-msgstr "%s: kentän \"%s\" arvojen on oltava pienempiä kuin 127"
+msgstr "%s: kentän â€%s†arvojen on oltava pienempiä kuin 127"
-#: locale/programs/ld-monetary.c:902
+#: locale/programs/ld-monetary.c:909
msgid "conversion rate value cannot be zero"
msgstr "muuntokerroin ei voi olla nolla"
-#: locale/programs/ld-name.c:130 locale/programs/ld-telephone.c:127
-#: locale/programs/ld-telephone.c:150
+#: locale/programs/ld-name.c:129 locale/programs/ld-telephone.c:126
+#: locale/programs/ld-telephone.c:149
#, c-format
msgid "%s: invalid escape sequence in field `%s'"
-msgstr "%s: virheellinen ohjaussarja kentässä \"%s\""
+msgstr "%s: virheellinen ohjaussarja kentässä â€%sâ€"
-#: locale/programs/ld-time.c:248
+#: locale/programs/ld-time.c:247
#, c-format
msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'"
-msgstr "%s: suuntalippu merkkijonossa %Zd kentässä \"era\" ei ole '+' eikä '-'"
+msgstr "%s: suuntalippu merkkijonossa %Zd kentässä â€era†ei ole â€+†eikä â€-â€"
-#: locale/programs/ld-time.c:259
+#: locale/programs/ld-time.c:258
#, c-format
msgid "%s: direction flag in string %Zd in `era' field is not a single character"
-msgstr "%s: suuntalippu merkkijonossa %Zd kentässä \"era\" ei ole yksittäinen merkki"
+msgstr "%s: suuntalippu merkkijonossa %Zd kentässä â€era†ei ole yksittäinen merkki"
-#: locale/programs/ld-time.c:272
+#: locale/programs/ld-time.c:271
#, c-format
msgid "%s: invalid number for offset in string %Zd in `era' field"
-msgstr "%s: virheellinen arvo siirtymälle merkkijonossa %Zd kentässä \"era\""
+msgstr "%s: virheellinen arvo siirtymälle merkkijonossa %Zd kentässä â€eraâ€"
-#: locale/programs/ld-time.c:280
+#: locale/programs/ld-time.c:279
#, c-format
msgid "%s: garbage at end of offset value in string %Zd in `era' field"
-msgstr "%s: roskaa siirtymäarvon lopussa merkkijonossa %Zd kentässä \"era\""
+msgstr "%s: roskaa siirtymäarvon lopussa merkkijonossa %Zd kentässä â€eraâ€"
-#: locale/programs/ld-time.c:331
+#: locale/programs/ld-time.c:330
#, c-format
msgid "%s: invalid starting date in string %Zd in `era' field"
-msgstr "%s: virheellinen aloituspäivä merkkijonossa %Zd kentässä \"era\""
+msgstr "%s: virheellinen aloituspäivä merkkijonossa %Zd kentässä â€eraâ€"
-#: locale/programs/ld-time.c:340
+#: locale/programs/ld-time.c:339
#, c-format
msgid "%s: garbage at end of starting date in string %Zd in `era' field "
-msgstr "%s: roskaa aloituspäivän lopussa merkkijonossa %Zd kentässä \"era\""
+msgstr "%s: roskaa aloituspäivän lopussa merkkijonossa %Zd kentässä â€eraâ€"
-#: locale/programs/ld-time.c:359
+#: locale/programs/ld-time.c:358
#, c-format
msgid "%s: starting date is invalid in string %Zd in `era' field"
-msgstr "%s: aloituspäivä on virheellinen merkkijonossa %Zd kentässä \"era\""
+msgstr "%s: aloituspäivä on virheellinen merkkijonossa %Zd kentässä â€eraâ€"
-#: locale/programs/ld-time.c:408
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
-msgstr "%s: virheellinen lopetuspäivä merkkijonossa %Zd kentässä \"era\""
+msgstr "%s: virheellinen lopetuspäivä merkkijonossa %Zd kentässä â€eraâ€"
-#: locale/programs/ld-time.c:417
+#: locale/programs/ld-time.c:416
#, c-format
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
-msgstr "%s: roskaa lopetuspäivän lopussa merkkijonossa %Zd kentässä \"era\""
+msgstr "%s: roskaa lopetuspäivän lopussa merkkijonossa %Zd kentässä â€eraâ€"
-#: locale/programs/ld-time.c:436
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s: lopetuspäivä on virheellinen merkkijonossa %Zd kentässä \"era\""
-
-#: locale/programs/ld-time.c:445
+#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
-msgstr "%s: puuttuva aikakauden nimi merkkijonossa %Zd kentässä \"era\""
+msgstr "%s: puuttuva aikakauden nimi merkkijonossa %Zd kentässä â€eraâ€"
-#: locale/programs/ld-time.c:457
+#: locale/programs/ld-time.c:456
#, c-format
msgid "%s: missing era format in string %Zd in `era' field"
-msgstr "%s: puuttuva aikakausimuoto merkkijonossa %Zd kentässä \"era\""
+msgstr "%s: puuttuva aikakausimuoto merkkijonossa %Zd kentässä â€eraâ€"
-#: locale/programs/ld-time.c:486
+#: locale/programs/ld-time.c:497
#, c-format
msgid "%s: third operand for value of field `%s' must not be larger than %d"
-msgstr "%s: kentän \"%s\" arvon kolmas operandi ei saa olla suurempi kuin %d"
-
-#: locale/programs/ld-time.c:494 locale/programs/ld-time.c:502
-#, c-format
-msgid "%s: values of field `%s' must not be larger than %d"
-msgstr "%s: kentän \"%s\" arvot eivät saa olla suurempia kuin %d"
+msgstr "%s: kentän â€%s†arvon kolmas operandi ei saa olla suurempi kuin %d"
-#: locale/programs/ld-time.c:510
+#: locale/programs/ld-time.c:505 locale/programs/ld-time.c:513
+#: locale/programs/ld-time.c:521
#, c-format
msgid "%s: values for field `%s' must not be larger than %d"
-msgstr "%s: kentän \"%s\" arvot eivät saa olla suurempia kuin %d"
+msgstr "%s: kentän â€%s†arvot eivät saa olla suurempia kuin %d"
-#: locale/programs/ld-time.c:984
+#: locale/programs/ld-time.c:1004
#, c-format
msgid "%s: too few values for field `%s'"
-msgstr "%s: liian vähän arvoja kentälle \"%s\""
+msgstr "%s: liian vähän arvoja kentälle â€%sâ€"
-#: locale/programs/ld-time.c:1029
+#: locale/programs/ld-time.c:1049
msgid "extra trailing semicolon"
-msgstr "ylimääräinen puolipiste lopussa"
+msgstr "ylimääräinen puolipiste lopussa"
-#: locale/programs/ld-time.c:1032
+#: locale/programs/ld-time.c:1052
#, c-format
msgid "%s: too many values for field `%s'"
-msgstr "%s: liian monta arvoa kentälle \"%s\""
+msgstr "%s: liian monta arvoa kentälle â€%sâ€"
-#: locale/programs/linereader.c:275
+#: locale/programs/linereader.c:130
+msgid "trailing garbage at end of line"
+msgstr "roskaa rivin lopussa"
+
+#: locale/programs/linereader.c:298
msgid "garbage at end of number"
msgstr "roskaa lukuarvon lopussa"
-#: locale/programs/linereader.c:387
+#: locale/programs/linereader.c:410
msgid "garbage at end of character code specification"
-msgstr "roskaa merkkikoodimäärittelyn lopussa"
+msgstr "roskaa merkkikoodimäärittelyn lopussa"
-#: locale/programs/linereader.c:473
+#: locale/programs/linereader.c:496
msgid "unterminated symbolic name"
-msgstr "päättämätön symbolinen nimi"
+msgstr "päättämätön symbolinen nimi"
-#: locale/programs/linereader.c:537 catgets/gencat.c:1195
-msgid "invalid escape sequence"
-msgstr "virheellinen ohjaussarja"
-
-#: locale/programs/linereader.c:600
+#: locale/programs/linereader.c:623
msgid "illegal escape sequence at end of string"
msgstr "virheellinen ohjaussarja merkkijonon lopussa"
-#: locale/programs/linereader.c:604 locale/programs/linereader.c:832
+#: locale/programs/linereader.c:627 locale/programs/linereader.c:855
msgid "unterminated string"
-msgstr "päättämätön merkkijono"
+msgstr "päättämätön merkkijono"
-#: locale/programs/linereader.c:646
+#: locale/programs/linereader.c:669
msgid "non-symbolic character value should not be used"
-msgstr "epäsymbolista merkkiarvoa ei pidä käyttää"
+msgstr "epäsymbolista merkkiarvoa ei pidä käyttää"
-#: locale/programs/linereader.c:793
+#: locale/programs/linereader.c:816
#, c-format
msgid "symbol `%.*s' not in charmap"
-msgstr "symboli \"%.*s\" ei ole merkistökartassa"
+msgstr "symboli â€%.*s†ei ole merkistökartassa"
-#: locale/programs/linereader.c:814
+#: locale/programs/linereader.c:837
#, c-format
msgid "symbol `%.*s' not in repertoire map"
-msgstr "symboli \"%.*s\" ei ole valikoimakartassa"
+msgstr "symboli â€%.*s†ei ole valikoimakartassa"
-#: locale/programs/linereader.h:162
-msgid "trailing garbage at end of line"
-msgstr "roskaa rivin lopussa"
-
-#: locale/programs/locale.c:75
+#: locale/programs/locale.c:74
msgid "System information:"
-msgstr "Tietoa järjestelmästä:"
+msgstr "Tietoa järjestelmästä:"
-#: locale/programs/locale.c:77
+#: locale/programs/locale.c:76
msgid "Write names of available locales"
-msgstr "Näytä käytettävissä olevien maa-asetustojen nimet"
+msgstr "Näytä käytettävissä olevien maa-asetustojen nimet"
-#: locale/programs/locale.c:79
+#: locale/programs/locale.c:78
msgid "Write names of available charmaps"
-msgstr "Näytä käytettävissä olevien merkistökarttojen nimet"
+msgstr "Näytä käytettävissä olevien merkistökarttojen nimet"
-#: locale/programs/locale.c:80
+#: locale/programs/locale.c:79
msgid "Modify output format:"
msgstr "Muuta tulostemuotoa:"
-#: locale/programs/locale.c:81
+#: locale/programs/locale.c:80
msgid "Write names of selected categories"
-msgstr "Näytä valittujen kategorioiden nimet"
+msgstr "Näytä valittujen kategorioiden nimet"
-#: locale/programs/locale.c:82
+#: locale/programs/locale.c:81
msgid "Write names of selected keywords"
-msgstr "Näytä valittujen avainsanojen nimet"
+msgstr "Näytä valittujen avainsanojen nimet"
-#: locale/programs/locale.c:83
+#: locale/programs/locale.c:82
msgid "Print more information"
-msgstr "Näytä lisää tietoa"
+msgstr "Näytä lisää tietoa"
-#: locale/programs/locale.c:88
+#: locale/programs/locale.c:87
msgid "Get locale-specific information."
msgstr "Hae maa-asetustokohtaiset tiedot."
-#: locale/programs/locale.c:91
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
@@ -1363,83 +2462,104 @@ msgstr ""
"NIMI\n"
"[-a|-m]"
-#: locale/programs/locale.c:512
+#: locale/programs/locale.c:194
+#, c-format
+msgid "Cannot set LC_CTYPE to default locale"
+msgstr ""
+
+#: locale/programs/locale.c:196
+#, c-format
+msgid "Cannot set LC_MESSAGES to default locale"
+msgstr ""
+
+#: locale/programs/locale.c:209
+#, c-format
+msgid "Cannot set LC_COLLATE to default locale"
+msgstr ""
+
+#: locale/programs/locale.c:225
+#, c-format
+msgid "Cannot set LC_ALL to default locale"
+msgstr ""
+
+#: locale/programs/locale.c:518
+#, c-format
msgid "while preparing output"
msgstr "valmisteltaessa tulostetta"
-#: locale/programs/localedef.c:121
+#: locale/programs/localedef.c:120
msgid "Input Files:"
-msgstr "Syötetiedostot:"
+msgstr "Syötetiedostot:"
-#: locale/programs/localedef.c:123
+#: locale/programs/localedef.c:122
msgid "Symbolic character names defined in FILE"
msgstr "Symboliset merkkien nimet annettu TIEDOSTOssa"
-#: locale/programs/localedef.c:124
+#: locale/programs/localedef.c:123
msgid "Source definitions are found in FILE"
-msgstr "Lähdemäärittelyt löytyvät TIEDOSTOsta"
+msgstr "Lähdemäärittelyt löytyvät TIEDOSTOsta"
-#: locale/programs/localedef.c:126
+#: locale/programs/localedef.c:125
msgid "FILE contains mapping from symbolic names to UCS4 values"
-msgstr "TIEDOSTO sisältää kartoituksen symbolisista nimistä UCS4-arvoiksi"
+msgstr "TIEDOSTO sisältää kartoituksen symbolisista nimistä UCS4-arvoiksi"
-#: locale/programs/localedef.c:130
+#: locale/programs/localedef.c:129
msgid "Create output even if warning messages were issued"
msgstr "Luo tuloste varoituksista huolimatta"
-#: locale/programs/localedef.c:131
+#: locale/programs/localedef.c:130
msgid "Create old-style tables"
msgstr "Luo vanhantyyliset taulukot"
-#: locale/programs/localedef.c:132
+#: locale/programs/localedef.c:131
msgid "Optional output file prefix"
-msgstr "Valinnainen tulostiedoston pääte"
+msgstr "Valinnainen tulostiedoston pääte"
-#: locale/programs/localedef.c:133
+#: locale/programs/localedef.c:132
msgid "Be strictly POSIX conform"
msgstr "Noudata tarkasti POSIXia"
-#: locale/programs/localedef.c:135
+#: locale/programs/localedef.c:134
msgid "Suppress warnings and information messages"
msgstr "Vaienna varoitukset ja tiedotukset"
-#: locale/programs/localedef.c:136
+#: locale/programs/localedef.c:135
msgid "Print more messages"
-msgstr "Näytä lisää viestejä"
+msgstr "Näytä lisää viestejä"
-#: locale/programs/localedef.c:137
+#: locale/programs/localedef.c:136
msgid "Archive control:"
msgstr "Arkiston hallinta:"
-#: locale/programs/localedef.c:139
+#: locale/programs/localedef.c:138
msgid "Don't add new data to archive"
-msgstr "Älä lisää uutta dataa arkistoon"
+msgstr "Älä lisää uutta dataa arkistoon"
-#: locale/programs/localedef.c:141
+#: locale/programs/localedef.c:140
msgid "Add locales named by parameters to archive"
-msgstr "Lisää parametrina annetut maa-asetustot arkistoon"
+msgstr "Lisää parametrina annetut maa-asetustot arkistoon"
-#: locale/programs/localedef.c:142
+#: locale/programs/localedef.c:141
msgid "Replace existing archive content"
-msgstr "Korvaa olemassaoleva arkiston sisältö"
+msgstr "Korvaa olemassaoleva arkiston sisältö"
-#: locale/programs/localedef.c:144
+#: locale/programs/localedef.c:143
msgid "Remove locales named by parameters from archive"
msgstr "Poista parametrina annetut maa-asetustot arkistosta"
-#: locale/programs/localedef.c:145
+#: locale/programs/localedef.c:144
msgid "List content of archive"
-msgstr "Listaa arkiston sisältö"
+msgstr "Listaa arkiston sisältö"
-#: locale/programs/localedef.c:147
+#: locale/programs/localedef.c:146
msgid "locale.alias file to consult when making archive"
-msgstr "Arkistoa luotaessa käytettävä locale.alias-tiedosto"
+msgstr "Arkistoa luotaessa käytettävä locale.alias-tiedosto"
-#: locale/programs/localedef.c:152
+#: locale/programs/localedef.c:151
msgid "Compile locale specification"
-msgstr "Käännä maa-asetustomäärittelyt"
+msgstr "Käännä maa-asetustomäärittelyt"
-#: locale/programs/localedef.c:155
+#: locale/programs/localedef.c:154
msgid ""
"NAME\n"
"[--add-to-archive|--delete-from-archive] FILE...\n"
@@ -1449,26 +2569,28 @@ msgstr ""
"[--add-to-archive|--delete-from-archive] TIEDOSTO...\n"
"--list-archive [TIEDOSTO]"
-#: locale/programs/localedef.c:233
+#: locale/programs/localedef.c:232
+#, c-format
msgid "cannot create directory for output files"
msgstr "tulostiedostoille ei voi luoda hakemistoa"
-#: locale/programs/localedef.c:244
+#: locale/programs/localedef.c:243
+#, c-format
msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
-msgstr "VAKAVAA: \"_POSIX2_LOCALEDEF\" ei ole määritelty järjestelmässä"
+msgstr "VAKAVAA: â€_POSIX2_LOCALEDEF†ei ole määritelty järjestelmässä"
-#: locale/programs/localedef.c:258 locale/programs/localedef.c:274
+#: locale/programs/localedef.c:257 locale/programs/localedef.c:273
#: locale/programs/localedef.c:599 locale/programs/localedef.c:619
#, c-format
msgid "cannot open locale definition file `%s'"
-msgstr "maa-asetustotiedostoa \"%s\" ei voi avata"
+msgstr "maa-asetustotiedostoa â€%s†ei voi avata"
-#: locale/programs/localedef.c:286
+#: locale/programs/localedef.c:285
#, c-format
msgid "cannot write output files to `%s'"
-msgstr "tulostiedostoja ei voi kirjoittaa hakemistoon \"%s\""
+msgstr "tulostiedostoja ei voi kirjoittaa hakemistoon â€%sâ€"
-#: locale/programs/localedef.c:367
+#: locale/programs/localedef.c:366
#, c-format
msgid ""
"System's directory for character maps : %s\n"
@@ -1476,2071 +2598,1841 @@ msgid ""
" locale path : %s\n"
"%s"
msgstr ""
-"Järjestelmän hakemisto merkistökartoille : %s\n"
+"Järjestelmän hakemisto merkistökartoille : %s\n"
" valikoimakartoille: %s\n"
" maa-asetustopolku : %s\n"
"%s"
#: locale/programs/localedef.c:567
+#, c-format
msgid "circular dependencies between locale definitions"
-msgstr "kehäriippuvuuksia maa-asetustomäärittelyissä"
+msgstr "kehäriippuvuuksia maa-asetustomäärittelyissä"
#: locale/programs/localedef.c:573
#, c-format
msgid "cannot add already read locale `%s' a second time"
-msgstr "luettua maa-asetustoa \"%s\" ei voi lisätä toista kertaa"
+msgstr "luettua maa-asetustoa â€%s†ei voi lisätä toista kertaa"
-#: locale/programs/locarchive.c:89 locale/programs/locarchive.c:259
+#: locale/programs/locarchive.c:88 locale/programs/locarchive.c:261
+#, c-format
msgid "cannot create temporary file"
-msgstr "tilapäistä tiedostoa ei voi luoda"
+msgstr "tilapäistä tiedostoa ei voi luoda"
-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:307
+#, c-format
msgid "cannot initialize archive file"
msgstr "arkistotiedostoa ei voi alustaa"
-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:314
+#, c-format
msgid "cannot resize archive file"
msgstr "arkistotiedoston kokoa ei voi muuttaa"
-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-#: locale/programs/locarchive.c:511
+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:323
+#: locale/programs/locarchive.c:527
+#, c-format
msgid "cannot map archive header"
msgstr "arkiston otsaketta ei voi kartoittaa"
#: locale/programs/locarchive.c:156
+#, c-format
msgid "failed to create new locale archive"
-msgstr "uuden maa-asetustoarkiston luominen epäonnistui"
+msgstr "uuden maa-asetustoarkiston luominen epäonnistui"
#: locale/programs/locarchive.c:168
+#, c-format
msgid "cannot change mode of new locale archive"
msgstr "uuden maa-asetustoarkiston tilaa ei voi muuttaa"
-#: locale/programs/locarchive.c:253
+#: locale/programs/locarchive.c:255
+#, fuzzy, c-format
msgid "cannot map locale archive file"
-msgstr "maa-asetustoarkistoa \"%s\" ei voi kartoittaa"
+msgstr "maa-asetustoarkistoa â€%s†ei voi kartoittaa"
-#: locale/programs/locarchive.c:329
+#: locale/programs/locarchive.c:331
+#, c-format
msgid "cannot lock new archive"
msgstr "uutta arkistoa ei voi lukita"
-#: locale/programs/locarchive.c:380
+#: locale/programs/locarchive.c:396
+#, c-format
msgid "cannot extend locale archive file"
msgstr "maa-asetustoarkistoa ei voi laajentaa"
-#: locale/programs/locarchive.c:389
+#: locale/programs/locarchive.c:405
+#, c-format
msgid "cannot change mode of resized locale archive"
msgstr "maa-asetustoarkiston tilaa ei voi muuttaa"
-#: locale/programs/locarchive.c:397
+#: locale/programs/locarchive.c:413
+#, c-format
msgid "cannot rename new archive"
-msgstr "uutta arkistoa ei voi nimetä uudelleen"
+msgstr "uutta arkistoa ei voi nimetä uudelleen"
-#: locale/programs/locarchive.c:450
+#: locale/programs/locarchive.c:466
#, c-format
msgid "cannot open locale archive \"%s\""
-msgstr "maa-asetustoarkistoa \"%s\" ei voi avata"
+msgstr "maa-asetustoarkistoa â€%s†ei voi avata"
-#: locale/programs/locarchive.c:455
+#: locale/programs/locarchive.c:471
#, c-format
msgid "cannot stat locale archive \"%s\""
-msgstr "maa-asetustoarkiston \"%s\" tilaa ei voi lukea"
+msgstr "maa-asetustoarkiston â€%s†tilaa ei voi lukea"
-#: locale/programs/locarchive.c:474
+#: locale/programs/locarchive.c:490
#, c-format
msgid "cannot lock locale archive \"%s\""
-msgstr "maa-asetustoarkistoa \"%s\" ei voi lukita"
+msgstr "maa-asetustoarkistoa â€%s†ei voi lukita"
-#: locale/programs/locarchive.c:497
+#: locale/programs/locarchive.c:513
+#, c-format
msgid "cannot read archive header"
msgstr "arkiston otsaketta ei voi lukea"
-#: locale/programs/locarchive.c:557
+#: locale/programs/locarchive.c:573
#, c-format
msgid "locale '%s' already exists"
-msgstr "maa-asetusto \"%s\" on jo olemassa"
+msgstr "maa-asetusto â€%s†on jo olemassa"
-#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
-#: locale/programs/locfile.c:343
+#: locale/programs/locarchive.c:804 locale/programs/locarchive.c:819
+#: locale/programs/locarchive.c:831 locale/programs/locarchive.c:843
+#: locale/programs/locfile.c:344
+#, c-format
msgid "cannot add to locale archive"
-msgstr "ei voi lisätä maa-asetustoarkistoon"
+msgstr "ei voi lisätä maa-asetustoarkistoon"
-#: locale/programs/locarchive.c:982
+#: locale/programs/locarchive.c:998
#, c-format
msgid "locale alias file `%s' not found"
-msgstr "maa-asetustojen aliastiedostoa \"%s\" ei löydy"
+msgstr "maa-asetustojen aliastiedostoa â€%s†ei löydy"
-#: locale/programs/locarchive.c:1126
+#: locale/programs/locarchive.c:1142
#, c-format
msgid "Adding %s\n"
-msgstr "Listätään %s\n"
+msgstr "Listätään %s\n"
-#: locale/programs/locarchive.c:1132
+#: locale/programs/locarchive.c:1148
#, c-format
msgid "stat of \"%s\" failed: %s: ignored"
-msgstr "tiedoston \"%s\" tilan lukeminen epäonnistui: %s: ei huomioida"
+msgstr "tiedoston â€%s†tilan lukeminen epäonnistui: %s: ei huomioida"
-#: locale/programs/locarchive.c:1138
+#: locale/programs/locarchive.c:1154
#, c-format
msgid "\"%s\" is no directory; ignored"
-msgstr "\"%s\" ei ole hakemisto: ei huomioida"
+msgstr "â€%s†ei ole hakemisto: ei huomioida"
-#: locale/programs/locarchive.c:1145
+#: locale/programs/locarchive.c:1161
#, c-format
msgid "cannot open directory \"%s\": %s: ignored"
-msgstr "hakemistoa \"%s\" ei voi avata: %s: ei huomioida"
+msgstr "hakemistoa â€%s†ei voi avata: %s: ei huomioida"
-#: locale/programs/locarchive.c:1217
+#: locale/programs/locarchive.c:1233
#, c-format
msgid "incomplete set of locale files in \"%s\""
-msgstr "epätäydellinen valikoima maa-asetustotiedostoja hakemistossa \"%s\""
+msgstr "epätäydellinen valikoima maa-asetustotiedostoja hakemistossa â€%sâ€"
-#: locale/programs/locarchive.c:1281
+#: locale/programs/locarchive.c:1297
#, c-format
msgid "cannot read all files in \"%s\": ignored"
-msgstr "kaikkia tiedostoja hakemistossa \"%s\" ei voi lukea: ei huomioida"
+msgstr "kaikkia tiedostoja hakemistossa â€%s†ei voi lukea: ei huomioida"
-#: locale/programs/locarchive.c:1351
+#: locale/programs/locarchive.c:1367
#, c-format
msgid "locale \"%s\" not in archive"
-msgstr "maa-asetusto \"%s\" ei ole arkistossa"
+msgstr "maa-asetusto â€%s†ei ole arkistossa"
#: locale/programs/locfile.c:132
#, c-format
msgid "argument to `%s' must be a single character"
-msgstr "argumentin \"%s\":lle on oltava yksittäinen merkki"
+msgstr "argumentin â€%sâ€:lle on oltava yksittäinen merkki"
-#: locale/programs/locfile.c:251
+#: locale/programs/locfile.c:252
msgid "syntax error: not inside a locale definition section"
-msgstr "syntaksivirhe: ei ole maa-asetustomäärittelyosan sisällä"
+msgstr "syntaksivirhe: ei ole maa-asetustomäärittelyosan sisällä"
-#: locale/programs/locfile.c:625
+#: locale/programs/locfile.c:626
#, c-format
msgid "cannot open output file `%s' for category `%s'"
-msgstr "kategorian \"%2$s\" tulostiedostoa \"%1$s\" ei voi avata"
+msgstr "kategorian â€%2$s†tulostiedostoa â€%1$s†ei voi avata"
-#: locale/programs/locfile.c:649
+#: locale/programs/locfile.c:650
#, c-format
msgid "failure while writing data for category `%s'"
-msgstr "virhe kirjoitettaessa kategorian \"%s\" dataa"
+msgstr "virhe kirjoitettaessa kategorian â€%s†dataa"
-#: locale/programs/locfile.c:745
+#: locale/programs/locfile.c:746
#, c-format
msgid "cannot create output file `%s' for category `%s'"
-msgstr "kategorialle \"%2$s\" ei voi luoda tulostiedostoa \"%1$s\""
+msgstr "kategorialle â€%2$s†ei voi luoda tulostiedostoa â€%1$sâ€"
-#: locale/programs/locfile.h:59
-msgid "expect string argument for `copy'"
-msgstr "\"copy\" vaatii merkkijonoargumentin"
+#: locale/programs/locfile.c:782
+#, fuzzy
+msgid "expecting string argument for `copy'"
+msgstr "â€copy†vaatii merkkijonoargumentin"
-#: locale/programs/locfile.h:63
+#: locale/programs/locfile.c:786
msgid "locale name should consist only of portable characters"
-msgstr "maa-asetuston nimessä saa olla vain siirrettäviä merkkejä"
+msgstr "maa-asetuston nimessä saa olla vain siirrettäviä merkkejä"
-#: locale/programs/locfile.h:82
+#: locale/programs/locfile.c:805
msgid "no other keyword shall be specified when `copy' is used"
-msgstr "muita avainsanoja ei tule antaa käytettäessä toimintoa \"copy\""
+msgstr "muita avainsanoja ei tule antaa käytettäessä toimintoa â€copyâ€"
-#: locale/programs/repertoire.c:230 locale/programs/repertoire.c:271
-#: locale/programs/repertoire.c:296
+#: locale/programs/locfile.c:819
+#, c-format
+msgid "`%1$s' definition does not end with `END %1$s'"
+msgstr "â€%1$sâ€-määrittelyn lopusta puuttuu â€END %1$sâ€"
+
+#: locale/programs/repertoire.c:229 locale/programs/repertoire.c:270
+#: locale/programs/repertoire.c:295
#, c-format
msgid "syntax error in repertoire map definition: %s"
-msgstr "syntaksivirhe valikoimakartan määrittelyssä: %s"
+msgstr "syntaksivirhe valikoimakartan määrittelyssä: %s"
-#: locale/programs/repertoire.c:272
+#: locale/programs/repertoire.c:271
msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
msgstr "ei <Uxxxx>- tai <Uxxxxxxxx>-arvoa annettu"
-#: locale/programs/repertoire.c:332
+#: locale/programs/repertoire.c:331
+#, c-format
msgid "cannot save new repertoire map"
msgstr "uutta valikoimakarttaa ei voi turvata"
-#: locale/programs/repertoire.c:343
+#: locale/programs/repertoire.c:342
#, c-format
msgid "repertoire map file `%s' not found"
-msgstr "valikoimakarttatiedostoa \"%s\" ei löydy"
+msgstr "valikoimakarttatiedostoa â€%s†ei löydy"
-#: locale/programs/repertoire.c:450
+#: login/programs/pt_chown.c:74
#, c-format
-msgid "<%s> and <%s> are invalid names for range"
-msgstr "<%s> ja <%s> ovat virheellisiä nimiä välille"
-
-#: locale/programs/repertoire.c:457
-msgid "upper limit in range is not smaller then lower limit"
-msgstr "välin yläraja ei ole pienempi kuin alaraja"
+msgid "Set the owner, group and access permission of the slave pseudo terminal corresponding to the master pseudo terminal passed on file descriptor `%d'. This is the helper program for the `grantpt' function. It is not intended to be run directly from the command line.\n"
+msgstr ""
-#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-#: posix/getconf.c:1002
-msgid "memory exhausted"
-msgstr "muisti lopussa"
+#: login/programs/pt_chown.c:84
+#, c-format
+msgid ""
+"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"
+msgstr ""
-#: assert/assert-perr.c:57
+#: login/programs/pt_chown.c:161
#, c-format
-msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
-msgstr "%s%s%s:%u: %s%sOdottamaton virhe: %s.\n"
+msgid "too many arguments"
+msgstr "liian monta argumenttia"
-#: assert/assert.c:56
+#: login/programs/pt_chown.c:169
#, c-format
-msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
-msgstr "%s%s%s:%u: %s%sAssert-makro \"%s\" ei pidä paikkaansa.\n"
+msgid "needs to be installed setuid `root'"
+msgstr ""
-# Katso lähdekoodia ennen kuin valitat tästä.
-#: intl/tst-codeset.c:40 intl/tst-codeset.c:50
-msgid "cheese"
-msgstr "leipä"
+#: malloc/mcheck.c:330
+msgid "memory is consistent, library is buggy\n"
+msgstr "muisti on yhtenäinen, kirjastossa on ohjelmistovirheitä\n"
-#: intl/tst-gettext2.c:37
-msgid "First string for testing."
-msgstr "Ensimmäinen merkkijono testausta varten."
+#: malloc/mcheck.c:333
+msgid "memory clobbered before allocated block\n"
+msgstr "muisti kärsinyt ennen varattuja lohkoja\n"
-#: intl/tst-gettext2.c:38
-msgid "Another string for testing."
-msgstr "Toinen merkkijono testausta varten"
+#: malloc/mcheck.c:336
+msgid "memory clobbered past end of allocated block\n"
+msgstr "muisti kärsinyt varattujen lohkojen jälkeen\n"
-#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
-msgid "NAME"
-msgstr "NIMI"
+#: malloc/mcheck.c:339
+msgid "block freed twice\n"
+msgstr "lohko vapautettu kahdesti\n"
-#: catgets/gencat.c:112
-msgid "Create C header file NAME containing symbol definitions"
-msgstr "Luo C-otsikkotiedosto NAME, joka sisältää symbolimäärittelyt"
+#: malloc/mcheck.c:342
+msgid "bogus mcheck_status, library is buggy\n"
+msgstr "väärä mcheck_status, kirjastossa on ohjelmavirhe\n"
-#: catgets/gencat.c:114
-msgid "Do not use existing catalog, force new output file"
-msgstr "Älä käytä olemassaolevaa katalogia, tee uusi tulostiedosto"
+#: malloc/memusage.sh:27
+msgid "Try \\`memusage --help' for more information."
+msgstr "Komento â€memusage --help†antaa lisää tietoa."
-#: catgets/gencat.c:115
-msgid "Write output to file NAME"
-msgstr "Kirjoita tuloste tiedostoon NIMI"
+#: malloc/memusage.sh:33
+#, fuzzy
+msgid "memusage: option \\`$1' requires an argument"
+msgstr "memusage: valitsin â€$1†vaatii argumentin"
-#: catgets/gencat.c:120
+#: malloc/memusage.sh:39
+#, fuzzy
msgid ""
-"Generate message catalog. If INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
-"is -, output is written to standard output.\n"
+"Usage: memusage [OPTION]... PROGRAM [PROGRAMOPTION]...\n"
+"Profile memory usage of PROGRAM.\n"
+"\n"
+" -n,--progname=NAME Name of the program file to profile\n"
+" -p,--png=FILE Generate PNG graphic and store it in FILE\n"
+" -d,--data=FILE Generate binary data file and store it in FILE\n"
+" -u,--unbuffered Don't buffer output\n"
+" -b,--buffer=SIZE Collect SIZE entries before writing them out\n"
+" --no-timer Don't collect additional information through timer\n"
+" -m,--mmap Also trace mmap & friends\n"
+"\n"
+" -?,--help Print this help and exit\n"
+" --usage Give a short usage message\n"
+" -V,--version Print version information and exit\n"
+"\n"
+" The following options only apply when generating graphical output:\n"
+" -t,--time-based Make graph linear in time\n"
+" -T,--total Also draw graph of total memory use\n"
+" --title=STRING Use STRING as title of the graph\n"
+" -x,--x-size=SIZE Make graphic SIZE pixels wide\n"
+" -y,--y-size=SIZE Make graphic SIZE pixels high\n"
+"\n"
+"Mandatory arguments to long options are also mandatory for any corresponding\n"
+"short options.\n"
+"\n"
msgstr ""
-"Luo viestikatalogi. Jos SYÖTETIEDOSTO on -, syöte luetaan vakiosyötteestä. Jos TULOSTIEDOSTO\n"
-"on -, tuloste kirjoitetaan vakiotulosteeseen.\n"
+"Ohjeet ohjelmistovioista ilmoittamiseen ovat osoitteessa\n"
+"<http://www.gnu.org/software/libc/bugs.html>."
-#: catgets/gencat.c:125
+#: malloc/memusage.sh:101
msgid ""
-"-o OUTPUT-FILE [INPUT-FILE]...\n"
-"[OUTPUT-FILE [INPUT-FILE]...]"
+"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
+" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
+" [--title=STRING] [--x-size=SIZE] [--y-size=SIZE]\n"
+" PROGRAM [PROGRAMOPTION]..."
msgstr ""
-"-o TULOSTIEDOSTO [SYÖTETIEDOSTO]...\n"
-"[TULOSTIEDOSTO [SYÖTETIEDOSTO]...]"
-
-#: catgets/gencat.c:282
-msgid "*standard input*"
-msgstr "*vakiosyöte*"
-
-#: catgets/gencat.c:417 catgets/gencat.c:494
-msgid "illegal set number"
-msgstr "virheellinen viestijoukon numero"
-
-#: catgets/gencat.c:444
-msgid "duplicate set definition"
-msgstr "kaksinkertainen joukon määrittely"
-#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
-msgid "this is the first definition"
-msgstr "tämä on ensimmäinen määrittely"
+#: malloc/memusage.sh:193
+#, fuzzy
+msgid "memusage: option \\`${1##*=}' is ambiguous"
+msgstr "memusage: valitsin â€${1##*=}†on moniselitteinen"
-#: catgets/gencat.c:522
-#, c-format
-msgid "unknown set `%s'"
-msgstr "tuntematon joukko \"%s\""
-
-#: catgets/gencat.c:563
-msgid "invalid quote character"
-msgstr "virheellinen lainausmerkki"
-
-#: catgets/gencat.c:576
-#, c-format
-msgid "unknown directive `%s': line ignored"
-msgstr "tuntematon direktiivi \"%s\": riviä ei huomioida"
+#: malloc/memusage.sh:202
+msgid "memusage: unrecognized option \\`$1'"
+msgstr "memusage: tunnistamaton valitsin â€$1â€"
-#: catgets/gencat.c:621
-msgid "duplicated message number"
-msgstr "kaksinkertainen viestinumero"
+#: malloc/memusage.sh:215
+#, fuzzy
+msgid "No program name given"
+msgstr "Ei ole nimitiedosto"
-#: catgets/gencat.c:674
-msgid "duplicated message identifier"
-msgstr "kaksinkertainen viestitunniste"
+#: malloc/memusagestat.c:57
+msgid "Name output file"
+msgstr "Nimeä tulostiedosto"
-#: catgets/gencat.c:731
-msgid "invalid character: message ignored"
-msgstr "virheellinen merkki: viestiä ei huomioida"
+#: malloc/memusagestat.c:58
+msgid "Title string used in output graphic"
+msgstr "Tulostekaavion otsikkomerkkijono"
-#: catgets/gencat.c:774
-msgid "invalid line"
-msgstr "virheellinen rivi"
+#: malloc/memusagestat.c:59
+msgid "Generate output linear to time (default is linear to number of function calls)"
+msgstr "Luo tuloste ajan suhteen lineaariseksi (oletus on lineaarisuus suhteessa funktiokutsujen määrään)"
-#: catgets/gencat.c:828
-msgid "malformed line ignored"
-msgstr "väärän muotoinen rivi jätetty huomioimatta"
+#: malloc/memusagestat.c:61
+msgid "Also draw graph for total memory consumption"
+msgstr "Piirrä myös kaavio kokonaismuistinkulutuksesta"
-#: catgets/gencat.c:992 catgets/gencat.c:1033
-#, c-format
-msgid "cannot open output file `%s'"
-msgstr "tulostiedostoa \"%s\" ei voi avata"
+#: malloc/memusagestat.c:62
+#, fuzzy
+msgid "Make output graphic VALUE pixels wide"
+msgstr "aseta tulostekaavio VALUE pikseliä leveäksi"
-#: catgets/gencat.c:1217
-msgid "unterminated message"
-msgstr "päättämätön viesti"
+#: malloc/memusagestat.c:63
+#, fuzzy
+msgid "Make output graphic VALUE pixels high"
+msgstr "aseta tulostekaavio VALUE pikseliä korkeaksi"
-#: catgets/gencat.c:1241
-msgid "while opening old catalog file"
-msgstr "avattaessa vanhaa katalogitiedostoa"
+#: malloc/memusagestat.c:68
+msgid "Generate graphic from memory profiling data"
+msgstr "Luo kaavio muistin profilointidatasta"
-#: catgets/gencat.c:1332
-msgid "conversion modules not available"
-msgstr "muunnosmoduulit eivät ole käytettävissä"
+#: malloc/memusagestat.c:71
+msgid "DATAFILE [OUTFILE]"
+msgstr "DATATIEDOSTO [TULOSTIEDOSTO]"
-#: catgets/gencat.c:1358
-msgid "cannot determine escape character"
-msgstr "ohjausmerkkiä ei voi määrittää"
+#: misc/error.c:118
+msgid "Unknown system error"
+msgstr "Tuntematon järjestelmävirhe"
-#: stdlib/../sysdeps/unix/sysv/linux/ia64/makecontext.c:63
-msgid "makecontext: does not know how to handle more than 8 arguments\n"
-msgstr "makecontext: ei osaa käsitellä yli kahdeksaa argumenttia\n"
+#: nis/nis_callback.c:189
+msgid "unable to free arguments"
+msgstr "argumentteja ei voi vapauttaa"
-#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
-#: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
+#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr "Onnistui"
-#. TRANS Operation not permitted; only the owner of the file (or other resource)
-#. TRANS or processes with special privileges can perform the operation.
-#: stdio-common/../sysdeps/gnu/errlist.c:17
-msgid "Operation not permitted"
-msgstr "Toiminto ei ole sallittu"
-
-#. TRANS No such file or directory. This is a ``file doesn't exist'' error
-#. TRANS for ordinary files that are referenced in contexts where they are
-#. TRANS expected to already exist.
-#: stdio-common/../sysdeps/gnu/errlist.c:28
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:32
-msgid "No such file or directory"
-msgstr "Tiedostoa tai hakemistoa ei ole"
-
-#. TRANS No process matches the specified process ID.
-#: stdio-common/../sysdeps/gnu/errlist.c:37
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:33
-msgid "No such process"
-msgstr "Prosessia ei ole"
-
-#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
-#. TRANS completion of the call. When this happens, you should try the call
-#. TRANS again.
-#. TRANS
-#. TRANS You can choose to have functions resume after a signal that is handled,
-#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted
-#. TRANS Primitives}.
-#: stdio-common/../sysdeps/gnu/errlist.c:52
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:34
-msgid "Interrupted system call"
-msgstr "Keskeytetty järjestelmäkutsu"
+#: nis/nis_error.h:2
+msgid "Probable success"
+msgstr "Onnistui todennäköisesti"
-#. TRANS Input/output error; usually used for physical read or write errors.
-#: stdio-common/../sysdeps/gnu/errlist.c:61
-msgid "Input/output error"
-msgstr "I/O-virhe"
+#: nis/nis_error.h:3
+msgid "Not found"
+msgstr "Ei löydy"
-#. TRANS No such device or address. The system tried to use the device
-#. TRANS represented by a file you specified, and it couldn't find the device.
-#. TRANS This can mean that the device file was installed incorrectly, or that
-#. TRANS the physical device is missing or not correctly attached to the
-#. TRANS computer.
-#: stdio-common/../sysdeps/gnu/errlist.c:74
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:36
-msgid "No such device or address"
-msgstr "Laitetta tai osoitetta ei ole"
+#: nis/nis_error.h:4
+msgid "Probably not found"
+msgstr "Todennäköisesti ei löytynyt"
-#. TRANS Argument list too long; used when the arguments passed to a new program
-#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
-#. TRANS File}) occupy too much memory space. This condition never arises in the
-#. TRANS GNU system.
-#: stdio-common/../sysdeps/gnu/errlist.c:86
-msgid "Argument list too long"
-msgstr "Argumenttilista on liian pitkä"
+#: nis/nis_error.h:5
+msgid "Cache expired"
+msgstr "Välimuisti vanhentunut"
-#. TRANS Invalid executable file format. This condition is detected by the
-#. TRANS @code{exec} functions; see @ref{Executing a File}.
-#: stdio-common/../sysdeps/gnu/errlist.c:96
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:38
-msgid "Exec format error"
-msgstr "Käynnistettävän tiedoston muoto virheellinen"
+#: nis/nis_error.h:6
+msgid "NIS+ servers unreachable"
+msgstr "NIS+-palvelimia ei tavoiteta"
-#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
-#. TRANS closed or reading from a descriptor open only for writing (or vice
-#. TRANS versa).
-#: stdio-common/../sysdeps/gnu/errlist.c:107
-msgid "Bad file descriptor"
-msgstr "Virheellinen tiedostokahva"
+#: nis/nis_error.h:7
+msgid "Unknown object"
+msgstr "Tuntematon objekti"
-#. TRANS There are no child processes. This error happens on operations that are
-#. TRANS supposed to manipulate child processes, when there aren't any processes
-#. TRANS to manipulate.
-#: stdio-common/../sysdeps/gnu/errlist.c:118
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:40
-msgid "No child processes"
-msgstr "Ei lapsiprosesseja"
+#: nis/nis_error.h:8
+msgid "Server busy, try again"
+msgstr "Palvelin varattu, yritä uudelleen"
-#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
-#. TRANS deadlock situation. The system does not guarantee that it will notice
-#. TRANS all such situations. This error means you got lucky and the system
-#. TRANS noticed; it might just hang. @xref{File Locks}, for an example.
-#: stdio-common/../sysdeps/gnu/errlist.c:130
-msgid "Resource deadlock avoided"
-msgstr "Resurssiumpikuja vältetty"
+#: nis/nis_error.h:9
+msgid "Generic system error"
+msgstr "Yleinen järjestelmävirhe"
-#. TRANS No memory available. The system cannot allocate more virtual memory
-#. TRANS because its capacity is full.
-#: stdio-common/../sysdeps/gnu/errlist.c:140
-msgid "Cannot allocate memory"
-msgstr "Muistin varaaminen ei onnistu"
+#: nis/nis_error.h:10
+msgid "First/next chain broken"
+msgstr "Ensimmäinen/seuraava ketju rikki"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: stdio-common/../sysdeps/gnu/errlist.c:149
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:43
-#: nis/nis_error.c:39 nis/ypclnt.c:817
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
-msgstr "Lupa evätty"
-
-#. TRANS Bad address; an invalid pointer was detected.
-#. TRANS In the GNU system, this error never happens; you get a signal instead.
-#: stdio-common/../sysdeps/gnu/errlist.c:159
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:44
-msgid "Bad address"
-msgstr "Virheellinen osoite"
-
-#. TRANS A file that isn't a block special file was given in a situation that
-#. TRANS requires one. For example, trying to mount an ordinary file as a file
-#. TRANS system in Unix gives this error.
-#: stdio-common/../sysdeps/gnu/errlist.c:170
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:45
-msgid "Block device required"
-msgstr "Lohkolaite vaaditaan"
+msgstr "Lupa evätty"
-#. TRANS Resource busy; a system resource that can't be shared is already in use.
-#. TRANS For example, if you try to delete a file that is the root of a currently
-#. TRANS mounted filesystem, you get this error.
-#: stdio-common/../sysdeps/gnu/errlist.c:181
-msgid "Device or resource busy"
-msgstr "Laite tai resurssi varattu"
-
-#. TRANS File exists; an existing file was specified in a context where it only
-#. TRANS makes sense to specify a new file.
-#: stdio-common/../sysdeps/gnu/errlist.c:191
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:47
-msgid "File exists"
-msgstr "Tiedosto on olemassa"
-
-#. TRANS An attempt to make an improper link across file systems was detected.
-#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
-#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
-#: stdio-common/../sysdeps/gnu/errlist.c:202
-msgid "Invalid cross-device link"
-msgstr "Virheellinen laitteiden välinen linkki"
-
-#. TRANS The wrong type of device was given to a function that expects a
-#. TRANS particular sort of device.
-#: stdio-common/../sysdeps/gnu/errlist.c:212
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:49
-msgid "No such device"
-msgstr "Laitetta ei ole"
-
-#. TRANS A file that isn't a directory was specified when a directory is required.
-#: stdio-common/../sysdeps/gnu/errlist.c:221
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:50
-msgid "Not a directory"
-msgstr "Ei ole hakemisto"
+#: nis/nis_error.h:12
+msgid "Not owner"
+msgstr "Ei ole omistaja"
-#. TRANS File is a directory; you cannot open a directory for writing,
-#. TRANS or create or remove hard links to it.
-#: stdio-common/../sysdeps/gnu/errlist.c:231
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:51
-msgid "Is a directory"
-msgstr "On hakemisto"
+#: nis/nis_error.h:13
+msgid "Name not served by this server"
+msgstr "Tämä palvelin ei tarjoa tätä nimeä"
-#. TRANS Invalid argument. This is used to indicate various kinds of problems
-#. TRANS with passing the wrong argument to a library function.
-#: stdio-common/../sysdeps/gnu/errlist.c:241
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:52
-msgid "Invalid argument"
-msgstr "Virheellinen argumentti"
+#: nis/nis_error.h:14
+msgid "Server out of memory"
+msgstr "Palvelimen muisti lopussa"
-#. TRANS The current process has too many files open and can't open any more.
-#. TRANS Duplicate descriptors do count toward this limit.
-#. TRANS
-#. TRANS In BSD and GNU, the number of open files is controlled by a resource
-#. TRANS limit that can usually be increased. If you get this error, you might
-#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
-#. TRANS @pxref{Limits on Resources}.
-#: stdio-common/../sysdeps/gnu/errlist.c:256
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:54
-msgid "Too many open files"
-msgstr "Liian monta avointa tiedostoa"
+#: nis/nis_error.h:15
+msgid "Object with same name exists"
+msgstr "Saman niminen objekti on olemassa"
-#. TRANS There are too many distinct file openings in the entire system. Note
-#. TRANS that any number of linked channels count as just one file opening; see
-#. TRANS @ref{Linked Channels}. This error never occurs in the GNU system.
-#: stdio-common/../sysdeps/gnu/errlist.c:267
-msgid "Too many open files in system"
-msgstr "Liian monta avointa tiedostoa järjestelmässä"
+#: nis/nis_error.h:16
+msgid "Not master server for this domain"
+msgstr "Ei ole tämän toimialueen pääpalvelin"
-#. TRANS Inappropriate I/O control operation, such as trying to set terminal
-#. TRANS modes on an ordinary file.
-#: stdio-common/../sysdeps/gnu/errlist.c:277
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:55
-msgid "Inappropriate ioctl for device"
-msgstr "Laitteelle sopimaton ioctl"
+#: nis/nis_error.h:17
+msgid "Invalid object for operation"
+msgstr "Virheellinen objekti operaatiolle"
-#. TRANS An attempt to execute a file that is currently open for writing, or
-#. TRANS write to a file that is currently being executed. Often using a
-#. TRANS debugger to run a program is considered having it open for writing and
-#. TRANS will cause this error. (The name stands for ``text file busy''.) This
-#. TRANS is not an error in the GNU system; the text is copied as necessary.
-#: stdio-common/../sysdeps/gnu/errlist.c:290
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:56
-msgid "Text file busy"
-msgstr "Tekstitiedosto varattu"
+#: nis/nis_error.h:18
+msgid "Malformed name, or illegal name"
+msgstr "Väärän muotoinen tai virheellinen nimi"
-#. TRANS File too big; the size of a file would be larger than allowed by the system.
-#: stdio-common/../sysdeps/gnu/errlist.c:299
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:57
-msgid "File too large"
-msgstr "Liian suuri tiedosto"
+#: nis/nis_error.h:19
+msgid "Unable to create callback"
+msgstr "vastakutsua ei voi luoda"
-#. TRANS No space left on device; write operation on a file failed because the
-#. TRANS disk is full.
-#: stdio-common/../sysdeps/gnu/errlist.c:309
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:58
-msgid "No space left on device"
-msgstr "Laitteella ei ole tilaa jäljellä"
+#: nis/nis_error.h:20
+msgid "Results sent to callback proc"
+msgstr "Tulokset lähetetty vastakutsuproseduurille"
-#. TRANS Invalid seek operation (such as on a pipe).
-#: stdio-common/../sysdeps/gnu/errlist.c:318
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:59
-msgid "Illegal seek"
-msgstr "Virheellinen siirto"
+#: nis/nis_error.h:21
+msgid "Not found, no such name"
+msgstr "Ei löytynyt, nimeä ei ole"
-#. TRANS An attempt was made to modify something on a read-only file system.
-#: stdio-common/../sysdeps/gnu/errlist.c:327
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:60
-msgid "Read-only file system"
-msgstr "Kirjoitussuojattu tiedostojärjestelmä"
+#: nis/nis_error.h:22
+msgid "Name/entry isn't unique"
+msgstr "Nimi/merkintä ei ole ainutkertainen"
-#. TRANS Too many links; the link count of a single file would become too large.
-#. TRANS @code{rename} can cause this error if the file being renamed already has
-#. TRANS as many links as it can take (@pxref{Renaming Files}).
-#: stdio-common/../sysdeps/gnu/errlist.c:338
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:61
-msgid "Too many links"
-msgstr "Liian monta linkkiä"
+#: nis/nis_error.h:23
+msgid "Modification failed"
+msgstr "Muutos epäonnistui"
-#. TRANS Domain error; used by mathematical functions when an argument value does
-#. TRANS not fall into the domain over which the function is defined.
-#: stdio-common/../sysdeps/gnu/errlist.c:361
-msgid "Numerical argument out of domain"
-msgstr "Numeerinen argumentti ei kuulu määrittelyjoukkoon"
+#: nis/nis_error.h:24
+msgid "Database for table does not exist"
+msgstr "Tietokantaa taulukolle ei ole olemassa"
-#. TRANS Range error; used by mathematical functions when the result value is
-#. TRANS not representable because of overflow or underflow.
-#: stdio-common/../sysdeps/gnu/errlist.c:371
-msgid "Numerical result out of range"
-msgstr "Numeerinen tulos on sallitun välin ulkopuolella"
+#: nis/nis_error.h:25
+msgid "Entry/table type mismatch"
+msgstr "Merkinnän/taulukon tyyppi on väärä"
-#. TRANS Resource temporarily unavailable; the call might work if you try again
-#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
-#. TRANS they are always the same in the GNU C library.
-#. TRANS
-#. TRANS This error can happen in a few different situations:
-#. TRANS
-#. TRANS @itemize @bullet
-#. TRANS @item
-#. TRANS An operation that would block was attempted on an object that has
-#. TRANS non-blocking mode selected. Trying the same operation again will block
-#. TRANS until some external condition makes it possible to read, write, or
-#. TRANS connect (whatever the operation). You can use @code{select} to find out
-#. TRANS when the operation will be possible; @pxref{Waiting for I/O}.
-#. TRANS
-#. TRANS @strong{Portability Note:} In many older Unix systems, this condition
-#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code
-#. TRANS different from @code{EAGAIN}. To make your program portable, you should
-#. TRANS check for both codes and treat them the same.
-#. TRANS
-#. TRANS @item
-#. TRANS A temporary resource shortage made an operation impossible. @code{fork}
-#. TRANS can return this error. It indicates that the shortage is expected to
-#. TRANS pass, so your program can try the call again later and it may succeed.
-#. TRANS It is probably a good idea to delay for a few seconds before trying it
-#. TRANS again, to allow time for other processes to release scarce resources.
-#. TRANS Such shortages are usually fairly serious and affect the whole system,
-#. TRANS so usually an interactive program should report the error to the user
-#. TRANS and return to its command loop.
-#. TRANS @end itemize
-#: stdio-common/../sysdeps/gnu/errlist.c:408
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:41
-msgid "Resource temporarily unavailable"
-msgstr "Resurssi ei tilapäisesti ole käytettävissä"
+#: nis/nis_error.h:26
+msgid "Link points to illegal name"
+msgstr "Linkki viittaa virheelliseen nimeen"
-#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
-#. TRANS The values are always the same, on every operating system.
-#. TRANS
-#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
-#. TRANS separate error code.
-#: stdio-common/../sysdeps/gnu/errlist.c:421
-msgid "Operation would block"
-msgstr "Toiminto pysähtyisi"
+#: nis/nis_error.h:27
+msgid "Partial success"
+msgstr "Onnistui osittain"
-#. TRANS An operation that cannot complete immediately was initiated on an object
-#. TRANS that has non-blocking mode selected. Some functions that must always
-#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return
-#. TRANS @code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that
-#. TRANS the operation has begun and will take some time. Attempts to manipulate
-#. TRANS the object before the call completes return @code{EALREADY}. You can
-#. TRANS use the @code{select} function to find out when the pending operation
-#. TRANS has completed; @pxref{Waiting for I/O}.
-#: stdio-common/../sysdeps/gnu/errlist.c:437
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:180
-msgid "Operation now in progress"
-msgstr "Toiminto on nyt käynnissä"
+#: nis/nis_error.h:28
+msgid "Too many attributes"
+msgstr "Liian monta määrettä"
-#. TRANS An operation is already in progress on an object that has non-blocking
-#. TRANS mode selected.
-#: stdio-common/../sysdeps/gnu/errlist.c:447
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:179
-msgid "Operation already in progress"
-msgstr "Toiminto on jo käynnissä"
+#: nis/nis_error.h:29
+msgid "Error in RPC subsystem"
+msgstr "Virhe RPC-alijärjestelmässä"
-#. TRANS A file that isn't a socket was specified when a socket is required.
-#: stdio-common/../sysdeps/gnu/errlist.c:456
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:125
-msgid "Socket operation on non-socket"
-msgstr "Pistoketoiminto muulle kuin pistokkeelle"
+#: nis/nis_error.h:30
+msgid "Missing or malformed attribute"
+msgstr "Puuttuva tai väärän muotoinen määre"
-#. TRANS The size of a message sent on a socket was larger than the supported
-#. TRANS maximum size.
-#: stdio-common/../sysdeps/gnu/errlist.c:466
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:127
-msgid "Message too long"
-msgstr "Liian pitkä viesti"
+#: nis/nis_error.h:31
+msgid "Named object is not searchable"
+msgstr "Nimetty objekti ei ole haettavissa"
-#. TRANS The socket type does not support the requested communications protocol.
-#: stdio-common/../sysdeps/gnu/errlist.c:475
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:128
-msgid "Protocol wrong type for socket"
-msgstr "Protokollan tyyppi on väärä pistokkeelle"
+#: nis/nis_error.h:32
+msgid "Error while talking to callback proc"
+msgstr "Virhe puhuttaessa vastakutsuproseduurille"
-#. TRANS You specified a socket option that doesn't make sense for the
-#. TRANS particular protocol being used by the socket. @xref{Socket Options}.
-#: stdio-common/../sysdeps/gnu/errlist.c:485
-msgid "Protocol not available"
-msgstr "Protokolla ei ole käytettävissä"
+#: nis/nis_error.h:33
+msgid "Non NIS+ namespace encountered"
+msgstr "Kohdattu NIS+:aan kuulumaton nimiavaruus"
-#. TRANS The socket domain does not support the requested communications protocol
-#. TRANS (perhaps because the requested protocol is completely invalid).
-#. TRANS @xref{Creating a Socket}.
-#: stdio-common/../sysdeps/gnu/errlist.c:496
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:150
-msgid "Protocol not supported"
-msgstr "Protokolla ei ole tuettu"
+#: nis/nis_error.h:34
+msgid "Illegal object type for operation"
+msgstr "Objektin tyyppi on virheellinen toiminnolle"
-#. TRANS The socket type is not supported.
-#: stdio-common/../sysdeps/gnu/errlist.c:505
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:151
-msgid "Socket type not supported"
-msgstr "Pistoketyyppi ei ole tuettu"
+#: nis/nis_error.h:35
+msgid "Passed object is not the same object on server"
+msgstr "Välitetty objekti ei ole sama kuin palvelimella"
-#. TRANS The operation you requested is not supported. Some socket functions
-#. TRANS don't make sense for all types of sockets, and others may not be
-#. TRANS implemented for all communications protocols. In the GNU system, this
-#. TRANS error can happen for many calls when the object does not support the
-#. TRANS particular operation; it is a generic indication that the server knows
-#. TRANS nothing to do for that call.
-#: stdio-common/../sysdeps/gnu/errlist.c:519
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:78
-msgid "Operation not supported"
-msgstr "Toiminto ei ole tuettu"
+#: nis/nis_error.h:36
+msgid "Modify operation failed"
+msgstr "Muutostoiminto epäonnistui"
-#. TRANS The socket communications protocol family you requested is not supported.
-#: stdio-common/../sysdeps/gnu/errlist.c:528
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:153
-msgid "Protocol family not supported"
-msgstr "Protokollaperhe ei ole tuettu"
+#: nis/nis_error.h:37
+msgid "Query illegal for named table"
+msgstr "Virheellinen kysely nimetylle taulukolle"
-#. TRANS The address family specified for a socket is not supported; it is
-#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}.
-#: stdio-common/../sysdeps/gnu/errlist.c:538
-msgid "Address family not supported by protocol"
-msgstr "Protokolla ei tue osoiteperhettä"
+#: nis/nis_error.h:38
+msgid "Attempt to remove a non-empty table"
+msgstr "Yritettiin poistaa ei-tyhjä taulukko"
-#. TRANS The requested socket address is already in use. @xref{Socket Addresses}.
-#: stdio-common/../sysdeps/gnu/errlist.c:547
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:155
-msgid "Address already in use"
-msgstr "Osoite on jo käytössä"
+#: nis/nis_error.h:39
+msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
+msgstr "Virhe NIS+-kylmäkäynnistystiedoston käyttämisessä. Onko NIS+ asennettu?"
-#. TRANS The requested socket address is not available; for example, you tried
-#. TRANS to give a socket a name that doesn't match the local host name.
-#. TRANS @xref{Socket Addresses}.
-#: stdio-common/../sysdeps/gnu/errlist.c:558
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:156
-msgid "Cannot assign requested address"
-msgstr "Pyydettyä osoitetta ei voi asettaa"
+#: nis/nis_error.h:40
+msgid "Full resync required for directory"
+msgstr "Hakemisto vaatii täyden uudelleensynkronoinnin"
-#. TRANS A socket operation failed because the network was down.
-#: stdio-common/../sysdeps/gnu/errlist.c:567
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:157
-msgid "Network is down"
-msgstr "Verkko on poissa käytöstä"
+#: nis/nis_error.h:41
+msgid "NIS+ operation failed"
+msgstr "NIS+-toiminto epäonnistui"
-#. TRANS A socket operation failed because the subnet containing the remote host
-#. TRANS was unreachable.
-#: stdio-common/../sysdeps/gnu/errlist.c:577
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:158
-msgid "Network is unreachable"
-msgstr "Verkkoa ei tavoiteta"
+#: nis/nis_error.h:42
+msgid "NIS+ service is unavailable or not installed"
+msgstr "NIS+-palvelu ei ole käytettävissä tai asennettu"
-#. TRANS A network connection was reset because the remote host crashed.
-#: stdio-common/../sysdeps/gnu/errlist.c:586
-msgid "Network dropped connection on reset"
-msgstr "Verkko sulki yhteyden vastapään takia."
+#: nis/nis_error.h:43
+msgid "Yes, 42 is the meaning of life"
+msgstr "Kyllä, 42 on elämän tarkoitus"
-#. TRANS A network connection was aborted locally.
-#: stdio-common/../sysdeps/gnu/errlist.c:595
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:160
-msgid "Software caused connection abort"
-msgstr "Ohjelmisto aiheutti yhteyden katkaisun"
+#: nis/nis_error.h:44
+msgid "Unable to authenticate NIS+ server"
+msgstr "NIS+-palvelinta ei voi todentaa"
-#. TRANS A network connection was closed for reasons outside the control of the
-#. TRANS local host, such as by the remote machine rebooting or an unrecoverable
-#. TRANS protocol violation.
-#: stdio-common/../sysdeps/gnu/errlist.c:606
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:161
-msgid "Connection reset by peer"
-msgstr "Vastapää sulki yhteyden"
+#: nis/nis_error.h:45
+msgid "Unable to authenticate NIS+ client"
+msgstr "NIS+-asiakasta ei voi todentaa"
-#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this
-#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
-#. TRANS other from network operations.
-#: stdio-common/../sysdeps/gnu/errlist.c:617
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:162
-msgid "No buffer space available"
-msgstr "Puskuritilaa ei ole vapaana"
+#: nis/nis_error.h:46
+msgid "No file space on server"
+msgstr "Palvelimella ei ole tilaa"
-#. TRANS You tried to connect a socket that is already connected.
-#. TRANS @xref{Connecting}.
-#: stdio-common/../sysdeps/gnu/errlist.c:627
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:163
-msgid "Transport endpoint is already connected"
-msgstr "Siirron vastapää on jo yhdistetty"
+#: nis/nis_error.h:47
+msgid "Unable to create process on server"
+msgstr "Palvelimelle ei voi luoda prosessia"
-#. TRANS The socket is not connected to anything. You get this error when you
-#. TRANS try to transmit data over a socket, without first specifying a
-#. TRANS destination for the data. For a connectionless socket (for datagram
-#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
-#: stdio-common/../sysdeps/gnu/errlist.c:639
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:164
-msgid "Transport endpoint is not connected"
-msgstr "Siirron vastapää ei ole yhdistetty"
+#: nis/nis_error.h:48
+msgid "Master server busy, full dump rescheduled."
+msgstr "Pääpalvelin on varattu, täysi vedostus ajastettu uudelleen."
-#. TRANS No default destination address was set for the socket. You get this
-#. TRANS error when you try to transmit data over a connectionless socket,
-#. TRANS without first specifying a destination for the data with @code{connect}.
-#: stdio-common/../sysdeps/gnu/errlist.c:650
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:126
-msgid "Destination address required"
-msgstr "Kohdeosoite vaaditaan"
+#: nis/nis_local_names.c:122
+#, c-format
+msgid "LOCAL entry for UID %d in directory %s not unique\n"
+msgstr "PAIKALLINEN merkintä UID:lle %d hakemistossa %s ei ole ainutkertainen\n"
-#. TRANS The socket has already been shut down.
-#: stdio-common/../sysdeps/gnu/errlist.c:659
-msgid "Cannot send after transport endpoint shutdown"
-msgstr "Siirron vastapään sulkemisen jälkeen ei voi lähettää"
+#: nis/nis_print.c:51
+msgid "UNKNOWN"
+msgstr "TUNTEMATON"
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:668
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:174
-msgid "Too many references: cannot splice"
-msgstr "Liian monta viittausta: ei voi yhdistellä"
+#: nis/nis_print.c:109
+msgid "BOGUS OBJECT\n"
+msgstr "VÄÄRÄ OBJEKTI\n"
-#. TRANS A socket operation with a specified timeout received no response during
-#. TRANS the timeout period.
-#: stdio-common/../sysdeps/gnu/errlist.c:678
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:175
-msgid "Connection timed out"
-msgstr "Yhteys aikakatkaistu"
+#: nis/nis_print.c:112
+msgid "NO OBJECT\n"
+msgstr "EI OBJEKTIA\n"
-#. TRANS A remote host refused to allow the network connection (typically because
-#. TRANS it is not running the requested service).
-#: stdio-common/../sysdeps/gnu/errlist.c:688
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:176
-msgid "Connection refused"
-msgstr "Yhteys torjuttu"
+#: nis/nis_print.c:115
+msgid "DIRECTORY\n"
+msgstr "HAKEMISTO\n"
-#. TRANS Too many levels of symbolic links were encountered in looking up a file name.
-#. TRANS This often indicates a cycle of symbolic links.
-#: stdio-common/../sysdeps/gnu/errlist.c:698
-msgid "Too many levels of symbolic links"
-msgstr "Liian monta symbolisten linkkien tasoa"
+#: nis/nis_print.c:118
+msgid "GROUP\n"
+msgstr "RYHMÄ\n"
-#. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for
-#. TRANS Files}) or host name too long (in @code{gethostname} or
-#. TRANS @code{sethostname}; @pxref{Host Identification}).
-#: stdio-common/../sysdeps/gnu/errlist.c:709
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:108
-msgid "File name too long"
-msgstr "Liian pitkä tiedostonimi"
+#: nis/nis_print.c:121
+msgid "TABLE\n"
+msgstr "TAULUKKO\n"
-#. TRANS The remote host for a requested network connection is down.
-#: stdio-common/../sysdeps/gnu/errlist.c:718
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:177
-msgid "Host is down"
-msgstr "Isäntä on alhaalla"
+#: nis/nis_print.c:124
+msgid "ENTRY\n"
+msgstr "MERKINTÄ\n"
-#. TRANS The remote host for a requested network connection is not reachable.
-#: stdio-common/../sysdeps/gnu/errlist.c:727
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:178
-msgid "No route to host"
-msgstr "Reititystä isäntään ei ole"
+#: nis/nis_print.c:127
+msgid "LINK\n"
+msgstr "LINKKI\n"
-#. TRANS Directory not empty, where an empty directory was expected. Typically,
-#. TRANS this error occurs when you are trying to delete a directory.
-#: stdio-common/../sysdeps/gnu/errlist.c:737
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:123
-msgid "Directory not empty"
-msgstr "Hakemisto ei ole tyhjä"
+#: nis/nis_print.c:130
+msgid "PRIVATE\n"
+msgstr "YKSITYINEN\n"
-#. TRANS This means that the per-user limit on new process would be exceeded by
-#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on
-#. TRANS the @code{RLIMIT_NPROC} limit.
-#: stdio-common/../sysdeps/gnu/errlist.c:748
-msgid "Too many processes"
-msgstr "Liian monta prosessia"
+#: nis/nis_print.c:133
+msgid "(Unknown object)\n"
+msgstr "(Tuntematon objekti)\n"
-#. TRANS The file quota system is confused because there are too many users.
-#. TRANS @c This can probably happen in a GNU system when using NFS.
-#: stdio-common/../sysdeps/gnu/errlist.c:758
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:124
-msgid "Too many users"
-msgstr "Liian monta käyttäjää"
+#: nis/nis_print.c:167
+#, c-format
+msgid "Name : `%s'\n"
+msgstr "Nimi : â€%sâ€\n"
-#. TRANS The user's disk quota was exceeded.
-#: stdio-common/../sysdeps/gnu/errlist.c:767
-msgid "Disk quota exceeded"
-msgstr "Levykiintiö ylittynyt"
+#: nis/nis_print.c:168
+#, c-format
+msgid "Type : %s\n"
+msgstr "Tyyppi: %s\n"
-#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS
-#. TRANS system which is due to file system rearrangements on the server host.
-#. TRANS Repairing this condition usually requires unmounting and remounting
-#. TRANS the NFS file system on the local host.
-#: stdio-common/../sysdeps/gnu/errlist.c:779
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181
-msgid "Stale NFS file handle"
-msgstr "Vanhentunut NFS-tiedostokahva"
+#: nis/nis_print.c:173
+msgid "Master Server :\n"
+msgstr "Pääpalvelin :\n"
-#. TRANS An attempt was made to NFS-mount a remote file system with a file name that
-#. TRANS already specifies an NFS-mounted file.
-#. TRANS (This is an error on some operating systems, but we expect it to work
-#. TRANS properly on the GNU system, making this error code impossible.)
-#: stdio-common/../sysdeps/gnu/errlist.c:791
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:96
-msgid "Object is remote"
-msgstr "Tiedosto on etätiedosto"
+#: nis/nis_print.c:175
+msgid "Replicate :\n"
+msgstr "Kaksoiskappale:\n"
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:800
-msgid "RPC struct is bad"
-msgstr "RPC-rakenne on virheellinen"
+#: nis/nis_print.c:176
+#, c-format
+msgid "\tName : %s\n"
+msgstr "\tNimi : %s\n"
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:809
-msgid "RPC version wrong"
-msgstr "RPC-versio on väärä"
+#: nis/nis_print.c:177
+msgid "\tPublic Key : "
+msgstr "\tJulkinen avain: "
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:818
-msgid "RPC program not available"
-msgstr "RPC-ohjelma ei ole käytettävissä"
+#: nis/nis_print.c:181
+msgid "None.\n"
+msgstr "Ei mitään.\n"
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:827
-msgid "RPC program version wrong"
-msgstr "RPC-ohjelman versio on väärä"
+#: nis/nis_print.c:184
+#, c-format
+msgid "Diffie-Hellmann (%d bits)\n"
+msgstr "Diffie-Hellmann (%d bittiä)\n"
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:836
-msgid "RPC bad procedure for program"
-msgstr "RPC: väärä proseduuri ohjelmalle"
+#: nis/nis_print.c:189
+#, c-format
+msgid "RSA (%d bits)\n"
+msgstr "RSA (%d bittiä)\n"
-#. TRANS No locks available. This is used by the file locking facilities; see
-#. TRANS @ref{File Locks}. This error is never generated by the GNU system, but
-#. TRANS it can result from an operation to an NFS server running another
-#. TRANS operating system.
-#: stdio-common/../sysdeps/gnu/errlist.c:848
-msgid "No locks available"
-msgstr "Lukkoja ei ole käytettävissä"
+#: nis/nis_print.c:192
+msgid "Kerberos.\n"
+msgstr "Kerberos.\n"
-#. TRANS Inappropriate file type or format. The file was the wrong type for the
-#. TRANS operation, or a data file had the wrong format.
-#. TRANS
-#. TRANS On some systems @code{chmod} returns this error if you try to set the
-#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
-#: stdio-common/../sysdeps/gnu/errlist.c:861
-msgid "Inappropriate file type or format"
-msgstr "Sopimaton tiedostotyyppi tai -muoto"
+#: nis/nis_print.c:195
+#, c-format
+msgid "Unknown (type = %d, bits = %d)\n"
+msgstr "Tuntematon (tyyppi = %d, bitit = %d)\n"
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:870
-msgid "Authentication error"
-msgstr "Todennusvirhe"
+#: nis/nis_print.c:206
+#, c-format
+msgid "\tUniversal addresses (%u)\n"
+msgstr "\tYleiset osoitteet (%u)\n"
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:879
-msgid "Need authenticator"
-msgstr "Tarvitaan todentaja"
+#: nis/nis_print.c:228
+msgid "Time to live : "
+msgstr "Elinaika : "
-#. TRANS Function not implemented. This indicates that the function called is
-#. TRANS not implemented at all, either in the C library itself or in the
-#. TRANS operating system. When you get this error, you can be sure that this
-#. TRANS particular function will always fail with @code{ENOSYS} unless you
-#. TRANS install a new version of the C library or the operating system.
-#: stdio-common/../sysdeps/gnu/errlist.c:892
-msgid "Function not implemented"
-msgstr "Funktion toteutus puuttuu"
+#: nis/nis_print.c:230
+msgid "Default Access rights :\n"
+msgstr "Oletusarvoiset käyttöoikeudet: \n"
-#. TRANS Not supported. A function returns this error when certain parameter
-#. TRANS values are valid, but the functionality they request is not available.
-#. TRANS This can mean that the function does not implement a particular command
-#. TRANS or option value or flag bit at all. For functions that operate on some
-#. TRANS object given in a parameter, such as a file descriptor or a port, it
-#. TRANS might instead mean that only @emph{that specific object} (file
-#. TRANS descriptor, port, etc.) is unable to support the other parameters given;
-#. TRANS different file descriptors might support different ranges of parameter
-#. TRANS values.
-#. TRANS
-#. TRANS If the entire function is not available at all in the implementation,
-#. TRANS it returns @code{ENOSYS} instead.
-#: stdio-common/../sysdeps/gnu/errlist.c:912
-msgid "Not supported"
-msgstr "Ei ole tuettu"
+#: nis/nis_print.c:239
+#, c-format
+msgid "\tType : %s\n"
+msgstr "\tTyyppi : %s\n"
-#. TRANS While decoding a multibyte character the function came along an invalid
-#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
-#: stdio-common/../sysdeps/gnu/errlist.c:922
-msgid "Invalid or incomplete multibyte or wide character"
-msgstr "Virheellinen tai epätäydellinen monitavumerkki tai leveä merkki"
+#: nis/nis_print.c:240
+msgid "\tAccess rights: "
+msgstr "\tKäyttöoikeus: "
-#. TRANS In the GNU system, servers supporting the @code{term} protocol return
-#. TRANS this error for certain operations when the caller is not in the
-#. TRANS foreground process group of the terminal. Users do not usually see this
-#. TRANS error because functions such as @code{read} and @code{write} translate
-#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control},
-#. TRANS for information on process groups and these signals.
-#: stdio-common/../sysdeps/gnu/errlist.c:936
-msgid "Inappropriate operation for background process"
-msgstr "Taustaprosessille sopimaton toiminto"
+#: nis/nis_print.c:254
+msgid "Group Flags :"
+msgstr "Ryhmäliput :"
-#. TRANS In the GNU system, opening a file returns this error when the file is
-#. TRANS translated by a program and the translator program dies while starting
-#. TRANS up, before it has connected to the file.
-#: stdio-common/../sysdeps/gnu/errlist.c:947
-msgid "Translator died"
-msgstr "Kääntäjä kuoli"
+#: nis/nis_print.c:257
+msgid ""
+"\n"
+"Group Members :\n"
+msgstr ""
+"\n"
+"Ryhmän jäsenet:\n"
-#. TRANS The experienced user will know what is wrong.
-#. TRANS @c This error code is a joke. Its perror text is part of the joke.
-#. TRANS @c Don't change it.
-#: stdio-common/../sysdeps/gnu/errlist.c:958
-msgid "?"
-msgstr "?"
+#: nis/nis_print.c:269
+#, c-format
+msgid "Table Type : %s\n"
+msgstr "Taulukkotyyppi : %s\n"
-#. TRANS You did @strong{what}?
-#: stdio-common/../sysdeps/gnu/errlist.c:967
-msgid "You really blew it this time"
-msgstr "Tällä kertaa todella sotkit asiat"
+#: nis/nis_print.c:270
+#, c-format
+msgid "Number of Columns : %d\n"
+msgstr "Sarakkeiden määrä : %d\n"
-#. TRANS Go home and have a glass of warm, dairy-fresh milk.
-#: stdio-common/../sysdeps/gnu/errlist.c:976
-msgid "Computer bought the farm"
-msgstr "Tietokone osti maatilan"
+#: nis/nis_print.c:271
+#, c-format
+msgid "Character Separator : %c\n"
+msgstr "Merkkierotin : %c\n"
-#. TRANS This error code has no purpose.
-#: stdio-common/../sysdeps/gnu/errlist.c:985
-msgid "Gratuitous error"
-msgstr "Tarpeeton virhe"
+#: nis/nis_print.c:272
+#, c-format
+msgid "Search Path : %s\n"
+msgstr "Hakupolku : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:993
-msgid "Bad message"
-msgstr "Virheellinen viesti"
+#: nis/nis_print.c:273
+msgid "Columns :\n"
+msgstr "Sarakkeita :\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1001
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:66
-msgid "Identifier removed"
-msgstr "Tunniste poistettu"
+#: nis/nis_print.c:276
+#, c-format
+msgid "\t[%d]\tName : %s\n"
+msgstr "\t[%d]\tNimi : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1009
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:104
-msgid "Multihop attempted"
-msgstr "Yritettiin suorittaa \"multihop\""
+#: nis/nis_print.c:278
+msgid "\t\tAttributes : "
+msgstr "\t\tMääreet : "
-#: stdio-common/../sysdeps/gnu/errlist.c:1017
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:91
-msgid "No data available"
-msgstr "Dataa ei ole käytettävissä"
+#: nis/nis_print.c:280
+msgid "\t\tAccess Rights : "
+msgstr "\t\tKäyttöoikeus : "
-#: stdio-common/../sysdeps/gnu/errlist.c:1025
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:97
-msgid "Link has been severed"
-msgstr "Linkki on vahingoittunut"
+#: nis/nis_print.c:290
+msgid "Linked Object Type : "
+msgstr "Linkitetyn objektin tyyppi: "
-#: stdio-common/../sysdeps/gnu/errlist.c:1033
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:65
-msgid "No message of desired type"
-msgstr "Halutun tyyppisiä viestejä ei ole"
+#: nis/nis_print.c:292
+#, c-format
+msgid "Linked to : %s\n"
+msgstr "Linkitetty: %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1041
-msgid "Out of streams resources"
-msgstr "Virtaresurssit lopussa"
+#: nis/nis_print.c:302
+#, c-format
+msgid "\tEntry data of type %s\n"
+msgstr "\tMerkintädata tyyppiä %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1049
-msgid "Device not a stream"
-msgstr "Laite ei ole virta"
+#: nis/nis_print.c:305
+#, c-format
+msgid "\t[%u] - [%u bytes] "
+msgstr "\t[%u] - [%u tavua] "
-#: stdio-common/../sysdeps/gnu/errlist.c:1057
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:109
-msgid "Value too large for defined data type"
-msgstr "Arvo on liian suuri annetulle tietotyypille"
+#: nis/nis_print.c:308
+msgid "Encrypted data\n"
+msgstr "Salattua dataa\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1065
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:101
-msgid "Protocol error"
-msgstr "Protokollavirhe"
+#: nis/nis_print.c:310
+msgid "Binary data\n"
+msgstr "Binääridataa\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1073
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:92
-msgid "Timer expired"
-msgstr "Ajastin vanhentunut"
+#: nis/nis_print.c:326
+#, c-format
+msgid "Object Name : %s\n"
+msgstr "Objektin nimi : %s\n"
-#. TRANS Operation canceled; an asynchronous operation was canceled before it
-#. TRANS completed. @xref{Asynchronous I/O}. When you call @code{aio_cancel},
-#. TRANS the normal result is for the operations affected to complete with this
-#. TRANS error; @pxref{Cancel AIO Operations}.
-#: stdio-common/../sysdeps/gnu/errlist.c:1085
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:77
-msgid "Operation canceled"
-msgstr "Toiminto peruutettu"
+#: nis/nis_print.c:327
+#, c-format
+msgid "Directory : %s\n"
+msgstr "Hakemisto : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1093
-msgid "Interrupted system call should be restarted"
-msgstr "Keskeytetty järjestelmäkutsu on suoritettava uudestaan"
+#: nis/nis_print.c:328
+#, c-format
+msgid "Owner : %s\n"
+msgstr "Omistaja : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1101
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:67
-msgid "Channel number out of range"
-msgstr "Kanavan numero on sallitun välin ulkopuolella"
+#: nis/nis_print.c:329
+#, c-format
+msgid "Group : %s\n"
+msgstr "Ryhmä : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1109
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:68
-msgid "Level 2 not synchronized"
-msgstr "Taso 2 ei ole synkronoitu"
+#: nis/nis_print.c:330
+msgid "Access Rights : "
+msgstr "Käyttöoikeus : "
-#: stdio-common/../sysdeps/gnu/errlist.c:1117
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:69
-msgid "Level 3 halted"
-msgstr "Taso 3 pysäytetty"
+#: nis/nis_print.c:332
+#, c-format
+msgid ""
+"\n"
+"Time to Live : "
+msgstr ""
+"\n"
+"Elinaika : "
-#: stdio-common/../sysdeps/gnu/errlist.c:1125
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:70
-msgid "Level 3 reset"
-msgstr "Taso 3 alustettu"
+#: nis/nis_print.c:335
+#, c-format
+msgid "Creation Time : %s"
+msgstr "Luontiaika : %s"
-#: stdio-common/../sysdeps/gnu/errlist.c:1133
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:71
-msgid "Link number out of range"
-msgstr "Linkin numero on sallitun välin ulkopuolella"
+#: nis/nis_print.c:337
+#, c-format
+msgid "Mod. Time : %s"
+msgstr "Muutosaika : %s"
-#: stdio-common/../sysdeps/gnu/errlist.c:1141
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:72
-msgid "Protocol driver not attached"
-msgstr "Protokolla-ajuri ei ole kytketty"
+#: nis/nis_print.c:338
+msgid "Object Type : "
+msgstr "Objektin tyyppi:"
-#: stdio-common/../sysdeps/gnu/errlist.c:1149
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:73
-msgid "No CSI structure available"
-msgstr "CSI-rakennetta ei ole käytettävissä"
+#: nis/nis_print.c:358
+#, c-format
+msgid " Data Length = %u\n"
+msgstr " Datan pituus = %u\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1157
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:74
-msgid "Level 2 halted"
-msgstr "Taso 2 pysäytetty"
+#: nis/nis_print.c:372
+#, c-format
+msgid "Status : %s\n"
+msgstr "Tila : %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1165
-msgid "Invalid exchange"
-msgstr "Virheellinen vaihto"
+#: nis/nis_print.c:373
+#, c-format
+msgid "Number of objects : %u\n"
+msgstr "Objektien määrä : %u\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1173
-msgid "Invalid request descriptor"
-msgstr "Virheellinen pyyntökahva"
+#: nis/nis_print.c:377
+#, c-format
+msgid "Object #%d:\n"
+msgstr "Objekti #%d:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1181
-msgid "Exchange full"
-msgstr "Vaihto täynnä"
+#: nis/nis_print_group_entry.c:117
+#, c-format
+msgid "Group entry for \"%s.%s\" group:\n"
+msgstr "Ryhmämerkintä ryhmälle â€%s.%sâ€:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1189
-msgid "No anode"
-msgstr "Ei anode"
+#: nis/nis_print_group_entry.c:125
+msgid " Explicit members:\n"
+msgstr " Ilmaistut jäsenet:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1197
-msgid "Invalid request code"
-msgstr "Virheellinen pyyntökoodi"
+#: nis/nis_print_group_entry.c:130
+msgid " No explicit members\n"
+msgstr " Ei ilmaistuja jäseniä\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1205
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:85
-msgid "Invalid slot"
-msgstr "Virheellinen viipale"
+#: nis/nis_print_group_entry.c:133
+msgid " Implicit members:\n"
+msgstr " Ilmaisemattomat jäsenet:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1213
-msgid "File locking deadlock error"
-msgstr "Umpikuja tiedoston lukinnassa -virhe"
+#: nis/nis_print_group_entry.c:138
+msgid " No implicit members\n"
+msgstr " Ei ilmaisemattomia jäseniä\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1221
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:87
-msgid "Bad font file format"
-msgstr "Virheellinen kirjasintiedoston muoto"
+#: nis/nis_print_group_entry.c:141
+msgid " Recursive members:\n"
+msgstr " Rekursiiviset jäsenet:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1229
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:94
-msgid "Machine is not on the network"
-msgstr "Kone ei ole verkossa"
+#: nis/nis_print_group_entry.c:146
+msgid " No recursive members\n"
+msgstr " Ei rekursiivisia jäseniä\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1237
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:95
-msgid "Package not installed"
-msgstr "Pakettia ei ole asennettu"
+#: nis/nis_print_group_entry.c:149
+msgid " Explicit nonmembers:\n"
+msgstr " Ilmaistut ei-jäsenet:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1245
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:98
-msgid "Advertise error"
-msgstr "Ilmoitusvirhe"
+#: nis/nis_print_group_entry.c:154
+msgid " No explicit nonmembers\n"
+msgstr " Ei ilmaistuja epäjäseniä\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1253
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:99
-msgid "Srmount error"
-msgstr "Srmount-virhe"
+#: nis/nis_print_group_entry.c:157
+msgid " Implicit nonmembers:\n"
+msgstr " Ilmaisemattomat epäjäsenet:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1261
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:100
-msgid "Communication error on send"
-msgstr "Yhteysvirhe lähetettäessä"
+#: nis/nis_print_group_entry.c:162
+msgid " No implicit nonmembers\n"
+msgstr " Ei ilmaisemattomia epäjäseniä\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1269
-msgid "RFS specific error"
-msgstr "RFS:n virhe"
+#: nis/nis_print_group_entry.c:165
+#, fuzzy
+msgid " Recursive nonmembers:\n"
+msgstr " Rekursiiviset jäsenet:\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1277
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:110
-msgid "Name not unique on network"
-msgstr "Nimi ei ole ainutkertainen verkossa"
+#: nis/nis_print_group_entry.c:170
+msgid " No recursive nonmembers\n"
+msgstr " Ei rekursiivisia epäjäseniä\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1285
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:111
-msgid "File descriptor in bad state"
-msgstr "Tiedostokahva on virheellisessä tilassa"
+#: nis/nss_nisplus/nisplus-publickey.c:101
+#: nis/nss_nisplus/nisplus-publickey.c:183
+#, c-format
+msgid "DES entry for netname %s not unique\n"
+msgstr "DES-merkintä verkkonimelle %s ei ole ainutkertainen\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1293
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:112
-msgid "Remote address changed"
-msgstr "Etäosoite muuttunut"
+#: nis/nss_nisplus/nisplus-publickey.c:220
+#, fuzzy, c-format
+msgid "netname2user: missing group id list in `%s'"
+msgstr "netname2user: ryhmätunnuslista puuttuu â€%sâ€:ssa."
-#: stdio-common/../sysdeps/gnu/errlist.c:1301
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:113
-msgid "Can not access a needed shared library"
-msgstr "Tarvittavaa jaettua kirjastoa ei voi käyttää"
+#: nis/nss_nisplus/nisplus-publickey.c:302
+#: nis/nss_nisplus/nisplus-publickey.c:308
+#: nis/nss_nisplus/nisplus-publickey.c:373
+#: nis/nss_nisplus/nisplus-publickey.c:382
+#, c-format
+msgid "netname2user: (nis+ lookup): %s\n"
+msgstr "netname2user: (nis+-haku): %s\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:1309
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:114
-msgid "Accessing a corrupted shared library"
-msgstr "Käytetään turmeltunutta jaettua kirjastoa"
+#: nis/nss_nisplus/nisplus-publickey.c:321
+#, c-format
+msgid "netname2user: DES entry for %s in directory %s not unique"
+msgstr "netname2user: DES-merkintä %s:lle hakemistossa %s ei ole ainutkertainen"
-#: stdio-common/../sysdeps/gnu/errlist.c:1317
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:115
-msgid ".lib section in a.out corrupted"
-msgstr "a.out:in .lib-osa on turmeltunut"
+#: nis/nss_nisplus/nisplus-publickey.c:339
+#, c-format
+msgid "netname2user: principal name `%s' too long"
+msgstr "netname2user: päänimi â€%s†on liian pitkä"
-#: stdio-common/../sysdeps/gnu/errlist.c:1325
-msgid "Attempting to link in too many shared libraries"
-msgstr "Yritetään linkittää liian monta jaettua kirjastoa"
+#: nis/nss_nisplus/nisplus-publickey.c:395
+#, c-format
+msgid "netname2user: LOCAL entry for %s in directory %s not unique"
+msgstr "netname2user: PAIKALLINEN merkintä %s:lle hakemistossa %s ei ole ainutkertainen"
-#: stdio-common/../sysdeps/gnu/errlist.c:1333
-msgid "Cannot exec a shared library directly"
-msgstr "Jaettua kirjastoa ei voi käynnistää suoraan"
+#: nis/nss_nisplus/nisplus-publickey.c:402
+msgid "netname2user: should not have uid 0"
+msgstr "netname2user: uid:n ei pidä olla 0"
-#: stdio-common/../sysdeps/gnu/errlist.c:1341
-msgid "Streams pipe error"
-msgstr "Virtaputkivirhe"
+#: nis/ypclnt.c:836
+msgid "Request arguments bad"
+msgstr "Pyynnön argumentit virheellisiä"
-#: stdio-common/../sysdeps/gnu/errlist.c:1349
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:165
-msgid "Structure needs cleaning"
-msgstr "Rakenne vaatii puhdistusta"
+#: nis/ypclnt.c:839
+msgid "RPC failure on NIS operation"
+msgstr "RPC-virhe NIS-toiminnossa"
-#: stdio-common/../sysdeps/gnu/errlist.c:1357
-msgid "Not a XENIX named type file"
-msgstr "Ei ole XENIXin nimetty tyyppitiedosto"
+#: nis/ypclnt.c:842
+msgid "Can't bind to server which serves this domain"
+msgstr "Sitominen tämän toimialueen palvelimeen ei onnistu"
-#: stdio-common/../sysdeps/gnu/errlist.c:1365
-msgid "No XENIX semaphores available"
-msgstr "XENIX-semaforeja ei ole käytettävissä"
+#: nis/ypclnt.c:845
+msgid "No such map in server's domain"
+msgstr "Karttaa ei ole palvelimen toimialueella"
-#: stdio-common/../sysdeps/gnu/errlist.c:1373
-msgid "Is a named type file"
-msgstr "On nimetty tyyppitiedosto"
+#: nis/ypclnt.c:848
+msgid "No such key in map"
+msgstr "Avainta ei ole kartassa"
-#: stdio-common/../sysdeps/gnu/errlist.c:1381
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:170
-msgid "Remote I/O error"
-msgstr "Vastapään I/O-virhe"
+#: nis/ypclnt.c:851
+msgid "Internal NIS error"
+msgstr "Sisäinen NIS-virhe"
-#: stdio-common/../sysdeps/gnu/errlist.c:1389
-msgid "No medium found"
-msgstr "Mediaa ei löydy"
+#: nis/ypclnt.c:854
+msgid "Local resource allocation failure"
+msgstr "Paikallinen resurssienvaraus epäonnistui"
-#: stdio-common/../sysdeps/gnu/errlist.c:1397
-msgid "Wrong medium type"
-msgstr "Väärä mediatyyppi"
+#: nis/ypclnt.c:857
+msgid "No more records in map database"
+msgstr "Karttatietokannassa ei ole enempää tietueita"
-#: stdio-common/../sysdeps/unix/siglist.c:26
-msgid "Signal 0"
-msgstr "Signaali 0"
+#: nis/ypclnt.c:860
+msgid "Can't communicate with portmapper"
+msgstr "Porttikartoittajan kanssa ei voi kommunikoida"
-#: stdio-common/../sysdeps/unix/siglist.c:32
-msgid "IOT trap"
-msgstr "IOT-ansa"
+#: nis/ypclnt.c:863
+msgid "Can't communicate with ypbind"
+msgstr "Kommunikonti ypbind:in kanssa ei onnistu"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:30
-msgid "Error 0"
-msgstr "Virhe 0"
+#: nis/ypclnt.c:866
+msgid "Can't communicate with ypserv"
+msgstr "Kommunikointi ypserv:in kanssa ei onnistu"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:31
-#: nis/nis_error.c:40
-msgid "Not owner"
-msgstr "Ei ole omistaja"
+#: nis/ypclnt.c:869
+msgid "Local domain name not set"
+msgstr "Paikallista toimialuenimeä ei ole asetettu"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:35
-msgid "I/O error"
-msgstr "I/O-virhe"
+#: nis/ypclnt.c:872
+msgid "NIS map database is bad"
+msgstr "NIS-karttatietokanta on viallinen"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:37
-msgid "Arg list too long"
-msgstr "Argumenttilista on liian pitkä"
+#: nis/ypclnt.c:875
+msgid "NIS client/server version mismatch - can't supply service"
+msgstr "NIS-asiakas/palvelinversiot eivät täsmää - palvelua ei voi tarjota"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:39
-msgid "Bad file number"
-msgstr "Virheellinen tiedostonumero"
+#: nis/ypclnt.c:881
+msgid "Database is busy"
+msgstr "Tietokanta on varattu"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:42
-msgid "Not enough space"
-msgstr "Ei ole riittävästi tilaa"
+#: nis/ypclnt.c:884
+msgid "Unknown NIS error code"
+msgstr "Tuntematon NIS-virhekoodi"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:46
-msgid "Device busy"
-msgstr "Laite on varattu"
+#: nis/ypclnt.c:924
+msgid "Internal ypbind error"
+msgstr "Sisäinen ypbind-virhe"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:48
-msgid "Cross-device link"
-msgstr "Laitteidenvälinen linkki"
+#: nis/ypclnt.c:927
+msgid "Domain not bound"
+msgstr "Toimialuetta ei ole sidottu"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:53
-msgid "File table overflow"
-msgstr "Tiedostotaulukon ylivuoto"
+#: nis/ypclnt.c:930
+msgid "System resource allocation failure"
+msgstr "Järjestelmäresurssin varaus epäonnistui"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:63
-msgid "Argument out of domain"
-msgstr "Argumentti ei kuulu määrittelyjoukkoon"
+#: nis/ypclnt.c:933
+msgid "Unknown ypbind error"
+msgstr "Tuntematon ypbind-virhe"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:64
-msgid "Result too large"
-msgstr "Liian suuri tulos"
+#: nis/ypclnt.c:974
+msgid "yp_update: cannot convert host to netname\n"
+msgstr "yp_update: konenimeä ei voi muuntaa verkkonimeksi\n"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:75
-msgid "Deadlock situation detected/avoided"
-msgstr "Umpikujaan johtava tilanne havaittu ja vältetty"
+#: nis/ypclnt.c:992
+msgid "yp_update: cannot get server address\n"
+msgstr "yp_update: palvelimen osoitetta ei löydy\n"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:76
-msgid "No record locks available"
-msgstr "Tietuelukkoja ei ole käytettävissä"
+#: nscd/aicache.c:82 nscd/hstcache.c:481
+#, c-format
+msgid "Haven't found \"%s\" in hosts cache!"
+msgstr "â€%s†ei löytynyt konenimivälimuistista!"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:79
-msgid "Disc quota exceeded"
-msgstr "Levykiintiö ylittynyt"
+#: nscd/aicache.c:84 nscd/hstcache.c:483
+#, fuzzy, c-format
+msgid "Reloading \"%s\" in hosts cache!"
+msgstr "â€%s†ei löytynyt konenimivälimuistista!"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:80
-msgid "Bad exchange descriptor"
-msgstr "Virheellinen vaihtokahva"
+#: nscd/cache.c:150
+#, c-format
+msgid "add new entry \"%s\" of type %s for %s to cache%s"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:81
-msgid "Bad request descriptor"
-msgstr "Virheellinen pyyntökahva"
+#: nscd/cache.c:152
+msgid " (first)"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:82
-msgid "Message tables full"
-msgstr "Viestitaulukot täysiä"
+#: nscd/cache.c:286 nscd/connections.c:866
+#, c-format
+msgid "cannot stat() file `%s': %s"
+msgstr "tiedoston â€%s†tilaa ei voi lukea: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:83
-msgid "Anode table overflow"
-msgstr "Anode-taulukon ylivuoto"
+#: nscd/cache.c:328
+#, c-format
+msgid "pruning %s cache; time %ld"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:84
-msgid "Bad request code"
-msgstr "Virheellinen pyyntökoodi"
+#: nscd/cache.c:357
+#, c-format
+msgid "considering %s entry \"%s\", timeout %<PRIu64>"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:86
-msgid "File locking deadlock"
-msgstr "Umpikuja tiedoston lukinnassa"
+#: nscd/connections.c:570
+#, c-format
+msgid "invalid persistent database file \"%s\": %s"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:88
-msgid "Error 58"
-msgstr "Virhe 58"
+#: nscd/connections.c:578
+#, fuzzy
+msgid "uninitialized header"
+msgstr "virheellinen ELF-otsikko"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:89
-msgid "Error 59"
-msgstr "Virhe 59"
+#: nscd/connections.c:583
+msgid "header size does not match"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:90
-msgid "Not a stream device"
-msgstr "Ei ole virtalaite"
+#: nscd/connections.c:593
+msgid "file size does not match"
+msgstr "tiedoston koko ei täsmää"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:93
-msgid "Out of stream resources"
-msgstr "Virtaresurssit lopussa"
+#: nscd/connections.c:610
+#, fuzzy
+msgid "verification failed"
+msgstr "Muutos epäonnistui"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:102
-msgid "Error 72"
-msgstr "Virhe 72"
+#: nscd/connections.c:624
+#, c-format
+msgid "suggested size of table for database %s larger than the persistent database's table"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:103
-msgid "Error 73"
-msgstr "Virhe 73"
+#: nscd/connections.c:635 nscd/connections.c:720
+#, fuzzy, c-format
+msgid "cannot create read-only descriptor for \"%s\"; no mmap"
+msgstr "sisäisiä kahvoja ei voi luoda"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:105
-msgid "Error 75"
-msgstr "Virhe 75"
+#: nscd/connections.c:651
+#, fuzzy, c-format
+msgid "cannot access '%s'"
+msgstr "tiedostoa â€%s†ei voi avata"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:106
-msgid "Error 76"
-msgstr "Virhe 76"
+#: nscd/connections.c:699
+#, c-format
+msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:107
-msgid "Not a data message"
-msgstr "Ei ole dataviesti"
+#: nscd/connections.c:706
+#, fuzzy, c-format
+msgid "cannot create %s; no persistent database used"
+msgstr "aluelistaa ei voi luoda"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:116
-msgid "Attempting to link in more shared libraries than system limit"
-msgstr "Yritetään linkittää järjestelmärajaa enemmän jaettuja kirjastoja"
+#: nscd/connections.c:709
+#, fuzzy, c-format
+msgid "cannot create %s; no sharing possible"
+msgstr "tilapäistä tiedostoa ei voi luoda"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:117
-msgid "Can not exec a shared library directly"
-msgstr "Jaettua kirjastoa suoraan ei voi käynnistää suoraan"
+#: nscd/connections.c:780
+#, fuzzy, c-format
+msgid "cannot write to database file %s: %s"
+msgstr "tilastoa ei voi kirjoittaa: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:118
-msgid "Illegal byte sequence"
-msgstr "Virheellinen tavusarja"
+#: nscd/connections.c:819
+#, c-format
+msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:119
-msgid "Operation not applicable"
-msgstr "Toiminto ei ole soveltuva"
+#: nscd/connections.c:902
+#, c-format
+msgid "cannot open socket: %s"
+msgstr "pistoketta ei voi avata: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:120
-msgid "Number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"
-msgstr "Symbolisten linkkien määrä ylittää arvon MAXSYMLINKS"
+#: nscd/connections.c:922
+#, fuzzy, c-format
+msgid "cannot change socket to nonblocking mode: %s"
+msgstr "pistoketta ei voi asettaa vastaanottamaan yhteyksiä: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:121
-msgid "Error 91"
-msgstr "Virhe 91"
+#: nscd/connections.c:930
+#, fuzzy, c-format
+msgid "cannot set socket to close on exec: %s"
+msgstr "pistoketta ei voi asettaa vastaanottamaan yhteyksiä: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:122
-msgid "Error 92"
-msgstr "Virhe 92"
+#: nscd/connections.c:943
+#, c-format
+msgid "cannot enable socket to accept connections: %s"
+msgstr "pistoketta ei voi asettaa vastaanottamaan yhteyksiä: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:129
-msgid "Option not supported by protocol"
-msgstr "Protokolla ei tue valitsinta"
+#: nscd/connections.c:1043
+#, c-format
+msgid "provide access to FD %d, for %s"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:130
-msgid "Error 100"
-msgstr "Virhe 100"
+#: nscd/connections.c:1055
+#, c-format
+msgid "cannot handle old request version %d; current version is %d"
+msgstr "vanhaa pyyntöversiota %d ei voi käsitellä; nykyinen versio on %d"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:131
-msgid "Error 101"
-msgstr "Virhe 101"
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:132
-msgid "Error 102"
-msgstr "Virhe 102"
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:133
-msgid "Error 103"
-msgstr "Virhe 103"
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:134
-msgid "Error 104"
-msgstr "Virhe 104"
+#: nscd/connections.c:1125 nscd/connections.c:1178
+#, c-format
+msgid "cannot write result: %s"
+msgstr "tulosta ei voi kirjoittaa: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:135
-msgid "Error 105"
-msgstr "Virhe 105"
+#: nscd/connections.c:1261
+#, c-format
+msgid "error getting caller's id: %s"
+msgstr "virhe kutsujan tunnisteen hakemisessa: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:136
-msgid "Error 106"
-msgstr "Virhe 106"
+#: nscd/connections.c:1320
+#, c-format
+msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:137
-msgid "Error 107"
-msgstr "Virhe 107"
+#: nscd/connections.c:1334
+#, c-format
+msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:138
-msgid "Error 108"
-msgstr "Virhe 108"
+#: nscd/connections.c:1374
+#, c-format
+msgid "cannot change to old UID: %s; disabling paranoia mode"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:139
-msgid "Error 109"
-msgstr "Virhe 109"
+#: nscd/connections.c:1384
+#, c-format
+msgid "cannot change to old GID: %s; disabling paranoia mode"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:140
-msgid "Error 110"
-msgstr "Virhe 110"
+#: nscd/connections.c:1397
+#, c-format
+msgid "cannot change to old working directory: %s; disabling paranoia mode"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:141
-msgid "Error 111"
-msgstr "Virhe 111"
+#: nscd/connections.c:1429
+#, c-format
+msgid "re-exec failed: %s; disabling paranoia mode"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:142
-msgid "Error 112"
-msgstr "Virhe 112"
+#: nscd/connections.c:1438
+#, c-format
+msgid "cannot change current working directory to \"/\": %s"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:143
-msgid "Error 113"
-msgstr "Virhe 113"
+#: nscd/connections.c:1644
+#, c-format
+msgid "short read while reading request: %s"
+msgstr "vajaa luku luettaessa pyyntöä: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:144
-msgid "Error 114"
-msgstr "Virhe 114"
+#: nscd/connections.c:1677
+#, c-format
+msgid "key length in request too long: %d"
+msgstr "avaimen pituus pyynnössä liian pitkä: %d"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:145
-msgid "Error 115"
-msgstr "Virhe 115"
+#: nscd/connections.c:1690
+#, c-format
+msgid "short read while reading request key: %s"
+msgstr "vajaa luku luettaessa pyyntöavainta: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:146
-msgid "Error 116"
-msgstr "Virhe 116"
+#: nscd/connections.c:1699
+#, fuzzy, c-format
+msgid "handle_request: request received (Version = %d) from PID %ld"
+msgstr "handle_request: pyyntö vastaanotettu (Versio = %d)"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:147
-msgid "Error 117"
-msgstr "Virhe 117"
+#: nscd/connections.c:1704
+#, c-format
+msgid "handle_request: request received (Version = %d)"
+msgstr "handle_request: pyyntö vastaanotettu (Versio = %d)"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:148
-msgid "Error 118"
-msgstr "Virhe 118"
+#: nscd/connections.c:1903 nscd/connections.c:2101
+#, c-format
+msgid "disabled inotify after read error %d"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:149
-msgid "Error 119"
-msgstr "Virhe 119"
+#: nscd/connections.c:2230
+#, fuzzy
+msgid "could not initialize conditional variable"
+msgstr "arkistotiedostoa ei voi alustaa"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:152
-msgid "Operation not supported on transport endpoint"
-msgstr "Siirron vastapää ei tue toimintoa"
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:154
-msgid "Address family not supported by protocol family"
-msgstr "Protokollaperhe ei tue osoiteperhettä"
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:159
-msgid "Network dropped connection because of reset"
-msgstr "Verkko sulki yhteyden vastapään takia"
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
+#, c-format
+msgid "Failed to run nscd as user '%s'"
+msgstr "Ohjelman nscd ajaminen käyttäjän â€%s†oikeuksilla epäonnistui"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:166
-msgid "Error 136"
-msgstr "Virhe 136"
+#: nscd/connections.c:2322
+#, fuzzy, c-format
+msgid "initial getgrouplist failed"
+msgstr "getgrouplist epäonnistui"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:167
-msgid "Not a name file"
-msgstr "Ei ole nimitiedosto"
+#: nscd/connections.c:2331
+#, c-format
+msgid "getgrouplist failed"
+msgstr "getgrouplist epäonnistui"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:168
-msgid "Not available"
-msgstr "Ei ole käytettävissä"
+#: nscd/connections.c:2349
+#, c-format
+msgid "setgroups failed"
+msgstr "setgroups epäonnistui"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:169
-msgid "Is a name file"
-msgstr "On nimitiedosto"
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
+#, c-format
+msgid "short write in %s: %s"
+msgstr "vajaa kirjoitus tiedostossa %s: %s"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:171
-msgid "Reserved for future use"
-msgstr "Varattu tulevaan käyttöön"
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
+#, c-format
+msgid "Haven't found \"%s\" in group cache!"
+msgstr "â€%s†ei löytynyt ryhmävälimuistista!"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:172
-msgid "Error 142"
-msgstr "Virhe 142"
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
+#, fuzzy, c-format
+msgid "Reloading \"%s\" in group cache!"
+msgstr "â€%s†ei löytynyt ryhmävälimuistista!"
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:173
-msgid "Cannot send after socket shutdown"
-msgstr "Pistokkeen sulkemisen jälkeen ei voi lähettää"
+#: nscd/grpcache.c:517
+#, c-format
+msgid "Invalid numeric gid \"%s\"!"
+msgstr "Virheellinen numeerinen gid â€%sâ€!"
-#: stdio-common/psignal.c:63
+#: nscd/mem.c:457
#, c-format
-msgid "%s%sUnknown signal %d\n"
-msgstr "%s%sTuntematon signaali %d\n"
+msgid "freed %zu bytes in %s cache"
+msgstr ""
-#: malloc/mcheck.c:346
-msgid "memory is consistent, library is buggy\n"
-msgstr "muisti on yhtenäinen, kirjastossa on ohjelmistovirheitä\n"
+#: nscd/mem.c:594
+#, fuzzy, c-format
+msgid "no more memory for database '%s'"
+msgstr "Karttatietokannassa ei ole enempää tietueita"
-#: malloc/mcheck.c:349
-msgid "memory clobbered before allocated block\n"
-msgstr "muisti kärsinyt ennen varattuja lohkoja\n"
+#: nscd/nscd.c:101
+msgid "Read configuration data from NAME"
+msgstr "Lue asetukset tiedostosta NIMI"
-#: malloc/mcheck.c:352
-msgid "memory clobbered past end of allocated block\n"
-msgstr "muisti kärsinyt varattujen lohkojen jälkeen\n"
+#: nscd/nscd.c:103
+msgid "Do not fork and display messages on the current tty"
+msgstr "Älä haaraudu ja näytä viestit nykyisessä tty:ssä"
-#: malloc/mcheck.c:355
-msgid "block freed twice\n"
-msgstr "lohko vapautettu kahdesti\n"
+#: nscd/nscd.c:104
+msgid "NUMBER"
+msgstr "MÄÄRÄ"
-#: malloc/mcheck.c:358
-msgid "bogus mcheck_status, library is buggy\n"
-msgstr "väärä mcheck_status, kirjastossa on ohjelmavirhe\n"
+#: nscd/nscd.c:104
+msgid "Start NUMBER threads"
+msgstr "Käynnistä MÄÄRÄ säiettä"
-#: malloc/memusagestat.c:53
-msgid "Name output file"
-msgstr "Nimeä tulostiedosto"
+#: nscd/nscd.c:105
+msgid "Shut the server down"
+msgstr "Sammuta palvelin"
-#: malloc/memusagestat.c:54
-msgid "Title string used in output graphic"
-msgstr "Tulostekaavion otsikkomerkkijono"
+#: nscd/nscd.c:106
+#, fuzzy
+msgid "Print current configuration statistics"
+msgstr "Näytä nykyiset asetustilastot"
-#: malloc/memusagestat.c:55
-msgid "Generate output linear to time (default is linear to number of function calls)"
-msgstr "Luo tuloste ajan suhteen lineaariseksi (oletus on lineaarisuus suhteessa funktiokutsujen määrään)"
+#: nscd/nscd.c:107
+msgid "TABLE"
+msgstr "TAULUKKO"
-#: malloc/memusagestat.c:57
-msgid "Also draw graph for total memory consumption"
-msgstr "Piirrä myös kaavio kokonaismuistinkulutuksesta"
+#: nscd/nscd.c:108
+msgid "Invalidate the specified cache"
+msgstr "Poista käytöstä määritelty välimuisti"
-#: malloc/memusagestat.c:58
-msgid "make output graphic VALUE pixel wide"
-msgstr "aseta tulostekaavio VALUE pikseliä leveäksi"
+#: nscd/nscd.c:109
+msgid "TABLE,yes"
+msgstr "TAULUKKO,kyllä"
-#: malloc/memusagestat.c:59
-msgid "make output graphic VALUE pixel high"
-msgstr "aseta tulostekaavio VALUE pikseliä korkeaksi"
+#: nscd/nscd.c:110
+msgid "Use separate cache for each user"
+msgstr "Käytä erillistä välimuistia jokaiselle käyttäjälle"
-#: malloc/memusagestat.c:64
-msgid "Generate graphic from memory profiling data"
-msgstr "Luo kaavio muistin profilointidatasta"
+#: nscd/nscd.c:115
+msgid "Name Service Cache Daemon."
+msgstr "Nimipalvelun välimuistidemoni."
-#: malloc/memusagestat.c:67
-msgid "DATAFILE [OUTFILE]"
-msgstr "DATATIEDOSTO [TULOSTIEDOSTO]"
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
+#, c-format
+msgid "wrong number of arguments"
+msgstr "väärä määrä argumentteja"
-#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-msgid "Unknown error"
-msgstr "Tuntematon virhe"
+#: nscd/nscd.c:157
+#, fuzzy, c-format
+msgid "failure while reading configuration file; this is fatal"
+msgstr "asetustiedostoa ei voi lukea; tämä on vakavaa"
-#: string/strsignal.c:69
+#: nscd/nscd.c:166
#, c-format
-msgid "Real-time signal %d"
-msgstr "Reaaliaikasignaali %d"
+msgid "already running"
+msgstr "on jo käynnissä"
-#: string/strsignal.c:73
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
-msgid "Unknown signal %d"
-msgstr "Tuntematon signaali %d"
+msgid "cannot fork"
+msgstr "haarauttaminen ei onnistu"
-#: timezone/zdump.c:175
-#, c-format
-msgid "%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"
-msgstr "%s: käyttö: %s [ -v ] [ -c katkaisu ] vyöhykenimi ...\n"
+#: nscd/nscd.c:244
+#, fuzzy, c-format
+msgid "cannot change current working directory to \"/\""
+msgstr "työhakemistoa ei voi vaihtaa â€/â€:ksi"
-#: timezone/zdump.c:268
-msgid "Error writing to standard output"
-msgstr "Virhe kirjoitettaessa vakiotulosteeseen"
+#: nscd/nscd.c:252
+msgid "Could not create log file"
+msgstr "Lokitiedostoa ei voitu luoda"
-#: timezone/zic.c:365
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
-msgid "%s: Memory exhausted: %s\n"
-msgstr "%s: Muisti lopussa: %s\n"
-
-#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
-msgid "Unknown system error"
-msgstr "Tuntematon järjestelmävirhe"
+msgid "Only root is allowed to use this option!"
+msgstr "Vain root-käyttäjä voi käyttää tätä valitsinta!"
-#: timezone/zic.c:424
+#: nscd/nscd.c:345
#, c-format
-msgid "\"%s\", line %d: %s"
-msgstr "\"%s\", rivi %d: %s"
+msgid "'%s' is not a known database"
+msgstr "â€%s†ei ole tunnettu tietokanta"
-#: timezone/zic.c:427
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
-msgid " (rule from \"%s\", line %d)"
-msgstr " (sääntö tiedostosta \"%s\", riviltä %d)"
+msgid "write incomplete"
+msgstr "keskeneräinen kirjoitus"
-#: timezone/zic.c:439
-msgid "warning: "
-msgstr "varoitus: "
+#: nscd/nscd.c:381
+#, fuzzy, c-format
+msgid "cannot read invalidate ACK"
+msgstr "tiedoston dataa ei voi lukea"
-#: timezone/zic.c:449
+#: nscd/nscd.c:387
+#, fuzzy, c-format
+msgid "invalidation failed"
+msgstr "Muutos epäonnistui"
+
+#: nscd/nscd.c:397
#, c-format
-msgid ""
-"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
-"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
+msgid "secure services not implemented anymore"
msgstr ""
-"%s: käyttö: %s [ -s ] [ -v ] [ -l paik.aika ] [ -p posixsäännöt ] \\\n"
-"\t[ -d hakemisto ] [ -L karkaussekuntit ] [ -y yearistype ] [ tiedostonimi ... ]\n"
-#: timezone/zic.c:491
-#, c-format
-msgid "%s: More than one -d option specified\n"
-msgstr "%s: Annettu useampi kuin yksi -d -valitsin\n"
+#: nscd/nscd_conf.c:57
+#, fuzzy, c-format
+msgid "database %s is not supported"
+msgstr "muunnos merkistöön â€%s†ei ole tuettu"
-#: timezone/zic.c:501
+#: nscd/nscd_conf.c:108
#, c-format
-msgid "%s: More than one -l option specified\n"
-msgstr "%s: Annettu useampi kuin yksi -l -valitsin\n"
+msgid "Parse error: %s"
+msgstr "Jäsennysvirhe: %s"
-#: timezone/zic.c:511
+#: nscd/nscd_conf.c:194
#, c-format
-msgid "%s: More than one -p option specified\n"
-msgstr "%s: Annettu useampi kuin yksi -p -valitsin\n"
+msgid "Must specify user name for server-user option"
+msgstr "Palvelinkäyttäjä-valitsimelle on annettava käyttäjänimi"
-#: timezone/zic.c:521
-#, c-format
-msgid "%s: More than one -y option specified\n"
-msgstr "%s: Annettu useampi kuin yksi -y -valitsin\n"
+#: nscd/nscd_conf.c:201
+#, fuzzy, c-format
+msgid "Must specify user name for stat-user option"
+msgstr "Palvelinkäyttäjä-valitsimelle on annettava käyttäjänimi"
-#: timezone/zic.c:531
-#, c-format
-msgid "%s: More than one -L option specified\n"
-msgstr "%s: Annettu useampi kuin yksi -L -valitsin\n"
-
-#: timezone/zic.c:638
-#, c-format
-msgid "%s: Can't unlink %s: %s\n"
-msgstr "%s: Tiedoston %s linkitystä ei voi poistaa: %s\n"
+#: nscd/nscd_conf.c:245
+#, fuzzy, c-format
+msgid "invalid value for 'reload-count': %u"
+msgstr "%s: virheellinen arvo kentälle â€%sâ€"
-#: timezone/zic.c:645
-msgid "hard link failed, symbolic link used"
-msgstr "kova linkitys epäonnistui, käytetään symbolista linkkiä"
+#: nscd/nscd_conf.c:260
+#, fuzzy, c-format
+msgid "Must specify value for restart-interval option"
+msgstr "Palvelinkäyttäjä-valitsimelle on annettava käyttäjänimi"
-#: timezone/zic.c:653
+#: nscd/nscd_conf.c:274
#, c-format
-msgid "%s: Can't link from %s to %s: %s\n"
-msgstr "%s: Linkitys %s -> %s ei onnistu: %s\n"
-
-#: timezone/zic.c:751 timezone/zic.c:753
-msgid "same rule name in multiple files"
-msgstr "sama säännön nimi useassa tiedostossa"
-
-#: timezone/zic.c:794
-msgid "unruly zone"
-msgstr "vallaton vyöhyke"
+msgid "Unknown option: %s %s %s"
+msgstr "Tuntematon valitsin: %s %s %s"
-#: timezone/zic.c:801
+#: nscd/nscd_conf.c:287
#, c-format
-msgid "%s in ruleless zone"
-msgstr "%s säännöttömässä vyöhykkeessä"
+msgid "cannot get current working directory: %s; disabling paranoia mode"
+msgstr ""
-#: timezone/zic.c:822
-msgid "standard input"
-msgstr "vakiosyöte"
+#: nscd/nscd_conf.c:307
+#, c-format
+msgid "maximum file size for %s database too small"
+msgstr ""
-#: timezone/zic.c:827
+#: nscd/nscd_stat.c:141
#, c-format
-msgid "%s: Can't open %s: %s\n"
-msgstr "%s: Tiedostoa %s ei voi avata: %s\n"
+msgid "cannot write statistics: %s"
+msgstr "tilastoa ei voi kirjoittaa: %s"
-#: timezone/zic.c:838
-msgid "line too long"
-msgstr "liian pitkä rivi"
+#: nscd/nscd_stat.c:156
+msgid "yes"
+msgstr "kyllä"
-#: timezone/zic.c:858
-msgid "input line of unknown type"
-msgstr "syöterivi tuntematonta tyyppiä"
+#: nscd/nscd_stat.c:157
+msgid "no"
+msgstr "ei"
-#: timezone/zic.c:874
+#: nscd/nscd_stat.c:168
#, c-format
-msgid "%s: Leap line in non leap seconds file %s\n"
-msgstr "%s: Leap-rivi tiedostossa %s, joka ei ole karkaussekuntitiedosto\n"
+msgid "Only root or %s is allowed to use this option!"
+msgstr "Vain root ja %s voivat käyttää tätä valitsinta!"
-#: timezone/zic.c:881 timezone/zic.c:1295 timezone/zic.c:1320
+#: nscd/nscd_stat.c:179
#, c-format
-msgid "%s: panic: Invalid l_value %d\n"
-msgstr "%s: paniikki: Virheellinen \"l_value\" %d\n"
+msgid "nscd not running!\n"
+msgstr "nscd ei ole käynnissä!\n"
-#: timezone/zic.c:889
+#: nscd/nscd_stat.c:203
#, c-format
-msgid "%s: Error reading %s\n"
-msgstr "%s: Virhe luettaessa %s\n"
+msgid "cannot read statistics data"
+msgstr "tilastodataa ei voi lukea"
-#: timezone/zic.c:896
+#: nscd/nscd_stat.c:206
#, c-format
-msgid "%s: Error closing %s: %s\n"
-msgstr "%s: Virhe suljettaessa %s: %s\n"
-
-#: timezone/zic.c:901
-msgid "expected continuation line not found"
-msgstr "odotettua jatkoriviä ei löytynyt"
-
-#: timezone/zic.c:957
-msgid "wrong number of fields on Rule line"
-msgstr "väärä määrä kenttiä Rule-rivillä"
-
-#: timezone/zic.c:961
-msgid "nameless rule"
-msgstr "nimetön sääntö"
-
-#: timezone/zic.c:966
-msgid "invalid saved time"
-msgstr "virheellinen tallennettu aika"
-
-#: timezone/zic.c:985
-msgid "wrong number of fields on Zone line"
-msgstr "väärä määrä kenttiä Zone-rivillä"
+msgid ""
+"nscd configuration:\n"
+"\n"
+"%15d server debug level\n"
+msgstr ""
+"nscd-asetukset:\n"
+"\n"
+"%15d palvelimen debug-taso\n"
-#: timezone/zic.c:991
+#: nscd/nscd_stat.c:230
#, c-format
-msgid "\"Zone %s\" line and -l option are mutually exclusive"
-msgstr "\"Zone %s\"-rivi ja -l -valitsin ovat toisensa poissulkevia"
+msgid "%3ud %2uh %2um %2lus server runtime\n"
+msgstr ""
-#: timezone/zic.c:999
+#: nscd/nscd_stat.c:233
#, c-format
-msgid "\"Zone %s\" line and -p option are mutually exclusive"
-msgstr "\"Zone %s\"-rivi ja -p -valitsin ovat toisensa poissulkevia"
+msgid " %2uh %2um %2lus server runtime\n"
+msgstr ""
-#: timezone/zic.c:1011
+#: nscd/nscd_stat.c:235
#, c-format
-msgid "duplicate zone name %s (file \"%s\", line %d)"
-msgstr "kaksinkertainen vyöhykenimi %s (tiedosto \"%s\", rivi %d)"
-
-#: timezone/zic.c:1027
-msgid "wrong number of fields on Zone continuation line"
-msgstr "väärä määrä kenttiä Zone-jatkorivillä"
-
-#: timezone/zic.c:1067
-msgid "invalid UTC offset"
-msgstr "virheellinen UTC-siirtymä"
-
-#: timezone/zic.c:1070
-msgid "invalid abbreviation format"
-msgstr "virheellinen lyhennemuoto"
-
-#: timezone/zic.c:1096
-msgid "Zone continuation line end time is not after end time of previous line"
-msgstr "Vyöhykkeen jatkorivin loppuaika ei ole edellisen rivin loppuaikaa myöhäisempi"
-
-#: timezone/zic.c:1123
-msgid "wrong number of fields on Leap line"
-msgstr "väärä määrä kenttiä Leap-rivillä"
-
-#: timezone/zic.c:1132
-msgid "invalid leaping year"
-msgstr "virheellinen karkausvuosi"
-
-#: timezone/zic.c:1147 timezone/zic.c:1250
-msgid "invalid month name"
-msgstr "virheellinen kuukauden nimi"
-
-#: timezone/zic.c:1160 timezone/zic.c:1372 timezone/zic.c:1386
-msgid "invalid day of month"
-msgstr "virheellinen kuukauden päivä"
-
-#: timezone/zic.c:1165
-msgid "time before zero"
-msgstr "aika ennen nollaa"
-
-#: timezone/zic.c:1173 timezone/zic.c:2049 timezone/zic.c:2068
-msgid "time overflow"
-msgstr "ajan ylivuoto"
+msgid " %2um %2lus server runtime\n"
+msgstr ""
-#: timezone/zic.c:1176 timezone/zic.c:1279
-msgid "invalid time of day"
-msgstr "virheellinen kellonaika"
+#: nscd/nscd_stat.c:237
+#, c-format
+msgid " %2lus server runtime\n"
+msgstr ""
-#: timezone/zic.c:1195
-msgid "illegal CORRECTION field on Leap line"
-msgstr "virheellinen CORRECTION-kenttä Leap-rivillä"
+#: nscd/nscd_stat.c:239
+#, fuzzy, c-format
+msgid ""
+"%15d current number of threads\n"
+"%15d maximum number of threads\n"
+"%15lu number of times clients had to wait\n"
+"%15s paranoia mode enabled\n"
+"%15lu restart internal\n"
+msgstr ""
+"%15d säikeiden nykyinen määrä\n"
+"%15d säikeiden enimmäismäärä\n"
+"%15lu number of times clients had to wait\n"
+"%15s paranoiatila käytössä\n"
+"%15lu restart internal\n"
+
+#: nscd/nscd_stat.c:273
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s cache:\n"
+"\n"
+"%15s cache is enabled\n"
+"%15s cache is persistent\n"
+"%15s cache is shared\n"
+"%15zu suggested size\n"
+"%15zu total data pool size\n"
+"%15zu used data pool size\n"
+"%15lu seconds time to live for positive entries\n"
+"%15lu seconds time to live for negative entries\n"
+"%15<PRIuMAX> cache hits on positive entries\n"
+"%15<PRIuMAX> cache hits on negative entries\n"
+"%15<PRIuMAX> cache misses on positive entries\n"
+"%15<PRIuMAX> cache misses on negative entries\n"
+"%15lu%% cache hit rate\n"
+"%15zu current number of cached values\n"
+"%15zu maximum number of cached values\n"
+"%15zu maximum chain length searched\n"
+"%15<PRIuMAX> number of delays on rdlock\n"
+"%15<PRIuMAX> number of delays on wrlock\n"
+"%15<PRIuMAX> memory allocations failed\n"
+"%15s check /etc/%s for changes\n"
+msgstr ""
+"\n"
+"%s-välimuisti:\n"
+"\n"
+"%15s välimuisti on käytössä\n"
+"%15Zd ehdotettu koko\n"
+"%15ld sekuntia elinaikaa positiivisille merkinnöille\n"
+"%15ld sekuntia elinaikaa negatiivisille merkinnöille\n"
+"%15ld välimuistiosumaa positiivisiin merkintöihin\n"
+"%15ld välimuistiosumaa negatiivisiin merkintöihin\n"
+"%15ld välimuistiharhayritystä positiivisiin merkintöihin\n"
+"%15ld välimuistiharhayritystä negatiivisiin merkintöihin\n"
+"%15ld%% välimuistiosuma-aste\n"
+"%15s tarkista muutokset tiedostosta /etc/%s\n"
-#: timezone/zic.c:1199
-msgid "illegal Rolling/Stationary field on Leap line"
-msgstr "virheellinen Rolling/Stationary-kenttä Leap-rivillä"
+#: nscd/pwdcache.c:443
+#, c-format
+msgid "Haven't found \"%s\" in password cache!"
+msgstr "â€%s†ei löytynyt salasanavälimuistista!"
-#: timezone/zic.c:1214
-msgid "wrong number of fields on Link line"
-msgstr "väärä määrä kenttiä Link-rivillä"
+#: nscd/pwdcache.c:445
+#, fuzzy, c-format
+msgid "Reloading \"%s\" in password cache!"
+msgstr "â€%s†ei löytynyt salasanavälimuistista!"
-#: timezone/zic.c:1218
-msgid "blank FROM field on Link line"
-msgstr "tyhjä FROM-kenttä Link-rivillä"
+#: nscd/pwdcache.c:523
+#, c-format
+msgid "Invalid numeric uid \"%s\"!"
+msgstr "Virheellinen numeerinen uid â€%sâ€!"
-#: timezone/zic.c:1222
-msgid "blank TO field on Link line"
-msgstr "tyhjä TO-kenttä Link-rivillä"
+#: nscd/selinux.c:156
+#, c-format
+msgid "Failed opening connection to the audit subsystem: %m"
+msgstr ""
-#: timezone/zic.c:1299
-msgid "invalid starting year"
-msgstr "virheellinen aloitusvuosi"
+#: nscd/selinux.c:177
+msgid "Failed to set keep-capabilities"
+msgstr ""
-#: timezone/zic.c:1303 timezone/zic.c:1328
-msgid "starting year too low to be represented"
-msgstr "aloitusvuosi liian pieni esitettäväksi"
+#: nscd/selinux.c:178 nscd/selinux.c:241
+#, c-format
+msgid "prctl(KEEPCAPS) failed"
+msgstr "prctl(KEEPCAPS) epäonnistui"
-#: timezone/zic.c:1305 timezone/zic.c:1330
-msgid "starting year too high to be represented"
-msgstr "aloitusvuosi liian suuri esitettäväksi"
+#: nscd/selinux.c:192
+msgid "Failed to initialize drop of capabilities"
+msgstr ""
-#: timezone/zic.c:1324
-msgid "invalid ending year"
-msgstr "virheellinen päättymisvuosi"
+#: nscd/selinux.c:193
+#, fuzzy, c-format
+msgid "cap_init failed"
+msgstr "tiedoston tilan luku epäonnistui"
-#: timezone/zic.c:1333
-msgid "starting year greater than ending year"
-msgstr "aloitusvuosi suurempi kuin lopetusvuosi"
-
-#: timezone/zic.c:1340
-msgid "typed single year"
-msgstr "yksittäinen vuosi annettu"
+#: nscd/selinux.c:214 nscd/selinux.c:231
+msgid "Failed to drop capabilities"
+msgstr ""
-#: timezone/zic.c:1377
-msgid "invalid weekday name"
-msgstr "virheellinen viikonpäivän nimi"
+#: nscd/selinux.c:215 nscd/selinux.c:232
+#, fuzzy, c-format
+msgid "cap_set_proc failed"
+msgstr "setgroups epäonnistui"
-#: timezone/zic.c:1492
-#, c-format
-msgid "%s: Can't remove %s: %s\n"
-msgstr "%s: Tiedostoa %s ei voi poistaa: %s\n"
+#: nscd/selinux.c:240
+msgid "Failed to unset keep-capabilities"
+msgstr ""
-#: timezone/zic.c:1502
-#, c-format
-msgid "%s: Can't create %s: %s\n"
-msgstr "%s: Tiedostoa %s ei voi luoda: %s\n"
+#: nscd/selinux.c:256
+msgid "Failed to determine if kernel supports SELinux"
+msgstr ""
-#: timezone/zic.c:1568
+#: nscd/selinux.c:271
#, c-format
-msgid "%s: Error writing %s\n"
-msgstr "%s: Virhe kirjoitettaessa %s\n"
-
-#: timezone/zic.c:1758
-msgid "can't determine time zone abbreviation to use just after until time"
-msgstr "ennen \"until\"-aikaa käytettävää aikavyöhykelyhennettä ei voi määrittää"
-
-#: timezone/zic.c:1801
-msgid "too many transitions?!"
-msgstr "liian monta siirtymää?!"
+msgid "Failed to start AVC thread"
+msgstr ""
-#: timezone/zic.c:1820
-msgid "internal error - addtype called with bad isdst"
-msgstr "sisäinen virhe - addtype kutsuttu väärällä isdst-arvolla"
+#: nscd/selinux.c:293
+#, fuzzy, c-format
+msgid "Failed to create AVC lock"
+msgstr "vastakutsua ei voi luoda"
-#: timezone/zic.c:1824
-msgid "internal error - addtype called with bad ttisstd"
-msgstr "sisäinen virhe - addtype kutsuttu väärällä ttisstd-arvolla"
+#: nscd/selinux.c:333
+#, fuzzy, c-format
+msgid "Failed to start AVC"
+msgstr "Liian suuri tiedosto"
-#: timezone/zic.c:1828
-msgid "internal error - addtype called with bad ttisgmt"
-msgstr "sisäinen virhe - addtype kutsuttu väärällä ttisgmt-arvolla"
+#: nscd/selinux.c:335
+msgid "Access Vector Cache (AVC) started"
+msgstr ""
-#: timezone/zic.c:1847
-msgid "too many local time types"
-msgstr "liian monta paikallisen ajan tyyppiä"
+#: nscd/selinux.c:356
+msgid "Error getting context of socket peer"
+msgstr ""
-#: timezone/zic.c:1875
-msgid "too many leap seconds"
-msgstr "liian monta karkaussekuntia"
+#: nscd/selinux.c:361
+#, fuzzy
+msgid "Error getting context of nscd"
+msgstr "virhe kutsujan tunnisteen hakemisessa: %s"
-#: timezone/zic.c:1881
-msgid "repeated leap second moment"
-msgstr "toistunut karkaussekuntihetki"
+#: nscd/selinux.c:367
+msgid "Error getting sid from context"
+msgstr ""
-#: timezone/zic.c:1933
-msgid "Wild result from command execution"
-msgstr "Villi tulos komennon suorittamisesta"
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr ""
-#: timezone/zic.c:1934
+#: nscd/selinux.c:407
#, c-format
-msgid "%s: command was '%s', result was %d\n"
-msgstr "%s: komento oli \"%s\", tulos oli %d\n"
+msgid ""
+"\n"
+"SELinux AVC Statistics:\n"
+"\n"
+"%15u entry lookups\n"
+"%15u entry hits\n"
+"%15u entry misses\n"
+"%15u entry discards\n"
+"%15u CAV lookups\n"
+"%15u CAV hits\n"
+"%15u CAV probes\n"
+"%15u CAV misses\n"
+msgstr ""
-#: timezone/zic.c:2029
-msgid "Odd number of quotation marks"
-msgstr "Pariton määrä lainausmerkkejä"
+#: nscd/servicescache.c:390
+#, fuzzy, c-format
+msgid "Haven't found \"%s\" in services cache!"
+msgstr "â€%s†ei löytynyt konenimivälimuistista!"
-#: timezone/zic.c:2115
-msgid "use of 2/29 in non leap-year"
-msgstr "helmikuun 29. päivää käytetty muussa kuin karkausvuodessa"
+#: nscd/servicescache.c:392
+#, fuzzy, c-format
+msgid "Reloading \"%s\" in services cache!"
+msgstr "â€%s†ei löytynyt konenimivälimuistista!"
-#: timezone/zic.c:2149
-msgid "no day in month matches rule"
-msgstr "mikään kuukauden päivä ei vastaa sääntöä"
+#: nss/getent.c:52
+msgid "database [key ...]"
+msgstr "tietokanta [avain ...]"
-#: timezone/zic.c:2172
-msgid "too many, or too long, time zone abbreviations"
-msgstr "liian monta tai liian pitkä aikavyöhykelyhenne"
+#: nss/getent.c:57
+msgid "Service configuration to be used"
+msgstr "Käytettävät palveluasetukset"
-#: timezone/zic.c:2213
-#, c-format
-msgid "%s: Can't create directory %s: %s\n"
-msgstr "%s: Hakemistoa %s ei voi luoda: %s\n"
+#: nss/getent.c:62
+#, fuzzy
+msgid "Get entries from administrative database."
+msgstr "getent - hae merkintöjä hallinnollisesta tietokannasta."
-#: timezone/zic.c:2235
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
-msgid "%s: %d did not sign extend correctly\n"
-msgstr "%s: %d:n etumerkki ei säilynyt laajennuksessa\n"
+msgid "Enumeration not supported on %s\n"
+msgstr "%s ei tue luettelemista\n"
-#: posix/../sysdeps/generic/wordexp.c:1801
-msgid "parameter null or not set"
-msgstr "parametri on null tai asettamatta"
+#: nss/getent.c:794
+#, fuzzy, c-format
+msgid "Unknown database name"
+msgstr "Tuntematon tietokanta: %s\n"
-#: posix/../sysdeps/posix/gai_strerror.c:31
-msgid "Address family for hostname not supported"
-msgstr "Isäntänimen osoiteperhe ei ole tuettu"
+#: nss/getent.c:820
+#, fuzzy
+msgid "Supported databases:\n"
+msgstr "Tuetut tietokannat:"
-#: posix/../sysdeps/posix/gai_strerror.c:32
-msgid "Temporary failure in name resolution"
-msgstr "Tilapäinen virhe nimenselvityksessä"
+#: nss/getent.c:886
+#, c-format
+msgid "Unknown database: %s\n"
+msgstr "Tuntematon tietokanta: %s\n"
-#: posix/../sysdeps/posix/gai_strerror.c:33
-msgid "Bad value for ai_flags"
-msgstr "Väärä arvo kentälle ai_flags"
+#: nss/makedb.c:60
+msgid "Convert key to lower case"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:34
-msgid "Non-recoverable failure in name resolution"
-msgstr "Peruuttamaton virhe nimenselvityksessä"
+#: nss/makedb.c:63
+msgid "Do not print messages while building database"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:35
-msgid "ai_family not supported"
-msgstr "ai_family ei ole tuettu"
+#: nss/makedb.c:65
+msgid "Print content of database file, one entry a line"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:36
-msgid "Memory allocation failure"
-msgstr "Muistinvarausvirhe"
+#: nss/makedb.c:70
+msgid "Create simple DB database from textual input."
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:37
-msgid "No address associated with hostname"
-msgstr "Isäntänimeen ei liity osoitetta"
+#: nss/makedb.c:73
+msgid ""
+"INPUT-FILE OUTPUT-FILE\n"
+"-o OUTPUT-FILE INPUT-FILE\n"
+"-u INPUT-FILE"
+msgstr ""
+"SYÖTETIEDOSTO TULOSTIEDOSTO\n"
+"-o TULOSTIEDOSTO SYÖTETIEDOSTO\n"
+"-u SYÖTETIEDOSTO"
-#: posix/../sysdeps/posix/gai_strerror.c:38
-msgid "Name or service not known"
-msgstr "Nimeä tai palvelua ei tunneta"
+#: nss/makedb.c:142
+#, fuzzy, c-format
+msgid "No usable database library found."
+msgstr "NIS-karttatietokanta on viallinen"
-#: posix/../sysdeps/posix/gai_strerror.c:39
-msgid "Servname not supported for ai_socktype"
-msgstr "\"Servname\" ei ole tuettu \"ai_socktype\":lle"
+#: nss/makedb.c:149
+#, fuzzy, c-format
+msgid "cannot open database file `%s': %s"
+msgstr "tiedoston â€%s†tilaa ei voi lukea: %s"
-#: posix/../sysdeps/posix/gai_strerror.c:40
-msgid "ai_socktype not supported"
-msgstr "ai_socktype ei ole tuettu"
+#: nss/makedb.c:151
+msgid "incorrectly formatted file"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:41
-msgid "System error"
-msgstr "Järjestelmävirhe"
+#: nss/makedb.c:331
+#, fuzzy
+msgid "duplicate key"
+msgstr "Kaksoiskappale:\n"
-#: posix/../sysdeps/posix/gai_strerror.c:42
-msgid "Processing request in progress"
-msgstr "Pyynnön käsittely käynnissä"
+#: nss/makedb.c:337
+#, fuzzy, c-format
+msgid "while writing database file"
+msgstr "luettaessa profilointidatatiedoston tilaa"
-#: posix/../sysdeps/posix/gai_strerror.c:43
-msgid "Request canceled"
-msgstr "Pyyntö peruutettu"
+#: nss/makedb.c:348
+#, fuzzy, c-format
+msgid "problems while reading `%s'"
+msgstr "virhe luettaessa syötettä"
-#: posix/../sysdeps/posix/gai_strerror.c:44
-msgid "Request not canceled"
-msgstr "Pyyntöä ei peruutettu"
+#: nss/makedb.c:368 nss/makedb.c:385
+#, fuzzy, c-format
+msgid "while reading database"
+msgstr "valmisteltaessa tulostetta"
-#: posix/../sysdeps/posix/gai_strerror.c:45
-msgid "All requests done"
-msgstr "Kaikki pyynnöt suoritettu"
+#: posix/getconf.c:945
+#, c-format
+msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+msgstr "Käyttö: %s [-v määrittely] muuttujanimi [polku]\n"
-#: posix/../sysdeps/posix/gai_strerror.c:46
-msgid "Interrupted by a signal"
-msgstr "Signaalin keskeyttämä"
+#: posix/getconf.c:948
+#, c-format
+msgid " %s -a [pathname]\n"
+msgstr ""
-#: posix/getconf.c:889
+#: posix/getconf.c:1023
#, c-format
-msgid "Usage: %s [-v specification] variable_name [pathname]\n"
-msgstr "Käyttö: %s [-v määrittely] muuttujanimi [polku]\n"
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
-#: posix/getconf.c:947
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
-msgstr "tuntematon määrittely \"%s\""
+msgstr "tuntematon määrittely â€%sâ€"
+
+#: posix/getconf.c:1109
+#, c-format
+msgid "Couldn't execute %s"
+msgstr ""
-#: posix/getconf.c:974 posix/getconf.c:990
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
-msgstr "määrittelemätön"
+msgstr "määrittelemätön"
-#: posix/getconf.c:1012
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
-msgstr "Tunnistamaton muuttuja \"%s\""
+msgstr "Tunnistamaton muuttuja â€%sâ€"
-#: posix/getopt.c:692 posix/getopt.c:704
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: valitsin \"%s\" on moniselitteinen\n"
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: valitsin â€%s†on moniselitteinen\n"
-#: posix/getopt.c:737 posix/getopt.c:741
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: valitsin \"--%s\" ei salli argumenttia\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: valitsin â€--%s†ei salli argumenttia\n"
-#: posix/getopt.c:750 posix/getopt.c:755
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr "%s: valitsin \"%c%s\" ei salli argumenttia\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: valitsin â€%c%s†ei salli argumenttia\n"
-#: posix/getopt.c:791 posix/getopt.c:804 posix/getopt.c:1093
-#: posix/getopt.c:1106
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: valitsin \"%s\" vaatii argumentin\n"
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: valitsin â€%s†vaatii argumentin\n"
-#: posix/getopt.c:842 posix/getopt.c:845
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: tunnistamaton valitsin \"--%s\"\n"
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: tunnistamaton valitsin â€--%sâ€\n"
-#: posix/getopt.c:853 posix/getopt.c:856
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: tunnistamaton valitsin \"%c%s\"\n"
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: tunnistamaton valitsin â€%c%sâ€\n"
-#: posix/getopt.c:903 posix/getopt.c:906
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr "%s: virheellinen valitsin -- %c\n"
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: virheellinen valitsin -- â€%câ€\n"
-#: posix/getopt.c:912 posix/getopt.c:915
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
-msgid "%s: invalid option -- %c\n"
-msgstr "%s: virheellinen valitsin -- %c\n"
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: valitsin vaatii argumentin -- â€%câ€\n"
-#: posix/getopt.c:962 posix/getopt.c:973 posix/getopt.c:1159
-#: posix/getopt.c:1172
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: valitsin vaatii argumentin -- %c\n"
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: valitsin â€-W %s†on moniselitteinen\n"
-#: posix/getopt.c:1025 posix/getopt.c:1036
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: valitsin \"-W %s\" on moniselitteinen\n"
-
-#: posix/getopt.c:1060 posix/getopt.c:1072
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr "%s: valitsin \"-W %s\" ei salli argumenttia\n"
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: valitsin â€-W %s†ei salli argumenttia\n"
#: posix/regcomp.c:136
msgid "No match"
@@ -3548,7 +4440,7 @@ msgstr "Ei vastaavuutta"
#: posix/regcomp.c:139
msgid "Invalid regular expression"
-msgstr "Virheellinen säännöllinen ilmaus"
+msgstr "Virheellinen säännöllinen ilmaus"
#: posix/regcomp.c:142
msgid "Invalid collation character"
@@ -3580,11 +4472,11 @@ msgstr "Pariton \\{"
#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
-msgstr "Virheellinen \\{\\}:n sisältö"
+msgstr "Virheellinen \\{\\}:n sisältö"
#: posix/regcomp.c:166
msgid "Invalid range end"
-msgstr "Virheellinen välin loppu"
+msgstr "Virheellinen välin loppu"
#: posix/regcomp.c:169
msgid "Memory exhausted"
@@ -3592,731 +4484,644 @@ msgstr "Muisti lopussa"
#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
-msgstr "Virheellinen edeltävä säännöllinen ilmaus"
+msgstr "Virheellinen edeltävä säännöllinen ilmaus"
#: posix/regcomp.c:175
msgid "Premature end of regular expression"
-msgstr "Ennenaikainen säännöllisen ilmauksen loppu"
+msgstr "Ennenaikainen säännöllisen ilmauksen loppu"
#: posix/regcomp.c:178
msgid "Regular expression too big"
-msgstr "Liian suuri säännöllinen ilmaus"
+msgstr "Liian suuri säännöllinen ilmaus"
#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
msgstr "Pariton ) tai \\)"
-#: posix/regcomp.c:615
+#: posix/regcomp.c:681
msgid "No previous regular expression"
-msgstr "Ei edeltävää säännöllistä lauseketta"
-
-#: argp/argp-help.c:213
-#, c-format
-msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
-msgstr "%.*s: parametri ARGP_HELP_FMT vaatii arvon"
+msgstr "Ei edeltävää säännöllistä lauseketta"
-#: argp/argp-help.c:222
-#, c-format
-msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
-msgstr "%.*s: Tuntematon ARGP_HELP_FMT-parametri"
-
-#: argp/argp-help.c:234
-#, c-format
-msgid "Garbage in ARGP_HELP_FMT: %s"
-msgstr "ARGP_HELP_FMT:ssä roskaa: %s"
-
-#: argp/argp-help.c:1189
-msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
-msgstr "Pakolliset tai valinnaiset argumentit pitkille valitsimille ovat pakollisia tai valinnaisia kaikille vastaaville lyhyille valitsimille."
-
-#: argp/argp-help.c:1572
-msgid "Usage:"
-msgstr "Käyttö:"
-
-#: argp/argp-help.c:1576
-msgid " or: "
-msgstr " tai: "
-
-#: argp/argp-help.c:1588
-msgid " [OPTION...]"
-msgstr " [VALITSIN...]"
-
-#: argp/argp-help.c:1615
-#, c-format
-msgid "Try `%s --help' or `%s --usage' for more information.\n"
-msgstr "Kokeile \"%s --help\" tai \"%s --usage\" saadaksesi lisää tietoa.\n"
-
-#: argp/argp-help.c:1643
-#, c-format
-msgid "Report bugs to %s.\n"
-msgstr "Ilmoita ohjelmistovirheistä osoitteeseen %s.\n"
-
-#: argp/argp-parse.c:100
-msgid "Give this help list"
-msgstr "Näytä tämä ohje"
-
-#: argp/argp-parse.c:101
-msgid "Give a short usage message"
-msgstr "Näytä lyhyt käyttöohje"
-
-#: argp/argp-parse.c:102
-msgid "Set the program name"
-msgstr "Aseta ohjelman nimi"
-
-#: argp/argp-parse.c:104
-msgid "Hang for SECS seconds (default 3600)"
-msgstr "Odota SECS sekuntia (oletus 3600)"
-
-#: argp/argp-parse.c:161
-msgid "Print program version"
-msgstr "Näytä ohjelman versio"
-
-#: argp/argp-parse.c:177
-msgid "(PROGRAM ERROR) No version known!?"
-msgstr "(OHJELMAVIRHE) Tuntematon versio!?"
-
-#: argp/argp-parse.c:653
-#, c-format
-msgid "%s: Too many arguments\n"
-msgstr "%s: Liian monta argumenttia\n"
-
-#: argp/argp-parse.c:794
-msgid "(PROGRAM ERROR) Option should have been recognized!?"
-msgstr "(OHJELMAVIRHE) Valitsinta ei tunnistettu!?"
+#: posix/wordexp.c:1832
+msgid "parameter null or not set"
+msgstr "parametri on null tai asettamatta"
-#: resolv/herror.c:67
+#: resolv/herror.c:68
msgid "Resolver Error 0 (no error)"
-msgstr "Selvitysvirhe 0 (ei virhettä)"
+msgstr "Selvitysvirhe 0 (ei virhettä)"
-#: resolv/herror.c:68
+#: resolv/herror.c:69
msgid "Unknown host"
-msgstr "Tuntematon isäntä"
+msgstr "Tuntematon konenimi"
-#: resolv/herror.c:69
+#: resolv/herror.c:70
msgid "Host name lookup failure"
-msgstr "Isäntänimen hakuvirhe"
+msgstr "Konenimen hakuvirhe"
-#: resolv/herror.c:70
+#: resolv/herror.c:71
msgid "Unknown server error"
msgstr "Tuntematon palvelinvirhe"
-#: resolv/herror.c:71
+#: resolv/herror.c:72
msgid "No address associated with name"
msgstr "Nimeen ei liity osoitetta"
#: resolv/herror.c:107
msgid "Resolver internal error"
-msgstr "Sisäinen selvitysvirhe"
+msgstr "Sisäinen selvitysvirhe"
#: resolv/herror.c:110
msgid "Unknown resolver error"
msgstr "Tuntematon selvitysvirhe"
-#: resolv/res_hconf.c:147
-#, c-format
-msgid "%s: line %d: expected service, found `%s'\n"
-msgstr "%s: rivi %d: odotettiin palvelua, löytyi \"%s\"\n"
-
-#: resolv/res_hconf.c:165
-#, c-format
-msgid "%s: line %d: cannot specify more than %d services"
-msgstr "%s: rivi %d: voidaan määritellä korkeintaan %d palvelua"
-
-#: resolv/res_hconf.c:191
-#, c-format
-msgid "%s: line %d: list delimiter not followed by keyword"
-msgstr "%s: rivi %d: listarajoittimen jälkeen ei ole avainsanaa"
-
-#: resolv/res_hconf.c:231
+#: resolv/res_hconf.c:124
#, c-format
msgid "%s: line %d: cannot specify more than %d trim domains"
-msgstr "%s: rivi %d: voidaan määritellä korkeintaan %d \"trim\"-toimialuetta"
+msgstr "%s: rivi %d: voidaan määritellä korkeintaan %d â€trimâ€-toimialuetta"
-#: resolv/res_hconf.c:256
+#: resolv/res_hconf.c:145
#, c-format
msgid "%s: line %d: list delimiter not followed by domain"
-msgstr "%s: rivi %d: listarajoittimen jälkeen ei ole toimialuetta"
+msgstr "%s: rivi %d: listarajoittimen jälkeen ei ole toimialuetta"
-#: resolv/res_hconf.c:319
+#: resolv/res_hconf.c:204
#, c-format
msgid "%s: line %d: expected `on' or `off', found `%s'\n"
-msgstr "%s: rivi %d: odotettiin \"on\" tai \"off\", löytyi \"%s\"\n"
+msgstr "%s: rivi %d: odotettiin â€on†tai â€offâ€, löytyi â€%sâ€\n"
-#: resolv/res_hconf.c:366
+#: resolv/res_hconf.c:247
#, c-format
msgid "%s: line %d: bad command `%s'\n"
-msgstr "%s: rivi %d: virheellinen komento \"%s\"\n"
+msgstr "%s: rivi %d: virheellinen komento â€%sâ€\n"
-#: resolv/res_hconf.c:395
+#: resolv/res_hconf.c:282
#, c-format
msgid "%s: line %d: ignoring trailing garbage `%s'\n"
-msgstr "%s: rivi %d: ei huomioida loppuroskaa \"%s\"\n"
-
-#: nss/getent.c:51
-msgid "database [key ...]"
-msgstr "tietokanta [avain ...]"
-
-#: nss/getent.c:56
-msgid "Service configuration to be used"
-msgstr "Käytettävät palveluasetukset"
+msgstr "%s: rivi %d: ei huomioida loppuroskaa â€%sâ€\n"
-#: nss/getent.c:136 nss/getent.c:308
+#: stdio-common/psignal.c:51
#, c-format
-msgid "Enumeration not supported on %s\n"
-msgstr "%s ei tue luettelemista\n"
-
-#: nss/getent.c:732
-msgid "getent - get entries from administrative database."
-msgstr "getent - hae merkintöjä hallinnollisesta tietokannasta."
-
-#: nss/getent.c:733
-msgid "Supported databases:"
-msgstr "Tuetut tietokannat:"
-
-#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
-msgid "wrong number of arguments"
-msgstr "väärä määrä argumentteja"
-
-#: nss/getent.c:800
-#, c-format
-msgid "Unknown database: %s\n"
-msgstr "Tuntematon tietokanta: %s\n"
-
-#: debug/pcprofiledump.c:52
-msgid "Don't buffer output"
-msgstr "Älä puskuroi tulostetta"
-
-#: debug/pcprofiledump.c:57
-msgid "Dump information generated by PC profiling."
-msgstr "Vedosta PC-profiloinnin luomat tiedot."
-
-#: debug/pcprofiledump.c:60
-msgid "[FILE]"
-msgstr "[TIEDOSTO]"
-
-#: debug/pcprofiledump.c:100
-msgid "cannot open input file"
-msgstr "syötetiedostoa ei voi avata"
-
-#: debug/pcprofiledump.c:106
-msgid "cannot read header"
-msgstr "otsaketta ei voi lukea"
-
-#: debug/pcprofiledump.c:170
-msgid "invalid pointer size"
-msgstr "virheellinen osoittimen koko"
-
-#: inet/rcmd.c:163 inet/rcmd.c:166
-msgid "rcmd: Cannot allocate memory\n"
-msgstr "rcmd: Muistin varaaminen ei onnistu\n"
-
-#: inet/rcmd.c:185 inet/rcmd.c:188
-msgid "rcmd: socket: All ports in use\n"
-msgstr "rcmd: socket: Kaikki portit käytössä\n"
+msgid "%s%sUnknown signal %d\n"
+msgstr "%s%sTuntematon signaali %d\n"
-#: inet/rcmd.c:222
-#, c-format
-msgid "connect to address %s: "
-msgstr "yhdistä osoitteeseen %s: "
+#: stdio-common/psignal.c:52
+msgid "Unknown signal"
+msgstr "Tuntematon signaali"
-#: inet/rcmd.c:240
-#, c-format
-msgid "Trying %s...\n"
-msgstr "Yritetään %s...\n"
+#: string/_strerror.c:45 sysdeps/mach/_strerror.c:87
+msgid "Unknown error "
+msgstr "Tuntematon virhe "
-#: inet/rcmd.c:289
-#, c-format
-msgid "rcmd: write (setting up stderr): %m\n"
-msgstr "rcmd: write (alustetaan vakiovirhetuloste): %m\n"
+#: string/strerror.c:43
+msgid "Unknown error"
+msgstr "Tuntematon virhe"
-#: inet/rcmd.c:310
+#: string/strsignal.c:65
#, c-format
-msgid "rcmd: poll (setting up stderr): %m\n"
-msgstr "rcmd: poll (alustetaan vakiovirhetuloste): %m\n"
-
-#: inet/rcmd.c:313
-msgid "poll: protocol failure in circuit setup\n"
-msgstr "poll: protokollavirhe piiriasetuksissa\n"
-
-#: inet/rcmd.c:358
-msgid "socket: protocol failure in circuit setup\n"
-msgstr "socket: protokollavirhe piiriasetuksissa\n"
+msgid "Real-time signal %d"
+msgstr "Reaaliaikasignaali %d"
-#: inet/rcmd.c:387
+#: string/strsignal.c:69
#, c-format
-msgid "rcmd: %s: short read"
-msgstr "rcmd: %s: vajaa luku"
-
-#: inet/rcmd.c:549
-msgid "lstat failed"
-msgstr "tiedoston tilan luku epäonnistui"
-
-#: inet/rcmd.c:551
-msgid "not regular file"
-msgstr "ei ole tavallinen tiedosto"
-
-#: inet/rcmd.c:556
-msgid "cannot open"
-msgstr "ei voi avata"
-
-#: inet/rcmd.c:558
-msgid "fstat failed"
-msgstr "tiedoston tilan luku epäonnistui"
-
-#: inet/rcmd.c:560
-msgid "bad owner"
-msgstr "virheellinen omistaja"
-
-#: inet/rcmd.c:562
-msgid "writeable by other than owner"
-msgstr "kirjoitusoikeus muulla kuin omistajalla"
-
-#: inet/rcmd.c:564
-msgid "hard linked somewhere"
-msgstr "kovalinkitetty johonkin"
-
-#: inet/ruserpass.c:170 inet/ruserpass.c:193
-msgid "out of memory"
-msgstr "muisti lopussa"
+msgid "Unknown signal %d"
+msgstr "Tuntematon signaali %d"
-#: inet/ruserpass.c:184
-msgid "Error: .netrc file is readable by others."
-msgstr "Virhe: .netrc-tiedosto on muiden luettavissa."
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "muisti lopussa\n"
-#: inet/ruserpass.c:185
-msgid "Remove password or make file unreadable by others."
-msgstr "Poista salasana tai estä muilta tiedoston luku."
+#: sunrpc/auth_unix.c:350
+msgid "auth_unix.c: Fatal marshalling problem"
+msgstr "auth_none.c: Vakava serialisointiongelma"
-#: inet/ruserpass.c:277
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "Unknown .netrc keyword %s"
-msgstr "Tuntematon .netrc-avainsana %s"
-
-#: sunrpc/auth_unix.c:115 sunrpc/auth_unix.c:118
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create: muisti lopussa\n"
-
-#: sunrpc/auth_unix.c:318
-msgid "auth_none.c - Fatal marshalling problem"
-msgstr "auth_none.c - Vakava serialisointiongelma"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s: %s; alaversio = %lu, yläversio = %lu"
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:112
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; alaversio = %lu, yläversio = %lu"
+msgid "%s: %s; why = %s\n"
+msgstr "%s: %s; syy = %s\n"
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr "; syy = "
-
-#: sunrpc/clnt_perr.c:132
+#: sunrpc/clnt_perr.c:114
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(tuntematon todennusvirhe - %d)"
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s: %s; syy = (tuntematon todennusvirhe - %d)\n"
-#: sunrpc/clnt_perr.c:177
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
msgstr "RPC: Onnistui"
-#: sunrpc/clnt_perr.c:180
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
msgstr "RPC: Argumentteja ei voi koodata"
-#: sunrpc/clnt_perr.c:184
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
-msgstr "RPC: Tulosta ei voi selvittää"
+msgstr "RPC: Tulosta ei voi selvittää"
-#: sunrpc/clnt_perr.c:188
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
-msgstr "RPC: Lähetys ei onnistu"
+msgstr "RPC: Lähetys ei onnistu"
-#: sunrpc/clnt_perr.c:192
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
msgstr "RPC: Vastaanotto ei onnistu"
-#: sunrpc/clnt_perr.c:196
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
msgstr "RPC: Aikakatkaistu"
-#: sunrpc/clnt_perr.c:200
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
-msgstr "RPC: Epäyhteensopivat RPC:n versiot"
+msgstr "RPC: Epäyhteensopivat RPC:n versiot"
-#: sunrpc/clnt_perr.c:204
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
msgstr "RPC: Todennusvirhe"
-#: sunrpc/clnt_perr.c:208
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
-msgstr "RPC: Ohjelma ei ole käytettävissä"
+msgstr "RPC: Ohjelma ei ole käytettävissä"
-#: sunrpc/clnt_perr.c:212
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
-msgstr "RPC: Ohjelma/versio ei täsmää"
+msgstr "RPC: Ohjelma/versio ei täsmää"
-#: sunrpc/clnt_perr.c:216
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
-msgstr "RPC: Proseduuri ei ole käytettävissä"
+msgstr "RPC: Proseduuri ei ole käytettävissä"
-#: sunrpc/clnt_perr.c:220
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
-msgstr "RPC: Palvelin ei voi selvittää argumentteja"
+msgstr "RPC: Palvelin ei voi selvittää argumentteja"
-#: sunrpc/clnt_perr.c:224
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
-msgstr "RPC: Etäjärjestelmän virhe"
+msgstr "RPC: Etäjärjestelmän virhe"
-#: sunrpc/clnt_perr.c:228
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
-msgstr "RPC: Tuntematon isäntä"
+msgstr "RPC: Tuntematon konenimi"
-#: sunrpc/clnt_perr.c:232
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
msgstr "RPC: Tuntematon protokolla"
-#: sunrpc/clnt_perr.c:236
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
msgstr "RPC: Porttikartoittajan virhe"
-#: sunrpc/clnt_perr.c:240
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
-msgstr "RPC: Ohjelma ei ole rekisteröity"
+msgstr "RPC: Ohjelma ei ole rekisteröity"
-#: sunrpc/clnt_perr.c:244
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
-msgstr "RPC: Epäonnistui (määrittelemätön virhe)"
+msgstr "RPC: Epäonnistui (määrittelemätön virhe)"
-#: sunrpc/clnt_perr.c:285
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
msgstr "RPC: (tuntematon virhekoodi)"
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
msgstr "Todennus OK"
-#: sunrpc/clnt_perr.c:360
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
msgstr "Virheellinen asiakkaan valtuustieto"
-#: sunrpc/clnt_perr.c:364
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
msgstr "Palvelin torjui valtuustiedon"
-#: sunrpc/clnt_perr.c:368
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
msgstr "Virheellinen asiakkaan varmistaja"
-#: sunrpc/clnt_perr.c:372
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
-msgstr "Palvelin hylkäsi todennuksen"
+msgstr "Palvelin hylkäsi todennuksen"
-#: sunrpc/clnt_perr.c:376
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
msgstr "Asiakkaan valtuustieto on liian heikko"
-#: sunrpc/clnt_perr.c:380
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
msgstr "Virheellinen palvelintodennus"
-#: sunrpc/clnt_perr.c:384
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
-msgstr "Epäonnistui (määrittelemätön virhe)"
+msgstr "Epäonnistui (määrittelemätön virhe)"
#: sunrpc/clnt_raw.c:117
-msgid "clnt_raw.c - Fatal header serialization error."
+#, fuzzy
+msgid "clnt_raw.c: fatal header serialization error"
msgstr "clnt_raw.c - Vakava otsikon serialisointivirhe."
-#: sunrpc/clnt_tcp.c:134 sunrpc/clnt_tcp.c:137
-msgid "clnttcp_create: out of memory\n"
-msgstr "clnttcp_create: muisti lopussa\n"
-
-#: sunrpc/clnt_udp.c:141 sunrpc/clnt_udp.c:144
-msgid "clntudp_create: out of memory\n"
-msgstr "clntudp_create: muisti lopussa\n"
+#: sunrpc/pm_getmaps.c:83
+msgid "pmap_getmaps.c: rpc problem"
+msgstr "pmap_getmaps.c: rpc-ongelma"
-#: sunrpc/clnt_unix.c:131 sunrpc/clnt_unix.c:134
-msgid "clntunix_create: out of memory\n"
-msgstr "clntunix_create: muisti lopussa\n"
-
-#: sunrpc/get_myaddr.c:78
-msgid "get_myaddress: ioctl (get interface configuration)"
-msgstr "get_myaddress: ioctl (hae rajapinnan säädöt)"
-
-#: sunrpc/pm_getmaps.c:74
-msgid "pmap_getmaps rpc problem"
-msgstr "pmap_getmaps-rpc-ongelma"
-
-#: sunrpc/pmap_clnt.c:72
-msgid "__get_myaddress: ioctl (get interface configuration)"
-msgstr "__get_myaddress: ioctl (hae rajapinnan säädöt)"
-
-#: sunrpc/pmap_clnt.c:137
+#: sunrpc/pmap_clnt.c:129
msgid "Cannot register service"
-msgstr "Palvelua ei voi rekisteröidä"
+msgstr "Palvelua ei voi rekisteröidä"
-#: sunrpc/pmap_rmt.c:190
-msgid "broadcast: ioctl (get interface configuration)"
-msgstr "broadcast: ioctl (hae rajapinnan säädöt)"
-
-#: sunrpc/pmap_rmt.c:199
-msgid "broadcast: ioctl (get interface flags)"
-msgstr "broadcast: ioctl (hae rajapinnan liput)"
-
-#: sunrpc/pmap_rmt.c:269
+#: sunrpc/pmap_rmt.c:248
msgid "Cannot create socket for broadcast rpc"
-msgstr "Yleislähetys-rpc:lle ei voi luoda pistoketta"
+msgstr "Yleislähetys-rpc:lle ei voi luoda pistoketta"
-#: sunrpc/pmap_rmt.c:276
+#: sunrpc/pmap_rmt.c:255
msgid "Cannot set socket option SO_BROADCAST"
msgstr "Pistokevalitsinta SO_BROADCAST ei voi asettaa"
-#: sunrpc/pmap_rmt.c:328
+#: sunrpc/pmap_rmt.c:307
msgid "Cannot send broadcast packet"
-msgstr "Yleislähetyspakettia ei voi lähettää"
+msgstr "Yleislähetyspakettia ei voi lähettää"
-#: sunrpc/pmap_rmt.c:353
+#: sunrpc/pmap_rmt.c:332
msgid "Broadcast poll problem"
-msgstr "Yleislähetyskiertokyselyongelma"
+msgstr "Yleislähetyskiertokyselyongelma"
-#: sunrpc/pmap_rmt.c:366
+#: sunrpc/pmap_rmt.c:345
msgid "Cannot receive reply to broadcast"
-msgstr "Vastausta yleislähetykseen ei pystytä vastaanottamaan"
+msgstr "Vastausta yleislähetykseen ei pystytä vastaanottamaan"
-#: sunrpc/rpc_main.c:288
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr "%s: tuloste ylikirjoittaisi tiedoston %s\n"
-#: sunrpc/rpc_main.c:295
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr "%s: tiedostoa %s ei voi avata: %m\n"
-#: sunrpc/rpc_main.c:307
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
msgstr "%s: kirjoitettaessa tulostetta %s: %m"
-#: sunrpc/rpc_main.c:342
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
-msgstr "C-esikääntäjää ei löydy: %s \n"
+msgstr "C-esikääntäjää ei löydy: %s \n"
-#: sunrpc/rpc_main.c:350
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
-msgstr "mitään C-esikääntäjää (cpp) ei löydy\n"
+msgstr "mitään C-esikääntäjää (cpp) ei löydy\n"
-#: sunrpc/rpc_main.c:419
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
-msgstr "%s: C-esikääntäjä epäonnistui signaalilla %d\n"
+msgstr "%s: C-esikääntäjä epäonnistui signaalilla %d\n"
-#: sunrpc/rpc_main.c:422
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
-msgstr "%s: C-esikääntäjä epäonnistui paluuarvolla %d\n"
+msgstr "%s: C-esikääntäjä epäonnistui paluuarvolla %d\n"
-#: sunrpc/rpc_main.c:462
-#, c-format
-msgid "illegal nettype :`%s'\n"
-msgstr "virheellinen verkkotyyppi :\"%s\"\n"
+#: sunrpc/rpc_main.c:464
+#, fuzzy, c-format
+msgid "illegal nettype: `%s'\n"
+msgstr "virheellinen verkkotyyppi :â€%sâ€\n"
-#: sunrpc/rpc_main.c:1104
+#: sunrpc/rpc_main.c:1130
+#, c-format
msgid "rpcgen: too many defines\n"
-msgstr "rpcgen: liian monta määrittelyä\n"
+msgstr "rpcgen: liian monta määrittelyä\n"
-#: sunrpc/rpc_main.c:1116
+#: sunrpc/rpc_main.c:1142
+#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr "rpcgen: argumenttillistan koodausvirhe\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1149
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
-msgstr "tiedosto \"%s\" on olemassa ja saatetaan ylikirjoittaa\n"
+msgstr "tiedosto â€%s†on olemassa ja saatetaan ylikirjoittaa\n"
-#: sunrpc/rpc_main.c:1194
+#: sunrpc/rpc_main.c:1220
+#, c-format
msgid "Cannot specify more than one input file!\n"
-msgstr "Voidaan antaa vain yksi syötetiedosto!\n"
+msgstr "Voidaan antaa vain yksi syötetiedosto!\n"
-#: sunrpc/rpc_main.c:1364
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
-msgstr "Tämä toteutus ei tue uudentyyppistä MT-turvallista koodia!\n"
+msgstr "Tämä toteutus ei tue uudentyyppistä MT-turvallista koodia!\n"
-#: sunrpc/rpc_main.c:1373
+#: sunrpc/rpc_main.c:1403
+#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
-msgstr "Netid-lippua ei voi käyttää inetd-lipun kanssa!\n"
+msgstr "Netid-lippua ei voi käyttää inetd-lipun kanssa!\n"
-#: sunrpc/rpc_main.c:1385
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
-msgstr "Lippua netid ei voi käyttää ilman TIRPC:tä!\n"
+msgstr "Lippua netid ei voi käyttää ilman TIRPC:tä!\n"
-#: sunrpc/rpc_main.c:1392
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
-msgstr "Table-lippuja ei voi käyttää \"newstyle\":n kanssa!\n"
+msgstr "Table-lippuja ei voi käyttää â€newstyleâ€:n kanssa!\n"
-#: sunrpc/rpc_main.c:1411
+#: sunrpc/rpc_main.c:1441
+#, c-format
msgid "\"infile\" is required for template generation flags.\n"
-msgstr "\"syötetiedosto\" vaaditaan mallin luontilippuja varten.\n"
+msgstr "â€syötetiedosto†vaaditaan mallin luontilippuja varten.\n"
-#: sunrpc/rpc_main.c:1416
+#: sunrpc/rpc_main.c:1446
+#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr "Tiedostonluontilippuja voi olla vain yksi!\n"
-#: sunrpc/rpc_main.c:1425
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
-msgstr "käyttö: %s syötetiedosto\n"
+msgstr "käyttö: %s syötetiedosto\n"
-#: sunrpc/rpc_main.c:1426
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
-msgstr "\t%s [-abkCLNTM][-Dnimi[=arvo]] [-i koko] [-I [-K sekuntit]] [-Y polku] syötetiedosto\n"
+msgstr "\t%s [-abkCLNTM][-Dnimi[=arvo]] [-i koko] [-I [-K sekuntit]] [-Y polku] syötetiedosto\n"
-#: sunrpc/rpc_main.c:1428
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
-msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o tulostiedosto] [syötetiedosto]\n"
+msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o tulostiedosto] [syötetiedosto]\n"
-#: sunrpc/rpc_main.c:1430
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
-msgstr "\t%s [-s verkkotyyppi]* [-o tulostiedosto] [syötetiedosto]\n"
+msgstr "\t%s [-s verkkotyyppi]* [-o tulostiedosto] [syötetiedosto]\n"
-#: sunrpc/rpc_main.c:1431
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
-msgstr "\t%s [-n verkkoid]* [-o tulostiedosto] [syötetiedosto]\n"
+msgstr "\t%s [-n verkkoid]* [-o tulostiedosto] [syötetiedosto]\n"
+
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1485
+#, fuzzy, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr "tulostiedostoa ei voi luoda"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr ""
-#: sunrpc/rpc_scan.c:116
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1492
+#, fuzzy, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr "mitään C-esikääntäjää (cpp) ei löydy\n"
+
+#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
msgstr "vakio tai tunniste odotettu"
-#: sunrpc/rpc_scan.c:312
+#: sunrpc/rpc_scan.c:310
msgid "illegal character in file: "
msgstr "virheellinen merkki tiedostossa: "
-#: sunrpc/rpc_scan.c:351 sunrpc/rpc_scan.c:377
+#: sunrpc/rpc_scan.c:349 sunrpc/rpc_scan.c:375
msgid "unterminated string constant"
-msgstr "päättämätön merkkijonovakio"
+msgstr "päättämätön merkkijonovakio"
-#: sunrpc/rpc_scan.c:383
+#: sunrpc/rpc_scan.c:381
msgid "empty char string"
-msgstr "tyhjä char-merkkijono"
+msgstr "tyhjä char-merkkijono"
-#: sunrpc/rpc_scan.c:525 sunrpc/rpc_scan.c:535
+#: sunrpc/rpc_scan.c:523 sunrpc/rpc_scan.c:533
msgid "preprocessor error"
-msgstr "esikääntäjävirhe"
+msgstr "esikääntäjävirhe"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
-msgstr "ohjelma %lu ei ole käytettävissä\n"
+msgstr "ohjelma %lu ei ole käytettävissä\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
-msgstr "ohjelman %lu versio %lu ei ole käytettävissä\n"
+msgstr "ohjelman %lu versio %lu ei ole käytettävissä\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr "ohjelman %lu versio %lu valmis ja odottaa\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
-msgstr "rpcinfo: porttikartoittajaan ei saada yhteyttä"
+msgstr "rpcinfo: porttikartoittajaan ei saada yhteyttä"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
-msgstr "Etäohjelmia ei ole rekisteröity.\n"
+msgstr "Etäohjelmia ei ole rekisteröity.\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
msgstr " ohjelmaversio proto portti\n"
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
msgstr "(tuntematon)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
-msgstr "rpcinfo: yleislähetys epäonnistui: %s\n"
+msgstr "rpcinfo: yleislähetys epäonnistui: %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
msgstr "Valitettavasti et ole root\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
-msgstr "rpcinfo: Ohjelman %s version %s rekisteröintiä ei voi poistaa\n"
+msgstr "rpcinfo: Ohjelman %s version %s rekisteröintiä ei voi poistaa\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
-msgstr "Käyttö: rpcinfo [ -n portin_numero ] -u isäntä ohjelman_numero [ versionumero ]\n"
+msgstr "Käyttö: rpcinfo [ -n portin_numero ] -u konenimi ohjelman_numero [ versionumero ]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
-msgstr " rpcinfo [ -n porttinumero ] -t isäntä ohjelmanumero [ versionumero ]\n"
+msgstr " rpcinfo [ -n porttinumero ] -t konenimi ohjelmanumero [ versionumero ]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
-msgstr " rpcinfo -p [ isäntä ]\n"
+msgstr " rpcinfo -p [ konenimi ]\n"
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
msgstr " rpcinfo -b ohjelmanumero versionumero\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
msgstr " rpcinfo -d ohjelmanumero versionumero\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr "rpcinfo: %s on tuntematon palvelu\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
-msgstr "rpcinfo: %s on tuntematon isäntä\n"
+msgstr "rpcinfo: %s on tuntematon konenimi\n"
-#: sunrpc/svc_run.c:76
+#: sunrpc/svc_run.c:70
+msgid "svc_run: - out of memory"
+msgstr "svc_run: - muisti lopussa"
+
+#: sunrpc/svc_run.c:90
msgid "svc_run: - poll failed"
-msgstr "svc_run: - kiertokysely epäonnistui"
+msgstr "svc_run: - kiertokysely epäonnistui"
#: sunrpc/svc_simple.c:87
#, c-format
msgid "can't reassign procedure number %ld\n"
-msgstr "proseduurinumeroa %ld ei voi käyttää uudelleen\n"
+msgstr "proseduurinumeroa %ld ei voi käyttää uudelleen\n"
-#: sunrpc/svc_simple.c:96
+#: sunrpc/svc_simple.c:97
msgid "couldn't create an rpc server\n"
msgstr "rpc-palvelinta ei voitu luoda\n"
-#: sunrpc/svc_simple.c:104
+#: sunrpc/svc_simple.c:105
#, c-format
msgid "couldn't register prog %ld vers %ld\n"
-msgstr "ohjelmaa %ld versio %ld ei voitu rekisteröidä\n"
+msgstr "ohjelmaa %ld versio %ld ei voitu rekisteröidä\n"
-#: sunrpc/svc_simple.c:111
+#: sunrpc/svc_simple.c:113
msgid "registerrpc: out of memory\n"
msgstr "registerrpc: muisti lopussa\n"
-#: sunrpc/svc_simple.c:175
+#: sunrpc/svc_simple.c:173
#, c-format
msgid "trouble replying to prog %d\n"
msgstr "ongelma ohjelmalle %d vastaamisessa\n"
-#: sunrpc/svc_simple.c:183
+#: sunrpc/svc_simple.c:182
#, c-format
msgid "never registered prog %d\n"
-msgstr "ohjelmaa %d ei koskaan rekisteröity\n"
+msgstr "ohjelmaa %d ei koskaan rekisteröity\n"
#: sunrpc/svc_tcp.c:155
msgid "svc_tcp.c - tcp socket creation problem"
@@ -4324,15 +5129,7 @@ msgstr "svc_tcp.c - ongelma tcp-pistokkeen luomisessa"
#: sunrpc/svc_tcp.c:170
msgid "svc_tcp.c - cannot getsockname or listen"
-msgstr "svc_tcp.c - \"getsockname\" ja \"listen\" eivät ole mahdollisia"
-
-#: sunrpc/svc_tcp.c:181 sunrpc/svc_tcp.c:184
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create: muisti lopussa\n"
-
-#: sunrpc/svc_tcp.c:225 sunrpc/svc_tcp.c:228
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp: makefd_xprt: muisti lopussa\n"
+msgstr "svc_tcp.c - â€getsockname†ja â€listen†eivät ole mahdollisia"
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
@@ -4340,43 +5137,39 @@ msgstr "svcudp_create: ongelma pistokkeen luomisessa"
#: sunrpc/svc_udp.c:142
msgid "svcudp_create - cannot getsockname"
-msgstr "svcudp_create - \"getsockname\" ei ole mahdollinen"
-
-#: sunrpc/svc_udp.c:154 sunrpc/svc_udp.c:157
-msgid "svcudp_create: out of memory\n"
-msgstr "svcupd_create: muisti lopussa\n"
+msgstr "svcudp_create - â€getsockname†ei ole mahdollinen"
-#: sunrpc/svc_udp.c:182 sunrpc/svc_udp.c:185
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
msgstr "svcudp_create: xp_pad on liian pieni IP_PKTINFO:lle\n"
-#: sunrpc/svc_udp.c:471
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
-msgstr "enablecache: välimuisti on jo käytössä"
+msgstr "enablecache: välimuisti on jo käytössä"
-#: sunrpc/svc_udp.c:477
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
-msgstr "enablecache: välimuistin varaaminen ei onnistunut"
+msgstr "enablecache: välimuistin varaaminen ei onnistunut"
-#: sunrpc/svc_udp.c:485
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
-msgstr "enablecache: välimuistidatan muistinvaraus ei onnistunut"
+msgstr "enablecache: välimuistidatan muistinvaraus ei onnistunut"
-#: sunrpc/svc_udp.c:492
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
-msgstr "enablecache: välimuistififon muistinvaraus ei onnistunut"
+msgstr "enablecache: välimuistififon muistinvaraus ei onnistunut"
-#: sunrpc/svc_udp.c:528
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
-msgstr "cache_set: uhria ei löydy"
+msgstr "cache_set: uhria ei löydy"
-#: sunrpc/svc_udp.c:539
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
-msgstr "cache_set uhrin varaus epäonnistui"
+msgstr "cache_set uhrin varaus epäonnistui"
-#: sunrpc/svc_udp.c:545
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
-msgstr "cache_set: uuden \"rpc_buffer\":in muistinvaraus ei onnistunut"
+msgstr "cache_set: uuden â€rpc_bufferâ€:in muistinvaraus ei onnistunut"
#: sunrpc/svc_unix.c:150
msgid "svc_unix.c - AF_UNIX socket creation problem"
@@ -4384,1527 +5177,1888 @@ msgstr "svc_unix.c - ongelma AF_UNIX-pistokkeen luomisessa"
#: sunrpc/svc_unix.c:166
msgid "svc_unix.c - cannot getsockname or listen"
-msgstr "svc_unix.c - \"getsockname\" ja \"listen\" eivät ole mahdollisia"
+msgstr "svc_unix.c - â€getsockname†ja â€listen†eivät ole mahdollisia"
-#: sunrpc/svc_unix.c:178 sunrpc/svc_unix.c:181
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create: muisti lopussa\n"
+#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
+msgid "Hangup"
+msgstr "Linjankatkaisu"
-#: sunrpc/svc_unix.c:222 sunrpc/svc_unix.c:225
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix: makefd_xprt: muisti lopussa\n"
+#: sysdeps/generic/siglist.h:30 sysdeps/unix/siglist.c:28
+msgid "Interrupt"
+msgstr "Keskeytys"
-#: sunrpc/xdr.c:570 sunrpc/xdr.c:573
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes: muisti lopussa\n"
+#: sysdeps/generic/siglist.h:31 sysdeps/unix/siglist.c:29
+msgid "Quit"
+msgstr "Lopetettu"
-#: sunrpc/xdr.c:725 sunrpc/xdr.c:728
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string: muisti lopussa\n"
+#: sysdeps/generic/siglist.h:32 sysdeps/unix/siglist.c:30
+msgid "Illegal instruction"
+msgstr "Virheellinen käsky"
-#: sunrpc/xdr_array.c:111 sunrpc/xdr_array.c:114
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array: muisti lopussa\n"
+#: sysdeps/generic/siglist.h:33 sysdeps/unix/siglist.c:31
+msgid "Trace/breakpoint trap"
+msgstr "Jäljitys/katkaisupisteansa"
-#: sunrpc/xdr_rec.c:158 sunrpc/xdr_rec.c:161
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create: muisti lopussa\n"
+#: sysdeps/generic/siglist.h:34
+msgid "Aborted"
+msgstr "Keskeytetty"
-#: sunrpc/xdr_ref.c:88 sunrpc/xdr_ref.c:91
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_references: muisti lopussa\n"
+#: sysdeps/generic/siglist.h:35 sysdeps/unix/siglist.c:34
+msgid "Floating point exception"
+msgstr "Liukulukupoikkeus"
-#: nis/nis_callback.c:189
-msgid "unable to free arguments"
-msgstr "argumentteja ei voi vapauttaa"
+#: sysdeps/generic/siglist.h:36 sysdeps/unix/siglist.c:35
+msgid "Killed"
+msgstr "Tapettu"
-#: nis/nis_error.c:30
-msgid "Probable success"
-msgstr "Onnistui todennäköisesti"
+#: sysdeps/generic/siglist.h:37 sysdeps/unix/siglist.c:36
+msgid "Bus error"
+msgstr "Väylävirhe"
-#: nis/nis_error.c:31
-msgid "Not found"
-msgstr "Ei löydy"
+#: sysdeps/generic/siglist.h:38 sysdeps/unix/siglist.c:37
+msgid "Segmentation fault"
+msgstr "Muistialueen ylitys"
-#: nis/nis_error.c:32
-msgid "Probably not found"
-msgstr "Todennäköisesti ei löytynyt"
+#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
+#. TRANS Every library function that returns this error code also generates a
+#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled
+#. TRANS or blocked. Thus, your program will never actually see @code{EPIPE}
+#. TRANS unless it has handled or blocked @code{SIGPIPE}.
+#: sysdeps/generic/siglist.h:39 sysdeps/gnu/errlist.c:359
+#: sysdeps/unix/siglist.c:39
+msgid "Broken pipe"
+msgstr "Katkennut putki"
-#: nis/nis_error.c:33
-msgid "Cache expired"
-msgstr "Välimuisti vanhentunut"
+#: sysdeps/generic/siglist.h:40 sysdeps/unix/siglist.c:40
+msgid "Alarm clock"
+msgstr "Herätyskello"
-#: nis/nis_error.c:34
-msgid "NIS+ servers unreachable"
-msgstr "NIS+-palvelimia ei tavoiteta"
+#: sysdeps/generic/siglist.h:41 sysdeps/unix/siglist.c:41
+msgid "Terminated"
+msgstr "Päätetty"
-#: nis/nis_error.c:35
-msgid "Unknown object"
-msgstr "Tuntematon objekti"
+#: sysdeps/generic/siglist.h:42 sysdeps/unix/siglist.c:42
+msgid "Urgent I/O condition"
+msgstr "Kiireellinen I/O-ehto"
-#: nis/nis_error.c:36
-msgid "Server busy, try again"
-msgstr "Palvelin varattu, yritä uudelleen"
+#: sysdeps/generic/siglist.h:43 sysdeps/unix/siglist.c:43
+msgid "Stopped (signal)"
+msgstr "Pysäytetty (signaali)"
-#: nis/nis_error.c:37
-msgid "Generic system error"
-msgstr "Yleinen järjestelmävirhe"
+#: sysdeps/generic/siglist.h:44 sysdeps/unix/siglist.c:44
+msgid "Stopped"
+msgstr "Pysäytetty"
-#: nis/nis_error.c:38
-msgid "First/next chain broken"
-msgstr "Ensimmäinen/seuraava ketju rikki"
+#: sysdeps/generic/siglist.h:45 sysdeps/unix/siglist.c:45
+msgid "Continued"
+msgstr "Jatkettu"
-#: nis/nis_error.c:41
-msgid "Name not served by this server"
-msgstr "Tämä palvelin ei tarjoa tätä nimeä"
+#: sysdeps/generic/siglist.h:46 sysdeps/unix/siglist.c:46
+msgid "Child exited"
+msgstr "Lapsi lopetti"
-#: nis/nis_error.c:42
-msgid "Server out of memory"
-msgstr "Palvelimen muisti lopussa"
+#: sysdeps/generic/siglist.h:47 sysdeps/unix/siglist.c:47
+msgid "Stopped (tty input)"
+msgstr "Pysäytetty (päätteen syöte)"
-#: nis/nis_error.c:43
-msgid "Object with same name exists"
-msgstr "Saman niminen objekti on olemassa"
+#: sysdeps/generic/siglist.h:48 sysdeps/unix/siglist.c:48
+msgid "Stopped (tty output)"
+msgstr "Pysäytetty (päätteen tuloste)"
-#: nis/nis_error.c:44
-msgid "Not master server for this domain"
-msgstr "Ei ole tämän toimialueen pääpalvelin"
+#: sysdeps/generic/siglist.h:49 sysdeps/unix/siglist.c:49
+msgid "I/O possible"
+msgstr "I/O mahdollista"
-#: nis/nis_error.c:45
-msgid "Invalid object for operation"
-msgstr "Virheellinen objekti operaatiolle"
+#: sysdeps/generic/siglist.h:50 sysdeps/unix/siglist.c:50
+msgid "CPU time limit exceeded"
+msgstr "Suoritinaikaraja ylittynyt"
-#: nis/nis_error.c:46
-msgid "Malformed name, or illegal name"
-msgstr "Väärän muotoinen tai virheellinen nimi"
+#: sysdeps/generic/siglist.h:51 sysdeps/unix/siglist.c:51
+msgid "File size limit exceeded"
+msgstr "Tiedoston kokoraja ylitetty"
-#: nis/nis_error.c:47
-msgid "Unable to create callback"
-msgstr "vastakutsua ei voi luoda"
+#: sysdeps/generic/siglist.h:52 sysdeps/unix/siglist.c:52
+msgid "Virtual timer expired"
+msgstr "Virtuaaliajastin vanhentunut"
-#: nis/nis_error.c:48
-msgid "Results sent to callback proc"
-msgstr "Tulokset lähetetty vastakutsuproseduurille"
+#: sysdeps/generic/siglist.h:53 sysdeps/unix/siglist.c:53
+msgid "Profiling timer expired"
+msgstr "Profilointiajastin vanhentunut"
-#: nis/nis_error.c:49
-msgid "Not found, no such name"
-msgstr "Ei löytynyt, nimeä ei ole"
+#: sysdeps/generic/siglist.h:54 sysdeps/unix/siglist.c:54
+msgid "Window changed"
+msgstr "Ikkuna vaihtunut"
-#: nis/nis_error.c:50
-msgid "Name/entry isn't unique"
-msgstr "Nimi/merkintä ei ole ainutkertainen"
+#: sysdeps/generic/siglist.h:55 sysdeps/unix/siglist.c:56
+msgid "User defined signal 1"
+msgstr "Käyttäjän määrittelemä signaali 1"
-#: nis/nis_error.c:51
-msgid "Modification failed"
-msgstr "Muutos epäonnistui"
+#: sysdeps/generic/siglist.h:56 sysdeps/unix/siglist.c:57
+msgid "User defined signal 2"
+msgstr "Käyttäjän määrittelemä signaali 2"
-#: nis/nis_error.c:52
-msgid "Database for table does not exist"
-msgstr "Tietokantaa taulukolle ei ole olemassa"
+#: sysdeps/generic/siglist.h:60 sysdeps/unix/siglist.c:33
+msgid "EMT trap"
+msgstr "EMT-ansa"
-#: nis/nis_error.c:53
-msgid "Entry/table type mismatch"
-msgstr "Merkinnän/taulukon tyyppi on väärä"
+#: sysdeps/generic/siglist.h:63 sysdeps/unix/siglist.c:38
+msgid "Bad system call"
+msgstr "Virheellinen järjestelmäkutsu"
-#: nis/nis_error.c:54
-msgid "Link points to illegal name"
-msgstr "Linkki viittaa virheelliseen nimeen"
+#: sysdeps/generic/siglist.h:66
+msgid "Stack fault"
+msgstr "Pinovirhe"
-#: nis/nis_error.c:55
-msgid "Partial success"
-msgstr "Onnistui osittain"
+#: sysdeps/generic/siglist.h:69
+msgid "Information request"
+msgstr "Tietopyyntö"
-#: nis/nis_error.c:56
-msgid "Too many attributes"
-msgstr "Liian monta määrettä"
+#: sysdeps/generic/siglist.h:71
+msgid "Power failure"
+msgstr "Sähkökatko"
-#: nis/nis_error.c:57
-msgid "Error in RPC subsystem"
-msgstr "Virhe RPC-alijärjestelmässä"
+#: sysdeps/generic/siglist.h:74 sysdeps/unix/siglist.c:55
+msgid "Resource lost"
+msgstr "Resurssi menetetty"
-#: nis/nis_error.c:58
-msgid "Missing or malformed attribute"
-msgstr "Puuttuva tai väärän muotoinen määre"
+#. TRANS Operation not permitted; only the owner of the file (or other resource)
+#. TRANS or processes with special privileges can perform the operation.
+#: sysdeps/gnu/errlist.c:25
+msgid "Operation not permitted"
+msgstr "Toiminto ei ole sallittu"
-#: nis/nis_error.c:59
-msgid "Named object is not searchable"
-msgstr "Nimetty objekti ei ole haettavissa"
+#. TRANS No process matches the specified process ID.
+#: sysdeps/gnu/errlist.c:45
+msgid "No such process"
+msgstr "Prosessia ei ole"
-#: nis/nis_error.c:60
-msgid "Error while talking to callback proc"
-msgstr "Virhe puhuttaessa vastakutsuproseduurille"
+#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
+#. TRANS completion of the call. When this happens, you should try the call
+#. TRANS again.
+#. TRANS
+#. TRANS You can choose to have functions resume after a signal that is handled,
+#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted
+#. TRANS Primitives}.
+#: sysdeps/gnu/errlist.c:60
+msgid "Interrupted system call"
+msgstr "Keskeytetty järjestelmäkutsu"
-#: nis/nis_error.c:61
-msgid "Non NIS+ namespace encountered"
-msgstr "Kohdattu NIS+:aan kuulumaton nimiavaruus"
+# Pitäisikö suomentaa enemmän?
+#. TRANS Input/output error; usually used for physical read or write errors.
+#: sysdeps/gnu/errlist.c:69
+msgid "Input/output error"
+msgstr "I/O-virhe"
-#: nis/nis_error.c:62
-msgid "Illegal object type for operation"
-msgstr "Objektin tyyppi on virheellinen toiminnolle"
+#. TRANS No such device or address. The system tried to use the device
+#. TRANS represented by a file you specified, and it couldn't find the device.
+#. TRANS This can mean that the device file was installed incorrectly, or that
+#. TRANS the physical device is missing or not correctly attached to the
+#. TRANS computer.
+#: sysdeps/gnu/errlist.c:82
+msgid "No such device or address"
+msgstr "Laitetta tai osoitetta ei ole"
-#: nis/nis_error.c:63
-msgid "Passed object is not the same object on server"
-msgstr "Välitetty objekti ei ole sama kuin palvelimella"
+#. TRANS Argument list too long; used when the arguments passed to a new program
+#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
+#. TRANS File}) occupy too much memory space. This condition never arises in the
+#. TRANS GNU system.
+#: sysdeps/gnu/errlist.c:94
+msgid "Argument list too long"
+msgstr "Argumenttilista on liian pitkä"
-#: nis/nis_error.c:64
-msgid "Modify operation failed"
-msgstr "Muutostoiminto epäonnistui"
+#. TRANS Invalid executable file format. This condition is detected by the
+#. TRANS @code{exec} functions; see @ref{Executing a File}.
+#: sysdeps/gnu/errlist.c:104
+msgid "Exec format error"
+msgstr "Käynnistettävän tiedoston muoto virheellinen"
-#: nis/nis_error.c:65
-msgid "Query illegal for named table"
-msgstr "Virheellinen kysely nimetylle taulukolle"
+#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
+#. TRANS closed or reading from a descriptor open only for writing (or vice
+#. TRANS versa).
+#: sysdeps/gnu/errlist.c:115
+msgid "Bad file descriptor"
+msgstr "Virheellinen tiedostokahva"
-#: nis/nis_error.c:66
-msgid "Attempt to remove a non-empty table"
-msgstr "Yritettiin poistaa ei-tyhjä taulukko"
+#. TRANS There are no child processes. This error happens on operations that are
+#. TRANS supposed to manipulate child processes, when there aren't any processes
+#. TRANS to manipulate.
+#: sysdeps/gnu/errlist.c:126
+msgid "No child processes"
+msgstr "Ei lapsiprosesseja"
-#: nis/nis_error.c:67
-msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
-msgstr "Virhe NIS+-kylmäkäynnistystiedoston käyttämisessä. Onko NIS+ asennettu?"
+#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
+#. TRANS deadlock situation. The system does not guarantee that it will notice
+#. TRANS all such situations. This error means you got lucky and the system
+#. TRANS noticed; it might just hang. @xref{File Locks}, for an example.
+#: sysdeps/gnu/errlist.c:138
+msgid "Resource deadlock avoided"
+msgstr "Resurssiumpikuja vältetty"
-#: nis/nis_error.c:68
-msgid "Full resync required for directory"
-msgstr "Hakemisto vaatii täyden uudelleensynkronoinnin"
+#. TRANS No memory available. The system cannot allocate more virtual memory
+#. TRANS because its capacity is full.
+#: sysdeps/gnu/errlist.c:148
+msgid "Cannot allocate memory"
+msgstr "Muistin varaaminen ei onnistu"
-#: nis/nis_error.c:69
-msgid "NIS+ operation failed"
-msgstr "NIS+-toiminto epäonnistui"
+#. TRANS Bad address; an invalid pointer was detected.
+#. TRANS In the GNU system, this error never happens; you get a signal instead.
+#: sysdeps/gnu/errlist.c:167
+msgid "Bad address"
+msgstr "Virheellinen osoite"
-#: nis/nis_error.c:70
-msgid "NIS+ service is unavailable or not installed"
-msgstr "NIS+-palvelu ei ole käytettävissä tai asennettu"
+#. TRANS A file that isn't a block special file was given in a situation that
+#. TRANS requires one. For example, trying to mount an ordinary file as a file
+#. TRANS system in Unix gives this error.
+#: sysdeps/gnu/errlist.c:178
+msgid "Block device required"
+msgstr "Lohkolaite vaaditaan"
-#: nis/nis_error.c:71
-msgid "Yes, 42 is the meaning of life"
-msgstr "Kyllä, 42 on elämän tarkoitus"
+#. TRANS Resource busy; a system resource that can't be shared is already in use.
+#. TRANS For example, if you try to delete a file that is the root of a currently
+#. TRANS mounted filesystem, you get this error.
+#: sysdeps/gnu/errlist.c:189
+msgid "Device or resource busy"
+msgstr "Laite tai resurssi varattu"
-#: nis/nis_error.c:72
-msgid "Unable to authenticate NIS+ server"
-msgstr "NIS+-palvelinta ei voi todentaa"
+#. TRANS File exists; an existing file was specified in a context where it only
+#. TRANS makes sense to specify a new file.
+#: sysdeps/gnu/errlist.c:199
+msgid "File exists"
+msgstr "Tiedosto on olemassa"
-#: nis/nis_error.c:73
-msgid "Unable to authenticate NIS+ client"
-msgstr "NIS+-asiakasta ei voi todentaa"
+#. TRANS An attempt to make an improper link across file systems was detected.
+#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
+#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
+#: sysdeps/gnu/errlist.c:210
+msgid "Invalid cross-device link"
+msgstr "Virheellinen laitteiden välinen linkki"
-#: nis/nis_error.c:74
-msgid "No file space on server"
-msgstr "Palvelimella ei ole tilaa"
+#. TRANS The wrong type of device was given to a function that expects a
+#. TRANS particular sort of device.
+#: sysdeps/gnu/errlist.c:220
+msgid "No such device"
+msgstr "Laitetta ei ole"
-#: nis/nis_error.c:75
-msgid "Unable to create process on server"
-msgstr "Palvelimelle ei voi luoda prosessia"
+#. TRANS A file that isn't a directory was specified when a directory is required.
+#: sysdeps/gnu/errlist.c:229
+msgid "Not a directory"
+msgstr "Ei ole hakemisto"
-#: nis/nis_error.c:76
-msgid "Master server busy, full dump rescheduled."
-msgstr "Pääpalvelin on varattu, täysi vedostus ajastettu uudelleen."
+#. TRANS File is a directory; you cannot open a directory for writing,
+#. TRANS or create or remove hard links to it.
+#: sysdeps/gnu/errlist.c:239
+msgid "Is a directory"
+msgstr "On hakemisto"
-#: nis/nis_local_names.c:126
-#, c-format
-msgid "LOCAL entry for UID %d in directory %s not unique\n"
-msgstr "PAIKALLINEN merkintä UID:lle %d hakemistossa %s ei ole ainutkertainen\n"
+#. TRANS Invalid argument. This is used to indicate various kinds of problems
+#. TRANS with passing the wrong argument to a library function.
+#: sysdeps/gnu/errlist.c:249
+msgid "Invalid argument"
+msgstr "Virheellinen argumentti"
-#: nis/nis_print.c:51
-msgid "UNKNOWN"
-msgstr "TUNTEMATON"
+#. TRANS The current process has too many files open and can't open any more.
+#. TRANS Duplicate descriptors do count toward this limit.
+#. TRANS
+#. TRANS In BSD and GNU, the number of open files is controlled by a resource
+#. TRANS limit that can usually be increased. If you get this error, you might
+#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
+#. TRANS @pxref{Limits on Resources}.
+#: sysdeps/gnu/errlist.c:264
+msgid "Too many open files"
+msgstr "Liian monta avointa tiedostoa"
-#: nis/nis_print.c:109
-msgid "BOGUS OBJECT\n"
-msgstr "VÄÄRÄ OBJEKTI\n"
+#. TRANS There are too many distinct file openings in the entire system. Note
+#. TRANS that any number of linked channels count as just one file opening; see
+#. TRANS @ref{Linked Channels}. This error never occurs in the GNU system.
+#: sysdeps/gnu/errlist.c:275
+msgid "Too many open files in system"
+msgstr "Liian monta avointa tiedostoa järjestelmässä"
-#: nis/nis_print.c:112
-msgid "NO OBJECT\n"
-msgstr "EI OBJEKTIA\n"
+#. TRANS Inappropriate I/O control operation, such as trying to set terminal
+#. TRANS modes on an ordinary file.
+#: sysdeps/gnu/errlist.c:285
+msgid "Inappropriate ioctl for device"
+msgstr "Laitteelle sopimaton ioctl"
-#: nis/nis_print.c:115
-msgid "DIRECTORY\n"
-msgstr "HAKEMISTO\n"
+#. TRANS An attempt to execute a file that is currently open for writing, or
+#. TRANS write to a file that is currently being executed. Often using a
+#. TRANS debugger to run a program is considered having it open for writing and
+#. TRANS will cause this error. (The name stands for ``text file busy''.) This
+#. TRANS is not an error in the GNU system; the text is copied as necessary.
+#: sysdeps/gnu/errlist.c:298
+msgid "Text file busy"
+msgstr "Tekstitiedosto varattu"
-#: nis/nis_print.c:118
-msgid "GROUP\n"
-msgstr "RYHMÄ\n"
+#. TRANS File too big; the size of a file would be larger than allowed by the system.
+#: sysdeps/gnu/errlist.c:307
+msgid "File too large"
+msgstr "Liian suuri tiedosto"
-#: nis/nis_print.c:121
-msgid "TABLE\n"
-msgstr "TAULUKKO\n"
+#. TRANS No space left on device; write operation on a file failed because the
+#. TRANS disk is full.
+#: sysdeps/gnu/errlist.c:317
+msgid "No space left on device"
+msgstr "Laitteella ei ole tilaa jäljellä"
-#: nis/nis_print.c:124
-msgid "ENTRY\n"
-msgstr "MERKINTÄ\n"
+#. TRANS Invalid seek operation (such as on a pipe).
+#: sysdeps/gnu/errlist.c:326
+msgid "Illegal seek"
+msgstr "Virheellinen siirto"
-#: nis/nis_print.c:127
-msgid "LINK\n"
-msgstr "LINKKI\n"
+#. TRANS An attempt was made to modify something on a read-only file system.
+#: sysdeps/gnu/errlist.c:335
+msgid "Read-only file system"
+msgstr "Kirjoitussuojattu tiedostojärjestelmä"
-#: nis/nis_print.c:130
-msgid "PRIVATE\n"
-msgstr "YKSITYINEN\n"
+#. TRANS Too many links; the link count of a single file would become too large.
+#. TRANS @code{rename} can cause this error if the file being renamed already has
+#. TRANS as many links as it can take (@pxref{Renaming Files}).
+#: sysdeps/gnu/errlist.c:346
+msgid "Too many links"
+msgstr "Liian monta linkkiä"
-#: nis/nis_print.c:133
-msgid "(Unknown object)\n"
-msgstr "(Tuntematon objekti)\n"
+#. TRANS Domain error; used by mathematical functions when an argument value does
+#. TRANS not fall into the domain over which the function is defined.
+#: sysdeps/gnu/errlist.c:369
+msgid "Numerical argument out of domain"
+msgstr "Numeerinen argumentti ei kuulu määrittelyjoukkoon"
-#: nis/nis_print.c:166
-#, c-format
-msgid "Name : `%s'\n"
-msgstr "Nimi : \"%s\"\n"
+#. TRANS Range error; used by mathematical functions when the result value is
+#. TRANS not representable because of overflow or underflow.
+#: sysdeps/gnu/errlist.c:379
+msgid "Numerical result out of range"
+msgstr "Numeerinen tulos on sallitun välin ulkopuolella"
-#: nis/nis_print.c:167
-#, c-format
-msgid "Type : %s\n"
-msgstr "Tyyppi: %s\n"
+#. TRANS Resource temporarily unavailable; the call might work if you try again
+#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
+#. TRANS they are always the same in the GNU C library.
+#. TRANS
+#. TRANS This error can happen in a few different situations:
+#. TRANS
+#. TRANS @itemize @bullet
+#. TRANS @item
+#. TRANS An operation that would block was attempted on an object that has
+#. TRANS non-blocking mode selected. Trying the same operation again will block
+#. TRANS until some external condition makes it possible to read, write, or
+#. TRANS connect (whatever the operation). You can use @code{select} to find out
+#. TRANS when the operation will be possible; @pxref{Waiting for I/O}.
+#. TRANS
+#. TRANS @strong{Portability Note:} In many older Unix systems, this condition
+#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code
+#. TRANS different from @code{EAGAIN}. To make your program portable, you should
+#. TRANS check for both codes and treat them the same.
+#. TRANS
+#. TRANS @item
+#. TRANS A temporary resource shortage made an operation impossible. @code{fork}
+#. TRANS can return this error. It indicates that the shortage is expected to
+#. TRANS pass, so your program can try the call again later and it may succeed.
+#. TRANS It is probably a good idea to delay for a few seconds before trying it
+#. TRANS again, to allow time for other processes to release scarce resources.
+#. TRANS Such shortages are usually fairly serious and affect the whole system,
+#. TRANS so usually an interactive program should report the error to the user
+#. TRANS and return to its command loop.
+#. TRANS @end itemize
+#: sysdeps/gnu/errlist.c:416
+msgid "Resource temporarily unavailable"
+msgstr "Resurssi ei tilapäisesti ole käytettävissä"
-#: nis/nis_print.c:172
-msgid "Master Server :\n"
-msgstr "Pääpalvelin :\n"
+#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
+#. TRANS The values are always the same, on every operating system.
+#. TRANS
+#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
+#. TRANS separate error code.
+#: sysdeps/gnu/errlist.c:429
+msgid "Operation would block"
+msgstr "Toiminto pysähtyisi"
-#: nis/nis_print.c:174
-msgid "Replicate :\n"
-msgstr "Kaksoiskappale:\n"
+#. TRANS An operation that cannot complete immediately was initiated on an object
+#. TRANS that has non-blocking mode selected. Some functions that must always
+#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return
+#. TRANS @code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that
+#. TRANS the operation has begun and will take some time. Attempts to manipulate
+#. TRANS the object before the call completes return @code{EALREADY}. You can
+#. TRANS use the @code{select} function to find out when the pending operation
+#. TRANS has completed; @pxref{Waiting for I/O}.
+#: sysdeps/gnu/errlist.c:445
+msgid "Operation now in progress"
+msgstr "Toiminto on nyt käynnissä"
-#: nis/nis_print.c:175
-#, c-format
-msgid "\tName : %s\n"
-msgstr "\tNimi : %s\n"
+#. TRANS An operation is already in progress on an object that has non-blocking
+#. TRANS mode selected.
+#: sysdeps/gnu/errlist.c:455
+msgid "Operation already in progress"
+msgstr "Toiminto on jo käynnissä"
-#: nis/nis_print.c:176
-msgid "\tPublic Key : "
-msgstr "\tJulkinen avain: "
+#. TRANS A file that isn't a socket was specified when a socket is required.
+#: sysdeps/gnu/errlist.c:464
+msgid "Socket operation on non-socket"
+msgstr "Pistoketoiminto muulle kuin pistokkeelle"
-#: nis/nis_print.c:180
-msgid "None.\n"
-msgstr "Ei mitään.\n"
+#. TRANS The size of a message sent on a socket was larger than the supported
+#. TRANS maximum size.
+#: sysdeps/gnu/errlist.c:474
+msgid "Message too long"
+msgstr "Liian pitkä viesti"
-#: nis/nis_print.c:183
-#, c-format
-msgid "Diffie-Hellmann (%d bits)\n"
-msgstr "Diffie-Hellmann (%d bittiä)\n"
+#. TRANS The socket type does not support the requested communications protocol.
+#: sysdeps/gnu/errlist.c:483
+msgid "Protocol wrong type for socket"
+msgstr "Protokollan tyyppi on väärä pistokkeelle"
-#: nis/nis_print.c:188
-#, c-format
-msgid "RSA (%d bits)\n"
-msgstr "RSA (%d bittiä)\n"
+#. TRANS You specified a socket option that doesn't make sense for the
+#. TRANS particular protocol being used by the socket. @xref{Socket Options}.
+#: sysdeps/gnu/errlist.c:493
+msgid "Protocol not available"
+msgstr "Protokolla ei ole käytettävissä"
-#: nis/nis_print.c:191
-msgid "Kerberos.\n"
-msgstr "Kerberos.\n"
+#. TRANS The socket domain does not support the requested communications protocol
+#. TRANS (perhaps because the requested protocol is completely invalid).
+#. TRANS @xref{Creating a Socket}.
+#: sysdeps/gnu/errlist.c:504
+msgid "Protocol not supported"
+msgstr "Protokolla ei ole tuettu"
-#: nis/nis_print.c:194
-#, c-format
-msgid "Unknown (type = %d, bits = %d)\n"
-msgstr "Tuntematon (tyyppi = %d, bitit = %d)\n"
+#. TRANS The socket type is not supported.
+#: sysdeps/gnu/errlist.c:513
+msgid "Socket type not supported"
+msgstr "Pistoketyyppi ei ole tuettu"
-#: nis/nis_print.c:205
-#, c-format
-msgid "\tUniversal addresses (%u)\n"
-msgstr "\tYleiset osoitteet (%u)\n"
+#. TRANS The operation you requested is not supported. Some socket functions
+#. TRANS don't make sense for all types of sockets, and others may not be
+#. TRANS implemented for all communications protocols. In the GNU system, this
+#. TRANS error can happen for many calls when the object does not support the
+#. TRANS particular operation; it is a generic indication that the server knows
+#. TRANS nothing to do for that call.
+#: sysdeps/gnu/errlist.c:527
+msgid "Operation not supported"
+msgstr "Toiminto ei ole tuettu"
-#: nis/nis_print.c:227
-msgid "Time to live : "
-msgstr "Elinaika : "
+#. TRANS The socket communications protocol family you requested is not supported.
+#: sysdeps/gnu/errlist.c:536
+msgid "Protocol family not supported"
+msgstr "Protokollaperhe ei ole tuettu"
-#: nis/nis_print.c:229
-msgid "Default Access rights :\n"
-msgstr "Oletusarvoiset käyttöoikeudet: \n"
+#. TRANS The address family specified for a socket is not supported; it is
+#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}.
+#: sysdeps/gnu/errlist.c:546
+msgid "Address family not supported by protocol"
+msgstr "Protokolla ei tue osoiteperhettä"
-#: nis/nis_print.c:238
-#, c-format
-msgid "\tType : %s\n"
-msgstr "\tTyyppi : %s\n"
+#. TRANS The requested socket address is already in use. @xref{Socket Addresses}.
+#: sysdeps/gnu/errlist.c:555
+msgid "Address already in use"
+msgstr "Osoite on jo käytössä"
-#: nis/nis_print.c:239
-msgid "\tAccess rights: "
-msgstr "\tKäyttöoikeus: "
+#. TRANS The requested socket address is not available; for example, you tried
+#. TRANS to give a socket a name that doesn't match the local host name.
+#. TRANS @xref{Socket Addresses}.
+#: sysdeps/gnu/errlist.c:566
+msgid "Cannot assign requested address"
+msgstr "Pyydettyä osoitetta ei voi asettaa"
-#: nis/nis_print.c:252
-msgid "Group Flags :"
-msgstr "Ryhmäliput :"
+#. TRANS A socket operation failed because the network was down.
+#: sysdeps/gnu/errlist.c:575
+msgid "Network is down"
+msgstr "Verkko on poissa käytöstä"
-#: nis/nis_print.c:255
-msgid ""
-"\n"
-"Group Members :\n"
-msgstr ""
-"\n"
-"Ryhmän jäsenet:\n"
+#. TRANS A socket operation failed because the subnet containing the remote host
+#. TRANS was unreachable.
+#: sysdeps/gnu/errlist.c:585
+msgid "Network is unreachable"
+msgstr "Verkkoa ei tavoiteta"
-#: nis/nis_print.c:266
-#, c-format
-msgid "Table Type : %s\n"
-msgstr "Taulukkotyyppi : %s\n"
+#. TRANS A network connection was reset because the remote host crashed.
+#: sysdeps/gnu/errlist.c:594
+msgid "Network dropped connection on reset"
+msgstr "Verkko sulki yhteyden vastapään takia."
-#: nis/nis_print.c:267
-#, c-format
-msgid "Number of Columns : %d\n"
-msgstr "Sarakkeiden määrä : %d\n"
+#. TRANS A network connection was aborted locally.
+#: sysdeps/gnu/errlist.c:603
+msgid "Software caused connection abort"
+msgstr "Ohjelmisto aiheutti yhteyden katkaisun"
-#: nis/nis_print.c:268
-#, c-format
-msgid "Character Separator : %c\n"
-msgstr "Merkkierotin : %c\n"
+#. TRANS A network connection was closed for reasons outside the control of the
+#. TRANS local host, such as by the remote machine rebooting or an unrecoverable
+#. TRANS protocol violation.
+#: sysdeps/gnu/errlist.c:614
+msgid "Connection reset by peer"
+msgstr "Vastapää sulki yhteyden"
-#: nis/nis_print.c:269
-#, c-format
-msgid "Search Path : %s\n"
-msgstr "Hakupolku : %s\n"
+#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this
+#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
+#. TRANS other from network operations.
+#: sysdeps/gnu/errlist.c:625
+msgid "No buffer space available"
+msgstr "Puskuritilaa ei ole vapaana"
-#: nis/nis_print.c:270
-msgid "Columns :\n"
-msgstr "Sarakkeita :\n"
+#. TRANS You tried to connect a socket that is already connected.
+#. TRANS @xref{Connecting}.
+#: sysdeps/gnu/errlist.c:635
+msgid "Transport endpoint is already connected"
+msgstr "Siirron vastapää on jo yhdistetty"
-#: nis/nis_print.c:273
-#, c-format
-msgid "\t[%d]\tName : %s\n"
-msgstr "\t[%d]\tNimi : %s\n"
+#. TRANS The socket is not connected to anything. You get this error when you
+#. TRANS try to transmit data over a socket, without first specifying a
+#. TRANS destination for the data. For a connectionless socket (for datagram
+#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
+#: sysdeps/gnu/errlist.c:647
+msgid "Transport endpoint is not connected"
+msgstr "Siirron vastapää ei ole yhdistetty"
-#: nis/nis_print.c:275
-msgid "\t\tAttributes : "
-msgstr "\t\tMääreet : "
+#. TRANS No default destination address was set for the socket. You get this
+#. TRANS error when you try to transmit data over a connectionless socket,
+#. TRANS without first specifying a destination for the data with @code{connect}.
+#: sysdeps/gnu/errlist.c:658
+msgid "Destination address required"
+msgstr "Kohdeosoite vaaditaan"
-#: nis/nis_print.c:277
-msgid "\t\tAccess Rights : "
-msgstr "\t\tKäyttöoikeus : "
+#. TRANS The socket has already been shut down.
+#: sysdeps/gnu/errlist.c:667
+msgid "Cannot send after transport endpoint shutdown"
+msgstr "Siirron vastapään sulkemisen jälkeen ei voi lähettää"
-#: nis/nis_print.c:286
-msgid "Linked Object Type : "
-msgstr "Linkitetyn objektin tyyppi: "
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:676
+msgid "Too many references: cannot splice"
+msgstr "Liian monta viittausta: ei voi yhdistellä"
-#: nis/nis_print.c:288
-#, c-format
-msgid "Linked to : %s\n"
-msgstr "Linkitetty: %s\n"
+#. TRANS A socket operation with a specified timeout received no response during
+#. TRANS the timeout period.
+#: sysdeps/gnu/errlist.c:686
+msgid "Connection timed out"
+msgstr "Yhteys aikakatkaistu"
-#: nis/nis_print.c:297
-#, c-format
-msgid "\tEntry data of type %s\n"
-msgstr "\tMerkintädata tyyppiä %s\n"
+#. TRANS A remote host refused to allow the network connection (typically because
+#. TRANS it is not running the requested service).
+#: sysdeps/gnu/errlist.c:696
+msgid "Connection refused"
+msgstr "Yhteys torjuttu"
-#: nis/nis_print.c:300
-#, c-format
-msgid "\t[%u] - [%u bytes] "
-msgstr "\t[%u] - [%u tavua] "
+#. TRANS Too many levels of symbolic links were encountered in looking up a file name.
+#. TRANS This often indicates a cycle of symbolic links.
+#: sysdeps/gnu/errlist.c:706
+msgid "Too many levels of symbolic links"
+msgstr "Liian monta symbolisten linkkien tasoa"
-#: nis/nis_print.c:303
-msgid "Encrypted data\n"
-msgstr "Salattua dataa\n"
+#. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for
+#. TRANS Files}) or host name too long (in @code{gethostname} or
+#. TRANS @code{sethostname}; @pxref{Host Identification}).
+#: sysdeps/gnu/errlist.c:717
+msgid "File name too long"
+msgstr "Liian pitkä tiedostonimi"
-#: nis/nis_print.c:305
-msgid "Binary data\n"
-msgstr "Binääridataa\n"
+#. TRANS The remote host for a requested network connection is down.
+#: sysdeps/gnu/errlist.c:726
+msgid "Host is down"
+msgstr "Kone on alhaalla"
-#: nis/nis_print.c:320
-#, c-format
-msgid "Object Name : %s\n"
-msgstr "Objektin nimi : %s\n"
+#. TRANS The remote host for a requested network connection is not reachable.
+#: sysdeps/gnu/errlist.c:735
+msgid "No route to host"
+msgstr "Reititystä koneeseen ei ole"
-#: nis/nis_print.c:321
-#, c-format
-msgid "Directory : %s\n"
-msgstr "Hakemisto : %s\n"
+#. TRANS Directory not empty, where an empty directory was expected. Typically,
+#. TRANS this error occurs when you are trying to delete a directory.
+#: sysdeps/gnu/errlist.c:745
+msgid "Directory not empty"
+msgstr "Hakemisto ei ole tyhjä"
-#: nis/nis_print.c:322
-#, c-format
-msgid "Owner : %s\n"
-msgstr "Omistaja : %s\n"
+#. TRANS This means that the per-user limit on new process would be exceeded by
+#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on
+#. TRANS the @code{RLIMIT_NPROC} limit.
+#: sysdeps/gnu/errlist.c:756
+msgid "Too many processes"
+msgstr "Liian monta prosessia"
-#: nis/nis_print.c:323
-#, c-format
-msgid "Group : %s\n"
-msgstr "Ryhmä : %s\n"
+#. TRANS The file quota system is confused because there are too many users.
+#. TRANS @c This can probably happen in a GNU system when using NFS.
+#: sysdeps/gnu/errlist.c:766
+msgid "Too many users"
+msgstr "Liian monta käyttäjää"
-#: nis/nis_print.c:324
-msgid "Access Rights : "
-msgstr "Käyttöoikeus : "
+#. TRANS The user's disk quota was exceeded.
+#: sysdeps/gnu/errlist.c:775
+msgid "Disk quota exceeded"
+msgstr "Levykiintiö ylittynyt"
-#: nis/nis_print.c:326
-msgid ""
-"\n"
-"Time to Live : "
-msgstr ""
-"\n"
-"Elinaika : "
+#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS
+#. TRANS system which is due to file system rearrangements on the server host.
+#. TRANS Repairing this condition usually requires unmounting and remounting
+#. TRANS the NFS file system on the local host.
+#: sysdeps/gnu/errlist.c:787
+msgid "Stale NFS file handle"
+msgstr "Vanhentunut NFS-tiedostokahva"
-#: nis/nis_print.c:329
-#, c-format
-msgid "Creation Time : %s"
-msgstr "Luontiaika : %s"
+#. TRANS An attempt was made to NFS-mount a remote file system with a file name that
+#. TRANS already specifies an NFS-mounted file.
+#. TRANS (This is an error on some operating systems, but we expect it to work
+#. TRANS properly on the GNU system, making this error code impossible.)
+#: sysdeps/gnu/errlist.c:799
+msgid "Object is remote"
+msgstr "Tiedosto on etätiedosto"
-#: nis/nis_print.c:331
-#, c-format
-msgid "Mod. Time : %s"
-msgstr "Muutosaika : %s"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:808
+msgid "RPC struct is bad"
+msgstr "RPC-rakenne on virheellinen"
-#: nis/nis_print.c:332
-msgid "Object Type : "
-msgstr "Objektin tyyppi:"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:817
+msgid "RPC version wrong"
+msgstr "RPC-versio on väärä"
-#: nis/nis_print.c:352
-#, c-format
-msgid " Data Length = %u\n"
-msgstr " Datan pituus = %u\n"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:826
+msgid "RPC program not available"
+msgstr "RPC-ohjelma ei ole käytettävissä"
-#: nis/nis_print.c:365
-#, c-format
-msgid "Status : %s\n"
-msgstr "Tila : %s\n"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:835
+msgid "RPC program version wrong"
+msgstr "RPC-ohjelman versio on väärä"
-#: nis/nis_print.c:366
-#, c-format
-msgid "Number of objects : %u\n"
-msgstr "Objektien määrä : %u\n"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:844
+msgid "RPC bad procedure for program"
+msgstr "RPC: väärä proseduuri ohjelmalle"
-#: nis/nis_print.c:370
-#, c-format
-msgid "Object #%d:\n"
-msgstr "Objekti #%d:\n"
+#. TRANS No locks available. This is used by the file locking facilities; see
+#. TRANS @ref{File Locks}. This error is never generated by the GNU system, but
+#. TRANS it can result from an operation to an NFS server running another
+#. TRANS operating system.
+#: sysdeps/gnu/errlist.c:856
+msgid "No locks available"
+msgstr "Lukkoja ei ole käytettävissä"
-#: nis/nis_print_group_entry.c:115
-#, c-format
-msgid "Group entry for \"%s.%s\" group:\n"
-msgstr "Ryhmämerkintä ryhmälle \"%s.%s\":\n"
+#. TRANS Inappropriate file type or format. The file was the wrong type for the
+#. TRANS operation, or a data file had the wrong format.
+#. TRANS
+#. TRANS On some systems @code{chmod} returns this error if you try to set the
+#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
+#: sysdeps/gnu/errlist.c:869
+msgid "Inappropriate file type or format"
+msgstr "Sopimaton tiedostotyyppi tai -muoto"
-#: nis/nis_print_group_entry.c:123
-msgid " Explicit members:\n"
-msgstr " Ilmaistut jäsenet:\n"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:878
+msgid "Authentication error"
+msgstr "Todennusvirhe"
-#: nis/nis_print_group_entry.c:128
-msgid " No explicit members\n"
-msgstr " Ei ilmaistuja jäseniä\n"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:887
+msgid "Need authenticator"
+msgstr "Tarvitaan todennin"
-#: nis/nis_print_group_entry.c:131
-msgid " Implicit members:\n"
-msgstr " Ilmaisemattomat jäsenet:\n"
+#. TRANS Function not implemented. This indicates that the function called is
+#. TRANS not implemented at all, either in the C library itself or in the
+#. TRANS operating system. When you get this error, you can be sure that this
+#. TRANS particular function will always fail with @code{ENOSYS} unless you
+#. TRANS install a new version of the C library or the operating system.
+#: sysdeps/gnu/errlist.c:900
+msgid "Function not implemented"
+msgstr "Funktion toteutus puuttuu"
-#: nis/nis_print_group_entry.c:136
-msgid " No implicit members\n"
-msgstr " Ei ilmaisemattomia jäseniä\n"
+#. TRANS Not supported. A function returns this error when certain parameter
+#. TRANS values are valid, but the functionality they request is not available.
+#. TRANS This can mean that the function does not implement a particular command
+#. TRANS or option value or flag bit at all. For functions that operate on some
+#. TRANS object given in a parameter, such as a file descriptor or a port, it
+#. TRANS might instead mean that only @emph{that specific object} (file
+#. TRANS descriptor, port, etc.) is unable to support the other parameters given;
+#. TRANS different file descriptors might support different ranges of parameter
+#. TRANS values.
+#. TRANS
+#. TRANS If the entire function is not available at all in the implementation,
+#. TRANS it returns @code{ENOSYS} instead.
+#: sysdeps/gnu/errlist.c:920
+msgid "Not supported"
+msgstr "Ei ole tuettu"
-#: nis/nis_print_group_entry.c:139
-msgid " Recursive members:\n"
-msgstr " Rekursiiviset jäsenet:\n"
+#. TRANS While decoding a multibyte character the function came along an invalid
+#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
+#: sysdeps/gnu/errlist.c:930
+msgid "Invalid or incomplete multibyte or wide character"
+msgstr "Virheellinen tai epätäydellinen monitavumerkki tai leveä merkki"
-#: nis/nis_print_group_entry.c:144
-msgid " No recursive members\n"
-msgstr " Ei rekursiivisia jäseniä\n"
+#. TRANS In the GNU system, servers supporting the @code{term} protocol return
+#. TRANS this error for certain operations when the caller is not in the
+#. TRANS foreground process group of the terminal. Users do not usually see this
+#. TRANS error because functions such as @code{read} and @code{write} translate
+#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control},
+#. TRANS for information on process groups and these signals.
+#: sysdeps/gnu/errlist.c:944
+msgid "Inappropriate operation for background process"
+msgstr "Taustaprosessille sopimaton toiminto"
-#: nis/nis_print_group_entry.c:147 nis/nis_print_group_entry.c:163
-msgid " Explicit nonmembers:\n"
-msgstr " Ilmaistut ei-jäsenet:\n"
+#. TRANS In the GNU system, opening a file returns this error when the file is
+#. TRANS translated by a program and the translator program dies while starting
+#. TRANS up, before it has connected to the file.
+#: sysdeps/gnu/errlist.c:955
+msgid "Translator died"
+msgstr "Kääntäjä kuoli"
-#: nis/nis_print_group_entry.c:152
-msgid " No explicit nonmembers\n"
-msgstr " Ei ilmaistuja epäjäseniä\n"
+#. TRANS The experienced user will know what is wrong.
+#. TRANS @c This error code is a joke. Its perror text is part of the joke.
+#. TRANS @c Don't change it.
+#: sysdeps/gnu/errlist.c:966
+msgid "?"
+msgstr "?"
-#: nis/nis_print_group_entry.c:155
-msgid " Implicit nonmembers:\n"
-msgstr " Ilmaisemattomat epäjäsenet:\n"
+#. TRANS You did @strong{what}?
+#: sysdeps/gnu/errlist.c:975
+msgid "You really blew it this time"
+msgstr "Tällä kertaa todella sotkit asiat"
-#: nis/nis_print_group_entry.c:160
-msgid " No implicit nonmembers\n"
-msgstr " Ei ilmaisemattomia epäjäseniä\n"
+#. TRANS Go home and have a glass of warm, dairy-fresh milk.
+#: sysdeps/gnu/errlist.c:984
+msgid "Computer bought the farm"
+msgstr "Tietokone heitti veivinsä"
-#: nis/nis_print_group_entry.c:168
-msgid " No recursive nonmembers\n"
-msgstr " Ei rekursiivisia epäjäseniä\n"
+#. TRANS This error code has no purpose.
+#: sysdeps/gnu/errlist.c:993
+msgid "Gratuitous error"
+msgstr "Tarpeeton virhe"
-#: nis/nss_nisplus/nisplus-publickey.c:96
-#: nis/nss_nisplus/nisplus-publickey.c:172
-#, c-format
-msgid "DES entry for netname %s not unique\n"
-msgstr "DES-merkintä verkkonimelle %s ei ole ainutkertainen\n"
+#: sysdeps/gnu/errlist.c:1001
+msgid "Bad message"
+msgstr "Virheellinen viesti"
-#: nis/nss_nisplus/nisplus-publickey.c:208
-#, c-format
-msgid "netname2user: missing group id list in `%s'."
-msgstr "netname2user: ryhmätunnuslista puuttuu \"%s\":ssa."
+#: sysdeps/gnu/errlist.c:1009
+msgid "Identifier removed"
+msgstr "Tunniste poistettu"
-#: nis/nss_nisplus/nisplus-publickey.c:285
-#: nis/nss_nisplus/nisplus-publickey.c:291
-#: nis/nss_nisplus/nisplus-publickey.c:350
-#: nis/nss_nisplus/nisplus-publickey.c:359
-#, c-format
-msgid "netname2user: (nis+ lookup): %s\n"
-msgstr "netname2user: (nis+-haku): %s\n"
+#: sysdeps/gnu/errlist.c:1017
+msgid "Multihop attempted"
+msgstr "Yritettiin suorittaa â€multihopâ€"
-#: nis/nss_nisplus/nisplus-publickey.c:304
-#, c-format
-msgid "netname2user: DES entry for %s in directory %s not unique"
-msgstr "netname2user: DES-merkintä %s:lle hakemistossa %s ei ole ainutkertainen"
+#: sysdeps/gnu/errlist.c:1025
+msgid "No data available"
+msgstr "Dataa ei ole käytettävissä"
-#: nis/nss_nisplus/nisplus-publickey.c:322
-#, c-format
-msgid "netname2user: principal name `%s' too long"
-msgstr "netname2user: päänimi \"%s\" on liian pitkä"
+#: sysdeps/gnu/errlist.c:1033
+msgid "Link has been severed"
+msgstr "Linkki on vahingoittunut"
-#: nis/nss_nisplus/nisplus-publickey.c:372
-#, c-format
-msgid "netname2user: LOCAL entry for %s in directory %s not unique"
-msgstr "netname2user: PAIKALLINEN merkintä %s:lle hakemistossa %s ei ole ainutkertainen"
+#: sysdeps/gnu/errlist.c:1041
+msgid "No message of desired type"
+msgstr "Halutun tyyppisiä viestejä ei ole"
-#: nis/nss_nisplus/nisplus-publickey.c:379
-msgid "netname2user: should not have uid 0"
-msgstr "netname2user: uid:n ei pidä olla 0"
+#: sysdeps/gnu/errlist.c:1049
+msgid "Out of streams resources"
+msgstr "Virtaresurssit lopussa"
-#: nis/ypclnt.c:174
-#, c-format
-msgid "YPBINDPROC_DOMAIN: %s\n"
-msgstr "YPBINDPROC_DOMAIN: %s\n"
+#: sysdeps/gnu/errlist.c:1057
+msgid "Device not a stream"
+msgstr "Laite ei ole virta"
-#: nis/ypclnt.c:789
-msgid "Request arguments bad"
-msgstr "Pyynnön argumentit virheellisiä"
+#: sysdeps/gnu/errlist.c:1065
+msgid "Value too large for defined data type"
+msgstr "Arvo on liian suuri annetulle tietotyypille"
-#: nis/ypclnt.c:791
-msgid "RPC failure on NIS operation"
-msgstr "RPC-virhe NIS-toiminnossa"
+#: sysdeps/gnu/errlist.c:1073
+msgid "Protocol error"
+msgstr "Protokollavirhe"
-#: nis/ypclnt.c:793
-msgid "Can't bind to server which serves this domain"
-msgstr "Sitominen tämän toimialueen palvelimeen ei onnistu"
+#: sysdeps/gnu/errlist.c:1081
+msgid "Timer expired"
+msgstr "Ajastin vanhentunut"
-#: nis/ypclnt.c:795
-msgid "No such map in server's domain"
-msgstr "Karttaa ei ole palvelimen toimialueella"
+#. TRANS Operation canceled; an asynchronous operation was canceled before it
+#. TRANS completed. @xref{Asynchronous I/O}. When you call @code{aio_cancel},
+#. TRANS the normal result is for the operations affected to complete with this
+#. TRANS error; @pxref{Cancel AIO Operations}.
+#: sysdeps/gnu/errlist.c:1093
+msgid "Operation canceled"
+msgstr "Toiminto peruutettu"
-#: nis/ypclnt.c:797
-msgid "No such key in map"
-msgstr "Avainta ei ole kartassa"
+#: sysdeps/gnu/errlist.c:1101
+msgid "Interrupted system call should be restarted"
+msgstr "Keskeytetty järjestelmäkutsu on suoritettava uudestaan"
-#: nis/ypclnt.c:799
-msgid "Internal NIS error"
-msgstr "Sisäinen NIS-virhe"
+#: sysdeps/gnu/errlist.c:1109
+msgid "Channel number out of range"
+msgstr "Kanavan numero on sallitun välin ulkopuolella"
-#: nis/ypclnt.c:801
-msgid "Local resource allocation failure"
-msgstr "Paikallinen resurssienvaraus epäonnistui"
+#: sysdeps/gnu/errlist.c:1117
+msgid "Level 2 not synchronized"
+msgstr "Taso 2 ei ole synkronoitu"
-#: nis/ypclnt.c:803
-msgid "No more records in map database"
-msgstr "Karttatietokannassa ei ole enempää tietueita"
+#: sysdeps/gnu/errlist.c:1125
+msgid "Level 3 halted"
+msgstr "Taso 3 pysäytetty"
-#: nis/ypclnt.c:805
-msgid "Can't communicate with portmapper"
-msgstr "Porttikartoittajan kanssa ei voi kommunikoida"
+#: sysdeps/gnu/errlist.c:1133
+msgid "Level 3 reset"
+msgstr "Taso 3 alustettu"
-#: nis/ypclnt.c:807
-msgid "Can't communicate with ypbind"
-msgstr "Kommunikonti ypbind:in kanssa ei onnistu"
+#: sysdeps/gnu/errlist.c:1141
+msgid "Link number out of range"
+msgstr "Linkin numero on sallitun välin ulkopuolella"
-#: nis/ypclnt.c:809
-msgid "Can't communicate with ypserv"
-msgstr "Kommunikointi ypserv:in kanssa ei onnistu"
+#: sysdeps/gnu/errlist.c:1149
+msgid "Protocol driver not attached"
+msgstr "Protokolla-ajuri ei ole kytketty"
-#: nis/ypclnt.c:811
-msgid "Local domain name not set"
-msgstr "Paikallista toimialuenimeä ei ole asetettu"
+#: sysdeps/gnu/errlist.c:1157
+msgid "No CSI structure available"
+msgstr "CSI-rakennetta ei ole käytettävissä"
-#: nis/ypclnt.c:813
-msgid "NIS map database is bad"
-msgstr "NIS-karttatietokanta on viallinen"
+#: sysdeps/gnu/errlist.c:1165
+msgid "Level 2 halted"
+msgstr "Taso 2 pysäytetty"
-#: nis/ypclnt.c:815
-msgid "NIS client/server version mismatch - can't supply service"
-msgstr "NIS-asiakas/palvelinversiot eivät täsmää - palvelua ei voi tarjota"
+#: sysdeps/gnu/errlist.c:1173
+msgid "Invalid exchange"
+msgstr "Virheellinen vaihto"
-#: nis/ypclnt.c:819
-msgid "Database is busy"
-msgstr "Tietokanta on varattu"
+#: sysdeps/gnu/errlist.c:1181
+msgid "Invalid request descriptor"
+msgstr "Virheellinen pyyntökahva"
-#: nis/ypclnt.c:821
-msgid "Unknown NIS error code"
-msgstr "Tuntematon NIS-virhekoodi"
+#: sysdeps/gnu/errlist.c:1189
+msgid "Exchange full"
+msgstr "Vaihto täynnä"
-#: nis/ypclnt.c:863
-msgid "Internal ypbind error"
-msgstr "Sisäinen ypbind-virhe"
+#: sysdeps/gnu/errlist.c:1197
+msgid "No anode"
+msgstr "Ei anode"
-#: nis/ypclnt.c:865
-msgid "Domain not bound"
-msgstr "Toimialuetta ei ole sidottu"
+#: sysdeps/gnu/errlist.c:1205
+msgid "Invalid request code"
+msgstr "Virheellinen pyyntökoodi"
-#: nis/ypclnt.c:867
-msgid "System resource allocation failure"
-msgstr "Järjestelmäresurssin varaus epäonnistui"
+#: sysdeps/gnu/errlist.c:1213
+msgid "Invalid slot"
+msgstr "Virheellinen viipale"
-#: nis/ypclnt.c:869
-msgid "Unknown ypbind error"
-msgstr "Tuntematon ypbind-virhe"
+#: sysdeps/gnu/errlist.c:1221
+msgid "File locking deadlock error"
+msgstr "Umpikuja tiedoston lukinnassa -virhe"
-#: nis/ypclnt.c:908
-msgid "yp_update: cannot convert host to netname\n"
-msgstr "yp_update: isäntänimeä ei voi muuntaa verkkonimeksi\n"
+#: sysdeps/gnu/errlist.c:1229
+msgid "Bad font file format"
+msgstr "Virheellinen kirjasintiedoston muoto"
-#: nis/ypclnt.c:920
-msgid "yp_update: cannot get server address\n"
-msgstr "yp_update: palvelimen osoitetta ei löydy\n"
+#: sysdeps/gnu/errlist.c:1237
+msgid "Machine is not on the network"
+msgstr "Kone ei ole verkossa"
-#: nscd/cache.c:88
-msgid "while allocating hash table entry"
-msgstr "varattaessa tilaa tiivistetaulukkomerkinnälle"
+#: sysdeps/gnu/errlist.c:1245
+msgid "Package not installed"
+msgstr "Pakettia ei ole asennettu"
-#: nscd/cache.c:150 nscd/connections.c:187
-#, c-format
-msgid "cannot stat() file `%s': %s"
-msgstr "tiedoston \"%s\" tilaa ei voi lukea: %s"
+#: sysdeps/gnu/errlist.c:1253
+msgid "Advertise error"
+msgstr "Ilmoitusvirhe"
-#: nscd/connections.c:146
-msgid "cannot read configuration file; this is fatal"
-msgstr "asetustiedostoa ei voi lukea; tämä on vakavaa"
+#: sysdeps/gnu/errlist.c:1261
+msgid "Srmount error"
+msgstr "Srmount-virhe"
-#: nscd/connections.c:153
-msgid "Cannot run nscd in secure mode as unprivileged user"
-msgstr "Ohjelmaa nscd ei voi ajaa turvallisessa tilassa normaalin käyttäjän oikeuksilla"
+#: sysdeps/gnu/errlist.c:1269
+msgid "Communication error on send"
+msgstr "Yhteysvirhe lähetettäessä"
-#: nscd/connections.c:175
-#, c-format
-msgid "while allocating cache: %s"
-msgstr "varattaessa välimuistia: %s"
+#: sysdeps/gnu/errlist.c:1277
+msgid "RFS specific error"
+msgstr "RFS:n virhe"
-#: nscd/connections.c:200
-#, c-format
-msgid "cannot open socket: %s"
-msgstr "pistoketta ei voi avata: %s"
+#: sysdeps/gnu/errlist.c:1285
+msgid "Name not unique on network"
+msgstr "Nimi ei ole ainutkertainen verkossa"
-#: nscd/connections.c:218
-#, c-format
-msgid "cannot enable socket to accept connections: %s"
-msgstr "pistoketta ei voi asettaa vastaanottamaan yhteyksiä: %s"
+#: sysdeps/gnu/errlist.c:1293
+msgid "File descriptor in bad state"
+msgstr "Tiedostokahva on virheellisessä tilassa"
-#: nscd/connections.c:260
-#, c-format
-msgid "handle_request: request received (Version = %d)"
-msgstr "handle_request: pyyntö vastaanotettu (Versio = %d)"
+#: sysdeps/gnu/errlist.c:1301
+msgid "Remote address changed"
+msgstr "Etäosoite muuttunut"
-#: nscd/connections.c:266
-#, c-format
-msgid "cannot handle old request version %d; current version is %d"
-msgstr "vanhaa pyyntöversiota %d ei voi käsitellä; nykyinen versio on %d"
+#: sysdeps/gnu/errlist.c:1309
+msgid "Can not access a needed shared library"
+msgstr "Tarvittavaa jaettua kirjastoa ei voi käyttää"
-#: nscd/connections.c:304 nscd/connections.c:326
-#, c-format
-msgid "cannot write result: %s"
-msgstr "tulosta ei voi kirjoittaa: %s"
+#: sysdeps/gnu/errlist.c:1317
+msgid "Accessing a corrupted shared library"
+msgstr "Käytetään turmeltunutta jaettua kirjastoa"
-#: nscd/connections.c:405 nscd/connections.c:499
-#, c-format
-msgid "error getting caller's id: %s"
-msgstr "virhe kutsujan tunnisteen hakemisessa: %s"
+#: sysdeps/gnu/errlist.c:1325
+msgid ".lib section in a.out corrupted"
+msgstr "a.out:in .lib-osa on turmeltunut"
-#: nscd/connections.c:471
-#, c-format
-msgid "while accepting connection: %s"
-msgstr "hyväksyttäessä yhteyksiä: %s"
+#: sysdeps/gnu/errlist.c:1333
+msgid "Attempting to link in too many shared libraries"
+msgstr "Yritetään linkittää liian monta jaettua kirjastoa"
-#: nscd/connections.c:482
-#, c-format
-msgid "short read while reading request: %s"
-msgstr "vajaa luku luettaessa pyyntöä: %s"
+#: sysdeps/gnu/errlist.c:1341
+msgid "Cannot exec a shared library directly"
+msgstr "Jaettua kirjastoa ei voi käynnistää suoraan"
-#: nscd/connections.c:518
-#, c-format
-msgid "key length in request too long: %d"
-msgstr "avaimen pituus pyynnössä liian pitkä: %d"
+#: sysdeps/gnu/errlist.c:1349
+msgid "Streams pipe error"
+msgstr "Virtaputkivirhe"
-#: nscd/connections.c:532
-#, c-format
-msgid "short read while reading request key: %s"
-msgstr "vajaa luku luettaessa pyyntöavainta: %s"
+#: sysdeps/gnu/errlist.c:1357
+msgid "Structure needs cleaning"
+msgstr "Rakenne vaatii puhdistusta"
-#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
-#, c-format
-msgid "Failed to run nscd as user '%s'"
-msgstr "Ohjelman nscd ajaminen käyttäjän \"%s\" oikeuksilla epäonnistui"
+#: sysdeps/gnu/errlist.c:1365
+msgid "Not a XENIX named type file"
+msgstr "Ei ole XENIXin nimetty tyyppitiedosto"
-#: nscd/connections.c:612
-msgid "getgrouplist failed"
-msgstr "getgrouplist epäonnistui"
+#: sysdeps/gnu/errlist.c:1373
+msgid "No XENIX semaphores available"
+msgstr "XENIX-semaforeja ei ole käytettävissä"
-#: nscd/connections.c:625
-msgid "setgroups failed"
-msgstr "setgroups epäonnistui"
+#: sysdeps/gnu/errlist.c:1381
+msgid "Is a named type file"
+msgstr "On nimetty tyyppitiedosto"
-#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
-msgid "while allocating key copy"
-msgstr "varattaessa tilaa avainkopiolle"
+#: sysdeps/gnu/errlist.c:1389
+msgid "Remote I/O error"
+msgstr "Vastapään I/O-virhe"
-#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
-msgid "while allocating cache entry"
-msgstr "varattaessa tilaa välimuistimerkinnälle"
+#: sysdeps/gnu/errlist.c:1397
+msgid "No medium found"
+msgstr "Mediaa ei löydy"
-#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
-#, c-format
-msgid "short write in %s: %s"
-msgstr "vajaa kirjoitus tiedostossa %s: %s"
+#: sysdeps/gnu/errlist.c:1405
+msgid "Wrong medium type"
+msgstr "Väärä mediatyyppi"
-#: nscd/grpcache.c:218
-#, c-format
-msgid "Haven't found \"%s\" in group cache!"
-msgstr "\"%s\" ei löytynyt ryhmävälimuistista!"
+#: sysdeps/gnu/errlist.c:1413
+msgid "Required key not available"
+msgstr "Vaadittava avain ei ole saatavilla"
-#: nscd/grpcache.c:284
-#, c-format
-msgid "Invalid numeric gid \"%s\"!"
-msgstr "Virheellinen numeerinen gid \"%s\"!"
+#: sysdeps/gnu/errlist.c:1421
+msgid "Key has expired"
+msgstr "Avain vanhentunut"
-#: nscd/grpcache.c:291
-#, c-format
-msgid "Haven't found \"%d\" in group cache!"
-msgstr "\"%d\" ei löytynyt ryhmävälimuistista!"
+#: sysdeps/gnu/errlist.c:1429
+#, fuzzy
+msgid "Key has been revoked"
+msgstr "Linkki on vahingoittunut"
-#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-#: nscd/hstcache.c:500
-#, c-format
-msgid "Haven't found \"%s\" in hosts cache!"
-msgstr "\"%s\" ei löytynyt isäntävälimuistista!"
+#: sysdeps/gnu/errlist.c:1437
+msgid "Key was rejected by service"
+msgstr "Palvelu hylkäsi avaimen"
-#: nscd/nscd.c:85
-msgid "Read configuration data from NAME"
-msgstr "Lue asetukset tiedostosta NIMI"
+#: sysdeps/gnu/errlist.c:1445
+msgid "Owner died"
+msgstr "Omistaja kuoli"
-#: nscd/nscd.c:87
-msgid "Do not fork and display messages on the current tty"
-msgstr "Älä haaraudu ja näytä viestit nykyisessä tty:ssä"
+#: sysdeps/gnu/errlist.c:1453
+msgid "State not recoverable"
+msgstr ""
-#: nscd/nscd.c:88
-msgid "NUMBER"
-msgstr "MÄÄRÄ"
+#: sysdeps/mach/_strerror.c:57
+msgid "Error in unknown error system: "
+msgstr "Virhe tuntemattomassa virhejärjestelmässä: "
-#: nscd/nscd.c:88
-msgid "Start NUMBER threads"
-msgstr "Käynnistä MÄÄRÄ säiettä"
+#: sysdeps/posix/gai_strerror-strs.h:1
+msgid "Address family for hostname not supported"
+msgstr "Konenimen osoiteperhe ei ole tuettu"
-#: nscd/nscd.c:89
-msgid "Shut the server down"
-msgstr "Sammuta palvelin"
+#: sysdeps/posix/gai_strerror-strs.h:2
+msgid "Temporary failure in name resolution"
+msgstr "Tilapäinen virhe nimenselvityksessä"
-#: nscd/nscd.c:90
-msgid "Print current configuration statistic"
-msgstr "Näytä nykyiset asetustilastot"
+#: sysdeps/posix/gai_strerror-strs.h:3
+msgid "Bad value for ai_flags"
+msgstr "Väärä arvo kentälle ai_flags"
-#: nscd/nscd.c:91
-msgid "TABLE"
-msgstr "TAULUKKO"
+#: sysdeps/posix/gai_strerror-strs.h:4
+msgid "Non-recoverable failure in name resolution"
+msgstr "Peruuttamaton virhe nimenselvityksessä"
-#: nscd/nscd.c:92
-msgid "Invalidate the specified cache"
-msgstr "Poista käytöstä määritelty välimuisti"
+#: sysdeps/posix/gai_strerror-strs.h:5
+msgid "ai_family not supported"
+msgstr "ai_family ei ole tuettu"
-#: nscd/nscd.c:93
-msgid "TABLE,yes"
-msgstr "TAULUKKO,kyllä"
+#: sysdeps/posix/gai_strerror-strs.h:6
+msgid "Memory allocation failure"
+msgstr "Muistinvarausvirhe"
-#: nscd/nscd.c:93
-msgid "Use separate cache for each user"
-msgstr "Käytä erillistä välimuistia jokaiselle käyttäjälle"
+#: sysdeps/posix/gai_strerror-strs.h:7
+msgid "No address associated with hostname"
+msgstr "Konenimeen ei liity osoitetta"
-#: nscd/nscd.c:98
-msgid "Name Service Cache Daemon."
-msgstr "Nimipalvelun välimuistidemoni."
+#: sysdeps/posix/gai_strerror-strs.h:8
+msgid "Name or service not known"
+msgstr "Nimeä tai palvelua ei tunneta"
-#: nscd/nscd.c:131
-msgid "already running"
-msgstr "on jo käynnissä"
+#: sysdeps/posix/gai_strerror-strs.h:9
+msgid "Servname not supported for ai_socktype"
+msgstr "â€Servname†ei ole tuettu â€ai_socktypeâ€:lle"
-#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
-msgid "Only root is allowed to use this option!"
-msgstr "Vain root voi käyttää tätä valitsinta!"
+#: sysdeps/posix/gai_strerror-strs.h:10
+msgid "ai_socktype not supported"
+msgstr "ai_socktype ei ole tuettu"
+
+#: sysdeps/posix/gai_strerror-strs.h:11
+msgid "System error"
+msgstr "Järjestelmävirhe"
+
+#: sysdeps/posix/gai_strerror-strs.h:12
+msgid "Processing request in progress"
+msgstr "Pyynnön käsittely käynnissä"
+
+#: sysdeps/posix/gai_strerror-strs.h:13
+msgid "Request canceled"
+msgstr "Pyyntö peruutettu"
+
+#: sysdeps/posix/gai_strerror-strs.h:14
+msgid "Request not canceled"
+msgstr "Pyyntöä ei peruutettu"
+
+#: sysdeps/posix/gai_strerror-strs.h:15
+msgid "All requests done"
+msgstr "Kaikki pyynnöt suoritettu"
+
+#: sysdeps/posix/gai_strerror-strs.h:16
+msgid "Interrupted by a signal"
+msgstr "Signaalin keskeyttämä"
-#: nscd/nscd_conf.c:83
+#: sysdeps/posix/gai_strerror-strs.h:17
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: sysdeps/unix/siglist.c:26
+msgid "Signal 0"
+msgstr "Signaali 0"
+
+#: sysdeps/unix/siglist.c:32
+msgid "IOT trap"
+msgstr "IOT-ansa"
+
+#: sysdeps/unix/sysv/linux/i386/readelflib.c:49
#, c-format
-msgid "Parse error: %s"
-msgstr "Jäsennysvirhe: %s"
+msgid "%s is for unknown machine %d.\n"
+msgstr "%s on tarkoitettu tuntemattomalle koneelle %d.\n"
-#: nscd/nscd_conf.c:166
+#: sysdeps/unix/sysv/linux/ia64/makecontext.c:63
#, c-format
-msgid "Could not create log file \"%s\""
-msgstr "Lokitiedostoa \"%s\" ei voitu luoda"
+msgid "makecontext: does not know how to handle more than 8 arguments\n"
+msgstr "makecontext: ei osaa käsitellä yli kahdeksaa argumenttia\n"
-#: nscd/nscd_conf.c:182
-msgid "Must specify user name for server-user option"
-msgstr "Palvelinkäyttäjä-valitsimelle on annettava käyttäjänimi"
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
-#: nscd/nscd_conf.c:187
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
-msgid "Unknown option: %s %s %s"
-msgstr "Tuntematon valitsin: %s %s %s"
+msgid "cannot open `%s'"
+msgstr "tiedostoa â€%s†ei voi avata"
-#: nscd/nscd_stat.c:87
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
-msgid "cannot write statistics: %s"
-msgstr "tilastoa ei voi kirjoittaa: %s"
+msgid "cannot read header from `%s'"
+msgstr "tiedoston â€%s†otsaketta ei voi lukea"
-#: nscd/nscd_stat.c:105
-msgid "nscd not running!\n"
-msgstr "nscd ei ole käynnissä!\n"
+#: timezone/zdump.c:210
+msgid "lacks alphabetic at start"
+msgstr ""
-#: nscd/nscd_stat.c:116
-msgid "write incomplete"
-msgstr "keskeneräinen kirjoitus"
+#: timezone/zdump.c:212
+msgid "has fewer than 3 alphabetics"
+msgstr ""
-#: nscd/nscd_stat.c:128
-msgid "cannot read statistics data"
-msgstr "tilastodataa ei voi lukea"
+#: timezone/zdump.c:214
+msgid "has more than 6 alphabetics"
+msgstr ""
-#: nscd/nscd_stat.c:131
+#: timezone/zdump.c:222
+msgid "differs from POSIX standard"
+msgstr ""
+
+#: timezone/zdump.c:228
#, c-format
-msgid ""
-"nscd configuration:\n"
-"\n"
-"%15d server debug level\n"
+msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
msgstr ""
-"nscd-asetukset:\n"
-"\n"
-"%15d palvelimen debug-taso\n"
-#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
-msgid " no"
-msgstr " ei"
+#: timezone/zdump.c:279
+#, c-format
+msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
+msgstr "%s: käyttö: %s [ --version ] [ -v ] [ -c [alkuvuosi,]loppuvuosi ] vyöhykenimi ...\n"
-#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
-msgid " yes"
-msgstr " kyllä"
+#: timezone/zdump.c:296
+#, fuzzy, c-format
+msgid "%s: wild -c argument %s\n"
+msgstr "%s: Liian monta argumenttia\n"
-#: nscd/nscd_stat.c:154
+#: timezone/zdump.c:387
+msgid "Error writing to standard output"
+msgstr "Virhe kirjoitettaessa vakiotulosteeseen"
+
+#: timezone/zdump.c:410
#, c-format
-msgid ""
-"\n"
-"%s cache:\n"
-"\n"
-"%15s cache is enabled\n"
-"%15Zd suggested size\n"
-"%15ld seconds time to live for positive entries\n"
-"%15ld seconds time to live for negative entries\n"
-"%15ld cache hits on positive entries\n"
-"%15ld cache hits on negative entries\n"
-"%15ld cache misses on positive entries\n"
-"%15ld cache misses on negative entries\n"
-"%15ld%% cache hit rate\n"
-"%15s check /etc/%s for changes\n"
+msgid "%s: use of -v on system with floating time_t other than float or double\n"
msgstr ""
-"\n"
-"%s-välimuisti:\n"
-"\n"
-"%15s välimuisti on käytössä\n"
-"%15Zd ehdotettu koko\n"
-"%15ld sekuntia elinaikaa positiivisille merkinnöille\n"
-"%15ld sekuntia elinaikaa negatiivisille merkinnöille\n"
-"%15ld välimuistiosumaa positiivisiin merkintöihin\n"
-"%15ld välimuistiosumaa negatiivisiin merkintöihin\n"
-"%15ld välimuistiharhayritystä positiivisiin merkintöihin\n"
-"%15ld välimuistiharhayritystä negatiivisiin merkintöihin\n"
-"%15ld%% välimuistiosuma-aste\n"
-"%15s tarkista muutokset tiedostosta /etc/%s\n"
-#: nscd/pwdcache.c:214
+#: timezone/zic.c:388
#, c-format
-msgid "Haven't found \"%s\" in password cache!"
-msgstr "\"%s\" ei löytynyt salasanavälimuistista!"
+msgid "%s: Memory exhausted: %s\n"
+msgstr "%s: Muisti lopussa: %s\n"
-#: nscd/pwdcache.c:280
+#: timezone/zic.c:434
#, c-format
-msgid "Invalid numeric uid \"%s\"!"
-msgstr "Virheellinen numeerinen uid \"%s\"!"
+msgid "\"%s\", line %d: %s"
+msgstr "â€%sâ€, rivi %d: %s"
-#: nscd/pwdcache.c:287
+#: timezone/zic.c:437
#, c-format
-msgid "Haven't found \"%d\" in password cache!"
-msgstr "\"%d\" ei löytynyt salasanavälimuistista!"
+msgid " (rule from \"%s\", line %d)"
+msgstr " (sääntö tiedostosta â€%sâ€, riviltä %d)"
-#: elf/../sysdeps/generic/dl-sysdep.c:357
-msgid "cannot create capability list"
-msgstr "kykylistaa ei voi luoda"
+#: timezone/zic.c:449
+msgid "warning: "
+msgstr "varoitus: "
-#: elf/../sysdeps/generic/readelflib.c:35
+#: timezone/zic.c:459
+#, fuzzy, c-format
+msgid ""
+"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
+"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
+msgstr ""
+"%s: käyttö: %s [ -s ] [ -v ] [ -l paik.aika ] [ -p posixsäännöt ] \\\n"
+"\t[ -d hakemisto ] [ -L karkaussekuntit ] [ -y yearistype ] [ tiedostonimi ... ]\n"
+
+#: timezone/zic.c:494
+msgid "wild compilation-time specification of zic_t"
+msgstr ""
+
+#: timezone/zic.c:511
#, c-format
-msgid "file %s is truncated\n"
-msgstr "tiedosto %s on typistetty\n"
+msgid "%s: More than one -d option specified\n"
+msgstr "%s: Annettu useampi kuin yksi -d -valitsin\n"
-#: elf/../sysdeps/generic/readelflib.c:67
+#: timezone/zic.c:521
#, c-format
-msgid "%s is a 32 bit ELF file.\n"
-msgstr "%s on 32-bittinen ELF-tiedosto.\n"
+msgid "%s: More than one -l option specified\n"
+msgstr "%s: Annettu useampi kuin yksi -l -valitsin\n"
-#: elf/../sysdeps/generic/readelflib.c:69
+#: timezone/zic.c:531
#, c-format
-msgid "%s is a 64 bit ELF file.\n"
-msgstr "%s on 64-bittinen ELF-tiedosto.\n"
+msgid "%s: More than one -p option specified\n"
+msgstr "%s: Annettu useampi kuin yksi -p -valitsin\n"
-#: elf/../sysdeps/generic/readelflib.c:71
+#: timezone/zic.c:541
#, c-format
-msgid "Unknown ELFCLASS in file %s.\n"
-msgstr "Tuntematon ELFCLASS tiedostossa %s.\n"
+msgid "%s: More than one -y option specified\n"
+msgstr "%s: Annettu useampi kuin yksi -y -valitsin\n"
-#: elf/../sysdeps/generic/readelflib.c:78
+#: timezone/zic.c:551
#, c-format
-msgid "%s is not a shared object file (Type: %d).\n"
-msgstr "%s ei ole jaettu objektitiedosto (Tyyppi: %d).\n"
+msgid "%s: More than one -L option specified\n"
+msgstr "%s: Annettu useampi kuin yksi -L -valitsin\n"
-#: elf/../sysdeps/generic/readelflib.c:109
-msgid "more than one dynamic segment\n"
-msgstr "useampi kuin yksi dynaaminen segmentti\n"
+#: timezone/zic.c:600
+msgid "link to link"
+msgstr "linkki linkkiin"
-#: elf/../sysdeps/unix/sysv/linux/i386/readelflib.c:49
+#: timezone/zic.c:665
+msgid "hard link failed, symbolic link used"
+msgstr "kova linkitys epäonnistui, käytetään symbolista linkkiä"
+
+#: timezone/zic.c:673
#, c-format
-msgid "%s is for unknown machine %d.\n"
-msgstr "%s on tarkoitettu tuntemattomalle koneelle %d.\n"
+msgid "%s: Can't link from %s to %s: %s\n"
+msgstr "%s: Linkitys %s -> %s ei onnistu: %s\n"
-#: elf/cache.c:69
-msgid "unknown"
-msgstr "tuntematon"
+#: timezone/zic.c:745 timezone/zic.c:747
+msgid "same rule name in multiple files"
+msgstr "sama säännön nimi useassa tiedostossa"
-#: elf/cache.c:105
-msgid "Unknown OS"
-msgstr "Tuntematon käyttöjärjestelmä"
+#: timezone/zic.c:788
+msgid "unruly zone"
+msgstr "vallaton vyöhyke"
-#: elf/cache.c:110
+#: timezone/zic.c:795
#, c-format
-msgid ", OS ABI: %s %d.%d.%d"
-msgstr ", OS ABI: %s %d.%d.%d"
+msgid "%s in ruleless zone"
+msgstr "%s säännöttömässä vyöhykkeessä"
-#: elf/cache.c:136 elf/ldconfig.c:1045
+#: timezone/zic.c:816
+msgid "standard input"
+msgstr "vakiosyöte"
+
+#: timezone/zic.c:821
#, c-format
-msgid "Can't open cache file %s\n"
-msgstr "Välimuistitiedostoa %s ei voi avata\n"
+msgid "%s: Can't open %s: %s\n"
+msgstr "%s: Tiedostoa %s ei voi avata: %s\n"
-#: elf/cache.c:148
-msgid "mmap of cache file failed.\n"
-msgstr "välimuistitiedoston muistikartoitus epäonnistui.\n"
+#: timezone/zic.c:832
+msgid "line too long"
+msgstr "liian pitkä rivi"
-#: elf/cache.c:152 elf/cache.c:162
-msgid "File is not a cache file.\n"
-msgstr "Tiedosto ei ole välimuistitiedosto.\n"
+#: timezone/zic.c:852
+msgid "input line of unknown type"
+msgstr "syöterivi tuntematonta tyyppiä"
-#: elf/cache.c:195 elf/cache.c:205
+#: timezone/zic.c:868
#, c-format
-msgid "%d libs found in cache `%s'\n"
-msgstr "Välimuistista \"%2$s\" löytyi %1$d kirjastoa\n"
+msgid "%s: Leap line in non leap seconds file %s\n"
+msgstr "%s: Leap-rivi tiedostossa %s, joka ei ole karkaussekuntitiedosto\n"
-#: elf/cache.c:392
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
-msgid "Can't remove old temporary cache file %s"
-msgstr "Vanhaa tilapäistä välimuistitiedostoa %s ei voi poistaa"
+msgid "%s: panic: Invalid l_value %d\n"
+msgstr "%s: paniikki: Virheellinen â€l_value†%d\n"
-#: elf/cache.c:399
+#: timezone/zic.c:883
#, c-format
-msgid "Can't create temporary cache file %s"
-msgstr "Tilapäistä välimuistitiedostoa %s ei voi luoda"
+msgid "%s: Error reading %s\n"
+msgstr "%s: Virhe luettaessa %s\n"
-#: elf/cache.c:407 elf/cache.c:416 elf/cache.c:420
-msgid "Writing of cache data failed"
-msgstr "Välimuistidatan kirjoitus epäonnistui"
+#: timezone/zic.c:890
+#, c-format
+msgid "%s: Error closing %s: %s\n"
+msgstr "%s: Virhe suljettaessa %s: %s\n"
-#: elf/cache.c:424
-msgid "Writing of cache data failed."
-msgstr "Välimuistidatan kirjoitus epäonnistui."
+#: timezone/zic.c:895
+msgid "expected continuation line not found"
+msgstr "odotettua jatkoriviä ei löytynyt"
-#: elf/cache.c:431
-#, c-format
-msgid "Changing access rights of %s to %#o failed"
-msgstr "Tiedoston %s oikeuksien muutos arvoon %#o epäonnistui"
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
+msgid "time overflow"
+msgstr "ajan ylivuoto"
-#: elf/cache.c:436
-#, c-format
-msgid "Renaming of %s to %s failed"
-msgstr "Uudelleennimeäminen %s -> %s epäonnistui"
+#: timezone/zic.c:943
+msgid "24:00 not handled by pre-1998 versions of zic"
+msgstr ""
-#: elf/dl-close.c:128
-msgid "shared object not open"
-msgstr "jaettu objekti ei ole avoin"
+#: timezone/zic.c:946
+msgid "values over 24 hours not handled by pre-2007 versions of zic"
+msgstr ""
-#: elf/dl-close.c:486 elf/dl-open.c:444
-msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
-msgstr "TLS-luontilaskurin ylivuoto! Lähetä raportti \"glibcbug\"-skriptillä."
+#: timezone/zic.c:959
+msgid "wrong number of fields on Rule line"
+msgstr "väärä määrä kenttiä Rule-rivillä"
-#: elf/dl-deps.c:111 elf/dl-open.c:183
-msgid "DST not allowed in SUID/SGID programs"
-msgstr "DST ei ole sallittu SUID/SGID-ohjelmissa"
+#: timezone/zic.c:963
+msgid "nameless rule"
+msgstr "nimetön sääntö"
-#: elf/dl-deps.c:124
-msgid "empty dynamics string token substitution"
-msgstr "tyhjän dynaamisen merkkijonon osan korvaus"
+#: timezone/zic.c:968
+msgid "invalid saved time"
+msgstr "virheellinen tallennettu aika"
+
+#: timezone/zic.c:989
+msgid "wrong number of fields on Zone line"
+msgstr "väärä määrä kenttiä Zone-rivillä"
-#: elf/dl-deps.c:130
+#: timezone/zic.c:995
#, c-format
-msgid "cannot load auxiliary `%s' because of empty dynamic string token substitution\n"
-msgstr "ylimääräistä \"%s\" ei voi ladata, koska dynaamisen merkkijonon osa korvattiin tyhjällä\n"
+msgid "\"Zone %s\" line and -l option are mutually exclusive"
+msgstr "â€Zone %sâ€-rivi ja -l -valitsin ovat toisensa poissulkevia"
-#: elf/dl-deps.c:461
-msgid "cannot allocate dependency list"
-msgstr "riippuvuuslistalle ei voi varata muistia"
+#: timezone/zic.c:1003
+#, c-format
+msgid "\"Zone %s\" line and -p option are mutually exclusive"
+msgstr "â€Zone %sâ€-rivi ja -p -valitsin ovat toisensa poissulkevia"
-#: elf/dl-deps.c:494 elf/dl-deps.c:549
-msgid "cannot allocate symbol search list"
-msgstr "symbolihakulistalle ei voi varata muistia"
+#: timezone/zic.c:1015
+#, c-format
+msgid "duplicate zone name %s (file \"%s\", line %d)"
+msgstr "kaksinkertainen vyöhykenimi %s (tiedosto â€%sâ€, rivi %d)"
-#: elf/dl-deps.c:534
-msgid "Filters not supported with LD_TRACE_PRELINKING"
-msgstr "Suodattimet eivät ole tuettuja LD_TRACE_RPELINKING:in kanssa"
+#: timezone/zic.c:1031
+msgid "wrong number of fields on Zone continuation line"
+msgstr "väärä määrä kenttiä Zone-jatkorivillä"
-#: elf/dl-error.c:75
-msgid "DYNAMIC LINKER BUG!!!"
-msgstr "DYNAAMISEN LINKITTÄJÄN OHJELMISTOVIRHE!!!"
+#: timezone/zic.c:1071
+msgid "invalid UTC offset"
+msgstr "virheellinen UTC-siirtymä"
-#: elf/dl-error.c:108
-msgid "error while loading shared libraries"
-msgstr "virhe ladattaessa jaettuja kirjastoja"
+#: timezone/zic.c:1074
+msgid "invalid abbreviation format"
+msgstr "virheellinen lyhennemuoto"
-#: elf/dl-load.c:339
-msgid "cannot allocate name record"
-msgstr "nimitietueelle ei voi varata muistia"
+#: timezone/zic.c:1103
+msgid "Zone continuation line end time is not after end time of previous line"
+msgstr "Vyöhykkeen jatkorivin loppuaika ei ole edellisen rivin loppuaikaa myöhäisempi"
-#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
-msgid "cannot create cache for search path"
-msgstr "hakupolulle ei voi luoda välimuistia"
+#: timezone/zic.c:1131
+msgid "wrong number of fields on Leap line"
+msgstr "väärä määrä kenttiä Leap-rivillä"
-#: elf/dl-load.c:543
-msgid "cannot create RUNPATH/RPATH copy"
-msgstr "RUNPATH/RPATH-kopiota ei voi luoda"
+#: timezone/zic.c:1140
+msgid "invalid leaping year"
+msgstr "virheellinen karkausvuosi"
-#: elf/dl-load.c:598
-msgid "cannot create search path array"
-msgstr "hakupolkutaulukkoa ei voi luoda"
+#: timezone/zic.c:1160 timezone/zic.c:1266
+msgid "invalid month name"
+msgstr "virheellinen kuukauden nimi"
-#: elf/dl-load.c:794
-msgid "cannot stat shared object"
-msgstr "jaetun objektin tilaa ei voi lukea"
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
+msgid "invalid day of month"
+msgstr "virheellinen kuukauden päivä"
-#: elf/dl-load.c:838
-msgid "cannot open zero fill device"
-msgstr "nollatäyttölaitetta ei voi avata"
+#: timezone/zic.c:1178
+msgid "time before zero"
+msgstr "aika ennen nollaa"
-#: elf/dl-load.c:847 elf/dl-load.c:1902
-msgid "cannot create shared object descriptor"
-msgstr "jaettua objektikahvaa ei voi luoda"
+#: timezone/zic.c:1182
+msgid "time too small"
+msgstr "aika on liian pieni"
-#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
-msgid "cannot read file data"
-msgstr "tiedoston dataa ei voi lukea"
+#: timezone/zic.c:1186
+msgid "time too large"
+msgstr "aika on liian suuri"
-#: elf/dl-load.c:906
-msgid "ELF load command alignment not page-aligned"
-msgstr "ELF-latauskomennon tasaus ei ole sivutasattu"
+#: timezone/zic.c:1190 timezone/zic.c:1295
+msgid "invalid time of day"
+msgstr "virheellinen kellonaika"
-#: elf/dl-load.c:913
-msgid "ELF load command address/offset not properly aligned"
-msgstr "ELF-latauskomennon osoite/siirtymä ei ole tasattu oikein"
+#: timezone/zic.c:1209
+msgid "illegal CORRECTION field on Leap line"
+msgstr "virheellinen CORRECTION-kenttä Leap-rivillä"
-#: elf/dl-load.c:988
-msgid "cannot allocate TLS data structures for initial thread"
-msgstr "alkusäikeelle ei voi varata TLS-tietorakenteita"
+#: timezone/zic.c:1214
+msgid "illegal Rolling/Stationary field on Leap line"
+msgstr "virheellinen Rolling/Stationary-kenttä Leap-rivillä"
-#: elf/dl-load.c:1012
-msgid "cannot handle TLS data"
-msgstr "TLS-dataa ei voi käsitellä"
+#: timezone/zic.c:1230
+msgid "wrong number of fields on Link line"
+msgstr "väärä määrä kenttiä Link-rivillä"
-#: elf/dl-load.c:1047
-msgid "failed to map segment from shared object"
-msgstr "segmentin kartoitus jaetusta objektista epäonnistui"
+#: timezone/zic.c:1234
+msgid "blank FROM field on Link line"
+msgstr "tyhjä FROM-kenttä Link-rivillä"
-#: elf/dl-load.c:1071
-msgid "cannot dynamically load executable"
-msgstr "käynnistettävää tiedostoa ei voi ladata dynaamisesti"
+#: timezone/zic.c:1238
+msgid "blank TO field on Link line"
+msgstr "tyhjä TO-kenttä Link-rivillä"
-#: elf/dl-load.c:1132
-msgid "cannot change memory protections"
-msgstr "muistin suojausta ei voi muuttaa"
+#: timezone/zic.c:1316
+msgid "invalid starting year"
+msgstr "virheellinen aloitusvuosi"
-#: elf/dl-load.c:1151
-msgid "cannot map zero-fill pages"
-msgstr "nollatäytteisiä sivuja ei voi kartoittaa"
+#: timezone/zic.c:1338
+msgid "invalid ending year"
+msgstr "virheellinen päättymisvuosi"
-#: elf/dl-load.c:1169
-msgid "cannot allocate memory for program header"
-msgstr "ohjelman otsakkeelle ei voi varata muistia"
+#: timezone/zic.c:1342
+msgid "starting year greater than ending year"
+msgstr "aloitusvuosi suurempi kuin lopetusvuosi"
-#: elf/dl-load.c:1200
-msgid "object file has no dynamic section"
-msgstr "objektitiedostossa ei ole dynaamista osaa"
+#: timezone/zic.c:1349
+msgid "typed single year"
+msgstr "yksittäinen vuosi annettu"
-#: elf/dl-load.c:1240
-msgid "shared object cannot be dlopen()ed"
-msgstr "jaettua objektia ei voi avata funktiolla dlopen()"
+#: timezone/zic.c:1384
+msgid "invalid weekday name"
+msgstr "virheellinen viikonpäivän nimi"
-#: elf/dl-load.c:1263
-msgid "cannot create searchlist"
-msgstr "hakulistaa ei voi luoda"
+#: timezone/zic.c:1562
+#, c-format
+msgid "%s: Can't remove %s: %s\n"
+msgstr "%s: Tiedostoa %s ei voi poistaa: %s\n"
-#: elf/dl-load.c:1398
-msgid "file too short"
-msgstr "tiedosto on liian lyhyt"
+#: timezone/zic.c:1572
+#, c-format
+msgid "%s: Can't create %s: %s\n"
+msgstr "%s: Tiedostoa %s ei voi luoda: %s\n"
-#: elf/dl-load.c:1421
-msgid "invalid ELF header"
-msgstr "virheellinen ELF-otsikko"
+#: timezone/zic.c:1722
+#, c-format
+msgid "%s: Error writing %s\n"
+msgstr "%s: Virhe kirjoitettaessa %s\n"
-#: elf/dl-load.c:1430
-msgid "ELF file data encoding not big-endian"
-msgstr "ELF-tiedoston tavujärjestys ei ole \"big-endian\""
+#: timezone/zic.c:2015
+msgid "no POSIX environment variable for zone"
+msgstr ""
-#: elf/dl-load.c:1432
-msgid "ELF file data encoding not little-endian"
-msgstr "ELF-tiedoston tavujärjestys ei ole \"little-endian\""
+#: timezone/zic.c:2172
+msgid "can't determine time zone abbreviation to use just after until time"
+msgstr "ennen â€untilâ€-aikaa käytettävää aikavyöhykelyhennettä ei voi määrittää"
-#: elf/dl-load.c:1436
-msgid "ELF file version ident does not match current one"
-msgstr "ELF-tiedoston versiotunnus ei vastaa nykyistä"
+#: timezone/zic.c:2218
+msgid "too many transitions?!"
+msgstr "liian monta siirtymää?!"
-#: elf/dl-load.c:1440
-msgid "ELF file OS ABI invalid"
-msgstr "ELF-tiedoston OS ABI on virheellinen"
+#: timezone/zic.c:2237
+msgid "internal error - addtype called with bad isdst"
+msgstr "sisäinen virhe - addtype kutsuttu väärällä isdst-arvolla"
-#: elf/dl-load.c:1442
-msgid "ELF file ABI version invalid"
-msgstr "ELF-tiedoston ABI-versio virheellinen"
+#: timezone/zic.c:2241
+msgid "internal error - addtype called with bad ttisstd"
+msgstr "sisäinen virhe - addtype kutsuttu väärällä ttisstd-arvolla"
-#: elf/dl-load.c:1445
-msgid "internal error"
-msgstr "sisäinen virhe"
+#: timezone/zic.c:2245
+msgid "internal error - addtype called with bad ttisgmt"
+msgstr "sisäinen virhe - addtype kutsuttu väärällä ttisgmt-arvolla"
-#: elf/dl-load.c:1452
-msgid "ELF file version does not match current one"
-msgstr "ELF-tiedoston versio ei vastaa nykyistä"
+#: timezone/zic.c:2264
+msgid "too many local time types"
+msgstr "liian monta paikallisen ajan tyyppiä"
-#: elf/dl-load.c:1460
-msgid "ELF file's phentsize not the expected size"
-msgstr "ELF-tiedoston phent-koko ei ole odotetun kokoinen"
+#: timezone/zic.c:2268
+#, fuzzy
+msgid "UTC offset out of range"
+msgstr "Kanavan numero on sallitun välin ulkopuolella"
-#: elf/dl-load.c:1466
-msgid "only ET_DYN and ET_EXEC can be loaded"
-msgstr "vain ET_DYN ja ET_EXEC voidaan ladata"
+#: timezone/zic.c:2296
+msgid "too many leap seconds"
+msgstr "liian monta karkaussekuntia"
-#: elf/dl-load.c:1917
-msgid "cannot open shared object file"
-msgstr "jaettua objektitiedostoa ei voi avata"
+#: timezone/zic.c:2302
+msgid "repeated leap second moment"
+msgstr "toistunut karkaussekuntihetki"
-#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
-msgid "relocation error"
-msgstr "uudelleensijoitusvirhe"
+#: timezone/zic.c:2354
+msgid "Wild result from command execution"
+msgstr "Villi tulos komennon suorittamisesta"
-#: elf/dl-open.c:111
-msgid "cannot extend global scope"
-msgstr "globaalia aluetta ei voi laajentaa"
+#: timezone/zic.c:2355
+#, c-format
+msgid "%s: command was '%s', result was %d\n"
+msgstr "%s: komento oli â€%sâ€, tulos oli %d\n"
-#: elf/dl-open.c:214
-msgid "empty dynamic string token substitution"
-msgstr "tyhjän dynaamisen merkkijonon osan korvaus"
+#: timezone/zic.c:2453
+msgid "Odd number of quotation marks"
+msgstr "Pariton määrä lainausmerkkejä"
-#: elf/dl-open.c:351 elf/dl-open.c:362
-msgid "cannot create scope list"
-msgstr "aluelistaa ei voi luoda"
+#: timezone/zic.c:2542
+msgid "use of 2/29 in non leap-year"
+msgstr "helmikuun 29. päivää käytetty muussa kuin karkausvuodessa"
-#: elf/dl-open.c:424
-msgid "cannot create TLS data structures"
-msgstr "TLS-tietorakenteita ei voi luoda"
+#: timezone/zic.c:2577
+msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
+msgstr ""
-#: elf/dl-open.c:486
-msgid "invalid mode for dlopen()"
-msgstr "virheellinen tila funktiolle dlopen()"
+#: timezone/zic.c:2609
+msgid "time zone abbreviation lacks alphabetic at start"
+msgstr ""
+
+#: timezone/zic.c:2611
+msgid "time zone abbreviation has more than 3 alphabetics"
+msgstr ""
-#: elf/dl-reloc.c:58
-msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-msgstr "jaettua objektia ei voi avata funktiolla dlopen(): staattinen TLS-muisti on liian pieni"
+#: timezone/zic.c:2613
+msgid "time zone abbreviation has too many alphabetics"
+msgstr ""
-#: elf/dl-reloc.c:118
-msgid "cannot make segment writable for relocation"
-msgstr "segmenttiä ei voi muuttaa kirjoitettavaksi uudelleensijoitusta varten"
+#: timezone/zic.c:2623
+msgid "time zone abbreviation differs from POSIX standard"
+msgstr ""
-#: elf/dl-reloc.c:219
+#: timezone/zic.c:2635
+msgid "too many, or too long, time zone abbreviations"
+msgstr "liian monta tai liian pitkä aikavyöhykelyhenne"
+
+#: timezone/zic.c:2676
#, c-format
-msgid "%s: profiler found no PLTREL in object %s\n"
-msgstr "%s: profiloija ei löytänyt PLTREL-kenttää objektista %s\n"
+msgid "%s: Can't create directory %s: %s\n"
+msgstr "%s: Hakemistoa %s ei voi luoda: %s\n"
-#: elf/dl-reloc.c:231
+#: timezone/zic.c:2698
#, c-format
-msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
-msgstr "%s: profiloijan muisti loppui varjostettaessa objektin %s PLTREL-kenttää\n"
+msgid "%s: %d did not sign extend correctly\n"
+msgstr "%s: %d:n etumerkki ei säilynyt laajennuksessa\n"
-#: elf/dl-reloc.c:246
-msgid "cannot restore segment prot after reloc"
-msgstr "segmentin suojausta ei voi palauttaa uudelleensijoituksen jälkeen"
+#~ msgid "cannot create searchlist"
+#~ msgstr "hakulistaa ei voi luoda"
-#: elf/dl-sym.c:74 elf/dl-sym.c:145
-msgid "RTLD_NEXT used in code not dynamically loaded"
-msgstr "RTLD_NEXT:iä käytetty koodissa, jota ei ole ladattu dynaamisesti"
+#~ msgid ""
+#~ "Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "Lue ja näytä jaettujen objektien profilointitietoja.\vOhjeet ohjelmistovioista ilmoittamiseen ovat osoitteessa\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: elf/dl-version.c:302
-msgid "cannot allocate version reference table"
-msgstr "versioviitetaulukolle ei voi varata muistia"
+#~ msgid "%s: more than one 'else'"
+#~ msgstr "%s: useampi kuin yksi â€elseâ€"
-#: elf/ldconfig.c:122
-msgid "Print cache"
-msgstr "Näytä välimuisti"
+#~ msgid "%s: stopping date is invalid in string %Zd in `era' field"
+#~ msgstr "%s: lopetuspäivä on virheellinen merkkijonossa %Zd kentässä â€eraâ€"
-#: elf/ldconfig.c:123
-msgid "Generate verbose messages"
-msgstr "Luo monisanaiset viestit"
+#~ msgid ""
+#~ "Get locale-specific information.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "Hae maa-asetustostietoja.\vOhjeet ohjelmistovioista ilmoittamiseen ovat osoitteessa\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: elf/ldconfig.c:124
-msgid "Don't build cache"
-msgstr "Älä luo välimuistia"
+#~ msgid ""
+#~ "Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "Hae merkintöjä hallinnollisesta tietokannasta.\vOhjeet ohjelmistovioista ilmoittamiseen ovat osoitteessa\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: elf/ldconfig.c:125
-msgid "Don't generate links"
-msgstr "Älä luo linkkejä"
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: virheellinen valitsin -- %c\n"
-#: elf/ldconfig.c:126
-msgid "Change to and use ROOT as root directory"
-msgstr "Siirry ja käytä ROOTia juurihakemistona"
+#~ msgid "authunix_create: out of memory\n"
+#~ msgstr "authunix_create: muisti lopussa\n"
-#: elf/ldconfig.c:127
-msgid "Use CACHE as cache file"
-msgstr "Käytä CACHEa välimuistitiedostona"
+#~ msgid "clnttcp_create: out of memory\n"
+#~ msgstr "clnttcp_create: muisti lopussa\n"
-#: elf/ldconfig.c:128
-msgid "Use CONF as configuration file"
-msgstr "Käytä CONFia asetustiedostona"
+#~ msgid "clntudp_create: out of memory\n"
+#~ msgstr "clntudp_create: muisti lopussa\n"
-#: elf/ldconfig.c:129
-msgid "Only process directories specified on the command line. Don't build cache."
-msgstr "Käsittele vain komentorivillä annetut hakemistot. Älä luo välimuistia."
+#~ msgid "clntunix_create: out of memory\n"
+#~ msgstr "clntunix_create: muisti lopussa\n"
-#: elf/ldconfig.c:130
-msgid "Manually link individual libraries."
-msgstr "Linkitä yksittäisiä kirjastoja käsin."
+#~ msgid "svctcp_create: out of memory\n"
+#~ msgstr "svctcp_create: muisti lopussa\n"
-#: elf/ldconfig.c:131
-msgid "Format to use: new, old or compat (default)"
-msgstr "Käytettävä muoto: \"new\", \"old\" tai \"compat\" (oletus)"
+#~ msgid "svc_tcp: makefd_xprt: out of memory\n"
+#~ msgstr "svc_tcp: makefd_xprt: muisti lopussa\n"
-#: elf/ldconfig.c:136
-msgid "Configure Dynamic Linker Run Time Bindings."
-msgstr "Säädä dynaamisen linkittäjän ajonaikaiset sidonnat."
+#~ msgid "svcudp_create: out of memory\n"
+#~ msgstr "svcupd_create: muisti lopussa\n"
-#: elf/ldconfig.c:294
-#, c-format
-msgid "Path `%s' given more than once"
-msgstr "Polku \"%s\" on annettu useammin kuin kerran"
+#~ msgid "svcunix_create: out of memory\n"
+#~ msgstr "svcunix_create: muisti lopussa\n"
-#: elf/ldconfig.c:338
-#, c-format
-msgid "%s is not a known library type"
-msgstr "%s ei ole tunnettu kirjastotyyppi"
+#~ msgid "svc_unix: makefd_xprt: out of memory\n"
+#~ msgstr "svc_unix: makefd_xprt: muisti lopussa\n"
-#: elf/ldconfig.c:356
-#, c-format
-msgid "Can't stat %s"
-msgstr "Tiedoston %s tilaa ei voi lukea"
+#~ msgid "xdr_bytes: out of memory\n"
+#~ msgstr "xdr_bytes: muisti lopussa\n"
-#: elf/ldconfig.c:426
-#, c-format
-msgid "Can't stat %s\n"
-msgstr "Tiedoston %s tilaa ei voi lukea\n"
+#~ msgid "xdr_string: out of memory\n"
+#~ msgstr "xdr_string: muisti lopussa\n"
-#: elf/ldconfig.c:436
-#, c-format
-msgid "%s is not a symbolic link\n"
-msgstr "%s ei ole symbolinen linkki\n"
+#~ msgid "xdr_array: out of memory\n"
+#~ msgstr "xdr_array: muisti lopussa\n"
-#: elf/ldconfig.c:455
-#, c-format
-msgid "Can't unlink %s"
-msgstr "Tiedoston %s linkitystä ei voi poistaa"
+#~ msgid "xdrrec_create: out of memory\n"
+#~ msgstr "xdrrec_create: muisti lopussa\n"
-#: elf/ldconfig.c:461
-#, c-format
-msgid "Can't link %s to %s"
-msgstr "Linkitys %s -> %s ei onnistu"
+#~ msgid "xdr_reference: out of memory\n"
+#~ msgstr "xdr_references: muisti lopussa\n"
-#: elf/ldconfig.c:467
-msgid " (changed)\n"
-msgstr " (muutettu)\n"
+#~ msgid "Can't remove old temporary cache file %s"
+#~ msgstr "Vanhaa tilapäistä välimuistitiedostoa %s ei voi poistaa"
-#: elf/ldconfig.c:469
-msgid " (SKIPPED)\n"
-msgstr " (OHITETTU)\n"
+#~ msgid "Writing of cache data failed."
+#~ msgstr "Välimuistidatan kirjoitus epäonnistui."
-#: elf/ldconfig.c:524
-#, c-format
-msgid "Can't find %s"
-msgstr "%s ei löydy"
+#~ msgid "empty dynamics string token substitution"
+#~ msgstr "tyhjän dynaamisen merkkijonon osan korvaus"
-#: elf/ldconfig.c:540
-#, c-format
-msgid "Can't lstat %s"
-msgstr "Tiedoston %s tilaa ei voi lukea"
+#~ msgid "Can't lstat %s"
+#~ msgstr "Tiedoston %s tilaa ei voi lukea"
-#: elf/ldconfig.c:547
-#, c-format
-msgid "Ignored file %s since it is not a regular file."
-msgstr "Tiedostoa %s ei huomioitu, koska se ei ole tavallinen tiedosto."
+#~ msgid "<%s> and <%s> are illegal names for range"
+#~ msgstr "<%s> ja <%s> ovat virheellisiä nimiä välille"
-#: elf/ldconfig.c:555
-#, c-format
-msgid "No link created since soname could not be found for %s"
-msgstr "Linkkiä ei luotu, koska tiedostolle %s ei löytynyt so-nimeä"
+#~ msgid "upper limit in range is not higher then lower limit"
+#~ msgstr "välin yläraja ei ole suurempi kuin alaraja"
-#: elf/ldconfig.c:646
-#, c-format
-msgid "Can't open directory %s"
-msgstr "Hakemistoa %s ei voi avata"
+#~ msgid "%s: character `%s' not defined in charmap while needed as default value"
+#~ msgstr "%s: oletusarvona tarvittavaa merkkiä â€%s†ei ole määritelty merkistökartassa"
-#: elf/ldconfig.c:701 elf/ldconfig.c:748
-#, c-format
-msgid "Cannot lstat %s"
-msgstr "Tiedoston %s tilaa ei voi lukea"
+#~ msgid "character `%s' not defined while needed as default value"
+#~ msgstr "oletusarvona tarvittavaa merkkiä â€%s†ei ole määritelty"
-#: elf/ldconfig.c:713
-#, c-format
-msgid "Cannot stat %s"
-msgstr "Tiedoston %s tilaa ei voi lukea"
+#~ msgid "%s: value for field `%s' must not be the empty string"
+#~ msgstr "%s: kentän â€%s†arvo ei saa olla tyhjä merkkijono"
-#: elf/ldconfig.c:770 elf/readlib.c:93
-#, c-format
-msgid "Input file %s not found.\n"
-msgstr "Syötetiedostoa %s ei löydy.\n"
+#~ msgid "%s: values of field `%s' must not be larger than %d"
+#~ msgstr "%s: kentän â€%s†arvot eivät saa olla suurempia kuin %d"
-#: elf/ldconfig.c:804
-#, c-format
-msgid "libc5 library %s in wrong directory"
-msgstr "libc5-kirjasto %s on väärässä hakemistossa"
+#~ msgid "starting year too low to be represented"
+#~ msgstr "aloitusvuosi liian pieni esitettäväksi"
-#: elf/ldconfig.c:807
-#, c-format
-msgid "libc6 library %s in wrong directory"
-msgstr "libc6-kirjasto %s on väärässä hakemistossa"
+#~ msgid "starting year too high to be represented"
+#~ msgstr "aloitusvuosi liian suuri esitettäväksi"
-#: elf/ldconfig.c:810
-#, c-format
-msgid "libc4 library %s in wrong directory"
-msgstr "libc4-kirjasto %s on väärässä hakemistossa"
+#~ msgid "ending year too low to be represented"
+#~ msgstr "päättymisvuosi liian pieni esitettäväksi"
-#: elf/ldconfig.c:837
-#, c-format
-msgid "libraries %s and %s in directory %s have same soname but different type."
-msgstr "kirjastoilla %s ja %s hakemistossa %s on sama so-nimi, mutta eri tyypit."
+#~ msgid "ending year too high to be represented"
+#~ msgstr "päättymisvuosi liian suuri esitettäväksi"
-#: elf/ldconfig.c:940
-#, c-format
-msgid "Can't open configuration file %s"
-msgstr "Asetustiedostoa %s ei voi avata"
+#~ msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
+#~ msgstr ""
+#~ "Ilmoita ohjelmistovirheistä â€glibcbugâ€-skriptillä (englanniksi) osoitteeseen <bugs@gnu.org>.\n"
+#~ "Suomennoksen virheistä voit ilmoittaa listalle <translation-team-fi@lists.sourceforge.net>.\n"
-#: elf/ldconfig.c:1024
-msgid "Can't chdir to /"
-msgstr "Juurihakemistoon / siirtyminen ei onnistu"
+# Katso lähdekoodia ennen kuin valitat tästä.
+#~ msgid "cheese"
+#~ msgstr "leipä"
-#: elf/ldconfig.c:1066
-#, c-format
-msgid "Can't open cache file directory %s\n"
-msgstr "Välimuistihakemistoa %s ei voi avata\n"
+#~ msgid "First string for testing."
+#~ msgstr "Ensimmäinen merkkijono testausta varten."
-#: elf/readlib.c:99
-#, c-format
-msgid "Cannot fstat file %s.\n"
-msgstr "Tiedoston %s tilaa ei voi lukea.\n"
+#~ msgid "Another string for testing."
+#~ msgstr "Toinen merkkijono testausta varten"
-#: elf/readlib.c:109
-#, c-format
-msgid "File %s is too small, not checked."
-msgstr "Tiedosto %s on liian pieni, ei tarkistettu."
+#~ msgid "Error 0"
+#~ msgstr "Virhe 0"
-#: elf/readlib.c:118
-#, c-format
-msgid "Cannot mmap file %s.\n"
-msgstr "Tiedoston %s muistikartoitus epäonnistui.\n"
+#~ msgid "I/O error"
+#~ msgstr "I/O-virhe"
-#: elf/readlib.c:158
-#, c-format
-msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
-msgstr "%s ei ole ELF-tiedosto - sen alussa on väärät taikatavut.\n"
+#~ msgid "Arg list too long"
+#~ msgstr "Argumenttilista on liian pitkä"
-#: elf/sprof.c:72
-msgid "Output selection:"
-msgstr "Tulostevalinnat:"
+#~ msgid "Bad file number"
+#~ msgstr "Virheellinen tiedostonumero"
-#: elf/sprof.c:74
-msgid "print list of count paths and their number of use"
-msgstr "näytä lista lasketuista poluista ja niiden käyttökertojen määrä"
+#~ msgid "Not enough space"
+#~ msgstr "Ei ole riittävästi tilaa"
-#: elf/sprof.c:76
-msgid "generate flat profile with counts and ticks"
-msgstr "luo kutsukerrat ja -ajat sisältävä \"litteä\" profiili"
+#~ msgid "Device busy"
+#~ msgstr "Laite on varattu"
-#: elf/sprof.c:77
-msgid "generate call graph"
-msgstr "luo kutsukaavio"
+#~ msgid "Cross-device link"
+#~ msgstr "Laitteidenvälinen linkki"
-#: elf/sprof.c:84
-msgid "Read and display shared object profiling data"
-msgstr "Lue ja näytä jaetun objektin profilointidata"
+#~ msgid "File table overflow"
+#~ msgstr "Tiedostotaulukon ylivuoto"
-#: elf/sprof.c:87
-msgid "SHOBJ [PROFDATA]"
-msgstr "JAETTU_OBJEKTI [PROFILOINTIDATA]"
+#~ msgid "Argument out of domain"
+#~ msgstr "Argumentti ei kuulu määrittelyjoukkoon"
-#: elf/sprof.c:398
-#, c-format
-msgid "failed to load shared object `%s'"
-msgstr "jaettua objektia \"%s\" ei voitu ladata"
+#~ msgid "Result too large"
+#~ msgstr "Liian suuri tulos"
-#: elf/sprof.c:407
-msgid "cannot create internal descriptors"
-msgstr "sisäisiä kahvoja ei voi luoda"
+#~ msgid "Deadlock situation detected/avoided"
+#~ msgstr "Umpikujaan johtava tilanne havaittu ja vältetty"
-#: elf/sprof.c:526
-#, c-format
-msgid "Reopening shared object `%s' failed"
-msgstr "Jaetun objektin \"%s\" uudelleenavaus epäonnistui"
+#~ msgid "No record locks available"
+#~ msgstr "Tietuelukkoja ei ole käytettävissä"
-#: elf/sprof.c:534
-msgid "mapping of section headers failed"
-msgstr "osaotsikkojen kartoitus epäonnistui"
+#~ msgid "Disc quota exceeded"
+#~ msgstr "Levykiintiö ylittynyt"
-#: elf/sprof.c:544
-msgid "mapping of section header string table failed"
-msgstr "osaotsikkojen taulukon kartoitus epäonnistui"
+#~ msgid "Bad exchange descriptor"
+#~ msgstr "Virheellinen vaihtokahva"
-#: elf/sprof.c:564
-#, c-format
-msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
-msgstr "*** Tiedosto \"%s\" on karsittu: tarkka analyysi ei ole mahdollinen\n"
+#~ msgid "Bad request descriptor"
+#~ msgstr "Virheellinen pyyntökahva"
-#: elf/sprof.c:594
-msgid "failed to load symbol data"
-msgstr "symbolitietojen lataus ei onnistunut"
+#~ msgid "Message tables full"
+#~ msgstr "Viestitaulukot täysiä"
-#: elf/sprof.c:664
-msgid "cannot load profiling data"
-msgstr "profilointidataa ei voi ladata"
+#~ msgid "Anode table overflow"
+#~ msgstr "Anode-taulukon ylivuoto"
-#: elf/sprof.c:673
-msgid "while stat'ing profiling data file"
-msgstr "luettaessa profilointidatatiedoston tilaa"
+#~ msgid "Bad request code"
+#~ msgstr "Virheellinen pyyntökoodi"
-#: elf/sprof.c:681
-#, c-format
-msgid "profiling data file `%s' does not match shared object `%s'"
-msgstr "profilointidatatiedosto \"%s\" ei vastaa jaettua objektia \"%s\""
+#~ msgid "File locking deadlock"
+#~ msgstr "Umpikuja tiedoston lukinnassa"
-#: elf/sprof.c:692
-msgid "failed to mmap the profiling data file"
-msgstr "profilointidatatiedoston muistikartoitus epäonnistui"
+#~ msgid "Error 58"
+#~ msgstr "Virhe 58"
-#: elf/sprof.c:700
-msgid "error while closing the profiling data file"
-msgstr "virhe suljettaessa profilointidatatiedostoa"
+#~ msgid "Error 59"
+#~ msgstr "Virhe 59"
-#: elf/sprof.c:709 elf/sprof.c:779
-msgid "cannot create internal descriptor"
-msgstr "sisäistä kahvaa ei voi ladata"
+#~ msgid "Not a stream device"
+#~ msgstr "Ei ole virtalaite"
-#: elf/sprof.c:755
-#, c-format
-msgid "`%s' is no correct profile data file for `%s'"
-msgstr "\"%s\" ei ole oikea profiilidatatiedosto \"%s\":lle"
+#~ msgid "Out of stream resources"
+#~ msgstr "Virtaresurssit lopussa"
-#: elf/sprof.c:936 elf/sprof.c:988
-msgid "cannot allocate symbol data"
-msgstr "symbolidatalle ei voi varata muistia"
+#~ msgid "Error 72"
+#~ msgstr "Virhe 72"
+
+#~ msgid "Error 73"
+#~ msgstr "Virhe 73"
+
+#~ msgid "Error 75"
+#~ msgstr "Virhe 75"
+
+#~ msgid "Error 76"
+#~ msgstr "Virhe 76"
+
+#~ msgid "Not a data message"
+#~ msgstr "Ei ole dataviesti"
+
+#~ msgid "Attempting to link in more shared libraries than system limit"
+#~ msgstr "Yritetään linkittää järjestelmärajaa enemmän jaettuja kirjastoja"
+
+#~ msgid "Can not exec a shared library directly"
+#~ msgstr "Jaettua kirjastoa suoraan ei voi käynnistää suoraan"
+
+#~ msgid "Illegal byte sequence"
+#~ msgstr "Virheellinen tavusarja"
+
+#~ msgid "Operation not applicable"
+#~ msgstr "Toiminto ei ole soveltuva"
+
+#~ msgid "Number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"
+#~ msgstr "Symbolisten linkkien määrä ylittää arvon MAXSYMLINKS"
+
+#~ msgid "Error 91"
+#~ msgstr "Virhe 91"
+
+#~ msgid "Error 92"
+#~ msgstr "Virhe 92"
+
+#~ msgid "Option not supported by protocol"
+#~ msgstr "Protokolla ei tue valitsinta"
+
+#~ msgid "Error 100"
+#~ msgstr "Virhe 100"
+
+#~ msgid "Error 101"
+#~ msgstr "Virhe 101"
+
+#~ msgid "Error 102"
+#~ msgstr "Virhe 102"
+
+#~ msgid "Error 103"
+#~ msgstr "Virhe 103"
+
+#~ msgid "Error 104"
+#~ msgstr "Virhe 104"
+
+#~ msgid "Error 105"
+#~ msgstr "Virhe 105"
+
+#~ msgid "Error 106"
+#~ msgstr "Virhe 106"
+
+#~ msgid "Error 107"
+#~ msgstr "Virhe 107"
+
+#~ msgid "Error 108"
+#~ msgstr "Virhe 108"
+
+#~ msgid "Error 109"
+#~ msgstr "Virhe 109"
+
+#~ msgid "Error 110"
+#~ msgstr "Virhe 110"
+
+#~ msgid "Error 111"
+#~ msgstr "Virhe 111"
+
+#~ msgid "Error 112"
+#~ msgstr "Virhe 112"
+
+#~ msgid "Error 113"
+#~ msgstr "Virhe 113"
+
+#~ msgid "Error 114"
+#~ msgstr "Virhe 114"
+
+#~ msgid "Error 115"
+#~ msgstr "Virhe 115"
+
+#~ msgid "Error 116"
+#~ msgstr "Virhe 116"
+
+#~ msgid "Error 117"
+#~ msgstr "Virhe 117"
+
+#~ msgid "Error 118"
+#~ msgstr "Virhe 118"
+
+#~ msgid "Error 119"
+#~ msgstr "Virhe 119"
+
+#~ msgid "Operation not supported on transport endpoint"
+#~ msgstr "Siirron vastapää ei tue toimintoa"
+
+#~ msgid "Address family not supported by protocol family"
+#~ msgstr "Protokollaperhe ei tue osoiteperhettä"
+
+#~ msgid "Network dropped connection because of reset"
+#~ msgstr "Verkko sulki yhteyden vastapään takia"
+
+#~ msgid "Error 136"
+#~ msgstr "Virhe 136"
+
+#~ msgid "Not available"
+#~ msgstr "Ei ole käytettävissä"
+
+#~ msgid "Is a name file"
+#~ msgstr "On nimitiedosto"
+
+#~ msgid "Reserved for future use"
+#~ msgstr "Varattu tulevaan käyttöön"
+
+#~ msgid "Error 142"
+#~ msgstr "Virhe 142"
+
+#~ msgid "Cannot send after socket shutdown"
+#~ msgstr "Pistokkeen sulkemisen jälkeen ei voi lähettää"
+
+#~ msgid "%s: Can't unlink %s: %s\n"
+#~ msgstr "%s: Tiedoston %s linkitystä ei voi poistaa: %s\n"
+
+#~ msgid "no day in month matches rule"
+#~ msgstr "mikään kuukauden päivä ei vastaa sääntöä"
+
+#~ msgid "%s: line %d: expected service, found `%s'\n"
+#~ msgstr "%s: rivi %d: odotettiin palvelua, löytyi â€%sâ€\n"
+
+#~ msgid "%s: line %d: cannot specify more than %d services"
+#~ msgstr "%s: rivi %d: voidaan määritellä korkeintaan %d palvelua"
+
+#~ msgid "%s: line %d: list delimiter not followed by keyword"
+#~ msgstr "%s: rivi %d: listarajoittimen jälkeen ei ole avainsanaa"
+
+#~ msgid "get_myaddress: ioctl (get interface configuration)"
+#~ msgstr "get_myaddress: ioctl (hae rajapinnan säädöt)"
+
+#~ msgid "__get_myaddress: ioctl (get interface configuration)"
+#~ msgstr "__get_myaddress: ioctl (hae rajapinnan säädöt)"
+
+#~ msgid "broadcast: ioctl (get interface configuration)"
+#~ msgstr "broadcast: ioctl (hae rajapinnan säädöt)"
+
+#~ msgid "broadcast: ioctl (get interface flags)"
+#~ msgstr "broadcast: ioctl (hae rajapinnan liput)"
+
+#~ msgid "YPBINDPROC_DOMAIN: %s\n"
+#~ msgstr "YPBINDPROC_DOMAIN: %s\n"
+
+#~ msgid "while allocating hash table entry"
+#~ msgstr "varattaessa tilaa tiivistetaulukkomerkinnälle"
+
+#~ msgid "Cannot run nscd in secure mode as unprivileged user"
+#~ msgstr "Ohjelmaa nscd ei voi ajaa turvallisessa tilassa normaalin käyttäjän oikeuksilla"
+
+#~ msgid "while allocating cache: %s"
+#~ msgstr "varattaessa välimuistia: %s"
+
+#~ msgid "while accepting connection: %s"
+#~ msgstr "hyväksyttäessä yhteyksiä: %s"
+
+#~ msgid "while allocating key copy"
+#~ msgstr "varattaessa tilaa avainkopiolle"
+
+#~ msgid "while allocating cache entry"
+#~ msgstr "varattaessa tilaa välimuistimerkinnälle"
+
+#~ msgid "Haven't found \"%d\" in group cache!"
+#~ msgstr "â€%d†ei löytynyt ryhmävälimuistista!"
+
+#~ msgid " no"
+#~ msgstr " ei"
+
+#~ msgid " yes"
+#~ msgstr " kyllä"
+
+#~ msgid "Haven't found \"%d\" in password cache!"
+#~ msgstr "â€%d†ei löytynyt salasanavälimuistista!"
+
+#~ msgid "shared object cannot be dlopen()ed: static TLS memory too small"
+#~ msgstr "jaettua objektia ei voi avata funktiolla dlopen(): staattinen TLS-muisti on liian pieni"
+
+#~ msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
+#~ msgstr "%s: profiloijan muisti loppui varjostettaessa objektin %s PLTREL-kenttää\n"
#~ msgid "\t\t\t\t\t\t\t %s: value for field `%s' must be in range %d...%d"
-#~ msgstr "\t\t\t\t\t\t\t %s: kentän \"%s\" arvon on oltava välillä %d...%d"
+#~ msgstr "\t\t\t\t\t\t\t %s: kentän â€%s†arvon on oltava välillä %d...%d"
#~ msgid "Failed to look up user '%s' to run server as"
-#~ msgstr "Käyttäjää \"%s\", jonka oikeuksilla palvelinta ajetaan, ei löytynyt"
+#~ msgstr "Käyttäjää â€%sâ€, jonka oikeuksilla palvelinta ajetaan, ei löytynyt"
#~ msgid "no filename for profiling data given and shared object `%s' has no soname"
-#~ msgstr "profilointidatalle ei annettu tiedostonimeä, eikä jaetulla objektilla \"%s\"ei ole so-nimeä"
+#~ msgstr "profilointidatalle ei annettu tiedostonimeä, eikä jaetulla objektilla â€%sâ€ei ole so-nimeä"
diff --git a/po/fr.po b/po/fr.po
index f01e522cca..474dff9ec2 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,15 +1,15 @@
-# translation of libc-2.7.po to Français
+# translation of libc-2.9.90.fr.po to Français
# Messages français pour GNU concernant libc.
-# Copyright © 2004, 2008 Free Software Foundation, Inc.
+# Copyright © 2004, 2008, 2009 Free Software Foundation, Inc.
# This file is distributed under the same license as the glibc package.
# Michel Robitaille <robitail@IRO.UMontreal.CA>, traducteur depuis/since 1996.
#
-# kerb <y.kerb@laposte.net>, 2008.
+# y.kerb <y.kerb@laposte.net>, 2008, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: libc-2.7\n"
-"POT-Creation-Date: 2007-10-15 21:18-0700\n"
-"PO-Revision-Date: 2008-02-26 17:33+0100\n"
+"Project-Id-Version: libc-2.9.90\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-03-04 19:22+0100\n"
"Last-Translator: kerb <y.kerb@laposte.net>\n"
"Language-Team: French <traduc@traduc.org>\n"
"MIME-Version: 1.0\n"
@@ -104,7 +104,7 @@ msgstr "%s%s%s : %u : %s%s Erreur imprévue : %s.\n"
msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
msgstr "%s%s%s :%u : %s%s L'assertion « %s » a échoué.\n"
-#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
msgid "NAME"
msgstr "NOM"
@@ -136,9 +136,15 @@ msgstr ""
"-o FICHIER_DE_SORTIE [FICHIER_D_ENTRÉE]...\n"
"[FICHIER_DE_SORTIE [FICHIER_D_ENTRÉE]...]"
-#: catgets/gencat.c:232 debug/pcprofiledump.c:204 iconv/iconv_prog.c:411
-#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
-#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
@@ -146,12 +152,13 @@ msgstr ""
"Pour les instructions de rapport de bug, SVP voyez là : \n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:296
-#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:426
-#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
-#: posix/getconf.c:1012
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -163,10 +170,12 @@ msgstr ""
"reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n"
"COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
-#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:301 elf/sprof.c:361
-#: iconv/iconv_prog.c:431 iconv/iconvconfig.c:400 locale/programs/locale.c:280
-#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
-#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
#, c-format
msgid "Written by %s.\n"
msgstr "Écrit par %s.\n"
@@ -175,7 +184,7 @@ msgstr "Écrit par %s.\n"
msgid "*standard input*"
msgstr "*entrée standard*"
-#: catgets/gencat.c:288 iconv/iconv_charmap.c:158 iconv/iconv_prog.c:298
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
#: nss/makedb.c:170
#, c-format
msgid "cannot open input file `%s'"
@@ -267,17 +276,17 @@ msgstr "Affiche les informations générés par profilage PC."
msgid "[FILE]"
msgstr "[FICHIER]"
-#: debug/pcprofiledump.c:104
+#: debug/pcprofiledump.c:108
#, c-format
msgid "cannot open input file"
msgstr "ne peut ouvrir le fichier en entrée"
-#: debug/pcprofiledump.c:111
+#: debug/pcprofiledump.c:115
#, c-format
msgid "cannot read header"
msgstr "ne peut lire l'en-tête"
-#: debug/pcprofiledump.c:175
+#: debug/pcprofiledump.c:179
#, c-format
msgid "invalid pointer size"
msgstr "taille de pointeur invalide"
@@ -307,12 +316,10 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
"Trace l'exécution du programme en imprimant la fonction en cours.\n"
"\n"
-" --data=FICHIER Ne pas lancer le programme, affiche juste les données de FICHIER.\n"
+" --data=FICHIER Ne lance pas le programme, affiche juste les données de FICHIER.\n"
"\n"
" - ?,--help Affiche cette aide et quitte\n"
" --usage Donne un court message d'usage\n"
@@ -321,23 +328,21 @@ msgstr ""
"Les arguments obligatoires pour les options de formes longues le sont aussi pour\n"
"les options de formes courtes.\n"
"\n"
-"Pour les instructions de rapport de bug, SVP voir : \n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
-#: debug/xtrace.sh:125
+#: debug/xtrace.sh:127
msgid "xtrace: unrecognized option \\`$1'\\n"
msgstr "xtrace : option non reconnue\\`$1'\\n"
-#: debug/xtrace.sh:138
+#: debug/xtrace.sh:140
msgid "No program name given\\n"
msgstr "Le nom de programme n'est pas indiqué\\n"
-#: debug/xtrace.sh:146
+#: debug/xtrace.sh:148
#, sh-format
msgid "executable \\`$program' not found\\n"
msgstr "exécutable \\`$program' non trouvé\\n"
-#: debug/xtrace.sh:150
+#: debug/xtrace.sh:152
#, sh-format
msgid "\\`$program' is no executable\\n"
msgstr "\\`$program' n'est pas un exécutable\\n"
@@ -358,7 +363,7 @@ msgstr "espace de nommage invalide"
msgid "invalid mode"
msgstr "mode invalide"
-#: dlfcn/dlopen.c:64
+#: dlfcn/dlopen.c:65
msgid "invalid mode parameter"
msgstr "paramètre de mode invalide"
@@ -375,7 +380,7 @@ msgstr "Système d'exploitation inconnu"
msgid ", OS ABI: %s %d.%d.%d"
msgstr ", Système d'exploitation ABI : %s %d.%d.%d"
-#: elf/cache.c:134 elf/ldconfig.c:1270
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
msgid "Can't open cache file %s\n"
msgstr "Ne peut ouvrir le fichier de cache %s\n"
@@ -419,7 +424,7 @@ msgstr "Échec du changement de nom de %s vers %s"
msgid "cannot create scope list"
msgstr "ne peut créer une liste panorama"
-#: elf/dl-close.c:724
+#: elf/dl-close.c:725
msgid "shared object not open"
msgstr "objet partagé non ouvert"
@@ -492,11 +497,11 @@ msgstr "ne peut évaluer par stat() l'objet partagé"
msgid "cannot open zero fill device"
msgstr "ne peut ouvrir le fichier de périphérique rempli de zéros"
-#: elf/dl-load.c:979 elf/dl-load.c:2224
+#: elf/dl-load.c:979 elf/dl-load.c:2215
msgid "cannot create shared object descriptor"
msgstr "ne peut créer un descripteur d'objet partagé"
-#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
msgid "cannot read file data"
msgstr "ne peut lire les données du fichier"
@@ -560,63 +565,59 @@ msgstr "ne peut activer une pile exécutable comme l'objet partagé le requiert"
msgid "cannot close file descriptor"
msgstr "ne peut pas fermer le descripteur de fichier"
-#: elf/dl-load.c:1478
-msgid "cannot create searchlist"
-msgstr "ne peut créer une liste de recherche"
-
-#: elf/dl-load.c:1656
+#: elf/dl-load.c:1647
msgid "file too short"
msgstr "fichier trop court"
-#: elf/dl-load.c:1685
+#: elf/dl-load.c:1676
msgid "invalid ELF header"
msgstr "en-tête ELF invalide"
-#: elf/dl-load.c:1697
+#: elf/dl-load.c:1688
msgid "ELF file data encoding not big-endian"
msgstr "l'encodage des données du fichier ELF n'est pas big-endian"
-#: elf/dl-load.c:1699
+#: elf/dl-load.c:1690
msgid "ELF file data encoding not little-endian"
msgstr "l'encodage des données du fichier ELF n'est pas little-endian"
-#: elf/dl-load.c:1703
+#: elf/dl-load.c:1694
msgid "ELF file version ident does not match current one"
msgstr "l'identifiant de version du fichier ELF ne concorde pas avec la version courante"
-#: elf/dl-load.c:1707
+#: elf/dl-load.c:1698
msgid "ELF file OS ABI invalid"
msgstr "Système d'exploitation du fichier ELF ABI invalide"
-#: elf/dl-load.c:1709
+#: elf/dl-load.c:1700
msgid "ELF file ABI version invalid"
msgstr "Version du fichier ELF ABI invalide"
-#: elf/dl-load.c:1712
+#: elf/dl-load.c:1703
msgid "internal error"
msgstr "Erreur interne"
-#: elf/dl-load.c:1719
+#: elf/dl-load.c:1710
msgid "ELF file version does not match current one"
msgstr "Version du fichier ELF ne concorde pas avec la version courante"
-#: elf/dl-load.c:1727
+#: elf/dl-load.c:1718
msgid "only ET_DYN and ET_EXEC can be loaded"
msgstr "Seuls ET_DYN et ET_EXEC peuvent être chargés"
-#: elf/dl-load.c:1733
+#: elf/dl-load.c:1724
msgid "ELF file's phentsize not the expected size"
msgstr "« Phentize » du fichier ELF ne concorde pas avec la taille prévue"
-#: elf/dl-load.c:2240
+#: elf/dl-load.c:2231
msgid "wrong ELF class: ELFCLASS64"
msgstr "mauvaise classe ELF : ELFCLASS64"
-#: elf/dl-load.c:2241
+#: elf/dl-load.c:2232
msgid "wrong ELF class: ELFCLASS32"
msgstr "mauvaise classe ELF : ELFCLASS32"
-#: elf/dl-load.c:2244
+#: elf/dl-load.c:2235
msgid "cannot open shared object file"
msgstr "Ne peut ouvrir le fichier d'objet partagé"
@@ -648,11 +649,11 @@ msgstr "plus d'espace de nommage disponible pour dlmopen()"
msgid "invalid target namespace in dlmopen()"
msgstr "espace de nommage cible invalide dans dlmopen()"
-#: elf/dl-reloc.c:54
+#: elf/dl-reloc.c:121
msgid "cannot allocate memory in static TLS block"
msgstr "ne peut allouer de la mémoire dans un bloc statique TLS"
-#: elf/dl-reloc.c:196
+#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
msgstr "ne peut rendre le segment inscritible pour une réaffectation"
@@ -678,11 +679,11 @@ msgstr "ne peut appliquer les protections additionnelle de mémoire après la rÃ
msgid "RTLD_NEXT used in code not dynamically loaded"
msgstr "RTLD_NEXT est utilisé dans du code qui n'est pas chargé dynamiquement"
-#: elf/dl-sysdep.c:469 elf/dl-sysdep.c:481
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
msgid "cannot create capability list"
msgstr "ne peut créer une liste des possibilités"
-#: elf/dl-tls.c:825
+#: elf/dl-tls.c:864
msgid "cannot create TLS data structures"
msgstr "ne peut créer les structures de données TLS"
@@ -690,220 +691,220 @@ msgstr "ne peut créer les structures de données TLS"
msgid "cannot allocate version reference table"
msgstr "ne peut allouer la table de référence des versions"
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:141
msgid "Print cache"
msgstr "Imprimer le cache"
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:142
msgid "Generate verbose messages"
msgstr "Afficher des messages en mode verbeux"
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:143
msgid "Don't build cache"
msgstr "Ne pas construire le cache"
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:144
msgid "Don't generate links"
msgstr "Ne pas générer les liens"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "Change to and use ROOT as root directory"
msgstr "Positionner dans, et utiliser le dossier racine ROOT"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "ROOT"
msgstr "ROOT"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "CACHE"
msgstr "CACHE"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "Use CACHE as cache file"
msgstr "Utiliser CACHE comme ficher de cache"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "CONF"
msgstr "CONF"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "Use CONF as configuration file"
msgstr "Utiliser CONF comme fichier de configuration"
-#: elf/ldconfig.c:145
+#: elf/ldconfig.c:148
msgid "Only process directories specified on the command line. Don't build cache."
msgstr "Traiter uniquement les répertoires spécifiés sur la ligne de commande. Ne pas construire de cache."
-#: elf/ldconfig.c:146
+#: elf/ldconfig.c:149
msgid "Manually link individual libraries."
msgstr "Lier manuellement les librairies individuelles ."
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "FORMAT"
msgstr "FORMAT"
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "Format to use: new, old or compat (default)"
msgstr "Format à utiliser : nouveau, ancien ou compatible (par défaut)"
-#: elf/ldconfig.c:148
+#: elf/ldconfig.c:151
msgid "Ignore auxiliary cache file"
msgstr "Ignore le fichier cache auxiliaire"
-#: elf/ldconfig.c:156
+#: elf/ldconfig.c:159
msgid "Configure Dynamic Linker Run Time Bindings."
msgstr "Configuration dynamique des éditions de liens lors de l'exécution."
-#: elf/ldconfig.c:319
+#: elf/ldconfig.c:339
#, c-format
msgid "Path `%s' given more than once"
msgstr "Chemin « %s » donné plus d'une fois"
-#: elf/ldconfig.c:359
+#: elf/ldconfig.c:379
#, c-format
msgid "%s is not a known library type"
msgstr "%s n'est pas un type de librairie connu"
-#: elf/ldconfig.c:384
+#: elf/ldconfig.c:404
#, c-format
msgid "Can't stat %s"
msgstr "Ne peut évaluer par stat %s"
-#: elf/ldconfig.c:458
+#: elf/ldconfig.c:478
#, c-format
msgid "Can't stat %s\n"
msgstr "Ne peut évaluer par stat %s\n"
-#: elf/ldconfig.c:468
+#: elf/ldconfig.c:488
#, c-format
msgid "%s is not a symbolic link\n"
msgstr "%s n'est pas un lien symbolique\n"
-#: elf/ldconfig.c:487
+#: elf/ldconfig.c:507
#, c-format
msgid "Can't unlink %s"
msgstr "Ne peut enlever le lien (unlink) %s"
-#: elf/ldconfig.c:493
+#: elf/ldconfig.c:513
#, c-format
msgid "Can't link %s to %s"
msgstr "Ne peut établir un lien entre %s et %s"
-#: elf/ldconfig.c:499
+#: elf/ldconfig.c:519
msgid " (changed)\n"
msgstr " (a été modifié)\n"
-#: elf/ldconfig.c:501
+#: elf/ldconfig.c:521
msgid " (SKIPPED)\n"
msgstr " (ESCAMOTÉ)\n"
-#: elf/ldconfig.c:556
+#: elf/ldconfig.c:576
#, c-format
msgid "Can't find %s"
msgstr "Ne peut repérer %s"
-#: elf/ldconfig.c:572 elf/ldconfig.c:745 elf/ldconfig.c:793 elf/ldconfig.c:827
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
msgid "Cannot lstat %s"
msgstr "Ne peut évaluer par lstat %s"
-#: elf/ldconfig.c:579
+#: elf/ldconfig.c:599
#, c-format
msgid "Ignored file %s since it is not a regular file."
msgstr "A ignoré le fichier %s parce que ce n'est pas un fichier régulier."
-#: elf/ldconfig.c:588
+#: elf/ldconfig.c:608
#, c-format
msgid "No link created since soname could not be found for %s"
msgstr "Aucun lien créé étant donné que n'a pas été repéré %s"
-#: elf/ldconfig.c:671
+#: elf/ldconfig.c:691
#, c-format
msgid "Can't open directory %s"
msgstr "Ne peut ouvrir le dossier %s"
-#: elf/ldconfig.c:759
+#: elf/ldconfig.c:779
#, c-format
msgid "Cannot stat %s"
msgstr "Ne peut évaluer par stat %s"
-#: elf/ldconfig.c:814 elf/readlib.c:91
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
msgid "Input file %s not found.\n"
msgstr "Fichier d'entrée %s non repéré\n"
-#: elf/ldconfig.c:888
+#: elf/ldconfig.c:908
#, c-format
msgid "libc5 library %s in wrong directory"
msgstr "librairie libc5 %s est dans le mauvais dossier"
-#: elf/ldconfig.c:891
+#: elf/ldconfig.c:911
#, c-format
msgid "libc6 library %s in wrong directory"
msgstr "librairie libc6 %s est dans le mauvais dossier"
-#: elf/ldconfig.c:894
+#: elf/ldconfig.c:914
#, c-format
msgid "libc4 library %s in wrong directory"
msgstr "librairie libc4 %s est dans le mauvais dossier"
-#: elf/ldconfig.c:922
+#: elf/ldconfig.c:942
#, c-format
msgid "libraries %s and %s in directory %s have same soname but different type."
msgstr "Les librairies %s et %s du dossier %s ont le même nom mais sont de types différents."
-#: elf/ldconfig.c:1031
+#: elf/ldconfig.c:1051
#, c-format
msgid "Can't open configuration file %s"
msgstr "Ne peut ouvrir le fichier de configuration %s"
-#: elf/ldconfig.c:1095
+#: elf/ldconfig.c:1115
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
msgstr "%s:%u : mauvaise syntaxe dans la ligne hwcap"
-#: elf/ldconfig.c:1101
+#: elf/ldconfig.c:1121
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
msgstr "%s:%u : l'index hwcap %lu dépasse le maximum %u"
-#: elf/ldconfig.c:1108 elf/ldconfig.c:1116
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
msgstr "%s:%u : l'index hwcap %lu déjà défini comme %s"
-#: elf/ldconfig.c:1119
+#: elf/ldconfig.c:1139
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
msgstr "%s:%u : hwcap en doublon %lu %s"
-#: elf/ldconfig.c:1141
+#: elf/ldconfig.c:1161
#, c-format
msgid "need absolute file name for configuration file when using -r"
msgstr "nécessite un nom de fichier absolu pour le fichier de configuration quand on utilise -r"
-#: elf/ldconfig.c:1148 locale/programs/xmalloc.c:70 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
msgid "memory exhausted"
msgstr "mémoire épuisée"
-#: elf/ldconfig.c:1178
+#: elf/ldconfig.c:1198
#, c-format
msgid "%s:%u: cannot read directory %s"
msgstr "%s:%u : ne peut lire le dossier %s"
-#: elf/ldconfig.c:1223
+#: elf/ldconfig.c:1242
#, c-format
msgid "relative path `%s' used to build cache"
msgstr "chemin relatif `%s' utilisé pour construire le cache"
-#: elf/ldconfig.c:1249
+#: elf/ldconfig.c:1268
#, c-format
msgid "Can't chdir to /"
msgstr "Ne peut se positionner (chdir) dans /"
-#: elf/ldconfig.c:1291
+#: elf/ldconfig.c:1310
#, c-format
msgid "Can't open cache file directory %s\n"
msgstr "Ne peut ouvrir le dossier des fichiers de cache %s\n"
@@ -921,8 +922,6 @@ msgid ""
" -r, --function-relocs process data and function relocations\n"
" -u, --unused print unused direct dependencies\n"
" -v, --verbose print all information\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Usage : ldd [OPTION]... FILE...\n"
" --help affiche cette aide et quitte\n"
@@ -931,49 +930,47 @@ msgstr ""
" -r, --function-relocs réaffecte les données de processus et les fonctions\n"
" -u, --unused affiche les dépendances directes non utilisées\n"
" -v, --verbose affiche toutes les informations\n"
-"Pour les instructions de rapport de bug, SVP voir : \n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: elf/ldd.bash.in:80
+#: elf/ldd.bash.in:82
msgid "ldd: option \\`$1' is ambiguous"
msgstr "ldd : option \\`$1' est ambiguë"
-#: elf/ldd.bash.in:87
+#: elf/ldd.bash.in:89
msgid "unrecognized option"
msgstr "option non reconnue"
-#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
msgid "Try \\`ldd --help' for more information."
msgstr "Pour en savoir davantage, faites : \\`ldd --help'."
-#: elf/ldd.bash.in:125
+#: elf/ldd.bash.in:127
msgid "missing file arguments"
msgstr "arguments de fichier manquants"
#. TRANS No such file or directory. This is a ``file doesn't exist'' error
#. TRANS for ordinary files that are referenced in contexts where they are
#. TRANS expected to already exist.
-#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
msgstr "Aucun fichier ou dossier de ce type"
-#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
msgid "not regular file"
msgstr "n'est pas un fichier régulier"
-#: elf/ldd.bash.in:154
+#: elf/ldd.bash.in:156
msgid "warning: you do not have execution permission for"
msgstr "attention : vous n'avez pas la permission d'exécution pour"
-#: elf/ldd.bash.in:183
+#: elf/ldd.bash.in:185
msgid "\tnot a dynamic executable"
msgstr "\t n'est pas un exécutable dynamique"
-#: elf/ldd.bash.in:191
+#: elf/ldd.bash.in:193
msgid "exited with unknown exit code"
msgstr "a quitté avec un code retour inconnu"
-#: elf/ldd.bash.in:196
+#: elf/ldd.bash.in:198
msgid "error: you do not have read permission for"
msgstr "erreur : vous n'avez pas de permission de lecture pour"
@@ -1032,6 +1029,45 @@ msgstr "Erreur de la procédure mmap sur le fichier %s\n"
msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
msgstr "%s n'est pas un fichier de type ELF - il a un octet magique au début incorrect.\n"
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+"Usage: sln src dest|file\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s : erreur d'ouverture de fichier : %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "Pas de cible %d\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s : la destination ne peut être un répertoire\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr "%s: échec à la suppression de l'ancienne destination\n"
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s : destination invalide  %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "lien invalide depuis \"%s\" jusqu'à \"%s\": %s\n"
+
#: elf/sprof.c:77
msgid "Output selection:"
msgstr "Sélection de sortie :"
@@ -1049,129 +1085,130 @@ msgid "generate call graph"
msgstr "génère un graphe des appels"
#: elf/sprof.c:89
-msgid ""
-"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Lit et affiche les données de profilage des objets partagés.\vPour les instructions de rapport de bug, SVP voir : \n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Read and display shared object profiling data."
+msgstr "Lit et affiche les données de profil des objets partagés."
#: elf/sprof.c:94
msgid "SHOBJ [PROFDATA]"
msgstr "SHOBJ [PROFDATA]"
-#: elf/sprof.c:400
+#: elf/sprof.c:420
#, c-format
msgid "failed to load shared object `%s'"
msgstr "échec de chargement de l'objet partagé « %s »"
-#: elf/sprof.c:409
+#: elf/sprof.c:429
#, c-format
msgid "cannot create internal descriptors"
msgstr "ne peut créer les descripteurs internes"
-#: elf/sprof.c:528
+#: elf/sprof.c:548
#, c-format
msgid "Reopening shared object `%s' failed"
msgstr "Échec de réouverture de l'objet partagé « %s »"
-#: elf/sprof.c:535 elf/sprof.c:629
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
msgid "reading of section headers failed"
msgstr "Échec de la lecture d'en-têtes de section"
-#: elf/sprof.c:543 elf/sprof.c:637
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
msgid "reading of section header string table failed"
msgstr "Échec de lecture de la table des chaînes d'en-têtes de section"
-#: elf/sprof.c:569
+#: elf/sprof.c:589
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
msgstr "*** Ne peut lire le nom de fichier de debuginfo : %m\n"
-#: elf/sprof.c:589
+#: elf/sprof.c:609
#, c-format
msgid "cannot determine file name"
msgstr "Ne peut déterminer le nom de fichier"
-#: elf/sprof.c:622
+#: elf/sprof.c:642
#, c-format
msgid "reading of ELF header failed"
msgstr "Échec de lecture de l'en-tête ELF"
-#: elf/sprof.c:658
+#: elf/sprof.c:678
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
msgstr "*** Le fichier « %s » a été élagué : aucune analyse détaillée possible\n"
-#: elf/sprof.c:688
+#: elf/sprof.c:708
#, c-format
msgid "failed to load symbol data"
msgstr "échec du chargement de données de symbole"
-#: elf/sprof.c:755
+#: elf/sprof.c:775
#, c-format
msgid "cannot load profiling data"
msgstr "ne peut charger les données de profilage"
-#: elf/sprof.c:764
+#: elf/sprof.c:784
#, c-format
msgid "while stat'ing profiling data file"
msgstr "lors de l'évaluation par stat() du fichier de données de profilage"
-#: elf/sprof.c:772
+#: elf/sprof.c:792
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
msgstr "Le fichier de données de profilage « %s » ne concorde pas avec l'objet partagé « %s »"
-#: elf/sprof.c:783
+#: elf/sprof.c:803
#, c-format
msgid "failed to mmap the profiling data file"
msgstr "Échec de la procédure mmap sur le fichier de données de profilage"
-#: elf/sprof.c:791
+#: elf/sprof.c:811
#, c-format
msgid "error while closing the profiling data file"
msgstr "erreur lors de la fermeture du fichier de données de profilage"
-#: elf/sprof.c:800 elf/sprof.c:870
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
msgid "cannot create internal descriptor"
msgstr "ne peut créer un descripteur interne"
-#: elf/sprof.c:846
+#: elf/sprof.c:866
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
msgstr "« %s » est un fichier de profilage incorrect pour « %s »"
-#: elf/sprof.c:1027 elf/sprof.c:1085
+#: elf/sprof.c:1047 elf/sprof.c:1105
#, c-format
msgid "cannot allocate symbol data"
msgstr "ne peut allouer les données des symboles"
-#: iconv/iconv_charmap.c:176 iconv/iconv_prog.c:316
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "ne peut ouvrir le fichier de sortie"
+
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
msgstr "erreur lors de la fermeture du fichier d'entrée « %s »"
-#: iconv/iconv_charmap.c:450
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
msgstr "séquence d'échappement d'entrée non permise à la position %Zd"
-#: iconv/iconv_charmap.c:469 iconv/iconv_prog.c:526
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
#, c-format
msgid "incomplete character or shift sequence at end of buffer"
msgstr "caractère ou séquence de changement incomplet à la fin du tampon"
-#: iconv/iconv_charmap.c:514 iconv/iconv_charmap.c:550 iconv/iconv_prog.c:569
-#: iconv/iconv_prog.c:605
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
#, c-format
msgid "error while reading the input"
msgstr "erreur lors de la lecture de l'entrée"
-#: iconv/iconv_charmap.c:532 iconv/iconv_prog.c:587
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
#, c-format
msgid "unable to allocate buffer for input"
msgstr "incapable d'allouer un tampon pour l'entrée"
@@ -1224,62 +1261,57 @@ msgstr "Convertit l'encodage des fichiers indiqués d'un encodage à l'autre."
msgid "[FILE...]"
msgstr "[FICHIER...]"
-#: iconv/iconv_prog.c:200
-#, c-format
-msgid "cannot open output file"
-msgstr "ne peut ouvrir le fichier de sortie"
-
-#: iconv/iconv_prog.c:242
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
msgstr "conversions de « %s » et vers « %s » ne sont pas supportées"
-#: iconv/iconv_prog.c:247
+#: iconv/iconv_prog.c:239
#, c-format
msgid "conversion from `%s' is not supported"
msgstr "conversion de « %s » n'est pas supportée"
-#: iconv/iconv_prog.c:254
+#: iconv/iconv_prog.c:246
#, c-format
msgid "conversion to `%s' is not supported"
msgstr "conversion vers « %s » n'est pas supportée"
-#: iconv/iconv_prog.c:258
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
msgstr "conversion de « %s » vers « %s » n'est pas supportée"
-#: iconv/iconv_prog.c:268
+#: iconv/iconv_prog.c:260
#, c-format
msgid "failed to start conversion processing"
msgstr "échec de démarrage du processus de conversion"
-#: iconv/iconv_prog.c:362
+#: iconv/iconv_prog.c:358
#, c-format
msgid "error while closing output file"
msgstr "erreur lors de la fermeture du fichier de sortie"
-#: iconv/iconv_prog.c:471 iconv/iconv_prog.c:497
+#: iconv/iconv_prog.c:456
#, c-format
msgid "conversion stopped due to problem in writing the output"
msgstr "conversion stoppée en raison d'un problème d'écriture à la sortie"
-#: iconv/iconv_prog.c:522
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
msgstr "séquence d'échappement non permise à la position %ld"
-#: iconv/iconv_prog.c:530
+#: iconv/iconv_prog.c:541
#, c-format
msgid "internal error (illegal descriptor)"
msgstr "erreur interne (descripteur non permis)"
-#: iconv/iconv_prog.c:533
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
msgstr "erreur inconnue de iconv() %d"
-#: iconv/iconv_prog.c:779
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -1515,7 +1547,7 @@ msgstr "trop d'octets pour l'encodage des caractères"
msgid "no symbolic name given for end of range"
msgstr "pas de nom symbolique fourni pour la fin de l'intervalle"
-#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
#: locale/programs/ld-identification.c:452
@@ -1544,8 +1576,8 @@ msgstr "la valeur de %s doit être un entier"
msgid "%s: error in state machine"
msgstr "%s : erreur de l'automate à états finis"
-#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
-#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4115
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
#: locale/programs/ld-identification.c:468
#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
@@ -1567,7 +1599,7 @@ msgstr "caractère inconnu « %s »"
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
msgstr "nombre d'octets pour une séquence d'octets de début et de fin de plage n'est pas le même : %d vs %d"
-#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3047
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
msgstr "nom invalide pour un intervalle de caractères"
@@ -1589,7 +1621,7 @@ msgstr "la limite supérieure de l'intervalle est plus basse que la limite infé
msgid "resulting bytes for range not representable."
msgstr "les octets résultants pour la plage ne sont pas représentables."
-#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
@@ -1599,10 +1631,10 @@ msgstr "les octets résultants pour la plage ne sont pas représentables."
msgid "No definition for %s category found"
msgstr "Pas de définition pour la catégorie %s"
-#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
-#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
-#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
-#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
@@ -1615,46 +1647,46 @@ msgstr "Pas de définition pour la catégorie %s"
msgid "%s: field `%s' not defined"
msgstr "%s : champ « %s » n'est pas défini"
-#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
-#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
msgstr "%s : champ « %s » ne peut être vide"
-#: locale/programs/ld-address.c:168
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
msgstr "%s : séquence d'échappement « %%%c » invalide dans le champ « %s »"
-#: locale/programs/ld-address.c:219
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
msgstr "%s : code de terminologie du langage « %s » non défini"
-#: locale/programs/ld-address.c:244
+#: locale/programs/ld-address.c:246
#, c-format
msgid "%s: field `%s' must not be defined"
msgstr "%s : champ « %s » ne doit pas être défini"
-#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
msgstr "%s : abréviation de la langue « %s » n'est pas définie"
-#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
-#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
msgstr "%s : valeur « %s » ne concorde pas avec la valeur « %s »"
-#: locale/programs/ld-address.c:312
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
msgstr "%s : code numérique invalide pour le pays « %d »"
-#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
-#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
#: locale/programs/ld-identification.c:364
#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
@@ -1666,7 +1698,7 @@ msgstr "%s : code numérique invalide pour le pays « %d »"
msgid "%s: field `%s' declared more than once"
msgstr "%s : champ « %s » déclaré plus d'une fois"
-#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
@@ -1676,7 +1708,7 @@ msgstr "%s : champ « %s » déclaré plus d'une fois"
msgid "%s: unknown character in field `%s'"
msgstr "%s : caractère inconnu dans le champ « %s »"
-#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
@@ -1686,10 +1718,10 @@ msgstr "%s : caractère inconnu dans le champ « %s »"
msgid "%s: incomplete `END' line"
msgstr "%s : ligne « END » incomplète"
-#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:542
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
-#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4105
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
#: locale/programs/ld-identification.c:459
@@ -1832,7 +1864,7 @@ msgstr "Pas de définition de type « UNDEFINED »"
msgid "too many errors; giving up"
msgstr "trop d'erreurs; abandon"
-#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4044
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
#, c-format
msgid "%s: nested conditionals not supported"
msgstr "%s : conditions imbriquées non supportées"
@@ -1852,27 +1884,27 @@ msgstr "%s : double définition de « %s »"
msgid "%s: duplicate declaration of section `%s'"
msgstr "%s : double déclaration de section « %s »"
-#: locale/programs/ld-collate.c:3027
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
msgstr "%s : caractère inconnu dans le nom du symbole de collation"
-#: locale/programs/ld-collate.c:3159
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
msgstr "%s : caractère inconnu dans la définition équivalent d'un nom"
-#: locale/programs/ld-collate.c:3172
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
msgstr "%s : caractère inconnu dans la définition équivalente d'une valeur"
-#: locale/programs/ld-collate.c:3182
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
msgstr "%s : symbole inconnu « %s » dans une définition équivalente"
-#: locale/programs/ld-collate.c:3191
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
msgstr "Erreur lors de l'ajout d'un symbole de collation équivalent"
@@ -1952,12 +1984,12 @@ msgstr "%s : description de catégorie vide non permise"
msgid "%s: missing `reorder-sections-end' keyword"
msgstr "%s : mot clé « reorder-sections-end » manquant"
-#: locale/programs/ld-collate.c:4077
+#: locale/programs/ld-collate.c:4079
#, c-format
msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
msgstr "%s : '%s' sans correspondance 'ifdef' ou 'ifndef'"
-#: locale/programs/ld-collate.c:4095
+#: locale/programs/ld-collate.c:4097
#, c-format
msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
msgstr "%s : 'endif' sans 'ifdef' ou 'ifndef' correspondant"
@@ -2287,7 +2319,7 @@ msgstr "%s : rebut à la fin de la date finale dans la chaîne %Zd du champ «
msgid "%s: starting date is invalid in string %Zd in `era' field"
msgstr "%s : date initiale invalide dans la chaîne %Zd du champ « era »"
-#: locale/programs/ld-time.c:407
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
msgstr "%s : date finale invalide dans la chaîne %Zd du champ « era »"
@@ -2297,11 +2329,6 @@ msgstr "%s : date finale invalide dans la chaîne %Zd du champ « era »"
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
msgstr "%s : rebut à la fin de la date finale dans la chaîne %Zd du champ « era »"
-#: locale/programs/ld-time.c:435
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s : date finale invalide dans la chaîne %Zd du champ « era »"
-
#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
@@ -2404,14 +2431,10 @@ msgid "Print more information"
msgstr "Afficher plus informations"
#: locale/programs/locale.c:87
-msgid ""
-"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Récupère les informations de particularisme local.\vPour les instructions de rapport de bug, SVP voir :\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get locale-specific information."
+msgstr "Récupérer les particularismes locaux"
-#: locale/programs/locale.c:92
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
@@ -2419,27 +2442,27 @@ msgstr ""
"NOM\n"
"[-a|-m]"
-#: locale/programs/locale.c:193
+#: locale/programs/locale.c:194
#, c-format
msgid "Cannot set LC_CTYPE to default locale"
msgstr "Ne peut initialiser LC_TYPE à la locale par défaut"
-#: locale/programs/locale.c:195
+#: locale/programs/locale.c:196
#, c-format
msgid "Cannot set LC_MESSAGES to default locale"
msgstr "Ne peut initialiser LC_MESSAGES à la locale par défaut"
-#: locale/programs/locale.c:208
+#: locale/programs/locale.c:209
#, c-format
msgid "Cannot set LC_COLLATE to default locale"
msgstr "Ne peut initialiser LC_COLLATE à la locale par défaut"
-#: locale/programs/locale.c:224
+#: locale/programs/locale.c:225
#, c-format
msgid "Cannot set LC_ALL to default locale"
msgstr "Ne peut initialiser LC_ALL à la locale par défaut"
-#: locale/programs/locale.c:500
+#: locale/programs/locale.c:518
#, c-format
msgid "while preparing output"
msgstr "lors de la préparation de la sortie"
@@ -2723,8 +2746,8 @@ msgid "cannot create output file `%s' for category `%s'"
msgstr "Ne peut créer le fichier de sortie « %s » de catégorie « %s »"
#: locale/programs/locfile.c:782
-msgid "expect string argument for `copy'"
-msgstr "chaîne attendue pour l'argument de « copy »"
+msgid "expecting string argument for `copy'"
+msgstr "l'argument de chaîne attendu pour `copy'"
#: locale/programs/locfile.c:786
msgid "locale name should consist only of portable characters"
@@ -2840,8 +2863,6 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Usage : memusage [OPTION]... PROGRAM [PROGRAMOPTION]...\n"
"Profile memory usage of PROGRAM.\n"
@@ -2851,7 +2872,7 @@ msgstr ""
" -d,--data=FILE Génère des données binaires et les stocke dans le fichier FILE\n"
" -u,--unbuffered N'utilise pas de tampon pour le fichier de sortie\n"
" -b,--buffer=SIZE Collecte les entrées au nombre de SIZE avant d'écrire en sortie\n"
-" --no-timer Ne collecte pas d'informations additionnelle par le biais du timer\n"
+" --no-timer Ne collecte pas d'informations additionnelles par le biais du timer\n"
" -m,--mmap Trace aussi \"mmap\" & apparentés\n"
"\n"
" - ?,--help Imprime cette aide et quitte\n"
@@ -2861,17 +2882,15 @@ msgstr ""
" Les options suivantes ne s'appliquent que à la génération de sortie graphique :\n"
" -t,--time-based Rend un graphe linéaire dans le temps\n"
" -T,--total Dessine aussi un graphe de l'usage de la mémoire totale\n"
-" --title=STRING Emploi STRING pour le titre du graphe\n"
+" --title=STRING Emploie STRING pour le titre du graphe\n"
" -x,--x-size=SIZE Rend le graphe en SIZE pixels de large\n"
" -y,--y-size=SIZE Rend le graphe en SIZE pixels de haut\n"
"\n"
"Les arguments obligatoires pour les options de formes longues\n"
"le sont aussi pour les options de forme courtes.\n"
"\n"
-"Pour les instructions de rapport de bug, SVP voir :\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: malloc/memusage.sh:99
+#: malloc/memusage.sh:101
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
@@ -2883,51 +2902,51 @@ msgstr ""
" [--title=STRING] [--x-size=SIZE] [--y-size=SIZE]\n"
" PROGRAM [PROGRAMOPTION]..."
-#: malloc/memusage.sh:191
+#: malloc/memusage.sh:193
msgid "memusage: option \\`${1##*=}' is ambiguous"
msgstr "memusage : l'option \\`${1##*=}' est ambiguë"
-#: malloc/memusage.sh:200
+#: malloc/memusage.sh:202
msgid "memusage: unrecognized option \\`$1'"
msgstr "memusage : option non reconnue \\`$1'"
-#: malloc/memusage.sh:213
+#: malloc/memusage.sh:215
msgid "No program name given"
msgstr "Le nom de programme n'a pas été indiqué"
-#: malloc/memusagestat.c:54
+#: malloc/memusagestat.c:57
msgid "Name output file"
msgstr "Nommer le fichier de sortie"
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:58
msgid "Title string used in output graphic"
msgstr "Chaîne de titre utilisé dans le graphique de sortie"
-#: malloc/memusagestat.c:56
+#: malloc/memusagestat.c:59
msgid "Generate output linear to time (default is linear to number of function calls)"
msgstr "Génération de sortie linéaire au temps (par défaut linéaire au nombre d'appels de fonction)"
-#: malloc/memusagestat.c:58
+#: malloc/memusagestat.c:61
msgid "Also draw graph for total memory consumption"
msgstr "Afficher aussi le graphe de l'utilisation totale de la mémoire"
-#: malloc/memusagestat.c:59
+#: malloc/memusagestat.c:62
msgid "Make output graphic VALUE pixels wide"
msgstr "Génère un graphe ayant pour largeur VALUE pixels"
-#: malloc/memusagestat.c:60
+#: malloc/memusagestat.c:63
msgid "Make output graphic VALUE pixels high"
msgstr "Génère un graphe ayant VALUE pixels de hauteur"
-#: malloc/memusagestat.c:65
+#: malloc/memusagestat.c:68
msgid "Generate graphic from memory profiling data"
msgstr "Génération du graphique des données de profilage de la mémoire"
-#: malloc/memusagestat.c:68
+#: malloc/memusagestat.c:71
msgid "DATAFILE [OUTFILE]"
msgstr "DATAFILE [FICHIER_DE_SORTIE]"
-#: misc/error.c:118 timezone/zic.c:417
+#: misc/error.c:118
msgid "Unknown system error"
msgstr "Erreur système inconnue"
@@ -2935,7 +2954,7 @@ msgstr "Erreur système inconnue"
msgid "unable to free arguments"
msgstr "incapable de libérer des arguments"
-#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr "Succès"
@@ -2977,7 +2996,7 @@ msgid "First/next chain broken"
msgstr "Bris de la chaîne Premier/Suivant"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
msgstr "Permission non accordée"
@@ -3480,433 +3499,472 @@ msgstr "netname2user() : entrée LOCAL de %s dans le dossier %s n'est pas uniqu
msgid "netname2user: should not have uid 0"
msgstr "netname2user : ne devrait pas avoir le UID 0"
-#: nis/ypclnt.c:825
+#: nis/ypclnt.c:836
msgid "Request arguments bad"
msgstr "Les arguments de la requête sont invalides"
-#: nis/ypclnt.c:828
+#: nis/ypclnt.c:839
msgid "RPC failure on NIS operation"
msgstr "Échec RPC durant l'opération NIS"
-#: nis/ypclnt.c:831
+#: nis/ypclnt.c:842
msgid "Can't bind to server which serves this domain"
msgstr "Ne peut établir un lien avec le serveur qui dessert ce domaine"
-#: nis/ypclnt.c:834
+#: nis/ypclnt.c:845
msgid "No such map in server's domain"
msgstr "Cette table n'est pas dans le domaine du serveur"
-#: nis/ypclnt.c:837
+#: nis/ypclnt.c:848
msgid "No such key in map"
msgstr "Cette clé n'est pas dans la table"
-#: nis/ypclnt.c:840
+#: nis/ypclnt.c:851
msgid "Internal NIS error"
msgstr "Erreur interne de NIS"
-#: nis/ypclnt.c:843
+#: nis/ypclnt.c:854
msgid "Local resource allocation failure"
msgstr "Échec d'allocation d'une ressource de locales"
-#: nis/ypclnt.c:846
+#: nis/ypclnt.c:857
msgid "No more records in map database"
msgstr "Aucun autre enregistrement dans la table de la base de données"
-#: nis/ypclnt.c:849
+#: nis/ypclnt.c:860
msgid "Can't communicate with portmapper"
msgstr "Ne peut communiquer avec le convertisseur de ports"
-#: nis/ypclnt.c:852
+#: nis/ypclnt.c:863
msgid "Can't communicate with ypbind"
msgstr "Ne peut communiquer par ypbind"
-#: nis/ypclnt.c:855
+#: nis/ypclnt.c:866
msgid "Can't communicate with ypserv"
msgstr "Ne peut communiquer par ypserv"
-#: nis/ypclnt.c:858
+#: nis/ypclnt.c:869
msgid "Local domain name not set"
msgstr "Le nom du domaine local n'est pas initialisé"
-#: nis/ypclnt.c:861
+#: nis/ypclnt.c:872
msgid "NIS map database is bad"
msgstr "La table de la base de données NIS est erronée"
-#: nis/ypclnt.c:864
+#: nis/ypclnt.c:875
msgid "NIS client/server version mismatch - can't supply service"
msgstr "Non concordance de la version client/serveur NIS - ne peut fournir le service"
-#: nis/ypclnt.c:870
+#: nis/ypclnt.c:881
msgid "Database is busy"
msgstr "La base de données est occupée"
-#: nis/ypclnt.c:873
+#: nis/ypclnt.c:884
msgid "Unknown NIS error code"
msgstr "Code d'erreur NIS inconnu"
-#: nis/ypclnt.c:913
+#: nis/ypclnt.c:924
msgid "Internal ypbind error"
msgstr "Erreur interne de ypbind"
-#: nis/ypclnt.c:916
+#: nis/ypclnt.c:927
msgid "Domain not bound"
msgstr "Le domaine n'est pas délimité"
-#: nis/ypclnt.c:919
+#: nis/ypclnt.c:930
msgid "System resource allocation failure"
msgstr "Échec d'allocation de ressources système"
-#: nis/ypclnt.c:922
+#: nis/ypclnt.c:933
msgid "Unknown ypbind error"
msgstr "Erreur inconnue de ypbind"
-#: nis/ypclnt.c:963
+#: nis/ypclnt.c:974
msgid "yp_update: cannot convert host to netname\n"
msgstr "yp_update : ne peut convertir le nom de l'hôte à un nom réseau (netname)\n"
-#: nis/ypclnt.c:981
+#: nis/ypclnt.c:992
msgid "yp_update: cannot get server address\n"
msgstr "yp_update : ne peut obtenir l'adresse du serveur\n"
-#: nscd/aicache.c:77 nscd/hstcache.c:468
+#: nscd/aicache.c:82 nscd/hstcache.c:481
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
msgstr "N'a pas trouvé « %s » dans la cache de la liste des hôtes!"
-#: nscd/aicache.c:79 nscd/hstcache.c:470
+#: nscd/aicache.c:84 nscd/hstcache.c:483
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
msgstr "Recharge \"%s\" dans le cache hôte!"
-#: nscd/cache.c:146
+#: nscd/cache.c:150
#, c-format
msgid "add new entry \"%s\" of type %s for %s to cache%s"
msgstr "ajoute une nouvelle entrée \"%s\" de type %s pour %s au cache%s"
-#: nscd/cache.c:148
+#: nscd/cache.c:152
msgid " (first)"
msgstr " (first)"
-#: nscd/cache.c:256 nscd/connections.c:810
+#: nscd/cache.c:286 nscd/connections.c:866
#, c-format
msgid "cannot stat() file `%s': %s"
msgstr "Ne peut évaluer par stat() le fichier « %s » : %s"
-#: nscd/cache.c:285
+#: nscd/cache.c:328
#, c-format
msgid "pruning %s cache; time %ld"
msgstr "écourte %s cache; time %ld"
-#: nscd/cache.c:312
+#: nscd/cache.c:357
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
msgstr "considering %s entry \"%s\", timeout %<PRIu64>"
-#: nscd/connections.c:521 nscd/connections.c:533 nscd/connections.c:545
-#: nscd/connections.c:564
+#: nscd/connections.c:570
#, c-format
msgid "invalid persistent database file \"%s\": %s"
msgstr "fichier de base de données reste invalide \"%s\" : %s"
-#: nscd/connections.c:535
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr "en-tête non initialisée"
+
+#: nscd/connections.c:583
msgid "header size does not match"
msgstr "la taille de l'entête n'est pas adéquate"
-#: nscd/connections.c:547
+#: nscd/connections.c:593
msgid "file size does not match"
msgstr "la taille du fichier n'est pas adéquate"
-#: nscd/connections.c:566
+#: nscd/connections.c:610
msgid "verification failed"
msgstr "échec de la vérification"
-#: nscd/connections.c:580
+#: nscd/connections.c:624
#, c-format
msgid "suggested size of table for database %s larger than the persistent database's table"
msgstr "la taille suggérée de la table pour la base de donnée %s est plus grande que la table persistante de la base de donnée"
-#: nscd/connections.c:591 nscd/connections.c:673
+#: nscd/connections.c:635 nscd/connections.c:720
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
msgstr "ne peut créer le descripteur read-only pour \"%s\" ; pas de mmap"
-#: nscd/connections.c:652
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr "ne peut accéder '%s'"
+
+#: nscd/connections.c:699
#, c-format
msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
msgstr "la base de données %s est endommagée ou utilisée concurremment; supprimer %s manuellement au besoin et relancer"
-#: nscd/connections.c:659
+#: nscd/connections.c:706
#, c-format
msgid "cannot create %s; no persistent database used"
msgstr "ne peut créer %s; aucune base de données persistante utilisée"
-#: nscd/connections.c:662
+#: nscd/connections.c:709
#, c-format
msgid "cannot create %s; no sharing possible"
msgstr "ne peut créer %s; pas de partage possible"
-#: nscd/connections.c:733
+#: nscd/connections.c:780
#, c-format
msgid "cannot write to database file %s: %s"
msgstr "ne peut écrire dans le fichier de base de données %s : %s"
-#: nscd/connections.c:772
+#: nscd/connections.c:819
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
msgstr "ne peut établir le socket comme étant fermé dans exec : %s; désactive le mode paranoïa"
-#: nscd/connections.c:823
+#: nscd/connections.c:902
#, c-format
msgid "cannot open socket: %s"
msgstr "Ne peut ouvrir le socket : « %s »"
-#: nscd/connections.c:840
+#: nscd/connections.c:922
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
msgstr "ne peut établir le socket en mode nonblocking : %s"
-#: nscd/connections.c:848
+#: nscd/connections.c:930
#, c-format
msgid "cannot set socket to close on exec: %s"
msgstr "ne peut établir le socket à l'état fermé dans exec : %s"
-#: nscd/connections.c:859
+#: nscd/connections.c:943
#, c-format
msgid "cannot enable socket to accept connections: %s"
msgstr "Ne peut activer le socket pour accepter des connexions : %s"
-#: nscd/connections.c:955
+#: nscd/connections.c:1043
#, c-format
msgid "provide access to FD %d, for %s"
msgstr "fournit l'accès à FD %d, pour %s"
-#: nscd/connections.c:967
+#: nscd/connections.c:1055
#, c-format
msgid "cannot handle old request version %d; current version is %d"
msgstr "Ne peut traiter une requête d'une vieille version %d; la version courante est %d"
-#: nscd/connections.c:1009 nscd/connections.c:1062
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr "la requête de %ld non prise en compte du fait du manque de permission"
+
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr "la requête de '%s' [%ld] non prise en compte du fait du manque de permission"
+
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr "la requête de %ld "
+
+#: nscd/connections.c:1125 nscd/connections.c:1178
#, c-format
msgid "cannot write result: %s"
msgstr "Ne peut écrire les résultats : « %s »"
-#: nscd/connections.c:1145
+#: nscd/connections.c:1261
#, c-format
msgid "error getting caller's id: %s"
msgstr "erreur lors de la récupération de l'identifiant de l'appelant : %s"
-#: nscd/connections.c:1204
+#: nscd/connections.c:1320
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "ne peut ouvrir /proc/self/cmdline : %s; désactive le mode paranoïa"
-#: nscd/connections.c:1218
+#: nscd/connections.c:1334
#, c-format
msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "ne peut lire /proc/self/cmdline : %s; désactive le mode paranoïa"
-#: nscd/connections.c:1258
+#: nscd/connections.c:1374
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
msgstr "ne peut réétablir l'ancien UID : %s; désactive le mode paranoïa"
-#: nscd/connections.c:1268
+#: nscd/connections.c:1384
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
msgstr "ne peut réétablir l'ancien GID : %s; désactive le mode paranoïa"
-#: nscd/connections.c:1281
+#: nscd/connections.c:1397
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
msgstr "ne peut réétablir l'ancien dossier de travail : %s; désactive le mode paranoïa"
-#: nscd/connections.c:1310
+#: nscd/connections.c:1429
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
msgstr "re-exec a échoué : %s; désactive le mode paranoïa"
-#: nscd/connections.c:1319
+#: nscd/connections.c:1438
#, c-format
msgid "cannot change current working directory to \"/\": %s"
msgstr "ne peut établir le dossier de travail courant à \"/\" : %s"
-#: nscd/connections.c:1437
+#: nscd/connections.c:1644
#, c-format
msgid "short read while reading request: %s"
msgstr "Lecture écourtée lors de la lecture de la requête : « %s »"
-#: nscd/connections.c:1468
+#: nscd/connections.c:1677
#, c-format
msgid "key length in request too long: %d"
msgstr "La longueur de la clé de la requête est trop longue : %d"
-#: nscd/connections.c:1481
+#: nscd/connections.c:1690
#, c-format
msgid "short read while reading request key: %s"
msgstr "Lecture écourtée lors de la lecture de la clé de requête : %s"
-#: nscd/connections.c:1490
+#: nscd/connections.c:1699
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
msgstr "handle_request : requête reçue (Version = %d) à partir du PID %ld"
-#: nscd/connections.c:1495
+#: nscd/connections.c:1704
#, c-format
msgid "handle_request: request received (Version = %d)"
msgstr "handle_request : requête reçue (Version = %d)"
-#: nscd/connections.c:1856
+#: nscd/connections.c:1903 nscd/connections.c:2101
#, c-format
-msgid "could only start %d threads; terminating"
-msgstr "n'a pu démarrer que %d fils(threads) ; en train de s'achever"
+msgid "disabled inotify after read error %d"
+msgstr "désactive inotify après erreur de lecture %d"
+
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr "n'a pu initialiser une variable conditionnelle"
-#: nscd/connections.c:1904 nscd/connections.c:1905 nscd/connections.c:1922
-#: nscd/connections.c:1931 nscd/connections.c:1949 nscd/connections.c:1960
-#: nscd/connections.c:1971
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr "n'a pu démarrer le process(thread) de nettoyage ; en train de s'achever"
+
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr "n'a pas pu démarrer de process de travail (threads) ; en train de s'achever"
+
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
#, c-format
msgid "Failed to run nscd as user '%s'"
msgstr "Échec d'exécution de nscd en tant qu'usager « %s »"
-#: nscd/connections.c:1923
+#: nscd/connections.c:2322
#, c-format
msgid "initial getgrouplist failed"
msgstr "échec du getgrouplist initial"
-#: nscd/connections.c:1932
+#: nscd/connections.c:2331
#, c-format
msgid "getgrouplist failed"
msgstr "échec de getgrouplist"
-#: nscd/connections.c:1950
+#: nscd/connections.c:2349
#, c-format
msgid "setgroups failed"
msgstr "échec de setgroups"
-#: nscd/grpcache.c:402 nscd/hstcache.c:418 nscd/initgrcache.c:412
-#: nscd/pwdcache.c:397 nscd/servicescache.c:343
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
#, c-format
msgid "short write in %s: %s"
msgstr "Écriture écourtée dans %s : %s"
-#: nscd/grpcache.c:445 nscd/initgrcache.c:78
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
msgstr "N'a pas trouvé « %s » dans la cache du groupe!"
-#: nscd/grpcache.c:447 nscd/initgrcache.c:80
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
msgstr "Recharge \"%s\" dans le cache groupe!"
-#: nscd/grpcache.c:524
+#: nscd/grpcache.c:517
#, c-format
msgid "Invalid numeric gid \"%s\"!"
msgstr "gid numérique invalide « %s » !"
-#: nscd/mem.c:383
+#: nscd/mem.c:457
#, c-format
msgid "freed %zu bytes in %s cache"
msgstr "libéré %zu octets dans le cache %s"
-#: nscd/mem.c:512
+#: nscd/mem.c:594
#, c-format
msgid "no more memory for database '%s'"
msgstr "plus de mémoire disponible pour la base de données '%s'"
-#: nscd/nscd.c:98
+#: nscd/nscd.c:101
msgid "Read configuration data from NAME"
msgstr "Lire les données de configuration du NOM"
-#: nscd/nscd.c:100
+#: nscd/nscd.c:103
msgid "Do not fork and display messages on the current tty"
msgstr "Ne pas cloner le processus par fork() et ne pas afficher de message sur le tty courant"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "NUMBER"
msgstr "NUMÉRO"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "Start NUMBER threads"
msgstr "Démarrage du NOMBRE de « threads »"
-#: nscd/nscd.c:102
+#: nscd/nscd.c:105
msgid "Shut the server down"
msgstr "Arrêter le serveur"
-#: nscd/nscd.c:103
-msgid "Print current configuration statistic"
-msgstr "Afficher les statistiques de la configuration courante"
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
+msgstr "Affiche les statistiques de la configuration courante"
-#: nscd/nscd.c:104
+#: nscd/nscd.c:107
msgid "TABLE"
msgstr "TABLE"
-#: nscd/nscd.c:105
+#: nscd/nscd.c:108
msgid "Invalidate the specified cache"
msgstr "Invalide la cache spécifiée"
-#: nscd/nscd.c:106
+#: nscd/nscd.c:109
msgid "TABLE,yes"
msgstr "TABLE,oui"
-#: nscd/nscd.c:107
+#: nscd/nscd.c:110
msgid "Use separate cache for each user"
msgstr "Utiliser une cache séparée pour chaque usager"
-#: nscd/nscd.c:112
+#: nscd/nscd.c:115
msgid "Name Service Cache Daemon."
msgstr "« Daemon » de la cache du service de noms."
-#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
#, c-format
msgid "wrong number of arguments"
msgstr "Mauvais nombre d'arguments"
-#: nscd/nscd.c:154
+#: nscd/nscd.c:157
#, c-format
msgid "failure while reading configuration file; this is fatal"
msgstr "ne peut lire le fichier de configuration; cela est fatal"
-#: nscd/nscd.c:163
+#: nscd/nscd.c:166
#, c-format
msgid "already running"
msgstr "déjà en exécution"
-#: nscd/nscd.c:178 nscd/nscd.c:233
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
msgid "cannot fork"
msgstr "ne peut fourcher"
-#: nscd/nscd.c:241
+#: nscd/nscd.c:244
#, c-format
msgid "cannot change current working directory to \"/\""
msgstr "ne peut établir le dossier de travail courant à \"/\""
-#: nscd/nscd.c:249
+#: nscd/nscd.c:252
msgid "Could not create log file"
msgstr "N'a pu créé le fichier journal"
-#: nscd/nscd.c:302 nscd/nscd.c:327 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
msgid "Only root is allowed to use this option!"
msgstr "Seul ROOT est autorisé à utiliser cette option!"
-#: nscd/nscd.c:364 nscd/nscd_stat.c:191
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr "'%s' n'est pas une base de donnée connue"
+
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
msgid "write incomplete"
msgstr "écriture incomplète"
-#: nscd/nscd.c:375
+#: nscd/nscd.c:381
#, c-format
msgid "cannot read invalidate ACK"
msgstr "ne peut lire les ACK invalidés"
-#: nscd/nscd.c:381
+#: nscd/nscd.c:387
#, c-format
msgid "invalidation failed"
msgstr "l'invalidation a échoué"
-#: nscd/nscd.c:391
+#: nscd/nscd.c:397
#, c-format
msgid "secure services not implemented anymore"
msgstr "les services de sécurité ne sont plus implémentés"
@@ -3921,37 +3979,37 @@ msgstr "la base de données « %s » n'est pas supportée"
msgid "Parse error: %s"
msgstr "Erreur d'analyse syntaxique : %s"
-#: nscd/nscd_conf.c:193
+#: nscd/nscd_conf.c:194
#, c-format
msgid "Must specify user name for server-user option"
msgstr "Obligation de spécifier le nom de l'usager pour l'option serveur-usager"
-#: nscd/nscd_conf.c:200
+#: nscd/nscd_conf.c:201
#, c-format
msgid "Must specify user name for stat-user option"
msgstr "Obligation de spécifier le nom de l'usager pour l'option stat-user"
-#: nscd/nscd_conf.c:244
+#: nscd/nscd_conf.c:245
#, c-format
msgid "invalid value for 'reload-count': %u"
msgstr "valeur invalide pour 'reload-count' : %u"
-#: nscd/nscd_conf.c:259
+#: nscd/nscd_conf.c:260
#, c-format
msgid "Must specify value for restart-interval option"
msgstr "Obligation de spécifier une valeur pour l'option restart-interval (intervalle de redémarrage)"
-#: nscd/nscd_conf.c:273
+#: nscd/nscd_conf.c:274
#, c-format
msgid "Unknown option: %s %s %s"
msgstr "Option inconnue : %s %s %s"
-#: nscd/nscd_conf.c:286
+#: nscd/nscd_conf.c:287
#, c-format
msgid "cannot get current working directory: %s; disabling paranoia mode"
msgstr "ne peut obtenir le dossier de travail courant : %s; désactive le mode paranoïa"
-#: nscd/nscd_conf.c:306
+#: nscd/nscd_conf.c:307
#, c-format
msgid "maximum file size for %s database too small"
msgstr "la taille maximale de fichier pour la base de données %s est trop petite"
@@ -4082,17 +4140,17 @@ msgstr ""
"%15<PRIuMAX> allocation de mémoire à échouée\n"
"%15s vérifier /etc/%s pour les changements\n"
-#: nscd/pwdcache.c:440
+#: nscd/pwdcache.c:443
#, c-format
msgid "Haven't found \"%s\" in password cache!"
msgstr "N'a pas trouvé \"%s\" dans le cache des mots de passe!"
-#: nscd/pwdcache.c:442
+#: nscd/pwdcache.c:445
#, c-format
msgid "Reloading \"%s\" in password cache!"
msgstr "Recharge \"%s\" dans le cache des mots de passe!"
-#: nscd/pwdcache.c:520
+#: nscd/pwdcache.c:523
#, c-format
msgid "Invalid numeric uid \"%s\"!"
msgstr "uid numérique invalide « %s » !"
@@ -4168,7 +4226,11 @@ msgstr "Erreur à la récupération du contexte de nscd"
msgid "Error getting sid from context"
msgstr "erreur de récupération du sid depuis le contexte"
-#: nscd/selinux.c:399
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr "il manque le support du temps de compilation pour la politique de base de données"
+
+#: nscd/selinux.c:407
#, c-format
msgid ""
"\n"
@@ -4214,28 +4276,24 @@ msgid "Service configuration to be used"
msgstr "Configuration de service à utiliser"
#: nss/getent.c:62
-msgid ""
-"Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Récupère les entrées depuis la base de données administrateur.\vPour les instructions de rapport de bug, SVP voir :\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get entries from administrative database."
+msgstr "Obtient des entrées de la base de données administrative"
-#: nss/getent.c:145 nss/getent.c:394
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
msgid "Enumeration not supported on %s\n"
msgstr "Énumération non supportée sur %s\n"
-#: nss/getent.c:782
+#: nss/getent.c:794
#, c-format
msgid "Unknown database name"
msgstr "Base de données inconnue"
-#: nss/getent.c:808
+#: nss/getent.c:820
msgid "Supported databases:\n"
msgstr "Base de données supportées :\n"
-#: nss/getent.c:868
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
msgstr "Base de données inconnue : « %s »\n"
@@ -4309,151 +4367,165 @@ msgstr "Usage : %s [-v spécification] nom_de_variable [chemin_d_accès]\n"
msgid " %s -a [pathname]\n"
msgstr " %s -a [pathname]\n"
-#: posix/getconf.c:1067
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
+"Usage : getconf [-v SPEC] VAR\n"
+" ou : getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Obtient la valeur de configuration de la variable VAR, ou la variable PATH_VAR\n"
+"avec le chemin PATH. Si SPEC est indiqué,donne les valeurs pour l'environnement\n"
+"de compilation SPEC.\n"
+"\n"
+
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
msgstr "spécification inconnu « %s »"
-#: posix/getconf.c:1095
+#: posix/getconf.c:1109
#, c-format
msgid "Couldn't execute %s"
msgstr "N'a pas pu exécuter %s"
-#: posix/getconf.c:1135 posix/getconf.c:1151
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
msgstr "indéfini"
-#: posix/getconf.c:1173
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
msgstr "Variable non reconnue « %s »"
-#: posix/getopt.c:571 posix/getopt.c:587
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s : l'option « %s » est ambiguë\n"
-#: posix/getopt.c:620 posix/getopt.c:624
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s : l'option « --%s » ne permet pas d'argument\n"
-#: posix/getopt.c:633 posix/getopt.c:638
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s : l'option « %c%s » ne permet pas d'argument.\n"
+msgstr "%s : l'option « %c%s » ne permet pas d'argument\n"
-#: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
-#: posix/getopt.c:1035
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s : l'option « %s » requiert un argument\n"
-#: posix/getopt.c:738 posix/getopt.c:741
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s : option non reconnue « --%s »\n"
-#: posix/getopt.c:749 posix/getopt.c:752
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s : option non reconnue « %c%s »\n"
-#: posix/getopt.c:804 posix/getopt.c:807
-#, c-format
-msgid "%s: illegal option -- '%c'\n"
-msgstr "%s : option non permise -- %c\n"
-
-#: posix/getopt.c:813 posix/getopt.c:816
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
msgid "%s: invalid option -- '%c'\n"
-msgstr "%s : option invalide -- %c\n"
+msgstr "%s : option invalide -- '%c'\n"
-#: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
-#: posix/getopt.c:1106
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s : l'option requiert un argument -- %c\n"
-#: posix/getopt.c:937 posix/getopt.c:953
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s : l'option « -W %s » est ambiguë\n"
-#: posix/getopt.c:977 posix/getopt.c:995
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s : l'option « -W %s » ne permet pas d'argument\n"
-#: posix/regcomp.c:135
+#: posix/regcomp.c:136
msgid "No match"
msgstr "Pas de concordance"
-#: posix/regcomp.c:138
+#: posix/regcomp.c:139
msgid "Invalid regular expression"
msgstr "Expression régulière invalide"
-#: posix/regcomp.c:141
+#: posix/regcomp.c:142
msgid "Invalid collation character"
msgstr "Caractère de fusionnement invalide"
-#: posix/regcomp.c:144
+#: posix/regcomp.c:145
msgid "Invalid character class name"
msgstr "Nom de classe de caractères invalide"
-#: posix/regcomp.c:147
+#: posix/regcomp.c:148
msgid "Trailing backslash"
msgstr "Barre oblique inverse en suffixe"
-#: posix/regcomp.c:150
+#: posix/regcomp.c:151
msgid "Invalid back reference"
msgstr "Référence arrière invalide"
-#: posix/regcomp.c:153
+#: posix/regcomp.c:154
msgid "Unmatched [ or [^"
msgstr "Échec du pairage de [ ou de [^"
-#: posix/regcomp.c:156
+#: posix/regcomp.c:157
msgid "Unmatched ( or \\("
msgstr "Échec du pairage de ( ou de \\("
-#: posix/regcomp.c:159
+#: posix/regcomp.c:160
msgid "Unmatched \\{"
msgstr "Échec du pairage de \\{"
-#: posix/regcomp.c:162
+#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
msgstr "Contenu invalide de \\{\\}"
-#: posix/regcomp.c:165
+#: posix/regcomp.c:166
msgid "Invalid range end"
msgstr "Fin d'intervalle invalide"
-#: posix/regcomp.c:168
+#: posix/regcomp.c:169
msgid "Memory exhausted"
msgstr "Mémoire épuisée"
-#: posix/regcomp.c:171
+#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
msgstr "Expression régulière précédente invalide"
-#: posix/regcomp.c:174
+#: posix/regcomp.c:175
msgid "Premature end of regular expression"
msgstr "Fin prématurée de l'expression régulière"
-#: posix/regcomp.c:177
+#: posix/regcomp.c:178
msgid "Regular expression too big"
msgstr "Expression régulière trop grosse"
-#: posix/regcomp.c:180
+#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
msgstr "Échec du pairage de ) ou de \\)"
-#: posix/regcomp.c:660
+#: posix/regcomp.c:681
msgid "No previous regular expression"
msgstr "Aucune expression régulière précédente"
-#: posix/wordexp.c:1798
+#: posix/wordexp.c:1832
msgid "parameter null or not set"
msgstr "paramètre nul ou non initialisé"
@@ -4537,133 +4609,138 @@ msgstr "Signal de Temps-Réel %d"
msgid "Unknown signal %d"
msgstr "Signal inconnu %d"
-#: sunrpc/auth_unix.c:114
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create : mémoire épuisée\n"
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "mémoire épuisée\n"
#: sunrpc/auth_unix.c:350
msgid "auth_unix.c: Fatal marshalling problem"
msgstr "auth_unix.c : Problème fatal de mise en ordre"
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; version basse = %lu, version haute = %lu"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s : %s; version basse = %lu, version haute = %lu"
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr "; pourquoi = "
+#: sunrpc/clnt_perr.c:112
+#, c-format
+msgid "%s: %s; why = %s\n"
+msgstr "%s : %s; pourquoi = %s\n"
-#: sunrpc/clnt_perr.c:132
+#: sunrpc/clnt_perr.c:114
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(erreur inconnue d'authentification - %d)"
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s : %s; pourquoi = (erreur inconnue d'authentification - %d)\n"
-#: sunrpc/clnt_perr.c:172
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
msgstr "RPC : succès"
-#: sunrpc/clnt_perr.c:175
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
msgstr "RPC : ne peut encoder les arguments"
-#: sunrpc/clnt_perr.c:179
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
msgstr "RPC : ne peut décoder le résultat"
-#: sunrpc/clnt_perr.c:183
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
msgstr "RPC : incapable d'effectuer la transmission"
-#: sunrpc/clnt_perr.c:187
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
msgstr "RPC : incapable d'effectuer la réception"
-#: sunrpc/clnt_perr.c:191
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
msgstr "RPC : expiration du délai de la minuterie"
-#: sunrpc/clnt_perr.c:195
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
msgstr "RPC : versions incompatibles de RPC"
-#: sunrpc/clnt_perr.c:199
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
msgstr "RPC : erreur d'authentification"
-#: sunrpc/clnt_perr.c:203
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
msgstr "RPC : le programme n'est pas disponible"
-#: sunrpc/clnt_perr.c:207
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
msgstr "RPC : non concordance de programme ou de version"
-#: sunrpc/clnt_perr.c:211
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
msgstr "RPC : la procédure n'est pas disponible"
-#: sunrpc/clnt_perr.c:215
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
msgstr "RPC : le serveur ne peut décoder les arguments"
-#: sunrpc/clnt_perr.c:219
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
msgstr "RPC : erreur système sur l'hôte cible"
-#: sunrpc/clnt_perr.c:223
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
msgstr "RPC : hôte inconnu"
-#: sunrpc/clnt_perr.c:227
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
msgstr "RPC : protocole inconnu"
-#: sunrpc/clnt_perr.c:231
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
msgstr "RPC : échec de conversion de ports"
-#: sunrpc/clnt_perr.c:235
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
msgstr "RPC : le programme n'est pas enregistré"
-#: sunrpc/clnt_perr.c:239
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
msgstr "RPC : échec (erreur non spécifiée)"
-#: sunrpc/clnt_perr.c:280
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
msgstr "RPC : (code d'erreur inconnu)"
-#: sunrpc/clnt_perr.c:342
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
msgstr "Succès d'authentification"
-#: sunrpc/clnt_perr.c:345
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
msgstr "Identité du client invalide"
-#: sunrpc/clnt_perr.c:349
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
msgstr "Le serveur a rejeté l'identité"
-#: sunrpc/clnt_perr.c:353
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
msgstr "Vérificateur du client invalide"
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
msgstr "Le server a rejeté la vérification"
-#: sunrpc/clnt_perr.c:361
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
msgstr "Identité du client peu fiable"
-#: sunrpc/clnt_perr.c:365
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
msgstr "Vérificateur du serveur invalide"
-#: sunrpc/clnt_perr.c:369
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
msgstr "Échec (erreur non spécifiée)"
@@ -4671,18 +4748,6 @@ msgstr "Échec (erreur non spécifiée)"
msgid "clnt_raw.c: fatal header serialization error"
msgstr "clnt_raw.c : Erreur fatale de sérialisation d'en-tête"
-#: sunrpc/clnt_tcp.c:131
-msgid "clnttcp_create: out of memory\n"
-msgstr "clnttcp_create : mémoire épuisée\n"
-
-#: sunrpc/clnt_udp.c:139
-msgid "clntudp_create: out of memory\n"
-msgstr "clntudp_create : mémoire épuisée\n"
-
-#: sunrpc/clnt_unix.c:128
-msgid "clntunix_create: out of memory\n"
-msgstr "clntunix_create : mémoire épuisée\n"
-
#: sunrpc/pm_getmaps.c:83
msgid "pmap_getmaps.c: rpc problem"
msgstr "pmap_getmaps.c : problème RPC"
@@ -4711,119 +4776,242 @@ msgstr "Problème de scrutation lors de la diffusion"
msgid "Cannot receive reply to broadcast"
msgstr "Ne peut recevoir l'accusé réception à la requête faite par diffusion"
-#: sunrpc/rpc_main.c:286
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr "%s : la sortie écraserait %s\n"
-#: sunrpc/rpc_main.c:293
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr "%s : incapable d'ouvrir %s : %m\n"
-#: sunrpc/rpc_main.c:305
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
msgstr "%s : lors de l'écriture sur la sortie %s : %m"
-#: sunrpc/rpc_main.c:340
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
msgstr "Ne peut trouver le préprocesseur C : %s\n"
-#: sunrpc/rpc_main.c:348
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
msgstr "Ne peut trouver un préprocesseur C (cpp)\n"
-#: sunrpc/rpc_main.c:417
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
msgstr "%s : échec du préprocesseur C -- code de terminaison : %d\n"
-#: sunrpc/rpc_main.c:420
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
msgstr "%s : échec du préprocesseur C -- code de terminaison : %d\n"
-#: sunrpc/rpc_main.c:460
+#: sunrpc/rpc_main.c:464
#, c-format
msgid "illegal nettype: `%s'\n"
msgstr "« nettype » non permis :« %s »\n"
-#: sunrpc/rpc_main.c:1122
+#: sunrpc/rpc_main.c:1130
#, c-format
msgid "rpcgen: too many defines\n"
msgstr "rpcgen : trop de définitions\n"
-#: sunrpc/rpc_main.c:1134
+#: sunrpc/rpc_main.c:1142
#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr "rpcgen : erreur dans la liste d'arguments de codage\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1167
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
msgstr "Le fichier « %s » existe déjà et peut avoir été écrasé.\n"
-#: sunrpc/rpc_main.c:1212
+#: sunrpc/rpc_main.c:1220
#, c-format
msgid "Cannot specify more than one input file!\n"
msgstr "Ne peut spécifier plus d'un fichier d'entrée!\n"
-#: sunrpc/rpc_main.c:1382
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
msgstr "Cette implantation ne supporte pas le nouveau style ou le code MT-safe!\n"
-#: sunrpc/rpc_main.c:1391
+#: sunrpc/rpc_main.c:1403
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
msgstr "Ne utiliser le sémaphore « netid » avec le sémaphore « inetd » !\n"
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
msgstr "Ne peut utiliser le sémaphore « netid » sans « TIRPC » !\n"
-#: sunrpc/rpc_main.c:1410
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
msgstr "Ne peut utiliser la table des sémaphores avec « newstyle » !\n"
-#: sunrpc/rpc_main.c:1429
+#: sunrpc/rpc_main.c:1441
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
msgstr "\"fichier_d_entrée\" est requis pour la génération du gabarit des indicateurs.\n"
-#: sunrpc/rpc_main.c:1434
+#: sunrpc/rpc_main.c:1446
#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr "Ne peut avoir plus d'un fichier de génération de sémaphores!\n"
-#: sunrpc/rpc_main.c:1443
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
msgstr "usage : %s fichier_d_entrée\n"
-#: sunrpc/rpc_main.c:1444
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
msgstr "\t%s [-abkCLNTM][-Dname[=valeur]] [-i taille] [-I [-K secondes]] [-Y chemin] fichier\n"
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o fichier_de_sortie] [fichier_d_entrée]\n"
-#: sunrpc/rpc_main.c:1448
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
msgstr "\t%s [-s type_réseau]* [-o fichier_de_sortie] [fichier_d_entrée]\n"
-#: sunrpc/rpc_main.c:1449
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
msgstr "\t%s [-n id_réseau]* [-o fichier_de_sortie] [fichier_d_entrée]\n"
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr "options :\n"
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr "-a\t\tgénère tout fichiers, y compris exemples\n"
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr "-b\t\tmode de compatibilité descendante (génère du code pour Sun0S 4.1)\n"
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr "-c\t\tgénère des routines XDR\n"
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr "-C\t\tmode ANSI C\n"
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr "-Dname[=valeur]\tdéfinit un symbole (pareil que #define)\n"
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr "-h\t\tgénère le fichier d'entête\n"
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr "-i size\t\ttaille à laquelle débute la génération du code en ligne\n"
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr "-I\t\tgénère du code pour le support de inetd sur serveur (pour SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr "-K secondes\tserveur quitte après K secondes d'inactivité\n"
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr "-l\t\tgénère des squelettes de code du côté client\n"
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr "-L\t\tles erreurs du serveur seront dirigées vers syslog\n"
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr "-m\t\tgénère des squelettes de code du côté serveur\n"
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr "-M\t\tgénère le code MT-safe\n"
+
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr "-n netid\tgénère le code serveur qui supporte netid nommé\n"
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr "-N\t\tsupporte des arguments multiples et call-by-value\n"
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr "-o outfile\tnom du fichier de sortie\n"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr "-s nettype\tgénère le code serveur qui supporte nettype nommé\n"
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr "-Sc\t\tgénère du code échantillon client qui utilise des procédures éloignées\n"
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr "-Ss\t\tgénère du code échantillon serveur qui définit des procédures éloignées\n"
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr "-Sm \t\tgénère un patron de makefile\n"
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr "-t\t\tgénère la table de distribution RPC\n"
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr "-T\t\tgénère le code qui supporte les tables de distribution RPC\n"
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr "-Y path\t\tnom de répertoire pour trouver un préprocesseur C (cpp)\n"
+
#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
msgstr "Constante ou identificateur attendu"
@@ -4844,79 +5032,79 @@ msgstr "Chaîne vide de caractères"
msgid "preprocessor error"
msgstr "Erreur du préprocesseur"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
msgstr "Le programme %lu n'est pas disponible.\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
msgstr "Le programme %lu de version %lu n'est pas disponible.\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr "Le programme %lu de version %lu est prêt et en attente.\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
msgstr "rpcinfo : ne peut contacter l'aiguilleur de ports"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
msgstr "Aucun programme enregistré sur l'hôte cible\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
msgstr " program no_version protocole no_port\n"
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
msgstr "(inconnu)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
msgstr "rpcinfo : échec de diffusion : %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
msgstr "Désolé. Vous n'êtes pas ROOT\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
msgstr "rpcinfo : ne peut éliminer l'enregistrement du programme %s de version %s\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
msgstr "Usage : rpcinfo [ -n no_port ] -u hôte no_prog [ no_version ]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr " rpcinfo [ -n no_de_port ] -t hôte no_program [ no_version ]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
msgstr " rpcinfo -p [ hôte ]\n"
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
msgstr " rpcinfo -b no_program no_version\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
msgstr " rpcinfo -d no_program no_version\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr "rpcinfo : %s est un service inconnu\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
msgstr "rpcinfo : %s est un hôte inconnu\n"
@@ -4965,14 +5153,6 @@ msgstr "svc_tcp.c - problème de création d'un socket TCP"
msgid "svc_tcp.c - cannot getsockname or listen"
msgstr "svc_tcp.c - ne peut repérer le nom du socket par getsockname() ou listen()"
-#: sunrpc/svc_tcp.c:179
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create : mémoire épuisée\n"
-
-#: sunrpc/svc_tcp.c:218
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp : makefd_xprt : mémoire épuisée\n"
-
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
msgstr "svcudp_create : problème de création du socket"
@@ -4981,39 +5161,35 @@ msgstr "svcudp_create : problème de création du socket"
msgid "svcudp_create - cannot getsockname"
msgstr "svcudp_create - ne peut repérer le nom du socket par getsockname()"
-#: sunrpc/svc_udp.c:152
-msgid "svcudp_create: out of memory\n"
-msgstr "svctcp_create : mémoire épuisée\n"
-
-#: sunrpc/svc_udp.c:174
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
msgstr "svcudp_create : xp_pad est trop petit pour IP_PKTINFO\n"
-#: sunrpc/svc_udp.c:474
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
msgstr "enablecache : cache déjà activée"
-#: sunrpc/svc_udp.c:480
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
msgstr "enablecache : ne peut allouer une cache"
-#: sunrpc/svc_udp.c:489
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
msgstr "enablecache : ne peut allouer une cache de données"
-#: sunrpc/svc_udp.c:497
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
msgstr "enablecache : ne peut allouer une cache de type fifo"
-#: sunrpc/svc_udp.c:532
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
msgstr "cache_set : « victim » non repéré"
-#: sunrpc/svc_udp.c:543
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
msgstr "cache_set : échec d'allocation de « victim »"
-#: sunrpc/svc_udp.c:550
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
msgstr "cache_set : ne peut allouer une nouveau tampon rpc_buffer"
@@ -5025,34 +5201,6 @@ msgstr "svc_unix.c - problème de création d'un socket « AF_UNIX »"
msgid "svc_unix.c - cannot getsockname or listen"
msgstr "svc_unix.c - ne peut repérer le nom du socket par getsockname() ou listen()"
-#: sunrpc/svc_unix.c:176
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create : mémoire épuisée\n"
-
-#: sunrpc/svc_unix.c:215
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix : makefd_xprt : mémoire épuisée\n"
-
-#: sunrpc/xdr.c:566
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes : mémoire épuisée\n"
-
-#: sunrpc/xdr.c:718
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string : mémoire épuisée\n"
-
-#: sunrpc/xdr_array.c:106
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array : mémoire épuisée\n"
-
-#: sunrpc/xdr_rec.c:156
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create : mémoire épuisée\n"
-
-#: sunrpc/xdr_ref.c:86
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_reference : mémoire épuisée\n"
-
#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
msgid "Hangup"
msgstr "Fin de la connexion (raccroché)"
@@ -6114,76 +6262,85 @@ msgstr "%s est pour une machine inconnue %d.\n"
msgid "makecontext: does not know how to handle more than 8 arguments\n"
msgstr "makecontext : ne sait pas comment traiter plus de 8 arguments\n"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
+"Usage : lddlibc4 FILE\n"
+"\n"
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
msgid "cannot open `%s'"
msgstr "Ne peut ouvrir « %s »"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
msgid "cannot read header from `%s'"
msgstr "Ne peut lire l'en-tête de « %s »"
-#: timezone/zdump.c:211
+#: timezone/zdump.c:210
msgid "lacks alphabetic at start"
msgstr "Il manque un lettre de l'alphabet au début"
-#: timezone/zdump.c:213
+#: timezone/zdump.c:212
msgid "has fewer than 3 alphabetics"
msgstr "a moins de 3 lettres alphabétiques"
-#: timezone/zdump.c:215
+#: timezone/zdump.c:214
msgid "has more than 6 alphabetics"
msgstr "a plus de 6 lettres alphabétiques"
-#: timezone/zdump.c:223
+#: timezone/zdump.c:222
msgid "differs from POSIX standard"
msgstr "diffère du standard POSIX"
-#: timezone/zdump.c:229
+#: timezone/zdump.c:228
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
msgstr "%s : attention : zone \"%s\" abréviation \"%s\" %s\n"
-#: timezone/zdump.c:280
+#: timezone/zdump.c:279
#, c-format
msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
msgstr "%s : usage est %s [ --version ] [ -v ] [ -c [AnnéeBasse,]AnnéeHaute ] nom_du_fuseau_horaire ...\n"
-#: timezone/zdump.c:297
+#: timezone/zdump.c:296
#, c-format
msgid "%s: wild -c argument %s\n"
msgstr "%s : argument -c intempestif %s\n"
-#: timezone/zdump.c:388
+#: timezone/zdump.c:387
msgid "Error writing to standard output"
msgstr "Erreur d'écriture sur la sortie standard"
-#: timezone/zdump.c:411
+#: timezone/zdump.c:410
#, c-format
msgid "%s: use of -v on system with floating time_t other than float or double\n"
msgstr "%s : usage de -v sur un système avec time_t flottant autre que float ou double\n"
-#: timezone/zic.c:392
+#: timezone/zic.c:388
#, c-format
msgid "%s: Memory exhausted: %s\n"
msgstr "%s : mémoire épuisée : %s\n"
-#: timezone/zic.c:451
+#: timezone/zic.c:434
#, c-format
msgid "\"%s\", line %d: %s"
msgstr "« %s », ligne %d : %s"
-#: timezone/zic.c:454
+#: timezone/zic.c:437
#, c-format
msgid " (rule from \"%s\", line %d)"
msgstr " (règles de « %s », ligne %d)"
-#: timezone/zic.c:466
+#: timezone/zic.c:449
msgid "warning: "
msgstr "AVERTISSEMENT : "
-#: timezone/zic.c:476
+#: timezone/zic.c:459
#, c-format
msgid ""
"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
@@ -6192,342 +6349,342 @@ msgstr ""
"%s : l'usage is %s [ --version ] [ -v ] [ -l temps_local ] [ -p règles_posix ] \\\n"
"\t[ -d dossier ] [ -L secondes_écoulées ] [ -y type_année ] [ fichier ... ]\n"
-#: timezone/zic.c:511
+#: timezone/zic.c:494
msgid "wild compilation-time specification of zic_t"
msgstr "compilation sauvage-specification du temps de zic_t"
-#: timezone/zic.c:528
+#: timezone/zic.c:511
#, c-format
msgid "%s: More than one -d option specified\n"
msgstr "%s : option -d spécifiée plus d'une fois\n"
-#: timezone/zic.c:538
+#: timezone/zic.c:521
#, c-format
msgid "%s: More than one -l option specified\n"
msgstr "%s : option -l spécifiée plus d'une fois\n"
-#: timezone/zic.c:548
+#: timezone/zic.c:531
#, c-format
msgid "%s: More than one -p option specified\n"
msgstr "%s : option -p spécifiée plus d'une fois\n"
-#: timezone/zic.c:558
+#: timezone/zic.c:541
#, c-format
msgid "%s: More than one -y option specified\n"
msgstr "%s : option -y spécifiée plus d'une fois\n"
-#: timezone/zic.c:568
+#: timezone/zic.c:551
#, c-format
msgid "%s: More than one -L option specified\n"
msgstr "%s : option -L spécifiée plus d'une fois\n"
-#: timezone/zic.c:617
+#: timezone/zic.c:600
msgid "link to link"
msgstr "lien à lien"
-#: timezone/zic.c:682
+#: timezone/zic.c:665
msgid "hard link failed, symbolic link used"
msgstr "Échec de création du lien direct, création d'un lien symbolique"
-#: timezone/zic.c:690
+#: timezone/zic.c:673
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
msgstr "%s : ne peut établir un lien entre %s et %s : %s\n"
-#: timezone/zic.c:762 timezone/zic.c:764
+#: timezone/zic.c:745 timezone/zic.c:747
msgid "same rule name in multiple files"
msgstr "Même nom de règle dans plusieurs fichiers"
-#: timezone/zic.c:805
+#: timezone/zic.c:788
msgid "unruly zone"
msgstr "Zone sans règle"
-#: timezone/zic.c:812
+#: timezone/zic.c:795
#, c-format
msgid "%s in ruleless zone"
msgstr "%s est dans une zone sans règle"
-#: timezone/zic.c:833
+#: timezone/zic.c:816
msgid "standard input"
msgstr "entrée standard"
-#: timezone/zic.c:838
+#: timezone/zic.c:821
#, c-format
msgid "%s: Can't open %s: %s\n"
msgstr "%s : ne peut ouvrir %s : %s\n"
-#: timezone/zic.c:849
+#: timezone/zic.c:832
msgid "line too long"
msgstr "Ligne trop longue"
-#: timezone/zic.c:869
+#: timezone/zic.c:852
msgid "input line of unknown type"
msgstr "Ligne d'entrée de type inconnu"
-#: timezone/zic.c:885
+#: timezone/zic.c:868
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
msgstr ""
"%s : ligne de type « Leap » dans un fichier qui n'a pas\n"
"de délai en secondes %s\n"
-#: timezone/zic.c:892 timezone/zic.c:1329 timezone/zic.c:1351
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
msgstr "%s : panique : valeur %d de type « l_value » invalide\n"
-#: timezone/zic.c:900
+#: timezone/zic.c:883
#, c-format
msgid "%s: Error reading %s\n"
msgstr "%s : erreur de lecture de %s\n"
-#: timezone/zic.c:907
+#: timezone/zic.c:890
#, c-format
msgid "%s: Error closing %s: %s\n"
msgstr "%s : erreur lors de la fermeture de %s : %s\n"
-#: timezone/zic.c:912
+#: timezone/zic.c:895
msgid "expected continuation line not found"
msgstr "ligne de continuation attendue, non repérée"
-#: timezone/zic.c:956 timezone/zic.c:2489 timezone/zic.c:2508
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
msgid "time overflow"
msgstr "Débordement du temps alloué"
-#: timezone/zic.c:960
+#: timezone/zic.c:943
msgid "24:00 not handled by pre-1998 versions of zic"
msgstr "24 : 00 non pris en charge par les versions de zic antérieures à1998 "
-#: timezone/zic.c:963
+#: timezone/zic.c:946
msgid "values over 24 hours not handled by pre-2007 versions of zic"
msgstr "valeurs au-delà de 24 heures non prises en charge par les versions de zic antérieures à 2007"
-#: timezone/zic.c:976
+#: timezone/zic.c:959
msgid "wrong number of fields on Rule line"
msgstr "Mauvais nombre de champs sur la ligne de type « Rule »"
-#: timezone/zic.c:980
+#: timezone/zic.c:963
msgid "nameless rule"
msgstr "Règle sans nom"
-#: timezone/zic.c:985
+#: timezone/zic.c:968
msgid "invalid saved time"
msgstr "Temps sauvegardé invalide"
-#: timezone/zic.c:1006
+#: timezone/zic.c:989
msgid "wrong number of fields on Zone line"
msgstr "Mauvais nombre de champs sur la ligne de type « Zone »"
-#: timezone/zic.c:1012
+#: timezone/zic.c:995
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
msgstr "La ligne \"Zone %s\" et l'option -l sont mutuellement exclusifs"
-#: timezone/zic.c:1020
+#: timezone/zic.c:1003
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
msgstr "La ligne \"Zone %s\" et l'option -p sont mutuellement exclusifs"
-#: timezone/zic.c:1032
+#: timezone/zic.c:1015
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
msgstr "Double noms de zone %s (fichier « %s », ligne %d)"
-#: timezone/zic.c:1048
+#: timezone/zic.c:1031
msgid "wrong number of fields on Zone continuation line"
msgstr "Mauvais nombre de champs sur la ligne de type continuation de « Zone »"
-#: timezone/zic.c:1088
+#: timezone/zic.c:1071
msgid "invalid UTC offset"
msgstr "Adressage relatif GMT invalide"
-#: timezone/zic.c:1091
+#: timezone/zic.c:1074
msgid "invalid abbreviation format"
msgstr "Format d'abréviation invalide"
-#: timezone/zic.c:1120
+#: timezone/zic.c:1103
msgid "Zone continuation line end time is not after end time of previous line"
msgstr ""
"Temps final de la ligne de continuation du fuseau horaire est antérieur\n"
"au temps final de la ligne précédente"
-#: timezone/zic.c:1148
+#: timezone/zic.c:1131
msgid "wrong number of fields on Leap line"
msgstr "Mauvais nombre de champs sur la ligne de type « Leap »"
-#: timezone/zic.c:1157
+#: timezone/zic.c:1140
msgid "invalid leaping year"
msgstr "Année bissextile invalide"
-#: timezone/zic.c:1177 timezone/zic.c:1283
+#: timezone/zic.c:1160 timezone/zic.c:1266
msgid "invalid month name"
msgstr "Nom de mois invalide"
-#: timezone/zic.c:1190 timezone/zic.c:1396 timezone/zic.c:1410
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
msgid "invalid day of month"
msgstr "Jour du mois invalide"
# time/zic.c:1120A
-#: timezone/zic.c:1195
+#: timezone/zic.c:1178
msgid "time before zero"
msgstr "Temps défini avant le zéro"
-#: timezone/zic.c:1199
+#: timezone/zic.c:1182
msgid "time too small"
msgstr "valeur de temps trop petite"
-#: timezone/zic.c:1203
+#: timezone/zic.c:1186
msgid "time too large"
msgstr "valeur de temps trop grande"
-#: timezone/zic.c:1207 timezone/zic.c:1312
+#: timezone/zic.c:1190 timezone/zic.c:1295
msgid "invalid time of day"
msgstr "Heure du jour invalide"
-#: timezone/zic.c:1226
+#: timezone/zic.c:1209
msgid "illegal CORRECTION field on Leap line"
msgstr "champ CORRECTION non permis dans la ligne de type « Leap »"
-#: timezone/zic.c:1231
+#: timezone/zic.c:1214
msgid "illegal Rolling/Stationary field on Leap line"
msgstr "Champ « Rolling/Stationary » non permis sur la ligne de type « Leap »"
-#: timezone/zic.c:1247
+#: timezone/zic.c:1230
msgid "wrong number of fields on Link line"
msgstr "Mauvais nombre de champs sur la ligne de type « Link »"
-#: timezone/zic.c:1251
+#: timezone/zic.c:1234
msgid "blank FROM field on Link line"
msgstr "Champ « FROM » vide dans la ligne de type « Link »"
-#: timezone/zic.c:1255
+#: timezone/zic.c:1238
msgid "blank TO field on Link line"
msgstr "Champ « TO » vide dans la ligne de type « Link »"
-#: timezone/zic.c:1333
+#: timezone/zic.c:1316
msgid "invalid starting year"
msgstr "Année initiale invalide"
-#: timezone/zic.c:1355
+#: timezone/zic.c:1338
msgid "invalid ending year"
msgstr "Année finale invalide"
-#: timezone/zic.c:1359
+#: timezone/zic.c:1342
msgid "starting year greater than ending year"
msgstr "année initiale plus grande que l'année finale"
-#: timezone/zic.c:1366
+#: timezone/zic.c:1349
msgid "typed single year"
msgstr "une seule année fournie"
-#: timezone/zic.c:1401
+#: timezone/zic.c:1384
msgid "invalid weekday name"
msgstr "Nom du jour de semaine invalide"
-#: timezone/zic.c:1579
+#: timezone/zic.c:1562
#, c-format
msgid "%s: Can't remove %s: %s\n"
msgstr "%s : ne peut enlever %s : %s\n"
-#: timezone/zic.c:1589
+#: timezone/zic.c:1572
#, c-format
msgid "%s: Can't create %s: %s\n"
msgstr "%s : ne peut créer %s : %s\n"
-#: timezone/zic.c:1739
+#: timezone/zic.c:1722
#, c-format
msgid "%s: Error writing %s\n"
msgstr "%s : erreur d'écriture de %s\n"
-#: timezone/zic.c:2031
+#: timezone/zic.c:2015
msgid "no POSIX environment variable for zone"
msgstr "pas de variable d'environnement POSIX pour zone"
-#: timezone/zic.c:2185
+#: timezone/zic.c:2172
msgid "can't determine time zone abbreviation to use just after until time"
msgstr ""
"Ne peut déterminer l'abréviation du fuseau horaire à utiliser\n"
"juste après telle date"
-#: timezone/zic.c:2231
+#: timezone/zic.c:2218
msgid "too many transitions?!"
msgstr "trop de transitions définies ? !"
-#: timezone/zic.c:2250
+#: timezone/zic.c:2237
msgid "internal error - addtype called with bad isdst"
msgstr "Erreur interne - addtype() appellé avec un mauvais bloc de type « isdst »"
-#: timezone/zic.c:2254
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad ttisstd"
msgstr "Erreur interne - addtype() appellé avec un mauvais bloc de type « ttisstd »"
-#: timezone/zic.c:2258
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisgmt"
msgstr "Erreur interne - addtype() appellé avec un mauvais bloc de type « ttisgmt »"
-#: timezone/zic.c:2277
+#: timezone/zic.c:2264
msgid "too many local time types"
msgstr "trop de types localisés pour la représentation du temps"
-#: timezone/zic.c:2281
+#: timezone/zic.c:2268
msgid "UTC offset out of range"
msgstr "UTC décalage en dehors de la plage"
-#: timezone/zic.c:2309
+#: timezone/zic.c:2296
msgid "too many leap seconds"
msgstr "trop de délai en secondes"
-#: timezone/zic.c:2315
+#: timezone/zic.c:2302
msgid "repeated leap second moment"
msgstr "Répétition du délai une seconde fois"
-#: timezone/zic.c:2367
+#: timezone/zic.c:2354
msgid "Wild result from command execution"
msgstr "Résultat anarchique résultant de l'exécution de la commande"
-#: timezone/zic.c:2368
+#: timezone/zic.c:2355
#, c-format
msgid "%s: command was '%s', result was %d\n"
msgstr "%s : la commande était « %s », le résultat était %d\n"
-#: timezone/zic.c:2466
+#: timezone/zic.c:2453
msgid "Odd number of quotation marks"
msgstr "Nombre impair de caractères apostrophe"
-#: timezone/zic.c:2555
+#: timezone/zic.c:2542
msgid "use of 2/29 in non leap-year"
msgstr "Utiliser 2/29 pour les années non-bissextiles"
-#: timezone/zic.c:2590
+#: timezone/zic.c:2577
msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
msgstr "la règle en dehors de début/fin du mois--ne fonctionnera pas avec les versions de zic antérieures à 2004"
-#: timezone/zic.c:2622
+#: timezone/zic.c:2609
msgid "time zone abbreviation lacks alphabetic at start"
msgstr "l'abréviation du nom de fuseau horaire n'a pas de caractère alphabétique au début"
-#: timezone/zic.c:2624
+#: timezone/zic.c:2611
msgid "time zone abbreviation has more than 3 alphabetics"
msgstr "l'abréviation du nom de fuseau horaire a plus de 3 caractères alphabétiques"
-#: timezone/zic.c:2626
+#: timezone/zic.c:2613
msgid "time zone abbreviation has too many alphabetics"
msgstr "l'abréviation du nom de fuseau horaire a trop de caractères alphabétiques"
-#: timezone/zic.c:2636
+#: timezone/zic.c:2623
msgid "time zone abbreviation differs from POSIX standard"
msgstr "l'abréviation du nom de fuseau horaire diffère du standard POSIX"
-#: timezone/zic.c:2648
+#: timezone/zic.c:2635
msgid "too many, or too long, time zone abbreviations"
msgstr "trop ou de trop longues abréviations de fuseaux horaires"
-#: timezone/zic.c:2689
+#: timezone/zic.c:2676
#, c-format
msgid "%s: Can't create directory %s: %s\n"
msgstr "%s : ne peut créer le dossier %s : %s\n"
-#: timezone/zic.c:2711
+#: timezone/zic.c:2698
#, c-format
msgid "%s: %d did not sign extend correctly\n"
msgstr "%s : %d n'a pas fait correctement l'expansion de la valeur signée\n"
diff --git a/po/hu.po b/po/hu.po
index 054fadcb9e..743b843c87 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -1,5601 +1,6564 @@
-# Hungarian translation of GNU libc.
-# Copyright (C) 2002 Free Software Foundation, Inc.
-# Gábor István <stive@mezobereny.hu>, 2002.
+# Hungarian translation of libc
+# Copyright (C) 2003, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the glibc package.
#
+# Egmont Koblinger <egmont@uhulinux.hu>, 2002.
+# Gabor Kelemen <kelemeng@gnome.hu>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: libc-2.2.5\n"
-"POT-Creation-Date: 2001-08-17 13:03-0700\n"
-"PO-Revision-Date: 2002-09-16 14:09GMT\n"
-"Last-Translator: Gábor István <stive@mezobereny.hu>\n"
+"Project-Id-Version: libc 2.10.1\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-08-04 02:23+0200\n"
+"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 0.9.5\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: locale/programs/ld-monetary.c:278
+#: argp/argp-help.c:228
#, c-format
-msgid "\t\t\t\t\t\t\t %s: value for field `%s' must be in range %d...%d"
-msgstr "\t\t\t\t\t\t\t %s: a '%s' mezõ értéke %d és %d között kell, hogy legyen"
-
-#: nis/nis_print.c:277
-msgid "\t\tAccess Rights : "
-msgstr "\t\tElérési jogok : "
-
-#: nis/nis_print.c:275
-msgid "\t\tAttributes : "
-msgstr "\t\tAttribútumok : "
+msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
+msgstr "%.*s: Az ARGP_HELP_FMT paraméter értéket igényel"
-#: sunrpc/rpc_main.c:1427
+#: argp/argp-help.c:238
#, c-format
-msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
-msgstr "\t%s [-abkCLNTM][-Dnév[=érték]] [-i méret] [-I [-K másodperc]] [-Y útvonal] bemenet\n"
+msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
+msgstr "%.*s: Ismeretlen ARGP_HELP_FMT paraméter"
-#: sunrpc/rpc_main.c:1429
+#: argp/argp-help.c:251
#, c-format
-msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
-msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o kimenet] [bemenet]\n"
+msgid "Garbage in ARGP_HELP_FMT: %s"
+msgstr "Szemét az ARGP_HELP_FMT-ben: %s"
-#: sunrpc/rpc_main.c:1432
-#, c-format
-msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
-msgstr "\t%s [-n halóaz.]* [-o bemenet] [kimenet]\n"
+#: argp/argp-help.c:1215
+msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
+msgstr "Ha egy hosszú kapcsolóhoz kötelező vagy opcinális argumentumot megadni, akkor ez a megfelelő rövid kapcsolónál is kötelező vagy opcinális."
-#: sunrpc/rpc_main.c:1431
-#, c-format
-msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
-msgstr "\t%s [-s halótípus]* [-o kimenet [bemenet]\n"
+#: argp/argp-help.c:1601
+msgid "Usage:"
+msgstr "Használat:"
-#: nis/nis_print.c:239
-msgid "\tAccess rights: "
-msgstr "\tElérési jogok : "
+#: argp/argp-help.c:1605
+msgid " or: "
+msgstr " vagy: "
-#: nis/nis_print.c:297
+#: argp/argp-help.c:1617
+msgid " [OPTION...]"
+msgstr " [KAPCSOLÓ...]"
+
+#: argp/argp-help.c:1644
#, c-format
-msgid "\tEntry data of type %s\n"
-msgstr "\tAdattípus %s\n"
+msgid "Try `%s --help' or `%s --usage' for more information.\n"
+msgstr "További információkért lásd a(z) „%s --help†vagy „%s --usage†kimenetét.\n"
-#: nis/nis_print.c:175
+#: argp/argp-help.c:1672
#, c-format
-msgid "\tName : %s\n"
-msgstr "\tNév : %s\n"
+msgid "Report bugs to %s.\n"
+msgstr "A hibák itt jelenthetők: %s.\n"
-#: nis/nis_print.c:176
-msgid "\tPublic Key : "
-msgstr "\tNyilvános Kulcs : "
+#: argp/argp-parse.c:102
+msgid "Give this help list"
+msgstr "Ezen súgó megjelenítése"
-#: nis/nis_print.c:238
-#, c-format
-msgid "\tType : %s\n"
-msgstr "\tTípus : %s\n"
+#: argp/argp-parse.c:103
+msgid "Give a short usage message"
+msgstr "Rövid használati utasítás"
-#: nis/nis_print.c:205
-#, c-format
-msgid "\tUniversal addresses (%u)\n"
-msgstr "\tEgyetemes címek (%u)\n"
+#: argp/argp-parse.c:104
+msgid "Set the program name"
+msgstr "A programnév beállítása"
-#: nis/nis_print.c:273
+#: argp/argp-parse.c:106
+msgid "Hang for SECS seconds (default 3600)"
+msgstr "Várakozás MP másodpercig (alapértlemezés: 3600)"
+
+#: argp/argp-parse.c:167
+msgid "Print program version"
+msgstr "Programverzió kiírása"
+
+#: argp/argp-parse.c:183
+msgid "(PROGRAM ERROR) No version known!?"
+msgstr "(PROGRAMHIBA) A verzió nem ismert!"
+
+#: argp/argp-parse.c:623
#, c-format
-msgid "\t[%d]\tName : %s\n"
-msgstr "\t[%d]\tNév : %s\n"
+msgid "%s: Too many arguments\n"
+msgstr "%s: Túl sok argumentum\n"
+
+#: argp/argp-parse.c:766
+msgid "(PROGRAM ERROR) Option should have been recognized!?"
+msgstr "(PROGRAMHIBA) A kapcsolót ismerni kellene?"
-#: nis/nis_print.c:300
+#: assert/assert-perr.c:57
#, c-format
-msgid "\t[%u] - [%u bytes] "
-msgstr "\t[%u] - [%u bájt] "
+msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
+msgstr "%s%s%s:%u: %s%s Váratlan hiba: %s.\n"
-#: nscd/nscd_stat.c:154
+#: assert/assert.c:57
#, c-format
+msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
+msgstr "%s%s%s:%u: %s%sA(z) „%s†kijelentés meghiúsult.\n"
+
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
+msgid "NAME"
+msgstr "NÉV"
+
+#: catgets/gencat.c:111
+msgid "Create C header file NAME containing symbol definitions"
+msgstr "A szimbólumdefiníciókat tartalmazó NÉV nevű C fejlécfájl előállítása"
+
+#: catgets/gencat.c:113
+msgid "Do not use existing catalog, force new output file"
+msgstr "Ne használja a meglévő katalógust, új kimeneti fájl kényszerítése"
+
+#: catgets/gencat.c:114 nss/makedb.c:61
+msgid "Write output to file NAME"
+msgstr "A kimenet írása a NÉV nevű fájlba"
+
+#: catgets/gencat.c:119
msgid ""
-"\n"
-"%s cache:\n"
-"\n"
-"%15s cache is enabled\n"
-"%15Zd suggested size\n"
-"%15ld seconds time to live for positive entries\n"
-"%15ld seconds time to live for negative entries\n"
-"%15ld cache hits on positive entries\n"
-"%15ld cache hits on negative entries\n"
-"%15ld cache misses on positive entries\n"
-"%15ld cache misses on negative entries\n"
-"%15ld%% cache hit rate\n"
-"%15s check /etc/%s for changes\n"
+"Generate message catalog.\vIf INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
+"is -, output is written to standard output.\n"
msgstr ""
-"\n"
-"%s gyorstár\n"
-"\n"
-"%15s gyorstár engedélyezve\n"
-"%15Zd ajánlott méret\n"
-"%15ld másodpercig él a pozitív bejegyzés\n"
-"%15ld másodpercig él a negatív bejegyzés\n"
-"%15ld gyorstár találat pozitív bejegyzés esetén\n"
-"%15ld gyorstár találat negatív bejegyzés esetén\n"
-"%15ld gyorstár hiány pozitív bejegyzés esetén\n"
-"%15ld gyorstár hiány negatív bejegyzés esetén\n"
-"%15ld%% gyorstár találati arány\n"
-"%15s az /etc/%s változásainak az ellenõrzése\n"
-
-#: nis/nis_print.c:255
+"Ãœzenetkatalógus előállítása\v Ha a BEMENETIFÃJL a -, akkor a szabványos bemenetet olvassa. Ha a \n"
+"KIMENETIFÃJL a -, akkor a szabványos kimenetre ír.\n"
+
+#: catgets/gencat.c:124
msgid ""
-"\n"
-"Group Members :\n"
+"-o OUTPUT-FILE [INPUT-FILE]...\n"
+"[OUTPUT-FILE [INPUT-FILE]...]"
msgstr ""
-"\n"
-"Tagok :\n"
+"-o KIMENETIFÃJL [BEMENETIFÃJL]...\n"
+"[KIMENETIFÃJL [BEMENETIFÃJL]...]"
+
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
+msgid ""
+"For bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgstr ""
+"Hibajelentési utasításokért lásd:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: nis/nis_print.c:326
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
+#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
+#, c-format
msgid ""
-"\n"
-"Time to Live : "
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"This is free software; see the source for copying conditions. There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr ""
-"\n"
-"Élettartam : "
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"Ez egy szabad szoftver, lásd a forrást a másolási feltételekért. NINCS\n"
+"garancia, még az ADOTT CÉLRE VALÓ ELADHATÓSÃGRA VAGY MEGFELELÅSÉGRE SEM.\n"
-#: sunrpc/rpcinfo.c:679
-msgid " rpcinfo -b prognum versnum\n"
-msgstr " rpcinfo -b progszám verziószám\n"
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Ãrta: %s.\n"
-#: sunrpc/rpcinfo.c:680
-msgid " rpcinfo -d prognum versnum\n"
-msgstr " rpcinfo -d progszám verziószám\n"
+#: catgets/gencat.c:282
+msgid "*standard input*"
+msgstr "*szabványos bemenet*"
-#: sunrpc/rpcinfo.c:678
-msgid " rpcinfo -p [ host ]\n"
-msgstr " rpcinfo -p [ kiszolgáló ]\n"
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
+#: nss/makedb.c:170
+#, c-format
+msgid "cannot open input file `%s'"
+msgstr "a bemeneti fájl („%sâ€) nem nyitható meg"
-#: sunrpc/rpcinfo.c:676
-msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
-msgstr " rpcinfo [ -n portszám ] -t kiszolgáló progszám [ verziószám ]\n"
+#: catgets/gencat.c:417 catgets/gencat.c:494
+msgid "illegal set number"
+msgstr "érvénytelen halmazszám"
-#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
-msgid " no"
-msgstr " nem"
+#: catgets/gencat.c:444
+msgid "duplicate set definition"
+msgstr "többszörös halmazdefiníció"
-#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
-msgid " yes"
-msgstr " igen"
+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+msgid "this is the first definition"
+msgstr "ez az első definíció"
-#: nis/nis_print.c:352
+#: catgets/gencat.c:522
#, c-format
-msgid " Data Length = %u\n"
-msgstr " Adat Hossz = %u\n"
-
-#: nis/nis_print_group_entry.c:123
-msgid " Explicit members:\n"
-msgstr " Külsõ tagok:\n"
+msgid "unknown set `%s'"
+msgstr "ismeretlen halmaz: \"%s\""
-#: nis/nis_print_group_entry.c:147 nis/nis_print_group_entry.c:163
-msgid " Explicit nonmembers:\n"
-msgstr " Külsõ nem tagok:\n"
+#: catgets/gencat.c:563
+msgid "invalid quote character"
+msgstr "érvénytelen idézőjel-karakter"
-#: nis/nis_print_group_entry.c:131
-msgid " Implicit members:\n"
-msgstr " Belsõ tagok:\n"
+#: catgets/gencat.c:576
+#, c-format
+msgid "unknown directive `%s': line ignored"
+msgstr "ismeretlen utasítás (\"%s2): a sor kihagyva"
-#: nis/nis_print_group_entry.c:155
-msgid " Implicit nonmembers:\n"
-msgstr " Belsõ nem tagok:\n"
+#: catgets/gencat.c:621
+msgid "duplicated message number"
+msgstr "többszörös üzenetszám"
-#: nis/nis_print_group_entry.c:128
-msgid " No explicit members\n"
-msgstr " Nem belsõ tagok:\n"
+#: catgets/gencat.c:674
+msgid "duplicated message identifier"
+msgstr "többszörös üzenetazonosító"
-#: nis/nis_print_group_entry.c:152
-msgid " No explicit nonmembers\n"
-msgstr " Nem belsõ nem tagok:\n"
+#: catgets/gencat.c:731
+msgid "invalid character: message ignored"
+msgstr "érvénytelen karakter: az üzenet figyelmen kívül maradt"
-#: nis/nis_print_group_entry.c:136
-msgid " No implicit members\n"
-msgstr " Nem külsõ tagok:\n"
+#: catgets/gencat.c:774
+msgid "invalid line"
+msgstr "érvénytelen sor"
-#: nis/nis_print_group_entry.c:160
-msgid " No implicit nonmembers\n"
-msgstr " Nem külsõ nem tagok:\n"
+#: catgets/gencat.c:828
+msgid "malformed line ignored"
+msgstr "a rosszul formált sor figyelmen kívül maradt"
-#: nis/nis_print_group_entry.c:144
-msgid " No recursive members\n"
-msgstr " Nem rekurzív tagok\n"
+#: catgets/gencat.c:992 catgets/gencat.c:1033 nss/makedb.c:183
+#, c-format
+msgid "cannot open output file `%s'"
+msgstr "a kimeneti fájl (\"%s\") nem nyitható meg"
-#: nis/nis_print_group_entry.c:168
-msgid " No recursive nonmembers\n"
-msgstr " Nem rekurzív nem tagok\n"
+#: catgets/gencat.c:1195 locale/programs/linereader.c:560
+msgid "invalid escape sequence"
+msgstr "érvénytelen escape-sorozat"
-#: nis/nis_print_group_entry.c:139
-msgid " Recursive members:\n"
-msgstr " Nem rekurzív tagok\n"
+#: catgets/gencat.c:1217
+msgid "unterminated message"
+msgstr "befejezetlen üzenet"
-#: sunrpc/rpcinfo.c:574
-msgid " program vers proto port\n"
-msgstr " program vers proto port\n"
+#: catgets/gencat.c:1241
+#, c-format
+msgid "while opening old catalog file"
+msgstr "hiba a régi katalógusfájl megnyitásakor"
-#: argp/argp-help.c:1572
-msgid " or: "
-msgstr " vagy: "
+#: catgets/gencat.c:1332
+#, c-format
+msgid "conversion modules not available"
+msgstr "az átalakítási modulok nem érhetők el"
-#: elf/ldconfig.c:457
-msgid " (SKIPPED)\n"
-msgstr " (ÁTUGORVA)\n"
+#: catgets/gencat.c:1358
+#, c-format
+msgid "cannot determine escape character"
+msgstr "az escape-karakter nem határozható meg"
-#: elf/ldconfig.c:455
-msgid " (changed)\n"
-msgstr " (megváltozott)\n"
+#: debug/pcprofiledump.c:53
+msgid "Don't buffer output"
+msgstr "Ne pufferelje a kimenetet"
-#: timezone/zic.c:427
-#, c-format
-msgid " (rule from \"%s\", line %d)"
-msgstr " (%s szabályból, %d sor)"
+#: debug/pcprofiledump.c:58
+msgid "Dump information generated by PC profiling."
+msgstr "PC profilozással előállt információk kiírása"
-#: argp/argp-help.c:1584
-msgid " [OPTION...]"
-msgstr " [OPCIÓ...]"
+#: debug/pcprofiledump.c:61
+msgid "[FILE]"
+msgstr "[FÃJL]"
-#: timezone/zic.c:424
+#: debug/pcprofiledump.c:108
#, c-format
-msgid "\"%s\", line %d: %s"
-msgstr "\"%s\", sor %d: %s"
+msgid "cannot open input file"
+msgstr "a bemeneti fájl nem nyitható meg"
-#: timezone/zic.c:989
+#: debug/pcprofiledump.c:115
#, c-format
-msgid "\"Zone %s\" line and -l option are mutually exclusive"
-msgstr "\"Zóna %s\" sor és a -l opció kölcsönesen kizárják egymást"
+msgid "cannot read header"
+msgstr "a fejléc nem olvasható"
-#: timezone/zic.c:997
+#: debug/pcprofiledump.c:179
#, c-format
-msgid "\"Zone %s\" line and -p option are mutually exclusive"
-msgstr "\"Zóna %s\" sor és a -p opció kölcsönesen kizárják egymást"
+msgid "invalid pointer size"
+msgstr "érvénytelen mutatóméret"
-#: sunrpc/rpc_main.c:1412
-msgid "\"infile\" is required for template generation flags.\n"
-msgstr "\"inline\" kell a template generáló sablonhoz.\n"
+#: debug/xtrace.sh:27 debug/xtrace.sh:45
+msgid "Usage: xtrace [OPTION]... PROGRAM [PROGRAMOPTION]...\\n"
+msgstr "Használat: xtrace [KAPCSOLÓ]... PROGRAM [PROGRAM KAPCSOLÓI]...\\n"
-#: argp/argp-help.c:209
-#, c-format
-msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
-msgstr "%.*s: ARGP_HELP_FMT paraméternek egy értéknek kell lennie"
+#: debug/xtrace.sh:33
+msgid "Try \\`xtrace --help' for more information.\\n"
+msgstr "További információkért lásd az „xtrace --help†kimenetét.\\n"
-#: argp/argp-help.c:218
-#, c-format
-msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
-msgstr "%.*s: Ismertelen ARGP_HELP_FMT paraméter"
+#: debug/xtrace.sh:39
+msgid "xtrace: option \\`$1' requires an argument.\\n"
+msgstr "xtrace: a(z) „$1†kapcsoló paramétert igényel.\\n"
-#: locale/programs/ld-address.c:581 locale/programs/ld-collate.c:2612
-#: locale/programs/ld-collate.c:3740 locale/programs/ld-ctype.c:2112
-#: locale/programs/ld-ctype.c:2849 locale/programs/ld-identification.c:448
-#: locale/programs/ld-measurement.c:237 locale/programs/ld-messages.c:331
-#: locale/programs/ld-monetary.c:936 locale/programs/ld-name.c:305
-#: locale/programs/ld-numeric.c:375 locale/programs/ld-paper.c:238
-#: locale/programs/ld-telephone.c:313 locale/programs/ld-time.c:1199
-#, c-format
-msgid "%1$s: definition does not end with `END %1$s'"
-msgstr "%1$s: definíció nem végzõdik `END %1$s'-re"
+#: debug/xtrace.sh:46
+msgid ""
+"Trace execution of program by printing currently executed function.\n"
+"\n"
+" --data=FILE Don't run the program, just print the data from FILE.\n"
+"\n"
+" -?,--help Print this help and exit\n"
+" --usage Give a short usage message\n"
+" -V,--version Print version information and exit\n"
+"\n"
+"Mandatory arguments to long options are also mandatory for any corresponding\n"
+"short options.\n"
+"\n"
+msgstr ""
+"Program-végrehajtás nyomon követése az épp végrehajtott függvény kiírásával.\n"
+"\n"
+" --data=FÃJL Ne futtassa a programot, csak írja ki a FÃJL adatait.\n"
+"\n"
+" -?,--help Ezen súgó kiírása és kilépés\n"
+" --usage Rövid használati utasítás\n"
+" -V,--version Verzióinformációk kiírása és kilépés\n"
+"\n"
+"A hosszú kapcsolókhoz kötelező argumentumok a megfelelő rövid kapcsolókhoz\n"
+"is kötelezők.\n"
+"\n"
-#: elf/cache.c:190 elf/cache.c:200
-#, c-format
-msgid "%d libs found in cache `%s'\n"
-msgstr "%d libs van a gyorsítótárban `%s'\n"
+#: debug/xtrace.sh:127
+msgid "xtrace: unrecognized option \\`$1'\\n"
+msgstr "xtrace: ismeretlen kapcsoló: \\„$1â€\\n"
-#: timezone/zic.c:799
-#, c-format
-msgid "%s in ruleless zone"
-msgstr "%s a szabályzott zónában"
+#: debug/xtrace.sh:140
+msgid "No program name given\\n"
+msgstr "Nincs megadva programnév\\n"
-#: elf/../sysdeps/generic/readelflib.c:67
-#, c-format
-msgid "%s is a 32 bit ELF file.\n"
-msgstr "%s egy 32 bites ELF fájl.\n"
+#: debug/xtrace.sh:148
+#, sh-format
+msgid "executable \\`$program' not found\\n"
+msgstr "A „$program†nem található\\n"
-#: elf/../sysdeps/generic/readelflib.c:69
-#, c-format
-msgid "%s is a 64 bit ELF file.\n"
-msgstr "%s egy 64 bites ELF fájl.\n"
+#: debug/xtrace.sh:152
+#, sh-format
+msgid "\\`$program' is no executable\\n"
+msgstr "A „$program†nem hajtható végre\\n"
-#: elf/../sysdeps/unix/sysv/linux/i386/readelflib.c:49
-#, c-format
-msgid "%s is for unknown machine %d.\n"
-msgstr "%s ismeretlen %d gép .\n"
+#: dlfcn/dlinfo.c:64
+msgid "RTLD_SELF used in code not dynamically loaded"
+msgstr "Az RTLD_SELF nem dinamikusan betöltött kódban van használva"
-#: elf/ldconfig.c:326
-#, c-format
-msgid "%s is not a known library type"
-msgstr "%s nem ismert (programozói) könyvtár típus"
+#: dlfcn/dlinfo.c:73
+msgid "unsupported dlinfo request"
+msgstr "nem támogatott dlinfo kérés"
-#: elf/../sysdeps/generic/readelflib.c:78
-#, c-format
-msgid "%s is not a shared object file (Type: %d).\n"
-msgstr "%s nem a megosztott objektum fájl (Típus: %d).\n"
+#: dlfcn/dlmopen.c:64
+msgid "invalid namespace"
+msgstr "érvénytelen névtér"
-#: elf/ldconfig.c:424
-#, c-format
-msgid "%s is not a symbolic link\n"
-msgstr "%s nem szimbolikus hivatkozás\n"
+#: dlfcn/dlmopen.c:69
+msgid "invalid mode"
+msgstr "érvénytelen mód"
-#: elf/readlib.c:155
-#, c-format
-msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
-msgstr "%s nem egy ELF fájl - a mágikus bájt az elején hibás.\n"
+#: dlfcn/dlopen.c:65
+msgid "invalid mode parameter"
+msgstr "érvénytelen módparaméter"
-#: assert/assert.c:54
-#, c-format
-msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
-msgstr "%s%s%s:%u: %s%sElõfeltételezés `%s' sikertelen.\n"
+#: elf/cache.c:69
+msgid "unknown"
+msgstr "ismeretlen"
-#: assert/assert-perr.c:56
-#, c-format
-msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
-msgstr "%s%s%s:%u: %s%sFeldolgazhatatlan hiba: %s.\n"
+#: elf/cache.c:112
+msgid "Unknown OS"
+msgstr "Ismeretlen OS"
-#: stdio-common/psignal.c:62
+#: elf/cache.c:117
#, c-format
-msgid "%s%sUnknown signal %d\n"
-msgstr "%s%sÉrvénytelen jel %d\n"
+msgid ", OS ABI: %s %d.%d.%d"
+msgstr ", OS ABI: %s %d.%d.%d"
-#: timezone/zic.c:2234
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
-msgid "%s: %d did not sign extend correctly\n"
-msgstr "%s: %d nem tud aláírni helyesen\n"
+msgid "Can't open cache file %s\n"
+msgstr "Nem nyitható meg a gyorsítótárfájl (%s)\n"
-#: locale/programs/charmap.c:331
+#: elf/cache.c:148
#, c-format
-msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
-msgstr "%s: a <mb_cur_max> nagyobbnak kell, hogy legyen a <mb_cur_min>-nál\n"
+msgid "mmap of cache file failed.\n"
+msgstr "a gyorsítótár mmap-olása meghiúsult.\n"
-#: sunrpc/rpc_main.c:423
+#: elf/cache.c:152 elf/cache.c:166
#, c-format
-msgid "%s: C preprocessor failed with exit code %d\n"
-msgstr "%s: C elõfeldolgozó kilépet a következõ kóddal: %d\n"
+msgid "File is not a cache file.\n"
+msgstr "A fájl nem gyorsítótárfájl.\n"
-#: sunrpc/rpc_main.c:420
+#: elf/cache.c:199 elf/cache.c:209
#, c-format
-msgid "%s: C preprocessor failed with signal %d\n"
-msgstr "%s: C elõfeldolgozó kilépet a következõ jellel: %d\n"
+msgid "%d libs found in cache `%s'\n"
+msgstr "%d programkönyvtár található a gyorsítótárban („%sâ€)\n"
-#: timezone/zic.c:1500
+#: elf/cache.c:403
#, c-format
-msgid "%s: Can't create %s: %s\n"
-msgstr "%s: Nem lehet létrehozni %s: %s\n"
+msgid "Can't create temporary cache file %s"
+msgstr "Nem hozható létre az ideiglenes gyorsítótárfájl (%s)"
-#: timezone/zic.c:2212
+#: elf/cache.c:411 elf/cache.c:421 elf/cache.c:425 elf/cache.c:430
#, c-format
-msgid "%s: Can't create directory %s: %s\n"
-msgstr "%s: Nem lehet létrehozni a könyvtárat %s: %s\n"
+msgid "Writing of cache data failed"
+msgstr "A gyorsítótáradatok írása meghiúsult"
-#: timezone/zic.c:651
+#: elf/cache.c:435
#, c-format
-msgid "%s: Can't link from %s to %s: %s\n"
-msgstr "%s: Nem lehet hivatkozni a %s-bõl a %s-be: %s\n"
+msgid "Changing access rights of %s to %#o failed"
+msgstr "%s hozzáférési jogainak módosítása meghiúsult erre: %#o"
-#: timezone/zic.c:825
+#: elf/cache.c:440
#, c-format
-msgid "%s: Can't open %s: %s\n"
-msgstr "%s: Nem lehet megnyitni %s: %s\n"
+msgid "Renaming of %s to %s failed"
+msgstr "%s átnevezése meghiúsult erre: %s"
-#: timezone/zic.c:1490
-#, c-format
-msgid "%s: Can't remove %s: %s\n"
-msgstr "%s: Nem eltávolítani %s: %s\n"
+#: elf/dl-close.c:378 elf/dl-open.c:460
+msgid "cannot create scope list"
+msgstr "Nem hozható létre hatókörlista"
-#: timezone/zic.c:636
-#, c-format
-msgid "%s: Can't unlink %s: %s\n"
-msgstr "%s: Nem megszüntetni a hivatkozást %s: %s\n"
+#: elf/dl-close.c:725
+msgid "shared object not open"
+msgstr "a megosztott objektum nincs megnyitva"
-#: timezone/zic.c:894
-#, c-format
-msgid "%s: Error closing %s: %s\n"
-msgstr "%s: Hiba a lezáráskor %s: %s\n"
+#: elf/dl-deps.c:114
+msgid "DST not allowed in SUID/SGID programs"
+msgstr "a DST nem engedélyezett SUID/SGID programokban"
-#: timezone/zic.c:887
-#, c-format
-msgid "%s: Error reading %s\n"
-msgstr "%s: Hiba az olvasáskor %s\n"
+#: elf/dl-deps.c:127 elf/dl-open.c:282
+msgid "empty dynamic string token substitution"
+msgstr "üres dinamikus karakterlánc-helyettesítés"
-#: timezone/zic.c:1566
+#: elf/dl-deps.c:133
#, c-format
-msgid "%s: Error writing %s\n"
-msgstr "%s Hiba az íráskor %s\n"
+msgid "cannot load auxiliary `%s' because of empty dynamic string token substitution\n"
+msgstr "nem tölthetÅ‘ be a külsÅ‘ „%sâ€, az üres dinamikus karakterlánc-helyettesítés miatt\n"
-#: timezone/zic.c:872
-#, c-format
-msgid "%s: Leap line in non leap seconds file %s\n"
-msgstr "%s: A sor ahol az ugrást kéne beállítani a '%s' fájlban hibás\n"
+#: elf/dl-deps.c:474
+msgid "cannot allocate dependency list"
+msgstr "nem foglalható le a függőségi lista"
-#: timezone/zic.c:365
-#, c-format
-msgid "%s: Memory exhausted: %s\n"
-msgstr "%s Memória kimerült: %s\n"
+#: elf/dl-deps.c:510 elf/dl-deps.c:565
+msgid "cannot allocate symbol search list"
+msgstr "nem foglalható le a szimbólumkeresési lista"
-#: timezone/zic.c:531
-#, c-format
-msgid "%s: More than one -L option specified\n"
-msgstr "%s Több mint egy -L opciót írt be\n"
+#: elf/dl-deps.c:550
+msgid "Filters not supported with LD_TRACE_PRELINKING"
+msgstr "A szűrők nem támogatottak az LD_TRACE_PRELINKING mellett"
-#: timezone/zic.c:491
-#, c-format
-msgid "%s: More than one -d option specified\n"
-msgstr "%s Több mint egy -d opciót írt be\n"
+#: elf/dl-error.c:77
+msgid "DYNAMIC LINKER BUG!!!"
+msgstr "HIBA A DINAMIKUS LINKELÅBEN!"
-#: timezone/zic.c:501
-#, c-format
-msgid "%s: More than one -l option specified\n"
-msgstr "%s Több mint egy -l opciót írt be\n"
+#: elf/dl-error.c:124
+msgid "error while loading shared libraries"
+msgstr "hiba a megosztott programkönyvtárak betöltésekor"
-#: timezone/zic.c:511
-#, c-format
-msgid "%s: More than one -p option specified\n"
-msgstr "%s Több mint egy -p opciót írt be\n"
+#: elf/dl-fptr.c:88
+msgid "cannot map pages for fdesc table"
+msgstr "nem képezhetők le a lapok az fdesc táblára"
-#: timezone/zic.c:521
-#, c-format
-msgid "%s: More than one -y option specified\n"
-msgstr "%s Több mint egy -y opciót írt be\n"
+#: elf/dl-fptr.c:192
+msgid "cannot map pages for fptr table"
+msgstr "nem képezhetők le a lapok az fptr táblára"
-#: argp/argp-parse.c:646
-#, c-format
-msgid "%s: Too many arguments\n"
-msgstr "%s Túl sok paraméter\n"
+#: elf/dl-fptr.c:221
+msgid "internal error: symidx out of range of fptr table"
+msgstr "belső hiba: a symidx kívül van az fptr tábla tartományán"
-#: locale/programs/ld-collate.c:457 locale/programs/ld-collate.c:483
-#: locale/programs/ld-collate.c:499
-#, c-format
-msgid "%s: `%s' mentioned more than once in definition of weight %d"
-msgstr "%s: a '%s'-t több mint egyszer használta a súly meghatározásban '%d"
+#: elf/dl-load.c:372
+msgid "cannot allocate name record"
+msgstr "nem foglalható le névrekord"
-#: locale/programs/ld-collate.c:1336
-#, c-format
-msgid "%s: `%s' must be a character"
-msgstr "%s: `%s' karakter kell hogy legyen"
+#: elf/dl-load.c:474 elf/dl-load.c:582 elf/dl-load.c:667 elf/dl-load.c:780
+msgid "cannot create cache for search path"
+msgstr "nem hozható létre gyorsítótár a keresési útvonalhoz"
-#: locale/programs/ld-address.c:248 locale/programs/ld-address.c:276
-#: locale/programs/ld-address.c:309 locale/programs/ld-address.c:321
-#, c-format
-msgid "%s: `%s' value does not match `%s' value"
-msgstr "%s: `%s' érték nem aznonos a `%s' értékkel"
+#: elf/dl-load.c:565
+msgid "cannot create RUNPATH/RPATH copy"
+msgstr "nem hozható létre RUNPATH/RPATH másolat"
-#: locale/programs/ld-monetary.c:837 locale/programs/ld-numeric.c:318
-#, c-format
-msgid "%s: `-1' must be last entry in `%s' field"
-msgstr "%s '-1' kell lennie az utolsó bejegyzésnek a '%s' mezõben"
+#: elf/dl-load.c:653
+msgid "cannot create search path array"
+msgstr "nem hozható létre keresésiútvonal-tömb"
-#: locale/programs/ld-collate.c:447 locale/programs/ld-collate.c:473
-#, c-format
-msgid "%s: `forward' and `backward' are mutually excluding each other"
-msgstr "%s: `forward' és a `backward' kölcsönösen kizárják egymást"
+#: elf/dl-load.c:864
+msgid "cannot stat shared object"
+msgstr "nem érhető el a megosztott objektum"
-#: locale/programs/ld-collate.c:1528
-#, c-format
-msgid "%s: `position' must be used for a specific level in all sections or none"
-msgstr "%s: `position' minden szekcióban meg kell határozni a szintet vagy sehol sem"
+#: elf/dl-load.c:934
+msgid "cannot open zero fill device"
+msgstr "nem nyitható meg a nullával kitöltő eszköz"
-#: locale/programs/ld-ctype.c:2637 locale/programs/ld-ctype.c:2777
-#, c-format
-msgid "%s: `translit_start' section does not end with `translit_end'"
-msgstr "%s: `translit_start' szekció nem `translit_end'-re végzõdik"
+#: elf/dl-load.c:979 elf/dl-load.c:2215
+msgid "cannot create shared object descriptor"
+msgstr "nem hozható létre megosztott objektumleíró"
-#: locale/programs/ld-collate.c:1136
-#, c-format
-msgid "%s: byte sequence of first character of sequence is not lower than that of the last character"
-msgstr "%s:egy bájt sorozat elsõ eleme nem kisebb mint az utolsó"
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
+msgid "cannot read file data"
+msgstr "nem olvashatók a fájladatok"
-#: locale/programs/ld-collate.c:1094
-#, c-format
-msgid "%s: byte sequences of first and last character must have the same length"
-msgstr "%s bájt sorozat elsõ és utolsó eleme ugyanolyan hosszúnak kell hogy legyen"
+#: elf/dl-load.c:1042
+msgid "ELF load command alignment not page-aligned"
+msgstr "az ELF betöltési parancs igazítása nem lapokhoz igazított"
-#: locale/programs/ld-collate.c:3663
-#, c-format
-msgid "%s: cannot have `%s' as end of ellipsis range"
-msgstr "%s: a `%s' nem ez ellipszis tartomány vége"
+#: elf/dl-load.c:1049
+msgid "ELF load command address/offset not properly aligned"
+msgstr "az ELF betöltési parancs címe/eltolása nincs megfelelően igazítva"
-#: locale/programs/ld-collate.c:3327
-#, c-format
-msgid "%s: cannot reorder after %.*s: symbol not known"
-msgstr "%s: nem lehet újrarendezni a következõ után %.*s: ismeretlen szimbólum"
+#: elf/dl-load.c:1132
+msgid "cannot allocate TLS data structures for initial thread"
+msgstr "nem foglalhatók TLS adatszerkezetek a kiinduló szálhoz"
-#: locale/programs/ld-ctype.c:2912 locale/programs/ld-ctype.c:2996
-#: locale/programs/ld-ctype.c:3016 locale/programs/ld-ctype.c:3037
-#: locale/programs/ld-ctype.c:3058 locale/programs/ld-ctype.c:3079
-#: locale/programs/ld-ctype.c:3100 locale/programs/ld-ctype.c:3140
-#: locale/programs/ld-ctype.c:3161 locale/programs/ld-ctype.c:3228
-#, c-format
-msgid "%s: character `%s' in charmap not representable with one byte"
-msgstr "%s: karakter `%s' a karakter térképpen nem egy bájt jellenti"
+#: elf/dl-load.c:1155
+msgid "cannot handle TLS data"
+msgstr "a TLS adatok nem kezelhetők"
-#: locale/programs/ld-ctype.c:3272 locale/programs/ld-ctype.c:3297
-#, c-format
-msgid "%s: character `%s' needed as default value not representable with one byte"
-msgstr "%s: karakter `%s' szükséges, hogy az alapértéket ne egy bájt jellentse"
+#: elf/dl-load.c:1174
+msgid "object file has no loadable segments"
+msgstr "az objektumfájlnak nincsenek betölthető szakaszai"
-#: locale/programs/ld-ctype.c:2907
-#, c-format
-msgid "%s: character `%s' not defined in charmap while needed as default value"
-msgstr "%s: karakter `%s' nincs definiálva a karaktertérképen ami kell ahhoz, hogy alapérték legyen"
+#: elf/dl-load.c:1210
+msgid "failed to map segment from shared object"
+msgstr "a szegmens leképezése meghiúsult a megosztott objektumból"
-#: locale/programs/ld-ctype.c:2991 locale/programs/ld-ctype.c:3011
-#: locale/programs/ld-ctype.c:3053 locale/programs/ld-ctype.c:3074
-#: locale/programs/ld-ctype.c:3095 locale/programs/ld-ctype.c:3135
-#: locale/programs/ld-ctype.c:3156 locale/programs/ld-ctype.c:3223
-#: locale/programs/ld-ctype.c:3265 locale/programs/ld-ctype.c:3290
-#, c-format
-msgid "%s: character `%s' not defined while needed as default value"
-msgstr "%s: karakter `%s' nincs definiálva mint egy alapértelemezett érték"
+#: elf/dl-load.c:1236
+msgid "cannot dynamically load executable"
+msgstr "nem tölthető be dinamikusan a végrehajtható fájl"
-#: timezone/zic.c:1933
-#, c-format
-msgid "%s: command was '%s', result was %d\n"
-msgstr "%s: parancs '%s' eredménye %d\n"
+#: elf/dl-load.c:1298
+msgid "cannot change memory protections"
+msgstr "a memóriavédelem nem módosítható"
-#: locale/programs/ld-time.c:246
-#, c-format
-msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'"
-msgstr "%s: vezérlõ jel a %Zd szövegben az `era' mezõben nem '+' sem '-'"
+#: elf/dl-load.c:1317
+msgid "cannot map zero-fill pages"
+msgstr "nem képezhetők le a nullával kitöltött lapok"
-#: locale/programs/ld-time.c:258
-#, c-format
-msgid "%s: direction flag in string %Zd in `era' field is not a single character"
-msgstr "%s: vezérlõ jel a %Zd szövegben az `era' mezõben nem lehet egy karakter"
+#: elf/dl-load.c:1331
+msgid "object file has no dynamic section"
+msgstr "az objektumfájlnak nincs dinamikus szakasza"
-#: locale/programs/ld-ctype.c:2729
-#, c-format
-msgid "%s: duplicate `default_missing' definition"
-msgstr "%s: ismétlõdõ `default_missing' definíció"
+#: elf/dl-load.c:1354
+msgid "shared object cannot be dlopen()ed"
+msgstr "megosztott objektumra nem hívható meg a dlopen()"
-#: locale/programs/ld-identification.c:431
-#, c-format
-msgid "%s: duplicate category version definition"
-msgstr "%s: ismétlõdõ verzió kategória definíció"
+#: elf/dl-load.c:1367
+msgid "cannot allocate memory for program header"
+msgstr "nem foglalható memória a program fejlécének"
-#: locale/programs/ld-collate.c:2730
-#, c-format
-msgid "%s: duplicate declaration of section `%s'"
-msgstr "%s: ismétlõdõ meghatározás a '%s' szekcióban"
+#: elf/dl-load.c:1384 elf/dl-open.c:218
+msgid "invalid caller"
+msgstr "érvénytelen hívó"
-#: locale/programs/ld-collate.c:2694
-#, c-format
-msgid "%s: duplicate definition of `%s'"
-msgstr "%s: ismétlõdõ meghatározás a '%s'-ben"
+#: elf/dl-load.c:1423
+msgid "cannot enable executable stack as shared object requires"
+msgstr "nem engedélyezhető a végrehajtható verem, mint ahogy a megosztott objektum megköveteli"
-#: locale/programs/ld-collate.c:3712
-#, c-format
-msgid "%s: empty category description not allowed"
-msgstr "%s üres kategória leírás nem engedélyezett"
+#: elf/dl-load.c:1436
+msgid "cannot close file descriptor"
+msgstr "nem zárható le a fájlleíró"
-#: locale/programs/ld-collate.c:755
+#: elf/dl-load.c:1647
+msgid "file too short"
+msgstr "a fájl túl rövid"
+
+#: elf/dl-load.c:1676
+msgid "invalid ELF header"
+msgstr "érvénytelen ELF fejléc"
+
+#: elf/dl-load.c:1688
+msgid "ELF file data encoding not big-endian"
+msgstr "az ELF fájladatok kódolása nem big endian"
+
+#: elf/dl-load.c:1690
+msgid "ELF file data encoding not little-endian"
+msgstr "az ELF fájladatok kódolása nem little endian"
+
+#: elf/dl-load.c:1694
+msgid "ELF file version ident does not match current one"
+msgstr "az ELF fájlverzió azonosítója nem felel meg az aktuálisnak"
+
+#: elf/dl-load.c:1698
+msgid "ELF file OS ABI invalid"
+msgstr "az ELF fájl OS ABI-ja érvénytelen"
+
+#: elf/dl-load.c:1700
+msgid "ELF file ABI version invalid"
+msgstr "az ELF fájl ABI verziója érvénytelen"
+
+#: elf/dl-load.c:1703
+msgid "internal error"
+msgstr "belső hiba"
+
+#: elf/dl-load.c:1710
+msgid "ELF file version does not match current one"
+msgstr "az ELF fájlverzió nem felel meg az aktuálisnak"
+
+#: elf/dl-load.c:1718
+msgid "only ET_DYN and ET_EXEC can be loaded"
+msgstr "csak az ET_DYN és ET_EXEC tölthető be"
+
+#: elf/dl-load.c:1724
+msgid "ELF file's phentsize not the expected size"
+msgstr "az ELF fájl phentsize értéke nem a várt méretű"
+
+#: elf/dl-load.c:2231
+msgid "wrong ELF class: ELFCLASS64"
+msgstr "hibás ELF osztály: ELFCLASS64"
+
+#: elf/dl-load.c:2232
+msgid "wrong ELF class: ELFCLASS32"
+msgstr "hibás ELF osztály: ELFCLASS32"
+
+#: elf/dl-load.c:2235
+msgid "cannot open shared object file"
+msgstr "nem nyitható meg a megosztott objektumfájl"
+
+#: elf/dl-lookup.c:356
+msgid "relocation error"
+msgstr "áthelyezési hiba"
+
+#: elf/dl-lookup.c:384
+msgid "symbol lookup error"
+msgstr "szimbólumkikeresési hiba"
+
+#: elf/dl-open.c:114
+msgid "cannot extend global scope"
+msgstr "a globális hatáskör nem bővíthető"
+
+#: elf/dl-open.c:512
+msgid "TLS generation counter wrapped! Please report this."
+msgstr ""
+
+#: elf/dl-open.c:549
+msgid "invalid mode for dlopen()"
+msgstr ""
+
+#: elf/dl-open.c:566
+msgid "no more namespaces available for dlmopen()"
+msgstr ""
+
+#: elf/dl-open.c:579
+msgid "invalid target namespace in dlmopen()"
+msgstr ""
+
+#: elf/dl-reloc.c:121
+msgid "cannot allocate memory in static TLS block"
+msgstr ""
+
+#: elf/dl-reloc.c:211
+msgid "cannot make segment writable for relocation"
+msgstr ""
+
+#: elf/dl-reloc.c:277
#, c-format
-msgid "%s: empty weight string not allowed"
-msgstr "%s: üres súly szöveg nem engedélyezett"
+msgid "%s: no PLTREL found in object %s\n"
+msgstr ""
-#: locale/programs/charmap.c:836
+#: elf/dl-reloc.c:288
#, c-format
-msgid "%s: error in state machine"
-msgstr "%s hiba a gép állapotában"
-
-#: locale/programs/ld-address.c:489 locale/programs/ld-address.c:526
-#: locale/programs/ld-address.c:564 locale/programs/ld-ctype.c:2485
-#: locale/programs/ld-identification.c:360
-#: locale/programs/ld-measurement.c:220 locale/programs/ld-messages.c:300
-#: locale/programs/ld-monetary.c:694 locale/programs/ld-monetary.c:729
-#: locale/programs/ld-monetary.c:770 locale/programs/ld-name.c:278
-#: locale/programs/ld-numeric.c:263 locale/programs/ld-paper.c:221
-#: locale/programs/ld-telephone.c:288 locale/programs/ld-time.c:1104
-#: locale/programs/ld-time.c:1146
+msgid "%s: out of memory to store relocation results for %s\n"
+msgstr ""
+
+#: elf/dl-reloc.c:304
+msgid "cannot restore segment prot after reloc"
+msgstr ""
+
+#: elf/dl-reloc.c:329
+msgid "cannot apply additional memory protection after relocation"
+msgstr ""
+
+#: elf/dl-sym.c:162
+msgid "RTLD_NEXT used in code not dynamically loaded"
+msgstr ""
+
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
+msgid "cannot create capability list"
+msgstr ""
+
+#: elf/dl-tls.c:864
+msgid "cannot create TLS data structures"
+msgstr ""
+
+#: elf/dl-version.c:303
+msgid "cannot allocate version reference table"
+msgstr ""
+
+#: elf/ldconfig.c:141
+msgid "Print cache"
+msgstr ""
+
+#: elf/ldconfig.c:142
+msgid "Generate verbose messages"
+msgstr ""
+
+#: elf/ldconfig.c:143
+msgid "Don't build cache"
+msgstr ""
+
+#: elf/ldconfig.c:144
+msgid "Don't generate links"
+msgstr ""
+
+#: elf/ldconfig.c:145
+msgid "Change to and use ROOT as root directory"
+msgstr ""
+
+#: elf/ldconfig.c:145
+msgid "ROOT"
+msgstr ""
+
+#: elf/ldconfig.c:146
+msgid "CACHE"
+msgstr ""
+
+#: elf/ldconfig.c:146
+msgid "Use CACHE as cache file"
+msgstr ""
+
+#: elf/ldconfig.c:147
+msgid "CONF"
+msgstr ""
+
+#: elf/ldconfig.c:147
+msgid "Use CONF as configuration file"
+msgstr ""
+
+#: elf/ldconfig.c:148
+msgid "Only process directories specified on the command line. Don't build cache."
+msgstr ""
+
+#: elf/ldconfig.c:149
+msgid "Manually link individual libraries."
+msgstr ""
+
+#: elf/ldconfig.c:150
+msgid "FORMAT"
+msgstr ""
+
+#: elf/ldconfig.c:150
+msgid "Format to use: new, old or compat (default)"
+msgstr ""
+
+#: elf/ldconfig.c:151
+msgid "Ignore auxiliary cache file"
+msgstr ""
+
+#: elf/ldconfig.c:159
+msgid "Configure Dynamic Linker Run Time Bindings."
+msgstr ""
+
+#: elf/ldconfig.c:339
#, c-format
-msgid "%s: field `%s' declared more than once"
-msgstr "%s: a %s mezõt több mint egyszer határozta meg"
+msgid "Path `%s' given more than once"
+msgstr ""
-#: locale/programs/ld-ctype.c:1526 locale/programs/ld-ctype.c:1651
-#: locale/programs/ld-ctype.c:1757 locale/programs/ld-ctype.c:2348
-#: locale/programs/ld-ctype.c:3331
+#: elf/ldconfig.c:379
#, c-format
-msgid "%s: field `%s' does not contain exactly ten entries"
-msgstr "%s: a %s mezõ nem tíz bejegyzést tartalmaz"
+msgid "%s is not a known library type"
+msgstr ""
-#: locale/programs/ld-address.c:154 locale/programs/ld-address.c:205
-#: locale/programs/ld-address.c:230 locale/programs/ld-address.c:259
-#: locale/programs/ld-name.c:115 locale/programs/ld-telephone.c:117
+#: elf/ldconfig.c:404
#, c-format
-msgid "%s: field `%s' must not be empty"
-msgstr "%s: a %s mezõ nem lehet üres"
-
-#: locale/programs/ld-address.c:142 locale/programs/ld-address.c:180
-#: locale/programs/ld-address.c:197 locale/programs/ld-address.c:224
-#: locale/programs/ld-address.c:284 locale/programs/ld-address.c:303
-#: locale/programs/ld-address.c:315 locale/programs/ld-identification.c:145
-#: locale/programs/ld-measurement.c:104 locale/programs/ld-monetary.c:206
-#: locale/programs/ld-monetary.c:244 locale/programs/ld-monetary.c:260
-#: locale/programs/ld-monetary.c:272 locale/programs/ld-name.c:104
-#: locale/programs/ld-name.c:141 locale/programs/ld-numeric.c:113
-#: locale/programs/ld-numeric.c:127 locale/programs/ld-paper.c:101
-#: locale/programs/ld-paper.c:109 locale/programs/ld-telephone.c:105
-#: locale/programs/ld-telephone.c:163 locale/programs/ld-time.c:175
-#: locale/programs/ld-time.c:195
+msgid "Can't stat %s"
+msgstr ""
+
+#: elf/ldconfig.c:478
#, c-format
-msgid "%s: field `%s' not defined"
-msgstr "%s:a %s mezõ nincs definiálva"
+msgid "Can't stat %s\n"
+msgstr ""
-#: locale/programs/ld-messages.c:115 locale/programs/ld-messages.c:148
+#: elf/ldconfig.c:488
#, c-format
-msgid "%s: field `%s' undefined"
-msgstr "%s:a %s mezõ definiálás le van törölve"
+msgid "%s is not a symbolic link\n"
+msgstr ""
-#: locale/programs/ld-time.c:279
+#: elf/ldconfig.c:507
#, c-format
-msgid "%s: garbage at end of offset value in string %Zd in `era' field"
-msgstr "%s szemét a %Zd sztring végén az 'era' mezõben"
+msgid "Can't unlink %s"
+msgstr ""
-#: locale/programs/ld-time.c:339
+#: elf/ldconfig.c:513
#, c-format
-msgid "%s: garbage at end of starting date in string %Zd in `era' field "
-msgstr "%s szemét a %Zd sztring az induló dátum végén az 'era' mezõben"
+msgid "Can't link %s to %s"
+msgstr ""
-#: locale/programs/ld-time.c:416
+#: elf/ldconfig.c:519
+msgid " (changed)\n"
+msgstr ""
+
+#: elf/ldconfig.c:521
+msgid " (SKIPPED)\n"
+msgstr ""
+
+#: elf/ldconfig.c:576
#, c-format
-msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
-msgstr "%s szemét a %Zd sztring az leállás dátum végén az 'era' mezõben"
+msgid "Can't find %s"
+msgstr ""
-#: posix/getopt.c:887 posix/getopt.c:890
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr "%s: helytelen opció -- %c\n"
+msgid "Cannot lstat %s"
+msgstr ""
-#: locale/programs/ld-address.c:578 locale/programs/ld-collate.c:3738
-#: locale/programs/ld-ctype.c:2846 locale/programs/ld-identification.c:445
-#: locale/programs/ld-measurement.c:234 locale/programs/ld-messages.c:329
-#: locale/programs/ld-monetary.c:934 locale/programs/ld-name.c:303
-#: locale/programs/ld-numeric.c:373 locale/programs/ld-paper.c:236
-#: locale/programs/ld-telephone.c:311 locale/programs/ld-time.c:1197
+#: elf/ldconfig.c:599
#, c-format
-msgid "%s: incomplete `END' line"
-msgstr "%s: nem teljes az 'END' sor"
+msgid "Ignored file %s since it is not a regular file."
+msgstr ""
-#: locale/programs/ld-address.c:166
+#: elf/ldconfig.c:608
#, c-format
-msgid "%s: invalid escape `%%%c' sequence in field `%s'"
-msgstr "%s érvénytelen escape '%%%c' sorozat a %s mezõben"
+msgid "No link created since soname could not be found for %s"
+msgstr ""
-#: locale/programs/ld-name.c:127 locale/programs/ld-telephone.c:126
-#: locale/programs/ld-telephone.c:150
+#: elf/ldconfig.c:691
#, c-format
-msgid "%s: invalid escape sequence in field `%s'"
-msgstr "%s érvénytelen escape sorozat a %s mezõben"
+msgid "Can't open directory %s"
+msgstr ""
-#: locale/programs/ld-time.c:271
+#: elf/ldconfig.c:779
#, c-format
-msgid "%s: invalid number for offset in string %Zd in `era' field"
-msgstr "%s érvénytelen szám a %Zd szövegben a 'era' mezõben"
+msgid "Cannot stat %s"
+msgstr ""
-#: locale/programs/ld-collate.c:3162
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
-msgid "%s: invalid number of sorting rules"
-msgstr "%s érvénytelen rendezési szabályok"
+msgid "Input file %s not found.\n"
+msgstr ""
-#: posix/getopt.c:896 posix/getopt.c:899
+#: elf/ldconfig.c:908
#, c-format
-msgid "%s: invalid option -- %c\n"
-msgstr "%s: érvénytelen kapcsoló -- %c\n"
+msgid "libc5 library %s in wrong directory"
+msgstr ""
-#: locale/programs/ld-time.c:330
+#: elf/ldconfig.c:911
#, c-format
-msgid "%s: invalid starting date in string %Zd in `era' field"
-msgstr "%s érvénytelen indulási dátum az 'era' mezõ %Zd szövegjében"
+msgid "libc6 library %s in wrong directory"
+msgstr ""
-#: locale/programs/ld-time.c:407
+#: elf/ldconfig.c:914
#, c-format
-msgid "%s: invalid stopping date in string %Zd in `era' field"
-msgstr "%s érvénytelen befejezési dátum az 'era' mezõ %Zd szövegjében"
+msgid "libc4 library %s in wrong directory"
+msgstr ""
-#: locale/programs/ld-measurement.c:112
+#: elf/ldconfig.c:942
#, c-format
-msgid "%s: invalid value for field `%s'"
-msgstr "%s érvénytelen érték a %s mezõben"
+msgid "libraries %s and %s in directory %s have same soname but different type."
+msgstr ""
-#: locale/programs/ld-address.c:242 locale/programs/ld-address.c:270
+#: elf/ldconfig.c:1051
#, c-format
-msgid "%s: language abbreviation `%s' not defined"
-msgstr "%s A %s nyelv rövidítést nem ismerem"
+msgid "Can't open configuration file %s"
+msgstr ""
-#: resolv/res_hconf.c:366
+#: elf/ldconfig.c:1115
#, c-format
-msgid "%s: line %d: bad command `%s'\n"
-msgstr "%s: %d sor: rossz parancs '%s'\n"
+msgid "%s:%u: bad syntax in hwcap line"
+msgstr ""
-#: resolv/res_hconf.c:165
+#: elf/ldconfig.c:1121
#, c-format
-msgid "%s: line %d: cannot specify more than %d services"
-msgstr "%s: sor %d: nem lehet több mint %d szolgáltatást meghatározni"
+msgid "%s:%u: hwcap index %lu above maximum %u"
+msgstr ""
-#: resolv/res_hconf.c:231
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
-msgid "%s: line %d: cannot specify more than %d trim domains"
-msgstr "%s: sor %d: nem lehet több mint %d rendes tartományt meghatározni"
+msgid "%s:%u: hwcap index %lu already defined as %s"
+msgstr ""
-#: resolv/res_hconf.c:319
+#: elf/ldconfig.c:1139
#, c-format
-msgid "%s: line %d: expected `on' or `off', found `%s'\n"
-msgstr "%s: sor %d: `on' vagy `off' keresés, megvan `%s'\n"
+msgid "%s:%u: duplicate hwcap %lu %s"
+msgstr ""
-#: resolv/res_hconf.c:147
+#: elf/ldconfig.c:1161
#, c-format
-msgid "%s: line %d: expected service, found `%s'\n"
-msgstr "%s: sor %d a várt %s szolgáltatás megvan\n"
+msgid "need absolute file name for configuration file when using -r"
+msgstr ""
-#: resolv/res_hconf.c:395
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
-msgid "%s: line %d: ignoring trailing garbage `%s'\n"
-msgstr "%s: sor %d: sorvégi szemét: '%s'\n"
+msgid "memory exhausted"
+msgstr "elfogyott a memória"
-#: resolv/res_hconf.c:256
+#: elf/ldconfig.c:1198
#, c-format
-msgid "%s: line %d: list delimiter not followed by domain"
-msgstr "%s: sor %d lista elválasztó követette a tartományt"
+msgid "%s:%u: cannot read directory %s"
+msgstr ""
-#: resolv/res_hconf.c:191
+#: elf/ldconfig.c:1242
#, c-format
-msgid "%s: line %d: list delimiter not followed by keyword"
-msgstr "%s: sor %d lista elválasztó követette a kulcsszót"
+msgid "relative path `%s' used to build cache"
+msgstr ""
-#: locale/programs/ld-collate.c:3242 locale/programs/ld-collate.c:3365
-#: locale/programs/ld-collate.c:3716
+#: elf/ldconfig.c:1268
#, c-format
-msgid "%s: missing `order_end' keyword"
-msgstr "%s: hiányzó `order_end' kulcsszó"
+msgid "Can't chdir to /"
+msgstr ""
-#: locale/programs/ld-collate.c:3379 locale/programs/ld-collate.c:3728
+#: elf/ldconfig.c:1310
#, c-format
-msgid "%s: missing `reorder-end' keyword"
-msgstr "%s: hiányzó `reorder_end' kulcsszó"
+msgid "Can't open cache file directory %s\n"
+msgstr ""
+
+#: elf/ldd.bash.in:43
+msgid "Written by %s and %s.\n"
+msgstr "Ãrta: %s és %s.\n"
+
+#: elf/ldd.bash.in:48
+msgid ""
+"Usage: ldd [OPTION]... FILE...\n"
+" --help print this help and exit\n"
+" --version print version information and exit\n"
+" -d, --data-relocs process data relocations\n"
+" -r, --function-relocs process data and function relocations\n"
+" -u, --unused print unused direct dependencies\n"
+" -v, --verbose print all information\n"
+msgstr ""
+"Használat: ldd [KAPCSOLÓ]... FÃJL...\n"
+" --help ezen súgó kiírása és kilépés\n"
+" --version verzióinformációk kiírása és kilépés\n"
+" -d, --data-relocs adatáthelyezések feldolgozása\n"
+" -r, --function-relocs adat- és függvényáthelyezések feldolgozása\n"
+" -u, --unused nem használt közvetlen függőségek kiírása\n"
+" -v, --verbose minden információ kiírása\n"
+
+#: elf/ldd.bash.in:82
+msgid "ldd: option \\`$1' is ambiguous"
+msgstr ""
+
+#: elf/ldd.bash.in:89
+msgid "unrecognized option"
+msgstr "ismeretlen kapcsoló"
+
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
+msgid "Try \\`ldd --help' for more information."
+msgstr ""
+
+#: elf/ldd.bash.in:127
+msgid "missing file arguments"
+msgstr ""
+
+#. TRANS No such file or directory. This is a ``file doesn't exist'' error
+#. TRANS for ordinary files that are referenced in contexts where they are
+#. TRANS expected to already exist.
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
+msgid "No such file or directory"
+msgstr "Nincs ilyen fájl vagy könyvtár"
+
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
+msgid "not regular file"
+msgstr ""
+
+#: elf/ldd.bash.in:156
+msgid "warning: you do not have execution permission for"
+msgstr ""
+
+#: elf/ldd.bash.in:185
+msgid "\tnot a dynamic executable"
+msgstr ""
+
+#: elf/ldd.bash.in:193
+msgid "exited with unknown exit code"
+msgstr ""
+
+#: elf/ldd.bash.in:198
+msgid "error: you do not have read permission for"
+msgstr ""
-#: locale/programs/ld-collate.c:3731
+#: elf/readelflib.c:35
#, c-format
-msgid "%s: missing `reorder-sections-end' keyword"
-msgstr "%s: hiányzó `reorder-sections-end' kulcsszó"
+msgid "file %s is truncated\n"
+msgstr ""
-#: locale/programs/ld-time.c:456
+#: elf/readelflib.c:67
#, c-format
-msgid "%s: missing era format in string %Zd in `era' field"
-msgstr "%s: hibás era formátum az 'era' mezõben %Zd sztringben"
+msgid "%s is a 32 bit ELF file.\n"
+msgstr ""
-#: locale/programs/ld-time.c:444
+#: elf/readelflib.c:69
#, c-format
-msgid "%s: missing era name in string %Zd in `era' field"
-msgstr "%s: hibás era név az 'era' mezõben %Zd sztringben"
+msgid "%s is a 64 bit ELF file.\n"
+msgstr ""
-#: locale/programs/ld-collate.c:3138
+#: elf/readelflib.c:71
#, c-format
-msgid "%s: multiple order definitions for section `%s'"
-msgstr "%s többszörös sorrend meghatározás a '%s' szekcióban"
+msgid "Unknown ELFCLASS in file %s.\n"
+msgstr ""
-#: locale/programs/ld-collate.c:3188
+#: elf/readelflib.c:78
#, c-format
-msgid "%s: multiple order definitions for unnamed section"
-msgstr "%s többszörös sorrend meghatározás egy névtelen szekcióban"
+msgid "%s is not a shared object file (Type: %d).\n"
+msgstr ""
-#: locale/programs/ld-messages.c:137 locale/programs/ld-messages.c:170
+#: elf/readelflib.c:109
#, c-format
-msgid "%s: no correct regular expression for field `%s': %s"
-msgstr "%s nem pontos reguláris kifejezés a '%s':'%s' mezõben"
+msgid "more than one dynamic segment\n"
+msgstr ""
-#: locale/programs/ld-identification.c:169
+#: elf/readlib.c:97
#, c-format
-msgid "%s: no identification for category `%s'"
-msgstr "%s nem azonosított a %s kategória"
+msgid "Cannot fstat file %s.\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:2755
+#: elf/readlib.c:108
#, c-format
-msgid "%s: no representable `default_missing' definition found"
-msgstr "%s: nem értelmezhetõ `default_missing' meghatározást találtam"
+msgid "File %s is empty, not checked."
+msgstr ""
-#: locale/programs/ld-collate.c:591
+#: elf/readlib.c:114
#, c-format
-msgid "%s: not enough sorting rules"
-msgstr "%s nem elég a rendezõ szabály"
+msgid "File %s is too small, not checked."
+msgstr ""
-#: locale/programs/ld-address.c:295
+#: elf/readlib.c:124
#, c-format
-msgid "%s: numeric country code `%d' not valid"
-msgstr "%s: a %d ország kód nem érvényes"
+msgid "Cannot mmap file %s.\n"
+msgstr ""
-#: posix/getopt.c:743 posix/getopt.c:748
+#: elf/readlib.c:162
#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr "%s: a `%c%s' opció nem enged meg argumentumot\n"
+msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
+msgstr ""
-#: posix/getopt.c:688 posix/getopt.c:698
+#: elf/sln.c:85
#, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: a `%s' kapcsoló nem egyértelmû\n"
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
-#: posix/getopt.c:782 posix/getopt.c:793 posix/getopt.c:1070
-#: posix/getopt.c:1082
+#: elf/sln.c:110
#, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: a `%s' kapcsolóhoz argumentum szükséges\n"
+msgid "%s: file open error: %m\n"
+msgstr ""
-#: posix/getopt.c:730 posix/getopt.c:734
+#: elf/sln.c:147
#, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: a `--%s' kapcsoló nem enged meg argumentumot\n"
+msgid "No target in line %d\n"
+msgstr ""
-#: posix/getopt.c:1038 posix/getopt.c:1049
+#: elf/sln.c:179
#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr "%s: a `-W %s' opció nem enged meg argumentumot\n"
+msgid "%s: destination must not be a directory\n"
+msgstr ""
-#: posix/getopt.c:1004 posix/getopt.c:1014
+#: elf/sln.c:185
#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: a `-W %s' kapcsoló nem egyértelmû\n"
+msgid "%s: failed to remove the old destination\n"
+msgstr ""
-#: posix/getopt.c:942 posix/getopt.c:952 posix/getopt.c:1136
-#: posix/getopt.c:1147
+#: elf/sln.c:193
#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: a kapcsolónak szüksége van egy argumentumra -- %c\n"
+msgid "%s: invalid destination: %s\n"
+msgstr ""
-#: locale/programs/ld-collate.c:1327 locale/programs/ld-collate.c:3675
+#: elf/sln.c:208 elf/sln.c:217
#, c-format
-msgid "%s: order for `%.*s' already defined at %s:%Zu"
-msgstr "%s: '%.*s' sorrend már definiálva van a %s:%Zu -nál"
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr ""
-#: locale/programs/ld-collate.c:3316
+#: elf/sprof.c:77
+msgid "Output selection:"
+msgstr ""
+
+#: elf/sprof.c:79
+msgid "print list of count paths and their number of use"
+msgstr ""
+
+#: elf/sprof.c:81
+msgid "generate flat profile with counts and ticks"
+msgstr ""
+
+#: elf/sprof.c:82
+msgid "generate call graph"
+msgstr ""
+
+#: elf/sprof.c:89
+msgid "Read and display shared object profiling data."
+msgstr ""
+
+#: elf/sprof.c:94
+msgid "SHOBJ [PROFDATA]"
+msgstr ""
+
+#: elf/sprof.c:420
#, c-format
-msgid "%s: order for collating element %.*s not yet defined"
-msgstr "%s: nem összehasonlítható elem a '%.*s'. Még nincs meghatározva"
+msgid "failed to load shared object `%s'"
+msgstr ""
-#: locale/programs/ld-collate.c:3300
+#: elf/sprof.c:429
#, c-format
-msgid "%s: order for collating symbol %.*s not yet defined"
-msgstr "%s: nem összehasonlítható szimbólum a '%.*s'. Még nincs meghatározva"
+msgid "cannot create internal descriptors"
+msgstr ""
-#: sunrpc/rpc_main.c:289
+#: elf/sprof.c:548
#, c-format
-msgid "%s: output would overwrite %s\n"
-msgstr "%s: kimenetet fölül kéne írni %s\n"
+msgid "Reopening shared object `%s' failed"
+msgstr ""
-#: timezone/zic.c:879 timezone/zic.c:1293 timezone/zic.c:1318
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
-msgid "%s: panic: Invalid l_value %d\n"
-msgstr "%s: pánik: Érvénytelen l_value %d\n"
-
-#: locale/programs/charmap.c:843 locale/programs/ld-address.c:597
-#: locale/programs/ld-collate.c:2609 locale/programs/ld-collate.c:3756
-#: locale/programs/ld-ctype.c:2109 locale/programs/ld-ctype.c:2866
-#: locale/programs/ld-identification.c:464
-#: locale/programs/ld-measurement.c:253 locale/programs/ld-messages.c:347
-#: locale/programs/ld-monetary.c:952 locale/programs/ld-name.c:321
-#: locale/programs/ld-numeric.c:391 locale/programs/ld-paper.c:254
-#: locale/programs/ld-telephone.c:329 locale/programs/ld-time.c:1215
-#: locale/programs/locfile.h:103 locale/programs/repertoire.c:325
+msgid "reading of section headers failed"
+msgstr ""
+
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
-msgid "%s: premature end of file"
-msgstr "%s: idõ elõtti fájl vég"
+msgid "reading of section header string table failed"
+msgstr ""
-#: locale/programs/ld-collate.c:3413 locale/programs/ld-collate.c:3601
+#: elf/sprof.c:589
#, c-format
-msgid "%s: section `%.*s' not known"
-msgstr "%s: `%.*s' szekciót nem ismerem"
+msgid "*** Cannot read debuginfo file name: %m\n"
+msgstr ""
-#: locale/programs/ld-time.c:358
+#: elf/sprof.c:609
#, c-format
-msgid "%s: starting date is invalid in string %Zd in `era' field"
-msgstr "%s érvénytelen indulási dátum az 'era' mezõ %Zd szövegjében"
+msgid "cannot determine file name"
+msgstr ""
-#: locale/programs/ld-time.c:435
+#: elf/sprof.c:642
#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s érvénytelen befejezési dátum az 'era' mezõ %Zd szövegjében"
+msgid "reading of ELF header failed"
+msgstr ""
-#: locale/programs/ld-collate.c:1261
+#: elf/sprof.c:678
#, c-format
-msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'"
-msgstr "%s: a szimbolikus ellipszis tarományt nem követheti közvetlenül egy 'order_end'"
+msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
+msgstr ""
-#: locale/programs/ld-collate.c:1257
+#: elf/sprof.c:708
#, c-format
-msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
-msgstr "%s: a szimbolikus ellipszis tarományt nem követheti közvetlenül egy 'order_start'"
-
-#: locale/programs/ld-address.c:588 locale/programs/ld-collate.c:518
-#: locale/programs/ld-collate.c:570 locale/programs/ld-collate.c:865
-#: locale/programs/ld-collate.c:878 locale/programs/ld-collate.c:2599
-#: locale/programs/ld-collate.c:3747 locale/programs/ld-ctype.c:1841
-#: locale/programs/ld-ctype.c:2099 locale/programs/ld-ctype.c:2675
-#: locale/programs/ld-ctype.c:2857 locale/programs/ld-identification.c:455
-#: locale/programs/ld-measurement.c:244 locale/programs/ld-messages.c:338
-#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:312
-#: locale/programs/ld-numeric.c:382 locale/programs/ld-paper.c:245
-#: locale/programs/ld-telephone.c:320 locale/programs/ld-time.c:1206
+msgid "failed to load symbol data"
+msgstr ""
+
+#: elf/sprof.c:775
#, c-format
-msgid "%s: syntax error"
-msgstr "%s: szintaktikai hiba"
+msgid "cannot load profiling data"
+msgstr ""
-#: locale/programs/ld-ctype.c:2180
+#: elf/sprof.c:784
#, c-format
-msgid "%s: syntax error in definition of new character class"
-msgstr "%s: szintaktikai hiba az új karakterosztály meghatározása során"
+msgid "while stat'ing profiling data file"
+msgstr ""
-#: locale/programs/ld-ctype.c:2195
+#: elf/sprof.c:792
#, c-format
-msgid "%s: syntax error in definition of new character map"
-msgstr "%s: szintaktikai hiba az új karaktertérkép meghatározása során"
+msgid "profiling data file `%s' does not match shared object `%s'"
+msgstr ""
-#: locale/programs/ld-ctype.c:3737
+#: elf/sprof.c:803
#, c-format
-msgid "%s: table for class \"%s\": %lu bytes\n"
-msgstr "%s: osztálytáblázat \"%s\": %lu bájt\n"
+msgid "failed to mmap the profiling data file"
+msgstr ""
-#: locale/programs/ld-ctype.c:3805
+#: elf/sprof.c:811
#, c-format
-msgid "%s: table for map \"%s\": %lu bytes\n"
-msgstr "%s: térkép tábla \"%s\": %lu bájt\n"
+msgid "error while closing the profiling data file"
+msgstr ""
-#: locale/programs/ld-ctype.c:3937
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
-msgid "%s: table for width: %lu bytes\n"
-msgstr "%s: tábla széllesség: %lu bájt\n"
+msgid "cannot create internal descriptor"
+msgstr ""
-#: locale/programs/ld-address.c:216
+#: elf/sprof.c:866
#, c-format
-msgid "%s: terminology language code `%s' not defined"
-msgstr "%s a %s szaknyelv kód nincs definiálva"
+msgid "`%s' is no correct profile data file for `%s'"
+msgstr ""
-#: locale/programs/ld-collate.c:1067
+#: elf/sprof.c:1047 elf/sprof.c:1105
#, c-format
-msgid "%s: the start and the end symbol of a range must stand for characters"
-msgstr "%s: a tartomány kezdõ és befejezõ szimbólumának karakterekbõl kell állnija"
+msgid "cannot allocate symbol data"
+msgstr ""
-#: locale/programs/ld-time.c:485
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
#, c-format
-msgid "%s: third operand for value of field `%s' must not be larger than %d"
-msgstr "%s: a harmadik mûvelet a %s mezõ értékének nagyobbnak kell hogy legyen mint %d"
+msgid "cannot open output file"
+msgstr ""
-#: locale/programs/ld-time.c:983
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
-msgid "%s: too few values for field `%s'"
-msgstr "%s: túl sok érték a %s mezõben"
+msgid "error while closing input `%s'"
+msgstr ""
-#: locale/programs/ld-collate.c:555
+#: iconv/iconv_charmap.c:462
#, c-format
-msgid "%s: too many rules; first entry only had %d"
-msgstr "%s: túl sok szabály; az elsõ bejegyzés csak %d"
+msgid "illegal input sequence at position %Zd"
+msgstr ""
-#: locale/programs/ld-collate.c:906
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
#, c-format
-msgid "%s: too many values"
-msgstr "%s túl sok érték"
+msgid "incomplete character or shift sequence at end of buffer"
+msgstr ""
-#: locale/programs/ld-time.c:1030
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
#, c-format
-msgid "%s: too many values for field `%s'"
-msgstr "%s: túl sok érték a '%s' mezõben"
+msgid "error while reading the input"
+msgstr ""
-#: locale/programs/ld-ctype.c:3641
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
#, c-format
-msgid "%s: transliteration data from locale `%s' not available"
-msgstr "%s: átírási adatok '%s'-rõl nem elérhetõek"
+msgid "unable to allocate buffer for input"
+msgstr ""
+
+#: iconv/iconv_prog.c:60
+msgid "Input/Output format specification:"
+msgstr ""
+
+#: iconv/iconv_prog.c:61
+msgid "encoding of original text"
+msgstr ""
-#: sunrpc/rpc_main.c:296
+#: iconv/iconv_prog.c:62
+msgid "encoding for output"
+msgstr ""
+
+#: iconv/iconv_prog.c:63
+msgid "Information:"
+msgstr ""
+
+#: iconv/iconv_prog.c:64
+msgid "list all known coded character sets"
+msgstr ""
+
+#: iconv/iconv_prog.c:65 locale/programs/localedef.c:127
+msgid "Output control:"
+msgstr ""
+
+#: iconv/iconv_prog.c:66
+msgid "omit invalid characters from output"
+msgstr ""
+
+#: iconv/iconv_prog.c:67
+msgid "output file"
+msgstr ""
+
+#: iconv/iconv_prog.c:68
+msgid "suppress warnings"
+msgstr ""
+
+#: iconv/iconv_prog.c:69
+msgid "print progress information"
+msgstr ""
+
+#: iconv/iconv_prog.c:74
+msgid "Convert encoding of given files from one encoding to another."
+msgstr "Megadott fájlok kódolásának átalakítása"
+
+#: iconv/iconv_prog.c:78
+msgid "[FILE...]"
+msgstr "[FÃJL…]"
+
+#: iconv/iconv_prog.c:234
#, c-format
-msgid "%s: unable to open %s: %m\n"
-msgstr "%s: nem lehet megnyitni %s: %m\n"
+msgid "conversions from `%s' and to `%s' are not supported"
+msgstr ""
-#: locale/programs/ld-collate.c:2868
+#: iconv/iconv_prog.c:239
#, c-format
-msgid "%s: unknown character in collating symbol name"
-msgstr "%s: ismeretlen karakter az összehasonlító szimbólum nevében"
+msgid "conversion from `%s' is not supported"
+msgstr ""
-#: locale/programs/ld-collate.c:3000
+#: iconv/iconv_prog.c:246
#, c-format
-msgid "%s: unknown character in equivalent definition name"
-msgstr "%s: ismeretlen karakter az egyenértékû meghatározás nevében"
+msgid "conversion to `%s' is not supported"
+msgstr ""
-#: locale/programs/ld-collate.c:3013
+#: iconv/iconv_prog.c:250
#, c-format
-msgid "%s: unknown character in equivalent definition value"
-msgstr "%s: ismeretlen karakter az egyenértékû meghatározás értékében"
+msgid "conversion from `%s' to `%s' is not supported"
+msgstr ""
-#: locale/programs/ld-address.c:493 locale/programs/ld-address.c:531
-#: locale/programs/ld-identification.c:364 locale/programs/ld-messages.c:310
-#: locale/programs/ld-monetary.c:698 locale/programs/ld-monetary.c:733
-#: locale/programs/ld-name.c:282 locale/programs/ld-numeric.c:267
-#: locale/programs/ld-telephone.c:292 locale/programs/ld-time.c:999
-#: locale/programs/ld-time.c:1067 locale/programs/ld-time.c:1109
+#: iconv/iconv_prog.c:260
#, c-format
-msgid "%s: unknown character in field `%s'"
-msgstr "%s ismeretlen karakter a '%s' mezõben"
+msgid "failed to start conversion processing"
+msgstr ""
-#: locale/programs/ld-collate.c:3110
+#: iconv/iconv_prog.c:358
#, c-format
-msgid "%s: unknown section name `%s'"
-msgstr "%s: ismeretlen a '%s' szekció név"
+msgid "error while closing output file"
+msgstr ""
-#: locale/programs/ld-collate.c:3023
+#: iconv/iconv_prog.c:456
#, c-format
-msgid "%s: unknown symbol `%s' in equivalent definition"
-msgstr "%s ismeretlen szimbólum a '%s' egyenértékû definícióban"
+msgid "conversion stopped due to problem in writing the output"
+msgstr ""
-#: posix/getopt.c:841 posix/getopt.c:844
+#: iconv/iconv_prog.c:533
#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: a `%c%s' kapcsoló ismeretlen\n"
+msgid "illegal input sequence at position %ld"
+msgstr ""
-#: posix/getopt.c:830 posix/getopt.c:833
+#: iconv/iconv_prog.c:541
#, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: a `--%s' kapcsoló ismeretlen\n"
+msgid "internal error (illegal descriptor)"
+msgstr ""
-#: timezone/zic.c:449
+#: iconv/iconv_prog.c:544
#, c-format
+msgid "unknown iconv() error %d"
+msgstr ""
+
+#: iconv/iconv_prog.c:790
msgid ""
-"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
-"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
+"The following list contain all the coded character sets known. This does\n"
+"not necessarily mean that all combinations of these names can be used for\n"
+"the FROM and TO command line parameters. One coded character set can be\n"
+"listed with several different names (aliases).\n"
+"\n"
+" "
msgstr ""
-"%s: a %s használata [ -s ] [ -v ] [ -l helyi idõ ] [ -p posix szabályok] \\\n"
-"\t[ -d könyvtár ] [ -L eltolási idõ(mp) ] [ -y év típusa ] [ fájlnév ... ]\n"
-#: timezone/zdump.c:175
-#, c-format
-msgid "%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"
-msgstr "%s: a %s használata [ -v ] [ -c cutoff ] zónanév ...\n"
+#: iconv/iconvconfig.c:110
+msgid "Create fastloading iconv module configuration file."
+msgstr ""
-#: locale/programs/ld-monetary.c:740 locale/programs/ld-numeric.c:274
-#, c-format
-msgid "%s: value for field `%s' must be a single character"
-msgstr "%s: a '%s' mezõ értéke egy karakter kell hogy legyen"
+#: iconv/iconvconfig.c:114
+msgid "[DIR...]"
+msgstr ""
-#: locale/programs/ld-monetary.c:308
-#, c-format
-msgid "%s: value for field `%s' must be in range %d...%d"
-msgstr "%s: a '%s' mezõ értéke a %d...%d tarományba kell hogy essen"
+#: iconv/iconvconfig.c:127
+msgid "Prefix used for all file accesses"
+msgstr ""
-#: locale/programs/ld-messages.c:121 locale/programs/ld-messages.c:154
-#, c-format
-msgid "%s: value for field `%s' must not be an empty string"
-msgstr "%s: a '%s' mezõ értéke nem lehet üres"
+#: iconv/iconvconfig.c:128
+msgid "Put output in FILE instead of installed location (--prefix does not apply to FILE)"
+msgstr ""
-#: locale/programs/ld-monetary.c:250 locale/programs/ld-numeric.c:119
-#, c-format
-msgid "%s: value for field `%s' must not be the empty string"
-msgstr "%s: a '%s' mezõ értéke nem lehet az üres sztring"
+#: iconv/iconvconfig.c:132
+msgid "Do not search standard directories, only those on the command line"
+msgstr ""
-#: locale/programs/ld-monetary.c:232
+#: iconv/iconvconfig.c:301
#, c-format
-msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217"
-msgstr "%s: a `int_curr_symbol' mezõ értékéke felel meg az ISO 4217-nek"
+msgid "Directory arguments required when using --nostdlib"
+msgstr ""
-#: locale/programs/ld-monetary.c:224
+#: iconv/iconvconfig.c:343 locale/programs/localedef.c:291
#, c-format
-msgid "%s: value of field `int_curr_symbol' has wrong length"
-msgstr "%s: a mezõ `int_curr_symbol' értékének rossz a hossza"
+msgid "no output file produced because warnings were issued"
+msgstr ""
-#: locale/programs/ld-monetary.c:859 locale/programs/ld-numeric.c:339
+#: iconv/iconvconfig.c:429
#, c-format
-msgid "%s: values for field `%s' must be smaller than 127"
-msgstr "%s: a '%s' mezõ értékének kisebbnek kell hogy legyen mint 127"
+msgid "while inserting in search tree"
+msgstr ""
-#: locale/programs/ld-time.c:509
+#: iconv/iconvconfig.c:1238
#, c-format
-msgid "%s: values for field `%s' must not be larger than %d"
-msgstr "%s: a '%s' mezõ értékének nem lehet nagyobb mint %d"
+msgid "cannot generate output file"
+msgstr ""
+
+#: inet/rcmd.c:157
+msgid "rcmd: Cannot allocate memory\n"
+msgstr ""
-#: locale/programs/ld-time.c:493 locale/programs/ld-time.c:501
+#: inet/rcmd.c:172
+msgid "rcmd: socket: All ports in use\n"
+msgstr ""
+
+#: inet/rcmd.c:200
#, c-format
-msgid "%s: values of field `%s' must not be larger than %d"
-msgstr "%s: a '%s' mezõ értékének nem lehet nagyobb mint %d"
+msgid "connect to address %s: "
+msgstr ""
-#: locale/programs/ld-collate.c:850
+#: inet/rcmd.c:213
#, c-format
-msgid "%s: weights must use the same ellipsis symbol as the name"
-msgstr "%s: a súlynak ugyanazt az ellipszist szimbólumot kell használni mint a névnek"
+msgid "Trying %s...\n"
+msgstr ""
-#: sunrpc/rpc_main.c:308
+#: inet/rcmd.c:249
#, c-format
-msgid "%s: while writing output %s: %m"
-msgstr "%s: amíg a kimenetre írok %s: %m"
+msgid "rcmd: write (setting up stderr): %m\n"
+msgstr ""
-#: argp/argp-parse.c:170
-msgid "(PROGRAM ERROR) No version known!?"
-msgstr "(PROGRAM HIBA) Nem ismert verzió?"
+#: inet/rcmd.c:265
+#, c-format
+msgid "rcmd: poll (setting up stderr): %m\n"
+msgstr ""
-#: argp/argp-parse.c:787
-msgid "(PROGRAM ERROR) Option should have been recognized!?"
-msgstr "(PROGRAM HIBA) Opciót nem lehet értelmezni?"
+#: inet/rcmd.c:268
+msgid "poll: protocol failure in circuit setup\n"
+msgstr ""
-#: nis/nis_print.c:133
-msgid "(Unknown object)\n"
-msgstr "(Ismeretlen elem)\n"
+#: inet/rcmd.c:301
+msgid "socket: protocol failure in circuit setup\n"
+msgstr ""
-#: sunrpc/clnt_perr.c:133
+#: inet/rcmd.c:325
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(ismeretlen hitelesítés hiba - %d)"
+msgid "rcmd: %s: short read"
+msgstr ""
-#: sunrpc/rpcinfo.c:613
-msgid "(unknown)"
-msgstr "(ismeretlen)"
+#: inet/rcmd.c:481
+msgid "lstat failed"
+msgstr ""
-#: elf/sprof.c:570
-#, c-format
-msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
-msgstr "**** A '%s' fájl le van csupszítva: nem lehet részletes elemzést csinálni\n"
+#: inet/rcmd.c:488
+msgid "cannot open"
+msgstr ""
-#: catgets/gencat.c:282
-msgid "*standard input*"
-msgstr "*szabványos bemenet*"
+#: inet/rcmd.c:490
+msgid "fstat failed"
+msgstr ""
-#: elf/cache.c:105
-#, c-format
-msgid ", OS ABI: %s %d.%d.%d"
-msgstr ", OS ABI: %s %d.%d.%d"
+#: inet/rcmd.c:492
+msgid "bad owner"
+msgstr ""
-#: catgets/gencat.c:125
-msgid ""
-"-o OUTPUT-FILE [INPUT-FILE]...\n"
-"[OUTPUT-FILE [INPUT-FILE]...]"
+#: inet/rcmd.c:494
+msgid "writeable by other than owner"
msgstr ""
-"-o KIMENETI_FÁJL[ BEMENETI_FÁJL]...\n"
-"[KIMENETI_FÁJL [BEMENET FÁJL]...]"
-#: stdio-common/../sysdeps/gnu/errlist.c:797
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:115
-msgid ".lib section in a.out corrupted"
-msgstr "Az a.out \".lib\" része megsérült"
+#: inet/rcmd.c:496
+msgid "hard linked somewhere"
+msgstr ""
-#: sunrpc/clnt_perr.c:119 sunrpc/clnt_perr.c:140
+#: inet/ruserpass.c:170 inet/ruserpass.c:193
+msgid "out of memory"
+msgstr "elfogyott a memória"
+
+#: inet/ruserpass.c:184
+msgid "Error: .netrc file is readable by others."
+msgstr ""
+
+#: inet/ruserpass.c:185
+msgid "Remove password or make file unreadable by others."
+msgstr ""
+
+#: inet/ruserpass.c:277
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; alsó verzió = %lu, felsõ verzió = %lu"
+msgid "Unknown .netrc keyword %s"
+msgstr ""
-#: sunrpc/clnt_perr.c:126
-msgid "; why = "
-msgstr "; miért = "
+#: libidn/nfkc.c:464
+msgid "Character out of range for UTF-8"
+msgstr "A karakter az UTF-8 tartományon kívülre esik"
-#: locale/programs/charmap.c:1004
+#: locale/programs/charmap-dir.c:59
#, c-format
-msgid "<%s> and <%s> are illegal names for range"
-msgstr "a <%s> és a <%s> érvénytelen nevek ebben a tartományban"
+msgid "cannot read character map directory `%s'"
+msgstr ""
-#: locale/programs/repertoire.c:448
+#: locale/programs/charmap.c:138
#, c-format
-msgid "<%s> and <%s> are invalid names for range"
-msgstr "a <%s> és a <%s> érvénytelen nevek ebben a tartományban"
+msgid "character map file `%s' not found"
+msgstr ""
-#: locale/programs/ld-ctype.c:573 locale/programs/ld-ctype.c:608
+#: locale/programs/charmap.c:195
#, c-format
-msgid "<SP> character must not be in class `%s'"
-msgstr "<SP> karakter nem lehet '%s' osztályú"
+msgid "default character map file `%s' not found"
+msgstr ""
-#: locale/programs/ld-ctype.c:561 locale/programs/ld-ctype.c:597
+#: locale/programs/charmap.c:258
#, c-format
-msgid "<SP> character not in class `%s'"
-msgstr "<SP> karakter nem '%s' osztályú"
+msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
+msgstr ""
-#. TRANS The experienced user will know what is wrong.
-#. TRANS @c This error code is a joke. Its perror text is part of the joke.
-#. TRANS @c Don't change it.
-#: stdio-common/../sysdeps/gnu/errlist.c:622
-msgid "?"
-msgstr "?"
+#: locale/programs/charmap.c:337
+#, c-format
+msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
+msgstr ""
-#: sysdeps/generic/siglist.h:34
-msgid "Aborted"
-msgstr "Félbeszakítva"
+#: locale/programs/charmap.c:357 locale/programs/charmap.c:374
+#: locale/programs/repertoire.c:174
+#, c-format
+msgid "syntax error in prolog: %s"
+msgstr ""
-#: nis/nis_print.c:324
-msgid "Access Rights : "
-msgstr "Elérési jogok : "
+#: locale/programs/charmap.c:358
+msgid "invalid definition"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:793
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:114
-msgid "Accessing a corrupted shared library"
-msgstr "Sérült osztott programkönyvtár elérése"
+#: locale/programs/charmap.c:375 locale/programs/locfile.c:126
+#: locale/programs/locfile.c:153 locale/programs/repertoire.c:175
+msgid "bad argument"
+msgstr ""
-#. TRANS The requested socket address is already in use. @xref{Socket Addresses}.
-#: stdio-common/../sysdeps/gnu/errlist.c:367
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:155
-msgid "Address already in use"
-msgstr "A cím már használatban van"
+#: locale/programs/charmap.c:403
+#, c-format
+msgid "duplicate definition of <%s>"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:31
-msgid "Address family for hostname not supported"
-msgstr "A gépnév nem támogatja ezt a címcsaládot"
+#: locale/programs/charmap.c:410
+#, c-format
+msgid "value for <%s> must be 1 or greater"
+msgstr ""
-#. TRANS The address family specified for a socket is not supported; it is
-#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}.
-#: stdio-common/../sysdeps/gnu/errlist.c:362
-msgid "Address family not supported by protocol"
-msgstr "A protokoll nem támogatja ezt a címcsaládot"
+#: locale/programs/charmap.c:422
+#, c-format
+msgid "value of <%s> must be greater or equal than the value of <%s>"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:154
-msgid "Address family not supported by protocol family"
-msgstr "A protokollcsalád nem támogatja ezt a címcsaládot"
+#: locale/programs/charmap.c:445 locale/programs/repertoire.c:183
+#, c-format
+msgid "argument to <%s> must be a single character"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:761
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:98
-msgid "Advertise error"
-msgstr "Kihirdetési hiba"
+#: locale/programs/charmap.c:471
+msgid "character sets with locking states are not supported"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:40 sysdeps/generic/siglist.h:40
-msgid "Alarm clock"
-msgstr "Emlékeztetés"
+#: locale/programs/charmap.c:498 locale/programs/charmap.c:552
+#: locale/programs/charmap.c:584 locale/programs/charmap.c:678
+#: locale/programs/charmap.c:733 locale/programs/charmap.c:774
+#: locale/programs/charmap.c:815
+#, c-format
+msgid "syntax error in %s definition: %s"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:45
-msgid "All requests done"
-msgstr "Minden igénylés teljesítve"
+#: locale/programs/charmap.c:499 locale/programs/charmap.c:679
+#: locale/programs/charmap.c:775 locale/programs/repertoire.c:230
+msgid "no symbolic name given"
+msgstr ""
-#: malloc/memusagestat.c:57
-msgid "Also draw graph for total memory consumption"
-msgstr "A teljes memóriát felemészti a grafikon rajzolása"
+#: locale/programs/charmap.c:553
+msgid "invalid encoding given"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:83
-msgid "Anode table overflow"
-msgstr "Anode tábla túlcsordult"
+#: locale/programs/charmap.c:562
+msgid "too few bytes in character encoding"
+msgstr ""
-#: intl/tst-gettext2.c:38
-msgid "Another string for testing."
-msgstr "Másik szöveg a vizsgálathoz."
+#: locale/programs/charmap.c:564
+msgid "too many bytes in character encoding"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:37
-msgid "Arg list too long"
-msgstr "Az argumentumlista túl hosszú"
+#: locale/programs/charmap.c:586 locale/programs/charmap.c:734
+#: locale/programs/charmap.c:817 locale/programs/repertoire.c:296
+msgid "no symbolic name given for end of range"
+msgstr ""
-#. TRANS Argument list too long; used when the arguments passed to a new program
-#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
-#. TRANS File}) occupy too much memory space. This condition never arises in the
-#. TRANS GNU system.
-#: stdio-common/../sysdeps/gnu/errlist.c:70
-msgid "Argument list too long"
-msgstr "Az argumentumlista túl hosszú"
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
+#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
+#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
+#: locale/programs/ld-identification.c:452
+#: locale/programs/ld-measurement.c:238 locale/programs/ld-messages.c:332
+#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:307
+#: locale/programs/ld-numeric.c:368 locale/programs/ld-paper.c:241
+#: locale/programs/ld-telephone.c:313 locale/programs/ld-time.c:1221
+#: locale/programs/repertoire.c:313
+#, c-format
+msgid "%1$s: definition does not end with `END %1$s'"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:63
-msgid "Argument out of domain"
-msgstr "Az argumentum a tartományom kívül"
+#: locale/programs/charmap.c:643
+msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
+msgstr ""
-#: nis/nis_error.c:66
-msgid "Attempt to remove a non-empty table"
-msgstr "Kísérlet a nem üres tábla eltávolítására"
+#: locale/programs/charmap.c:651 locale/programs/charmap.c:714
+#, c-format
+msgid "value for %s must be an integer"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:116
-msgid "Attempting to link in more shared libraries than system limit"
-msgstr "Több megosztott könyvtárra probált hivatkozni mint amennyi a rendszer határ"
+#: locale/programs/charmap.c:842
+#, c-format
+msgid "%s: error in state machine"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:801
-msgid "Attempting to link in too many shared libraries"
-msgstr "Túl sok megosztott könyvtárra probált hivatkozni "
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
+#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
+#: locale/programs/ld-identification.c:468
+#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
+#: locale/programs/ld-monetary.c:959 locale/programs/ld-name.c:323
+#: locale/programs/ld-numeric.c:384 locale/programs/ld-paper.c:257
+#: locale/programs/ld-telephone.c:329 locale/programs/ld-time.c:1237
+#: locale/programs/locfile.c:826 locale/programs/repertoire.c:324
+#, c-format
+msgid "%s: premature end of file"
+msgstr ""
-#: sunrpc/clnt_perr.c:354
-msgid "Authentication OK"
-msgstr "Hitelesítés OK"
+#: locale/programs/charmap.c:869 locale/programs/charmap.c:880
+#, c-format
+msgid "unknown character `%s'"
+msgstr ""
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:562
-msgid "Authentication error"
-msgstr "Hitelesítés hibás"
+#: locale/programs/charmap.c:888
+#, c-format
+msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
+msgstr ""
-#: nis/nis_print.c:109
-msgid "BOGUS OBJECT\n"
-msgstr "HAMIS OBJEKTUM\n"
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
+#: locale/programs/repertoire.c:419
+msgid "invalid names for character range"
+msgstr ""
-#. TRANS Bad address; an invalid pointer was detected.
-#. TRANS In the GNU system, this error never happens; you get a signal instead.
-#: stdio-common/../sysdeps/gnu/errlist.c:115
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:44
-msgid "Bad address"
-msgstr "Rossz cím"
+#: locale/programs/charmap.c:1005 locale/programs/repertoire.c:431
+msgid "hexadecimal range format should use only capital characters"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:80
-msgid "Bad exchange descriptor"
-msgstr "Hibás csere leíró"
+#: locale/programs/charmap.c:1023 locale/programs/repertoire.c:449
+#, c-format
+msgid "<%s> and <%s> are invalid names for range"
+msgstr ""
-#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
-#. TRANS closed or reading from a descriptor open only for writing (or vice
-#. TRANS versa).
-#: stdio-common/../sysdeps/gnu/errlist.c:83
-msgid "Bad file descriptor"
-msgstr "Hibás fájl leíró"
+#: locale/programs/charmap.c:1029 locale/programs/repertoire.c:456
+msgid "upper limit in range is smaller than lower limit"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:39
-msgid "Bad file number"
-msgstr "Rossz fájlszám"
+#: locale/programs/charmap.c:1087
+msgid "resulting bytes for range not representable."
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:749
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:87
-msgid "Bad font file format"
-msgstr "Rossz betûkészletfájl-formátum"
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
+#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
+#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
+#: locale/programs/ld-numeric.c:98 locale/programs/ld-paper.c:91
+#: locale/programs/ld-telephone.c:94 locale/programs/ld-time.c:159
+#, c-format
+msgid "No definition for %s category found"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:641
-msgid "Bad message"
-msgstr "Hibás üzenet"
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
+#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
+#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
+#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
+#: locale/programs/ld-name.c:142 locale/programs/ld-numeric.c:112
+#: locale/programs/ld-numeric.c:126 locale/programs/ld-paper.c:102
+#: locale/programs/ld-paper.c:111 locale/programs/ld-telephone.c:105
+#: locale/programs/ld-telephone.c:162 locale/programs/ld-time.c:175
+#: locale/programs/ld-time.c:196
+#, c-format
+msgid "%s: field `%s' not defined"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:84
-msgid "Bad request code"
-msgstr "Hibás kérelem kód"
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
+#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
+#, c-format
+msgid "%s: field `%s' must not be empty"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:81
-msgid "Bad request descriptor"
-msgstr "Hibás kérelem leírás"
+#: locale/programs/ld-address.c:170
+#, c-format
+msgid "%s: invalid escape `%%%c' sequence in field `%s'"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:38 sysdeps/generic/siglist.h:63
-msgid "Bad system call"
-msgstr "Rossz rendszer hívás"
+#: locale/programs/ld-address.c:221
+#, c-format
+msgid "%s: terminology language code `%s' not defined"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:33
-msgid "Bad value for ai_flags"
-msgstr "Rossz érték az 'ai_flags'-ben"
+#: locale/programs/ld-address.c:246
+#, c-format
+msgid "%s: field `%s' must not be defined"
+msgstr ""
-#: locale/programs/localedef.c:104
-msgid "Be strictly POSIX conform"
-msgstr "Szigorúan POSIX hozzáillesztés"
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
+#, c-format
+msgid "%s: language abbreviation `%s' not defined"
+msgstr ""
-#: nis/nis_print.c:305
-msgid "Binary data\n"
-msgstr "Bináris adatok\n"
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
+#, c-format
+msgid "%s: `%s' value does not match `%s' value"
+msgstr ""
-#. TRANS A file that isn't a block special file was given in a situation that
-#. TRANS requires one. For example, trying to mount an ordinary file as a file
-#. TRANS system in Unix gives this error.
-#: stdio-common/../sysdeps/gnu/errlist.c:122
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:45
-msgid "Block device required"
-msgstr "Ehhez blokk eszköz szükséges"
+#: locale/programs/ld-address.c:314
+#, c-format
+msgid "%s: numeric country code `%d' not valid"
+msgstr ""
-#: sunrpc/pmap_rmt.c:348
-msgid "Broadcast poll problem"
-msgstr "Üzenetszórási probléma"
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-identification.c:364
+#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
+#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
+#: locale/programs/ld-monetary.c:777 locale/programs/ld-name.c:280
+#: locale/programs/ld-numeric.c:263 locale/programs/ld-paper.c:224
+#: locale/programs/ld-telephone.c:288 locale/programs/ld-time.c:1126
+#: locale/programs/ld-time.c:1168
+#, c-format
+msgid "%s: field `%s' declared more than once"
+msgstr ""
-#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
-#. TRANS Every library function that returns this error code also generates a
-#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled
-#. TRANS or blocked. Thus, your program will never actually see @code{EPIPE}
-#. TRANS unless it has handled or blocked @code{SIGPIPE}.
-#: stdio-common/../sysdeps/gnu/errlist.c:235
-#: stdio-common/../sysdeps/unix/siglist.c:39
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:62
-#: sysdeps/generic/siglist.h:39
-msgid "Broken pipe"
-msgstr "Törött csõ(pipe)"
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
+#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
+#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
+#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
+#: locale/programs/ld-telephone.c:292 locale/programs/ld-time.c:1020
+#: locale/programs/ld-time.c:1089 locale/programs/ld-time.c:1131
+#, c-format
+msgid "%s: unknown character in field `%s'"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:36 sysdeps/generic/siglist.h:37
-msgid "Bus error"
-msgstr "Busz hiba"
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
+#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
+#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
+#: locale/programs/ld-numeric.c:366 locale/programs/ld-paper.c:239
+#: locale/programs/ld-telephone.c:311 locale/programs/ld-time.c:1219
+#, c-format
+msgid "%s: incomplete `END' line"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:50 sysdeps/generic/siglist.h:50
-msgid "CPU time limit exceeded"
-msgstr "processzor idõ határt elérte"
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
+#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
+#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
+#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
+#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
+#: locale/programs/ld-identification.c:459
+#: locale/programs/ld-measurement.c:245 locale/programs/ld-messages.c:339
+#: locale/programs/ld-monetary.c:950 locale/programs/ld-name.c:314
+#: locale/programs/ld-numeric.c:375 locale/programs/ld-paper.c:248
+#: locale/programs/ld-telephone.c:320 locale/programs/ld-time.c:1228
+#, c-format
+msgid "%s: syntax error"
+msgstr ""
-#: nis/nis_error.c:33
-msgid "Cache expired"
-msgstr "Gyorstár lejárt"
+#: locale/programs/ld-collate.c:417
+#, c-format
+msgid "`%.*s' already defined in charmap"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:789
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:113
-msgid "Can not access a needed shared library"
-msgstr "Egy szükséges osztott programkönyvtár nem elérhetõ"
+#: locale/programs/ld-collate.c:426
+#, c-format
+msgid "`%.*s' already defined in repertoire"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:117
-msgid "Can not exec a shared library directly"
-msgstr "Nem lehet egy megosztott könyvtárat közvetlenül futtatni"
+#: locale/programs/ld-collate.c:433
+#, c-format
+msgid "`%.*s' already defined as collating symbol"
+msgstr ""
-#: nis/ypclnt.c:794
-msgid "Can't bind to server which serves this domain"
-msgstr "Nem lehet hozzárendelni(bind) ahhoz a szerverhez amelyik ezt a tartomány szolgálja ki"
+#: locale/programs/ld-collate.c:440
+#, c-format
+msgid "`%.*s' already defined as collating element"
+msgstr ""
-#: elf/ldconfig.c:1008
-msgid "Can't chdir to /"
-msgstr "Nem lehet a '/' könyvtárba váltani"
+#: locale/programs/ld-collate.c:471 locale/programs/ld-collate.c:497
+#, c-format
+msgid "%s: `forward' and `backward' are mutually excluding each other"
+msgstr ""
-#: nis/ypclnt.c:806
-msgid "Can't communicate with portmapper"
-msgstr "Nem lehet kapcsolatot teremteni a 'portmapper'-el"
+#: locale/programs/ld-collate.c:481 locale/programs/ld-collate.c:507
+#: locale/programs/ld-collate.c:523
+#, c-format
+msgid "%s: `%s' mentioned more than once in definition of weight %d"
+msgstr ""
-#: nis/ypclnt.c:808
-msgid "Can't communicate with ypbind"
-msgstr "Nem lehet kapcsolatot teremteni a 'ypbind'-el"
+#: locale/programs/ld-collate.c:579
+#, c-format
+msgid "%s: too many rules; first entry only had %d"
+msgstr ""
-#: nis/ypclnt.c:810
-msgid "Can't communicate with ypserv"
-msgstr "Nem lehet kapcsolatot teremteni a 'ypserv'-el"
+#: locale/programs/ld-collate.c:615
+#, c-format
+msgid "%s: not enough sorting rules"
+msgstr ""
-#: elf/cache.c:394
+#: locale/programs/ld-collate.c:780
#, c-format
-msgid "Can't create temporary cache file %s"
-msgstr "Nem lehet létrehozni az ideiglenes gyorstárat '%s' fájlnak"
+msgid "%s: empty weight string not allowed"
+msgstr ""
-#: elf/ldconfig.c:512
+#: locale/programs/ld-collate.c:875
#, c-format
-msgid "Can't find %s"
-msgstr "Nem találom a '%s'-t"
+msgid "%s: weights must use the same ellipsis symbol as the name"
+msgstr ""
-#: elf/ldconfig.c:449
+#: locale/programs/ld-collate.c:931
#, c-format
-msgid "Can't link %s to %s"
-msgstr "Nem lehet hivatkozást létrehozni a '%s'-tõl a '%s'-hez"
+msgid "%s: too many values"
+msgstr ""
-#: elf/ldconfig.c:528
+#: locale/programs/ld-collate.c:1051 locale/programs/ld-collate.c:1226
#, c-format
-msgid "Can't lstat %s"
-msgstr "Nem lehet lekérdezni a '%s'-t"
+msgid "order for `%.*s' already defined at %s:%Zu"
+msgstr ""
-#: elf/cache.c:131 elf/ldconfig.c:1029
+#: locale/programs/ld-collate.c:1101
#, c-format
-msgid "Can't open cache file %s\n"
-msgstr "Nem lehet megnyitni a gyorstár '%s' fájlját\n"
+msgid "%s: the start and the end symbol of a range must stand for characters"
+msgstr ""
-#: elf/ldconfig.c:1050
+#: locale/programs/ld-collate.c:1128
#, c-format
-msgid "Can't open cache file directory %s\n"
-msgstr "Nem lehet megnyitni a gyorstár '%s' könyvtárát \n"
+msgid "%s: byte sequences of first and last character must have the same length"
+msgstr ""
-#: elf/ldconfig.c:924
+#: locale/programs/ld-collate.c:1170
#, c-format
-msgid "Can't open configuration file %s"
-msgstr "Nem lehet megnyitni a '%s' konfigurációs állományt"
+msgid "%s: byte sequence of first character of range is not lower than that of the last character"
+msgstr ""
-#: elf/ldconfig.c:634
+#: locale/programs/ld-collate.c:1295
#, c-format
-msgid "Can't open directory %s"
-msgstr "Nem lehet megnyitni a '%s' könyvtárat"
+msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
+msgstr ""
-#: elf/cache.c:387
+#: locale/programs/ld-collate.c:1299
#, c-format
-msgid "Can't remove old temporary cache file %s"
-msgstr "Nem lehet eltávolítani a régi '%s' ideiglenes gyorstár fájlt"
+msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'"
+msgstr ""
-#: elf/ldconfig.c:344
+#: locale/programs/ld-collate.c:1319 locale/programs/ld-ctype.c:1477
#, c-format
-msgid "Can't stat %s"
-msgstr "Nem lehet lekérdezni a '%s'-t"
+msgid "`%s' and `%.*s' are not valid names for symbolic range"
+msgstr ""
-#: elf/ldconfig.c:414
+#: locale/programs/ld-collate.c:1369 locale/programs/ld-collate.c:3858
#, c-format
-msgid "Can't stat %s\n"
-msgstr "Nem lehet lekérdezni a '%s'-t \n"
+msgid "%s: order for `%.*s' already defined at %s:%Zu"
+msgstr ""
-#: elf/ldconfig.c:443
+#: locale/programs/ld-collate.c:1378
#, c-format
-msgid "Can't unlink %s"
-msgstr "Nem lehet a hivatkozást megszüntetni a '%s'-rõl"
+msgid "%s: `%s' must be a character"
+msgstr ""
-#. TRANS No memory available. The system cannot allocate more virtual memory
-#. TRANS because its capacity is full.
-#: stdio-common/../sysdeps/gnu/errlist.c:104
-msgid "Cannot allocate memory"
-msgstr "Nem lehet lefoglalni a memóriás"
+#: locale/programs/ld-collate.c:1573
+#, c-format
+msgid "%s: `position' must be used for a specific level in all sections or none"
+msgstr ""
-#. TRANS The requested socket address is not available; for example, you tried
-#. TRANS to give a socket a name that doesn't match the local host name.
-#. TRANS @xref{Socket Addresses}.
-#: stdio-common/../sysdeps/gnu/errlist.c:374
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:156
-msgid "Cannot assign requested address"
-msgstr "Az igényelt cím nem osztható ki"
+#: locale/programs/ld-collate.c:1598
+#, c-format
+msgid "symbol `%s' not defined"
+msgstr ""
-#: sunrpc/pmap_rmt.c:265
-msgid "Cannot create socket for broadcast rpc"
-msgstr "Nem lehet létrehozni a csatornát az 'rpc' üzeneteinek a szórásához"
+#: locale/programs/ld-collate.c:1674 locale/programs/ld-collate.c:1780
+#, c-format
+msgid "symbol `%s' has the same encoding as"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:805
-msgid "Cannot exec a shared library directly"
-msgstr "Az osztott programkönyvtárakat nem lehet közvetlenül futtatni"
+#: locale/programs/ld-collate.c:1678 locale/programs/ld-collate.c:1784
+#, c-format
+msgid "symbol `%s'"
+msgstr ""
-#: elf/readlib.c:99
+#: locale/programs/ld-collate.c:1826
#, c-format
-msgid "Cannot fstat file %s.\n"
-msgstr "Nem lehet lekérdezni a '%s' fájlt\n"
+msgid "no definition of `UNDEFINED'"
+msgstr ""
-#: sunrpc/rpc_main.c:1417
-msgid "Cannot have more than one file generation flag!\n"
-msgstr "Nincs több mint egy generációs jelzõ!\n"
+#: locale/programs/ld-collate.c:1855
+#, c-format
+msgid "too many errors; giving up"
+msgstr ""
-#: elf/ldconfig.c:689 elf/ldconfig.c:732
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
#, c-format
-msgid "Cannot lstat %s"
-msgstr "Nem lehet lekéredezni a '%s'-t"
+msgid "%s: nested conditionals not supported"
+msgstr ""
-#: elf/readlib.c:118
+#: locale/programs/ld-collate.c:2677
#, c-format
-msgid "Cannot mmap file %s.\n"
-msgstr "Nem lehet feltérképezni a '%s' fájlt.\n"
+msgid "%s: more then one 'else'"
+msgstr ""
-#: sunrpc/pmap_rmt.c:361
-msgid "Cannot receive reply to broadcast"
-msgstr "Nem érkezett válasz az üzenetszórásra"
+#: locale/programs/ld-collate.c:2852
+#, c-format
+msgid "%s: duplicate definition of `%s'"
+msgstr ""
-#: sunrpc/pmap_clnt.c:136
-msgid "Cannot register service"
-msgstr "Nem lehet a szolgáltatást bejegyezni"
+#: locale/programs/ld-collate.c:2888
+#, c-format
+msgid "%s: duplicate declaration of section `%s'"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:173
-msgid "Cannot send after socket shutdown"
-msgstr "Nem lehet semmit küldeni a csatorna leállása után"
+#: locale/programs/ld-collate.c:3024
+#, c-format
+msgid "%s: unknown character in collating symbol name"
+msgstr ""
-#. TRANS The socket has already been shut down.
-#: stdio-common/../sysdeps/gnu/errlist.c:435
-msgid "Cannot send after transport endpoint shutdown"
-msgstr "Az átviteli végpont leállása után nem lehet küldeni"
+#: locale/programs/ld-collate.c:3153
+#, c-format
+msgid "%s: unknown character in equivalent definition name"
+msgstr ""
-#: sunrpc/pmap_rmt.c:323
-msgid "Cannot send broadcast packet"
-msgstr "Nem lehet szétszorni az üzenetet"
+#: locale/programs/ld-collate.c:3164
+#, c-format
+msgid "%s: unknown character in equivalent definition value"
+msgstr ""
-#: sunrpc/pmap_rmt.c:272
-msgid "Cannot set socket option SO_BROADCAST"
-msgstr "Nem lehet a csatorna 'SO_BROADCAST' opcióját beállítani"
+#: locale/programs/ld-collate.c:3174
+#, c-format
+msgid "%s: unknown symbol `%s' in equivalent definition"
+msgstr ""
-#: sunrpc/rpc_main.c:1195
-msgid "Cannot specify more than one input file!\n"
-msgstr "Nem lehet egynél több bemeneti fájlt meghatározni!\n"
+#: locale/programs/ld-collate.c:3183
+msgid "error while adding equivalent collating symbol"
+msgstr ""
-#: elf/ldconfig.c:701
+#: locale/programs/ld-collate.c:3221
#, c-format
-msgid "Cannot stat %s"
-msgstr "Nem lehet lekéredezni a '%s'-t"
+msgid "duplicate definition of script `%s'"
+msgstr ""
-#: sunrpc/rpc_main.c:1374
-msgid "Cannot use netid flag with inetd flag!\n"
-msgstr "Nem használató a 'netid' jelzõ az 'inetd' jelzõvel!\n"
+#: locale/programs/ld-collate.c:3269
+#, c-format
+msgid "%s: unknown section name `%.*s'"
+msgstr ""
-#: sunrpc/rpc_main.c:1386
-msgid "Cannot use netid flag without TIRPC!\n"
-msgstr "Nem használató a 'netid' jelzõ az 'TIRPC' jelzõ nélkül!\n"
+#: locale/programs/ld-collate.c:3298
+#, c-format
+msgid "%s: multiple order definitions for section `%s'"
+msgstr ""
-#: sunrpc/rpc_main.c:1393
-msgid "Cannot use table flags with newstyle!\n"
-msgstr "Nem lehet használni a tábla jelzõket ebben az új stílusban!\n"
+#: locale/programs/ld-collate.c:3326
+#, c-format
+msgid "%s: invalid number of sorting rules"
+msgstr ""
-#: elf/ldconfig.c:126
-msgid "Change to and use ROOT as root directory"
-msgstr "Átlépek és 'ROOT'-ként használom a gyökér könyvtárat"
+#: locale/programs/ld-collate.c:3353
+#, c-format
+msgid "%s: multiple order definitions for unnamed section"
+msgstr ""
-#: elf/cache.c:426
+#: locale/programs/ld-collate.c:3407 locale/programs/ld-collate.c:3537
+#: locale/programs/ld-collate.c:3900
#, c-format
-msgid "Changing access rights of %s to %#o failed"
-msgstr "A hozzáférési jogok '%s'-rõl '%#o' történyõ átállítása nem sikerült"
+msgid "%s: missing `order_end' keyword"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:689
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:67
-msgid "Channel number out of range"
-msgstr "A csatornaszám intervallumon kívüli"
+#: locale/programs/ld-collate.c:3470
+#, c-format
+msgid "%s: order for collating symbol %.*s not yet defined"
+msgstr ""
-#: nis/nis_print.c:268
+#: locale/programs/ld-collate.c:3488
#, c-format
-msgid "Character Separator : %c\n"
-msgstr "Karakter Elválasztó: %c\n"
+msgid "%s: order for collating element %.*s not yet defined"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:46 sysdeps/generic/siglist.h:46
-msgid "Child exited"
-msgstr "Gyermek folyamat befejezõdött"
+#: locale/programs/ld-collate.c:3499
+#, c-format
+msgid "%s: cannot reorder after %.*s: symbol not known"
+msgstr ""
-#: sunrpc/clnt_perr.c:373
-msgid "Client credential too weak"
-msgstr "Kliens igazolásai túl gyengék"
+#: locale/programs/ld-collate.c:3551 locale/programs/ld-collate.c:3912
+#, c-format
+msgid "%s: missing `reorder-end' keyword"
+msgstr ""
-#: nis/nis_print.c:270
-msgid "Columns :\n"
-msgstr "Oszlopok :\n"
+#: locale/programs/ld-collate.c:3585 locale/programs/ld-collate.c:3783
+#, c-format
+msgid "%s: section `%.*s' not known"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:769
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:100
-msgid "Communication error on send"
-msgstr "Átviteli hiba küldéskor"
+#: locale/programs/ld-collate.c:3650
+#, c-format
+msgid "%s: bad symbol <%.*s>"
+msgstr ""
-#: locale/programs/localedef.c:112
-msgid "Compile locale specification"
-msgstr "Fordítás hely meghatározások"
+#: locale/programs/ld-collate.c:3846
+#, c-format
+msgid "%s: cannot have `%s' as end of ellipsis range"
+msgstr ""
-#. TRANS Go home and have a glass of warm, dairy-fresh milk.
-#: stdio-common/../sysdeps/gnu/errlist.c:632
-msgid "Computer bought the farm"
-msgstr "Számítógép megvette a farmot"
+#: locale/programs/ld-collate.c:3896
+#, c-format
+msgid "%s: empty category description not allowed"
+msgstr ""
-#: elf/ldconfig.c:136
-msgid "Configure Dynamic Linker Run Time Bindings."
-msgstr "Beállítás Dinamikus Linker Futtatás Idõ Kötések."
+#: locale/programs/ld-collate.c:3915
+#, c-format
+msgid "%s: missing `reorder-sections-end' keyword"
+msgstr ""
-#. TRANS A remote host refused to allow the network connection (typically because
-#. TRANS it is not running the requested service).
-#: stdio-common/../sysdeps/gnu/errlist.c:452
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:176
-msgid "Connection refused"
-msgstr "A csatlakozás megtagadva"
+#: locale/programs/ld-collate.c:4079
+#, c-format
+msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
+msgstr ""
-#. TRANS A network connection was closed for reasons outside the control of the
-#. TRANS local host, such as by the remote machine rebooting or an unrecoverable
-#. TRANS protocol violation.
-#: stdio-common/../sysdeps/gnu/errlist.c:402
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:161
-msgid "Connection reset by peer"
-msgstr "A partner lezárta a kapcsolatot"
+#: locale/programs/ld-collate.c:4097
+#, c-format
+msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
+msgstr ""
-#. TRANS A socket operation with a specified timeout received no response during
-#. TRANS the timeout period.
-#: stdio-common/../sysdeps/gnu/errlist.c:446
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:175
-msgid "Connection timed out"
-msgstr "A kapcsolat idõtúllépés miatt megszakadt"
+#: locale/programs/ld-ctype.c:439
+#, c-format
+msgid "No character set name specified in charmap"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:45 sysdeps/generic/siglist.h:45
-msgid "Continued"
-msgstr "Folytatva"
+#: locale/programs/ld-ctype.c:468
+#, c-format
+msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
+msgstr ""
-#: iconv/iconv_prog.c:73
-msgid "Convert encoding of given files from one encoding to another."
-msgstr "Az átadott fájlokat átalakítja egy másik kódra."
+#: locale/programs/ld-ctype.c:483
+#, c-format
+msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'"
+msgstr ""
-#: catgets/gencat.c:246 elf/ldconfig.c:259 elf/sprof.c:355
-#: iconv/iconv_prog.c:393 iconv/iconvconfig.c:335 locale/programs/locale.c:281
-#: locale/programs/localedef.c:311 nscd/nscd.c:287 nscd/nscd_nischeck.c:90
-#: nss/getent.c:63 posix/getconf.c:904
+#: locale/programs/ld-ctype.c:497 locale/programs/ld-ctype.c:555
#, c-format
-msgid ""
-"Copyright (C) %s Free Software Foundation, Inc.\n"
-"This is free software; see the source for copying conditions. There is NO\n"
-"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+msgid "internal error in %s, line %u"
msgstr ""
-"Copyright (C) %s Free Software Foundation, Inc.\n"
-"Ez a szoftver egy szabad program; a részletekért nézze meg a másolási feltételeket. A\n"
-"program mûködésére NINCS semmilyen garancia. \n"
-#: nscd/nscd_conf.c:166
+#: locale/programs/ld-ctype.c:526
#, c-format
-msgid "Could not create log file \"%s\""
-msgstr "Nem lehet létrehozni a '%s' napló fájlt"
+msgid "character '%s' in class `%s' must be in class `%s'"
+msgstr ""
-#: catgets/gencat.c:112
-msgid "Create C header file NAME containing symbol definitions"
-msgstr "C fejléc fájl létrehozása, a NÉV tartalmazza szimbólum meghatározásokat"
+#: locale/programs/ld-ctype.c:542
+#, c-format
+msgid "character '%s' in class `%s' must not be in class `%s'"
+msgstr ""
-#: iconv/iconvconfig.c:110
-msgid "Create fastloading iconv module configuration file."
-msgstr "Gyorsan töltõdõ 'iconv' modul konfigurációs fájl létrehozása."
+#: locale/programs/ld-ctype.c:572 locale/programs/ld-ctype.c:610
+#, c-format
+msgid "<SP> character not in class `%s'"
+msgstr ""
-#: locale/programs/localedef.c:102
-msgid "Create old-style tables"
-msgstr "Régi stílusú tábla létrehozása"
+#: locale/programs/ld-ctype.c:584 locale/programs/ld-ctype.c:621
+#, c-format
+msgid "<SP> character must not be in class `%s'"
+msgstr ""
-#: locale/programs/localedef.c:101
-msgid "Create output even if warning messages were issued"
-msgstr "Kimenetet hoz létre ha figyelmeztetõ üzeneteket bocsátottak ki"
+#: locale/programs/ld-ctype.c:599
+#, c-format
+msgid "character <SP> not defined in character map"
+msgstr ""
-#: nis/nis_print.c:329
+#: locale/programs/ld-ctype.c:714
#, c-format
-msgid "Creation Time : %s"
-msgstr "Létrehozás Ideje : %s"
+msgid "`digit' category has not entries in groups of ten"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:48
-msgid "Cross-device link"
-msgstr "Eszközök közötti hivatkozás"
+#: locale/programs/ld-ctype.c:763
+#, c-format
+msgid "no input digits defined and none of the standard names in the charmap"
+msgstr ""
-#: malloc/memusagestat.c:67
-msgid "DATAFILE [OUTFILE]"
-msgstr "ADATFÁJL [KIMENETI_FÁJL]"
+#: locale/programs/ld-ctype.c:828
+#, c-format
+msgid "not all characters used in `outdigit' are available in the charmap"
+msgstr ""
-#: nis/nss_nisplus/nisplus-publickey.c:96
-#: nis/nss_nisplus/nisplus-publickey.c:172
+#: locale/programs/ld-ctype.c:845
#, c-format
-msgid "DES entry for netname %s not unique\n"
-msgstr "A '%s' DES bejegyzés nem egyedülálló ezen a hálozaton\n"
+msgid "not all characters used in `outdigit' are available in the repertoire"
+msgstr ""
-#: nis/nis_print.c:115
-msgid "DIRECTORY\n"
-msgstr "KÖNYVTÁR\n"
+#: locale/programs/ld-ctype.c:1245
+#, c-format
+msgid "character class `%s' already defined"
+msgstr ""
-#: elf/dl-deps.c:101 elf/dl-open.c:188
-msgid "DST not allowed in SUID/SGID programs"
-msgstr "A DST nem engedi meg a SUID/SGID programok használatát"
+#: locale/programs/ld-ctype.c:1251
+#, c-format
+msgid "implementation limit: no more than %Zd character classes allowed"
+msgstr ""
-#: elf/dl-error.c:71
-msgid "DYNAMIC LINKER BUG!!!"
-msgstr "DINAMIKUS LINKER HIBA!"
+#: locale/programs/ld-ctype.c:1277
+#, c-format
+msgid "character map `%s' already defined"
+msgstr ""
-#: nis/nis_error.c:52
-msgid "Database for table does not exist"
-msgstr "Adatbázis tábla nem létezik"
+#: locale/programs/ld-ctype.c:1283
+#, c-format
+msgid "implementation limit: no more than %d character maps allowed"
+msgstr ""
-#: nis/ypclnt.c:820
-msgid "Database is busy"
-msgstr "Adatbázis foglalt"
+#: locale/programs/ld-ctype.c:1548 locale/programs/ld-ctype.c:1673
+#: locale/programs/ld-ctype.c:1779 locale/programs/ld-ctype.c:2471
+#: locale/programs/ld-ctype.c:3467
+#, c-format
+msgid "%s: field `%s' does not contain exactly ten entries"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:75
-msgid "Deadlock situation detected/avoided"
-msgstr "Patthelyzet alakult ki"
+#: locale/programs/ld-ctype.c:1576 locale/programs/ld-ctype.c:2150
+#, c-format
+msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
+msgstr ""
-#: nis/nis_print.c:229
-msgid "Default Access rights :\n"
-msgstr "Alapértelmezett Elérési jogok : \n"
+#: locale/programs/ld-ctype.c:1703
+msgid "start and end character sequence of range must have the same length"
+msgstr ""
-#. TRANS No default destination address was set for the socket. You get this
-#. TRANS error when you try to transmit data over a connectionless socket,
-#. TRANS without first specifying a destination for the data with @code{connect}.
-#: stdio-common/../sysdeps/gnu/errlist.c:430
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:126
-msgid "Destination address required"
-msgstr "Meg kell adni a célállomás címét"
+#: locale/programs/ld-ctype.c:1710
+msgid "to-value character sequence is smaller than from-value sequence"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:46
-msgid "Device busy"
-msgstr "Eszköz foglalt"
+#: locale/programs/ld-ctype.c:2070 locale/programs/ld-ctype.c:2121
+msgid "premature end of `translit_ignore' definition"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:669
-msgid "Device not a stream"
-msgstr "Az eszköz nem folyamat"
+#: locale/programs/ld-ctype.c:2076 locale/programs/ld-ctype.c:2127
+#: locale/programs/ld-ctype.c:2169
+msgid "syntax error"
+msgstr "szintaktikai hiba"
-#. TRANS Resource busy; a system resource that can't be shared is already in use.
-#. TRANS For example, if you try to delete a file that is the root of a currently
-#. TRANS mounted filesystem, you get this error.
-#: stdio-common/../sysdeps/gnu/errlist.c:129
-msgid "Device or resource busy"
-msgstr "Az eszköz vagy erõforrás foglalt"
+#: locale/programs/ld-ctype.c:2303
+#, c-format
+msgid "%s: syntax error in definition of new character class"
+msgstr ""
-#: nis/nis_print.c:183
+#: locale/programs/ld-ctype.c:2318
#, c-format
-msgid "Diffie-Hellmann (%d bits)\n"
-msgstr "Diffie-Hellmann (%d bites)\n"
+msgid "%s: syntax error in definition of new character map"
+msgstr ""
-#: nis/nis_print.c:321
+#: locale/programs/ld-ctype.c:2493
+msgid "ellipsis range must be marked by two operands of same type"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2502
+msgid "with symbolic name range values the absolute ellipsis `...' must not be used"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2517
+msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2531
+msgid "with character code range values one must use the absolute ellipsis `...'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2682
#, c-format
-msgid "Directory : %s\n"
-msgstr "Könyvtár : %s\n"
+msgid "duplicated definition for mapping `%s'"
+msgstr ""
-#. TRANS Directory not empty, where an empty directory was expected. Typically,
-#. TRANS this error occurs when you are trying to delete a directory.
-#: stdio-common/../sysdeps/gnu/errlist.c:481
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:123
-msgid "Directory not empty"
-msgstr "A könyvtár nem üres"
+#: locale/programs/ld-ctype.c:2768 locale/programs/ld-ctype.c:2912
+#, c-format
+msgid "%s: `translit_start' section does not end with `translit_end'"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:79
-msgid "Disc quota exceeded"
-msgstr "Lemez fejadag elfogyott"
+#: locale/programs/ld-ctype.c:2863
+#, c-format
+msgid "%s: duplicate `default_missing' definition"
+msgstr ""
-#. TRANS The user's disk quota was exceeded.
-#: stdio-common/../sysdeps/gnu/errlist.c:499
-msgid "Disk quota exceeded"
-msgstr "A lemezfeladag túllépése"
+#: locale/programs/ld-ctype.c:2868
+msgid "previous definition was here"
+msgstr ""
-#: nscd/nscd.c:86
-msgid "Do not fork and display messages on the current tty"
-msgstr "Nem lehet elágaztatni és megjeleníteni az üzeneteket ezen a konzolon"
+#: locale/programs/ld-ctype.c:2890
+#, c-format
+msgid "%s: no representable `default_missing' definition found"
+msgstr ""
-#: catgets/gencat.c:114
-msgid "Do not use existing catalog, force new output file"
-msgstr "Nem használhatja a létezõ katalogust, hozzon létre egy ujjat"
+#: locale/programs/ld-ctype.c:3043 locale/programs/ld-ctype.c:3127
+#: locale/programs/ld-ctype.c:3147 locale/programs/ld-ctype.c:3168
+#: locale/programs/ld-ctype.c:3189 locale/programs/ld-ctype.c:3210
+#: locale/programs/ld-ctype.c:3231 locale/programs/ld-ctype.c:3271
+#: locale/programs/ld-ctype.c:3292 locale/programs/ld-ctype.c:3359
+#: locale/programs/ld-ctype.c:3401 locale/programs/ld-ctype.c:3426
+#, c-format
+msgid "%s: character `%s' not defined while needed as default value"
+msgstr ""
-#: nis/ypclnt.c:866
-msgid "Domain not bound"
-msgstr "Tartomány nem határ"
+#: locale/programs/ld-ctype.c:3048 locale/programs/ld-ctype.c:3132
+#: locale/programs/ld-ctype.c:3152 locale/programs/ld-ctype.c:3173
+#: locale/programs/ld-ctype.c:3194 locale/programs/ld-ctype.c:3215
+#: locale/programs/ld-ctype.c:3236 locale/programs/ld-ctype.c:3276
+#: locale/programs/ld-ctype.c:3297 locale/programs/ld-ctype.c:3364
+#, c-format
+msgid "%s: character `%s' in charmap not representable with one byte"
+msgstr ""
-#: elf/ldconfig.c:124
-msgid "Don't build cache"
-msgstr "Nem lehet felépíteni a gyorstárat"
+#: locale/programs/ld-ctype.c:3408 locale/programs/ld-ctype.c:3433
+#, c-format
+msgid "%s: character `%s' needed as default value not representable with one byte"
+msgstr ""
-#: elf/ldconfig.c:125
-msgid "Don't generate links"
-msgstr "Nem lehet létrehozni a hivatkozást"
+#: locale/programs/ld-ctype.c:3489
+#, c-format
+msgid "no output digits defined and none of the standard names in the charmap"
+msgstr ""
-#: debug/pcprofiledump.c:56
-msgid "Dump information generated by PC profiling."
-msgstr "Ömlesztett információ generálódott a PC profilról"
+#: locale/programs/ld-ctype.c:3780
+#, c-format
+msgid "%s: transliteration data from locale `%s' not available"
+msgstr ""
-#: elf/dl-load.c:1293
-msgid "ELF file ABI version invalid"
-msgstr "Az ELF fájl ABI verziója érvénytelen"
+#: locale/programs/ld-ctype.c:3881
+#, c-format
+msgid "%s: table for class \"%s\": %lu bytes\n"
+msgstr ""
-#: elf/dl-load.c:1290
-msgid "ELF file OS ABI invalid"
-msgstr "Az ELF fájl OS ABI érvénytelen"
+#: locale/programs/ld-ctype.c:3950
+#, c-format
+msgid "%s: table for map \"%s\": %lu bytes\n"
+msgstr ""
-#: elf/dl-load.c:1299
-msgid "ELF file version does not match current one"
-msgstr "Az ELF fájl verziója nem megfelelõ"
+#: locale/programs/ld-ctype.c:4083
+#, c-format
+msgid "%s: table for width: %lu bytes\n"
+msgstr ""
-#: elf/dl-load.c:1286
-msgid "ELF file version ident does not match current one"
-msgstr "Az ELF fájl verzió azonosítója nem megfelelõ"
+#: locale/programs/ld-identification.c:170
+#, c-format
+msgid "%s: no identification for category `%s'"
+msgstr ""
-#: elf/dl-load.c:1305
-msgid "ELF file's phentsize not the expected size"
-msgstr "Az ELF fájl ellenõrzõ mérete érvénytelen"
+#: locale/programs/ld-identification.c:435
+#, c-format
+msgid "%s: duplicate category version definition"
+msgstr ""
-#: elf/dl-load.c:884
-msgid "ELF load command address/offset not properly aligned"
-msgstr "Az ELF betöltõ parancs címe és eltolása nincs összhangban"
+#: locale/programs/ld-measurement.c:113
+#, c-format
+msgid "%s: invalid value for field `%s'"
+msgstr ""
-#: elf/dl-load.c:881
-msgid "ELF load command alignment not page-aligned"
-msgstr "Az ELF betöltõ parancs illesztés nem helyes"
+#: locale/programs/ld-messages.c:114 locale/programs/ld-messages.c:148
+#, c-format
+msgid "%s: field `%s' undefined"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:33 sysdeps/generic/siglist.h:60
-msgid "EMT trap"
-msgstr "EMT jel"
+#: locale/programs/ld-messages.c:121 locale/programs/ld-messages.c:155
+#: locale/programs/ld-monetary.c:256 locale/programs/ld-numeric.c:118
+#, c-format
+msgid "%s: value for field `%s' must not be an empty string"
+msgstr ""
-#: nis/nis_print.c:124
-msgid "ENTRY\n"
-msgstr "ÜRES\n"
+#: locale/programs/ld-messages.c:137 locale/programs/ld-messages.c:171
+#, c-format
+msgid "%s: no correct regular expression for field `%s': %s"
+msgstr ""
-#: nis/nis_print.c:303
-msgid "Encrypted data\n"
-msgstr "Titkosított adatok\n"
+#: locale/programs/ld-monetary.c:224
+#, c-format
+msgid "%s: value of field `int_curr_symbol' has wrong length"
+msgstr ""
-#: nis/nis_error.c:53
-msgid "Entry/table type mismatch"
-msgstr "Bejegyzés/tábla típus hibás"
+#: locale/programs/ld-monetary.c:237
+#, c-format
+msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217"
+msgstr ""
-#: nss/getent.c:127 nss/getent.c:292
+#: locale/programs/ld-monetary.c:285 locale/programs/ld-monetary.c:315
#, c-format
-msgid "Enumeration not supported on %s\n"
-msgstr "Nevesítés nem támogatott a '%s'-en\n"
+msgid "%s: value for field `%s' must be in range %d...%d"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:30
-msgid "Error 0"
-msgstr "0-ás Hiba "
+#: locale/programs/ld-monetary.c:747 locale/programs/ld-numeric.c:274
+#, c-format
+msgid "%s: value for field `%s' must be a single character"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:130
-msgid "Error 100"
-msgstr "100-ás Hiba"
+#: locale/programs/ld-monetary.c:844 locale/programs/ld-numeric.c:318
+#, c-format
+msgid "%s: `-1' must be last entry in `%s' field"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:131
-msgid "Error 101"
-msgstr "101-es Hiba"
+#: locale/programs/ld-monetary.c:866 locale/programs/ld-numeric.c:335
+#, c-format
+msgid "%s: values for field `%s' must be smaller than 127"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:132
-msgid "Error 102"
-msgstr "102-es Hiba"
+#: locale/programs/ld-monetary.c:909
+msgid "conversion rate value cannot be zero"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:133
-msgid "Error 103"
-msgstr "103-as Hiba"
+#: locale/programs/ld-name.c:129 locale/programs/ld-telephone.c:126
+#: locale/programs/ld-telephone.c:149
+#, c-format
+msgid "%s: invalid escape sequence in field `%s'"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:134
-msgid "Error 104"
-msgstr "104-es Hiba"
+#: locale/programs/ld-time.c:247
+#, c-format
+msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:135
-msgid "Error 105"
-msgstr "105-ös Hiba"
+#: locale/programs/ld-time.c:258
+#, c-format
+msgid "%s: direction flag in string %Zd in `era' field is not a single character"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:136
-msgid "Error 106"
-msgstr "106-os Hiba"
+#: locale/programs/ld-time.c:271
+#, c-format
+msgid "%s: invalid number for offset in string %Zd in `era' field"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:137
-msgid "Error 107"
-msgstr "107-es Hiba"
+#: locale/programs/ld-time.c:279
+#, c-format
+msgid "%s: garbage at end of offset value in string %Zd in `era' field"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:138
-msgid "Error 108"
-msgstr "108-as Hiba"
+#: locale/programs/ld-time.c:330
+#, c-format
+msgid "%s: invalid starting date in string %Zd in `era' field"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:139
-msgid "Error 109"
-msgstr "109-es Hiba"
+#: locale/programs/ld-time.c:339
+#, c-format
+msgid "%s: garbage at end of starting date in string %Zd in `era' field "
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:140
-msgid "Error 110"
-msgstr "110-es Hiba"
+#: locale/programs/ld-time.c:358
+#, c-format
+msgid "%s: starting date is invalid in string %Zd in `era' field"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:141
-msgid "Error 111"
-msgstr "111-es Hiba"
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
+#, c-format
+msgid "%s: invalid stopping date in string %Zd in `era' field"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:142
-msgid "Error 112"
-msgstr "112-es Hiba"
+#: locale/programs/ld-time.c:416
+#, c-format
+msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:143
-msgid "Error 113"
-msgstr "113-as Hiba"
+#: locale/programs/ld-time.c:444
+#, c-format
+msgid "%s: missing era name in string %Zd in `era' field"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:144
-msgid "Error 114"
-msgstr "114-es Hiba"
+#: locale/programs/ld-time.c:456
+#, c-format
+msgid "%s: missing era format in string %Zd in `era' field"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:145
-msgid "Error 115"
-msgstr "155-ös Hiba"
+#: locale/programs/ld-time.c:497
+#, c-format
+msgid "%s: third operand for value of field `%s' must not be larger than %d"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:146
-msgid "Error 116"
-msgstr "116-os Hiba"
+#: locale/programs/ld-time.c:505 locale/programs/ld-time.c:513
+#: locale/programs/ld-time.c:521
+#, c-format
+msgid "%s: values for field `%s' must not be larger than %d"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:147
-msgid "Error 117"
-msgstr "117-es Hiba"
+#: locale/programs/ld-time.c:1004
+#, c-format
+msgid "%s: too few values for field `%s'"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:148
-msgid "Error 118"
-msgstr "118-as Hiba"
+#: locale/programs/ld-time.c:1049
+msgid "extra trailing semicolon"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:149
-msgid "Error 119"
-msgstr "119-es Hiba"
+#: locale/programs/ld-time.c:1052
+#, c-format
+msgid "%s: too many values for field `%s'"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:166
-msgid "Error 136"
-msgstr "136-os Hiba"
+#: locale/programs/linereader.c:130
+msgid "trailing garbage at end of line"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:172
-msgid "Error 142"
-msgstr "142-es Hiba"
+#: locale/programs/linereader.c:298
+msgid "garbage at end of number"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:88
-msgid "Error 58"
-msgstr "58-as Hiba"
+#: locale/programs/linereader.c:410
+msgid "garbage at end of character code specification"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:89
-msgid "Error 59"
-msgstr "59-es Hiba"
+#: locale/programs/linereader.c:496
+msgid "unterminated symbolic name"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:102
-msgid "Error 72"
-msgstr "72-es Hiba"
+#: locale/programs/linereader.c:623
+msgid "illegal escape sequence at end of string"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:103
-msgid "Error 73"
-msgstr "73-as Hiba"
+#: locale/programs/linereader.c:627 locale/programs/linereader.c:855
+msgid "unterminated string"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:105
-msgid "Error 75"
-msgstr "75-ös Hiba"
+#: locale/programs/linereader.c:669
+msgid "non-symbolic character value should not be used"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:106
-msgid "Error 76"
-msgstr "76-os Hiba"
+#: locale/programs/linereader.c:816
+#, c-format
+msgid "symbol `%.*s' not in charmap"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:121
-msgid "Error 91"
-msgstr "91-es Hiba"
+#: locale/programs/linereader.c:837
+#, c-format
+msgid "symbol `%.*s' not in repertoire map"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:122
-msgid "Error 92"
-msgstr "92-es Hiba"
+#: locale/programs/locale.c:74
+msgid "System information:"
+msgstr ""
-#: nis/nis_error.c:57
-msgid "Error in RPC subsystem"
-msgstr "Hiba az 'RPC' alrendszerben"
+#: locale/programs/locale.c:76
+msgid "Write names of available locales"
+msgstr ""
-#: nis/nis_error.c:67
-msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
-msgstr "Hiba a NIS+ hideg indítás fájl elindítása során. A NIS+ fel van telepítve?"
+#: locale/programs/locale.c:78
+msgid "Write names of available charmaps"
+msgstr ""
-#: string/../sysdeps/mach/_strerror.c:58
-#: sysdeps/mach/hurd/mips/dl-machine.c:68
-msgid "Error in unknown error system: "
-msgstr "A hiba ismeretlen hibarendszerben érkezett: "
+#: locale/programs/locale.c:79
+msgid "Modify output format:"
+msgstr ""
-#: nis/nis_error.c:60
-msgid "Error while talking to callback proc"
-msgstr "Hiba amíg kommunikáltam a visszahívó folyamattal"
+#: locale/programs/locale.c:80
+msgid "Write names of selected categories"
+msgstr ""
-#: timezone/zdump.c:268
-msgid "Error writing to standard output"
-msgstr "Hiba az alapértelmezett kimenetre írás során"
+#: locale/programs/locale.c:81
+msgid "Write names of selected keywords"
+msgstr ""
-#: inet/ruserpass.c:184
-msgid "Error: .netrc file is readable by others."
-msgstr "Hiba: a '.netrc' fájl mások is olvashatják."
+#: locale/programs/locale.c:82
+msgid "Print more information"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:729
-msgid "Exchange full"
-msgstr "Csere teljes"
+#: locale/programs/locale.c:87
+msgid "Get locale-specific information."
+msgstr ""
-#. TRANS Invalid executable file format. This condition is detected by the
-#. TRANS @code{exec} functions; see @ref{Executing a File}.
-#: stdio-common/../sysdeps/gnu/errlist.c:76
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:38
-msgid "Exec format error"
-msgstr "Exec formátum hiba"
+#: locale/programs/locale.c:90
+msgid ""
+"NAME\n"
+"[-a|-m]"
+msgstr ""
-#: locale/programs/localedef.c:190
-msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
-msgstr "VÉGZETES HIBA: a rendszeren nincs definiálva a `_POSIX2_LOCALEDEF' változó"
+#: locale/programs/locale.c:194
+#, c-format
+msgid "Cannot set LC_CTYPE to default locale"
+msgstr ""
-#: locale/programs/localedef.c:97
-msgid "FILE contains mapping from symbolic names to UCS4 values"
-msgstr "A FÁJL tartamát átalakítom szimbolikus nevekrõl UCS4 értékre"
+#: locale/programs/locale.c:196
+#, c-format
+msgid "Cannot set LC_MESSAGES to default locale"
+msgstr ""
-#: sunrpc/clnt_perr.c:381
-msgid "Failed (unspecified error)"
-msgstr "Sikertelen (ismeretlen hiba)"
+#: locale/programs/locale.c:209
+#, c-format
+msgid "Cannot set LC_COLLATE to default locale"
+msgstr ""
-#: nscd/nscd.c:400
+#: locale/programs/locale.c:225
#, c-format
-msgid "Failed to look up user '%s' to run server as"
-msgstr "Nem sikerült a '%s' felhasználót meg találni a kiszolgálón"
+msgid "Cannot set LC_ALL to default locale"
+msgstr ""
-#: elf/readlib.c:109
+#: locale/programs/locale.c:518
#, c-format
-msgid "File %s is too small, not checked."
-msgstr "A '%s' fájl túl kicsi, nem vizsgálom"
+msgid "while preparing output"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:781
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:111
-msgid "File descriptor in bad state"
-msgstr "A fájlleíró rossz formátumban van"
+#: locale/programs/localedef.c:120
+msgid "Input Files:"
+msgstr ""
-#. TRANS File exists; an existing file was specified in a context where it only
-#. TRANS makes sense to specify a new file.
-#: stdio-common/../sysdeps/gnu/errlist.c:135
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:47
-msgid "File exists"
-msgstr "A fájl létezik"
+#: locale/programs/localedef.c:122
+msgid "Symbolic character names defined in FILE"
+msgstr ""
-#: elf/cache.c:147 elf/cache.c:157
-msgid "File is not a cache file.\n"
-msgstr "Fájl nincs a gyorstárban.\n"
+#: locale/programs/localedef.c:123
+msgid "Source definitions are found in FILE"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:86
-msgid "File locking deadlock"
-msgstr "Fájl zárolás befagyott"
+#: locale/programs/localedef.c:125
+msgid "FILE contains mapping from symbolic names to UCS4 values"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:745
-msgid "File locking deadlock error"
-msgstr "A fájl zárolásakor \"deadlock\" hiba"
+#: locale/programs/localedef.c:129
+msgid "Create output even if warning messages were issued"
+msgstr ""
-#. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for
-#. TRANS Files}) or host name too long (in @code{gethostname} or
-#. TRANS @code{sethostname}; @pxref{Host Identification}).
-#: stdio-common/../sysdeps/gnu/errlist.c:465
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:108
-msgid "File name too long"
-msgstr "A fájlnév túl hosszú"
+#: locale/programs/localedef.c:130
+msgid "Create old-style tables"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:51 sysdeps/generic/siglist.h:51
-msgid "File size limit exceeded"
-msgstr "Elérte a fájl méret határt"
+#: locale/programs/localedef.c:131
+msgid "Optional output file prefix"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:53
-msgid "File table overflow"
-msgstr "Fájltábla túlcsordulás"
+#: locale/programs/localedef.c:132
+msgid "Be strictly POSIX conform"
+msgstr ""
-#. TRANS File too big; the size of a file would be larger than allowed by the system.
-#: stdio-common/../sysdeps/gnu/errlist.c:203
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:57
-msgid "File too large"
-msgstr "Túl nagy fájl"
+#: locale/programs/localedef.c:134
+msgid "Suppress warnings and information messages"
+msgstr ""
-#: intl/tst-gettext2.c:37
-msgid "First string for testing."
-msgstr "Elsõ karakterlánc a vizsgálathoz."
+#: locale/programs/localedef.c:135
+msgid "Print more messages"
+msgstr ""
-#: nis/nis_error.c:38
-msgid "First/next chain broken"
-msgstr "Elsõ/következõ láncszem sérült"
+#: locale/programs/localedef.c:136
+msgid "Archive control:"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:34 sysdeps/generic/siglist.h:35
-msgid "Floating point exception"
-msgstr "Lebegõ pontos kifejezés"
+#: locale/programs/localedef.c:138
+msgid "Don't add new data to archive"
+msgstr ""
-#: elf/ldconfig.c:131
-msgid "Format to use: new, old or compat (default)"
-msgstr "Használható formátumok: new, old vagy compat (alapból)"
+#: locale/programs/localedef.c:140
+msgid "Add locales named by parameters to archive"
+msgstr ""
-#: nis/nis_error.c:68
-msgid "Full resync required for directory"
-msgstr "A könyvtár teljes újra olvasása szükséges"
+#: locale/programs/localedef.c:141
+msgid "Replace existing archive content"
+msgstr ""
-#. TRANS Function not implemented. This indicates that the function called is
-#. TRANS not implemented at all, either in the C library itself or in the
-#. TRANS operating system. When you get this error, you can be sure that this
-#. TRANS particular function will always fail with @code{ENOSYS} unless you
-#. TRANS install a new version of the C library or the operating system.
-#: stdio-common/../sysdeps/gnu/errlist.c:576
-msgid "Function not implemented"
-msgstr "A függvény még nincs megvalósítva"
+#: locale/programs/localedef.c:143
+msgid "Remove locales named by parameters from archive"
+msgstr ""
-#: nis/nis_print.c:118
-msgid "GROUP\n"
-msgstr "CSOPORT\n"
+#: locale/programs/localedef.c:144
+msgid "List content of archive"
+msgstr ""
-#: argp/argp-help.c:230
-#, c-format
-msgid "Garbage in ARGP_HELP_FMT: %s"
-msgstr "Szemét a 'ARGP_HELP_FMT'-ben: %s"
+#: locale/programs/localedef.c:146
+msgid "locale.alias file to consult when making archive"
+msgstr ""
-#: malloc/memusagestat.c:64
-msgid "Generate graphic from memory profiling data"
-msgstr "Grafika létrehozása memória adataiból"
+#: locale/programs/localedef.c:151
+msgid "Compile locale specification"
+msgstr ""
-#: catgets/gencat.c:120
+#: locale/programs/localedef.c:154
msgid ""
-"Generate message catalog.\\vIf INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
-"is -, output is written to standard output.\n"
+"NAME\n"
+"[--add-to-archive|--delete-from-archive] FILE...\n"
+"--list-archive [FILE]"
msgstr ""
-"Üzenet jegyzék létrehozása.\\ Ha a BEMENETI_FÁJL '-' akkor a szabványos bemenetrõl olvas. Ha \n"
-"Ha KIMENETI_FÁJL '-' akkor a szabványos kimenetre ír.\n"
-#: malloc/memusagestat.c:55
-msgid "Generate output linear to time (default is linear to number of function calls)"
-msgstr "Létrehoz egy idõ arányos kimentetett (alapértelmezetten meghívott funkciók száma szerint rendez)"
+#: locale/programs/localedef.c:232
+#, c-format
+msgid "cannot create directory for output files"
+msgstr ""
-#: elf/ldconfig.c:123
-msgid "Generate verbose messages"
-msgstr "Létrehoz egy részletes kimenetet"
+#: locale/programs/localedef.c:243
+#, c-format
+msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
+msgstr ""
-#: nis/nis_error.c:37
-msgid "Generic system error"
-msgstr "Általános rendszer hiba"
+#: locale/programs/localedef.c:257 locale/programs/localedef.c:273
+#: locale/programs/localedef.c:599 locale/programs/localedef.c:619
+#, c-format
+msgid "cannot open locale definition file `%s'"
+msgstr ""
-#: locale/programs/locale.c:86
-msgid "Get locale-specific information."
-msgstr "Hely információk lekérdezése"
+#: locale/programs/localedef.c:285
+#, c-format
+msgid "cannot write output files to `%s'"
+msgstr ""
-#: argp/argp-parse.c:94
-msgid "Give a short usage message"
-msgstr "Ez rövid használati utasítást ad"
+#: locale/programs/localedef.c:366
+#, c-format
+msgid ""
+"System's directory for character maps : %s\n"
+" repertoire maps: %s\n"
+" locale path : %s\n"
+"%s"
+msgstr ""
-#: argp/argp-parse.c:93
-msgid "Give this help list"
-msgstr "Ezt segítséget írja ki"
+#: locale/programs/localedef.c:567
+#, c-format
+msgid "circular dependencies between locale definitions"
+msgstr ""
-#. TRANS This error code has no purpose.
-#: stdio-common/../sysdeps/gnu/errlist.c:637
-msgid "Gratuitous error"
-msgstr "Indokolatlan hiba"
+#: locale/programs/localedef.c:573
+#, c-format
+msgid "cannot add already read locale `%s' a second time"
+msgstr ""
-#: nis/nis_print.c:323
+#: locale/programs/locarchive.c:88 locale/programs/locarchive.c:261
#, c-format
-msgid "Group : %s\n"
-msgstr "Csoport : %s\n"
+msgid "cannot create temporary file"
+msgstr ""
-#: nis/nis_print.c:252
-msgid "Group Flags :"
-msgstr "Csoport Jelzõk:"
+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:307
+#, c-format
+msgid "cannot initialize archive file"
+msgstr ""
-#: nis/nis_print_group_entry.c:115
+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:314
#, c-format
-msgid "Group entry for \"%s.%s\" group:\n"
-msgstr "A \"%s.%s\" csoport bejegyzései :\n"
+msgid "cannot resize archive file"
+msgstr ""
-#: argp/argp-parse.c:97
-msgid "Hang for SECS seconds (default 3600)"
-msgstr "Megáll SECS másodpercre (az alapértelmezés 3600)"
+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:323
+#: locale/programs/locarchive.c:527
+#, c-format
+msgid "cannot map archive header"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:27 sysdeps/generic/siglist.h:29
-msgid "Hangup"
-msgstr "Megállítás"
+#: locale/programs/locarchive.c:156
+#, c-format
+msgid "failed to create new locale archive"
+msgstr ""
-#: nscd/grpcache.c:253
+#: locale/programs/locarchive.c:168
#, c-format
-msgid "Haven't found \"%d\" in group cache!"
-msgstr "Nem találom a '%d'- t csoport gyorstárban"
+msgid "cannot change mode of new locale archive"
+msgstr ""
-#: nscd/pwdcache.c:249
+#: locale/programs/locarchive.c:255
#, c-format
-msgid "Haven't found \"%d\" in password cache!"
-msgstr "Nem találom a '%d'- t jelszó gyorstárban"
+msgid "cannot map locale archive file"
+msgstr ""
-#: nscd/grpcache.c:214
+#: locale/programs/locarchive.c:331
#, c-format
-msgid "Haven't found \"%s\" in group cache!"
-msgstr "Nem találom a '%s'- t csoport gyorstárban!"
+msgid "cannot lock new archive"
+msgstr ""
-#: nscd/hstcache.c:299 nscd/hstcache.c:341 nscd/hstcache.c:386
-#: nscd/hstcache.c:430
+#: locale/programs/locarchive.c:396
#, c-format
-msgid "Haven't found \"%s\" in hosts cache!"
-msgstr "Nem találom a '%s'- t kiszolgáló gyorstárban!"
+msgid "cannot extend locale archive file"
+msgstr ""
-#: nscd/pwdcache.c:210
+#: locale/programs/locarchive.c:405
#, c-format
-msgid "Haven't found \"%s\" in password cache!"
-msgstr "Nem találom a '%s'-t jelszó gyorstárban"
+msgid "cannot change mode of resized locale archive"
+msgstr ""
-#. TRANS The remote host for a requested network connection is down.
-#: stdio-common/../sysdeps/gnu/errlist.c:470
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:177
-msgid "Host is down"
-msgstr "A gép ki van kapcsolva"
+#: locale/programs/locarchive.c:413
+#, c-format
+msgid "cannot rename new archive"
+msgstr ""
-#: resolv/herror.c:69
-msgid "Host name lookup failure"
-msgstr "Gép név feloldása nem sikerült"
+#: locale/programs/locarchive.c:466
+#, c-format
+msgid "cannot open locale archive \"%s\""
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:35
-msgid "I/O error"
-msgstr "I/O hiba"
+#: locale/programs/locarchive.c:471
+#, c-format
+msgid "cannot stat locale archive \"%s\""
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:49 sysdeps/generic/siglist.h:49
-msgid "I/O possible"
-msgstr "I/O lehetõség"
+#: locale/programs/locarchive.c:490
+#, c-format
+msgid "cannot lock locale archive \"%s\""
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:32
-msgid "IOT trap"
-msgstr "IOT csapda"
+#: locale/programs/locarchive.c:513
+#, c-format
+msgid "cannot read archive header"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:645
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:66
-msgid "Identifier removed"
-msgstr "Azonosító eltávolítva"
+#: locale/programs/locarchive.c:573
+#, c-format
+msgid "locale '%s' already exists"
+msgstr ""
-#: elf/ldconfig.c:535
+#: locale/programs/locarchive.c:804 locale/programs/locarchive.c:819
+#: locale/programs/locarchive.c:831 locale/programs/locarchive.c:843
+#: locale/programs/locfile.c:344
#, c-format
-msgid "Ignored file %s since it is not a regular file."
-msgstr "Figyelmen kívül hagyva a '%s' fájl amióta nem normál fájl."
+msgid "cannot add to locale archive"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:118
-msgid "Illegal byte sequence"
-msgstr "Érvénytelen bájtsorozat"
+#: locale/programs/locarchive.c:998
+#, c-format
+msgid "locale alias file `%s' not found"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:30 sysdeps/generic/siglist.h:32
-msgid "Illegal instruction"
-msgstr "Érvénytelen utasítás"
+#: locale/programs/locarchive.c:1142
+#, c-format
+msgid "Adding %s\n"
+msgstr ""
-#: nis/nis_error.c:62
-msgid "Illegal object type for operation"
-msgstr "Érvénytelen objektum típus a mûveletben"
+#: locale/programs/locarchive.c:1148
+#, c-format
+msgid "stat of \"%s\" failed: %s: ignored"
+msgstr ""
-#. TRANS Invalid seek operation (such as on a pipe).
-#: stdio-common/../sysdeps/gnu/errlist.c:214
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:59
-msgid "Illegal seek"
-msgstr "Érvénytelen seek mûvelet"
+#: locale/programs/locarchive.c:1154
+#, c-format
+msgid "\"%s\" is no directory; ignored"
+msgstr ""
-#. TRANS Inappropriate file type or format. The file was the wrong type for the
-#. TRANS operation, or a data file had the wrong format.
-#. TRANS
-#. TRANS On some systems @code{chmod} returns this error if you try to set the
-#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
-#: stdio-common/../sysdeps/gnu/errlist.c:557
-msgid "Inappropriate file type or format"
-msgstr "Oda nem illõ fájl típus vagy formátum"
+#: locale/programs/locarchive.c:1161
+#, c-format
+msgid "cannot open directory \"%s\": %s: ignored"
+msgstr ""
-#. TRANS Inappropriate I/O control operation, such as trying to set terminal
-#. TRANS modes on an ordinary file.
-#: stdio-common/../sysdeps/gnu/errlist.c:189
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:55
-msgid "Inappropriate ioctl for device"
-msgstr "Oda nem illõ ioctl az eszközön"
+#: locale/programs/locarchive.c:1233
+#, c-format
+msgid "incomplete set of locale files in \"%s\""
+msgstr ""
-#. TRANS In the GNU system, servers supporting the @code{term} protocol return
-#. TRANS this error for certain operations when the caller is not in the
-#. TRANS foreground process group of the terminal. Users do not usually see this
-#. TRANS error because functions such as @code{read} and @code{write} translate
-#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control},
-#. TRANS for information on process groups and these signals.
-#: stdio-common/../sysdeps/gnu/errlist.c:608
-msgid "Inappropriate operation for background process"
-msgstr "Oda nem illõ mûvelet a háttér folyamaton"
+#: locale/programs/locarchive.c:1297
+#, c-format
+msgid "cannot read all files in \"%s\": ignored"
+msgstr ""
-#: sysdeps/generic/siglist.h:69
-msgid "Information request"
-msgstr "Információ kérés"
+#: locale/programs/locarchive.c:1367
+#, c-format
+msgid "locale \"%s\" not in archive"
+msgstr ""
-#: iconv/iconv_prog.c:62
-msgid "Information:"
-msgstr "Információ:"
+#: locale/programs/locfile.c:132
+#, c-format
+msgid "argument to `%s' must be a single character"
+msgstr ""
-#: locale/programs/localedef.c:92
-msgid "Input Files:"
-msgstr "Bemeneti Fájlok:"
+#: locale/programs/locfile.c:252
+msgid "syntax error: not inside a locale definition section"
+msgstr ""
-#: elf/ldconfig.c:754 elf/readlib.c:93
+#: locale/programs/locfile.c:626
#, c-format
-msgid "Input file %s not found.\n"
-msgstr "A '%s' bemeneti fájl nincs meg\n"
+msgid "cannot open output file `%s' for category `%s'"
+msgstr ""
-#: iconv/iconv_prog.c:59
-msgid "Input/Output format specification:"
-msgstr "Bemeneti/Kimenet formátum meghatározás:"
+#: locale/programs/locfile.c:650
+#, c-format
+msgid "failure while writing data for category `%s'"
+msgstr ""
-#. TRANS Input/output error; usually used for physical read or write errors.
-#: stdio-common/../sysdeps/gnu/errlist.c:53
-msgid "Input/output error"
-msgstr "Be/kimeneti hiba"
+#: locale/programs/locfile.c:746
+#, c-format
+msgid "cannot create output file `%s' for category `%s'"
+msgstr ""
-#: nis/ypclnt.c:800
-msgid "Internal NIS error"
-msgstr "Belsõ NIS hiba"
+#: locale/programs/locfile.c:782
+msgid "expecting string argument for `copy'"
+msgstr ""
-#: nis/ypclnt.c:864
-msgid "Internal ypbind error"
-msgstr "Belsõ ypbind hiba"
+#: locale/programs/locfile.c:786
+msgid "locale name should consist only of portable characters"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:28 sysdeps/generic/siglist.h:30
-msgid "Interrupt"
-msgstr "Megszakítás"
+#: locale/programs/locfile.c:805
+msgid "no other keyword shall be specified when `copy' is used"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:46
-msgid "Interrupted by a signal"
-msgstr "Egy jel megszakította a folyamatott"
+#: locale/programs/locfile.c:819
+#, c-format
+msgid "`%1$s' definition does not end with `END %1$s'"
+msgstr ""
-#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
-#. TRANS completion of the call. When this happens, you should try the call
-#. TRANS again.
-#. TRANS
-#. TRANS You can choose to have functions resume after a signal that is handled,
-#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted
-#. TRANS Primitives}.
-#: stdio-common/../sysdeps/gnu/errlist.c:48
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:34
-msgid "Interrupted system call"
-msgstr "Rendszerhívás megszakadt"
+#: locale/programs/repertoire.c:229 locale/programs/repertoire.c:270
+#: locale/programs/repertoire.c:295
+#, c-format
+msgid "syntax error in repertoire map definition: %s"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:685
-msgid "Interrupted system call should be restarted"
-msgstr "A megszakított rendszerhívást ajánlott újraindítani"
+#: locale/programs/repertoire.c:271
+msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
+msgstr ""
-#. TRANS Invalid argument. This is used to indicate various kinds of problems
-#. TRANS with passing the wrong argument to a library function.
-#: stdio-common/../sysdeps/gnu/errlist.c:165
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:52
-msgid "Invalid argument"
-msgstr "Érvénytelen paraméter"
+#: locale/programs/repertoire.c:331
+#, c-format
+msgid "cannot save new repertoire map"
+msgstr ""
-#: posix/regex.c:1384
-msgid "Invalid back reference"
-msgstr "Érvénytelen vissza hivatkozás"
+#: locale/programs/repertoire.c:342
+#, c-format
+msgid "repertoire map file `%s' not found"
+msgstr ""
-#: posix/regex.c:1378
-msgid "Invalid character class name"
-msgstr "Érvénytelen karakter osztály név"
+#: login/programs/pt_chown.c:74
+#, c-format
+msgid "Set the owner, group and access permission of the slave pseudo terminal corresponding to the master pseudo terminal passed on file descriptor `%d'. This is the helper program for the `grantpt' function. It is not intended to be run directly from the command line.\n"
+msgstr ""
-#: sunrpc/clnt_perr.c:357
-msgid "Invalid client credential"
-msgstr "Helytelen ügyfél igazolás"
+#: login/programs/pt_chown.c:84
+#, c-format
+msgid ""
+"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"
+msgstr ""
-#: sunrpc/clnt_perr.c:365
-msgid "Invalid client verifier"
-msgstr "Helytelen ügyfél ellenõrzõ"
+#: login/programs/pt_chown.c:161
+#, c-format
+msgid "too many arguments"
+msgstr ""
-#: posix/regex.c:1375
-msgid "Invalid collation character"
-msgstr "Érvénytelen egyesítõ karakter"
+#: login/programs/pt_chown.c:169
+#, c-format
+msgid "needs to be installed setuid `root'"
+msgstr ""
-#: posix/regex.c:1396
-msgid "Invalid content of \\{\\}"
-msgstr "Érvénytelen beágyazás: \\{\\}"
+#: malloc/mcheck.c:330
+msgid "memory is consistent, library is buggy\n"
+msgstr ""
-#. TRANS An attempt to make an improper link across file systems was detected.
-#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
-#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
-#: stdio-common/../sysdeps/gnu/errlist.c:142
-msgid "Invalid cross-device link"
-msgstr "Helytelen kereszt eszköz hivatkozás"
+#: malloc/mcheck.c:333
+msgid "memory clobbered before allocated block\n"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:721
-msgid "Invalid exchange"
-msgstr "Érvénytelen csere"
+#: malloc/mcheck.c:336
+msgid "memory clobbered past end of allocated block\n"
+msgstr ""
-#: nis/nis_error.c:45
-msgid "Invalid object for operation"
-msgstr "Helytelen objektum a mûveletben"
+#: malloc/mcheck.c:339
+msgid "block freed twice\n"
+msgstr ""
-#. TRANS While decoding a multibyte character the function came along an invalid
-#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
-#: stdio-common/../sysdeps/gnu/errlist.c:598
-msgid "Invalid or incomplete multibyte or wide character"
-msgstr "Helytelen vagy nem teljes bájtsorozat vagy széles karakter"
+#: malloc/mcheck.c:342
+msgid "bogus mcheck_status, library is buggy\n"
+msgstr ""
-#: posix/regex.c:1405
-msgid "Invalid preceding regular expression"
-msgstr "Helytelen volt az elõzõ reguláris kifejezés"
+#: malloc/memusage.sh:27
+msgid "Try \\`memusage --help' for more information."
+msgstr ""
-#: posix/regex.c:1399
-msgid "Invalid range end"
-msgstr "Helytelen tartomány vég"
+#: malloc/memusage.sh:33
+msgid "memusage: option \\`$1' requires an argument"
+msgstr ""
-#: posix/regex.c:1372
-msgid "Invalid regular expression"
-msgstr "Érvénytelen reguláris kifejezés"
+#: malloc/memusage.sh:39
+msgid ""
+"Usage: memusage [OPTION]... PROGRAM [PROGRAMOPTION]...\n"
+"Profile memory usage of PROGRAM.\n"
+"\n"
+" -n,--progname=NAME Name of the program file to profile\n"
+" -p,--png=FILE Generate PNG graphic and store it in FILE\n"
+" -d,--data=FILE Generate binary data file and store it in FILE\n"
+" -u,--unbuffered Don't buffer output\n"
+" -b,--buffer=SIZE Collect SIZE entries before writing them out\n"
+" --no-timer Don't collect additional information through timer\n"
+" -m,--mmap Also trace mmap & friends\n"
+"\n"
+" -?,--help Print this help and exit\n"
+" --usage Give a short usage message\n"
+" -V,--version Print version information and exit\n"
+"\n"
+" The following options only apply when generating graphical output:\n"
+" -t,--time-based Make graph linear in time\n"
+" -T,--total Also draw graph of total memory use\n"
+" --title=STRING Use STRING as title of the graph\n"
+" -x,--x-size=SIZE Make graphic SIZE pixels wide\n"
+" -y,--y-size=SIZE Make graphic SIZE pixels high\n"
+"\n"
+"Mandatory arguments to long options are also mandatory for any corresponding\n"
+"short options.\n"
+"\n"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:737
-msgid "Invalid request code"
-msgstr "Érvénytelen kéréskód"
+#: malloc/memusage.sh:101
+msgid ""
+"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
+" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
+" [--title=STRING] [--x-size=SIZE] [--y-size=SIZE]\n"
+" PROGRAM [PROGRAMOPTION]..."
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:725
-msgid "Invalid request descriptor"
-msgstr "Érvénytelen kérésleíró"
+#: malloc/memusage.sh:193
+msgid "memusage: option \\`${1##*=}' is ambiguous"
+msgstr ""
-#: sunrpc/clnt_perr.c:377
-msgid "Invalid server verifier"
-msgstr "Helytelen szerver ellenõrzõ"
+#: malloc/memusage.sh:202
+msgid "memusage: unrecognized option \\`$1'"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:741
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:85
-msgid "Invalid slot"
-msgstr "Érvénytelen slot"
+#: malloc/memusage.sh:215
+msgid "No program name given"
+msgstr ""
-#: nscd/nscd.c:91
-msgid "Invalidate the specified cache"
-msgstr "Érvénytelen a meghatározott gyorstár"
+#: malloc/memusagestat.c:57
+msgid "Name output file"
+msgstr ""
-#. TRANS File is a directory; you cannot open a directory for writing,
-#. TRANS or create or remove hard links to it.
-#: stdio-common/../sysdeps/gnu/errlist.c:159
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:51
-msgid "Is a directory"
-msgstr "Könyvtár"
+#: malloc/memusagestat.c:58
+msgid "Title string used in output graphic"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:169
-msgid "Is a name file"
-msgstr "Fájlnév"
+#: malloc/memusagestat.c:59
+msgid "Generate output linear to time (default is linear to number of function calls)"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:825
-msgid "Is a named type file"
-msgstr "\"Named\" típusú fájl"
+#: malloc/memusagestat.c:61
+msgid "Also draw graph for total memory consumption"
+msgstr ""
-#: nis/nis_print.c:191
-msgid "Kerberos.\n"
-msgstr "Kerberos.\n"
+#: malloc/memusagestat.c:62
+msgid "Make output graphic VALUE pixels wide"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:35 sysdeps/generic/siglist.h:36
-msgid "Killed"
-msgstr "Leállítva"
+#: malloc/memusagestat.c:63
+msgid "Make output graphic VALUE pixels high"
+msgstr ""
-#: nis/nis_print.c:127
-msgid "LINK\n"
-msgstr "HIVATKOZÁS\n"
+#: malloc/memusagestat.c:68
+msgid "Generate graphic from memory profiling data"
+msgstr ""
-#: nis/nis_local_names.c:126
-#, c-format
-msgid "LOCAL entry for UID %d in directory %s not unique\n"
-msgstr "A helyi felhasználó azonosító (UID) a '%d' könyvtárba '%s' nem egyedülálló\n"
+#: malloc/memusagestat.c:71
+msgid "DATAFILE [OUTFILE]"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:717
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:74
-msgid "Level 2 halted"
-msgstr "2. szint leállt"
+#: misc/error.c:118
+msgid "Unknown system error"
+msgstr "Ismeretlen rendszerhiba"
-#: stdio-common/../sysdeps/gnu/errlist.c:693
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:68
-msgid "Level 2 not synchronized"
-msgstr "2. szint nincs szinkronizálva"
+#: nis/nis_callback.c:189
+msgid "unable to free arguments"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:697
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:69
-msgid "Level 3 halted"
-msgstr "3. szint leállt"
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
+#: sysdeps/gnu/errlist.c:20
+msgid "Success"
+msgstr "Siker"
-#: stdio-common/../sysdeps/gnu/errlist.c:701
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:70
-msgid "Level 3 reset"
-msgstr "3. szint újraindítva"
+#: nis/nis_error.h:2
+msgid "Probable success"
+msgstr "Valószínű siker"
-#: stdio-common/../sysdeps/gnu/errlist.c:657
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:97
-msgid "Link has been severed"
-msgstr "A hivatkozás megszakadt"
+#: nis/nis_error.h:3
+msgid "Not found"
+msgstr "Nem található"
-#: stdio-common/../sysdeps/gnu/errlist.c:705
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:71
-msgid "Link number out of range"
-msgstr "A linkszám tarományon kívüli"
+#: nis/nis_error.h:4
+msgid "Probably not found"
+msgstr "Valószínűleg nem található"
-#: nis/nis_error.c:54
-msgid "Link points to illegal name"
-msgstr "Hivatkozás pont érénytelen névre mutat"
+#: nis/nis_error.h:5
+msgid "Cache expired"
+msgstr ""
-#: nis/nis_print.c:286
-msgid "Linked Object Type : "
-msgstr "Összekapcsolt Objektum Típus : "
+#: nis/nis_error.h:6
+msgid "NIS+ servers unreachable"
+msgstr ""
-#: nis/nis_print.c:288
-#, c-format
-msgid "Linked to : %s\n"
-msgstr "Összekapcsolva : %s-el\n"
+#: nis/nis_error.h:7
+msgid "Unknown object"
+msgstr ""
-#: nis/ypclnt.c:812
-msgid "Local domain name not set"
-msgstr "Helyi tartomány név nincs beállítva"
+#: nis/nis_error.h:8
+msgid "Server busy, try again"
+msgstr ""
-#: nis/ypclnt.c:802
-msgid "Local resource allocation failure"
-msgstr "Helyi erõforrás kiosztás sikertelen"
+#: nis/nis_error.h:9
+msgid "Generic system error"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:753
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:94
-msgid "Machine is not on the network"
-msgstr "A gép nincs a hálózaton"
+#: nis/nis_error.h:10
+msgid "First/next chain broken"
+msgstr ""
-#: nis/nis_error.c:46
-msgid "Malformed name, or illegal name"
-msgstr "Hibás vagy érvénytelen név"
+#. TRANS Permission denied; the file permissions do not allow the attempted operation.
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
+msgid "Permission denied"
+msgstr "Engedély megtagadva"
-#: argp/argp-help.c:1185
-msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
-msgstr "Ha egy hosszú kapcsolóhoz kötelezõ argumentumot megadni, akkor ez a megfelelõ rövid kapcsolónál is kötelezõ. "
+#: nis/nis_error.h:12
+msgid "Not owner"
+msgstr "Nem tulajdonos"
-#: elf/ldconfig.c:130
-msgid "Manually link individual libraries."
-msgstr "Kézel kell hivatkozni az egyénileg használni kívánt programkönyvtárakra."
+#: nis/nis_error.h:13
+msgid "Name not served by this server"
+msgstr ""
-#: nis/nis_print.c:172
-msgid "Master Server :\n"
-msgstr "Mester Kiszolgáló :\n"
+#: nis/nis_error.h:14
+msgid "Server out of memory"
+msgstr ""
-#: nis/nis_error.c:76
-msgid "Master server busy, full dump rescheduled."
-msgstr "Mester foglalt, a teljes kimenet felrerakva."
+#: nis/nis_error.h:15
+msgid "Object with same name exists"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:36
-msgid "Memory allocation failure"
-msgstr "Memória lefoglalás nem sikerült"
+#: nis/nis_error.h:16
+msgid "Not master server for this domain"
+msgstr ""
-#: posix/regex.c:1402
-msgid "Memory exhausted"
-msgstr "Elfogyott a memória"
+#: nis/nis_error.h:17
+msgid "Invalid object for operation"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:82
-msgid "Message tables full"
-msgstr "Üzenet tábla megtelt"
+#: nis/nis_error.h:18
+msgid "Malformed name, or illegal name"
+msgstr ""
-#. TRANS The size of a message sent on a socket was larger than the supported
-#. TRANS maximum size.
-#: stdio-common/../sysdeps/gnu/errlist.c:318
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:127
-msgid "Message too long"
-msgstr "Az üzenet túl hosszú"
+#: nis/nis_error.h:19
+msgid "Unable to create callback"
+msgstr ""
-#: nis/nis_error.c:58
-msgid "Missing or malformed attribute"
-msgstr "Hiányzó vagy hibás attribútum"
+#: nis/nis_error.h:20
+msgid "Results sent to callback proc"
+msgstr ""
-#: nis/nis_print.c:331
-#, c-format
-msgid "Mod. Time : %s"
-msgstr "Módosító Idõ :%s"
+#: nis/nis_error.h:21
+msgid "Not found, no such name"
+msgstr ""
-#: nis/nis_error.c:51
+#: nis/nis_error.h:22
+msgid "Name/entry isn't unique"
+msgstr ""
+
+#: nis/nis_error.h:23
msgid "Modification failed"
-msgstr "Módosítás nem sikerült"
+msgstr ""
-#: nis/nis_error.c:64
-msgid "Modify operation failed"
-msgstr "Mûvelet módosítás sikertelen"
+#: nis/nis_error.h:24
+msgid "Database for table does not exist"
+msgstr ""
-#: locale/programs/locale.c:78
-msgid "Modify output format:"
-msgstr "Kimeneti formátum módosítás:"
+#: nis/nis_error.h:25
+msgid "Entry/table type mismatch"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:649
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:104
-msgid "Multihop attempted"
-msgstr "Kísérlet a multihopra"
+#: nis/nis_error.h:26
+msgid "Link points to illegal name"
+msgstr ""
-#: nscd/nscd_conf.c:182
-msgid "Must specify user name for server-user option"
-msgstr "Meg kell határozni felhasználó nevet server-user opcióval"
+#: nis/nis_error.h:27
+msgid "Partial success"
+msgstr ""
-#: catgets/gencat.c:111 catgets/gencat.c:115 locale/programs/localedef.c:115
-#: nscd/nscd.c:83
-msgid "NAME"
-msgstr "NÉV"
+#: nis/nis_error.h:28
+msgid "Too many attributes"
+msgstr ""
-#: locale/programs/locale.c:89
-msgid ""
-"NAME\n"
-"[-a|-m]"
+#: nis/nis_error.h:29
+msgid "Error in RPC subsystem"
+msgstr "Hiba az RPC alrendszerben"
+
+#: nis/nis_error.h:30
+msgid "Missing or malformed attribute"
msgstr ""
-"NÉV\n"
-"[-a|-m]"
-#: nis/ypclnt.c:816
-msgid "NIS client/server version mismatch - can't supply service"
-msgstr "NIS ügyfél és a kiszolgáló verziója nem azonos - nem tudom a szolgáltatást végre hajtani"
+#: nis/nis_error.h:31
+msgid "Named object is not searchable"
+msgstr ""
-#: nis/ypclnt.c:814
-msgid "NIS map database is bad"
-msgstr "NIS adatbázis hibás"
+#: nis/nis_error.h:32
+msgid "Error while talking to callback proc"
+msgstr ""
-#: nis/nis_error.c:69
-msgid "NIS+ operation failed"
-msgstr "NIS+ mûvelet sikertelen"
+#: nis/nis_error.h:33
+msgid "Non NIS+ namespace encountered"
+msgstr ""
-#: nis/nis_error.c:34
-msgid "NIS+ servers unreachable"
-msgstr "NIS+ kiszolgálók nem elélhetõek"
+#: nis/nis_error.h:34
+msgid "Illegal object type for operation"
+msgstr ""
-#: nis/nis_error.c:70
-msgid "NIS+ service is unavailable or not installed"
-msgstr "NIS+ szolgáltatás nem elérhetõ vagy nincs feltelepítve"
+#: nis/nis_error.h:35
+msgid "Passed object is not the same object on server"
+msgstr ""
-#: nis/nis_print.c:112
-msgid "NO OBJECT\n"
-msgstr "NINCS OBJEKTUM\n"
+#: nis/nis_error.h:36
+msgid "Modify operation failed"
+msgstr ""
-#: nscd/nscd.c:87
-msgid "NUMBER"
-msgstr "SZÁM"
+#: nis/nis_error.h:37
+msgid "Query illegal for named table"
+msgstr ""
-#: nis/nis_print.c:166
-#, c-format
-msgid "Name : `%s'\n"
-msgstr "Név :'%s'\n"
+#: nis/nis_error.h:38
+msgid "Attempt to remove a non-empty table"
+msgstr ""
-#: nscd/nscd.c:97
-msgid "Name Service Cache Daemon."
-msgstr "Név Gyorstár Szolgáltatás."
+#: nis/nis_error.h:39
+msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
+msgstr ""
-#: nis/nis_error.c:41
-msgid "Name not served by this server"
-msgstr "A kiszolgáló nem adta meg a nevet"
+#: nis/nis_error.h:40
+msgid "Full resync required for directory"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:777
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:110
-msgid "Name not unique on network"
-msgstr "A név nem egyedi a hálózaton"
+#: nis/nis_error.h:41
+msgid "NIS+ operation failed"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:38
-msgid "Name or service not known"
-msgstr "A nevet vagy a szolgáltatást nem ismerem"
+#: nis/nis_error.h:42
+msgid "NIS+ service is unavailable or not installed"
+msgstr ""
-#: malloc/memusagestat.c:53
-msgid "Name output file"
-msgstr "A kimeneti fájl neve"
+#: nis/nis_error.h:43
+msgid "Yes, 42 is the meaning of life"
+msgstr "Igen, az élet értelme 42"
-#: nis/nis_error.c:50
-msgid "Name/entry isn't unique"
-msgstr "Név/bejegyzés nem létezik"
+#: nis/nis_error.h:44
+msgid "Unable to authenticate NIS+ server"
+msgstr ""
-#: nis/nis_error.c:59
-msgid "Named object is not searchable"
-msgstr "A \"named\" objektum nem kereshetõ"
+#: nis/nis_error.h:45
+msgid "Unable to authenticate NIS+ client"
+msgstr ""
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:567
-msgid "Need authenticator"
-msgstr "Hitelesítõ szükséges"
+#: nis/nis_error.h:46
+msgid "No file space on server"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:159
-msgid "Network dropped connection because of reset"
-msgstr "A hálózati kapcsolat megszakadt újraindítás miatt"
+#: nis/nis_error.h:47
+msgid "Unable to create process on server"
+msgstr ""
-#. TRANS A network connection was reset because the remote host crashed.
-#: stdio-common/../sysdeps/gnu/errlist.c:390
-msgid "Network dropped connection on reset"
-msgstr "Hálózat csatlakozás megszakadt"
+#: nis/nis_error.h:48
+msgid "Master server busy, full dump rescheduled."
+msgstr ""
-#. TRANS A socket operation failed because the network was down.
-#: stdio-common/../sysdeps/gnu/errlist.c:379
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:157
-msgid "Network is down"
-msgstr "A hálózat le van állítva"
+#: nis/nis_local_names.c:122
+#, c-format
+msgid "LOCAL entry for UID %d in directory %s not unique\n"
+msgstr ""
-#. TRANS A socket operation failed because the subnet containing the remote host
-#. TRANS was unreachable.
-#: stdio-common/../sysdeps/gnu/errlist.c:385
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:158
-msgid "Network is unreachable"
-msgstr "A hálózat nem elérhetõ"
+#: nis/nis_print.c:51
+msgid "UNKNOWN"
+msgstr "ISMERETLEN"
-#: stdio-common/../sysdeps/gnu/errlist.c:713
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:73
-msgid "No CSI structure available"
-msgstr "Nincs elérhetõ CSI struktúra"
+#: nis/nis_print.c:109
+msgid "BOGUS OBJECT\n"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:821
-msgid "No XENIX semaphores available"
-msgstr "Nincs elérhetõ XENIX szemafor"
+#: nis/nis_print.c:112
+msgid "NO OBJECT\n"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:37
-msgid "No address associated with hostname"
-msgstr "Nincs cím hozzárendelve a kiszolgáló névhez"
+#: nis/nis_print.c:115
+msgid "DIRECTORY\n"
+msgstr ""
-#: resolv/herror.c:71
-msgid "No address associated with name"
-msgstr "Nincs cím hozzárendelve a névhez"
+#: nis/nis_print.c:118
+msgid "GROUP\n"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:733
-msgid "No anode"
-msgstr "Nincs anode"
+#: nis/nis_print.c:121
+msgid "TABLE\n"
+msgstr ""
-#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this
-#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
-#. TRANS other from network operations.
-#: stdio-common/../sysdeps/gnu/errlist.c:409
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:162
-msgid "No buffer space available"
-msgstr "Nincs több elérhetõ pufferterület"
+#: nis/nis_print.c:124
+msgid "ENTRY\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:433
-msgid "No character set name specified in charmap"
-msgstr "A karakterkészletben nincs ilyen karakter"
+#: nis/nis_print.c:127
+msgid "LINK\n"
+msgstr ""
-#. TRANS There are no child processes. This error happens on operations that are
-#. TRANS supposed to manipulate child processes, when there aren't any processes
-#. TRANS to manipulate.
-#: stdio-common/../sysdeps/gnu/errlist.c:90
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:40
-msgid "No child processes"
-msgstr "Nincsenek gyermekfolyamatok"
+#: nis/nis_print.c:130
+msgid "PRIVATE\n"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:653
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:91
-msgid "No data available"
-msgstr "Nincs feldolgozható adat."
+#: nis/nis_print.c:133
+msgid "(Unknown object)\n"
+msgstr ""
-#: locale/programs/ld-address.c:131 locale/programs/ld-collate.c:1513
-#: locale/programs/ld-ctype.c:415 locale/programs/ld-identification.c:132
-#: locale/programs/ld-measurement.c:93 locale/programs/ld-messages.c:98
-#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
-#: locale/programs/ld-numeric.c:99 locale/programs/ld-paper.c:91
-#: locale/programs/ld-telephone.c:94 locale/programs/ld-time.c:160
+#: nis/nis_print.c:167
#, c-format
-msgid "No definition for %s category found"
-msgstr "A '%s' kategória nincs meghatározva"
-
-#: nis/nis_error.c:74
-msgid "No file space on server"
-msgstr "Nincs hely a kiszolgálón a fájloknak"
+msgid "Name : `%s'\n"
+msgstr ""
-#: elf/ldconfig.c:543
+#: nis/nis_print.c:168
#, c-format
-msgid "No link created since soname could not be found for %s"
-msgstr "Nem jött létre hivatkozás a megosztott objektumra mert a '%s'-t nincs meg"
+msgid "Type : %s\n"
+msgstr ""
-#. TRANS No locks available. This is used by the file locking facilities; see
-#. TRANS @ref{File Locks}. This error is never generated by the GNU system, but
-#. TRANS it can result from an operation to an NFS server running another
-#. TRANS operating system.
-#: stdio-common/../sysdeps/gnu/errlist.c:548
-msgid "No locks available"
-msgstr "A zárolás nem elérhetõ"
+#: nis/nis_print.c:173
+msgid "Master Server :\n"
+msgstr ""
-#: posix/regex.c:1369
-msgid "No match"
-msgstr "Nincs találat"
+#: nis/nis_print.c:175
+msgid "Replicate :\n"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:833
-msgid "No medium found"
-msgstr "Adathordozó nem található"
+#: nis/nis_print.c:176
+#, c-format
+msgid "\tName : %s\n"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:661
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:65
-msgid "No message of desired type"
-msgstr "Nincs kívánt típusú üzenet"
+#: nis/nis_print.c:177
+msgid "\tPublic Key : "
+msgstr ""
-#: nis/ypclnt.c:804
-msgid "No more records in map database"
-msgstr "Nem több rekord az adatbázisban"
+#: nis/nis_print.c:181
+msgid "None.\n"
+msgstr ""
-#: posix/regex.c:7956
-msgid "No previous regular expression"
-msgstr "Nincs elõzõ reguláris kifejezés"
+#: nis/nis_print.c:184
+#, c-format
+msgid "Diffie-Hellmann (%d bits)\n"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:76
-msgid "No record locks available"
-msgstr "Nincs elérhetõ rekordzár"
+#: nis/nis_print.c:189
+#, c-format
+msgid "RSA (%d bits)\n"
+msgstr ""
-#: sunrpc/rpcinfo.c:570
-msgid "No remote programs registered.\n"
-msgstr "A távoli program nincs bejegyezve.\n"
+#: nis/nis_print.c:192
+msgid "Kerberos.\n"
+msgstr ""
-#. TRANS The remote host for a requested network connection is not reachable.
-#: stdio-common/../sysdeps/gnu/errlist.c:475
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:178
-msgid "No route to host"
-msgstr "Nincs út a géphez"
+#: nis/nis_print.c:195
+#, c-format
+msgid "Unknown (type = %d, bits = %d)\n"
+msgstr ""
-#. TRANS No space left on device; write operation on a file failed because the
-#. TRANS disk is full.
-#: stdio-common/../sysdeps/gnu/errlist.c:209
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:58
-msgid "No space left on device"
-msgstr "Nincs hely az eszközön"
+#: nis/nis_print.c:206
+#, c-format
+msgid "\tUniversal addresses (%u)\n"
+msgstr ""
-#. TRANS The wrong type of device was given to a function that expects a
-#. TRANS particular sort of device.
-#: stdio-common/../sysdeps/gnu/errlist.c:148
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:49
-msgid "No such device"
-msgstr "Nincs ilyen eszköz"
+#: nis/nis_print.c:228
+msgid "Time to live : "
+msgstr ""
-#. TRANS No such device or address. The system tried to use the device
-#. TRANS represented by a file you specified, and it couldn't find the device.
-#. TRANS This can mean that the device file was installed incorrectly, or that
-#. TRANS the physical device is missing or not correctly attached to the
-#. TRANS computer.
-#: stdio-common/../sysdeps/gnu/errlist.c:62
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:36
-msgid "No such device or address"
-msgstr "Nincs ilyen eszköz vagy cím"
+#: nis/nis_print.c:230
+msgid "Default Access rights :\n"
+msgstr ""
-#. TRANS No such file or directory. This is a ``file doesn't exist'' error
-#. TRANS for ordinary files that are referenced in contexts where they are
-#. TRANS expected to already exist.
-#: stdio-common/../sysdeps/gnu/errlist.c:32
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:32
-msgid "No such file or directory"
-msgstr "Nincs ilyen fájl vagy könyvtár"
+#: nis/nis_print.c:239
+#, c-format
+msgid "\tType : %s\n"
+msgstr ""
-#: nis/ypclnt.c:798
-msgid "No such key in map"
-msgstr "Nincs ilyen kulcs "
+#: nis/nis_print.c:240
+msgid "\tAccess rights: "
+msgstr ""
-#: nis/ypclnt.c:796
-msgid "No such map in server's domain"
-msgstr "Nincs ilyen leképzés a kiszolgáló tartományban"
+#: nis/nis_print.c:254
+msgid "Group Flags :"
+msgstr ""
-#. TRANS No process matches the specified process ID.
-#: stdio-common/../sysdeps/gnu/errlist.c:37
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:33
-msgid "No such process"
-msgstr "Nincs ilyen folyamat"
+#: nis/nis_print.c:257
+msgid ""
+"\n"
+"Group Members :\n"
+msgstr ""
-#: nis/nis_error.c:61
-msgid "Non NIS+ namespace encountered"
-msgstr "Nincs NIS+ névtér találkozás"
+#: nis/nis_print.c:269
+#, c-format
+msgid "Table Type : %s\n"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:34
-msgid "Non-recoverable failure in name resolution"
-msgstr "Nem helyrehozható hiba a név felodás közben"
+#: nis/nis_print.c:270
+#, c-format
+msgid "Number of Columns : %d\n"
+msgstr ""
-#: nis/nis_print.c:180
-msgid "None.\n"
-msgstr "Nincs.\n"
+#: nis/nis_print.c:271
+#, c-format
+msgid "Character Separator : %c\n"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:817
-msgid "Not a XENIX named type file"
-msgstr "Nem XENIX \"named\" típusú fájl"
+#: nis/nis_print.c:272
+#, c-format
+msgid "Search Path : %s\n"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:107
-msgid "Not a data message"
-msgstr "Nem adatüzenet"
+#: nis/nis_print.c:273
+msgid "Columns :\n"
+msgstr ""
-#. TRANS A file that isn't a directory was specified when a directory is required.
-#: stdio-common/../sysdeps/gnu/errlist.c:153
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:50
-msgid "Not a directory"
-msgstr "Nem könyvtár"
+#: nis/nis_print.c:276
+#, c-format
+msgid "\t[%d]\tName : %s\n"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:167
-msgid "Not a name file"
-msgstr "Nem fájlnév"
+#: nis/nis_print.c:278
+msgid "\t\tAttributes : "
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:90
-msgid "Not a stream device"
-msgstr "Nem adatfolyam eszköz"
+#: nis/nis_print.c:280
+msgid "\t\tAccess Rights : "
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:168
-msgid "Not available"
-msgstr "Nem elérhetõ"
+#: nis/nis_print.c:290
+msgid "Linked Object Type : "
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:42
-msgid "Not enough space"
-msgstr "Nincs elég hely"
+#: nis/nis_print.c:292
+#, c-format
+msgid "Linked to : %s\n"
+msgstr ""
-#: nis/nis_error.c:31
-msgid "Not found"
-msgstr "Nem található"
+#: nis/nis_print.c:302
+#, c-format
+msgid "\tEntry data of type %s\n"
+msgstr ""
-#: nis/nis_error.c:49
-msgid "Not found, no such name"
-msgstr "Nem található ,nincs ilyen név"
+#: nis/nis_print.c:305
+#, c-format
+msgid "\t[%u] - [%u bytes] "
+msgstr ""
-#: nis/nis_error.c:44
-msgid "Not master server for this domain"
-msgstr "Nincs mester kiszolgálója ennek a tartománynak"
+#: nis/nis_print.c:308
+msgid "Encrypted data\n"
+msgstr ""
-#: nis/nis_error.c:40
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:31
-msgid "Not owner"
-msgstr "Nem tulajdonos"
+#: nis/nis_print.c:310
+msgid "Binary data\n"
+msgstr ""
-#. TRANS Not supported. A function returns this error when certain parameter
-#. TRANS values are valid, but the functionality they request is not available.
-#. TRANS This can mean that the function does not implement a particular command
-#. TRANS or option value or flag bit at all. For functions that operate on some
-#. TRANS object given in a parameter, such as a file descriptor or a port, it
-#. TRANS might instead mean that only @emph{that specific object} (file
-#. TRANS descriptor, port, etc.) is unable to support the other parameters given;
-#. TRANS different file descriptors might support different ranges of parameter
-#. TRANS values.
-#. TRANS
-#. TRANS If the entire function is not available at all in the implementation,
-#. TRANS it returns @code{ENOSYS} instead.
-#: stdio-common/../sysdeps/gnu/errlist.c:592
-msgid "Not supported"
-msgstr "Nem támogatott"
+#: nis/nis_print.c:326
+#, c-format
+msgid "Object Name : %s\n"
+msgstr ""
-#: nis/nis_print.c:267
+#: nis/nis_print.c:327
#, c-format
-msgid "Number of Columns : %d\n"
-msgstr "Oszlopok száma :%d\n"
+msgid "Directory : %s\n"
+msgstr ""
-#: nis/nis_print.c:366
+#: nis/nis_print.c:328
#, c-format
-msgid "Number of objects : %u\n"
-msgstr "Objektumok száma :%u\n"
+msgid "Owner : %s\n"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:120
-msgid "Number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"
-msgstr "A szimbolikus hivatkozásos száma elérte a MAXSYMLINKS értékét"
+#: nis/nis_print.c:329
+#, c-format
+msgid "Group : %s\n"
+msgstr ""
-#. TRANS Domain error; used by mathematical functions when an argument value does
-#. TRANS not fall into the domain over which the function is defined.
-#: stdio-common/../sysdeps/gnu/errlist.c:241
-msgid "Numerical argument out of domain"
-msgstr "Számszerû paraméter van a tartományhatáron"
+#: nis/nis_print.c:330
+msgid "Access Rights : "
+msgstr ""
-#. TRANS Range error; used by mathematical functions when the result value is
-#. TRANS not representable because of overflow or underflow.
-#: stdio-common/../sysdeps/gnu/errlist.c:247
-msgid "Numerical result out of range"
-msgstr "A számszerû eredmény túl nagy"
+#: nis/nis_print.c:332
+#, c-format
+msgid ""
+"\n"
+"Time to Live : "
+msgstr ""
-#: nis/nis_print.c:370
+#: nis/nis_print.c:335
#, c-format
-msgid "Object #%d:\n"
-msgstr "Objektum #%d:\n"
+msgid "Creation Time : %s"
+msgstr ""
-#: nis/nis_print.c:320
+#: nis/nis_print.c:337
#, c-format
-msgid "Object Name : %s\n"
-msgstr "Objektum Név :%s\n"
+msgid "Mod. Time : %s"
+msgstr ""
-#: nis/nis_print.c:332
+#: nis/nis_print.c:338
msgid "Object Type : "
-msgstr "Objektum Típus : "
+msgstr ""
-#. TRANS An attempt was made to NFS-mount a remote file system with a file name that
-#. TRANS already specifies an NFS-mounted file.
-#. TRANS (This is an error on some operating systems, but we expect it to work
-#. TRANS properly on the GNU system, making this error code impossible.)
-#: stdio-common/../sysdeps/gnu/errlist.c:515
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:96
-msgid "Object is remote"
-msgstr "Az objektum távoli"
+#: nis/nis_print.c:358
+#, c-format
+msgid " Data Length = %u\n"
+msgstr ""
-#: nis/nis_error.c:43
-msgid "Object with same name exists"
-msgstr "Objektum megegyezik egy létezõ névvel"
+#: nis/nis_print.c:372
+#, c-format
+msgid "Status : %s\n"
+msgstr ""
-#: timezone/zic.c:2028
-msgid "Odd number of quotation marks"
-msgstr "Páratlan szám az idézõjelben"
+#: nis/nis_print.c:373
+#, c-format
+msgid "Number of objects : %u\n"
+msgstr ""
-#: elf/ldconfig.c:129
-msgid "Only process directories specified on the command line. Don't build cache."
-msgstr "Csak a folyamat könyvtárát határozhatja meg a parancssorban. Nem jött létre gyorstár."
+#: nis/nis_print.c:377
+#, c-format
+msgid "Object #%d:\n"
+msgstr ""
-#: nscd/nscd.c:200 nscd/nscd.c:220 nscd/nscd.c:226
-msgid "Only root is allowed to use this option!"
-msgstr "Csal rendszergazda számára engedélyezett ez az opció!"
+#: nis/nis_print_group_entry.c:117
+#, c-format
+msgid "Group entry for \"%s.%s\" group:\n"
+msgstr ""
-#. TRANS An operation is already in progress on an object that has non-blocking
-#. TRANS mode selected.
-#: stdio-common/../sysdeps/gnu/errlist.c:307
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:179
-msgid "Operation already in progress"
-msgstr "A mûvelet már folyamatban van"
+#: nis/nis_print_group_entry.c:125
+msgid " Explicit members:\n"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:77
-msgid "Operation canceled"
-msgstr "Mûvelet megszakítva"
+#: nis/nis_print_group_entry.c:130
+msgid " No explicit members\n"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:119
-msgid "Operation not applicable"
-msgstr "Mûvelet nem alkalmazható"
+#: nis/nis_print_group_entry.c:133
+msgid " Implicit members:\n"
+msgstr ""
-#. TRANS Operation not permitted; only the owner of the file (or other resource)
-#. TRANS or processes with special privileges can perform the operation.
-#: stdio-common/../sysdeps/gnu/errlist.c:25
-msgid "Operation not permitted"
-msgstr "A mûvelet nem engedett"
+#: nis/nis_print_group_entry.c:138
+msgid " No implicit members\n"
+msgstr ""
-#. TRANS The operation you requested is not supported. Some socket functions
-#. TRANS don't make sense for all types of sockets, and others may not be
-#. TRANS implemented for all communications protocols. In the GNU system, this
-#. TRANS error can happen for many calls when the object does not support the
-#. TRANS particular operation; it is a generic indication that the server knows
-#. TRANS nothing to do for that call.
-#: stdio-common/../sysdeps/gnu/errlist.c:351
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:78
-msgid "Operation not supported"
-msgstr "A mûvelet nem támogatott"
+#: nis/nis_print_group_entry.c:141
+msgid " Recursive members:\n"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:152
-msgid "Operation not supported on transport endpoint"
-msgstr "A mûveletet nem támogatja az átviteli végpont"
+#: nis/nis_print_group_entry.c:146
+msgid " No recursive members\n"
+msgstr ""
-#. TRANS An operation that cannot complete immediately was initiated on an object
-#. TRANS that has non-blocking mode selected. Some functions that must always
-#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return
-#. TRANS @code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that
-#. TRANS the operation has begun and will take some time. Attempts to manipulate
-#. TRANS the object before the call completes return @code{EALREADY}. You can
-#. TRANS use the @code{select} function to find out when the pending operation
-#. TRANS has completed; @pxref{Waiting for I/O}.
-#: stdio-common/../sysdeps/gnu/errlist.c:301
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:180
-msgid "Operation now in progress"
-msgstr "A mûvelet folyamatban"
+#: nis/nis_print_group_entry.c:149
+msgid " Explicit nonmembers:\n"
+msgstr ""
-#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
-#. TRANS The values are always the same, on every operating system.
-#. TRANS
-#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
-#. TRANS separate error code.
-#: stdio-common/../sysdeps/gnu/errlist.c:289
-msgid "Operation would block"
-msgstr "A mûvelet blokkolna"
+#: nis/nis_print_group_entry.c:154
+msgid " No explicit nonmembers\n"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:129
-msgid "Option not supported by protocol"
-msgstr "Az opciót nem támogatja a protokoll"
+#: nis/nis_print_group_entry.c:157
+msgid " Implicit nonmembers:\n"
+msgstr ""
-#: locale/programs/localedef.c:103
-msgid "Optional output file prefix"
-msgstr "Válaszható kimeneti fájl elõtét"
+#: nis/nis_print_group_entry.c:162
+msgid " No implicit nonmembers\n"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:93
-msgid "Out of stream resources"
-msgstr "Elfogytak az adatfolyam erõforrásai"
+#: nis/nis_print_group_entry.c:165
+msgid " Recursive nonmembers:\n"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:665
-msgid "Out of streams resources"
-msgstr "Elfogytak az adatfolyamok erõforrásai"
+#: nis/nis_print_group_entry.c:170
+msgid " No recursive nonmembers\n"
+msgstr ""
-#: iconv/iconv_prog.c:64 locale/programs/localedef.c:99
-msgid "Output control:"
-msgstr "Kimenet :"
+#: nis/nss_nisplus/nisplus-publickey.c:101
+#: nis/nss_nisplus/nisplus-publickey.c:183
+#, c-format
+msgid "DES entry for netname %s not unique\n"
+msgstr ""
-#: elf/sprof.c:72
-msgid "Output selection:"
-msgstr "Kimenet kiválasztás:"
+#: nis/nss_nisplus/nisplus-publickey.c:220
+#, c-format
+msgid "netname2user: missing group id list in `%s'"
+msgstr ""
-#: nis/nis_print.c:322
+#: nis/nss_nisplus/nisplus-publickey.c:302
+#: nis/nss_nisplus/nisplus-publickey.c:308
+#: nis/nss_nisplus/nisplus-publickey.c:373
+#: nis/nss_nisplus/nisplus-publickey.c:382
#, c-format
-msgid "Owner : %s\n"
-msgstr "Tulajdonos :%s\n"
+msgid "netname2user: (nis+ lookup): %s\n"
+msgstr ""
-#: nis/nis_print.c:130
-msgid "PRIVATE\n"
-msgstr "MAGÁN\n"
+#: nis/nss_nisplus/nisplus-publickey.c:321
+#, c-format
+msgid "netname2user: DES entry for %s in directory %s not unique"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:757
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:95
-msgid "Package not installed"
-msgstr "A csomag nincs telepítve"
+#: nis/nss_nisplus/nisplus-publickey.c:339
+#, c-format
+msgid "netname2user: principal name `%s' too long"
+msgstr ""
-#: nscd/nscd_conf.c:83
+#: nis/nss_nisplus/nisplus-publickey.c:395
#, c-format
-msgid "Parse error: %s"
-msgstr "Értelmezési hiba: %s"
+msgid "netname2user: LOCAL entry for %s in directory %s not unique"
+msgstr ""
-#: nis/nis_error.c:55
-msgid "Partial success"
-msgstr "Részlegesen siker"
+#: nis/nss_nisplus/nisplus-publickey.c:402
+msgid "netname2user: should not have uid 0"
+msgstr ""
-#: nis/nis_error.c:63
-msgid "Passed object is not the same object on server"
-msgstr "Az átküldött objektum nem azonos a kiszolgálón levõvel"
+#: nis/ypclnt.c:836
+msgid "Request arguments bad"
+msgstr ""
-#: elf/ldconfig.c:282
-#, c-format
-msgid "Path `%s' given more than once"
-msgstr "A '%s' elérési utat többször adta meg"
+#: nis/ypclnt.c:839
+msgid "RPC failure on NIS operation"
+msgstr ""
-#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.c:39 nis/ypclnt.c:818
-#: stdio-common/../sysdeps/gnu/errlist.c:109
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:43
-msgid "Permission denied"
-msgstr "Hozzáférés megtagadva"
+#: nis/ypclnt.c:842
+msgid "Can't bind to server which serves this domain"
+msgstr ""
-#: sysdeps/generic/siglist.h:71
-msgid "Power failure"
-msgstr "Tápellátás sérült"
+#: nis/ypclnt.c:845
+msgid "No such map in server's domain"
+msgstr ""
-#: posix/regex.c:1408
-msgid "Premature end of regular expression"
-msgstr "A reguláris kifejezés túl hamar ért véget"
+#: nis/ypclnt.c:848
+msgid "No such key in map"
+msgstr ""
-#: elf/ldconfig.c:122
-msgid "Print cache"
-msgstr "Nyomtatási gyorstár"
+#: nis/ypclnt.c:851
+msgid "Internal NIS error"
+msgstr ""
-#: nscd/nscd.c:89
-msgid "Print current configuration statistic"
-msgstr "A aktuális beállítási statisztika nyomtatása"
+#: nis/ypclnt.c:854
+msgid "Local resource allocation failure"
+msgstr "A helyi erőforrás-foglalás meghiúsult"
-#: locale/programs/locale.c:81
-msgid "Print more information"
-msgstr "Több adat kiírása"
+#: nis/ypclnt.c:857
+msgid "No more records in map database"
+msgstr ""
-#: locale/programs/localedef.c:107
-msgid "Print more messages"
-msgstr "Több üzenet kiírása"
+#: nis/ypclnt.c:860
+msgid "Can't communicate with portmapper"
+msgstr "Nem lehet a portmapperrel kommunikálni"
-#: argp/argp-parse.c:154
-msgid "Print program version"
-msgstr "A program verziójának kiírása"
+#: nis/ypclnt.c:863
+msgid "Can't communicate with ypbind"
+msgstr "Nem lehet az ypbinddal kommunikálni"
-#: nis/nis_error.c:30
-msgid "Probable success"
-msgstr "Talán sikerült"
+#: nis/ypclnt.c:866
+msgid "Can't communicate with ypserv"
+msgstr "Nem lehet az ypservvel kommunikálni"
-#: nis/nis_error.c:32
-msgid "Probably not found"
-msgstr "Talán nincs meg"
+#: nis/ypclnt.c:869
+msgid "Local domain name not set"
+msgstr "Helyi tartománynév nincs beállítva"
-#: posix/../sysdeps/posix/gai_strerror.c:42
-msgid "Processing request in progress"
-msgstr "A kérés teljesítése folyamatban"
+#: nis/ypclnt.c:872
+msgid "NIS map database is bad"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:53 sysdeps/generic/siglist.h:53
-msgid "Profiling timer expired"
-msgstr "Profilozási idõ lejárt"
+#: nis/ypclnt.c:875
+msgid "NIS client/server version mismatch - can't supply service"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:709
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:72
-msgid "Protocol driver not attached"
-msgstr "A protokoll illesztõprogramja nincs csatolva"
+#: nis/ypclnt.c:881
+msgid "Database is busy"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:677
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:101
-msgid "Protocol error"
-msgstr "Protokollhiba"
+#: nis/ypclnt.c:884
+msgid "Unknown NIS error code"
+msgstr ""
-#. TRANS The socket communications protocol family you requested is not supported.
-#: stdio-common/../sysdeps/gnu/errlist.c:356
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:153
-msgid "Protocol family not supported"
-msgstr "A protokollcsalád nem támogatott"
+#: nis/ypclnt.c:924
+msgid "Internal ypbind error"
+msgstr ""
-#. TRANS You specified a socket option that doesn't make sense for the
-#. TRANS particular protocol being used by the socket. @xref{Socket Options}.
-#: stdio-common/../sysdeps/gnu/errlist.c:329
-msgid "Protocol not available"
-msgstr "A protokoll nem elérhetõ"
+#: nis/ypclnt.c:927
+msgid "Domain not bound"
+msgstr "A tartomány nincs csatlakoztatva"
-#. TRANS The socket domain does not support the requested communications protocol
-#. TRANS (perhaps because the requested protocol is completely invalid).
-#. TRANS @xref{Creating a Socket}.
-#: stdio-common/../sysdeps/gnu/errlist.c:336
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:150
-msgid "Protocol not supported"
-msgstr "A protokoll nem támogatott"
+#: nis/ypclnt.c:930
+msgid "System resource allocation failure"
+msgstr ""
-#. TRANS The socket type does not support the requested communications protocol.
-#: stdio-common/../sysdeps/gnu/errlist.c:323
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:128
-msgid "Protocol wrong type for socket"
-msgstr "Protokollnak nem megfelelõ típus az illesztõponthoz"
+#: nis/ypclnt.c:933
+msgid "Unknown ypbind error"
+msgstr ""
-#: nis/nis_error.c:65
-msgid "Query illegal for named table"
-msgstr "Érvénytelen lekérdezés a név táblában"
+#: nis/ypclnt.c:974
+msgid "yp_update: cannot convert host to netname\n"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:29 sysdeps/generic/siglist.h:31
-msgid "Quit"
-msgstr "Kilépés"
+#: nis/ypclnt.c:992
+msgid "yp_update: cannot get server address\n"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:773
-msgid "RFS specific error"
-msgstr "RFS specifikus hiba"
+#: nscd/aicache.c:82 nscd/hstcache.c:481
+#, c-format
+msgid "Haven't found \"%s\" in hosts cache!"
+msgstr ""
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:540
-msgid "RPC bad procedure for program"
-msgstr "rossz RPC eljárás a programban"
+#: nscd/aicache.c:84 nscd/hstcache.c:483
+#, c-format
+msgid "Reloading \"%s\" in hosts cache!"
+msgstr ""
-#: nis/ypclnt.c:792
-msgid "RPC failure on NIS operation"
-msgstr "Az RPC sikertelen a NIS mûvet alatt"
+#: nscd/cache.c:150
+#, c-format
+msgid "add new entry \"%s\" of type %s for %s to cache%s"
+msgstr ""
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:530
-msgid "RPC program not available"
-msgstr "Az RPC program nem elérhetõ"
+#: nscd/cache.c:152
+msgid " (first)"
+msgstr ""
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:535
-msgid "RPC program version wrong"
-msgstr "Az RPC programnak rossza a verziója"
+#: nscd/cache.c:286 nscd/connections.c:866
+#, c-format
+msgid "cannot stat() file `%s': %s"
+msgstr ""
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:520
-msgid "RPC struct is bad"
-msgstr "Az RPC struktúra hibás"
+#: nscd/cache.c:328
+#, c-format
+msgid "pruning %s cache; time %ld"
+msgstr ""
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:525
-msgid "RPC version wrong"
-msgstr "Hibás RPC verzió"
+#: nscd/cache.c:357
+#, c-format
+msgid "considering %s entry \"%s\", timeout %<PRIu64>"
+msgstr ""
-#: sunrpc/clnt_perr.c:284
-msgid "RPC: (unknown error code)"
-msgstr "RPC: (ismeretlen hiba kód)"
+#: nscd/connections.c:570
+#, c-format
+msgid "invalid persistent database file \"%s\": %s"
+msgstr ""
-#: sunrpc/clnt_perr.c:203
-msgid "RPC: Authentication error"
-msgstr "RPC: Azonosítási hiba"
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr ""
-#: sunrpc/clnt_perr.c:183
-msgid "RPC: Can't decode result"
-msgstr "RPC: Nem lehet visszakódólni az eredményt"
+#: nscd/connections.c:583
+msgid "header size does not match"
+msgstr ""
-#: sunrpc/clnt_perr.c:179
-msgid "RPC: Can't encode arguments"
-msgstr "RPC: Nem lehet vissza kódólni a paramétereket"
+#: nscd/connections.c:593
+msgid "file size does not match"
+msgstr ""
-#: sunrpc/clnt_perr.c:243
-msgid "RPC: Failed (unspecified error)"
-msgstr "RPC: Nem sikerült (nem meghatározható hiba)"
+#: nscd/connections.c:610
+msgid "verification failed"
+msgstr ""
-#: sunrpc/clnt_perr.c:199
-msgid "RPC: Incompatible versions of RPC"
-msgstr "RPC: Összeférhetetlen RPC verzió"
+#: nscd/connections.c:624
+#, c-format
+msgid "suggested size of table for database %s larger than the persistent database's table"
+msgstr ""
-#: sunrpc/clnt_perr.c:235
-msgid "RPC: Port mapper failure"
-msgstr "RPC: A port letapogatás sikertelen"
+#: nscd/connections.c:635 nscd/connections.c:720
+#, c-format
+msgid "cannot create read-only descriptor for \"%s\"; no mmap"
+msgstr ""
-#: sunrpc/clnt_perr.c:215
-msgid "RPC: Procedure unavailable"
-msgstr "RPC: A mûvelte nem elérhetõ"
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr ""
-#: sunrpc/clnt_perr.c:239
-msgid "RPC: Program not registered"
-msgstr "RPC: A program nincs bejegyezve"
+#: nscd/connections.c:699
+#, c-format
+msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
+msgstr ""
-#: sunrpc/clnt_perr.c:207
-msgid "RPC: Program unavailable"
-msgstr "RPC: A program nem elérhetõ"
+#: nscd/connections.c:706
+#, c-format
+msgid "cannot create %s; no persistent database used"
+msgstr ""
-#: sunrpc/clnt_perr.c:211
-msgid "RPC: Program/version mismatch"
-msgstr "RPC: Program/Verzió különbözik"
+#: nscd/connections.c:709
+#, c-format
+msgid "cannot create %s; no sharing possible"
+msgstr ""
-#: sunrpc/clnt_perr.c:223
-msgid "RPC: Remote system error"
-msgstr "RPC: Távoli rendszer hiba"
+#: nscd/connections.c:780
+#, c-format
+msgid "cannot write to database file %s: %s"
+msgstr ""
-#: sunrpc/clnt_perr.c:219
-msgid "RPC: Server can't decode arguments"
-msgstr "RPC: A kiszolgáló nem tudja vissza kódólni a paramétereket"
+#: nscd/connections.c:819
+#, c-format
+msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
+msgstr ""
-#: sunrpc/clnt_perr.c:176
-msgid "RPC: Success"
-msgstr "RPC: Sikeres"
+#: nscd/connections.c:902
+#, c-format
+msgid "cannot open socket: %s"
+msgstr ""
-#: sunrpc/clnt_perr.c:195
-msgid "RPC: Timed out"
-msgstr "RPC: Idõ túl lépés"
+#: nscd/connections.c:922
+#, c-format
+msgid "cannot change socket to nonblocking mode: %s"
+msgstr ""
-#: sunrpc/clnt_perr.c:191
-msgid "RPC: Unable to receive"
-msgstr "RPC: Nem sikerül az adatokat fogadni"
+#: nscd/connections.c:930
+#, c-format
+msgid "cannot set socket to close on exec: %s"
+msgstr ""
-#: sunrpc/clnt_perr.c:187
-msgid "RPC: Unable to send"
-msgstr "RPC: Nem sikerül az adatokat küldeni"
+#: nscd/connections.c:943
+#, c-format
+msgid "cannot enable socket to accept connections: %s"
+msgstr ""
-#: sunrpc/clnt_perr.c:227
-msgid "RPC: Unknown host"
-msgstr "RPC: Ismeretlen gép"
+#: nscd/connections.c:1043
+#, c-format
+msgid "provide access to FD %d, for %s"
+msgstr ""
-#: sunrpc/clnt_perr.c:231
-msgid "RPC: Unknown protocol"
-msgstr "RPC: Ismeretlen protokoll"
+#: nscd/connections.c:1055
+#, c-format
+msgid "cannot handle old request version %d; current version is %d"
+msgstr ""
-#: nis/nis_print.c:188
+#: nscd/connections.c:1077
#, c-format
-msgid "RSA (%d bits)\n"
-msgstr "RSA (%d bit)\n"
+msgid "request from %ld not handled due to missing permission"
+msgstr ""
-#: elf/dl-sym.c:72 elf/dl-sym.c:134
-msgid "RTLD_NEXT used in code not dynamically loaded"
-msgstr "A felhasznált RTLD_NEXT kód nem tölthetõ be dinamikusan"
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr ""
-#: elf/sprof.c:84
-msgid "Read and display shared object profiling data"
-msgstr "Kiolvassa és megjeleníti a megosztott objektum profiljának az adatait"
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr ""
-#: nscd/nscd.c:84
-msgid "Read configuration data from NAME"
-msgstr "A konfigurációs adatok olvasása a NÉVBÕL"
+#: nscd/connections.c:1125 nscd/connections.c:1178
+#, c-format
+msgid "cannot write result: %s"
+msgstr ""
-#. TRANS An attempt was made to modify something on a read-only file system.
-#: stdio-common/../sysdeps/gnu/errlist.c:219
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:60
-msgid "Read-only file system"
-msgstr "Csak olvasható fájlrendszer"
+#: nscd/connections.c:1261
+#, c-format
+msgid "error getting caller's id: %s"
+msgstr ""
-#: string/strsignal.c:67
+#: nscd/connections.c:1320
#, c-format
-msgid "Real-time signal %d"
-msgstr "Valós idejû jel %d"
+msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
+msgstr ""
-#: posix/regex.c:1411
-msgid "Regular expression too big"
-msgstr "Túl nagy reguláris kifejezés"
+#: nscd/connections.c:1334
+#, c-format
+msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:829
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:170
-msgid "Remote I/O error"
-msgstr "Távoli I/O hiba"
+#: nscd/connections.c:1374
+#, c-format
+msgid "cannot change to old UID: %s; disabling paranoia mode"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:785
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:112
-msgid "Remote address changed"
-msgstr "A távoli cím megváltozott"
+#: nscd/connections.c:1384
+#, c-format
+msgid "cannot change to old GID: %s; disabling paranoia mode"
+msgstr ""
-#: inet/ruserpass.c:185
-msgid "Remove password or make file unreadable by others."
-msgstr "A jelszó eltávolítása vagy a fájl olvashatatlanná tétele a többieknek"
+#: nscd/connections.c:1397
+#, c-format
+msgid "cannot change to old working directory: %s; disabling paranoia mode"
+msgstr ""
-#: elf/cache.c:431
+#: nscd/connections.c:1429
#, c-format
-msgid "Renaming of %s to %s failed"
-msgstr "Az átnevezés '%s'-rõl '%s'-re sikertelen"
+msgid "re-exec failed: %s; disabling paranoia mode"
+msgstr ""
-#: elf/sprof.c:532
+#: nscd/connections.c:1438
#, c-format
-msgid "Reopening shared object `%s' failed"
-msgstr "A '%s' megosztott objektum újra megnyitása nem sikerült"
+msgid "cannot change current working directory to \"/\": %s"
+msgstr ""
-#: nis/nis_print.c:174
-msgid "Replicate :\n"
-msgstr "Másolás :\n"
+#: nscd/connections.c:1644
+#, c-format
+msgid "short read while reading request: %s"
+msgstr ""
-#: argp/argp-help.c:1639
+#: nscd/connections.c:1677
#, c-format
-msgid "Report bugs to %s.\n"
-msgstr "Hibákat '%s' címre kérjük jelenteni. A fordítási hibákat pedig a stive@mezobereny.hu címre.\n"
+msgid "key length in request too long: %d"
+msgstr ""
-#: catgets/gencat.c:233 debug/pcprofiledump.c:181 iconv/iconv_prog.c:379
-#: iconv/iconvconfig.c:321 locale/programs/locale.c:268
-#: locale/programs/localedef.c:297 malloc/memusagestat.c:602
-msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
-msgstr "A hiba jelentéseket a 'glibcbug' programmal készítse el és a <bugs@gnu.org> címre küldje.\n"
+#: nscd/connections.c:1690
+#, c-format
+msgid "short read while reading request key: %s"
+msgstr ""
-#: nis/ypclnt.c:790
-msgid "Request arguments bad"
-msgstr "A szükséges paraméter hibás"
+#: nscd/connections.c:1699
+#, c-format
+msgid "handle_request: request received (Version = %d) from PID %ld"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:43
-msgid "Request canceled"
-msgstr "Kérés megszakítva"
+#: nscd/connections.c:1704
+#, c-format
+msgid "handle_request: request received (Version = %d)"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:44
-msgid "Request not canceled"
-msgstr "Kérés nincs megszakítva"
+#: nscd/connections.c:1903 nscd/connections.c:2101
+#, c-format
+msgid "disabled inotify after read error %d"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:171
-msgid "Reserved for future use"
-msgstr "Fenntartva a késõbbi használatra"
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr ""
-#: resolv/herror.c:67
-msgid "Resolver Error 0 (no error)"
-msgstr "0-ás feloldása hiba (nem hiba)"
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr ""
-#: resolv/herror.c:107
-msgid "Resolver internal error"
-msgstr "A felodló belsõ hibája"
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr ""
-#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
-#. TRANS deadlock situation. The system does not guarantee that it will notice
-#. TRANS all such situations. This error means you got lucky and the system
-#. TRANS noticed; it might just hang. @xref{File Locks}, for an example.
-#: stdio-common/../sysdeps/gnu/errlist.c:98
-msgid "Resource deadlock avoided"
-msgstr "Erõforrás \"deadlock\" elmaradt"
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
+#, c-format
+msgid "Failed to run nscd as user '%s'"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:55 sysdeps/generic/siglist.h:74
-msgid "Resource lost"
-msgstr "Erõforrás elveszett"
+#: nscd/connections.c:2322
+#, c-format
+msgid "initial getgrouplist failed"
+msgstr ""
-#. TRANS Resource temporarily unavailable; the call might work if you try again
-#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
-#. TRANS they are always the same in the GNU C library.
-#. TRANS
-#. TRANS This error can happen in a few different situations:
-#. TRANS
-#. TRANS @itemize @bullet
-#. TRANS @item
-#. TRANS An operation that would block was attempted on an object that has
-#. TRANS non-blocking mode selected. Trying the same operation again will block
-#. TRANS until some external condition makes it possible to read, write, or
-#. TRANS connect (whatever the operation). You can use @code{select} to find out
-#. TRANS when the operation will be possible; @pxref{Waiting for I/O}.
-#. TRANS
-#. TRANS @strong{Portability Note:} In many older Unix systems, this condition
-#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code
-#. TRANS different from @code{EAGAIN}. To make your program portable, you should
-#. TRANS check for both codes and treat them the same.
-#. TRANS
-#. TRANS @item
-#. TRANS A temporary resource shortage made an operation impossible. @code{fork}
-#. TRANS can return this error. It indicates that the shortage is expected to
-#. TRANS pass, so your program can try the call again later and it may succeed.
-#. TRANS It is probably a good idea to delay for a few seconds before trying it
-#. TRANS again, to allow time for other processes to release scarce resources.
-#. TRANS Such shortages are usually fairly serious and affect the whole system,
-#. TRANS so usually an interactive program should report the error to the user
-#. TRANS and return to its command loop.
-#. TRANS @end itemize
-#: stdio-common/../sysdeps/gnu/errlist.c:280
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:41
-msgid "Resource temporarily unavailable"
-msgstr "Erõforrás ideiglenesen elérhetetlen"
+#: nscd/connections.c:2331
+#, c-format
+msgid "getgrouplist failed"
+msgstr ""
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:64
-msgid "Result too large"
-msgstr "Eredmény túl nagy"
+#: nscd/connections.c:2349
+#, c-format
+msgid "setgroups failed"
+msgstr ""
-#: nis/nis_error.c:48
-msgid "Results sent to callback proc"
-msgstr "Eredményeket elküldtem a \"callback\"-nek"
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
+#, c-format
+msgid "short write in %s: %s"
+msgstr ""
-#: elf/sprof.c:87
-msgid "SHOBJ [PROFDATA]"
-msgstr "SHOBJ [PROFDATA]"
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
+#, c-format
+msgid "Haven't found \"%s\" in group cache!"
+msgstr ""
-#: nis/nis_print.c:269
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
-msgid "Search Path : %s\n"
-msgstr "Keresési út :%s\n"
+msgid "Reloading \"%s\" in group cache!"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:37 sysdeps/generic/siglist.h:38
-msgid "Segmentation fault"
-msgstr "Szegmens hiba"
+#: nscd/grpcache.c:517
+#, c-format
+msgid "Invalid numeric gid \"%s\"!"
+msgstr ""
-#: nis/nis_error.c:36
-msgid "Server busy, try again"
-msgstr "Kiszolgáló foglalt, probálja meg késõbb újra"
+#: nscd/mem.c:457
+#, c-format
+msgid "freed %zu bytes in %s cache"
+msgstr ""
-#: nis/nis_error.c:42
-msgid "Server out of memory"
-msgstr "Kiszolgálón elfogyott a memória"
+#: nscd/mem.c:594
+#, c-format
+msgid "no more memory for database '%s'"
+msgstr ""
-#: sunrpc/clnt_perr.c:361
-msgid "Server rejected credential"
-msgstr "Kiszolgáló nem fogadta el az igazolásokat"
+#: nscd/nscd.c:101
+msgid "Read configuration data from NAME"
+msgstr ""
-#: sunrpc/clnt_perr.c:369
-msgid "Server rejected verifier"
-msgstr "Kiszolgáló nem fogadta el az ellenõrzõt"
+#: nscd/nscd.c:103
+msgid "Do not fork and display messages on the current tty"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:39
-msgid "Servname not supported for ai_socktype"
-msgstr "A Servname nem támogatja a ai_socktype-ot"
+#: nscd/nscd.c:104
+msgid "NUMBER"
+msgstr "SZÃM"
-#: argp/argp-parse.c:95
-msgid "Set the program name"
-msgstr "A program név beállítása"
+#: nscd/nscd.c:104
+msgid "Start NUMBER threads"
+msgstr ""
-#: nscd/nscd.c:88
+#: nscd/nscd.c:105
msgid "Shut the server down"
-msgstr "A kiszolgáló leáll"
-
-#: stdio-common/../sysdeps/unix/siglist.c:26
-msgid "Signal 0"
-msgstr "0-ás jel"
+msgstr ""
-#. TRANS A file that isn't a socket was specified when a socket is required.
-#: stdio-common/../sysdeps/gnu/errlist.c:312
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:125
-msgid "Socket operation on non-socket"
-msgstr "Illesztõpont mûvelet egy nem illesztõponton"
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
+msgstr ""
-#. TRANS The socket type is not supported.
-#: stdio-common/../sysdeps/gnu/errlist.c:341
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:151
-msgid "Socket type not supported"
-msgstr "Az illesztõpont típus nem támogatott"
+#: nscd/nscd.c:107
+msgid "TABLE"
+msgstr ""
-#. TRANS A network connection was aborted locally.
-#: stdio-common/../sysdeps/gnu/errlist.c:395
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:160
-msgid "Software caused connection abort"
-msgstr "A szoftver megszakította a kapcsolatot"
+#: nscd/nscd.c:108
+msgid "Invalidate the specified cache"
+msgstr ""
-#: sunrpc/rpcinfo.c:658
-msgid "Sorry. You are not root\n"
-msgstr "Sajnálom. Ön nem rendszergazda\n"
+#: nscd/nscd.c:109
+msgid "TABLE,yes"
+msgstr ""
-#: locale/programs/localedef.c:95
-msgid "Source definitions are found in FILE"
-msgstr "A forrás meghatározását nem találom a FÁJLBAN"
+#: nscd/nscd.c:110
+msgid "Use separate cache for each user"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:765
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:99
-msgid "Srmount error"
-msgstr "Srmount hiba"
+#: nscd/nscd.c:115
+msgid "Name Service Cache Daemon."
+msgstr ""
-#: sysdeps/generic/siglist.h:66
-msgid "Stack fault"
-msgstr "Hibás verem"
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
+#, c-format
+msgid "wrong number of arguments"
+msgstr ""
-#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS
-#. TRANS system which is due to file system rearrangements on the server host.
-#. TRANS Repairing this condition usually requires unmounting and remounting
-#. TRANS the NFS file system on the local host.
-#: stdio-common/../sysdeps/gnu/errlist.c:507
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181
-msgid "Stale NFS file handle"
-msgstr "Elévült NFS fájl"
+#: nscd/nscd.c:157
+#, c-format
+msgid "failure while reading configuration file; this is fatal"
+msgstr ""
-#: nscd/nscd.c:87
-msgid "Start NUMBER threads"
-msgstr "SZÁM folyamat indítása"
+#: nscd/nscd.c:166
+#, c-format
+msgid "already running"
+msgstr ""
-#: nis/nis_print.c:365
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
-msgid "Status : %s\n"
-msgstr "Állapot :%s\n"
+msgid "cannot fork"
+msgstr "fork() rendszerhívás sikertelen"
-#: stdio-common/../sysdeps/unix/siglist.c:44 sysdeps/generic/siglist.h:44
-msgid "Stopped"
-msgstr "Megállítva"
+#: nscd/nscd.c:244
+#, c-format
+msgid "cannot change current working directory to \"/\""
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:43 sysdeps/generic/siglist.h:43
-msgid "Stopped (signal)"
-msgstr "Megállítva (jel)"
+#: nscd/nscd.c:252
+msgid "Could not create log file"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:47 sysdeps/generic/siglist.h:47
-msgid "Stopped (tty input)"
-msgstr "Megállítva (tty bemenet)"
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
+#, c-format
+msgid "Only root is allowed to use this option!"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:48 sysdeps/generic/siglist.h:48
-msgid "Stopped (tty output)"
-msgstr "Megállítva (tty kimenet)"
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:809
-msgid "Streams pipe error"
-msgstr "Streams csõvezeték (pipe) hiba"
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
+#, c-format
+msgid "write incomplete"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:813
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:165
-msgid "Structure needs cleaning"
-msgstr "A struktúrát meg kell tisztítani"
+#: nscd/nscd.c:381
+#, c-format
+msgid "cannot read invalidate ACK"
+msgstr ""
-#: nis/nis_error.c:29 nis/ypclnt.c:788 nis/ypclnt.c:862 posix/regex.c:1366
-#: stdio-common/../sysdeps/gnu/errlist.c:20
-msgid "Success"
-msgstr "Sikerült"
+#: nscd/nscd.c:387
+#, c-format
+msgid "invalidation failed"
+msgstr ""
-#: nss/getent.c:703
-msgid "Supported databases:"
-msgstr "Támogatott adatbázisok:"
+#: nscd/nscd.c:397
+#, c-format
+msgid "secure services not implemented anymore"
+msgstr ""
-#: locale/programs/localedef.c:106
-msgid "Suppress warnings and information messages"
-msgstr "Eltitkolt figyelmeztetések és információk"
+#: nscd/nscd_conf.c:57
+#, c-format
+msgid "database %s is not supported"
+msgstr ""
-#: locale/programs/localedef.c:94
-msgid "Symbolic character names defined in FILE"
-msgstr "Szimbolikus karakter nevek meghatározása a FÁJLBAN"
+#: nscd/nscd_conf.c:108
+#, c-format
+msgid "Parse error: %s"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:41
-msgid "System error"
-msgstr "Rendszer hiba"
+#: nscd/nscd_conf.c:194
+#, c-format
+msgid "Must specify user name for server-user option"
+msgstr ""
-#: locale/programs/locale.c:73
-msgid "System information:"
-msgstr "Rendszer információ:"
+#: nscd/nscd_conf.c:201
+#, c-format
+msgid "Must specify user name for stat-user option"
+msgstr ""
-#: nis/ypclnt.c:868
-msgid "System resource allocation failure"
-msgstr "Rendszer erõforrás kiosztás sikertelen"
+#: nscd/nscd_conf.c:245
+#, c-format
+msgid "invalid value for 'reload-count': %u"
+msgstr ""
-#: locale/programs/localedef.c:292
+#: nscd/nscd_conf.c:260
#, c-format
-msgid ""
-"System's directory for character maps : %s\n"
-" repertoire maps: %s\n"
-" locale path : %s\n"
-"%s"
+msgid "Must specify value for restart-interval option"
msgstr ""
-"A karakterek rendszer könyvtára : %s\n"
-" repertoár :%s\n"
-" helyi elérési út :%s\n"
-"%s"
-#: nscd/nscd.c:90
-msgid "TABLE"
-msgstr "TÁBLA"
+#: nscd/nscd_conf.c:274
+#, c-format
+msgid "Unknown option: %s %s %s"
+msgstr ""
-#: nis/nis_print.c:121
-msgid "TABLE\n"
-msgstr "TÁBLA\n"
+#: nscd/nscd_conf.c:287
+#, c-format
+msgid "cannot get current working directory: %s; disabling paranoia mode"
+msgstr ""
-#: nscd/nscd.c:92
-msgid "TABLE,yes"
-msgstr "TÁBLA,igen"
+#: nscd/nscd_conf.c:307
+#, c-format
+msgid "maximum file size for %s database too small"
+msgstr ""
-#: nis/nis_print.c:266
+#: nscd/nscd_stat.c:141
#, c-format
-msgid "Table Type : %s\n"
-msgstr "Táblázat Típus : %s\n"
+msgid "cannot write statistics: %s"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:32
-msgid "Temporary failure in name resolution"
-msgstr "Ideiglenesen nem lehetséges a név feloldása"
+#: nscd/nscd_stat.c:156
+msgid "yes"
+msgstr "igen"
-#: stdio-common/../sysdeps/unix/siglist.c:41 sysdeps/generic/siglist.h:41
-msgid "Terminated"
-msgstr "Félbeszakítva"
+#: nscd/nscd_stat.c:157
+msgid "no"
+msgstr "nem"
-#. TRANS An attempt to execute a file that is currently open for writing, or
-#. TRANS write to a file that is currently being executed. Often using a
-#. TRANS debugger to run a program is considered having it open for writing and
-#. TRANS will cause this error. (The name stands for ``text file busy''.) This
-#. TRANS is not an error in the GNU system; the text is copied as necessary.
-#: stdio-common/../sysdeps/gnu/errlist.c:198
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:56
-msgid "Text file busy"
-msgstr "A szövegfájl foglalt"
+#: nscd/nscd_stat.c:168
+#, c-format
+msgid "Only root or %s is allowed to use this option!"
+msgstr ""
-#: iconv/iconv_prog.c:680
+#: nscd/nscd_stat.c:179
+#, c-format
+msgid "nscd not running!\n"
+msgstr ""
+
+#: nscd/nscd_stat.c:203
+#, c-format
+msgid "cannot read statistics data"
+msgstr ""
+
+#: nscd/nscd_stat.c:206
+#, c-format
msgid ""
-"The following list contain all the coded character sets known. This does\n"
-"not necessarily mean that all combinations of these names can be used for\n"
-"the FROM and TO command line parameters. One coded character set can be\n"
-"listed with several different names (aliases).\n"
+"nscd configuration:\n"
"\n"
-" "
+"%15d server debug level\n"
msgstr ""
-"A következõ lista tartalmazza minden ismert karaktert. Ez nem szükségszerûen jelenti\n"
-"azt, hogy ezekkel a neveket felhasználhatja a 'FROM' és 'TO' parancssori\n"
-"paraméterekhez. Egy kódólt karakternek elõfordulhat a listában több különbözõ\n"
-"néven (aliasszal):\n"
-"\n"
-".. "
-#: sunrpc/rpc_main.c:1365
-msgid "This implementation doesn't support newstyle or MT-safe code!\n"
-msgstr "Ez az kivitelezés nem támogatja ezt az új stílust vagy az MT-biztonsági kódot!\n"
+#: nscd/nscd_stat.c:230
+#, c-format
+msgid "%3ud %2uh %2um %2lus server runtime\n"
+msgstr ""
-#: nis/nis_print.c:227
-msgid "Time to live : "
-msgstr "Élettartam : "
+#: nscd/nscd_stat.c:233
+#, c-format
+msgid " %2uh %2um %2lus server runtime\n"
+msgstr ""
-#: stdio-common/../sysdeps/gnu/errlist.c:681
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:92
-msgid "Timer expired"
-msgstr "Az idõ lejárt"
+#: nscd/nscd_stat.c:235
+#, c-format
+msgid " %2um %2lus server runtime\n"
+msgstr ""
-#: malloc/memusagestat.c:54
-msgid "Title string used in output graphic"
-msgstr "A cím szövegét használom fel a rajzoláshoz"
+#: nscd/nscd_stat.c:237
+#, c-format
+msgid " %2lus server runtime\n"
+msgstr ""
-#: nis/nis_error.c:56
-msgid "Too many attributes"
-msgstr "Túl sok attribútum"
+#: nscd/nscd_stat.c:239
+#, c-format
+msgid ""
+"%15d current number of threads\n"
+"%15d maximum number of threads\n"
+"%15lu number of times clients had to wait\n"
+"%15s paranoia mode enabled\n"
+"%15lu restart internal\n"
+msgstr ""
-#. TRANS Too many levels of symbolic links were encountered in looking up a file name.
-#. TRANS This often indicates a cycle of symbolic links.
-#: stdio-common/../sysdeps/gnu/errlist.c:458
-msgid "Too many levels of symbolic links"
-msgstr "Túl sok egymásba ágyazott szimbolikus hivatkozás"
+#: nscd/nscd_stat.c:273
+#, c-format
+msgid ""
+"\n"
+"%s cache:\n"
+"\n"
+"%15s cache is enabled\n"
+"%15s cache is persistent\n"
+"%15s cache is shared\n"
+"%15zu suggested size\n"
+"%15zu total data pool size\n"
+"%15zu used data pool size\n"
+"%15lu seconds time to live for positive entries\n"
+"%15lu seconds time to live for negative entries\n"
+"%15<PRIuMAX> cache hits on positive entries\n"
+"%15<PRIuMAX> cache hits on negative entries\n"
+"%15<PRIuMAX> cache misses on positive entries\n"
+"%15<PRIuMAX> cache misses on negative entries\n"
+"%15lu%% cache hit rate\n"
+"%15zu current number of cached values\n"
+"%15zu maximum number of cached values\n"
+"%15zu maximum chain length searched\n"
+"%15<PRIuMAX> number of delays on rdlock\n"
+"%15<PRIuMAX> number of delays on wrlock\n"
+"%15<PRIuMAX> memory allocations failed\n"
+"%15s check /etc/%s for changes\n"
+msgstr ""
-#. TRANS Too many links; the link count of a single file would become too large.
-#. TRANS @code{rename} can cause this error if the file being renamed already has
-#. TRANS as many links as it can take (@pxref{Renaming Files}).
-#: stdio-common/../sysdeps/gnu/errlist.c:226
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:61
-msgid "Too many links"
-msgstr "Túl sok hivatkozás"
+#: nscd/pwdcache.c:443
+#, c-format
+msgid "Haven't found \"%s\" in password cache!"
+msgstr ""
-#. TRANS The current process has too many files open and can't open any more.
-#. TRANS Duplicate descriptors do count toward this limit.
-#. TRANS
-#. TRANS In BSD and GNU, the number of open files is controlled by a resource
-#. TRANS limit that can usually be increased. If you get this error, you might
-#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
-#. TRANS @pxref{Limits on Resources}.
-#: stdio-common/../sysdeps/gnu/errlist.c:176
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:54
-msgid "Too many open files"
-msgstr "Túl sok a nyitott fájl"
+#: nscd/pwdcache.c:445
+#, c-format
+msgid "Reloading \"%s\" in password cache!"
+msgstr ""
-#. TRANS There are too many distinct file openings in the entire system. Note
-#. TRANS that any number of linked channels count as just one file opening; see
-#. TRANS @ref{Linked Channels}. This error never occurs in the GNU system.
-#: stdio-common/../sysdeps/gnu/errlist.c:183
-msgid "Too many open files in system"
-msgstr "Túl sok a nyitott fájl a rendszeren"
+#: nscd/pwdcache.c:523
+#, c-format
+msgid "Invalid numeric uid \"%s\"!"
+msgstr ""
-#. TRANS This means that the per-user limit on new process would be exceeded by
-#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on
-#. TRANS the @code{RLIMIT_NPROC} limit.
-#: stdio-common/../sysdeps/gnu/errlist.c:488
-msgid "Too many processes"
-msgstr "Túl sok folyamat"
+#: nscd/selinux.c:156
+#, c-format
+msgid "Failed opening connection to the audit subsystem: %m"
+msgstr ""
-#. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:440
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:174
-msgid "Too many references: cannot splice"
-msgstr "Túl sok hivatkozás: nem lehet tördelni"
+#: nscd/selinux.c:177
+msgid "Failed to set keep-capabilities"
+msgstr ""
-#. TRANS The file quota system is confused because there are too many users.
-#. TRANS @c This can probably happen in a GNU system when using NFS.
-#: stdio-common/../sysdeps/gnu/errlist.c:494
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:124
-msgid "Too many users"
-msgstr "Túl sok felhasználó"
+#: nscd/selinux.c:178 nscd/selinux.c:241
+#, c-format
+msgid "prctl(KEEPCAPS) failed"
+msgstr ""
-#: stdio-common/../sysdeps/unix/siglist.c:31 sysdeps/generic/siglist.h:33
-msgid "Trace/breakpoint trap"
-msgstr "töréspont"
+#: nscd/selinux.c:192
+msgid "Failed to initialize drop of capabilities"
+msgstr ""
-#: posix/regex.c:1381
-msgid "Trailing backslash"
-msgstr "Záró backslash"
+#: nscd/selinux.c:193
+#, c-format
+msgid "cap_init failed"
+msgstr ""
-#. TRANS In the GNU system, opening a file returns this error when the file is
-#. TRANS translated by a program and the translator program dies while starting
-#. TRANS up, before it has connected to the file.
-#: stdio-common/../sysdeps/gnu/errlist.c:615
-msgid "Translator died"
-msgstr "A fordító elhasalt"
+#: nscd/selinux.c:214 nscd/selinux.c:231
+msgid "Failed to drop capabilities"
+msgstr ""
-#. TRANS You tried to connect a socket that is already connected.
-#. TRANS @xref{Connecting}.
-#: stdio-common/../sysdeps/gnu/errlist.c:415
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:163
-msgid "Transport endpoint is already connected"
-msgstr "Az átviteli végpont már csatlakozott"
+#: nscd/selinux.c:215 nscd/selinux.c:232
+#, c-format
+msgid "cap_set_proc failed"
+msgstr ""
-#. TRANS The socket is not connected to anything. You get this error when you
-#. TRANS try to transmit data over a socket, without first specifying a
-#. TRANS destination for the data. For a connectionless socket (for datagram
-#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
-#: stdio-common/../sysdeps/gnu/errlist.c:423
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:164
-msgid "Transport endpoint is not connected"
-msgstr "Az átviteli végpont nincs csatlakoztatva"
+#: nscd/selinux.c:240
+msgid "Failed to unset keep-capabilities"
+msgstr ""
+
+#: nscd/selinux.c:256
+msgid "Failed to determine if kernel supports SELinux"
+msgstr ""
-#: argp/argp-help.c:1611
+#: nscd/selinux.c:271
#, c-format
-msgid "Try `%s --help' or `%s --usage' for more information.\n"
-msgstr "Probálja a '%s --help'-et vagy a '%s --usage'-t ha több adatra vágyik.\n"
+msgid "Failed to start AVC thread"
+msgstr ""
-#: inet/rcmd.c:223
+#: nscd/selinux.c:293
#, c-format
-msgid "Trying %s...\n"
-msgstr "Próbálkozás %s...\n"
+msgid "Failed to create AVC lock"
+msgstr ""
-#: nis/nis_print.c:167
+#: nscd/selinux.c:333
#, c-format
-msgid "Type : %s\n"
-msgstr "Típus : %s\n"
+msgid "Failed to start AVC"
+msgstr ""
-#: nis/nis_print.c:51
-msgid "UNKNOWN"
-msgstr "ISMERETLEN"
+#: nscd/selinux.c:335
+msgid "Access Vector Cache (AVC) started"
+msgstr ""
-#: nis/nis_error.c:73
-msgid "Unable to authenticate NIS+ client"
-msgstr "Nem lehet hitelesíteni a NIS+ ügyfelet"
+#: nscd/selinux.c:356
+msgid "Error getting context of socket peer"
+msgstr ""
-#: nis/nis_error.c:72
-msgid "Unable to authenticate NIS+ server"
-msgstr "Nem lehet hitelesíteni a NIS+ kiszolgálot"
+#: nscd/selinux.c:361
+msgid "Error getting context of nscd"
+msgstr ""
-#: nis/nis_error.c:47
-msgid "Unable to create callback"
-msgstr "Nem lehet létrehozni a 'callback'-et"
+#: nscd/selinux.c:367
+msgid "Error getting sid from context"
+msgstr ""
-#: nis/nis_error.c:75
-msgid "Unable to create process on server"
-msgstr "Nem lehet létrehozni a folyamatot a kiszolgálon"
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr ""
-#: nis/nis_print.c:194
+#: nscd/selinux.c:407
#, c-format
-msgid "Unknown (type = %d, bits = %d)\n"
-msgstr "Ismeretlen(típus= %d, bit= %d)\n"
+msgid ""
+"\n"
+"SELinux AVC Statistics:\n"
+"\n"
+"%15u entry lookups\n"
+"%15u entry hits\n"
+"%15u entry misses\n"
+"%15u entry discards\n"
+"%15u CAV lookups\n"
+"%15u CAV hits\n"
+"%15u CAV probes\n"
+"%15u CAV misses\n"
+msgstr ""
-#: inet/ruserpass.c:277
+#: nscd/servicescache.c:390
#, c-format
-msgid "Unknown .netrc keyword %s"
-msgstr "Ismeretlen .netrc kulcsszó a '%s'"
+msgid "Haven't found \"%s\" in services cache!"
+msgstr ""
-#: elf/../sysdeps/generic/readelflib.c:71
+#: nscd/servicescache.c:392
#, c-format
-msgid "Unknown ELFCLASS in file %s.\n"
-msgstr "Ismeretlen ELFCLASS a '%s' fájlban.\n"
+msgid "Reloading \"%s\" in services cache!"
+msgstr ""
-#: nis/ypclnt.c:822
-msgid "Unknown NIS error code"
-msgstr "Ismeretlen NIS hiba kód"
+#: nss/getent.c:52
+msgid "database [key ...]"
+msgstr ""
-#: elf/cache.c:101
-msgid "Unknown OS"
-msgstr "Ismeretlen OS"
+#: nss/getent.c:57
+msgid "Service configuration to be used"
+msgstr ""
+
+#: nss/getent.c:62
+msgid "Get entries from administrative database."
+msgstr ""
+
+#: nss/getent.c:143 nss/getent.c:408
+#, c-format
+msgid "Enumeration not supported on %s\n"
+msgstr ""
+
+#: nss/getent.c:794
+#, c-format
+msgid "Unknown database name"
+msgstr ""
+
+#: nss/getent.c:820
+msgid "Supported databases:\n"
+msgstr ""
-#: nss/getent.c:771
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
-msgstr "Ismeretlen adatbázis: %s\n"
+msgstr ""
-#: posix/../sysdeps/posix/gai_strerror.c:57
-msgid "Unknown error"
-msgstr "Ismeretlen hiba"
+#: nss/makedb.c:60
+msgid "Convert key to lower case"
+msgstr ""
-#: string/../sysdeps/generic/_strerror.c:48
-#: string/../sysdeps/mach/_strerror.c:88
-#: sysdeps/mach/hurd/mips/dl-machine.c:83
-msgid "Unknown error "
-msgstr "Ismeretlen hiba"
+#: nss/makedb.c:63
+msgid "Do not print messages while building database"
+msgstr ""
-#: resolv/herror.c:68
-msgid "Unknown host"
-msgstr "Ismeretlen gépnév"
+#: nss/makedb.c:65
+msgid "Print content of database file, one entry a line"
+msgstr ""
-#: nis/nis_error.c:35
-msgid "Unknown object"
-msgstr "Ismeretlen objektum"
+#: nss/makedb.c:70
+msgid "Create simple DB database from textual input."
+msgstr ""
+
+#: nss/makedb.c:73
+msgid ""
+"INPUT-FILE OUTPUT-FILE\n"
+"-o OUTPUT-FILE INPUT-FILE\n"
+"-u INPUT-FILE"
+msgstr ""
-#: nscd/nscd_conf.c:187
+#: nss/makedb.c:142
#, c-format
-msgid "Unknown option: %s %s %s"
-msgstr "Ismeretlen opció: %s %s %s"
+msgid "No usable database library found."
+msgstr ""
-#: resolv/herror.c:110
-msgid "Unknown resolver error"
-msgstr "Ismeretlen feloldási hiba"
+#: nss/makedb.c:149
+#, c-format
+msgid "cannot open database file `%s': %s"
+msgstr ""
-#: resolv/herror.c:70
-msgid "Unknown server error"
-msgstr "Ismeretlen kiszolgáló hiba"
+#: nss/makedb.c:151
+msgid "incorrectly formatted file"
+msgstr ""
+
+#: nss/makedb.c:331
+msgid "duplicate key"
+msgstr ""
-#: string/strsignal.c:71
+#: nss/makedb.c:337
#, c-format
-msgid "Unknown signal %d"
-msgstr "Ismeretlen jel %d"
+msgid "while writing database file"
+msgstr ""
-#: misc/error.c:117 timezone/zic.c:390
-msgid "Unknown system error"
-msgstr "Ismeretlen rendszerhiba"
+#: nss/makedb.c:348
+#, c-format
+msgid "problems while reading `%s'"
+msgstr ""
-#: nis/ypclnt.c:870
-msgid "Unknown ypbind error"
-msgstr "Ismeretlen ypbind hiba"
+#: nss/makedb.c:368 nss/makedb.c:385
+#, c-format
+msgid "while reading database"
+msgstr ""
-#: posix/regex.c:1390
-msgid "Unmatched ( or \\("
-msgstr "Pár nélküli ( vagy \\("
+#: posix/getconf.c:945
+#, c-format
+msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+msgstr ""
-#: posix/regex.c:1414
-msgid "Unmatched ) or \\)"
-msgstr "Pár nélküli ) vagy \\)"
+#: posix/getconf.c:948
+#, c-format
+msgid " %s -a [pathname]\n"
+msgstr ""
-#: posix/regex.c:1387
-msgid "Unmatched [ or [^"
-msgstr "Pár nélküli [ vagy [^"
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
-#: posix/regex.c:1393
-msgid "Unmatched \\{"
-msgstr "Pár nélküli \\{"
+#: posix/getconf.c:1081
+#, c-format
+msgid "unknown specification \"%s\""
+msgstr "érvénytelen meghatározás: \"%s\""
-#: posix/getconf.c:1006
+#: posix/getconf.c:1109
+#, c-format
+msgid "Couldn't execute %s"
+msgstr "%s nem hajtható végre"
+
+#: posix/getconf.c:1149 posix/getconf.c:1165
+msgid "undefined"
+msgstr "nem definiált"
+
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
-msgstr "El nem ismert változó '%s'"
+msgstr "Ismeretlen változó: „%sâ€"
-#: stdio-common/../sysdeps/unix/siglist.c:42 sysdeps/generic/siglist.h:42
-msgid "Urgent I/O condition"
-msgstr "Fontos I/O feltétel"
+#: posix/getopt.c:570 posix/getopt.c:586
+#, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: a(z) \"%s\" kapcsoló nem egyértelmű\n"
-#: argp/argp-help.c:1568
-msgid "Usage:"
-msgstr "Használat:"
+#: posix/getopt.c:619 posix/getopt.c:623
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: a(z) \"--%s\" kapcsoló nem enged meg argumentumot\n"
-#: posix/getconf.c:883
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
-msgid "Usage: %s [-v specification] variable_name [pathname]\n"
-msgstr "Használat:: %s [-v meghatározás] változó_név [útvonal_név]\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: a(z) \"%c%s\" kapcsoló nem enged meg argumentumot\n"
-#: sunrpc/rpcinfo.c:674
-msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
-msgstr "Használat: rpcinfo [ -n portszám ] -u kiszolgáló programszám [ verziószám ]\n"
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
+#, c-format
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: a(z) \"%s\" kapcsolóhoz argumentum szükséges\n"
-#: elf/ldconfig.c:127
-msgid "Use CACHE as cache file"
-msgstr "A CACHE használata mint gyorstár fájl"
+#: posix/getopt.c:737 posix/getopt.c:740
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: a(z) \"--%s\" kapcsoló ismeretlen\n"
-#: elf/ldconfig.c:128
-msgid "Use CONF as configuration file"
-msgstr "A CONF használata mint konfigurációs fájl"
+#: posix/getopt.c:748 posix/getopt.c:751
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: a(z) \"%c%s\" kapcsoló ismeretlen\n"
-#: nscd/nscd.c:92
-msgid "Use separate cache for each user"
-msgstr "Minden felhasználó különálló gyorstárat haszál"
+#: posix/getopt.c:800 posix/getopt.c:803
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: érvénytelen kapcsoló -- \"%c\"\n"
-#: stdio-common/../sysdeps/unix/siglist.c:56 sysdeps/generic/siglist.h:55
-msgid "User defined signal 1"
-msgstr "Felhasználó által meghatározott jel 1"
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: a kapcsoló egy argumentumot igényel -- \"%c\"\n"
-#: stdio-common/../sysdeps/unix/siglist.c:57 sysdeps/generic/siglist.h:56
-msgid "User defined signal 2"
-msgstr "Felhasználó által meghatározott jel 2"
+#: posix/getopt.c:923 posix/getopt.c:939
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: a \"-W %s\" kapcsoló nem egyértelmű\n"
-#: stdio-common/../sysdeps/gnu/errlist.c:673
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:109
-msgid "Value too large for defined data type"
-msgstr "Az érték túl nagy egy definiált adattípushoz"
+#: posix/getopt.c:963 posix/getopt.c:981
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: a \"-W %s\" kapcsoló nem enged meg argumentumot\n"
-#: stdio-common/../sysdeps/unix/siglist.c:52 sysdeps/generic/siglist.h:52
-msgid "Virtual timer expired"
-msgstr "Virtuális idõmérõ lejárt"
+#: posix/regcomp.c:136
+msgid "No match"
+msgstr "Nincs találat"
-#: timezone/zic.c:1932
-msgid "Wild result from command execution"
-msgstr "Vad eredmény a parancs futtatása után"
+#: posix/regcomp.c:139
+msgid "Invalid regular expression"
+msgstr "Érvénytelen szabályos kifejezés"
-#: stdio-common/../sysdeps/unix/siglist.c:54 sysdeps/generic/siglist.h:54
-msgid "Window changed"
-msgstr "Az ablak megváltozott"
+#: posix/regcomp.c:142
+msgid "Invalid collation character"
+msgstr "Érvénytelen leválogatási karakter"
-#: locale/programs/locale.c:77
-msgid "Write names of available charmaps"
-msgstr "Az elérhetõ karakterkészletek neveinek a kiírása"
+#: posix/regcomp.c:145
+msgid "Invalid character class name"
+msgstr "Érvénytelen karakterosztálynév"
-#: locale/programs/locale.c:75
-msgid "Write names of available locales"
-msgstr "Az elérhetõ helyeknek a kiírása"
+#: posix/regcomp.c:148
+msgid "Trailing backslash"
+msgstr "Záró visszaper"
-#: locale/programs/locale.c:79
-msgid "Write names of selected categories"
-msgstr "Az kiválasztott kategóriák kiírása"
+#: posix/regcomp.c:151
+msgid "Invalid back reference"
+msgstr "Érvénytelen visszahivatkozás"
-#: locale/programs/locale.c:80
-msgid "Write names of selected keywords"
-msgstr "A kiválaszott kulcsszavak kiírása"
+#: posix/regcomp.c:154
+msgid "Unmatched [ or [^"
+msgstr "Pár nélküli [ vagy [^"
-#: catgets/gencat.c:115
-msgid "Write output to file NAME"
-msgstr "A kimenetet a NÉV fájlba irányítja"
+#: posix/regcomp.c:157
+msgid "Unmatched ( or \\("
+msgstr "Pár nélküli ( vagy \\("
-#: elf/cache.c:402 elf/cache.c:411 elf/cache.c:415
-msgid "Writing of cache data failed"
-msgstr "Adatok írása a gyorstárba nem sikerült"
+#: posix/regcomp.c:160
+msgid "Unmatched \\{"
+msgstr "Pár nélküli \\{"
-#: elf/cache.c:419
-msgid "Writing of cache data failed."
-msgstr "Adatok írása a gyorstárba nem sikerült."
+#: posix/regcomp.c:163
+msgid "Invalid content of \\{\\}"
+msgstr "A \\{\\} tartalma érvénytelen"
-#: catgets/gencat.c:251 elf/ldconfig.c:264 elf/sprof.c:361
-#: iconv/iconv_prog.c:398 iconv/iconvconfig.c:340 locale/programs/locale.c:286
-#: locale/programs/localedef.c:316 nscd/nscd.c:292 nscd/nscd_nischeck.c:95
-#: nss/getent.c:68 posix/getconf.c:909
-#, c-format
-msgid "Written by %s.\n"
-msgstr "Írta %s.\n"
+#: posix/regcomp.c:166
+msgid "Invalid range end"
+msgstr "Érvénytelen tartományvég"
-#: stdio-common/../sysdeps/gnu/errlist.c:837
-msgid "Wrong medium type"
-msgstr "Helytelen eszköz típus"
+#: posix/regcomp.c:169
+msgid "Memory exhausted"
+msgstr "Elfogyott a memória"
-#: nis/ypclnt.c:174
-#, c-format
-msgid "YPBINDPROC_DOMAIN: %s\n"
-msgstr "YPBINDPROC_DOMAIN: %s\n"
+#: posix/regcomp.c:172
+msgid "Invalid preceding regular expression"
+msgstr "Érvénytelen megelőző szabályos kifejezés"
-#: nis/nis_error.c:71
-msgid "Yes, 42 is the meaning of life"
-msgstr "Igen, a 42 jelenti az életet"
+#: posix/regcomp.c:175
+msgid "Premature end of regular expression"
+msgstr "A szabályos kifejezés túl korán véget ért"
-#. TRANS You did @strong{what}?
-#: stdio-common/../sysdeps/gnu/errlist.c:627
-msgid "You really blew it this time"
-msgstr "Ön biztos hogy ezt akarja csinálni"
+#: posix/regcomp.c:178
+msgid "Regular expression too big"
+msgstr "A szabályos kifejezés túl nagy"
-#: timezone/zic.c:1094
-msgid "Zone continuation line end time is not after end time of previous line"
-msgstr "A zóna folyamat sor befejezési ideje nincs az elõzõ sor befejezési ideje elõtt"
+#: posix/regcomp.c:181
+msgid "Unmatched ) or \\)"
+msgstr "Pár nélküli ) vagy \\)"
-#: iconv/iconvconfig.c:114
-msgid "[DIR...]"
-msgstr "[KÖNYVÁR..]"
+#: posix/regcomp.c:681
+msgid "No previous regular expression"
+msgstr "Nincs megelőző szabályos kifejezés"
-#: iconv/iconv_prog.c:77
-msgid "[FILE...]"
-msgstr "[FÁJL..]"
+#: posix/wordexp.c:1832
+msgid "parameter null or not set"
+msgstr ""
-#: debug/pcprofiledump.c:59
-msgid "[FILE]"
-msgstr "[FÁJL]"
+#: resolv/herror.c:68
+msgid "Resolver Error 0 (no error)"
+msgstr ""
-#: sunrpc/pmap_clnt.c:72
-msgid "__get_myaddress: ioctl (get interface configuration)"
-msgstr "__get_myaddress: ioctl (az interfész beállításai)"
+#: resolv/herror.c:69
+msgid "Unknown host"
+msgstr "Ismeretlen gép"
-#: locale/programs/ld-collate.c:417
-#, c-format
-msgid "`%.*s' already defined as collating element"
-msgstr "`%.*s' már létezik mint összehasonlító elem"
+#: resolv/herror.c:70
+msgid "Host name lookup failure"
+msgstr "Gépnév keresése nem sikerült"
+
+#: resolv/herror.c:71
+msgid "Unknown server error"
+msgstr ""
+
+#: resolv/herror.c:72
+msgid "No address associated with name"
+msgstr ""
+
+#: resolv/herror.c:107
+msgid "Resolver internal error"
+msgstr ""
-#: locale/programs/ld-collate.c:410
+#: resolv/herror.c:110
+msgid "Unknown resolver error"
+msgstr ""
+
+#: resolv/res_hconf.c:124
#, c-format
-msgid "`%.*s' already defined as collating symbol"
-msgstr "`%.*s' már létezik mint összehasonlító szimbólum"
+msgid "%s: line %d: cannot specify more than %d trim domains"
+msgstr ""
-#: locale/programs/ld-collate.c:394
+#: resolv/res_hconf.c:145
#, c-format
-msgid "`%.*s' already defined in charmap"
-msgstr "`%.*s' már létezik mint karakterkészlet"
+msgid "%s: line %d: list delimiter not followed by domain"
+msgstr ""
-#: locale/programs/ld-collate.c:403
+#: resolv/res_hconf.c:204
#, c-format
-msgid "`%.*s' already defined in repertoire"
-msgstr "`%.*s' már létezik mint repertár"
+msgid "%s: line %d: expected `on' or `off', found `%s'\n"
+msgstr ""
-#: locale/programs/charmap.c:604 locale/programs/locfile.h:96
-#: locale/programs/repertoire.c:314
+#: resolv/res_hconf.c:247
#, c-format
-msgid "`%1$s' definition does not end with `END %1$s'"
-msgstr "a `%1$s' meghatározás nem végzõdhet `END %1$s' -re"
+msgid "%s: line %d: bad command `%s'\n"
+msgstr ""
-#: locale/programs/ld-collate.c:1281 locale/programs/ld-ctype.c:1455
+#: resolv/res_hconf.c:282
#, c-format
-msgid "`%s' and `%.*s' are not valid names for symbolic range"
-msgstr "a `%s' és a `%.*s' nem érvényesek a szimbolikus tartományban"
+msgid "%s: line %d: ignoring trailing garbage `%s'\n"
+msgstr ""
-#: elf/sprof.c:762
+#: stdio-common/psignal.c:51
#, c-format
-msgid "`%s' is no correct profile data file for `%s'"
-msgstr "`%s' nem érvényes profill adat fájlja a `%s' -nek"
+msgid "%s%sUnknown signal %d\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:699
-msgid "`digit' category has not entries in groups of ten"
-msgstr "a `digit' kategória bejegyzéseinek oszthatónak kell lennie tízzel"
+#: stdio-common/psignal.c:52
+msgid "Unknown signal"
+msgstr "Ismeretlen szignál"
-#: posix/../sysdeps/posix/gai_strerror.c:35
-msgid "ai_family not supported"
-msgstr "ai_family nem támogatott"
+#: string/_strerror.c:45 sysdeps/mach/_strerror.c:87
+msgid "Unknown error "
+msgstr "Ismeretlen hiba "
-#: posix/../sysdeps/posix/gai_strerror.c:40
-msgid "ai_socktype not supported"
-msgstr "ai_socktype nem támogatott"
+#: string/strerror.c:43
+msgid "Unknown error"
+msgstr "Ismeretlen hiba"
-#: nscd/nscd.c:130
-msgid "already running"
-msgstr "már fut"
+#: string/strsignal.c:65
+#, c-format
+msgid "Real-time signal %d"
+msgstr "Valós idejű szignál %d"
-#: locale/programs/charmap.c:439 locale/programs/repertoire.c:184
+#: string/strsignal.c:69
#, c-format
-msgid "argument to <%s> must be a single character"
-msgstr "A <%s> paramétere csak egy betû lehet"
+msgid "Unknown signal %d"
+msgstr "Ismeretlen szignál %d"
+
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "elfogyott a memória\n"
+
+#: sunrpc/auth_unix.c:350
+msgid "auth_unix.c: Fatal marshalling problem"
+msgstr ""
-#: locale/programs/locfile.c:126
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "argument to `%s' must be a single character"
-msgstr "A '%s' paramétere csak egy betû lehet"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr ""
-#: sunrpc/auth_unix.c:322
-msgid "auth_none.c - Fatal marshalling problem"
-msgstr "auth_none.c - Végzetes rendezési probléma"
+#: sunrpc/clnt_perr.c:112
+#, c-format
+msgid "%s: %s; why = %s\n"
+msgstr ""
-#: sunrpc/auth_unix.c:114 sunrpc/auth_unix.c:117 sunrpc/auth_unix.c:150
-#: sunrpc/auth_unix.c:153
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create: elfogyott a memória\n"
+#: sunrpc/clnt_perr.c:114
+#, c-format
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr ""
-#: locale/programs/charmap.c:369 locale/programs/locfile.c:120
-#: locale/programs/locfile.c:147 locale/programs/repertoire.c:176
-msgid "bad argument"
-msgstr "rossz paraméter"
+#: sunrpc/clnt_perr.c:159
+msgid "RPC: Success"
+msgstr ""
-#: inet/rcmd.c:514
-msgid "bad owner"
-msgstr "rossz tulaj"
+#: sunrpc/clnt_perr.c:162
+msgid "RPC: Can't encode arguments"
+msgstr ""
-#: timezone/zic.c:1216
-msgid "blank FROM field on Link line"
-msgstr "üres a FROM mezõ hivatkozás sorban"
+#: sunrpc/clnt_perr.c:166
+msgid "RPC: Can't decode result"
+msgstr ""
-#: timezone/zic.c:1220
-msgid "blank TO field on Link line"
-msgstr "üres a TO mezõ hivatkozás sorban"
+#: sunrpc/clnt_perr.c:170
+msgid "RPC: Unable to send"
+msgstr ""
-#: malloc/mcheck.c:302
-msgid "block freed twice\n"
-msgstr "a blokk kétszer lett felszabadítva\n"
+#: sunrpc/clnt_perr.c:174
+msgid "RPC: Unable to receive"
+msgstr ""
-#: malloc/mcheck.c:305
-msgid "bogus mcheck_status, library is buggy\n"
-msgstr "hamis mcheck_status, a könyvtár hibás\n"
+#: sunrpc/clnt_perr.c:178
+msgid "RPC: Timed out"
+msgstr ""
-#: sunrpc/pmap_rmt.c:186
-msgid "broadcast: ioctl (get interface configuration)"
-msgstr "üzenet: ioctl (interfész beállítás)"
+#: sunrpc/clnt_perr.c:182
+msgid "RPC: Incompatible versions of RPC"
+msgstr ""
-#: sunrpc/pmap_rmt.c:195
-msgid "broadcast: ioctl (get interface flags)"
-msgstr "üzenet: ioctl (interfész jelzõk)"
+#: sunrpc/clnt_perr.c:186
+msgid "RPC: Authentication error"
+msgstr ""
-#: sunrpc/svc_udp.c:541
-msgid "cache_set: could not allocate new rpc_buffer"
-msgstr "cache_set: nem lehet lefoglalni ez új 'rpc_buffer'-t"
+#: sunrpc/clnt_perr.c:190
+msgid "RPC: Program unavailable"
+msgstr ""
-#: sunrpc/svc_udp.c:535
-msgid "cache_set: victim alloc failed"
-msgstr "cache_set: áldozat keresése sikertelen"
+#: sunrpc/clnt_perr.c:194
+msgid "RPC: Program/version mismatch"
+msgstr ""
-#: sunrpc/svc_udp.c:524
-msgid "cache_set: victim not found"
-msgstr "cache_set: az áldozat nincs meg"
+#: sunrpc/clnt_perr.c:198
+msgid "RPC: Procedure unavailable"
+msgstr ""
-#: timezone/zic.c:1757
-msgid "can't determine time zone abbreviation to use just after until time"
-msgstr "nem lehet meghatározni az idõzóna rövidítést csak ha megadja hogy honnan számoljam"
+#: sunrpc/clnt_perr.c:202
+msgid "RPC: Server can't decode arguments"
+msgstr ""
-#: sunrpc/svc_simple.c:88
-#, c-format
-msgid "can't reassign procedure number %ld\n"
-msgstr "nem lehet újra hozzárendelni a termék számot '%ld'\n"
+#: sunrpc/clnt_perr.c:206
+msgid "RPC: Remote system error"
+msgstr ""
-#: elf/dl-reloc.c:152
-msgid "can't restore segment prot after reloc"
-msgstr "nem lehet a szegmenst vissza állítani a reloc után"
+#: sunrpc/clnt_perr.c:210
+msgid "RPC: Unknown host"
+msgstr ""
-#: locale/programs/localedef.c:487
-#, c-format
-msgid "cannot add already read locale `%s' a second time"
-msgstr "nem lehet hozzáadni a '%s'-t a beolvasott helyekhez még egyszer"
+#: sunrpc/clnt_perr.c:214
+msgid "RPC: Unknown protocol"
+msgstr ""
-#: elf/dl-deps.c:454
-msgid "cannot allocate dependency list"
-msgstr "nem lehet lefoglalni a függõség listát"
+#: sunrpc/clnt_perr.c:218
+msgid "RPC: Port mapper failure"
+msgstr ""
-#: elf/dl-load.c:1039
-msgid "cannot allocate memory for program header"
-msgstr "nem lehet lefoglalni a memóriás a program fejléchez"
+#: sunrpc/clnt_perr.c:222
+msgid "RPC: Program not registered"
+msgstr ""
-#: elf/dl-load.c:348
-msgid "cannot allocate name record"
-msgstr "nem lehet lefoglalni rekord nevét"
+#: sunrpc/clnt_perr.c:226
+msgid "RPC: Failed (unspecified error)"
+msgstr ""
-#: elf/sprof.c:930 elf/sprof.c:982
-msgid "cannot allocate symbol data"
-msgstr "nem lehet lefoglalni szimbolikus adatokat"
+#: sunrpc/clnt_perr.c:267
+msgid "RPC: (unknown error code)"
+msgstr ""
-#: elf/dl-deps.c:484
-msgid "cannot allocate symbol search list"
-msgstr "nem lehet lefoglalni a szimbolikus keresési listát"
+#: sunrpc/clnt_perr.c:330
+msgid "Authentication OK"
+msgstr ""
-#: elf/dl-version.c:292
-msgid "cannot allocate version reference table"
-msgstr "nem lehet lefoglalni a verzió hivatkozási táblát"
+#: sunrpc/clnt_perr.c:333
+msgid "Invalid client credential"
+msgstr ""
-#: elf/dl-load.c:1008
-msgid "cannot change memory protections"
-msgstr "nem lehet módosítani memória védelmen"
+#: sunrpc/clnt_perr.c:337
+msgid "Server rejected credential"
+msgstr ""
-#: elf/dl-load.c:540
-msgid "cannot create RUNPATH/RPATH copy"
-msgstr "nem lehet létrehozni a RUNPATH/RPATH másolatott"
+#: sunrpc/clnt_perr.c:341
+msgid "Invalid client verifier"
+msgstr ""
-#: elf/dl-load.c:456 elf/dl-load.c:525 elf/dl-load.c:553 elf/dl-load.c:600
-#: elf/dl-load.c:693
-msgid "cannot create cache for search path"
-msgstr "nem lehet létrehozni a keresési útvonalat"
+#: sunrpc/clnt_perr.c:345
+msgid "Server rejected verifier"
+msgstr ""
-#: elf/sprof.c:715 elf/sprof.c:773
-msgid "cannot create internal descriptor"
-msgstr "nem lehet létrehozni a belsõ leírót"
+#: sunrpc/clnt_perr.c:349
+msgid "Client credential too weak"
+msgstr ""
-#: elf/sprof.c:413
-msgid "cannot create internal descriptors"
-msgstr "nem lehet létrehozni a belsõ leírókat"
+#: sunrpc/clnt_perr.c:353
+msgid "Invalid server verifier"
+msgstr ""
-#: locale/programs/locfile.c:693
-#, c-format
-msgid "cannot create output file `%s' for category `%s'"
-msgstr "nem lehet létrehozni a '%s' kimeneti fájl '%s' kategóriaval"
+#: sunrpc/clnt_perr.c:357
+msgid "Failed (unspecified error)"
+msgstr ""
-#: elf/dl-load.c:590
-msgid "cannot create search path array"
-msgstr "nem lehet létre hozni a keresés út tömböt"
+#: sunrpc/clnt_raw.c:117
+msgid "clnt_raw.c: fatal header serialization error"
+msgstr ""
-#: elf/dl-load.c:1125
-msgid "cannot create searchlist"
-msgstr "nem lehet létrehozni a keresési listát"
+#: sunrpc/pm_getmaps.c:83
+msgid "pmap_getmaps.c: rpc problem"
+msgstr ""
-#: elf/dl-load.c:830 elf/dl-load.c:1724
-msgid "cannot create shared object descriptor"
-msgstr "nem lehet létrehozni a megosztott objektum leírókat"
+#: sunrpc/pmap_clnt.c:129
+msgid "Cannot register service"
+msgstr ""
-#: catgets/gencat.c:1315
-msgid "cannot determine escape character"
-msgstr "nem lehet meg meghatározni az eszkép karaktert"
+#: sunrpc/pmap_rmt.c:248
+msgid "Cannot create socket for broadcast rpc"
+msgstr ""
-#: elf/dl-load.c:958
-msgid "cannot dynamically load executable"
-msgstr "nem dinamikusan betölteni"
+#: sunrpc/pmap_rmt.c:255
+msgid "Cannot set socket option SO_BROADCAST"
+msgstr ""
+
+#: sunrpc/pmap_rmt.c:307
+msgid "Cannot send broadcast packet"
+msgstr ""
-#: nscd/connections.c:183
+#: sunrpc/pmap_rmt.c:332
+msgid "Broadcast poll problem"
+msgstr ""
+
+#: sunrpc/pmap_rmt.c:345
+msgid "Cannot receive reply to broadcast"
+msgstr ""
+
+#: sunrpc/rpc_main.c:290
#, c-format
-msgid "cannot enable socket to accept connections: %s"
-msgstr "nem lehet beállítani az illesztõpontot, hogy engedélyezze a kapcsolódást: %s"
+msgid "%s: output would overwrite %s\n"
+msgstr ""
-#: elf/dl-open.c:121
-msgid "cannot extend global scope"
-msgstr "nem lehet kibõvíteni globális hatókörre"
+#: sunrpc/rpc_main.c:297
+#, c-format
+msgid "%s: unable to open %s: %m\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:309
+#, c-format
+msgid "%s: while writing output %s: %m"
+msgstr ""
-#: sunrpc/rpc_main.c:343
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
-msgstr "nem találom a C elõfeldolgozot :%s\n"
+msgstr ""
-#: sunrpc/rpc_main.c:351
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
-msgstr "nem találok egy C elõfeldolgozot (cpp) sem\n"
+msgstr ""
-#: iconv/iconvconfig.c:1159
-msgid "cannot generate output file"
-msgstr "nem lehet generálni kimeneti fájlt"
+#: sunrpc/rpc_main.c:421
+#, c-format
+msgid "%s: C preprocessor failed with signal %d\n"
+msgstr ""
-#: nscd/connections.c:227
+#: sunrpc/rpc_main.c:424
#, c-format
-msgid "cannot handle old request version %d; current version is %d"
-msgstr "nem lehet kezelni a régi '%d' verziójú, mikor a jelenlegi verzió %d"
+msgid "%s: C preprocessor failed with exit code %d\n"
+msgstr ""
-#: elf/sprof.c:670
-msgid "cannot load profiling data"
-msgstr "nem lehet betölteni a profil adatokat"
+#: sunrpc/rpc_main.c:464
+#, c-format
+msgid "illegal nettype: `%s'\n"
+msgstr ""
-#: elf/dl-reloc.c:62
-msgid "cannot make segment writable for relocation"
-msgstr "nem lehet létrehozni a szegmenst írhatóra"
+#: sunrpc/rpc_main.c:1130
+#, c-format
+msgid "rpcgen: too many defines\n"
+msgstr ""
-#: elf/dl-load.c:1024
-msgid "cannot map zero-fill pages"
-msgstr "nem lehet feltérképezni a üres lapokat"
+#: sunrpc/rpc_main.c:1142
+#, c-format
+msgid "rpcgen: arglist coding error\n"
+msgstr ""
-#: inet/rcmd.c:510
-msgid "cannot open"
-msgstr "nem lehet megnyitni"
+#. TRANS: the file will not be removed; this is an
+#. TRANS: informative message.
+#: sunrpc/rpc_main.c:1175
+#, c-format
+msgid "file `%s' already exists and may be overwritten\n"
+msgstr ""
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sunrpc/rpc_main.c:1220
#, c-format
-msgid "cannot open `%s'"
-msgstr "nem lehet megnyitni a '%s'-t"
+msgid "Cannot specify more than one input file!\n"
+msgstr ""
-#: debug/pcprofiledump.c:96
-msgid "cannot open input file"
-msgstr "nem lehet megnyitni a bemeneti fájlt"
+#: sunrpc/rpc_main.c:1394
+#, c-format
+msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+msgstr ""
-#: catgets/gencat.c:288 iconv/iconv_charmap.c:159 iconv/iconv_prog.c:265
+#: sunrpc/rpc_main.c:1403
#, c-format
-msgid "cannot open input file `%s'"
-msgstr "nem lehet megnyitni a '%s' bemeneti fájlt"
+msgid "Cannot use netid flag with inetd flag!\n"
+msgstr ""
-#: locale/programs/localedef.c:203 locale/programs/localedef.c:218
-#: locale/programs/localedef.c:513 locale/programs/localedef.c:533
+#: sunrpc/rpc_main.c:1415
#, c-format
-msgid "cannot open locale definition file `%s'"
-msgstr "nem lehet megnyitni a '%s' helymeghatározás fájl"
+msgid "Cannot use netid flag without TIRPC!\n"
+msgstr ""
-#: iconv/iconv_prog.c:209
-msgid "cannot open output file"
-msgstr "nem lehet megnyitni a kimeneti fájlt"
+#: sunrpc/rpc_main.c:1422
+#, c-format
+msgid "Cannot use table flags with newstyle!\n"
+msgstr ""
-#: catgets/gencat.c:949 catgets/gencat.c:990
+#: sunrpc/rpc_main.c:1441
#, c-format
-msgid "cannot open output file `%s'"
-msgstr "nem lehet megnyitni a '%s' kimeneti fájlt"
+msgid "\"infile\" is required for template generation flags.\n"
+msgstr ""
-#: locale/programs/locfile.c:571
+#: sunrpc/rpc_main.c:1446
#, c-format
-msgid "cannot open output file `%s' for category `%s'"
-msgstr "nem lehet megnyitni a '%s' kimeneti fájlt a '%s' kategóriában"
+msgid "Cannot have more than one file generation flag!\n"
+msgstr ""
-#: elf/dl-load.c:1737
-msgid "cannot open shared object file"
-msgstr "nem lehet megnyitni megosztott objektum fájlt"
+#: sunrpc/rpc_main.c:1455
+#, c-format
+msgid "usage: %s infile\n"
+msgstr ""
-#: nscd/connections.c:165
+#: sunrpc/rpc_main.c:1456
#, c-format
-msgid "cannot open socket: %s"
-msgstr "nem lehet megnyitni '%s' illesztõpontot"
+msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
+msgstr ""
-#: elf/dl-load.c:822
-msgid "cannot open zero fill device"
-msgstr "nem lehet megnyitni egy üres eszközt"
+#: sunrpc/rpc_main.c:1458
+#, c-format
+msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
+msgstr ""
-#: locale/programs/charmap-dir.c:61
+#: sunrpc/rpc_main.c:1460
#, c-format
-msgid "cannot read character map directory `%s'"
-msgstr "nem lehet olvasni a '%s' karakter készletet könyvtárat "
+msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
+msgstr ""
-#: nscd/connections.c:125
-msgid "cannot read configuration file; this is fatal"
-msgstr "nem lehet olvasni a konfigurációs fájlt, ez végzetes hiba"
+#: sunrpc/rpc_main.c:1461
+#, c-format
+msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
+msgstr ""
-#: elf/dl-load.c:846 elf/dl-load.c:1247 elf/dl-load.c:1319 elf/dl-load.c:1333
-msgid "cannot read file data"
-msgstr "nem lehet olvasni a fájl adatait"
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr ""
-#: debug/pcprofiledump.c:102
-msgid "cannot read header"
-msgstr "nem lehet olvasni a fejlécet"
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr ""
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sunrpc/rpc_main.c:1471
#, c-format
-msgid "cannot read header from `%s'"
-msgstr "nem lehet olvasni a fejlécet a '%s'-bõl"
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr ""
-#: nscd/nscd_stat.c:128
-msgid "cannot read statistics data"
-msgstr "nem lehet olvasni a statisztikai adatokat"
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr ""
-#: locale/programs/repertoire.c:331
-msgid "cannot save new repertoire map"
-msgstr "nem biztonságos új repertoár"
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr ""
-#: elf/dl-load.c:784
-msgid "cannot stat shared object"
-msgstr "nem lehet lekérdezni a megosztott objektumot"
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr ""
-#: nscd/cache.c:150 nscd/connections.c:151
+#: sunrpc/rpc_main.c:1475
#, c-format
-msgid "cannot stat() file `%s': %s"
-msgstr "nem lehet lekérdezni a '%s': %s fájlt"
+msgid "-h\t\tgenerate header file\n"
+msgstr ""
-#: locale/programs/localedef.c:230
+#: sunrpc/rpc_main.c:1476
#, c-format
-msgid "cannot write output files to `%s'"
-msgstr "nem lehet a '%s' kimeneti fájl írni"
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr ""
-#: nscd/connections.c:265 nscd/connections.c:287
+#: sunrpc/rpc_main.c:1477
#, c-format
-msgid "cannot write result: %s"
-msgstr "nem lehet eredmény kiírni: %s"
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr ""
-#: nscd/nscd_stat.c:87
+#: sunrpc/rpc_main.c:1478
#, c-format
-msgid "cannot write statistics: %s"
-msgstr "nem lehet a statisztikát kiírni: %s"
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:517
+#: sunrpc/rpc_main.c:1479
#, c-format
-msgid "character '%s' in class `%s' must be in class `%s'"
-msgstr "a '%s' karakter a '%s' osztályban '%s' osztályúnak kell lennie"
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:532
+#: sunrpc/rpc_main.c:1480
#, c-format
-msgid "character '%s' in class `%s' must not be in class `%s'"
-msgstr "a '%s' karakter a '%s' osztályban nem lehet '%s' osztályú"
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:587
-msgid "character <SP> not defined in character map"
-msgstr "az <SP> karakter nincs meghatározva a karakterkészletben"
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:461
+#: sunrpc/rpc_main.c:1482
#, c-format
-msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
-msgstr "a L'\\u%0*x' karakter a `%s' osztályban `%s' osztályúnak kell lennie"
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:475
+#: sunrpc/rpc_main.c:1483
#, c-format
-msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'"
-msgstr "a L'\\u%0*x' karakter a `%s' osztályban nem lehet `%s' osztályú"
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:3032
+#: sunrpc/rpc_main.c:1484
#, c-format
-msgid "character `%s' not defined while needed as default value"
-msgstr "a '%s' karakter meghatározva amíg szükséges addig az alapértelmezett értéket használom"
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:1223
+#: sunrpc/rpc_main.c:1485
#, c-format
-msgid "character class `%s' already defined"
-msgstr "a '%s' karakter osztály már létezik"
+msgid "-o outfile\tname of the output file\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:1255
+#: sunrpc/rpc_main.c:1486
#, c-format
-msgid "character map `%s' already defined"
-msgstr "a '%s' karakter készlet már létezik"
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr ""
-#: locale/programs/charmap.c:254
+#: sunrpc/rpc_main.c:1487
#, c-format
-msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
-msgstr "a '%s' karakter készlet nem fér össze az 'ASCII'-vel, nem tartalmaz ISO C engedélyt\n"
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr ""
-#: locale/programs/charmap.c:140
+#: sunrpc/rpc_main.c:1488
#, c-format
-msgid "character map file `%s' not found"
-msgstr "a '%s' karakterkészlet fájl nincs meg"
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr ""
-#: locale/programs/charmap.c:465
-msgid "character sets with locking states are not supported"
-msgstr "a karakterkészlet az állapot zárolást nem támogatja"
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr ""
-#: intl/tst-codeset.c:40 intl/tst-codeset.c:50
-msgid "cheese"
-msgstr "csíííz"
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr ""
-#: locale/programs/localedef.c:482
-msgid "circular dependencies between locale definitions"
-msgstr "körkörös függõségeket találtam a hely meghatározásások között"
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr ""
-#: sunrpc/clnt_raw.c:115
-msgid "clnt_raw.c - Fatal header serialization error."
-msgstr "clnt_raw.c - Végzetes fejléc olvasási hiba"
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr ""
-#: sunrpc/clnt_tcp.c:134 sunrpc/clnt_tcp.c:137
-msgid "clnttcp_create: out of memory\n"
-msgstr "clnttcp_create: elfogyott a memória\n"
+#: sunrpc/rpc_scan.c:114
+msgid "constant or identifier expected"
+msgstr ""
-#: sunrpc/clnt_udp.c:141 sunrpc/clnt_udp.c:144
-msgid "clntudp_create: out of memory\n"
-msgstr "clntudp_create: elfogyott a memória\n"
+#: sunrpc/rpc_scan.c:310
+msgid "illegal character in file: "
+msgstr ""
-#: sunrpc/clnt_unix.c:131 sunrpc/clnt_unix.c:134
-msgid "clntunix_create: out of memory\n"
-msgstr "clntunix_create: elfogyott a memória\n"
+#: sunrpc/rpc_scan.c:349 sunrpc/rpc_scan.c:375
+msgid "unterminated string constant"
+msgstr ""
-#: inet/rcmd.c:209
+#: sunrpc/rpc_scan.c:381
+msgid "empty char string"
+msgstr ""
+
+#: sunrpc/rpc_scan.c:523 sunrpc/rpc_scan.c:533
+msgid "preprocessor error"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
-msgid "connect to address %s: "
-msgstr "kapcsolás a '%s' címre"
+msgid "program %lu is not available\n"
+msgstr ""
-#: sunrpc/rpc_scan.c:116
-msgid "constant or identifier expected"
-msgstr "állandó vagy azonosító lejárt"
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
+#, c-format
+msgid "program %lu version %lu is not available\n"
+msgstr ""
-#: iconv/iconv_prog.c:231
+#: sunrpc/rpcinfo.c:532
#, c-format
-msgid "conversion from `%s' to `%s' not supported"
-msgstr "a '%s'-rõl '%s'-re való átalakítás nem támogatott"
+msgid "program %lu version %lu ready and waiting\n"
+msgstr ""
-#: catgets/gencat.c:1289
-msgid "conversion modules not available"
-msgstr "az átalakítási modulok nem elérhetõek"
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
+msgid "rpcinfo: can't contact portmapper"
+msgstr ""
-#: locale/programs/ld-monetary.c:902
-msgid "conversion rate value cannot be zero"
-msgstr "az átalakítási arány nem lehet nulla"
+#: sunrpc/rpcinfo.c:587
+msgid "No remote programs registered.\n"
+msgstr ""
-#: iconv/iconv_prog.c:427 iconv/iconv_prog.c:452
-msgid "conversion stopped due to problem in writing the output"
-msgstr "az átalakítás megszakítva mert probléma volt a kimenetre írással"
+#: sunrpc/rpcinfo.c:591
+msgid " program vers proto port\n"
+msgstr ""
-#: sunrpc/svc_simple.c:97
-msgid "couldn't create an rpc server\n"
-msgstr "nem lehet létrehozni az rpc kiszolgálót\n"
+#: sunrpc/rpcinfo.c:630
+msgid "(unknown)"
+msgstr "(ismeretlen)"
-#: sunrpc/svc_simple.c:105
+#: sunrpc/rpcinfo.c:654
#, c-format
-msgid "couldn't register prog %ld vers %ld\n"
-msgstr "nem lehet bejegyezni a '%ld' program '%ld' verzióját\n"
+msgid "rpcinfo: broadcast failed: %s\n"
+msgstr ""
-#: nss/getent.c:51
-msgid "database [key ...]"
-msgstr "adatbázis [kulcs]"
+#: sunrpc/rpcinfo.c:675
+msgid "Sorry. You are not root\n"
+msgstr "Elnézést, Ön nem rendszergazda\n"
-#: locale/programs/charmap.c:197
+#: sunrpc/rpcinfo.c:682
#, c-format
-msgid "default character map file `%s' not found"
-msgstr "az alapértelmezett a '%s' karakter készlet fájl nincs meg"
+msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:691
+msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
+msgstr ""
-#: locale/programs/charmap.c:397
+#: sunrpc/rpcinfo.c:693
+msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:695
+msgid " rpcinfo -p [ host ]\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:696
+msgid " rpcinfo -b prognum versnum\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:697
+msgid " rpcinfo -d prognum versnum\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:722
#, c-format
-msgid "duplicate definition of <%s>"
-msgstr "a <%s> meghatározás ismétlõdik"
+msgid "rpcinfo: %s is unknown service\n"
+msgstr ""
-#: locale/programs/ld-collate.c:3062
+#: sunrpc/rpcinfo.c:759
#, c-format
-msgid "duplicate definition of script `%s'"
-msgstr "a '%s' parancsállomány kétszer lett létrehozva"
+msgid "rpcinfo: %s is unknown host\n"
+msgstr ""
-#: catgets/gencat.c:430
-msgid "duplicate set definition"
-msgstr "kétszeres meghatározás"
+#: sunrpc/svc_run.c:70
+msgid "svc_run: - out of memory"
+msgstr ""
-#: timezone/zic.c:1009
+#: sunrpc/svc_run.c:90
+msgid "svc_run: - poll failed"
+msgstr ""
+
+#: sunrpc/svc_simple.c:87
#, c-format
-msgid "duplicate zone name %s (file \"%s\", line %d)"
-msgstr "kétszeres zóna név a '%s' (a \"%s fájl, %d sorában)"
+msgid "can't reassign procedure number %ld\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:2559
+#: sunrpc/svc_simple.c:97
+msgid "couldn't create an rpc server\n"
+msgstr ""
+
+#: sunrpc/svc_simple.c:105
#, c-format
-msgid "duplicated definition for mapping `%s'"
-msgstr "kétszeres a '%s' meghatározása"
+msgid "couldn't register prog %ld vers %ld\n"
+msgstr ""
-#: catgets/gencat.c:631
-msgid "duplicated message identifier"
-msgstr "kétszeres üzenet azonosító"
+#: sunrpc/svc_simple.c:113
+msgid "registerrpc: out of memory\n"
+msgstr ""
-#: catgets/gencat.c:603
-msgid "duplicated message number"
-msgstr "kétszeres üzenet szám"
+#: sunrpc/svc_simple.c:173
+#, c-format
+msgid "trouble replying to prog %d\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:2370
-msgid "ellipsis range must be marked by two operands of same type"
-msgstr "a körkörös tartományt meg kell jelölni két aznonos típusú mûveleti jellel"
+#: sunrpc/svc_simple.c:182
+#, c-format
+msgid "never registered prog %d\n"
+msgstr ""
-#: sunrpc/rpc_scan.c:383
-msgid "empty char string"
-msgstr "üres karakter szöveg"
+#: sunrpc/svc_tcp.c:155
+msgid "svc_tcp.c - tcp socket creation problem"
+msgstr ""
-#: elf/dl-open.c:219
-msgid "empty dynamic string token substitution"
-msgstr "üres a dinamikus szöveg behelyetesítés"
+#: sunrpc/svc_tcp.c:170
+msgid "svc_tcp.c - cannot getsockname or listen"
+msgstr ""
-#: elf/dl-deps.c:113
-msgid "empty dynamics string token substitution"
-msgstr "üres a dinamikus szöveg behelyetesítés"
+#: sunrpc/svc_udp.c:128
+msgid "svcudp_create: socket creation problem"
+msgstr ""
-#: sunrpc/svc_udp.c:467
+#: sunrpc/svc_udp.c:142
+msgid "svcudp_create - cannot getsockname"
+msgstr ""
+
+#: sunrpc/svc_udp.c:175
+msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
+msgstr ""
+
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
-msgstr "enablecache: a gyorstár már engedélyezve van"
+msgstr ""
-#: sunrpc/svc_udp.c:473
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
-msgstr "enablecache: nem lehet lefoglalni a gyorstárat"
+msgstr ""
-#: sunrpc/svc_udp.c:481
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
-msgstr "enablecache: nem lehet lefoglalni a gyorstár adatait"
+msgstr ""
-#: sunrpc/svc_udp.c:488
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
-msgstr "enablecache: nem lehet lefoglalni a gyorstár 'fifo'-ját"
+msgstr ""
-#: iconv/iconv_prog.c:61
-msgid "encoding for output"
-msgstr "a kimenet kódolása"
+#: sunrpc/svc_udp.c:533
+msgid "cache_set: victim not found"
+msgstr ""
-#: iconv/iconv_prog.c:60
-msgid "encoding of original text"
-msgstr "az eredeti szöveg kódolása"
+#: sunrpc/svc_udp.c:544
+msgid "cache_set: victim alloc failed"
+msgstr ""
-#: nscd/connections.c:366 nscd/connections.c:460
-#, c-format
-msgid "error getting caller's id: %s"
-msgstr "hiba a hívó azonosítás során: %s"
+#: sunrpc/svc_udp.c:551
+msgid "cache_set: could not allocate new rpc_buffer"
+msgstr ""
-#: locale/programs/ld-collate.c:3032
-msgid "error while adding equivalent collating symbol"
-msgstr "hiba az egyenértékû összehasonlító szimbólumok hozzáadása alatt"
+#: sunrpc/svc_unix.c:150
+msgid "svc_unix.c - AF_UNIX socket creation problem"
+msgstr ""
-#: iconv/iconv_charmap.c:177 iconv/iconv_prog.c:283
-#, c-format
-msgid "error while closing input `%s'"
-msgstr "hiba a '%s' bemenet lezárása alatt"
+#: sunrpc/svc_unix.c:166
+msgid "svc_unix.c - cannot getsockname or listen"
+msgstr ""
-#: iconv/iconv_prog.c:330
-msgid "error while closing output file"
-msgstr "hiba a kimenet lezárása alatt"
+#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
+msgid "Hangup"
+msgstr "Fennakadás"
-#: elf/sprof.c:706
-msgid "error while closing the profiling data file"
-msgstr "hiba a profil adat fájl lezárása alatt"
+#: sysdeps/generic/siglist.h:30 sysdeps/unix/siglist.c:28
+msgid "Interrupt"
+msgstr "Félbeszakítás"
-#: iconv/iconv_charmap.c:507 iconv/iconv_charmap.c:538 iconv/iconv_prog.c:516
-#: iconv/iconv_prog.c:547
-msgid "error while reading the input"
-msgstr "hiba a bemenet olvasása közben"
+#: sysdeps/generic/siglist.h:31 sysdeps/unix/siglist.c:29
+msgid "Quit"
+msgstr "Kilépés"
-#: locale/programs/locfile.h:59
-msgid "expect string argument for `copy'"
-msgstr "paramétert várok a 'copy'-hoz"
+#: sysdeps/generic/siglist.h:32 sysdeps/unix/siglist.c:30
+msgid "Illegal instruction"
+msgstr "Érvénytelen utasítás"
-#: timezone/zic.c:899
-msgid "expected continuation line not found"
-msgstr "a szükséges folytatás sor el marad"
+#: sysdeps/generic/siglist.h:33 sysdeps/unix/siglist.c:31
+msgid "Trace/breakpoint trap"
+msgstr "Nyomkövetési/töréspont csapda"
-#: locale/programs/ld-time.c:1027
-msgid "extra trailing semicolon"
-msgstr "több sok záró kettõspont"
+#: sysdeps/generic/siglist.h:34
+msgid "Aborted"
+msgstr "Félbeszakítva"
-#: elf/sprof.c:404
-#, c-format
-msgid "failed to load shared object `%s'"
-msgstr "sikertelen a '%s' megosztott objektum betöltése közben"
+#: sysdeps/generic/siglist.h:35 sysdeps/unix/siglist.c:34
+msgid "Floating point exception"
+msgstr "Lebegőpontos kivétel"
-#: elf/sprof.c:600
-msgid "failed to load symbol data"
-msgstr "sikertelen a szimbólum adatainak a betöltése"
+#: sysdeps/generic/siglist.h:36 sysdeps/unix/siglist.c:35
+msgid "Killed"
+msgstr "Kilőve"
-#: elf/dl-load.c:771
-msgid "failed to map segment from shared object"
-msgstr "nem sikerült megszerezni a szegmens képet a megosztott objektumból"
+#: sysdeps/generic/siglist.h:37 sysdeps/unix/siglist.c:36
+msgid "Bus error"
+msgstr "Busz hiba"
-#: elf/sprof.c:698
-msgid "failed to mmap the profiling data file"
-msgstr "sikertelen az 'mmap' a profil adat fájlban"
+#: sysdeps/generic/siglist.h:38 sysdeps/unix/siglist.c:37
+msgid "Segmentation fault"
+msgstr "Szegmentálási hiba"
-#: iconv/iconv_prog.c:235
-msgid "failed to start conversion processing"
-msgstr "nem sikerült elindítani az átalakítási folyamatot"
+#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
+#. TRANS Every library function that returns this error code also generates a
+#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled
+#. TRANS or blocked. Thus, your program will never actually see @code{EPIPE}
+#. TRANS unless it has handled or blocked @code{SIGPIPE}.
+#: sysdeps/generic/siglist.h:39 sysdeps/gnu/errlist.c:359
+#: sysdeps/unix/siglist.c:39
+msgid "Broken pipe"
+msgstr "Törött adatcsatorna"
-#: locale/programs/locfile.c:596
-#, c-format
-msgid "failure while writing data for category `%s'"
-msgstr "nem sikerült a '%s' kategória adatait kiírni"
+#: sysdeps/generic/siglist.h:40 sysdeps/unix/siglist.c:40
+msgid "Alarm clock"
+msgstr "Időzítő óra"
-#: elf/../sysdeps/generic/readelflib.c:35
-#, c-format
-msgid "file %s is truncated\n"
-msgstr "a '%s' fájl csonkított\n"
+#: sysdeps/generic/siglist.h:41 sysdeps/unix/siglist.c:41
+msgid "Terminated"
+msgstr "Befejeződött"
-#. TRANS: the file will not be removed; this is an
-#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1150
-#, c-format
-msgid "file `%s' already exists and may be overwritten\n"
-msgstr "a '%s' fájl mát létezik és felül kell írni \n"
+#: sysdeps/generic/siglist.h:42 sysdeps/unix/siglist.c:42
+msgid "Urgent I/O condition"
+msgstr "Sürgős I/O feltétel"
-#: elf/dl-load.c:1247
-msgid "file too short"
-msgstr "fájl túl rövid"
+#: sysdeps/generic/siglist.h:43 sysdeps/unix/siglist.c:43
+msgid "Stopped (signal)"
+msgstr "Leállítva (szignál)"
-#: inet/rcmd.c:512
-msgid "fstat failed"
-msgstr "az fstat sikertelen"
+#: sysdeps/generic/siglist.h:44 sysdeps/unix/siglist.c:44
+msgid "Stopped"
+msgstr "Leállítva"
-#: locale/programs/linereader.c:388
-msgid "garbage at end of character code specification"
-msgstr "szemét a karakter kód meghatározás végén"
+#: sysdeps/generic/siglist.h:45 sysdeps/unix/siglist.c:45
+msgid "Continued"
+msgstr "Folytatva"
-#: locale/programs/linereader.c:276
-msgid "garbage at end of number"
-msgstr "szemét a számok végén"
+#: sysdeps/generic/siglist.h:46 sysdeps/unix/siglist.c:46
+msgid "Child exited"
+msgstr "Gyerekfolyamat kilépett"
-#: elf/sprof.c:77
-msgid "generate call graph"
-msgstr "hívási grafikon létrehozása"
+#: sysdeps/generic/siglist.h:47 sysdeps/unix/siglist.c:47
+msgid "Stopped (tty input)"
+msgstr "Leállítva (tty bemenet)"
-#: elf/sprof.c:76
-msgid "generate flat profile with counts and ticks"
-msgstr "profil generálása számlálóval és ismétlõdésekkel"
+#: sysdeps/generic/siglist.h:48 sysdeps/unix/siglist.c:48
+msgid "Stopped (tty output)"
+msgstr "Leállítva (tty kimenet)"
-#: sunrpc/get_myaddr.c:78
-msgid "get_myaddress: ioctl (get interface configuration)"
-msgstr "get_myaddress: ioctl (interfész beállítások lékérdezése)"
+#: sysdeps/generic/siglist.h:49 sysdeps/unix/siglist.c:49
+msgid "I/O possible"
+msgstr "I/O lehetséges"
-#: nss/getent.c:702
-msgid "getent - get entries from administrative database."
-msgstr "getent - bejegyzések lekérése az adminisztrációs adatbázisból"
+#: sysdeps/generic/siglist.h:50 sysdeps/unix/siglist.c:50
+msgid "CPU time limit exceeded"
+msgstr "CPU-időkorlát túllépve"
-#: nscd/connections.c:221
-#, c-format
-msgid "handle_request: request received (Version = %d)"
-msgstr "handle_request: kérés elfogadva (Verzió = %d)"
+#: sysdeps/generic/siglist.h:51 sysdeps/unix/siglist.c:51
+msgid "File size limit exceeded"
+msgstr "Fájlméretkorlát túllépve"
-#: timezone/zic.c:643
-msgid "hard link failed, symbolic link used"
-msgstr "közvetlen hivatkozás nem sikerült, helyette szimbolikus hivatkozást használok"
+#: sysdeps/generic/siglist.h:52 sysdeps/unix/siglist.c:52
+msgid "Virtual timer expired"
+msgstr "Virtuális időzítés lejárt"
-#: inet/rcmd.c:518
-msgid "hard linked somewhere"
-msgstr "közvetlen hivatkozás valahonnan"
+#: sysdeps/generic/siglist.h:53 sysdeps/unix/siglist.c:53
+msgid "Profiling timer expired"
+msgstr "A profilozási időzítő lejárt"
-#: locale/programs/charmap.c:986 locale/programs/repertoire.c:430
-msgid "hexadecimal range format should use only capital characters"
-msgstr "a 16-os számrendszerbeli értéleket kérem nagy betûkkel megadni"
+#: sysdeps/generic/siglist.h:54 sysdeps/unix/siglist.c:54
+msgid "Window changed"
+msgstr "Ablakméret változott"
-#: timezone/zic.c:1193
-msgid "illegal CORRECTION field on Leap line"
-msgstr "érvénytelen MÓDOSÍTÁS az eltolás sor mezejében"
+#: sysdeps/generic/siglist.h:55 sysdeps/unix/siglist.c:56
+msgid "User defined signal 1"
+msgstr "Felhasználói 1-es szignál"
-#: timezone/zic.c:1197
-msgid "illegal Rolling/Stationary field on Leap line"
-msgstr "érvénytelen csúszó/álló mezõ az eltolás sorban"
+#: sysdeps/generic/siglist.h:56 sysdeps/unix/siglist.c:57
+msgid "User defined signal 2"
+msgstr "Felhasználói 2-es szignál"
-#: sunrpc/rpc_scan.c:312
-msgid "illegal character in file: "
-msgstr "érvénytelen karakter a fájlban: "
+#: sysdeps/generic/siglist.h:60 sysdeps/unix/siglist.c:33
+msgid "EMT trap"
+msgstr "EMT csapda"
-#: locale/programs/linereader.c:600
-msgid "illegal escape sequence at end of string"
-msgstr "érvénytelen eszkép sorozat a szöveg végén"
+#: sysdeps/generic/siglist.h:63 sysdeps/unix/siglist.c:38
+msgid "Bad system call"
+msgstr "Hibás rendszerhívás"
-#: iconv/iconv_charmap.c:443
-#, c-format
-msgid "illegal input sequence at position %Zd"
-msgstr "érévnytelen bemeneti sorozat a %Zd pozíción"
+#: sysdeps/generic/siglist.h:66
+msgid "Stack fault"
+msgstr "Veremhiba"
-#: iconv/iconv_prog.c:469
-#, c-format
-msgid "illegal input sequence at position %ld"
-msgstr "érévnytelen bemeneti sorozat a %ld pozíción"
+#: sysdeps/generic/siglist.h:69
+msgid "Information request"
+msgstr "Információkérés"
-#: sunrpc/rpc_main.c:463
-#, c-format
-msgid "illegal nettype :`%s'\n"
-msgstr "érvénytelen hálótípus: '%s' \n"
+#: sysdeps/generic/siglist.h:71
+msgid "Power failure"
+msgstr "Tápfeszültség-kimaradás"
-#: catgets/gencat.c:403 catgets/gencat.c:480
-msgid "illegal set number"
-msgstr "érvénytelen érték"
+#: sysdeps/generic/siglist.h:74 sysdeps/unix/siglist.c:55
+msgid "Resource lost"
+msgstr "Erőforrás elveszítve"
-#: locale/programs/ld-ctype.c:1229
-#, c-format
-msgid "implementation limit: no more than %Zd character classes allowed"
-msgstr "végrehajtási határ: nem lehet %Zd karakternél többet engedélyezni ebben az osztályban"
+#. TRANS Operation not permitted; only the owner of the file (or other resource)
+#. TRANS or processes with special privileges can perform the operation.
+#: sysdeps/gnu/errlist.c:25
+msgid "Operation not permitted"
+msgstr "A művelet nem engedélyezett"
-#: locale/programs/ld-ctype.c:1261
-#, c-format
-msgid "implementation limit: no more than %d character maps allowed"
-msgstr "végrehajtási határ: nem lehet %d karakter készletnél többet engedélyezni ebben az osztályban"
+#. TRANS No process matches the specified process ID.
+#: sysdeps/gnu/errlist.c:45
+msgid "No such process"
+msgstr "Nincs ilyen folyamat"
-#: iconv/iconv_charmap.c:462 iconv/iconv_prog.c:473
-msgid "incomplete character or shift sequence at end of buffer"
-msgstr "nem teljes karakter vagy túl ér puffer végén"
+#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
+#. TRANS completion of the call. When this happens, you should try the call
+#. TRANS again.
+#. TRANS
+#. TRANS You can choose to have functions resume after a signal that is handled,
+#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted
+#. TRANS Primitives}.
+#: sysdeps/gnu/errlist.c:60
+msgid "Interrupted system call"
+msgstr "Félbeszakított rendszerhívás"
-#: timezone/zic.c:856
-msgid "input line of unknown type"
-msgstr "a bemeneti sor típusa ismeretlen"
+#. TRANS Input/output error; usually used for physical read or write errors.
+#: sysdeps/gnu/errlist.c:69
+msgid "Input/output error"
+msgstr "Kimeneti/bemeneti hiba"
-#: elf/dl-load.c:1294
-msgid "internal error"
-msgstr "belsõ hiba"
+#. TRANS No such device or address. The system tried to use the device
+#. TRANS represented by a file you specified, and it couldn't find the device.
+#. TRANS This can mean that the device file was installed incorrectly, or that
+#. TRANS the physical device is missing or not correctly attached to the
+#. TRANS computer.
+#: sysdeps/gnu/errlist.c:82
+msgid "No such device or address"
+msgstr "Nem létező eszköz vagy cím"
-#: iconv/iconv_prog.c:477
-msgid "internal error (illegal descriptor)"
-msgstr "belsõ hiba (érvénytelen leíró)"
+#. TRANS Argument list too long; used when the arguments passed to a new program
+#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
+#. TRANS File}) occupy too much memory space. This condition never arises in the
+#. TRANS GNU system.
+#: sysdeps/gnu/errlist.c:94
+msgid "Argument list too long"
+msgstr "Túl hosszú argumentumlista"
-#: timezone/zic.c:1819
-msgid "internal error - addtype called with bad isdst"
-msgstr "belsõ hiba - az 'addtype' hibás 'isdst'-vel lett meghívva"
+#. TRANS Invalid executable file format. This condition is detected by the
+#. TRANS @code{exec} functions; see @ref{Executing a File}.
+#: sysdeps/gnu/errlist.c:104
+msgid "Exec format error"
+msgstr "Érvénytelen végrehajtható fájlformátum"
-#: timezone/zic.c:1827
-msgid "internal error - addtype called with bad ttisgmt"
-msgstr "belsõ hiba - az 'addtype' hibás 'ttisgmt'-vel lett meghívva"
+#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
+#. TRANS closed or reading from a descriptor open only for writing (or vice
+#. TRANS versa).
+#: sysdeps/gnu/errlist.c:115
+msgid "Bad file descriptor"
+msgstr "Hibás fájlleíró"
-#: timezone/zic.c:1823
-msgid "internal error - addtype called with bad ttisstd"
-msgstr "belsõ hiba - az 'addtype' hibás 'ttistd'-vel lett meghívva"
+#. TRANS There are no child processes. This error happens on operations that are
+#. TRANS supposed to manipulate child processes, when there aren't any processes
+#. TRANS to manipulate.
+#: sysdeps/gnu/errlist.c:126
+msgid "No child processes"
+msgstr "Nincs gyerek folyamat"
-#: locale/programs/ld-ctype.c:488 locale/programs/ld-ctype.c:544
-#, c-format
-msgid "internal error in %s, line %u"
-msgstr "belsõ hiba a '%s' '%u' sorában"
+#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
+#. TRANS deadlock situation. The system does not guarantee that it will notice
+#. TRANS all such situations. This error means you got lucky and the system
+#. TRANS noticed; it might just hang. @xref{File Locks}, for an example.
+#: sysdeps/gnu/errlist.c:138
+msgid "Resource deadlock avoided"
+msgstr "Erőforrás-holtpont elkerülve"
-#: elf/dl-load.c:1267
-msgid "invalid ELF header"
-msgstr "érvénytelen ELF fejléc"
+#. TRANS No memory available. The system cannot allocate more virtual memory
+#. TRANS because its capacity is full.
+#: sysdeps/gnu/errlist.c:148
+msgid "Cannot allocate memory"
+msgstr "Nem foglalható memória"
-#: timezone/zic.c:1065
-msgid "invalid UTC offset"
-msgstr "érvénytelen UTC eltolás"
+#. TRANS Bad address; an invalid pointer was detected.
+#. TRANS In the GNU system, this error never happens; you get a signal instead.
+#: sysdeps/gnu/errlist.c:167
+msgid "Bad address"
+msgstr "Hibás cím"
-#: timezone/zic.c:1068
-msgid "invalid abbreviation format"
-msgstr "érvénytelen rövidítési forma"
+#. TRANS A file that isn't a block special file was given in a situation that
+#. TRANS requires one. For example, trying to mount an ordinary file as a file
+#. TRANS system in Unix gives this error.
+#: sysdeps/gnu/errlist.c:178
+msgid "Block device required"
+msgstr "Blokk eszközre van szükség"
-#: catgets/gencat.c:688
-msgid "invalid character: message ignored"
-msgstr "érvénytelen karakter: üzenet érvénytelen"
+#. TRANS Resource busy; a system resource that can't be shared is already in use.
+#. TRANS For example, if you try to delete a file that is the root of a currently
+#. TRANS mounted filesystem, you get this error.
+#: sysdeps/gnu/errlist.c:189
+msgid "Device or resource busy"
+msgstr "Az eszköz vagy erőforrás foglalt"
-#: timezone/zic.c:1158 timezone/zic.c:1370 timezone/zic.c:1384
-msgid "invalid day of month"
-msgstr "érvénytelen napja a hónapnak"
+#. TRANS File exists; an existing file was specified in a context where it only
+#. TRANS makes sense to specify a new file.
+#: sysdeps/gnu/errlist.c:199
+msgid "File exists"
+msgstr "A fájl már létezik"
-#: locale/programs/charmap.c:352
-msgid "invalid definition"
-msgstr "érvénytelen megahatározás"
+#. TRANS An attempt to make an improper link across file systems was detected.
+#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
+#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
+#: sysdeps/gnu/errlist.c:210
+msgid "Invalid cross-device link"
+msgstr "Érvénytelen eszközközi link"
-#: locale/programs/charmap.c:547
-msgid "invalid encoding given"
-msgstr "érvénytelen kódolást adott meg"
+#. TRANS The wrong type of device was given to a function that expects a
+#. TRANS particular sort of device.
+#: sysdeps/gnu/errlist.c:220
+msgid "No such device"
+msgstr "Nincs ilyen eszköz"
-#: timezone/zic.c:1322
-msgid "invalid ending year"
-msgstr "érvénytelen év végzõdés"
+#. TRANS A file that isn't a directory was specified when a directory is required.
+#: sysdeps/gnu/errlist.c:229
+msgid "Not a directory"
+msgstr "Nem könyvtár"
-#: catgets/gencat.c:1152 locale/programs/linereader.c:538
-msgid "invalid escape sequence"
-msgstr "érvénytelen eszkép sorozat"
+#. TRANS File is a directory; you cannot open a directory for writing,
+#. TRANS or create or remove hard links to it.
+#: sysdeps/gnu/errlist.c:239
+msgid "Is a directory"
+msgstr "Ez egy könyvtár"
-#: timezone/zic.c:1130
-msgid "invalid leaping year"
-msgstr "érvénytelen év eltolás"
+#. TRANS Invalid argument. This is used to indicate various kinds of problems
+#. TRANS with passing the wrong argument to a library function.
+#: sysdeps/gnu/errlist.c:249
+msgid "Invalid argument"
+msgstr "Érvénytelen argumentum"
-#: catgets/gencat.c:731
-msgid "invalid line"
-msgstr "érvénytelen sor"
+#. TRANS The current process has too many files open and can't open any more.
+#. TRANS Duplicate descriptors do count toward this limit.
+#. TRANS
+#. TRANS In BSD and GNU, the number of open files is controlled by a resource
+#. TRANS limit that can usually be increased. If you get this error, you might
+#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
+#. TRANS @pxref{Limits on Resources}.
+#: sysdeps/gnu/errlist.c:264
+msgid "Too many open files"
+msgstr "Túl sok nyitott fájl"
-#: elf/dl-open.c:349
-msgid "invalid mode for dlopen()"
-msgstr "érvénytelen a dlopen() módja"
+#. TRANS There are too many distinct file openings in the entire system. Note
+#. TRANS that any number of linked channels count as just one file opening; see
+#. TRANS @ref{Linked Channels}. This error never occurs in the GNU system.
+#: sysdeps/gnu/errlist.c:275
+msgid "Too many open files in system"
+msgstr "Túl sok nyitott fájl a rendszerben"
-#: timezone/zic.c:1145 timezone/zic.c:1248
-msgid "invalid month name"
-msgstr "érvénytelen hónap név"
+#. TRANS Inappropriate I/O control operation, such as trying to set terminal
+#. TRANS modes on an ordinary file.
+#: sysdeps/gnu/errlist.c:285
+msgid "Inappropriate ioctl for device"
+msgstr "Helytelen ioctl hívás az eszköznek"
-#: locale/programs/charmap.c:974 locale/programs/ld-collate.c:2888
-#: locale/programs/repertoire.c:418
-msgid "invalid names for character range"
-msgstr "a karakter tartomány neve érvénytelen "
+#. TRANS An attempt to execute a file that is currently open for writing, or
+#. TRANS write to a file that is currently being executed. Often using a
+#. TRANS debugger to run a program is considered having it open for writing and
+#. TRANS will cause this error. (The name stands for ``text file busy''.) This
+#. TRANS is not an error in the GNU system; the text is copied as necessary.
+#: sysdeps/gnu/errlist.c:298
+msgid "Text file busy"
+msgstr "A szövegfájl foglalt"
-#: debug/pcprofiledump.c:166
-msgid "invalid pointer size"
-msgstr "érvénytelen mutató méret"
+#. TRANS File too big; the size of a file would be larger than allowed by the system.
+#: sysdeps/gnu/errlist.c:307
+msgid "File too large"
+msgstr "A fájl túl nagy"
-#: catgets/gencat.c:549
-msgid "invalid quote character"
-msgstr "érvénytelen egyszeres idézõjel"
+#. TRANS No space left on device; write operation on a file failed because the
+#. TRANS disk is full.
+#: sysdeps/gnu/errlist.c:317
+msgid "No space left on device"
+msgstr "Nincs több hely a lemezen"
-#: timezone/zic.c:964
-msgid "invalid saved time"
-msgstr "érvénytelen mentési idõpont"
+#. TRANS Invalid seek operation (such as on a pipe).
+#: sysdeps/gnu/errlist.c:326
+msgid "Illegal seek"
+msgstr "Érvénytelen fájlpozicionálás"
-#: timezone/zic.c:1297
-msgid "invalid starting year"
-msgstr "érvénytelen induló év"
+#. TRANS An attempt was made to modify something on a read-only file system.
+#: sysdeps/gnu/errlist.c:335
+msgid "Read-only file system"
+msgstr "Ãrásvédett fájlrendszer"
-#: timezone/zic.c:1174 timezone/zic.c:1277
-msgid "invalid time of day"
-msgstr "érvénytelen idõ"
+#. TRANS Too many links; the link count of a single file would become too large.
+#. TRANS @code{rename} can cause this error if the file being renamed already has
+#. TRANS as many links as it can take (@pxref{Renaming Files}).
+#: sysdeps/gnu/errlist.c:346
+msgid "Too many links"
+msgstr "Túl sok link"
-#: timezone/zic.c:1375
-msgid "invalid weekday name"
-msgstr "érvénytelen hétköznap név"
+#. TRANS Domain error; used by mathematical functions when an argument value does
+#. TRANS not fall into the domain over which the function is defined.
+#: sysdeps/gnu/errlist.c:369
+msgid "Numerical argument out of domain"
+msgstr "A numerikus paraméter kívül esik a tartományon"
-#: nscd/connections.c:479
-#, c-format
-msgid "key length in request too long: %d"
-msgstr "kulcs hosszúság kérésben túl hosszú: %d"
+#. TRANS Range error; used by mathematical functions when the result value is
+#. TRANS not representable because of overflow or underflow.
+#: sysdeps/gnu/errlist.c:379
+msgid "Numerical result out of range"
+msgstr "A numerikus eredmény kívül esik a tartományon"
-#: elf/ldconfig.c:794
-#, c-format
-msgid "libc4 library %s in wrong directory"
-msgstr "a '%s' libc4 (programozói) könyvtár rossz"
+#. TRANS Resource temporarily unavailable; the call might work if you try again
+#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
+#. TRANS they are always the same in the GNU C library.
+#. TRANS
+#. TRANS This error can happen in a few different situations:
+#. TRANS
+#. TRANS @itemize @bullet
+#. TRANS @item
+#. TRANS An operation that would block was attempted on an object that has
+#. TRANS non-blocking mode selected. Trying the same operation again will block
+#. TRANS until some external condition makes it possible to read, write, or
+#. TRANS connect (whatever the operation). You can use @code{select} to find out
+#. TRANS when the operation will be possible; @pxref{Waiting for I/O}.
+#. TRANS
+#. TRANS @strong{Portability Note:} In many older Unix systems, this condition
+#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code
+#. TRANS different from @code{EAGAIN}. To make your program portable, you should
+#. TRANS check for both codes and treat them the same.
+#. TRANS
+#. TRANS @item
+#. TRANS A temporary resource shortage made an operation impossible. @code{fork}
+#. TRANS can return this error. It indicates that the shortage is expected to
+#. TRANS pass, so your program can try the call again later and it may succeed.
+#. TRANS It is probably a good idea to delay for a few seconds before trying it
+#. TRANS again, to allow time for other processes to release scarce resources.
+#. TRANS Such shortages are usually fairly serious and affect the whole system,
+#. TRANS so usually an interactive program should report the error to the user
+#. TRANS and return to its command loop.
+#. TRANS @end itemize
+#: sysdeps/gnu/errlist.c:416
+msgid "Resource temporarily unavailable"
+msgstr "Erőforrás átmenetileg nem érhető el"
-#: elf/ldconfig.c:788
-#, c-format
-msgid "libc5 library %s in wrong directory"
-msgstr "a '%s' libc5 (programozói) könyvtár rossz"
+#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
+#. TRANS The values are always the same, on every operating system.
+#. TRANS
+#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
+#. TRANS separate error code.
+#: sysdeps/gnu/errlist.c:429
+msgid "Operation would block"
+msgstr "A művelet blokkoló lenne"
-#: elf/ldconfig.c:791
-#, c-format
-msgid "libc6 library %s in wrong directory"
-msgstr "a '%s' libc6 (programozói) könyvtár rossz"
+#. TRANS An operation that cannot complete immediately was initiated on an object
+#. TRANS that has non-blocking mode selected. Some functions that must always
+#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return
+#. TRANS @code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that
+#. TRANS the operation has begun and will take some time. Attempts to manipulate
+#. TRANS the object before the call completes return @code{EALREADY}. You can
+#. TRANS use the @code{select} function to find out when the pending operation
+#. TRANS has completed; @pxref{Waiting for I/O}.
+#: sysdeps/gnu/errlist.c:445
+msgid "Operation now in progress"
+msgstr "A művelet folyamatban van"
-#: elf/ldconfig.c:821
-#, c-format
-msgid "libraries %s and %s in directory %s have same soname but different type."
-msgstr "a '%s' és a '%s' programkönyvtárak a '%s' könyvtárban azonosak, de a megosztott könyvtár nevei különbözõ típusúak."
+#. TRANS An operation is already in progress on an object that has non-blocking
+#. TRANS mode selected.
+#: sysdeps/gnu/errlist.c:455
+msgid "Operation already in progress"
+msgstr "A művelet már folyamatban"
-#: timezone/zic.c:836
-msgid "line too long"
-msgstr "a sor túl hosszú"
+#. TRANS A file that isn't a socket was specified when a socket is required.
+#: sysdeps/gnu/errlist.c:464
+msgid "Socket operation on non-socket"
+msgstr "Foglalatművelet egy nem foglalat elemen"
-#: iconv/iconv_prog.c:63
-msgid "list all known coded character sets"
-msgstr "lista az összes ismert karakter készletrõl"
+#. TRANS The size of a message sent on a socket was larger than the supported
+#. TRANS maximum size.
+#: sysdeps/gnu/errlist.c:474
+msgid "Message too long"
+msgstr "Az üzenet túl hosszú"
-#: locale/programs/locfile.h:63
-msgid "locale name should consist only of portable characters"
-msgstr "a hely neve csak hordozható karakterekbõl állhat"
+#. TRANS The socket type does not support the requested communications protocol.
+#: sysdeps/gnu/errlist.c:483
+msgid "Protocol wrong type for socket"
+msgstr "A protokoll típusa hibás a foglalathoz"
-#: inet/rcmd.c:503
-msgid "lstat failed"
-msgstr "lstat sikertelen"
+#. TRANS You specified a socket option that doesn't make sense for the
+#. TRANS particular protocol being used by the socket. @xref{Socket Options}.
+#: sysdeps/gnu/errlist.c:493
+msgid "Protocol not available"
+msgstr "A protokoll nem érhető el"
-#: malloc/memusagestat.c:59
-msgid "make output graphic VALUE pixel high"
-msgstr "ÉRTÉK képpont magasságú kimeneti grafika létrehozása"
+#. TRANS The socket domain does not support the requested communications protocol
+#. TRANS (perhaps because the requested protocol is completely invalid).
+#. TRANS @xref{Creating a Socket}.
+#: sysdeps/gnu/errlist.c:504
+msgid "Protocol not supported"
+msgstr "A protokoll nem támogatott"
-#: malloc/memusagestat.c:58
-msgid "make output graphic VALUE pixel wide"
-msgstr "ÉRTÉK képpont szélességû kimeneti grafika létrehozása"
+#. TRANS The socket type is not supported.
+#: sysdeps/gnu/errlist.c:513
+msgid "Socket type not supported"
+msgstr "A foglalattípus nem támogatott"
-#: stdlib/../sysdeps/unix/sysv/linux/ia64/makecontext.c:63
-msgid "makecontext: does not know how to handle more than 8 arguments\n"
-msgstr "makecontext: nem tudom, hogyan kell kezelni 8-nál több paramétert\n"
+#. TRANS The operation you requested is not supported. Some socket functions
+#. TRANS don't make sense for all types of sockets, and others may not be
+#. TRANS implemented for all communications protocols. In the GNU system, this
+#. TRANS error can happen for many calls when the object does not support the
+#. TRANS particular operation; it is a generic indication that the server knows
+#. TRANS nothing to do for that call.
+#: sysdeps/gnu/errlist.c:527
+msgid "Operation not supported"
+msgstr "A művelet nem támogatott"
-#: catgets/gencat.c:785
-msgid "malformed line ignored"
-msgstr "hibás sor érvénytelenítve"
+#. TRANS The socket communications protocol family you requested is not supported.
+#: sysdeps/gnu/errlist.c:536
+msgid "Protocol family not supported"
+msgstr "A protokollcsalád nem támogatott"
-#: elf/sprof.c:550
-msgid "mapping of section header string table failed"
-msgstr "a részleg fejléc szöveg tábla leképzése nem sikerült"
+#. TRANS The address family specified for a socket is not supported; it is
+#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}.
+#: sysdeps/gnu/errlist.c:546
+msgid "Address family not supported by protocol"
+msgstr "A protokoll nem támogatja a címcsaládot"
-#: elf/sprof.c:540
-msgid "mapping of section headers failed"
-msgstr "a részleg fejléc leképzése nem sikerült"
+#. TRANS The requested socket address is already in use. @xref{Socket Addresses}.
+#: sysdeps/gnu/errlist.c:555
+msgid "Address already in use"
+msgstr "A cím már használatban van"
-#: malloc/mcheck.c:296
-msgid "memory clobbered before allocated block\n"
-msgstr "memória ütközés a lefoglalt blokk elõtt\n"
+#. TRANS The requested socket address is not available; for example, you tried
+#. TRANS to give a socket a name that doesn't match the local host name.
+#. TRANS @xref{Socket Addresses}.
+#: sysdeps/gnu/errlist.c:566
+msgid "Cannot assign requested address"
+msgstr "Nem sikerült a kért címet hozzárendelni"
-#: malloc/mcheck.c:299
-msgid "memory clobbered past end of allocated block\n"
-msgstr "memória ütközés a lefoglalt blokk vége elõtt\n"
+#. TRANS A socket operation failed because the network was down.
+#: sysdeps/gnu/errlist.c:575
+msgid "Network is down"
+msgstr "A hálózat nem működik"
-#: locale/programs/xmalloc.c:70 malloc/obstack.c:489 malloc/obstack.c:493
-#: posix/getconf.c:996
-msgid "memory exhausted"
-msgstr "elfogyott a memória"
+#. TRANS A socket operation failed because the subnet containing the remote host
+#. TRANS was unreachable.
+#: sysdeps/gnu/errlist.c:585
+msgid "Network is unreachable"
+msgstr "A hálózat elérhetetlen"
-#: malloc/mcheck.c:293
-msgid "memory is consistent, library is buggy\n"
-msgstr "a memória jó, lehet hogy a (programozói) könyvtár hibás\n"
+#. TRANS A network connection was reset because the remote host crashed.
+#: sysdeps/gnu/errlist.c:594
+msgid "Network dropped connection on reset"
+msgstr "A hálózat eldobta a kapcsolatot visszaálláskor"
-#: elf/cache.c:143
-msgid "mmap of cache file failed.\n"
-msgstr "gyorstár fájl 'mmap'-elése sikertelen.\n"
+#. TRANS A network connection was aborted locally.
+#: sysdeps/gnu/errlist.c:603
+msgid "Software caused connection abort"
+msgstr "A szoftver kapcsolatszakadást okozott"
-#: elf/../sysdeps/generic/readelflib.c:110
-msgid "more than one dynamic segment\n"
-msgstr "több mint egy dinamikus szegmens\n"
+#. TRANS A network connection was closed for reasons outside the control of the
+#. TRANS local host, such as by the remote machine rebooting or an unrecoverable
+#. TRANS protocol violation.
+#: sysdeps/gnu/errlist.c:614
+msgid "Connection reset by peer"
+msgstr "A kapcsolatot bontotta a távoli fél"
-#: timezone/zic.c:959
-msgid "nameless rule"
-msgstr "névtelen szabály"
+#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this
+#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
+#. TRANS other from network operations.
+#: sysdeps/gnu/errlist.c:625
+msgid "No buffer space available"
+msgstr "Nem érhető el pufferterület"
-#: nis/nss_nisplus/nisplus-publickey.c:281
-#: nis/nss_nisplus/nisplus-publickey.c:287
-#: nis/nss_nisplus/nisplus-publickey.c:346
-#: nis/nss_nisplus/nisplus-publickey.c:355
-#, c-format
-msgid "netname2user: (nis+ lookup): %s\n"
-msgstr "netname2user: (nis+ lookup): %s\n"
+#. TRANS You tried to connect a socket that is already connected.
+#. TRANS @xref{Connecting}.
+#: sysdeps/gnu/errlist.c:635
+msgid "Transport endpoint is already connected"
+msgstr "A szállítási végpont már csatlakoztatva"
-#: nis/nss_nisplus/nisplus-publickey.c:300
-#, c-format
-msgid "netname2user: DES entry for %s in directory %s not unique"
-msgstr "netname2user: a DES bejegyzés a '%s' könyvtárban nem egyezik a '%s' -el"
+#. TRANS The socket is not connected to anything. You get this error when you
+#. TRANS try to transmit data over a socket, without first specifying a
+#. TRANS destination for the data. For a connectionless socket (for datagram
+#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
+#: sysdeps/gnu/errlist.c:647
+msgid "Transport endpoint is not connected"
+msgstr "A szállítási végpont nincs csatlakoztatva"
-#: nis/nss_nisplus/nisplus-publickey.c:368
-#, c-format
-msgid "netname2user: LOCAL entry for %s in directory %s not unique"
-msgstr "netname2user: a LOCAL bejegyzés a '%s' könyvtárban nem egyezik a '%s' -el"
+#. TRANS No default destination address was set for the socket. You get this
+#. TRANS error when you try to transmit data over a connectionless socket,
+#. TRANS without first specifying a destination for the data with @code{connect}.
+#: sysdeps/gnu/errlist.c:658
+msgid "Destination address required"
+msgstr "Célcím szükséges"
-#: nis/nss_nisplus/nisplus-publickey.c:207
-#, c-format
-msgid "netname2user: missing group id list in `%s'."
-msgstr "netname2user: hiányzó csoport lista azonsító a '%s'-ben."
+#. TRANS The socket has already been shut down.
+#: sysdeps/gnu/errlist.c:667
+msgid "Cannot send after transport endpoint shutdown"
+msgstr "Nem lehet küldeni a szállítási végpont leállása után"
-#: nis/nss_nisplus/nisplus-publickey.c:318
-#, c-format
-msgid "netname2user: principal name `%s' too long"
-msgstr "netname2user: a '%s' legelsõ név túl hosszú"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:676
+msgid "Too many references: cannot splice"
+msgstr "Túl sok hivatkozás: nem lehet csatlakoztatni"
-#: nis/nss_nisplus/nisplus-publickey.c:375
-msgid "netname2user: should not have uid 0"
-msgstr "netname2user: javaslom a felhasználói azonsítóját változtassa meg 0-ról"
+#. TRANS A socket operation with a specified timeout received no response during
+#. TRANS the timeout period.
+#: sysdeps/gnu/errlist.c:686
+msgid "Connection timed out"
+msgstr "Időtúllépés a kapcsolatban"
-#: sunrpc/svc_simple.c:183
-#, c-format
-msgid "never registered prog %d\n"
-msgstr "sehol nem bejegyzett program %d\n"
+#. TRANS A remote host refused to allow the network connection (typically because
+#. TRANS it is not running the requested service).
+#: sysdeps/gnu/errlist.c:696
+msgid "Connection refused"
+msgstr "Kapcsolat elutasítva"
-#: locale/programs/repertoire.c:272
-msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
-msgstr "nem <Uxxxx> vagy <Uxxxxxxxx> értéket adott meg"
+#. TRANS Too many levels of symbolic links were encountered in looking up a file name.
+#. TRANS This often indicates a cycle of symbolic links.
+#: sysdeps/gnu/errlist.c:706
+msgid "Too many levels of symbolic links"
+msgstr "Túl sok szimbolikus link"
-#: timezone/zic.c:2148
-msgid "no day in month matches rule"
-msgstr "nincs olyan nap a hónapban ami illeszkedik erre a szabályra"
+#. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for
+#. TRANS Files}) or host name too long (in @code{gethostname} or
+#. TRANS @code{sethostname}; @pxref{Host Identification}).
+#: sysdeps/gnu/errlist.c:717
+msgid "File name too long"
+msgstr "Túl hosszú fájlnév"
-#: locale/programs/ld-collate.c:1770
-msgid "no definition of `UNDEFINED'"
-msgstr "nincs meghatározása az `UNDEFINED'-nek"
+#. TRANS The remote host for a requested network connection is down.
+#: sysdeps/gnu/errlist.c:726
+msgid "Host is down"
+msgstr "A gép nem működik"
-#: elf/sprof.c:272
-#, c-format
-msgid "no filename for profiling data given and shared object `%s' has no soname"
-msgstr "nincs fájlnév megadva a profil adatokhoz és a '%s' megosztott objektumnak nincs név adva"
+#. TRANS The remote host for a requested network connection is not reachable.
+#: sysdeps/gnu/errlist.c:735
+msgid "No route to host"
+msgstr "Nincs útvonal a gép felé"
-#: locale/programs/ld-ctype.c:747
-msgid "no input digits defined and none of the standard names in the charmap"
-msgstr "nincs bemeneti szám meghatározva és nincs szabványos név a karakterkészletben"
+#. TRANS Directory not empty, where an empty directory was expected. Typically,
+#. TRANS this error occurs when you are trying to delete a directory.
+#: sysdeps/gnu/errlist.c:745
+msgid "Directory not empty"
+msgstr "A könyvtár nem üres"
-#: locale/programs/locfile.h:82
-msgid "no other keyword shall be specified when `copy' is used"
-msgstr "nem ajánlott másik kulcsszó használata amikor a 'copy'-t használja"
+#. TRANS This means that the per-user limit on new process would be exceeded by
+#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on
+#. TRANS the @code{RLIMIT_NPROC} limit.
+#: sysdeps/gnu/errlist.c:756
+msgid "Too many processes"
+msgstr "Túl sok folyamat"
-#: locale/programs/ld-ctype.c:3351
-msgid "no output digits defined and none of the standard names in the charmap"
-msgstr "nincs kimeneti szám meghatározva és nincs szabványos név a karakterkészletben"
+#. TRANS The file quota system is confused because there are too many users.
+#. TRANS @c This can probably happen in a GNU system when using NFS.
+#: sysdeps/gnu/errlist.c:766
+msgid "Too many users"
+msgstr "Túl sok felhasználó"
-#: iconv/iconvconfig.c:308 locale/programs/localedef.c:236
-msgid "no output file produced because warnings were issued"
-msgstr "nem jött létre kimeneti fájl, mert figyelmeztetést kaptam"
+#. TRANS The user's disk quota was exceeded.
+#: sysdeps/gnu/errlist.c:775
+msgid "Disk quota exceeded"
+msgstr "Lemezkvóta túllépve"
-#: locale/programs/charmap.c:493 locale/programs/charmap.c:673
-#: locale/programs/charmap.c:769 locale/programs/repertoire.c:231
-msgid "no symbolic name given"
-msgstr "nem adott meg szimbolikus nevet"
+#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS
+#. TRANS system which is due to file system rearrangements on the server host.
+#. TRANS Repairing this condition usually requires unmounting and remounting
+#. TRANS the NFS file system on the local host.
+#: sysdeps/gnu/errlist.c:787
+msgid "Stale NFS file handle"
+msgstr "Lejárt NFS fájlleíró"
-#: locale/programs/charmap.c:580 locale/programs/charmap.c:728
-#: locale/programs/charmap.c:811 locale/programs/repertoire.c:297
-msgid "no symbolic name given for end of range"
-msgstr "nem adott meg szimbolikus nevet a tartomány végének"
+#. TRANS An attempt was made to NFS-mount a remote file system with a file name that
+#. TRANS already specifies an NFS-mounted file.
+#. TRANS (This is an error on some operating systems, but we expect it to work
+#. TRANS properly on the GNU system, making this error code impossible.)
+#: sysdeps/gnu/errlist.c:799
+msgid "Object is remote"
+msgstr "Az objektum távoli"
-#: locale/programs/linereader.c:646
-msgid "non-symbolic character value should not be used"
-msgstr "nem szimbolikus karaktereket nem kéne használni"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:808
+msgid "RPC struct is bad"
+msgstr "Az RPC struct hibás"
-#: locale/programs/ld-ctype.c:812
-msgid "not all characters used in `outdigit' are available in the charmap"
-msgstr "nem érhetõk el az 'outdigit' -ben használt karakterek a karakter készletben"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:817
+msgid "RPC version wrong"
+msgstr "Az RPC verzió rossz"
-#: locale/programs/ld-ctype.c:829
-msgid "not all characters used in `outdigit' are available in the repertoire"
-msgstr "nem érhetõk el az 'outdigit' -ben használt karakterek a repertoárban"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:826
+msgid "RPC program not available"
+msgstr "Az RPC program nem érhető el"
-#: inet/rcmd.c:505
-msgid "not regular file"
-msgstr "nem reguláris fájl"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:835
+msgid "RPC program version wrong"
+msgstr "Az RPC program verziója rossz"
-#: nscd/nscd_stat.c:131
-#, c-format
-msgid ""
-"nscd configuration:\n"
-"\n"
-"%15d server debug level\n"
-msgstr ""
-"nscd beállítás:\n"
-"\n"
-"%15d kiszolgáló hibakeresési szintje\n"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:844
+msgid "RPC bad procedure for program"
+msgstr "Hibás RPC hívás a programhoz"
-#: nscd/nscd_stat.c:105
-msgid "nscd not running!\n"
-msgstr "az nscd nem fut\n"
+#. TRANS No locks available. This is used by the file locking facilities; see
+#. TRANS @ref{File Locks}. This error is never generated by the GNU system, but
+#. TRANS it can result from an operation to an NFS server running another
+#. TRANS operating system.
+#: sysdeps/gnu/errlist.c:856
+msgid "No locks available"
+msgstr "Nem érhetők el zárolások"
-#: elf/dl-load.c:1059
-msgid "object file has no dynamic section"
-msgstr "az objektum fájl nincs dinamikus szekcióban"
+#. TRANS Inappropriate file type or format. The file was the wrong type for the
+#. TRANS operation, or a data file had the wrong format.
+#. TRANS
+#. TRANS On some systems @code{chmod} returns this error if you try to set the
+#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
+#: sysdeps/gnu/errlist.c:869
+msgid "Inappropriate file type or format"
+msgstr "Helytelen fájltípus vagy -formátum"
-#: iconv/iconv_prog.c:65
-msgid "omit invalid characters from output"
-msgstr "az érvénytelen karaktereket figyelmen kívül hagyom"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:878
+msgid "Authentication error"
+msgstr "Hitelesítési hiba"
-#: elf/dl-load.c:1309
-msgid "only ET_DYN and ET_EXEC can be loaded"
-msgstr "csak a 'ET_DYN'-t és a 'ET_EXEC' lehet betölteni"
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:887
+msgid "Need authenticator"
+msgstr "Hitelesítő szükséges"
-#: locale/programs/charmap.c:637
-msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
-msgstr "csak a szélleség meghatározás engedélyezett a következõ 'CHARMAP'-nál"
+#. TRANS Function not implemented. This indicates that the function called is
+#. TRANS not implemented at all, either in the C library itself or in the
+#. TRANS operating system. When you get this error, you can be sure that this
+#. TRANS particular function will always fail with @code{ENOSYS} unless you
+#. TRANS install a new version of the C library or the operating system.
+#: sysdeps/gnu/errlist.c:900
+msgid "Function not implemented"
+msgstr "A függvény nincs megvalósítva"
-#: locale/programs/ld-collate.c:1018 locale/programs/ld-collate.c:1188
-#, c-format
-msgid "order for `%.*s' already defined at %s:%Zu"
-msgstr "a `%.*s' meg meg van határozva a '%s:%Zu'-nél"
+#. TRANS Not supported. A function returns this error when certain parameter
+#. TRANS values are valid, but the functionality they request is not available.
+#. TRANS This can mean that the function does not implement a particular command
+#. TRANS or option value or flag bit at all. For functions that operate on some
+#. TRANS object given in a parameter, such as a file descriptor or a port, it
+#. TRANS might instead mean that only @emph{that specific object} (file
+#. TRANS descriptor, port, etc.) is unable to support the other parameters given;
+#. TRANS different file descriptors might support different ranges of parameter
+#. TRANS values.
+#. TRANS
+#. TRANS If the entire function is not available at all in the implementation,
+#. TRANS it returns @code{ENOSYS} instead.
+#: sysdeps/gnu/errlist.c:920
+msgid "Not supported"
+msgstr "Nem támogatott"
-#: inet/ruserpass.c:170 inet/ruserpass.c:193
-msgid "out of memory"
-msgstr "elfogyott a memória"
+#. TRANS While decoding a multibyte character the function came along an invalid
+#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
+#: sysdeps/gnu/errlist.c:930
+msgid "Invalid or incomplete multibyte or wide character"
+msgstr "Érvénytelen vagy részleges több bájtos vagy széles karakter"
-#: iconv/iconv_prog.c:66
-msgid "output file"
-msgstr "kimeneti fájl"
+#. TRANS In the GNU system, servers supporting the @code{term} protocol return
+#. TRANS this error for certain operations when the caller is not in the
+#. TRANS foreground process group of the terminal. Users do not usually see this
+#. TRANS error because functions such as @code{read} and @code{write} translate
+#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control},
+#. TRANS for information on process groups and these signals.
+#: sysdeps/gnu/errlist.c:944
+msgid "Inappropriate operation for background process"
+msgstr "Nem megfelelő művelet a háttérfolyamathoz"
-#: posix/../sysdeps/generic/wordexp.c:1801
-msgid "parameter null or not set"
-msgstr "a paraméter üres vagy nincs megadva"
+#. TRANS In the GNU system, opening a file returns this error when the file is
+#. TRANS translated by a program and the translator program dies while starting
+#. TRANS up, before it has connected to the file.
+#: sysdeps/gnu/errlist.c:955
+msgid "Translator died"
+msgstr "A fordító meghalt"
-#: sunrpc/pm_getmaps.c:74
-msgid "pmap_getmaps rpc problem"
-msgstr "pmap_getmaps rpc probléma"
+#. TRANS The experienced user will know what is wrong.
+#. TRANS @c This error code is a joke. Its perror text is part of the joke.
+#. TRANS @c Don't change it.
+#: sysdeps/gnu/errlist.c:966
+msgid "?"
+msgstr "?"
-#: inet/rcmd.c:293
-msgid "poll: protocol failure in circuit setup\n"
-msgstr "poll: a protokoll hibás a körkörös beállításoknál\n"
+#. TRANS You did @strong{what}?
+#: sysdeps/gnu/errlist.c:975
+msgid "You really blew it this time"
+msgstr "Most tényleg eltolta"
-#: locale/programs/ld-ctype.c:1950 locale/programs/ld-ctype.c:2001
-msgid "premature end of `translit_ignore' definition"
-msgstr "idõ elõtt vége a `translit_ignore' meghatározásnak"
+#. TRANS Go home and have a glass of warm, dairy-fresh milk.
+#: sysdeps/gnu/errlist.c:984
+msgid "Computer bought the farm"
+msgstr "A számítógép fűbe harapott"
-#: sunrpc/rpc_scan.c:525 sunrpc/rpc_scan.c:535
-msgid "preprocessor error"
-msgstr "elõfeldolgozó hibája"
+#. TRANS This error code has no purpose.
+#: sysdeps/gnu/errlist.c:993
+msgid "Gratuitous error"
+msgstr "Fölösleges hiba"
-#: locale/programs/ld-ctype.c:2733
-msgid "previous definition was here"
-msgstr "az elõzõ meghatározás itt volt"
+#: sysdeps/gnu/errlist.c:1001
+msgid "Bad message"
+msgstr "Rossz üzenet"
-#: elf/sprof.c:74
-msgid "print list of count paths and their number of use"
-msgstr "kiírja az útvonalak listáját és a hozzájuk tartozó számokat"
+#: sysdeps/gnu/errlist.c:1009
+msgid "Identifier removed"
+msgstr "Azonosító eltávolítva"
-#: iconv/iconv_prog.c:68
-msgid "print progress information"
-msgstr "kiírja az elhaladás mértékének az adatait"
+#: sysdeps/gnu/errlist.c:1017
+msgid "Multihop attempted"
+msgstr "Kísérlet többszörös ugrásra"
-#: elf/sprof.c:687
-#, c-format
-msgid "profiling data file `%s' does not match shared object `%s'"
-msgstr "a '%s' profil adatfájl nem azonos a '%s' megosztott objektummal"
+#: sysdeps/gnu/errlist.c:1025
+msgid "No data available"
+msgstr "Nincs elérhető adat"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
-#, c-format
-msgid "program %lu is not available\n"
-msgstr "a %lu program nem áll rendelkezésre\n"
+#: sysdeps/gnu/errlist.c:1033
+msgid "Link has been severed"
+msgstr "A kapcsolat megsérült"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
-#, c-format
-msgid "program %lu version %lu is not available\n"
-msgstr "a %lu verziója %lu programnak nem áll rendelkezésre\n"
+#: sysdeps/gnu/errlist.c:1041
+msgid "No message of desired type"
+msgstr "Nem található a kívánt típusú üzenet"
-#: sunrpc/rpcinfo.c:515
-#, c-format
-msgid "program %lu version %lu ready and waiting\n"
-msgstr "a %lu verziója %lu program kész és várakozik\n"
+#: sysdeps/gnu/errlist.c:1049
+msgid "Out of streams resources"
+msgstr "Az adatfolyam erőforrásai elfogytak"
-#: inet/rcmd.c:354
-#, c-format
-msgid "rcmd: %s: short read"
-msgstr "rcmd: %s: rövid olvasás"
+#: sysdeps/gnu/errlist.c:1057
+msgid "Device not a stream"
+msgstr "Az eszköz nem adatfolyam"
-#: inet/rcmd.c:290
-#, c-format
-msgid "rcmd: poll (setting up stderr): %m\n"
-msgstr "rcmd: választás (stderr beállítása): %m\n"
+#: sysdeps/gnu/errlist.c:1065
+msgid "Value too large for defined data type"
+msgstr "Az érték túl nagy a megadott adattípushoz"
-#: inet/rcmd.c:172 inet/rcmd.c:175
-msgid "rcmd: socket: All ports in use\n"
-msgstr "rcmd: illesztõpont:Az összes port foglalt\n"
+#: sysdeps/gnu/errlist.c:1073
+msgid "Protocol error"
+msgstr "Protokollhiba"
-#: inet/rcmd.c:270
-#, c-format
-msgid "rcmd: write (setting up stderr): %m\n"
-msgstr "rcmd: írás (stderr beállítása): %m\n"
+#: sysdeps/gnu/errlist.c:1081
+msgid "Timer expired"
+msgstr "Időzítés lejárt"
-#: sunrpc/svc_simple.c:112
-msgid "registerrpc: out of memory\n"
-msgstr "registerrpc: elfogyott a memória\n"
+#. TRANS Operation canceled; an asynchronous operation was canceled before it
+#. TRANS completed. @xref{Asynchronous I/O}. When you call @code{aio_cancel},
+#. TRANS the normal result is for the operations affected to complete with this
+#. TRANS error; @pxref{Cancel AIO Operations}.
+#: sysdeps/gnu/errlist.c:1093
+msgid "Operation canceled"
+msgstr "Művelet megszakítva"
-#: timezone/zic.c:1880
-msgid "repeated leap second moment"
-msgstr "ismételt eltolás "
+#: sysdeps/gnu/errlist.c:1101
+msgid "Interrupted system call should be restarted"
+msgstr "A megszakított rendszerhívást újra kell indítani"
-#: locale/programs/repertoire.c:342
-#, c-format
-msgid "repertoire map file `%s' not found"
-msgstr "a '%s' repertoár kép fájlt nem találom"
+#: sysdeps/gnu/errlist.c:1109
+msgid "Channel number out of range"
+msgstr "A csatornaszám kívül esik a tartományon"
-#: locale/programs/charmap.c:1068
-msgid "resulting bytes for range not representable."
-msgstr "az eredmény bájtjai nem értékelhetõk."
+#: sysdeps/gnu/errlist.c:1117
+msgid "Level 2 not synchronized"
+msgstr "2. szint nincs szinkronizálva"
-#: sunrpc/rpc_main.c:1117
-msgid "rpcgen: arglist coding error\n"
-msgstr "rpcgen: paraméter lista kódolási hiba\n"
+#: sysdeps/gnu/errlist.c:1125
+msgid "Level 3 halted"
+msgstr "3. szint leállt"
-#: sunrpc/rpc_main.c:1105
-msgid "rpcgen: too many defines\n"
-msgstr "rpcgen: túl sok meghatározás\n"
+#: sysdeps/gnu/errlist.c:1133
+msgid "Level 3 reset"
+msgstr "3. szint újraindítása"
-#: sunrpc/rpcinfo.c:732
-#, c-format
-msgid "rpcinfo: %s is unknown host\n"
-msgstr "rpcinfo: a %s ismeretlen munkaállomás\n"
+#: sysdeps/gnu/errlist.c:1141
+msgid "Link number out of range"
+msgstr "Hivatkozás száma kívül esik a tartományon"
-#: sunrpc/rpcinfo.c:695
-#, c-format
-msgid "rpcinfo: %s is unknown service\n"
-msgstr "rpcinfo: a %s ismeretlen szolgáltatás\n"
+#: sysdeps/gnu/errlist.c:1149
+msgid "Protocol driver not attached"
+msgstr "A protokollmeghajtó nincs csatolva"
-#: sunrpc/rpcinfo.c:665
-#, c-format
-msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
-msgstr "rpcinfo: Nem lehet törölni a %s program %s verziójának a bejegyzését\n"
+#: sysdeps/gnu/errlist.c:1157
+msgid "No CSI structure available"
+msgstr "Nem érhető el CSI struktúra"
-#: sunrpc/rpcinfo.c:637
-#, c-format
-msgid "rpcinfo: broadcast failed: %s\n"
-msgstr "rpcinfo: csoportos adatküldés sikertelen: %s\n"
+#: sysdeps/gnu/errlist.c:1165
+msgid "Level 2 halted"
+msgstr "2. szint leállt"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
-msgid "rpcinfo: can't contact portmapper"
-msgstr "rpcinfo: nem lehet csatlakozni a portmapperhez"
+#: sysdeps/gnu/errlist.c:1173
+msgid "Invalid exchange"
+msgstr "Érvénytelen adatcsere"
-#: timezone/zic.c:749 timezone/zic.c:751
-msgid "same rule name in multiple files"
-msgstr "ugyanaz szabály név több fájlban is"
+#: sysdeps/gnu/errlist.c:1181
+msgid "Invalid request descriptor"
+msgstr "Érvénytelen kérésleíró"
-#: elf/dl-load.c:1104
-msgid "shared object cannot be dlopen()ed"
-msgstr "megosztott objektumot nem lehet megnyitni (dlopen)"
+#: sysdeps/gnu/errlist.c:1189
+msgid "Exchange full"
+msgstr "Az adatcsere megtelt"
-#: elf/dl-close.c:61
-msgid "shared object not open"
-msgstr "megosztott objektumot nem lehet megnyitni"
+#: sysdeps/gnu/errlist.c:1197
+msgid "No anode"
+msgstr "Nincs anode"
-#: nscd/connections.c:493
-#, c-format
-msgid "short read while reading request key: %s"
-msgstr "rövid olvasás a szükséges kulcs olvasása során: %s"
+#: sysdeps/gnu/errlist.c:1205
+msgid "Invalid request code"
+msgstr "Érvénytelen kéréskód"
-#: nscd/connections.c:443
-#, c-format
-msgid "short read while reading request: %s"
-msgstr "rövid olvasás a szükséges adatok olvasása során: %s"
+#: sysdeps/gnu/errlist.c:1213
+msgid "Invalid slot"
+msgstr "Érvénytelen hely"
-#: nscd/grpcache.c:193 nscd/hstcache.c:278 nscd/pwdcache.c:189
-#, c-format
-msgid "short write in %s: %s"
-msgstr "rövid írás a %s-ben: %s"
+#: sysdeps/gnu/errlist.c:1221
+msgid "File locking deadlock error"
+msgstr "Fájlzárolási holtponthiba"
-#: inet/rcmd.c:335
-msgid "socket: protocol failure in circuit setup\n"
-msgstr "illesztõpont:a protokoll hibás a körkörös beállításoknál\n"
+#: sysdeps/gnu/errlist.c:1229
+msgid "Bad font file format"
+msgstr "Hibás betűfájl-formátum"
-#: timezone/zic.c:820
-msgid "standard input"
-msgstr "szabványos bemenet"
+#: sysdeps/gnu/errlist.c:1237
+msgid "Machine is not on the network"
+msgstr "A gép nincs a hálózaton"
-#: locale/programs/ld-ctype.c:1681
-msgid "start and end character sequence of range must have the same length"
-msgstr "kezdet és vég karakter sorozat tartományának ugyanolyan hosszúnak kell lennie"
+#: sysdeps/gnu/errlist.c:1245
+msgid "Package not installed"
+msgstr "A csomag nincs telepítve"
-#: timezone/zic.c:1331
-msgid "starting year greater than ending year"
-msgstr "kezdeti év nagyobb mint a befejezési év"
+#: sysdeps/gnu/errlist.c:1253
+msgid "Advertise error"
+msgstr "Hirdetési hiba"
-#: timezone/zic.c:1303 timezone/zic.c:1328
-msgid "starting year too high to be represented"
-msgstr "kezdet év túl magas"
+#: sysdeps/gnu/errlist.c:1261
+msgid "Srmount error"
+msgstr "Srmount hiba"
-#: timezone/zic.c:1301 timezone/zic.c:1326
-msgid "starting year too low to be represented"
-msgstr "kezdet év túl kicsi"
+#: sysdeps/gnu/errlist.c:1269
+msgid "Communication error on send"
+msgstr "Kommunikációs hiba küldéskor"
-#: iconv/iconv_prog.c:67
-msgid "suppress warnings"
-msgstr "elfojtott figyelmeztetések"
+#: sysdeps/gnu/errlist.c:1277
+msgid "RFS specific error"
+msgstr "RFS-specifikus hiba"
-#: sunrpc/svc_run.c:76
-msgid "svc_run: - poll failed"
-msgstr "svc_run: - választás sikertelen"
+#: sysdeps/gnu/errlist.c:1285
+msgid "Name not unique on network"
+msgstr "A név nem egyértelmű a hálózaton"
-#: sunrpc/svc_tcp.c:171
-msgid "svc_tcp.c - cannot getsockname or listen"
-msgstr "svc_tcp.c - hibás a 'getsockname' vagy a 'listen'"
+#: sysdeps/gnu/errlist.c:1293
+msgid "File descriptor in bad state"
+msgstr "Hibás állapotú fájlleíró"
-#: sunrpc/svc_tcp.c:156
-msgid "svc_tcp.c - tcp socket creation problem"
-msgstr "svc_tcp.c - tcp gond van illesztõpont létrehozásával"
+#: sysdeps/gnu/errlist.c:1301
+msgid "Remote address changed"
+msgstr "Távoli cím megváltozott"
-#: sunrpc/svc_tcp.c:224 sunrpc/svc_tcp.c:227
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp: makefd_xprt: elfogyott a memória\n"
+#: sysdeps/gnu/errlist.c:1309
+msgid "Can not access a needed shared library"
+msgstr "Egy szükséges osztott programkönyvtár nem érhető el"
-#: sunrpc/svc_unix.c:150
-msgid "svc_unix.c - AF_UNIX socket creation problem"
-msgstr "svc_unix.c - AF_UNIX gond van illesztõpont létrehozásával"
+#: sysdeps/gnu/errlist.c:1317
+msgid "Accessing a corrupted shared library"
+msgstr "Sérült osztott programkönyvtár elérése"
-#: sunrpc/svc_unix.c:166
-msgid "svc_unix.c - cannot getsockname or listen"
-msgstr "svc_unix.c - hibás a 'getsockname' vagy a 'listen'"
+#: sysdeps/gnu/errlist.c:1325
+msgid ".lib section in a.out corrupted"
+msgstr "A .lib szakasz az a.out fájlban sérült"
-#: sunrpc/svc_unix.c:220 sunrpc/svc_unix.c:223
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix: makefd_xprt: elfogyott a memória\n"
+#: sysdeps/gnu/errlist.c:1333
+msgid "Attempting to link in too many shared libraries"
+msgstr "Kísérket túl sok osztott programkönyvtárban való linkelésre"
-#: sunrpc/svc_tcp.c:182 sunrpc/svc_tcp.c:185
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create: elfogyott a memória\n"
+#: sysdeps/gnu/errlist.c:1341
+msgid "Cannot exec a shared library directly"
+msgstr "Nem hajtható végre közvetlenül az osztott programkönyvtár"
-#: sunrpc/svc_udp.c:143
-msgid "svcudp_create - cannot getsockname"
-msgstr "svcudp_create - hibás a 'getsockname' "
+#: sysdeps/gnu/errlist.c:1349
+msgid "Streams pipe error"
+msgstr "Adatcsatorna-hiba az adatfolyamokban"
-#: sunrpc/svc_udp.c:155 sunrpc/svc_udp.c:158
-msgid "svcudp_create: out of memory\n"
-msgstr "svcudp_create: elfogyott a memória\n"
+#: sysdeps/gnu/errlist.c:1357
+msgid "Structure needs cleaning"
+msgstr "A struktúrát meg kell tisztítani"
-#: sunrpc/svc_udp.c:129
-msgid "svcudp_create: socket creation problem"
-msgstr "svcudp_create: gond van illesztõpont létrehozásával"
+#: sysdeps/gnu/errlist.c:1365
+msgid "Not a XENIX named type file"
+msgstr "Nem XENIX megnevezett típusú fájl"
-#: sunrpc/svc_udp.c:179 sunrpc/svc_udp.c:182
-msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
-msgstr "svcudp_create: az 'xp_pad' túl kicsi a 'IP_PKTINFO'-nak\n"
+#: sysdeps/gnu/errlist.c:1373
+msgid "No XENIX semaphores available"
+msgstr "Nem érhetők el XENIX szemaforok"
+
+#: sysdeps/gnu/errlist.c:1381
+msgid "Is a named type file"
+msgstr "Ez egy megnevezett típusú fájl"
+
+#: sysdeps/gnu/errlist.c:1389
+msgid "Remote I/O error"
+msgstr "Távoli ki-/bemeneti hiba"
+
+#: sysdeps/gnu/errlist.c:1397
+msgid "No medium found"
+msgstr "Nem található adathordozó"
-#: sunrpc/svc_unix.c:178 sunrpc/svc_unix.c:181
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create: elfogyott a memória\n"
+#: sysdeps/gnu/errlist.c:1405
+msgid "Wrong medium type"
+msgstr "Hibás adathordozó-típus"
+
+#: sysdeps/gnu/errlist.c:1413
+msgid "Required key not available"
+msgstr "A szükséges kulcs nem érhető el"
+
+#: sysdeps/gnu/errlist.c:1421
+msgid "Key has expired"
+msgstr "A kulcs lejárt"
+
+#: sysdeps/gnu/errlist.c:1429
+msgid "Key has been revoked"
+msgstr "A kulcsot visszavonták"
+
+#: sysdeps/gnu/errlist.c:1437
+msgid "Key was rejected by service"
+msgstr "A kulcsot a szolgáltatás elutasította"
+
+#: sysdeps/gnu/errlist.c:1445
+msgid "Owner died"
+msgstr "A tulajdonos meghalt"
+
+#: sysdeps/gnu/errlist.c:1453
+msgid "State not recoverable"
+msgstr "Az állapot nem állítható vissza"
+
+#: sysdeps/mach/_strerror.c:57
+msgid "Error in unknown error system: "
+msgstr "Hiba az ismeretlen hibarendszerben: "
-#: locale/programs/linereader.c:750
+#: sysdeps/posix/gai_strerror-strs.h:1
+msgid "Address family for hostname not supported"
+msgstr "A címcsalád a gépnévhez nem támogatott"
+
+#: sysdeps/posix/gai_strerror-strs.h:2
+msgid "Temporary failure in name resolution"
+msgstr "Ãtmeneti névfeloldási hiba"
+
+#: sysdeps/posix/gai_strerror-strs.h:3
+msgid "Bad value for ai_flags"
+msgstr "Az ai_flags értéke hibás"
+
+#: sysdeps/posix/gai_strerror-strs.h:4
+msgid "Non-recoverable failure in name resolution"
+msgstr "Helyreállíthatatlan névfeloldási hiba"
+
+#: sysdeps/posix/gai_strerror-strs.h:5
+msgid "ai_family not supported"
+msgstr "az ai_family nem támogatott"
+
+#: sysdeps/posix/gai_strerror-strs.h:6
+msgid "Memory allocation failure"
+msgstr "Memóriafoglalási hiba"
+
+#: sysdeps/posix/gai_strerror-strs.h:7
+msgid "No address associated with hostname"
+msgstr "Nincs cím társítva a gépnévhez"
+
+#: sysdeps/posix/gai_strerror-strs.h:8
+msgid "Name or service not known"
+msgstr "A név vagy a szolgáltatás nem ismert"
+
+#: sysdeps/posix/gai_strerror-strs.h:9
+msgid "Servname not supported for ai_socktype"
+msgstr "A Servname nem támogatott az ai_socktype-hoz"
+
+#: sysdeps/posix/gai_strerror-strs.h:10
+msgid "ai_socktype not supported"
+msgstr "az ai_socktype nem támogatott"
+
+#: sysdeps/posix/gai_strerror-strs.h:11
+msgid "System error"
+msgstr "Rendszerhiba"
+
+#: sysdeps/posix/gai_strerror-strs.h:12
+msgid "Processing request in progress"
+msgstr "Kérés feldolgozása folyamatban"
+
+#: sysdeps/posix/gai_strerror-strs.h:13
+msgid "Request canceled"
+msgstr "Kérés megszakítva"
+
+#: sysdeps/posix/gai_strerror-strs.h:14
+msgid "Request not canceled"
+msgstr "A kérés nem lett megszakítva"
+
+#: sysdeps/posix/gai_strerror-strs.h:15
+msgid "All requests done"
+msgstr "Minden kérés kész"
+
+#: sysdeps/posix/gai_strerror-strs.h:16
+msgid "Interrupted by a signal"
+msgstr "Egy szignál megszakította"
+
+#: sysdeps/posix/gai_strerror-strs.h:17
+msgid "Parameter string not correctly encoded"
+msgstr "A paraméter-karakterlánc kódolása nem megfelelő"
+
+#: sysdeps/unix/siglist.c:26
+msgid "Signal 0"
+msgstr "Szignál 0"
+
+#: sysdeps/unix/siglist.c:32
+msgid "IOT trap"
+msgstr "IOT csapda"
+
+#: sysdeps/unix/sysv/linux/i386/readelflib.c:49
#, c-format
-msgid "symbol `%.*s' not in charmap"
-msgstr "a `%.*s' jel nincs a karakterkészletben"
+msgid "%s is for unknown machine %d.\n"
+msgstr "%s az ismeretlen géphez tartozik: %d.\n"
-#: locale/programs/linereader.c:771
+#: sysdeps/unix/sysv/linux/ia64/makecontext.c:63
#, c-format
-msgid "symbol `%.*s' not in repertoire map"
-msgstr "a `%.*s' jel nincs a repertoárban"
+msgid "makecontext: does not know how to handle more than 8 arguments\n"
+msgstr "makecontext: 8-nál több paraméter nem kezelhető\n"
-#: locale/programs/ld-collate.c:1630 locale/programs/ld-collate.c:1729
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
#, c-format
-msgid "symbol `%s'"
-msgstr "jel '%s'"
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
+"Használat: lddlibc4 FÃJL\n"
+"\n"
-#: locale/programs/ld-collate.c:1627 locale/programs/ld-collate.c:1726
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
-msgid "symbol `%s' has the same encoding as"
-msgstr "a jel '%s' ugyanaz a kódolása mint"
+msgid "cannot open `%s'"
+msgstr "„%s†nem nyitható meg"
-#: locale/programs/ld-collate.c:1552
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
-msgid "symbol `%s' not defined"
-msgstr "jel '%s' nincs meghatározva"
+msgid "cannot read header from `%s'"
+msgstr ""
-#: locale/programs/ld-ctype.c:1956 locale/programs/ld-ctype.c:2007
-#: locale/programs/ld-ctype.c:2049
-msgid "syntax error"
-msgstr "szintaktikai hiba"
+#: timezone/zdump.c:210
+msgid "lacks alphabetic at start"
+msgstr ""
-#: locale/programs/charmap.c:492 locale/programs/charmap.c:546
-#: locale/programs/charmap.c:578 locale/programs/charmap.c:672
-#: locale/programs/charmap.c:727 locale/programs/charmap.c:768
-#: locale/programs/charmap.c:809
-#, c-format
-msgid "syntax error in %s definition: %s"
-msgstr "szintaktikai hiba a %s meghatározásban: %s"
+#: timezone/zdump.c:212
+msgid "has fewer than 3 alphabetics"
+msgstr ""
+
+#: timezone/zdump.c:214
+msgid "has more than 6 alphabetics"
+msgstr ""
-#: locale/programs/charmap.c:351 locale/programs/charmap.c:368
-#: locale/programs/repertoire.c:175
+#: timezone/zdump.c:222
+msgid "differs from POSIX standard"
+msgstr ""
+
+#: timezone/zdump.c:228
#, c-format
-msgid "syntax error in prolog: %s"
-msgstr "szintaktikai hiba a prologban: %s"
+msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
+msgstr ""
-#: locale/programs/repertoire.c:230 locale/programs/repertoire.c:271
-#: locale/programs/repertoire.c:296
+#: timezone/zdump.c:279
#, c-format
-msgid "syntax error in repertoire map definition: %s"
-msgstr "szintaktikai hiba repertoár meghatározásban: %s"
+msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
+msgstr ""
-#: locale/programs/locfile.c:245
-msgid "syntax error: not inside a locale definition section"
-msgstr "szintaktikai hiba:nincs a hely meghatározás szekcióban"
+#: timezone/zdump.c:296
+#, c-format
+msgid "%s: wild -c argument %s\n"
+msgstr ""
-#: catgets/gencat.c:432 catgets/gencat.c:605 catgets/gencat.c:634
-msgid "this is the first definition"
-msgstr "ez az elsõ meghatározás"
+#: timezone/zdump.c:387
+msgid "Error writing to standard output"
+msgstr ""
-#: timezone/zic.c:1163
-msgid "time before zero"
-msgstr "idõ 0 elõtt"
+#: timezone/zdump.c:410
+#, c-format
+msgid "%s: use of -v on system with floating time_t other than float or double\n"
+msgstr ""
-#: timezone/zic.c:1171 timezone/zic.c:2048 timezone/zic.c:2067
-msgid "time overflow"
-msgstr "idõ túlfutás"
+#: timezone/zic.c:388
+#, c-format
+msgid "%s: Memory exhausted: %s\n"
+msgstr ""
-#: locale/programs/ld-ctype.c:1554 locale/programs/ld-ctype.c:2030
+#: timezone/zic.c:434
#, c-format
-msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
-msgstr "a to-value <U%0*X> tartománya kisebb mint a from-value <U%0*X> tartománya"
+msgid "\"%s\", line %d: %s"
+msgstr ""
-#: locale/programs/ld-ctype.c:1688
-msgid "to-value character sequence is smaller than from-value sequence"
-msgstr "to-value karakter sorozat kisebb mint a from-value sorozaté"
+#: timezone/zic.c:437
+#, c-format
+msgid " (rule from \"%s\", line %d)"
+msgstr ""
-#: locale/programs/charmap.c:556
-msgid "too few bytes in character encoding"
-msgstr "túl kevés bájt a karakter kódólásban"
+#: timezone/zic.c:449
+msgid "warning: "
+msgstr ""
-#: locale/programs/charmap.c:558
-msgid "too many bytes in character encoding"
-msgstr "túl sor bájt a karakter kódólásban"
+#: timezone/zic.c:459
+#, c-format
+msgid ""
+"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
+"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
+msgstr ""
-#: timezone/zic.c:1874
-msgid "too many leap seconds"
-msgstr "túl sok eltolás"
+#: timezone/zic.c:494
+msgid "wild compilation-time specification of zic_t"
+msgstr ""
-#: timezone/zic.c:1846
-msgid "too many local time types"
-msgstr "túl sok helyi idõ típus"
+#: timezone/zic.c:511
+#, c-format
+msgid "%s: More than one -d option specified\n"
+msgstr ""
-#: timezone/zic.c:1800
-msgid "too many transitions?!"
-msgstr "túl sok átalakítás?!"
+#: timezone/zic.c:521
+#, c-format
+msgid "%s: More than one -l option specified\n"
+msgstr ""
-#: timezone/zic.c:2171
-msgid "too many, or too long, time zone abbreviations"
-msgstr "túl sok vagy túl hosszú idõ zóna rövidítés"
+#: timezone/zic.c:531
+#, c-format
+msgid "%s: More than one -p option specified\n"
+msgstr ""
-#: locale/programs/linereader.h:160
-msgid "trailing garbage at end of line"
-msgstr "szemét a sor végén"
+#: timezone/zic.c:541
+#, c-format
+msgid "%s: More than one -y option specified\n"
+msgstr ""
-#: sunrpc/svc_simple.c:175
+#: timezone/zic.c:551
#, c-format
-msgid "trouble replying to prog %d\n"
-msgstr "problémás a '%d' program lecserélése\n"
+msgid "%s: More than one -L option specified\n"
+msgstr ""
-#: timezone/zic.c:1338
-msgid "typed single year"
-msgstr "egyszeres év típus"
+#: timezone/zic.c:600
+msgid "link to link"
+msgstr ""
-#: iconv/iconv_charmap.c:524 iconv/iconv_prog.c:533
-msgid "unable to allocate buffer for input"
-msgstr "nem lehet lefoglalni puffert a bementnek"
+#: timezone/zic.c:665
+msgid "hard link failed, symbolic link used"
+msgstr ""
-#: nis/nis_callback.c:189
-msgid "unable to free arguments"
-msgstr "nem lehet felszabadítani az üres paramétereket"
+#: timezone/zic.c:673
+#, c-format
+msgid "%s: Can't link from %s to %s: %s\n"
+msgstr ""
-#: posix/getconf.c:968 posix/getconf.c:984
-msgid "undefined"
-msgstr "nem meghatározott"
+#: timezone/zic.c:745 timezone/zic.c:747
+msgid "same rule name in multiple files"
+msgstr ""
-#: elf/cache.c:69
-msgid "unknown"
-msgstr "ismeretlen"
+#: timezone/zic.c:788
+msgid "unruly zone"
+msgstr ""
-#: locale/programs/charmap.c:861 locale/programs/charmap.c:872
+#: timezone/zic.c:795
#, c-format
-msgid "unknown character `%s'"
-msgstr "ismeretlen karakter '%s'"
+msgid "%s in ruleless zone"
+msgstr ""
+
+#: timezone/zic.c:816
+msgid "standard input"
+msgstr "szabványos bemenet"
-#: catgets/gencat.c:562
+#: timezone/zic.c:821
#, c-format
-msgid "unknown directive `%s': line ignored"
-msgstr "ismeretlen irányelv '%s': a sor kihagyva"
+msgid "%s: Can't open %s: %s\n"
+msgstr ""
-#: iconv/iconv_prog.c:480
+#: timezone/zic.c:832
+#, fuzzy
+msgid "line too long"
+msgstr "a sor túl hosszú"
+
+#: timezone/zic.c:852
+msgid "input line of unknown type"
+msgstr ""
+
+#: timezone/zic.c:868
#, c-format
-msgid "unknown iconv() error %d"
-msgstr "ismeretlen iconv() hiba %d"
+msgid "%s: Leap line in non leap seconds file %s\n"
+msgstr ""
-#: catgets/gencat.c:508
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
-msgid "unknown set `%s'"
-msgstr "ismeretlen készlet '%s'"
+msgid "%s: panic: Invalid l_value %d\n"
+msgstr ""
-#: posix/getconf.c:941
+#: timezone/zic.c:883
#, c-format
-msgid "unknown specification \"%s\""
-msgstr "ismeretlen meghatározás \"%s\""
+msgid "%s: Error reading %s\n"
+msgstr ""
-#: timezone/zic.c:792
-msgid "unruly zone"
-msgstr "engedetlen zóna"
+#: timezone/zic.c:890
+#, c-format
+msgid "%s: Error closing %s: %s\n"
+msgstr ""
-#: catgets/gencat.c:1174
-msgid "unterminated message"
-msgstr "be nem fejezett üzenet"
+#: timezone/zic.c:895
+msgid "expected continuation line not found"
+msgstr ""
-#: locale/programs/linereader.c:604 locale/programs/linereader.c:789
-msgid "unterminated string"
-msgstr "be nem fejezett szöveg"
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
+msgid "time overflow"
+msgstr ""
-#: sunrpc/rpc_scan.c:351 sunrpc/rpc_scan.c:377
-msgid "unterminated string constant"
-msgstr "be nem szöveg"
+#: timezone/zic.c:943
+msgid "24:00 not handled by pre-1998 versions of zic"
+msgstr ""
-#: locale/programs/linereader.c:474
-msgid "unterminated symbolic name"
-msgstr "be nem fejezett szimbolikus név"
+#: timezone/zic.c:946
+msgid "values over 24 hours not handled by pre-2007 versions of zic"
+msgstr ""
-#: locale/programs/charmap.c:1010
-msgid "upper limit in range is not higher then lower limit"
-msgstr "felsõ határ tartomány nem lehet magasabb mint az alsó határ"
+#: timezone/zic.c:959
+msgid "wrong number of fields on Rule line"
+msgstr ""
-#: locale/programs/repertoire.c:455
-msgid "upper limit in range is not smaller then lower limit"
-msgstr "felsõ határ tartomány nem lehet alacsonyabb mint az alsó határ"
+#: timezone/zic.c:963
+msgid "nameless rule"
+msgstr ""
-#: sunrpc/rpc_main.c:1426
-#, c-format
-msgid "usage: %s infile\n"
-msgstr "használat: %s infile\n"
+#: timezone/zic.c:968
+msgid "invalid saved time"
+msgstr ""
-#: timezone/zic.c:2114
-msgid "use of 2/29 in non leap-year"
-msgstr "2/29 használata a nem eltolt évben"
+#: timezone/zic.c:989
+msgid "wrong number of fields on Zone line"
+msgstr ""
-#: locale/programs/charmap.c:645 locale/programs/charmap.c:708
+#: timezone/zic.c:995
#, c-format
-msgid "value for %s must be an integer"
-msgstr "a %s értékének egy egésznek kell lennie"
+msgid "\"Zone %s\" line and -l option are mutually exclusive"
+msgstr ""
-#: locale/programs/charmap.c:404
+#: timezone/zic.c:1003
#, c-format
-msgid "value for <%s> must be 1 or greater"
-msgstr "a <%s> értékének 1 vagy annak nagyobbnak kell lennie"
+msgid "\"Zone %s\" line and -p option are mutually exclusive"
+msgstr ""
-#: locale/programs/charmap.c:416
+#: timezone/zic.c:1015
#, c-format
-msgid "value of <%s> must be greater or equal than the value of <%s>"
-msgstr "a <%s> értékének nagyobbnak kell lennie mint a <%s> értéke"
+msgid "duplicate zone name %s (file \"%s\", line %d)"
+msgstr ""
-#: timezone/zic.c:439
-msgid "warning: "
-msgstr "figyelmeztetés:"
+#: timezone/zic.c:1031
+msgid "wrong number of fields on Zone continuation line"
+msgstr ""
-#: nscd/connections.c:432
-#, c-format
-msgid "while accepting connection: %s"
-msgstr "a csatlakozás alatt: %s"
+#: timezone/zic.c:1071
+msgid "invalid UTC offset"
+msgstr ""
-#: nscd/grpcache.c:150 nscd/hstcache.c:165 nscd/pwdcache.c:143
-msgid "while allocating cache entry"
-msgstr "a gyorstár lefoglalása alatt"
+#: timezone/zic.c:1074
+msgid "invalid abbreviation format"
+msgstr ""
-#: nscd/cache.c:88
-msgid "while allocating hash table entry"
-msgstr "az indextábla lefoglalása alatt"
+#: timezone/zic.c:1103
+msgid "Zone continuation line end time is not after end time of previous line"
+msgstr ""
-#: nscd/grpcache.c:100 nscd/hstcache.c:108 nscd/pwdcache.c:106
-msgid "while allocating key copy"
-msgstr "a kulcs másolatok lefoglalása alatt"
+#: timezone/zic.c:1131
+msgid "wrong number of fields on Leap line"
+msgstr ""
-#: iconv/iconvconfig.c:369
-msgid "while inserting in search tree"
-msgstr "a keresési fa beszúrás alatt"
+#: timezone/zic.c:1140
+msgid "invalid leaping year"
+msgstr ""
-#: catgets/gencat.c:1198
-msgid "while opening old catalog file"
-msgstr "a régi katalógus fájl megnyitása alatt"
+#: timezone/zic.c:1160 timezone/zic.c:1266
+msgid "invalid month name"
+msgstr ""
-#: locale/programs/locale.c:353
-msgid "while preparing output"
-msgstr "a kimenet elõkészítése alatt"
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
+msgid "invalid day of month"
+msgstr ""
-#: elf/sprof.c:679
-msgid "while stat'ing profiling data file"
-msgstr "a profil adatfájl lekérdezése alatt"
+#: timezone/zic.c:1178
+msgid "time before zero"
+msgstr ""
-#: locale/programs/ld-ctype.c:2394
-msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
-msgstr "az UCS tartomány értéke egy hexadecimális szimbolikus ellipszis kell hogy legyen '..'"
+#: timezone/zic.c:1182
+msgid "time too small"
+msgstr ""
-#: locale/programs/ld-ctype.c:2408
-msgid "with character code range values one must use the absolute ellipsis `...'"
-msgstr "az karakter kód tartomány értéke egy hexadecimális abszolút ellipszis kell hogy legyen '..'"
+#: timezone/zic.c:1186
+msgid "time too large"
+msgstr ""
-#: locale/programs/ld-ctype.c:2379
-msgid "with symbolic name range values the absolute ellipsis `...' must not be used"
-msgstr "a szimbolikus név tartománynál értékei abszolút ellipszist '...' nem lehet haszálni"
+#: timezone/zic.c:1190 timezone/zic.c:1295
+msgid "invalid time of day"
+msgstr ""
-#: nscd/nscd_stat.c:116
-msgid "write incomplete"
-msgstr "írás nincs kész"
+#: timezone/zic.c:1209
+msgid "illegal CORRECTION field on Leap line"
+msgstr ""
-#: inet/rcmd.c:516
-msgid "writeable by other than owner"
-msgstr "más is írhatja mint a tulajdonos"
+#: timezone/zic.c:1214
+msgid "illegal Rolling/Stationary field on Leap line"
+msgstr ""
-#: nscd/nscd.c:123 nscd/nscd_nischeck.c:64 nss/getent.c:761
-msgid "wrong number of arguments"
-msgstr "rossz az argumentumok száma"
+#: timezone/zic.c:1230
+msgid "wrong number of fields on Link line"
+msgstr ""
-#: timezone/zic.c:1121
-msgid "wrong number of fields on Leap line"
-msgstr "rossz szám az eltolás mezõ sorában"
+#: timezone/zic.c:1234
+msgid "blank FROM field on Link line"
+msgstr ""
-#: timezone/zic.c:1212
-msgid "wrong number of fields on Link line"
-msgstr "rossz szám az hivatkozás mezõ sorában"
+#: timezone/zic.c:1238
+msgid "blank TO field on Link line"
+msgstr ""
-#: timezone/zic.c:955
-msgid "wrong number of fields on Rule line"
-msgstr "rossz szám a szabály mezõ sorában"
+#: timezone/zic.c:1316
+msgid "invalid starting year"
+msgstr ""
-#: timezone/zic.c:1025
-msgid "wrong number of fields on Zone continuation line"
-msgstr "rossz szám a zóna folyatás mezõ sorában"
+#: timezone/zic.c:1338
+msgid "invalid ending year"
+msgstr ""
-#: timezone/zic.c:983
-msgid "wrong number of fields on Zone line"
-msgstr "rossz szám a zóna mezõ sorban"
+#: timezone/zic.c:1342
+msgid "starting year greater than ending year"
+msgstr ""
+
+#: timezone/zic.c:1349
+msgid "typed single year"
+msgstr ""
+
+#: timezone/zic.c:1384
+msgid "invalid weekday name"
+msgstr ""
-#: sunrpc/xdr_array.c:106 sunrpc/xdr_array.c:109
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array: elfogyott a memória\n"
+#: timezone/zic.c:1562
+#, c-format
+msgid "%s: Can't remove %s: %s\n"
+msgstr ""
-#: sunrpc/xdr.c:558 sunrpc/xdr.c:561
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes: elfogyott a memória\n"
+#: timezone/zic.c:1572
+#, c-format
+msgid "%s: Can't create %s: %s\n"
+msgstr ""
-#: sunrpc/xdr_ref.c:89 sunrpc/xdr_ref.c:92
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_reference: elfogyott a memória\n"
+#: timezone/zic.c:1722
+#, c-format
+msgid "%s: Error writing %s\n"
+msgstr ""
-#: sunrpc/xdr.c:710 sunrpc/xdr.c:713
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string: elfogyott a memória\n"
+#: timezone/zic.c:2015
+msgid "no POSIX environment variable for zone"
+msgstr ""
-#: sunrpc/xdr_rec.c:155 sunrpc/xdr_rec.c:158
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create: elfogyott a memória\n"
+#: timezone/zic.c:2172
+msgid "can't determine time zone abbreviation to use just after until time"
+msgstr ""
-#: nis/ypclnt.c:909
-msgid "yp_update: cannot convert host to netname\n"
-msgstr "yp_update: nem lehet a munkaállomást hálózatnévre átalakítani\n"
+#: timezone/zic.c:2218
+msgid "too many transitions?!"
+msgstr ""
-#: nis/ypclnt.c:921
-msgid "yp_update: cannot get server address\n"
-msgstr "yp_update: nem lehet megszerezni a kiszolgáló címét\n"
+#: timezone/zic.c:2237
+msgid "internal error - addtype called with bad isdst"
+msgstr ""
+
+#: timezone/zic.c:2241
+msgid "internal error - addtype called with bad ttisstd"
+msgstr ""
+
+#: timezone/zic.c:2245
+msgid "internal error - addtype called with bad ttisgmt"
+msgstr ""
+
+#: timezone/zic.c:2264
+msgid "too many local time types"
+msgstr ""
+
+#: timezone/zic.c:2268
+msgid "UTC offset out of range"
+msgstr ""
+
+#: timezone/zic.c:2296
+msgid "too many leap seconds"
+msgstr ""
+
+#: timezone/zic.c:2302
+msgid "repeated leap second moment"
+msgstr ""
+
+#: timezone/zic.c:2354
+msgid "Wild result from command execution"
+msgstr ""
+
+#: timezone/zic.c:2355
+#, c-format
+msgid "%s: command was '%s', result was %d\n"
+msgstr ""
+
+#: timezone/zic.c:2453
+msgid "Odd number of quotation marks"
+msgstr ""
+
+#: timezone/zic.c:2542
+msgid "use of 2/29 in non leap-year"
+msgstr ""
+
+#: timezone/zic.c:2577
+msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
+msgstr ""
+
+#: timezone/zic.c:2609
+msgid "time zone abbreviation lacks alphabetic at start"
+msgstr ""
+
+#: timezone/zic.c:2611
+msgid "time zone abbreviation has more than 3 alphabetics"
+msgstr ""
+
+#: timezone/zic.c:2613
+msgid "time zone abbreviation has too many alphabetics"
+msgstr ""
+
+#: timezone/zic.c:2623
+msgid "time zone abbreviation differs from POSIX standard"
+msgstr ""
+
+#: timezone/zic.c:2635
+msgid "too many, or too long, time zone abbreviations"
+msgstr ""
+
+#: timezone/zic.c:2676
+#, c-format
+msgid "%s: Can't create directory %s: %s\n"
+msgstr ""
+
+#: timezone/zic.c:2698
+#, c-format
+msgid "%s: %d did not sign extend correctly\n"
+msgstr ""
diff --git a/po/id.po b/po/id.po
index 55cd0a180b..aabcc721d0 100644
--- a/po/id.po
+++ b/po/id.po
@@ -1,13 +1,13 @@
# Pesan Bahasa Indonesia untuk glibc
# Copyright (C) 2008 Free Software Foundation, Inc.
# This file is distributed under the same license as the glibc package.
-# Arif E. Nugroho <arif_endro@yahoo.com>, 2008.
+# Arif E. Nugroho <arif_endro@yahoo.com>, 2008, 2009.
#
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.7\n"
-"POT-Creation-Date: 2007-10-15 21:18-0700\n"
-"PO-Revision-Date: 2008-10-26 11:30+0700\n"
+"Project-Id-Version: libc 2.10.1\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-06-23 12:30+0700\n"
"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
@@ -31,7 +31,7 @@ msgstr "Sampah dalam ARGP_HELP_FMT: %s"
#: argp/argp-help.c:1215
msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
-msgstr "Argumen wajib atau opsional untuk opsi panjang juga wajib atau opsional untuk opsi pendek yang berhubungan."
+msgstr "Argumen wajib atau opsional untuk pilihan panjang juga wajib atau opsional untuk pilihan pendek yang berhubungan."
#: argp/argp-help.c:1601
msgid "Usage:"
@@ -43,7 +43,7 @@ msgstr " atau: "
#: argp/argp-help.c:1617
msgid " [OPTION...]"
-msgstr " [OPSI...]"
+msgstr " [PILIHAN...]"
#: argp/argp-help.c:1644
#, c-format
@@ -86,7 +86,7 @@ msgstr "%s: Terlalu banyak argumen\n"
#: argp/argp-parse.c:766
msgid "(PROGRAM ERROR) Option should have been recognized!?"
-msgstr "(APLIKASI ERROR) Opsi seharusnya telah dikenal!?"
+msgstr "(APLIKASI ERROR) Pilihan seharusnya telah dikenal!?"
#: assert/assert-perr.c:57
#, c-format
@@ -98,7 +98,7 @@ msgstr "%s%s%s:%u: %s%sError tidak terduga: %s.\n"
msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
msgstr "%s%s%s:%u: %s%sAssertion `%s' gagal.\n"
-#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
msgid "NAME"
msgstr "NAMA"
@@ -131,9 +131,15 @@ msgstr ""
"-o BERKAS-KELUARAN [BERKAS-MASUKAN]...\n"
"[BERKAS-KELUARAN [BERKAS-MASUKAN]...]"
-#: catgets/gencat.c:232 debug/pcprofiledump.c:204 iconv/iconv_prog.c:411
-#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
-#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
@@ -141,12 +147,13 @@ msgstr ""
"Untuk instruksi pelaporan bug, tolong lihat:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:296
-#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:426
-#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
-#: posix/getconf.c:1012
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -157,10 +164,12 @@ msgstr ""
"Ini adalah aplikasi bebas; lihat sumber untuk kondisi penyalinan. Tidak ada\n"
"garansi; bahkan untuk PERDAGANGAN atau KECOCOKAN UNTUK SEBUAH TUJUAN TERTENTU.\n"
-#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:301 elf/sprof.c:361
-#: iconv/iconv_prog.c:431 iconv/iconvconfig.c:400 locale/programs/locale.c:280
-#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
-#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
#, c-format
msgid "Written by %s.\n"
msgstr "Ditulis oleh %s.\n"
@@ -169,7 +178,7 @@ msgstr "Ditulis oleh %s.\n"
msgid "*standard input*"
msgstr "*masukan baku*"
-#: catgets/gencat.c:288 iconv/iconv_charmap.c:158 iconv/iconv_prog.c:298
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
#: nss/makedb.c:170
#, c-format
msgid "cannot open input file `%s'"
@@ -261,24 +270,24 @@ msgstr "Dump informasi dihasilkan oleh PC profiling."
msgid "[FILE]"
msgstr "[BERKAS]"
-#: debug/pcprofiledump.c:104
+#: debug/pcprofiledump.c:108
#, c-format
msgid "cannot open input file"
msgstr "tidak dapat membuka berkas masukan"
-#: debug/pcprofiledump.c:111
+#: debug/pcprofiledump.c:115
#, c-format
msgid "cannot read header"
msgstr "tidak dapat membaca header"
-#: debug/pcprofiledump.c:175
+#: debug/pcprofiledump.c:179
#, c-format
msgid "invalid pointer size"
msgstr "ukuran penunjuk tidak valid"
#: debug/xtrace.sh:27 debug/xtrace.sh:45
msgid "Usage: xtrace [OPTION]... PROGRAM [PROGRAMOPTION]...\\n"
-msgstr "Penggunaan: xtrace [OPSI]... APLIKASI [OPSI-APLIKASI]...\\n"
+msgstr "Penggunaan: xtrace [PILIHAN]... APLIKASI [PILIHAN APLIKASI]...\\n"
#: debug/xtrace.sh:33
msgid "Try \\`xtrace --help' for more information.\\n"
@@ -286,7 +295,7 @@ msgstr "Coba \\`xtrace --help' untuk informasi lebih lanjut.\\n"
#: debug/xtrace.sh:39
msgid "xtrace: option \\`$1' requires an argument.\\n"
-msgstr "xtrace: opsi \\`$1' membutuhkan sebuah argumen.\\n"
+msgstr "xtrace: pilihan \\`$1' membutuhkan sebuah argumen.\\n"
#: debug/xtrace.sh:46
msgid ""
@@ -301,36 +310,33 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
"Telusuri jalannya aplikasi dengan menampilkan fungsi yang sedang dijalankan.\n"
"\n"
" --data=BERKAS Jangan jalankan aplikasi, hanya tampilkan data dari BERKAS.\n"
+"\n"
" -?,--help Tampilkan bantuan ini dan keluar\n"
" --usage Berikan sebuah pesan pendek penggunaan\n"
" -V,--version Tampilkan informasi versi dan keluar\n"
"\n"
-"Argumen wajib untuk opsi panjang juga wajib untuk setiap opsi pendek\n"
+"Argumen wajib untuk pilihan panjang juga wajib untuk setiap pilihan pendek\n"
"yang berhubungan.\n"
"\n"
-"Untuk instruksi pelaporan bug, mohon lihat:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
-#: debug/xtrace.sh:125
+#: debug/xtrace.sh:127
msgid "xtrace: unrecognized option \\`$1'\\n"
-msgstr "xtrace: opsi tidak dikenal \\`$1'\\n"
+msgstr "xtrace: pilihan tidak dikenal \\`$1'\\n"
-#: debug/xtrace.sh:138
+#: debug/xtrace.sh:140
msgid "No program name given\\n"
msgstr "Tidak ada nama aplikasi yang diberikan\\n"
-#: debug/xtrace.sh:146
+#: debug/xtrace.sh:148
#, sh-format
msgid "executable \\`$program' not found\\n"
msgstr "aplikasi \\`$program' tidak ditemukan\\n"
-#: debug/xtrace.sh:150
+#: debug/xtrace.sh:152
#, sh-format
msgid "\\`$program' is no executable\\n"
msgstr "\\`$program' bukan sebuah aplikasi\\n"
@@ -351,7 +357,7 @@ msgstr "ruang-nama tidak valid"
msgid "invalid mode"
msgstr "mode tidak valid"
-#: dlfcn/dlopen.c:64
+#: dlfcn/dlopen.c:65
msgid "invalid mode parameter"
msgstr "mode parameter tidak valid"
@@ -368,7 +374,7 @@ msgstr "OS tidak diketahui"
msgid ", OS ABI: %s %d.%d.%d"
msgstr ", OS ABI: %s %d.%d.%d"
-#: elf/cache.c:134 elf/ldconfig.c:1270
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
msgid "Can't open cache file %s\n"
msgstr "Tidak dapat membuka berkas cache %s\n"
@@ -412,7 +418,7 @@ msgstr "Mengubah nama dari %s ke %s gagal"
msgid "cannot create scope list"
msgstr "tidak dapat membuat daftar scope"
-#: elf/dl-close.c:724
+#: elf/dl-close.c:725
msgid "shared object not open"
msgstr "shared objek tidak dapat dibuka"
@@ -485,11 +491,11 @@ msgstr "tidak dapat memperoleh statistik objek terbagi"
msgid "cannot open zero fill device"
msgstr "tidak dapat membuka perangkat pengisi nol"
-#: elf/dl-load.c:979 elf/dl-load.c:2224
+#: elf/dl-load.c:979 elf/dl-load.c:2215
msgid "cannot create shared object descriptor"
msgstr "tidak dapat membuat deskripsi objek terbagi"
-#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
msgid "cannot read file data"
msgstr "tidak dapat membaca berkas data"
@@ -553,63 +559,59 @@ msgstr "tidak dapat mengaktifkan stack aplikasi sebagai objek terbagi yang dibut
msgid "cannot close file descriptor"
msgstr "tidak dapat menutup berkas deskripsi"
-#: elf/dl-load.c:1478
-msgid "cannot create searchlist"
-msgstr "tidak dapat membuat daftar pencarian"
-
-#: elf/dl-load.c:1656
+#: elf/dl-load.c:1647
msgid "file too short"
msgstr "berkas terlalu pendek"
-#: elf/dl-load.c:1685
+#: elf/dl-load.c:1676
msgid "invalid ELF header"
msgstr "header ELF tidak valid"
-#: elf/dl-load.c:1697
+#: elf/dl-load.c:1688
msgid "ELF file data encoding not big-endian"
msgstr "berkas data enkoding ELF bukan big-endian"
-#: elf/dl-load.c:1699
+#: elf/dl-load.c:1690
msgid "ELF file data encoding not little-endian"
msgstr "berkas data enkoding ELF bukan little-endian"
-#: elf/dl-load.c:1703
+#: elf/dl-load.c:1694
msgid "ELF file version ident does not match current one"
msgstr "berkas versi ident ELF tidak cocok dengan yang sekarang"
-#: elf/dl-load.c:1707
+#: elf/dl-load.c:1698
msgid "ELF file OS ABI invalid"
msgstr "berkas OS ABI ELF tidak valid"
-#: elf/dl-load.c:1709
+#: elf/dl-load.c:1700
msgid "ELF file ABI version invalid"
msgstr "berkas versi ABI ELF tidak valid"
-#: elf/dl-load.c:1712
+#: elf/dl-load.c:1703
msgid "internal error"
msgstr "internal error"
-#: elf/dl-load.c:1719
+#: elf/dl-load.c:1710
msgid "ELF file version does not match current one"
msgstr "berkas versi ELF tidak cocok dengan yang sekarang"
-#: elf/dl-load.c:1727
+#: elf/dl-load.c:1718
msgid "only ET_DYN and ET_EXEC can be loaded"
msgstr "hanya ET_DYN dan ET_EXEC yang dapat diangkut"
-#: elf/dl-load.c:1733
+#: elf/dl-load.c:1724
msgid "ELF file's phentsize not the expected size"
msgstr "berkas phentsize ELF tidak seperti ukuran yang diduga"
-#: elf/dl-load.c:2240
+#: elf/dl-load.c:2231
msgid "wrong ELF class: ELFCLASS64"
msgstr "kelas ELF salah: ELFCLASS64"
-#: elf/dl-load.c:2241
+#: elf/dl-load.c:2232
msgid "wrong ELF class: ELFCLASS32"
msgstr "kelas ELF salah: ELFCLASS32"
-#: elf/dl-load.c:2244
+#: elf/dl-load.c:2235
msgid "cannot open shared object file"
msgstr "tidak dapat membuka berkas objek terbagi"
@@ -641,11 +643,11 @@ msgstr "tidak ada lagi ruang-nama yang tersedia untuk dlmopen()"
msgid "invalid target namespace in dlmopen()"
msgstr "target ruang-nama dalam dlmopen() tidak valid"
-#: elf/dl-reloc.c:54
+#: elf/dl-reloc.c:121
msgid "cannot allocate memory in static TLS block"
msgstr "tidak dapat mengalokasikan memori dalam blok TLS statis"
-#: elf/dl-reloc.c:196
+#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
msgstr "tidak dapat membuat segmen dapat ditulis untuk relokasi"
@@ -671,11 +673,11 @@ msgstr "tidak dapat mengaplikasikan proteksi memori tambahan setelah relokasi"
msgid "RTLD_NEXT used in code not dynamically loaded"
msgstr "RTLD_NEXT digunakan dalam kode yang tidak secara dinamis diangkut"
-#: elf/dl-sysdep.c:469 elf/dl-sysdep.c:481
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
msgid "cannot create capability list"
msgstr "tidak dapat membuat daftar kapabilitas"
-#: elf/dl-tls.c:825
+#: elf/dl-tls.c:864
msgid "cannot create TLS data structures"
msgstr "tidak dapat membuat struktur data TLS"
@@ -683,220 +685,220 @@ msgstr "tidak dapat membuat struktur data TLS"
msgid "cannot allocate version reference table"
msgstr "tidak dapat mengalokasikan tabel referensi versi"
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:141
msgid "Print cache"
msgstr "Menampilkan cache"
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:142
msgid "Generate verbose messages"
msgstr "Menghasilkan pesan verbose"
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:143
msgid "Don't build cache"
msgstr "Jangan membuat cache"
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:144
msgid "Don't generate links"
msgstr "Jangan menghasilkan links"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "Change to and use ROOT as root directory"
msgstr "Ubah ke dan gunakan ROOT sebagai direktori root"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "ROOT"
msgstr "ROOT"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "CACHE"
msgstr "CACHE"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "Use CACHE as cache file"
msgstr "Gunakan CACHE sebagai berkas cache"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "CONF"
msgstr "CONF"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "Use CONF as configuration file"
msgstr "Gunakan CONF sebagai berkas konfigurasi"
-#: elf/ldconfig.c:145
+#: elf/ldconfig.c:148
msgid "Only process directories specified on the command line. Don't build cache."
msgstr "Hanya proses direktori yang dispesifikasikan dalam baris perintah. Jangan buat cache."
-#: elf/ldconfig.c:146
+#: elf/ldconfig.c:149
msgid "Manually link individual libraries."
msgstr "Secara manual hubungkan perpustakaan individu."
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "FORMAT"
msgstr "FORMAT"
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "Format to use: new, old or compat (default)"
msgstr "Format yang digunakan: baru, lama atau kompatibel (baku)"
-#: elf/ldconfig.c:148
+#: elf/ldconfig.c:151
msgid "Ignore auxiliary cache file"
msgstr "Abaikan berkas cache tambahan"
-#: elf/ldconfig.c:156
+#: elf/ldconfig.c:159
msgid "Configure Dynamic Linker Run Time Bindings."
msgstr "Konfigurasi Linker Dinamis Ikatan Waktu Jalan."
-#: elf/ldconfig.c:319
+#: elf/ldconfig.c:339
#, c-format
msgid "Path `%s' given more than once"
msgstr "Jalur `%s' diberikan lebih dari sekali"
-#: elf/ldconfig.c:359
+#: elf/ldconfig.c:379
#, c-format
msgid "%s is not a known library type"
msgstr "%s bukan tipe perpustakaan yang dikenal"
-#: elf/ldconfig.c:384
+#: elf/ldconfig.c:404
#, c-format
msgid "Can't stat %s"
msgstr "Tidak dapat memperoleh statistik %s"
-#: elf/ldconfig.c:458
+#: elf/ldconfig.c:478
#, c-format
msgid "Can't stat %s\n"
msgstr "Tidak dapat memperoleh statistik %s\n"
-#: elf/ldconfig.c:468
+#: elf/ldconfig.c:488
#, c-format
msgid "%s is not a symbolic link\n"
msgstr "%s bukan sebuah link simbolis\n"
-#: elf/ldconfig.c:487
+#: elf/ldconfig.c:507
#, c-format
msgid "Can't unlink %s"
msgstr "Tidak dapat memutuskan %s"
-#: elf/ldconfig.c:493
+#: elf/ldconfig.c:513
#, c-format
msgid "Can't link %s to %s"
msgstr "Tidak dapat menghubungkan %s ke %s"
-#: elf/ldconfig.c:499
+#: elf/ldconfig.c:519
msgid " (changed)\n"
msgstr " (berubah)\n"
-#: elf/ldconfig.c:501
+#: elf/ldconfig.c:521
msgid " (SKIPPED)\n"
msgstr " (DILEWATI)\n"
-#: elf/ldconfig.c:556
+#: elf/ldconfig.c:576
#, c-format
msgid "Can't find %s"
msgstr "Tidak dapat menemukan %s"
-#: elf/ldconfig.c:572 elf/ldconfig.c:745 elf/ldconfig.c:793 elf/ldconfig.c:827
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
msgid "Cannot lstat %s"
msgstr "Tidak dapat lstat %s"
-#: elf/ldconfig.c:579
+#: elf/ldconfig.c:599
#, c-format
msgid "Ignored file %s since it is not a regular file."
msgstr "Mengabaikan berkas %s karena itu bukan sebuah berkas umum."
-#: elf/ldconfig.c:588
+#: elf/ldconfig.c:608
#, c-format
msgid "No link created since soname could not be found for %s"
msgstr "Tidak ada hubungan yang dibuat karena soname tidak dapaat ditemukan untuk %s"
-#: elf/ldconfig.c:671
+#: elf/ldconfig.c:691
#, c-format
msgid "Can't open directory %s"
msgstr "Tidak dapat membuka direktori %s"
-#: elf/ldconfig.c:759
+#: elf/ldconfig.c:779
#, c-format
msgid "Cannot stat %s"
msgstr "Tidak dapat memperoleh statistik %s"
-#: elf/ldconfig.c:814 elf/readlib.c:91
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
msgid "Input file %s not found.\n"
msgstr "Berkas masukan %s tidak ditemukan.\n"
-#: elf/ldconfig.c:888
+#: elf/ldconfig.c:908
#, c-format
msgid "libc5 library %s in wrong directory"
msgstr "perpustakaan libc5 %s berada dalam direktori salah"
-#: elf/ldconfig.c:891
+#: elf/ldconfig.c:911
#, c-format
msgid "libc6 library %s in wrong directory"
msgstr "perpustakaan libc6 %s berada dalam direktori salah"
-#: elf/ldconfig.c:894
+#: elf/ldconfig.c:914
#, c-format
msgid "libc4 library %s in wrong directory"
msgstr "perpustakaan lib4 %s berada dalam direktori salah"
-#: elf/ldconfig.c:922
+#: elf/ldconfig.c:942
#, c-format
msgid "libraries %s and %s in directory %s have same soname but different type."
msgstr "perpustakaan %s dan %s berada dalam direktori %s memiliki soname sama tetapi memiliki tipe berbeda."
-#: elf/ldconfig.c:1031
+#: elf/ldconfig.c:1051
#, c-format
msgid "Can't open configuration file %s"
msgstr "Tidak dapat membuka berkas konfigurasi %s"
-#: elf/ldconfig.c:1095
+#: elf/ldconfig.c:1115
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
msgstr "%s:%u: sintaks buruk dalam baris hwcap"
-#: elf/ldconfig.c:1101
+#: elf/ldconfig.c:1121
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
msgstr "%s:%u: indeks hwcap %lu diatas maksimal %u"
-#: elf/ldconfig.c:1108 elf/ldconfig.c:1116
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
msgstr "%s:%u: hwcap indeks %lu telah didefinisikan sebagai %s"
-#: elf/ldconfig.c:1119
+#: elf/ldconfig.c:1139
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
msgstr "%s:%u: duplikasi hwcap %lu %s"
-#: elf/ldconfig.c:1141
+#: elf/ldconfig.c:1161
#, c-format
msgid "need absolute file name for configuration file when using -r"
msgstr "membutuhkan nama berkas absolut untuk berkas konfigurasi ketika menggunakan -r"
-#: elf/ldconfig.c:1148 locale/programs/xmalloc.c:70 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
msgid "memory exhausted"
msgstr "kehabisan memori"
-#: elf/ldconfig.c:1178
+#: elf/ldconfig.c:1198
#, c-format
msgid "%s:%u: cannot read directory %s"
msgstr "%s:%u: tidak dapat membaca direktori %s"
-#: elf/ldconfig.c:1223
+#: elf/ldconfig.c:1242
#, c-format
msgid "relative path `%s' used to build cache"
msgstr "jalur relatif `%s' digunakan untuk membuat cache"
-#: elf/ldconfig.c:1249
+#: elf/ldconfig.c:1268
#, c-format
msgid "Can't chdir to /"
msgstr "Tidak dapat chdir ke /"
-#: elf/ldconfig.c:1291
+#: elf/ldconfig.c:1310
#, c-format
msgid "Can't open cache file directory %s\n"
msgstr "Tidak dapat membuat berkas cache direktori %s\n"
@@ -914,59 +916,55 @@ msgid ""
" -r, --function-relocs process data and function relocations\n"
" -u, --unused print unused direct dependencies\n"
" -v, --verbose print all information\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
-"Penggunaan: ldd [OPSI... BERKAS...\n"
+"Penggunaan: ldd [PILIHAN... BERKAS...\n"
" --help tampilkan bantuan ini dan keluar\n"
" --version tampilkan informasi versi dan keluar\n"
" -d, --data-relocs proses relokasi data\n"
" -r, --function-relocs proses data dan relokasi fungsi\n"
" -u, --unused tampilkan tidak digunakan ketergantungan langsung\n"
" -v, --verbose tampilkan seluruh informasi\n"
-"Untuk instruksi pelaporan bug, mohon lihat:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: elf/ldd.bash.in:80
+#: elf/ldd.bash.in:82
msgid "ldd: option \\`$1' is ambiguous"
-msgstr "ldd: opsi \\`$1' adalah ambigu"
+msgstr "ldd: pilihan \\`$1' adalah ambigu"
-#: elf/ldd.bash.in:87
+#: elf/ldd.bash.in:89
msgid "unrecognized option"
-msgstr "opsi tidak dikenal"
+msgstr "pilihan tidak dikenal"
-#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
msgid "Try \\`ldd --help' for more information."
msgstr "Coba \\`ldd --help' untuk informasi lebih lanjut."
-#: elf/ldd.bash.in:125
+#: elf/ldd.bash.in:127
msgid "missing file arguments"
msgstr "hilang berkas argumen"
#. TRANS No such file or directory. This is a ``file doesn't exist'' error
#. TRANS for ordinary files that are referenced in contexts where they are
#. TRANS expected to already exist.
-#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
msgstr "Tidak ada berkas atau direktori seperti itu"
-#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
msgid "not regular file"
msgstr "bukan sebuah berkas regular"
-#: elf/ldd.bash.in:154
+#: elf/ldd.bash.in:156
msgid "warning: you do not have execution permission for"
msgstr "peringatan: anda tidak memiliki ijin untuk menjalankan untuk"
-#: elf/ldd.bash.in:183
+#: elf/ldd.bash.in:185
msgid "\tnot a dynamic executable"
msgstr "\tbukan sebuah aplikasi dinamis"
-#: elf/ldd.bash.in:191
+#: elf/ldd.bash.in:193
msgid "exited with unknown exit code"
msgstr "keluar dengan kode keluar yang tidak diketahui"
-#: elf/ldd.bash.in:196
+#: elf/ldd.bash.in:198
msgid "error: you do not have read permission for"
msgstr "error: anda tidak memiliki ijin membaca untuk"
@@ -1025,6 +1023,45 @@ msgstr "Tidak dapat mmap berkas %s.\n"
msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
msgstr "%s bukan sebuah berkas ELF - ini memiliki magis bytes salah di awal.\n"
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+"penggunaan: sln sumber tujuan|berkas\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s: error membuka berkas: %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "Tidak ada target dalam baris %d\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s: tujuan tidak boleh berupa sebuah direktori\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr "%s: gagal untuk menghapus tujuan lama\n"
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s: tujuan tidak valid: %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "Sambungan tidak valid dari \"%s\" ke \"%s\": %s\n"
+
#: elf/sprof.c:77
msgid "Output selection:"
msgstr "Pemilihan keluaran:"
@@ -1042,129 +1079,130 @@ msgid "generate call graph"
msgstr "hasilkan call graph"
#: elf/sprof.c:89
-msgid ""
-"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Baca dan tampilkan data profiling objek terbagi.\vUntuk instruksi pelaporan bug, mohon lihat:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Read and display shared object profiling data."
+msgstr "Baca dan tampilkan data profiling objek terbagi."
#: elf/sprof.c:94
msgid "SHOBJ [PROFDATA]"
msgstr "SHOBJ [PROFDATA]"
-#: elf/sprof.c:400
+#: elf/sprof.c:420
#, c-format
msgid "failed to load shared object `%s'"
msgstr "gagal mengangkut objek terbagi `%s'"
-#: elf/sprof.c:409
+#: elf/sprof.c:429
#, c-format
msgid "cannot create internal descriptors"
msgstr "tidak dapat membuat deskripsi internal"
-#: elf/sprof.c:528
+#: elf/sprof.c:548
#, c-format
msgid "Reopening shared object `%s' failed"
msgstr "Membuka kembali objek terbagi `%s' gagal"
-#: elf/sprof.c:535 elf/sprof.c:629
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
msgid "reading of section headers failed"
msgstr "membaca dari daerah headers gagal"
-#: elf/sprof.c:543 elf/sprof.c:637
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
msgid "reading of section header string table failed"
msgstr "membaca dari daerah header tabel string gagal"
-#: elf/sprof.c:569
+#: elf/sprof.c:589
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
msgstr "*** Tidak dapat membaca nama berkas debuginfo: %m\n"
-#: elf/sprof.c:589
+#: elf/sprof.c:609
#, c-format
msgid "cannot determine file name"
msgstr "tidak dapat menentukan nama berkas"
-#: elf/sprof.c:622
+#: elf/sprof.c:642
#, c-format
msgid "reading of ELF header failed"
msgstr "pembacaan dari header ELF gagal"
-#: elf/sprof.c:658
+#: elf/sprof.c:678
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
msgstr "*** Berkas `%s' terstrip: tidak ada kemungkinan analisa detail\n"
-#: elf/sprof.c:688
+#: elf/sprof.c:708
#, c-format
msgid "failed to load symbol data"
msgstr "gagal mengangkut data simbol"
-#: elf/sprof.c:755
+#: elf/sprof.c:775
#, c-format
msgid "cannot load profiling data"
msgstr "tidak dapat mengangkut data profiling"
-#: elf/sprof.c:764
+#: elf/sprof.c:784
#, c-format
msgid "while stat'ing profiling data file"
msgstr "ketika melakukan statistik data profiling berkas"
-#: elf/sprof.c:772
+#: elf/sprof.c:792
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
msgstr "profiling berkas data `%s' tidak cocok dengan berkas terbagi `%s'"
-#: elf/sprof.c:783
+#: elf/sprof.c:803
#, c-format
msgid "failed to mmap the profiling data file"
msgstr "gagal untuk memetakan berkas data profiling"
-#: elf/sprof.c:791
+#: elf/sprof.c:811
#, c-format
msgid "error while closing the profiling data file"
msgstr "error ketika menutup berkas data profiling"
-#: elf/sprof.c:800 elf/sprof.c:870
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
msgid "cannot create internal descriptor"
msgstr "tidak dapat membuat deskripsi internal"
-#: elf/sprof.c:846
+#: elf/sprof.c:866
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
msgstr "`%s' bukan sebuah profile benar untuk berkas data untuk `%s'"
-#: elf/sprof.c:1027 elf/sprof.c:1085
+#: elf/sprof.c:1047 elf/sprof.c:1105
#, c-format
msgid "cannot allocate symbol data"
msgstr "tidak dapat mengalokasikan data simbol"
-#: iconv/iconv_charmap.c:176 iconv/iconv_prog.c:316
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "tidak dapat membuka berkas keluaran"
+
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
msgstr "error ketika menutup masukan `%s'"
-#: iconv/iconv_charmap.c:450
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
msgstr "urutan masukan tidak legal di posisi %Zd"
-#: iconv/iconv_charmap.c:469 iconv/iconv_prog.c:526
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
#, c-format
msgid "incomplete character or shift sequence at end of buffer"
msgstr "karakter tidak lengkap atau urutan shift diakhir dari penyangga"
-#: iconv/iconv_charmap.c:514 iconv/iconv_charmap.c:550 iconv/iconv_prog.c:569
-#: iconv/iconv_prog.c:605
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
#, c-format
msgid "error while reading the input"
msgstr "error ketika membaca masukan"
-#: iconv/iconv_charmap.c:532 iconv/iconv_prog.c:587
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
#, c-format
msgid "unable to allocate buffer for input"
msgstr "tidak dapat mengalokasikan penyangga untuk masukan"
@@ -1217,62 +1255,57 @@ msgstr "Ubah enkoding dari berkas yang diberikan dari satu enkoding ke yang lain
msgid "[FILE...]"
msgstr "[BERKAS...]"
-#: iconv/iconv_prog.c:200
-#, c-format
-msgid "cannot open output file"
-msgstr "tidak dapat membuka berkas keluaran"
-
-#: iconv/iconv_prog.c:242
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
msgstr "pengubahan dari `%s' dan ke `%s' tidak didukung"
-#: iconv/iconv_prog.c:247
+#: iconv/iconv_prog.c:239
#, c-format
msgid "conversion from `%s' is not supported"
msgstr "pengubahan dari `%s' tidak didukung"
-#: iconv/iconv_prog.c:254
+#: iconv/iconv_prog.c:246
#, c-format
msgid "conversion to `%s' is not supported"
msgstr "pengubahan ke `%s' tidak didukung"
-#: iconv/iconv_prog.c:258
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
msgstr "pengubahan dari `%s' ke `%s' tidak didukung"
-#: iconv/iconv_prog.c:268
+#: iconv/iconv_prog.c:260
#, c-format
msgid "failed to start conversion processing"
msgstr "gagal untuk menjalankan proses pengubahan"
-#: iconv/iconv_prog.c:362
+#: iconv/iconv_prog.c:358
#, c-format
msgid "error while closing output file"
msgstr "error ketika menutup berkas keluaran"
-#: iconv/iconv_prog.c:471 iconv/iconv_prog.c:497
+#: iconv/iconv_prog.c:456
#, c-format
msgid "conversion stopped due to problem in writing the output"
msgstr "pengubahan berhenti karena ada masalah dalam penulisan keluaran"
-#: iconv/iconv_prog.c:522
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
msgstr "urutan masukan tidak legal di posisi %ld"
-#: iconv/iconv_prog.c:530
+#: iconv/iconv_prog.c:541
#, c-format
msgid "internal error (illegal descriptor)"
msgstr "internal error (deskripsi tidak legal)"
-#: iconv/iconv_prog.c:533
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
msgstr "error %d iconv() tidak dikenal"
-#: iconv/iconv_prog.c:779
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -1508,7 +1541,7 @@ msgstr "terlalu banyak bytes dalam karakter pengkodean"
msgid "no symbolic name given for end of range"
msgstr "tidak ada nama simbolis yang diberikan untuk akhir dari jangkauan"
-#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
#: locale/programs/ld-identification.c:452
@@ -1535,8 +1568,8 @@ msgstr "nilai untuk %s harus berupa sebuah integer"
msgid "%s: error in state machine"
msgstr "%s: error dalam mesin status"
-#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
-#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4115
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
#: locale/programs/ld-identification.c:468
#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
@@ -1558,7 +1591,7 @@ msgstr "karakter `%s' tidak dikenal"
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
msgstr "jumlah dari bytes untuk urutan byte dari awal dan akhir dari jangkauan tidak sama: %d vs %d"
-#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3047
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
msgstr "nama tidak valid untuk jangkauan karakter"
@@ -1580,7 +1613,7 @@ msgstr "batas atas dalam jangkauan adalah lebih kecil daripada batas bawah"
msgid "resulting bytes for range not representable."
msgstr "menghasilkan bytes untuk jangkauan tidak dapat direpresentasikan."
-#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
@@ -1590,10 +1623,10 @@ msgstr "menghasilkan bytes untuk jangkauan tidak dapat direpresentasikan."
msgid "No definition for %s category found"
msgstr "Tidak ada definisi untuk kategori %s yang ditemukan"
-#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
-#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
-#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
-#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
@@ -1606,46 +1639,46 @@ msgstr "Tidak ada definisi untuk kategori %s yang ditemukan"
msgid "%s: field `%s' not defined"
msgstr "%s: daerah `%s' tidak terdefinisi"
-#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
-#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
msgstr "%s: daerah `%s' tidak boleh kosong"
-#: locale/programs/ld-address.c:168
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
msgstr "%s: urutan escape `%%%c' tidak valid dalam daerah `%s'"
-#: locale/programs/ld-address.c:219
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
msgstr "%s: kode bahasa terminologi `%s' tidak terdefinisi"
-#: locale/programs/ld-address.c:244
+#: locale/programs/ld-address.c:246
#, c-format
msgid "%s: field `%s' must not be defined"
msgstr "%s: daerah `%s' tidak boleh didefinisikan"
-#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
msgstr "%s: kependekan bahasa `%s' tidak terdefinisi"
-#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
-#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
msgstr "%s: `%s' nilai tidak cocok dengan nilai `%s'"
-#: locale/programs/ld-address.c:312
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
msgstr "%s: kode negara numerik `%d' tidak valid"
-#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
-#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
#: locale/programs/ld-identification.c:364
#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
@@ -1657,7 +1690,7 @@ msgstr "%s: kode negara numerik `%d' tidak valid"
msgid "%s: field `%s' declared more than once"
msgstr "%s: daerah `%s' terdeklarasi lebih dari sekali"
-#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
@@ -1667,7 +1700,7 @@ msgstr "%s: daerah `%s' terdeklarasi lebih dari sekali"
msgid "%s: unknown character in field `%s'"
msgstr "%s: karakter dalam daerah `%s' tidak dikenal"
-#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
@@ -1677,10 +1710,10 @@ msgstr "%s: karakter dalam daerah `%s' tidak dikenal"
msgid "%s: incomplete `END' line"
msgstr "%s: tidak lengkap `END' baris"
-#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:542
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
-#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4105
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
#: locale/programs/ld-identification.c:459
@@ -1823,7 +1856,7 @@ msgstr "tidak ada definisi dari `UNDEFINED'"
msgid "too many errors; giving up"
msgstr "terlalu banyak error; menyerah"
-#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4044
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
#, c-format
msgid "%s: nested conditionals not supported"
msgstr "%s: nested kondisional tidak didukung"
@@ -1843,27 +1876,27 @@ msgstr "%s: duplikasi definisi dari `%s'"
msgid "%s: duplicate declaration of section `%s'"
msgstr "%s: duplikasi deklarasi dari daerah `%s'"
-#: locale/programs/ld-collate.c:3027
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
msgstr "%s: karakter tidak dikenal dalam nama simbol collating"
-#: locale/programs/ld-collate.c:3159
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
msgstr "%s: karakter tidak dikenal dalam definisi nama yang ekuivalen"
-#: locale/programs/ld-collate.c:3172
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
msgstr "%s: karakter tidak dikenal dalam nilai definisi yang ekuivalen"
-#: locale/programs/ld-collate.c:3182
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
msgstr "%s: simbol tidak dikenal `%s' definisi ekuivalen"
-#: locale/programs/ld-collate.c:3191
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
msgstr "error ketika menambahkan simbol collating ekuivalen"
@@ -1943,12 +1976,12 @@ msgstr "%s: deskripsi kategori kosong tidak diperbolehkan"
msgid "%s: missing `reorder-sections-end' keyword"
msgstr "%s: hilang `reorder-section-end' kata-kunci"
-#: locale/programs/ld-collate.c:4077
+#: locale/programs/ld-collate.c:4079
#, c-format
msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
msgstr "%s: '%s' tanpa pencocokan 'ifdef' atau 'ifndef'"
-#: locale/programs/ld-collate.c:4095
+#: locale/programs/ld-collate.c:4097
#, c-format
msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
msgstr "%s: 'endif' tanpa pencocokan 'ifdef' atau 'ifndef'"
@@ -2272,7 +2305,7 @@ msgstr "%s: sampah di akhir dari awal tanggal dalam string %Zd dalam daerah `era
msgid "%s: starting date is invalid in string %Zd in `era' field"
msgstr "%s: tanggal mulai tidak valid dalam string %Zd dalam daerah `era'"
-#: locale/programs/ld-time.c:407
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
msgstr "%s: tanggal selesai tidak valid dalam string %Zd dalam daerah `era'"
@@ -2282,11 +2315,6 @@ msgstr "%s: tanggal selesai tidak valid dalam string %Zd dalam daerah `era'"
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
msgstr "%s: sampah diakhir dari tanggal selesai dalam string %Zd dalam daerah `era'"
-#: locale/programs/ld-time.c:435
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s: tanggal selesai tidak valid dalam string %Zd dalam daerah `era'"
-
#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
@@ -2389,14 +2417,10 @@ msgid "Print more information"
msgstr "Tampilkan informasi lebih"
#: locale/programs/locale.c:87
-msgid ""
-"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Dapatkan informasi lokal-spesifik.\vUntuk instruksi pelaporan bug, mohon lihat:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get locale-specific information."
+msgstr "Dapatkan informasi spesifik lokal."
-#: locale/programs/locale.c:92
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
@@ -2404,27 +2428,27 @@ msgstr ""
"NAMA\n"
"[-a|-m]"
-#: locale/programs/locale.c:193
+#: locale/programs/locale.c:194
#, c-format
msgid "Cannot set LC_CTYPE to default locale"
msgstr "Tidak dapat menset lokal baku ke LC_CTYPE"
-#: locale/programs/locale.c:195
+#: locale/programs/locale.c:196
#, c-format
msgid "Cannot set LC_MESSAGES to default locale"
msgstr "Tidak dapat menset lokal baku ke LC_MESSAGES"
-#: locale/programs/locale.c:208
+#: locale/programs/locale.c:209
#, c-format
msgid "Cannot set LC_COLLATE to default locale"
msgstr "Tidak dapat menset lokal baku ke LC_COLLATE"
-#: locale/programs/locale.c:224
+#: locale/programs/locale.c:225
#, c-format
msgid "Cannot set LC_ALL to default locale"
msgstr "Tidak dapat menset lokal baku ke LC_ALL"
-#: locale/programs/locale.c:500
+#: locale/programs/locale.c:518
#, c-format
msgid "while preparing output"
msgstr "ketika menyiapkan keluaran"
@@ -2708,7 +2732,7 @@ msgid "cannot create output file `%s' for category `%s'"
msgstr "tidak dapat membuat berkas keluaran `%s' untuk kategori `%s'"
#: locale/programs/locfile.c:782
-msgid "expect string argument for `copy'"
+msgid "expecting string argument for `copy'"
msgstr "diduga argumen string untuk `copy'"
#: locale/programs/locfile.c:786
@@ -2796,7 +2820,7 @@ msgstr "Coba \\`memusage --help' untuk informasi lebih lanjut."
#: malloc/memusage.sh:33
msgid "memusage: option \\`$1' requires an argument"
-msgstr "memusage: opsi \\`$1' membutuhkan sebuah argumen"
+msgstr "memusage: pilihan \\`$1' membutuhkan sebuah argumen"
#: malloc/memusage.sh:39
msgid ""
@@ -2825,10 +2849,8 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
-"Penggunaan: memusage [OPSI]... APLIKASI [OPSIAPLIKASI]...\n"
+"Penggunaan: memusage [PILIHAN]... APLIKASI [PILIHAN APLIKASI]...\n"
"Profile penggunaan memori dari APLIKASI.\n"
"\n"
" -n,--progname=NAMA Nama dari berkas aplikasi ke profile\n"
@@ -2842,20 +2864,18 @@ msgstr ""
" --usage Tampilkan sebuah pesan penggunaan singkat\n"
" -V,--version Tampilkan informasi versi dan keluar\n"
"\n"
-" Opsi berikut hanya berlaku ketika menghasilkan keluaran graphis:\n"
+" Pilihan berikut hanya berlaku ketika menghasilkan keluaran graphis:\n"
" -t,--time-based Buat graphis linear dengan waktu\n"
" -T,--total Juga gambar graphis dari total penggunaan memori\n"
" --title=STRING Gunakan STRING sebagai judul dari grapik\n"
" -x,--x-size=UKURAN Buat graphik lebar UKURAN piksel\n"
" -y,--y-size=UKURAN Buat graphik tinggi UKURAN piksel\n"
"\n"
-"Argumen wajib untuk opsi panjang juga wajib untuk setiap opsi pendek\n"
+"Argumen wajib untuk pilihan panjang juga wajib untuk setiap pilihan pendek\n"
"yang berhubungan.\n"
"\n"
-"Untuk instruksi pelaporan bug, mohon lihat:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: malloc/memusage.sh:99
+#: malloc/memusage.sh:101
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
@@ -2865,53 +2885,53 @@ msgstr ""
"Sintaks: memusage [--data=BERKAS] [--progname=NAMA] [--png=BERKAS] [--unbuffered]\n"
" [--buffer=UKURAN] [--no-timer] [--time-based] [--total]\n"
" [--title=STRING] [--x-size=UKURAN] [--y-size=UKURAN]\n"
-" APLIKASI [OPSIAPLIKASI]..."
+" APLIKASI [PILIHAN APLIKASI]..."
-#: malloc/memusage.sh:191
+#: malloc/memusage.sh:193
msgid "memusage: option \\`${1##*=}' is ambiguous"
-msgstr "memusage: opsi \\`${1##*=}' adalah ambigu"
+msgstr "memusage: pilihan \\`${1##*=}' adalah ambigu"
-#: malloc/memusage.sh:200
+#: malloc/memusage.sh:202
msgid "memusage: unrecognized option \\`$1'"
-msgstr "memusage: opsi \\`$1' tidak dikenal"
+msgstr "memusage: pilihan \\`$1' tidak dikenal"
-#: malloc/memusage.sh:213
+#: malloc/memusage.sh:215
msgid "No program name given"
msgstr "Tidak ada nama aplikasi yang diberikan"
-#: malloc/memusagestat.c:54
+#: malloc/memusagestat.c:57
msgid "Name output file"
msgstr "Nama dari berkas keluaran"
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:58
msgid "Title string used in output graphic"
msgstr "Judul string digunakan dalam graphis keluaran"
-#: malloc/memusagestat.c:56
+#: malloc/memusagestat.c:59
msgid "Generate output linear to time (default is linear to number of function calls)"
msgstr "Hasilkan keluaran linear ke waktu (baku adalah linear ke jumlah dari fungsi pemanggilan)"
-#: malloc/memusagestat.c:58
+#: malloc/memusagestat.c:61
msgid "Also draw graph for total memory consumption"
msgstr "Juga gambar graphik untuk konsumsi memori total"
-#: malloc/memusagestat.c:59
+#: malloc/memusagestat.c:62
msgid "Make output graphic VALUE pixels wide"
msgstr "Buat keluaran graphik NILAI lebar piksel"
-#: malloc/memusagestat.c:60
+#: malloc/memusagestat.c:63
msgid "Make output graphic VALUE pixels high"
msgstr "Buat keluaran graphik NILAI tinggi piksel"
-#: malloc/memusagestat.c:65
+#: malloc/memusagestat.c:68
msgid "Generate graphic from memory profiling data"
msgstr "Hasilkan graphik dari data memori profiling"
-#: malloc/memusagestat.c:68
+#: malloc/memusagestat.c:71
msgid "DATAFILE [OUTFILE]"
msgstr "BERKASDATA [BERKASKELUARAN]"
-#: misc/error.c:118 timezone/zic.c:417
+#: misc/error.c:118
msgid "Unknown system error"
msgstr "Sistem error tidak dikenal"
@@ -2919,7 +2939,7 @@ msgstr "Sistem error tidak dikenal"
msgid "unable to free arguments"
msgstr "tidak dapat membebaskan argumen"
-#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr "Sukses"
@@ -2961,7 +2981,7 @@ msgid "First/next chain broken"
msgstr "Awal/selanjutnya rantai rusak"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
msgstr "Ijin ditolak"
@@ -3464,433 +3484,472 @@ msgstr "netname2user: masukan LOKAL untuk %s dalam direktori %s tidak unik"
msgid "netname2user: should not have uid 0"
msgstr "netname2user: tidak boleh memiliki uid 0"
-#: nis/ypclnt.c:825
+#: nis/ypclnt.c:836
msgid "Request arguments bad"
msgstr "Permintaan argumen buruk"
-#: nis/ypclnt.c:828
+#: nis/ypclnt.c:839
msgid "RPC failure on NIS operation"
msgstr "RPC gagal dalam operasi NIS"
-#: nis/ypclnt.c:831
+#: nis/ypclnt.c:842
msgid "Can't bind to server which serves this domain"
msgstr "Tidak dapat melingkupi server yang melayani domain ini"
-#: nis/ypclnt.c:834
+#: nis/ypclnt.c:845
msgid "No such map in server's domain"
msgstr "Tidak ada peta seperti itu dalam domain server"
-#: nis/ypclnt.c:837
+#: nis/ypclnt.c:848
msgid "No such key in map"
msgstr "Tidak ada kunci seperti itu dalam peta"
-#: nis/ypclnt.c:840
+#: nis/ypclnt.c:851
msgid "Internal NIS error"
msgstr "Internal NIS error"
-#: nis/ypclnt.c:843
+#: nis/ypclnt.c:854
msgid "Local resource allocation failure"
msgstr "Alokasi sumber daya lokal gagal"
-#: nis/ypclnt.c:846
+#: nis/ypclnt.c:857
msgid "No more records in map database"
msgstr "Tidak ada rekaman lagi dalam peta basis data"
-#: nis/ypclnt.c:849
+#: nis/ypclnt.c:860
msgid "Can't communicate with portmapper"
msgstr "Tidak dapat berkomunikasi dengan portmapper"
-#: nis/ypclnt.c:852
+#: nis/ypclnt.c:863
msgid "Can't communicate with ypbind"
msgstr "Tidak dapat berkomunikasi dengan ypbind"
-#: nis/ypclnt.c:855
+#: nis/ypclnt.c:866
msgid "Can't communicate with ypserv"
msgstr "Tidak dapat berkomunikasi dengan ypserv"
-#: nis/ypclnt.c:858
+#: nis/ypclnt.c:869
msgid "Local domain name not set"
msgstr "Nama domain lokal tidak diset"
-#: nis/ypclnt.c:861
+#: nis/ypclnt.c:872
msgid "NIS map database is bad"
msgstr "peta basis data NIS buruk"
-#: nis/ypclnt.c:864
+#: nis/ypclnt.c:875
msgid "NIS client/server version mismatch - can't supply service"
msgstr "NIS client/server versi tidak cocok - tidak dapat mensuply layanan"
-#: nis/ypclnt.c:870
+#: nis/ypclnt.c:881
msgid "Database is busy"
msgstr "Basis data sibuk"
-#: nis/ypclnt.c:873
+#: nis/ypclnt.c:884
msgid "Unknown NIS error code"
msgstr "Kode error NIS tidak dikenal"
-#: nis/ypclnt.c:913
+#: nis/ypclnt.c:924
msgid "Internal ypbind error"
msgstr "Internal ypbind error"
-#: nis/ypclnt.c:916
+#: nis/ypclnt.c:927
msgid "Domain not bound"
msgstr "Domain tidak terikat"
-#: nis/ypclnt.c:919
+#: nis/ypclnt.c:930
msgid "System resource allocation failure"
msgstr "Alokasi sumber daya sistem gagal"
-#: nis/ypclnt.c:922
+#: nis/ypclnt.c:933
msgid "Unknown ypbind error"
msgstr "ypbind error tidak dikenal"
-#: nis/ypclnt.c:963
+#: nis/ypclnt.c:974
msgid "yp_update: cannot convert host to netname\n"
msgstr "yp_update: tidak dapat mengubah host ke netname\n"
-#: nis/ypclnt.c:981
+#: nis/ypclnt.c:992
msgid "yp_update: cannot get server address\n"
msgstr "yp_update: tidak dapat memperoleh alamat server\n"
-#: nscd/aicache.c:77 nscd/hstcache.c:468
+#: nscd/aicache.c:82 nscd/hstcache.c:481
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
msgstr "Belum ditemukan \"%s\" dalam cache host!"
-#: nscd/aicache.c:79 nscd/hstcache.c:470
+#: nscd/aicache.c:84 nscd/hstcache.c:483
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
msgstr "Reloading \"%s\" dalam cache host !"
-#: nscd/cache.c:146
+#: nscd/cache.c:150
#, c-format
msgid "add new entry \"%s\" of type %s for %s to cache%s"
msgstr "penambahan masukan baru \"%s\" dari tipe %s untuk %s ke cache %s"
-#: nscd/cache.c:148
+#: nscd/cache.c:152
msgid " (first)"
msgstr " (pertama)"
-#: nscd/cache.c:256 nscd/connections.c:810
+#: nscd/cache.c:286 nscd/connections.c:866
#, c-format
msgid "cannot stat() file `%s': %s"
msgstr "tidak dapat stat() berkas `%s': %s"
-#: nscd/cache.c:285
+#: nscd/cache.c:328
#, c-format
msgid "pruning %s cache; time %ld"
msgstr "pruning %s cache; waktu %ld"
-#: nscd/cache.c:312
+#: nscd/cache.c:357
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
msgstr "mempertimbangkan %s masukan \"%s\", waktu habis %<PRIu64>"
-#: nscd/connections.c:521 nscd/connections.c:533 nscd/connections.c:545
-#: nscd/connections.c:564
+#: nscd/connections.c:570
#, c-format
msgid "invalid persistent database file \"%s\": %s"
msgstr "berkas basis data persisten tidak valid \"%s\": %s"
-#: nscd/connections.c:535
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr "header tidak terinisialisasi"
+
+#: nscd/connections.c:583
msgid "header size does not match"
msgstr "ukuran header tidak cocok"
-#: nscd/connections.c:547
+#: nscd/connections.c:593
msgid "file size does not match"
msgstr "ukuran berkas tidak cocok"
-#: nscd/connections.c:566
+#: nscd/connections.c:610
msgid "verification failed"
msgstr "verifikasi gagal"
-#: nscd/connections.c:580
+#: nscd/connections.c:624
#, c-format
msgid "suggested size of table for database %s larger than the persistent database's table"
msgstr "ukuran dari tabel untuk basis data yang disarankan %s lebih besar dari persisten tabel basis data"
-#: nscd/connections.c:591 nscd/connections.c:673
+#: nscd/connections.c:635 nscd/connections.c:720
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
msgstr "tidak dapat membuat deskripsi baca-saja untuk \"%s\"; tidak ada mmap"
-#: nscd/connections.c:652
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr "tidak dapat mengakses '%s'"
+
+#: nscd/connections.c:699
#, c-format
msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
msgstr "basis data untuk %s terkorupsi atau secara simultan digunakan; hapus %s secara manual jika dibutuhkan dan restart"
-#: nscd/connections.c:659
+#: nscd/connections.c:706
#, c-format
msgid "cannot create %s; no persistent database used"
msgstr "tidak dapat membuat %s; tidak ada basis data persisten yang digunakan"
-#: nscd/connections.c:662
+#: nscd/connections.c:709
#, c-format
msgid "cannot create %s; no sharing possible"
msgstr "tidak dapat membuat %s; tidak ada kemungkinan pembagian"
-#: nscd/connections.c:733
+#: nscd/connections.c:780
#, c-format
msgid "cannot write to database file %s: %s"
msgstr "tidak dapat menulis ke berkas basis data %s: %s"
-#: nscd/connections.c:772
+#: nscd/connections.c:819
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
msgstr "tidak dapat menset socket ke close di exec: %s; menonaktifkan mode paranoia"
-#: nscd/connections.c:823
+#: nscd/connections.c:902
#, c-format
msgid "cannot open socket: %s"
msgstr "tidak dapat membuka socket: %s"
-#: nscd/connections.c:840
+#: nscd/connections.c:922
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
msgstr "tidak dapat mengubah socket untuk mode tidak terblok: %s"
-#: nscd/connections.c:848
+#: nscd/connections.c:930
#, c-format
msgid "cannot set socket to close on exec: %s"
msgstr "tidak dapat menset socket untuk menutup di exec: %s"
-#: nscd/connections.c:859
+#: nscd/connections.c:943
#, c-format
msgid "cannot enable socket to accept connections: %s"
msgstr "tidak dapat mengaktifkan socket untuk menerima koneksi: %s"
-#: nscd/connections.c:955
+#: nscd/connections.c:1043
#, c-format
msgid "provide access to FD %d, for %s"
msgstr "menyediakan akses ke FD %d, untuk %s"
-#: nscd/connections.c:967
+#: nscd/connections.c:1055
#, c-format
msgid "cannot handle old request version %d; current version is %d"
msgstr "tidak dapat menangani versi permintaan lama %d; versi sekarang adalah %d"
-#: nscd/connections.c:1009 nscd/connections.c:1062
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr "permintaan dari %ld tidak dapat ditangani karena tidak ada ijin"
+
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr "permintaan dari '%s' [%ld] tidak dapat ditangani karena tidak ada ijin"
+
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr "permintaan tidak dapat ditangani karena tidak ada ijin"
+
+#: nscd/connections.c:1125 nscd/connections.c:1178
#, c-format
msgid "cannot write result: %s"
msgstr "tidak dapat menulis hasil: %s"
-#: nscd/connections.c:1145
+#: nscd/connections.c:1261
#, c-format
msgid "error getting caller's id: %s"
msgstr "error memperoleh id pemanggil: %s"
-#: nscd/connections.c:1204
+#: nscd/connections.c:1320
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "tidak dapat membuka /proc/self/cmdline: %s; menonaktifkan mode paranoia"
-#: nscd/connections.c:1218
+#: nscd/connections.c:1334
#, c-format
msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "tidak dapat membaca /proc/self/cmdline: %s; menonaktifkan mode paranoia"
-#: nscd/connections.c:1258
+#: nscd/connections.c:1374
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
msgstr "tidak dapat mengubah ke UID lama: %s; menonaktifkan mode paranoia"
-#: nscd/connections.c:1268
+#: nscd/connections.c:1384
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
msgstr "tidak dapat mengubah ke GID lama: %s; menonaktifkan mode paranoia"
-#: nscd/connections.c:1281
+#: nscd/connections.c:1397
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
msgstr "tidak dapat berubah ke direktori kerja lama: %s; menonaktifkan mode paranoia"
-#: nscd/connections.c:1310
+#: nscd/connections.c:1429
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
msgstr "re-exec gagal: %s; menonaktifkan mode paranoia"
-#: nscd/connections.c:1319
+#: nscd/connections.c:1438
#, c-format
msgid "cannot change current working directory to \"/\": %s"
msgstr "tidak dapat mengubah direktori kerja ke \"/\": %s"
-#: nscd/connections.c:1437
+#: nscd/connections.c:1644
#, c-format
msgid "short read while reading request: %s"
msgstr "pembacaan singkat ketika membaca permintaan: %s"
-#: nscd/connections.c:1468
+#: nscd/connections.c:1677
#, c-format
msgid "key length in request too long: %d"
msgstr "panjang kunci dalam permintaan terlalu panjang: %d"
-#: nscd/connections.c:1481
+#: nscd/connections.c:1690
#, c-format
msgid "short read while reading request key: %s"
msgstr "pembacaan singkat ketika membaca permintaan kunci: %s"
-#: nscd/connections.c:1490
+#: nscd/connections.c:1699
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
msgstr "handle_request: permintaan diterima (Versi = %d) dari PID %ld"
-#: nscd/connections.c:1495
+#: nscd/connections.c:1704
#, c-format
msgid "handle_request: request received (Version = %d)"
msgstr "handle_request: permintaan diterima (Versi = %d)"
-#: nscd/connections.c:1856
+#: nscd/connections.c:1903 nscd/connections.c:2101
#, c-format
-msgid "could only start %d threads; terminating"
-msgstr "hanya dapat memulai %d threads; mengakhiri"
+msgid "disabled inotify after read error %d"
+msgstr "menonaktifkan inotify setelah error membaca %d"
+
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr "tidak dapat menginisialisasi variabel kondisional"
-#: nscd/connections.c:1904 nscd/connections.c:1905 nscd/connections.c:1922
-#: nscd/connections.c:1931 nscd/connections.c:1949 nscd/connections.c:1960
-#: nscd/connections.c:1971
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr "tidak dapat memulai threads pembersihan; mengakhiri"
+
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr "tidak dapat memulai threads pekerja apapun; mengakhiri"
+
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
#, c-format
msgid "Failed to run nscd as user '%s'"
msgstr "Gagal untuk menjalankan nscd sebagai pengguna '%s'"
-#: nscd/connections.c:1923
+#: nscd/connections.c:2322
#, c-format
msgid "initial getgrouplist failed"
msgstr "inisial getgrouplist gagal"
-#: nscd/connections.c:1932
+#: nscd/connections.c:2331
#, c-format
msgid "getgrouplist failed"
msgstr "getgrouplist gagal"
-#: nscd/connections.c:1950
+#: nscd/connections.c:2349
#, c-format
msgid "setgroups failed"
msgstr "setgroups gagal"
-#: nscd/grpcache.c:402 nscd/hstcache.c:418 nscd/initgrcache.c:412
-#: nscd/pwdcache.c:397 nscd/servicescache.c:343
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
#, c-format
msgid "short write in %s: %s"
msgstr "penulisan pendek dalam %s: %s"
-#: nscd/grpcache.c:445 nscd/initgrcache.c:78
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
msgstr "Belum ditemukan \"%s\" dalam grup cache!"
-#: nscd/grpcache.c:447 nscd/initgrcache.c:80
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
msgstr "Reloading \"%s\" dalam grup cache!"
-#: nscd/grpcache.c:524
+#: nscd/grpcache.c:517
#, c-format
msgid "Invalid numeric gid \"%s\"!"
msgstr "Numerik gid \"%s\" tidak valid !"
-#: nscd/mem.c:383
+#: nscd/mem.c:457
#, c-format
msgid "freed %zu bytes in %s cache"
msgstr "dibebaskan %zu bytes dalam %s cache"
-#: nscd/mem.c:512
+#: nscd/mem.c:594
#, c-format
msgid "no more memory for database '%s'"
msgstr "tidak ada memori lagi untuk basis data '%s'"
-#: nscd/nscd.c:98
+#: nscd/nscd.c:101
msgid "Read configuration data from NAME"
msgstr "Baca data konfigurasi dari NAMA"
-#: nscd/nscd.c:100
+#: nscd/nscd.c:103
msgid "Do not fork and display messages on the current tty"
msgstr "Jangan fork dan tampilkan pesan dalam tty sekarang"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "NUMBER"
msgstr "NOMOR"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "Start NUMBER threads"
msgstr "Mulai JUMLAH threads"
-#: nscd/nscd.c:102
+#: nscd/nscd.c:105
msgid "Shut the server down"
msgstr "Matikan server"
-#: nscd/nscd.c:103
-msgid "Print current configuration statistic"
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
msgstr "Tampilkan statistik konfigurasi sekarang"
-#: nscd/nscd.c:104
+#: nscd/nscd.c:107
msgid "TABLE"
msgstr "TABEL"
-#: nscd/nscd.c:105
+#: nscd/nscd.c:108
msgid "Invalidate the specified cache"
msgstr "Cache yang dispesifikasikan tidak valid"
-#: nscd/nscd.c:106
+#: nscd/nscd.c:109
msgid "TABLE,yes"
msgstr "TABEL,ya"
-#: nscd/nscd.c:107
+#: nscd/nscd.c:110
msgid "Use separate cache for each user"
msgstr "Gunakan pemisah cache untuk setiap pengguna"
-#: nscd/nscd.c:112
+#: nscd/nscd.c:115
msgid "Name Service Cache Daemon."
msgstr "Cache Layanan Pengguna Daemon."
-#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
#, c-format
msgid "wrong number of arguments"
msgstr "jumlah salah dari argumen"
-#: nscd/nscd.c:154
+#: nscd/nscd.c:157
#, c-format
msgid "failure while reading configuration file; this is fatal"
msgstr "gagal ketika membaca berkas konfigurasi; ini adalah fatal"
-#: nscd/nscd.c:163
+#: nscd/nscd.c:166
#, c-format
msgid "already running"
msgstr "telah berjalan"
-#: nscd/nscd.c:178 nscd/nscd.c:233
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
msgid "cannot fork"
msgstr "tidak dapat fork"
-#: nscd/nscd.c:241
+#: nscd/nscd.c:244
#, c-format
msgid "cannot change current working directory to \"/\""
msgstr "tidak dapat mengubah direktori kerja ke \"/\""
-#: nscd/nscd.c:249
+#: nscd/nscd.c:252
msgid "Could not create log file"
msgstr "Tidak dapat membuat berkas log"
-#: nscd/nscd.c:302 nscd/nscd.c:327 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
msgid "Only root is allowed to use this option!"
-msgstr "Hanya root yang diperbolehkan untuk menggunakan opsi ini!"
+msgstr "Hanya root yang diperbolehkan untuk menggunakan pilihan ini!"
+
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr "'%s' bukan tipe perpustakaan yang dikenal"
-#: nscd/nscd.c:364 nscd/nscd_stat.c:191
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
msgid "write incomplete"
msgstr "penulisan tidak lengkap"
-#: nscd/nscd.c:375
+#: nscd/nscd.c:381
#, c-format
msgid "cannot read invalidate ACK"
msgstr "tidak dapat membaca invalidate ACK"
-#: nscd/nscd.c:381
+#: nscd/nscd.c:387
#, c-format
msgid "invalidation failed"
msgstr "invalidation gagal"
-#: nscd/nscd.c:391
+#: nscd/nscd.c:397
#, c-format
msgid "secure services not implemented anymore"
msgstr "layanan aman tidak terimplementasi lagi"
@@ -3905,37 +3964,37 @@ msgstr "basis data %s tidak didukung"
msgid "Parse error: %s"
msgstr "Parse error: %s"
-#: nscd/nscd_conf.c:193
+#: nscd/nscd_conf.c:194
#, c-format
msgid "Must specify user name for server-user option"
-msgstr "Harus menspesifikasikan nama pengguna untuk opsi server-pengguna"
+msgstr "Harus menspesifikasikan nama pengguna untuk pilihan server-pengguna"
-#: nscd/nscd_conf.c:200
+#: nscd/nscd_conf.c:201
#, c-format
msgid "Must specify user name for stat-user option"
-msgstr "Harus menspesifikasikan nama pengguna untuk opsi stat-user"
+msgstr "Harus menspesifikasikan nama pengguna untuk pilihan stat-user"
-#: nscd/nscd_conf.c:244
+#: nscd/nscd_conf.c:245
#, c-format
msgid "invalid value for 'reload-count': %u"
msgstr "nilai tidak valid untuk 'reload-count': %u"
-#: nscd/nscd_conf.c:259
+#: nscd/nscd_conf.c:260
#, c-format
msgid "Must specify value for restart-interval option"
-msgstr "Harus menspesifikasikan nilai untuk opsi restart-interval"
+msgstr "Harus menspesifikasikan nilai untuk pilihan restart-interval"
-#: nscd/nscd_conf.c:273
+#: nscd/nscd_conf.c:274
#, c-format
msgid "Unknown option: %s %s %s"
-msgstr "Opsi tidak dikenal: %s %s %s"
+msgstr "Pilihan tidak dikenal: %s %s %s"
-#: nscd/nscd_conf.c:286
+#: nscd/nscd_conf.c:287
#, c-format
msgid "cannot get current working directory: %s; disabling paranoia mode"
msgstr "tidak dapat memperoleh direktori kerja sekarang: %s; menonaktifkan mode paranoia"
-#: nscd/nscd_conf.c:306
+#: nscd/nscd_conf.c:307
#, c-format
msgid "maximum file size for %s database too small"
msgstr "ukuran berkas maksimal untuk %s basis data terlalu kecil"
@@ -3956,7 +4015,7 @@ msgstr "tidak"
#: nscd/nscd_stat.c:168
#, c-format
msgid "Only root or %s is allowed to use this option!"
-msgstr "Hanya root atau %s yang diperbolehkan untuk menggunakan opsi ini!"
+msgstr "Hanya root atau %s yang diperbolehkan untuk menggunakan pilihan ini!"
#: nscd/nscd_stat.c:179
#, c-format
@@ -4065,17 +4124,17 @@ msgstr ""
"%15<PRIuMAX> alokasi memori gagal\n"
"%15s periksa /etc/%s untuk perubahan\n"
-#: nscd/pwdcache.c:440
+#: nscd/pwdcache.c:443
#, c-format
msgid "Haven't found \"%s\" in password cache!"
msgstr "Belum ditemukan \"%s\" dalam cache kata-kunci!"
-#: nscd/pwdcache.c:442
+#: nscd/pwdcache.c:445
#, c-format
msgid "Reloading \"%s\" in password cache!"
msgstr "Reloading \"%s\" dalam cache kata-kunci!"
-#: nscd/pwdcache.c:520
+#: nscd/pwdcache.c:523
#, c-format
msgid "Invalid numeric uid \"%s\"!"
msgstr "uid numerik \"%s\" tidak valid !"
@@ -4151,7 +4210,11 @@ msgstr "Error memperoleh konteks dari nscd"
msgid "Error getting sid from context"
msgstr "Error memperoleh sid dari konteks"
-#: nscd/selinux.c:399
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr "dukungan waktu-kompilasi untuk kebijakan basis data tidak ada"
+
+#: nscd/selinux.c:407
#, c-format
msgid ""
"\n"
@@ -4197,28 +4260,24 @@ msgid "Service configuration to be used"
msgstr "Konfigurasi layanan yang akan digunakan"
#: nss/getent.c:62
-msgid ""
-"Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Dapatkan masukan dari basis data administrasi.\vUntuk instruksi pelaporan bug, mohon lihat:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get entries from administrative database."
+msgstr "Dapatkan masukan dari basis data administrasi."
-#: nss/getent.c:145 nss/getent.c:394
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
msgid "Enumeration not supported on %s\n"
msgstr "Enumerasi tidak didukung di %s\n"
-#: nss/getent.c:782
+#: nss/getent.c:794
#, c-format
msgid "Unknown database name"
msgstr "Nama basis data tidak dikenal"
-#: nss/getent.c:808
+#: nss/getent.c:820
msgid "Supported databases:\n"
msgstr "Basis data yang didukung:\n"
-#: nss/getent.c:868
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
msgstr "Basis data tidak dikenal: %s\n"
@@ -4292,151 +4351,165 @@ msgstr "Penggunaan: %s [-v spesifikasi] nama_variabel [nama-jalur]\n"
msgid " %s -a [pathname]\n"
msgstr " %s -a [nama-jalur]\n"
-#: posix/getconf.c:1067
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
+"Penggunaan: getconf [-v SPEK] VAR\n"
+" atau: getconf [-v SPEK] VAR_JALUR JALUR\n"
+"\n"
+"Dapatkan nilai konfigurasi untuk variabel VAR, atau untuk variabel VAR_JALUR\n"
+"untuk jalur PATH. Jika SPEK diberikan, berikan nilai untuk kompilasi\n"
+"lingkungan SPEK.\n"
+"\n"
+
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
msgstr "spesifikasi tidak dikenal \"%s\""
-#: posix/getconf.c:1095
+#: posix/getconf.c:1109
#, c-format
msgid "Couldn't execute %s"
msgstr "Tidak dapat menjalankan %s"
-#: posix/getconf.c:1135 posix/getconf.c:1151
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
msgstr "tidak terdefinisi"
-#: posix/getconf.c:1173
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
msgstr "Variabel `%s' tidak dikenal"
-#: posix/getopt.c:571 posix/getopt.c:587
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: opsi `%s' adalah ambigu\n"
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: pilihan '%s' adalah ambigu\n"
-#: posix/getopt.c:620 posix/getopt.c:624
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: opsi `--%s' tidak mengijinkan sebuah argumen\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: pilihan '--%s' tidak mengijinkan sebuah argumen\n"
-#: posix/getopt.c:633 posix/getopt.c:638
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr "%s: opsi `%c%s' tidak mengijinkan sebuah argumen\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: pilihan '%c%s' tidak mengijinkan sebuah argumen\n"
-#: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
-#: posix/getopt.c:1035
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: opsi `%s' membutuhkan sebuah argumen\n"
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: pilihan '%s' membutuhkan sebuah argumen\n"
-#: posix/getopt.c:738 posix/getopt.c:741
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: opsi tidak dikenal `--%s'\n"
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: pilihan tidak dikenal '--%s'\n"
-#: posix/getopt.c:749 posix/getopt.c:752
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: opsi tidak dikenal `%c%s'\n"
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: pilihan tidak dikenal '%c%s'\n"
-#: posix/getopt.c:804 posix/getopt.c:807
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr "%s: opsi tidak legal -- %c\n"
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: pilihan tidak valid -- '%c'\n"
-#: posix/getopt.c:813 posix/getopt.c:816
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
-msgid "%s: invalid option -- %c\n"
-msgstr "%s: opsi tidak valid -- %c\n"
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: pilihan membutuhkan sebuah argumen -- '%c'\n"
-#: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
-#: posix/getopt.c:1106
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: opsi membutuhkan sebuah argumen -- %c\n"
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: pilihan '-W %s' adalah ambigu\n"
-#: posix/getopt.c:937 posix/getopt.c:953
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: opsi `-W %s' adalah ambigu\n"
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: pilihan '-W %s' tidak mengijinkan sebuah argumen\n"
-#: posix/getopt.c:977 posix/getopt.c:995
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr "%s: opsi `-W %s' tidak mengijinkan sebuah argumen\n"
-
-#: posix/regcomp.c:135
+#: posix/regcomp.c:136
msgid "No match"
msgstr "Tidak cocok"
-#: posix/regcomp.c:138
+#: posix/regcomp.c:139
msgid "Invalid regular expression"
msgstr "regular ekspresi tidak valid"
-#: posix/regcomp.c:141
+#: posix/regcomp.c:142
msgid "Invalid collation character"
msgstr "karakter collation tidak valid"
-#: posix/regcomp.c:144
+#: posix/regcomp.c:145
msgid "Invalid character class name"
msgstr "nama kelas karakter tidak valid"
-#: posix/regcomp.c:147
+#: posix/regcomp.c:148
msgid "Trailing backslash"
msgstr "akhiran backslash"
-#: posix/regcomp.c:150
+#: posix/regcomp.c:151
msgid "Invalid back reference"
msgstr "referensi back tidak valid"
-#: posix/regcomp.c:153
+#: posix/regcomp.c:154
msgid "Unmatched [ or [^"
msgstr "Tidak cocok [ atau [^"
-#: posix/regcomp.c:156
+#: posix/regcomp.c:157
msgid "Unmatched ( or \\("
msgstr "Tidak cocok ( atau \\("
-#: posix/regcomp.c:159
+#: posix/regcomp.c:160
msgid "Unmatched \\{"
msgstr "Tidak cocok \\{"
-#: posix/regcomp.c:162
+#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
msgstr "Isi tidak valid dari \\{\\}"
-#: posix/regcomp.c:165
+#: posix/regcomp.c:166
msgid "Invalid range end"
msgstr "Akhir jangkauan tidak valid"
-#: posix/regcomp.c:168
+#: posix/regcomp.c:169
msgid "Memory exhausted"
msgstr "Kehabisan memori"
-#: posix/regcomp.c:171
+#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
msgstr "ekspresi regular yang mengawali tidak valid"
-#: posix/regcomp.c:174
+#: posix/regcomp.c:175
msgid "Premature end of regular expression"
msgstr "Premature akhir dari ekspresi regular"
-#: posix/regcomp.c:177
+#: posix/regcomp.c:178
msgid "Regular expression too big"
msgstr "Ekspresi regular terlalu besar"
-#: posix/regcomp.c:180
+#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
msgstr "Tidak cocok ) atau \\)"
-#: posix/regcomp.c:660
+#: posix/regcomp.c:681
msgid "No previous regular expression"
msgstr "Tidak ada ekspresi regular sebelumnya"
-#: posix/wordexp.c:1798
+#: posix/wordexp.c:1832
msgid "parameter null or not set"
msgstr "parameter kosong atau tidak diset"
@@ -4520,133 +4593,138 @@ msgstr "Sinyal waktu-nyata %d"
msgid "Unknown signal %d"
msgstr "Sinyal %d tidak dikenal"
-#: sunrpc/auth_unix.c:114
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create: kehabisan memori\n"
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "kehabisan memori\n"
#: sunrpc/auth_unix.c:350
msgid "auth_unix.c: Fatal marshalling problem"
msgstr "auth_unix.c: Masalah marshalling fatal"
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; versi rendah = %lu, versi tinggi = %lu"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s: %s; versi rendah = %lu, versi tinggi = %lu"
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr "; kenap = "
+#: sunrpc/clnt_perr.c:112
+#, c-format
+msgid "%s: %s; why = %s\n"
+msgstr "%s: %s; kenapa = %s\n"
-#: sunrpc/clnt_perr.c:132
+#: sunrpc/clnt_perr.c:114
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(error authentifikasi tidak diketahui - %d)"
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s: %s; kenapa = (error authentifikasi tidak diketahui - %d)\n"
-#: sunrpc/clnt_perr.c:172
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
msgstr "RPC: Sukses"
-#: sunrpc/clnt_perr.c:175
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
msgstr "RPC: Tidak dapat menenkode argumen"
-#: sunrpc/clnt_perr.c:179
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
msgstr "RPC: Tidak dapat mendekode hasil"
-#: sunrpc/clnt_perr.c:183
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
msgstr "RPC: Tidak dapat mengirim"
-#: sunrpc/clnt_perr.c:187
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
msgstr "RPC: Tidak dapat menerima"
-#: sunrpc/clnt_perr.c:191
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
msgstr "RPC: Kehabisan waktu"
-#: sunrpc/clnt_perr.c:195
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
msgstr "RPC: Versi dari RPC tidak kompatibel"
-#: sunrpc/clnt_perr.c:199
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
msgstr "RPC: Authentifikasi error"
-#: sunrpc/clnt_perr.c:203
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
msgstr "RPC: Aplikasi tidak tersedia"
-#: sunrpc/clnt_perr.c:207
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
msgstr "RPC: Aplikasi/versi tidak cocok"
-#: sunrpc/clnt_perr.c:211
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
msgstr "RPC: Prosedur tidak tersedia"
-#: sunrpc/clnt_perr.c:215
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
msgstr "RPC: Server tidak dapat mendekode argumen"
-#: sunrpc/clnt_perr.c:219
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
msgstr "RPC: Remote sistem error"
-#: sunrpc/clnt_perr.c:223
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
msgstr "RPC: Host tidak dikenal"
-#: sunrpc/clnt_perr.c:227
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
msgstr "RPC: Protokol tidak dikenal"
-#: sunrpc/clnt_perr.c:231
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
msgstr "RPC: Port mapper gagal"
-#: sunrpc/clnt_perr.c:235
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
msgstr "RPC: Aplikasi tidak terdaftar"
-#: sunrpc/clnt_perr.c:239
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
msgstr "RPC: Gagal (error tidak terspesifikasi)"
-#: sunrpc/clnt_perr.c:280
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
msgstr "RPC: (kode error tidak diketahui)"
-#: sunrpc/clnt_perr.c:342
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
msgstr "Authentifikasi OK"
-#: sunrpc/clnt_perr.c:345
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
msgstr "Client credential tidak valid"
-#: sunrpc/clnt_perr.c:349
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
msgstr "Server kredensial ditolak"
-#: sunrpc/clnt_perr.c:353
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
msgstr "client pemverifikasi tidak valid"
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
msgstr "Server menolak pemeverifikasi"
-#: sunrpc/clnt_perr.c:361
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
msgstr "Client kredensial terlalu lemah"
-#: sunrpc/clnt_perr.c:365
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
msgstr "Tidak valid server pemeverifier"
-#: sunrpc/clnt_perr.c:369
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
msgstr "Gagal (error tidak terspesifikasi)"
@@ -4654,18 +4732,6 @@ msgstr "Gagal (error tidak terspesifikasi)"
msgid "clnt_raw.c: fatal header serialization error"
msgstr "clnt_raw.c: fatal header serialisasi error"
-#: sunrpc/clnt_tcp.c:131
-msgid "clnttcp_create: out of memory\n"
-msgstr "clnttcp_create: kehabisan memori\n"
-
-#: sunrpc/clnt_udp.c:139
-msgid "clntudp_create: out of memory\n"
-msgstr "clntudp_create: kehabisan memori\n"
-
-#: sunrpc/clnt_unix.c:128
-msgid "clntunix_create: out of memory\n"
-msgstr "clntunix_create: kehabisan memori\n"
-
#: sunrpc/pm_getmaps.c:83
msgid "pmap_getmaps.c: rpc problem"
msgstr "pmap_getmaps.c: masalah rpc"
@@ -4680,7 +4746,7 @@ msgstr "Tidak dapat membuat socket untuk broadcast rpc"
#: sunrpc/pmap_rmt.c:255
msgid "Cannot set socket option SO_BROADCAST"
-msgstr "Tidak dapat menset socket opsi SO_BROADCAST"
+msgstr "Tidak dapat menset socket pilihan SO_BROADCAST"
#: sunrpc/pmap_rmt.c:307
msgid "Cannot send broadcast packet"
@@ -4694,119 +4760,244 @@ msgstr "Masalah poll broadcast"
msgid "Cannot receive reply to broadcast"
msgstr "Tidak dapat menerima balasan ke broadcast"
-#: sunrpc/rpc_main.c:286
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr "%s: keluaran akan overwrite %s\n"
-#: sunrpc/rpc_main.c:293
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr "%s: tidak dapat membuka %s: %m\n"
-#: sunrpc/rpc_main.c:305
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
msgstr "%s: ketika menulis keluaran %s: %m"
-#: sunrpc/rpc_main.c:340
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
msgstr "tidak dapat menemukan C preprosesor: %s\n"
-#: sunrpc/rpc_main.c:348
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
msgstr "tidak dapat menemukan C preprosesor apapun (cpp)\n"
-#: sunrpc/rpc_main.c:417
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
msgstr "%s: C preprosesor gagal dengan sinyal %d\n"
-#: sunrpc/rpc_main.c:420
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
msgstr "%s: C preprosesor gagal dengan kode keluar %d\n"
-#: sunrpc/rpc_main.c:460
+#: sunrpc/rpc_main.c:464
#, c-format
msgid "illegal nettype: `%s'\n"
msgstr "nettype tidak legal: `%s'\n"
-#: sunrpc/rpc_main.c:1122
+#: sunrpc/rpc_main.c:1130
#, c-format
msgid "rpcgen: too many defines\n"
msgstr "rpcgen: terlalu banyak definisi\n"
-#: sunrpc/rpc_main.c:1134
+#: sunrpc/rpc_main.c:1142
#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr "rpcgen: arglist koding error\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1167
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
msgstr "berkas `%s' telah ada dan mungkin overwritten\n"
-#: sunrpc/rpc_main.c:1212
+#: sunrpc/rpc_main.c:1220
#, c-format
msgid "Cannot specify more than one input file!\n"
msgstr "Tidak dapat menspesifikasikan lebih dari satu berkas masukan!\n"
-#: sunrpc/rpc_main.c:1382
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
msgstr "Implementasi ini tidak mendukung newstyle atau MT-safe kode!\n"
-#: sunrpc/rpc_main.c:1391
+#: sunrpc/rpc_main.c:1403
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
msgstr "Tidak dapat menggunakan netid flag dengan inetd flag!\n"
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
msgstr "Tidak dapat menggunakan netid flag tanpa TIRPC!\n"
-#: sunrpc/rpc_main.c:1410
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
msgstr "Tidak dapat menggunakan tabel flags dengan newstyle!\n"
-#: sunrpc/rpc_main.c:1429
+#: sunrpc/rpc_main.c:1441
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
msgstr "\"infile\" dibutuhkan untuk template pembuatan flags.\n"
-#: sunrpc/rpc_main.c:1434
+#: sunrpc/rpc_main.c:1446
#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr "Tidak dapat memiliki lebih dari satu berkas pembuatan bendera!\n"
-#: sunrpc/rpc_main.c:1443
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
msgstr "penggunaan: %s infile\n"
-#: sunrpc/rpc_main.c:1444
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
msgstr "\t%s [-abkCLNTM][-Dnama[=nilai]] [-i size] [-I [-K detik]] [-Y jalur] infile\n"
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
-#: sunrpc/rpc_main.c:1448
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
msgstr "\t%s [-s nettype]* [-o outfile] [infile]\n"
-#: sunrpc/rpc_main.c:1449
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
msgstr "\t%s [-n netid]* [-o outfile] [infile]\n"
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr "pilihan:\n"
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr "-a\t\tbuat seluruh berkas, termasuk contoh\n"
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr "-b\t\tmode kompabilitas kebelakang (buat kode untuk SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr "-c\t\tbuat rutinitas XDR\n"
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr "-C\t\tmode ANSI C\n"
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr "-Dnama[=nilai]\tdefinisikan sebuah simbol (sama seperti #define)\n"
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr "-h\t\thasilkan berkas kepala\n"
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr "-i ukuran\t\tukuran dimana untuk memulai kodee inline\n"
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr "-I\t\thasilkan kode untuk dukungan inetd dalam server (untuk SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr "-K detik\tserver keluar setelah K detik untuk istirahat\n"
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr "-l\t\tbuat stubs sisi klien\n"
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr "-L\t\terror server akan ditampilkan ke sistem pencatatan\n"
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr "-m\t\tbuat stubs sisi server\n"
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr "-M\t\thasilkan kode MT-safe\n"
+
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr "-n netid\tbuat kode server yang mendukung netid bernama\n"
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr "-N\t\tdukung argumen ganda dan panggil-dengan-nilai\n"
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr "-o berkas keluar\tnama dari berkas keluaran\n"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr "-s nettype\tbuat kode server yang mendukung nettype bernama\n"
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr "-Sc\t\tbuat contoh kode klien yang menggunakan prosedur remote\n"
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr "-Ss\t\tbuat contoh kode server yang mendefinisikan prosedur remote\n"
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr "-Sm \t\tbuat template makefile \n"
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr "-t\t\tbuat tabel eksekusi RPC\n"
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr "-T\t\tbuat kode untuk mendukung tabel eksekusi RPC\n"
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr ""
+"-Y jalur\t\n"
+"ama direktori untuk menemukan C preprosesor (cpp)\n"
+
#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
msgstr "konstan atau identifier diduga"
@@ -4827,79 +5018,79 @@ msgstr "string karakter kosong"
msgid "preprocessor error"
msgstr "preprosesor error"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
msgstr "aplikasi %lu tidak tersedia\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
msgstr "aplikasi %lu versi %lu tidak tersedia\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr "aplikasi %lu versi %lu siap dan menunggu\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
msgstr "rpcinfo: tidak dapat menghubungi portmapper"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
msgstr "Tidak ada aplikasi remote yang terdaftar.\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
msgstr " aplikasi vers proto port\n"
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
msgstr "(tidak diketahui)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
msgstr "rpcinfo: broadcast gagal: %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
msgstr "Maaf. Anda bukan root\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
msgstr "rpcinfo: Tidak dapat menghapus pendaftaran untuk aplikasi %s versi %s\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
msgstr "Penggunaan: rpcinfo [ -n nomor port ] -u host prognum [ versnum ]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr " rpcinfo [ -n nomor port ] -t host prognum [ versnum ]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
msgstr " rpcinfo -p [ host ]\n"
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
msgstr " rpcinfo -b nomor program versnum\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
msgstr " rpcinfo -d nomor program versnum\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr "rpcinfo: %s layanan tidak dikenal\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
msgstr "rpcinfo: %s host tidak dikenal\n"
@@ -4948,14 +5139,6 @@ msgstr "svc_tcp.c - tcp masalah pembuatan socket"
msgid "svc_tcp.c - cannot getsockname or listen"
msgstr "svc_tcp.c - tidak dapat getsockname atau mendengarkan"
-#: sunrpc/svc_tcp.c:179
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create: kehabisan memori\n"
-
-#: sunrpc/svc_tcp.c:218
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp: makefd_xprt: kehabisan memori\n"
-
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
msgstr "svcudp_create: masalah pembuatan socket"
@@ -4964,39 +5147,35 @@ msgstr "svcudp_create: masalah pembuatan socket"
msgid "svcudp_create - cannot getsockname"
msgstr "svcudp_create - tidak dapat getsockname"
-#: sunrpc/svc_udp.c:152
-msgid "svcudp_create: out of memory\n"
-msgstr "svcudp_create: kehabisan memori\n"
-
-#: sunrpc/svc_udp.c:174
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
msgstr "svcudp_create: xp_pad terlalu kecil untuk IP_PKTINFO\n"
-#: sunrpc/svc_udp.c:474
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
msgstr "enablecache: cache telah aktif"
-#: sunrpc/svc_udp.c:480
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
msgstr "enablecache: tidak dapat mengalokasikan cache"
-#: sunrpc/svc_udp.c:489
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
msgstr "enablecache: tidak dapat mengalokasikan data cache"
-#: sunrpc/svc_udp.c:497
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
msgstr "enablecache: tidak dapat mengalokasikan fifo cache"
-#: sunrpc/svc_udp.c:532
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
msgstr "cache_set: korban tidak ditemukan"
-#: sunrpc/svc_udp.c:543
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
msgstr "cache_set: alokasi korban gagal"
-#: sunrpc/svc_udp.c:550
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
msgstr "cache_set: tidak dapat mengalokasikan rpc_buffer baru"
@@ -5008,34 +5187,6 @@ msgstr "svc_unix.c - AF_UNIX masalah pembuatan socket"
msgid "svc_unix.c - cannot getsockname or listen"
msgstr "svc_unix.c - tidak dapat getsockname atau mendengarkan"
-#: sunrpc/svc_unix.c:176
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create: kehabisan memori\n"
-
-#: sunrpc/svc_unix.c:215
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix: makefd_xprt: kehabisan memori\n"
-
-#: sunrpc/xdr.c:566
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes: kehabisan memori\n"
-
-#: sunrpc/xdr.c:718
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string: kehabisan memori\n"
-
-#: sunrpc/xdr_array.c:106
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array: kehabisan memori\n"
-
-#: sunrpc/xdr_rec.c:156
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create: kehabisan memori\n"
-
-#: sunrpc/xdr_ref.c:86
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_reference: kehabisan memori\n"
-
#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
msgid "Hangup"
msgstr "Memutuskan"
@@ -6097,76 +6248,85 @@ msgstr "%s adalah untuk mesin tidak dikenal %d.\n"
msgid "makecontext: does not know how to handle more than 8 arguments\n"
msgstr "makecontext: tidak tahu bagaimana menangani lebih dari 8 argumen\n"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
+"Penggunaan: lddlibc4 BERKAS\n"
+"\n"
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
msgid "cannot open `%s'"
msgstr "tidak dapat membuka `%s'"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
msgid "cannot read header from `%s'"
msgstr "tidak dapat membaca header dari `%s'"
-#: timezone/zdump.c:211
+#: timezone/zdump.c:210
msgid "lacks alphabetic at start"
msgstr "kekurangan alphabet di awal"
-#: timezone/zdump.c:213
+#: timezone/zdump.c:212
msgid "has fewer than 3 alphabetics"
msgstr "memiliki lebih kecil dari 3 alphabet"
-#: timezone/zdump.c:215
+#: timezone/zdump.c:214
msgid "has more than 6 alphabetics"
msgstr "lebih dari 6 alphabet"
-#: timezone/zdump.c:223
+#: timezone/zdump.c:222
msgid "differs from POSIX standard"
msgstr "berbeda dari standar POSIX"
-#: timezone/zdump.c:229
+#: timezone/zdump.c:228
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
msgstr "%s: peringatan: daerah \"%s\" kependekan \"%s\" %s\n"
-#: timezone/zdump.c:280
+#: timezone/zdump.c:279
#, c-format
msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
msgstr "%s: penggunaan adalah %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] nama-daerah ...\n"
-#: timezone/zdump.c:297
+#: timezone/zdump.c:296
#, c-format
msgid "%s: wild -c argument %s\n"
msgstr "%s: argumen -c ganas %s\n"
-#: timezone/zdump.c:388
+#: timezone/zdump.c:387
msgid "Error writing to standard output"
msgstr "Error menulis ke keluaran standar"
-#: timezone/zdump.c:411
+#: timezone/zdump.c:410
#, c-format
msgid "%s: use of -v on system with floating time_t other than float or double\n"
msgstr "%s: penggunaan -v di sistem dengan pecahan time_t selain dari float atau double\n"
-#: timezone/zic.c:392
+#: timezone/zic.c:388
#, c-format
msgid "%s: Memory exhausted: %s\n"
msgstr "%s: Kehabisan memori: %s\n"
-#: timezone/zic.c:451
+#: timezone/zic.c:434
#, c-format
msgid "\"%s\", line %d: %s"
msgstr "\"%s\", baris %d: %s"
-#: timezone/zic.c:454
+#: timezone/zic.c:437
#, c-format
msgid " (rule from \"%s\", line %d)"
msgstr " (aturan dari \"%s\", baris %d)"
-#: timezone/zic.c:466
+#: timezone/zic.c:449
msgid "warning: "
msgstr "peringatan: "
-#: timezone/zic.c:476
+#: timezone/zic.c:459
#, c-format
msgid ""
"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
@@ -6175,335 +6335,407 @@ msgstr ""
"%s: penggunaan adalah %s [ --version ] [ -v ] [ -l waktu-lokal ] [ -p posixrules ] \\\n"
"\t[ -d direktori ] [ -L leapseconds ] [ -y tahun-adalah-tipe ] [ nama-berkas ... ]\n"
-#: timezone/zic.c:511
+#: timezone/zic.c:494
msgid "wild compilation-time specification of zic_t"
msgstr "spesifikasi waktu-kompilasi ganas dari zic_t"
-#: timezone/zic.c:528
+#: timezone/zic.c:511
#, c-format
msgid "%s: More than one -d option specified\n"
-msgstr "%s: Lebih dari satu opsi -d dispesifikasikan\n"
+msgstr "%s: Lebih dari satu pilihan -d dispesifikasikan\n"
-#: timezone/zic.c:538
+#: timezone/zic.c:521
#, c-format
msgid "%s: More than one -l option specified\n"
-msgstr "%s: Lebih dari satu opsi -l dispesifikasikan\n"
+msgstr "%s: Lebih dari satu pilihan -l dispesifikasikan\n"
-#: timezone/zic.c:548
+#: timezone/zic.c:531
#, c-format
msgid "%s: More than one -p option specified\n"
-msgstr "%s: Lebih dari satu opsi -p dispesifikasikan\n"
+msgstr "%s: Lebih dari satu pilihan -p dispesifikasikan\n"
-#: timezone/zic.c:558
+#: timezone/zic.c:541
#, c-format
msgid "%s: More than one -y option specified\n"
-msgstr "%s: Lebih dari satu opsi -y dispesifikasikan\n"
+msgstr "%s: Lebih dari satu pilihan -y dispesifikasikan\n"
-#: timezone/zic.c:568
+#: timezone/zic.c:551
#, c-format
msgid "%s: More than one -L option specified\n"
-msgstr "%s: Lebih dari satu opsi -L dispesifikasikan\n"
+msgstr "%s: Lebih dari satu pilihan -L dispesifikasikan\n"
-#: timezone/zic.c:617
+#: timezone/zic.c:600
msgid "link to link"
msgstr "link ke link"
-#: timezone/zic.c:682
+#: timezone/zic.c:665
msgid "hard link failed, symbolic link used"
msgstr "sambungan keras gagal, menggunakan sambungan simbolis"
-#: timezone/zic.c:690
+#: timezone/zic.c:673
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
msgstr "%s: Tidak dapat menghubungkan dari %s ke %s: %s\n"
-#: timezone/zic.c:762 timezone/zic.c:764
+#: timezone/zic.c:745 timezone/zic.c:747
msgid "same rule name in multiple files"
msgstr "nama aturan sama dalam beberapa berkas"
-#: timezone/zic.c:805
+#: timezone/zic.c:788
msgid "unruly zone"
msgstr "daerah unruly"
-#: timezone/zic.c:812
+#: timezone/zic.c:795
#, c-format
msgid "%s in ruleless zone"
msgstr "%s dalam daerah tidak beraturan"
-#: timezone/zic.c:833
+#: timezone/zic.c:816
msgid "standard input"
msgstr "masukan standar"
-#: timezone/zic.c:838
+#: timezone/zic.c:821
#, c-format
msgid "%s: Can't open %s: %s\n"
msgstr "%s: Tidak dapat membuka %s: %s\n"
-#: timezone/zic.c:849
+#: timezone/zic.c:832
msgid "line too long"
msgstr "baris terlalu panjang"
-#: timezone/zic.c:869
+#: timezone/zic.c:852
msgid "input line of unknown type"
msgstr "baris masukan dari tipe yang tidak dikenal"
-#: timezone/zic.c:885
+#: timezone/zic.c:868
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
msgstr "%s: Baris leap dalam bukan leap detik berkas %s\n"
-#: timezone/zic.c:892 timezone/zic.c:1329 timezone/zic.c:1351
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
msgstr "%s: panic: l_value %d tidak valid\n"
-#: timezone/zic.c:900
+#: timezone/zic.c:883
#, c-format
msgid "%s: Error reading %s\n"
msgstr "%s: Error membaca %s\n"
-#: timezone/zic.c:907
+#: timezone/zic.c:890
#, c-format
msgid "%s: Error closing %s: %s\n"
msgstr "%s: Error menutup %s: %s\n"
-#: timezone/zic.c:912
+#: timezone/zic.c:895
msgid "expected continuation line not found"
msgstr "diduga baris kelanjutan tidak ditemukan"
-#: timezone/zic.c:956 timezone/zic.c:2489 timezone/zic.c:2508
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
msgid "time overflow"
msgstr "waktu overflow"
-#: timezone/zic.c:960
+#: timezone/zic.c:943
msgid "24:00 not handled by pre-1998 versions of zic"
msgstr "24:00 tidak ditangani oleh versi sebelum 1998 dari zic"
-#: timezone/zic.c:963
+#: timezone/zic.c:946
msgid "values over 24 hours not handled by pre-2007 versions of zic"
msgstr "nilai lebih 24 jam tidak ditangani oleh versi sebelum 2007 dari zic"
-#: timezone/zic.c:976
+#: timezone/zic.c:959
msgid "wrong number of fields on Rule line"
msgstr "jumlah dari daerah salah dalam baris Aturan"
-#: timezone/zic.c:980
+#: timezone/zic.c:963
msgid "nameless rule"
msgstr "aturan tidak bernama"
-#: timezone/zic.c:985
+#: timezone/zic.c:968
msgid "invalid saved time"
msgstr "waktu disimpan tidak valid"
-#: timezone/zic.c:1006
+#: timezone/zic.c:989
msgid "wrong number of fields on Zone line"
msgstr "jumlah dari daerah dalam baris daerah salah"
-#: timezone/zic.c:1012
+#: timezone/zic.c:995
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
-msgstr "\"Daerah %s\" baris dan opsi -l secara mutual ekslusif"
+msgstr "\"Daerah %s\" baris dan pilihan -l secara mutual ekslusif"
-#: timezone/zic.c:1020
+#: timezone/zic.c:1003
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
-msgstr "\"Daerah %s\" baris dan opsi -p secara mutual ekslusif"
+msgstr "\"Daerah %s\" baris dan pilihan -p secara mutual ekslusif"
-#: timezone/zic.c:1032
+#: timezone/zic.c:1015
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
msgstr "duplikasi nama daerah %s (berkas \"%s\", baris %d)"
-#: timezone/zic.c:1048
+#: timezone/zic.c:1031
msgid "wrong number of fields on Zone continuation line"
msgstr "jumlah dari daerah salah di baris kelanjutan Daerah"
-#: timezone/zic.c:1088
+#: timezone/zic.c:1071
msgid "invalid UTC offset"
msgstr "ofset UTC tidak valid"
-#: timezone/zic.c:1091
+#: timezone/zic.c:1074
msgid "invalid abbreviation format"
msgstr "format kependekan tidak valid"
-#: timezone/zic.c:1120
+#: timezone/zic.c:1103
msgid "Zone continuation line end time is not after end time of previous line"
msgstr "baris kelanjutan Daerah akhir waktu tidak setelah akhir waktu dari baris sebelumnya"
-#: timezone/zic.c:1148
+#: timezone/zic.c:1131
msgid "wrong number of fields on Leap line"
msgstr "jumlah dari daerah salah di baris Leap"
-#: timezone/zic.c:1157
+#: timezone/zic.c:1140
msgid "invalid leaping year"
msgstr "tahun leapin tidak valid"
-#: timezone/zic.c:1177 timezone/zic.c:1283
+#: timezone/zic.c:1160 timezone/zic.c:1266
msgid "invalid month name"
msgstr "nama bulan tidak valid"
-#: timezone/zic.c:1190 timezone/zic.c:1396 timezone/zic.c:1410
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
msgid "invalid day of month"
msgstr "hari dari bulan tidak valid"
-#: timezone/zic.c:1195
+#: timezone/zic.c:1178
msgid "time before zero"
msgstr "waktu sebelum nol"
-#: timezone/zic.c:1199
+#: timezone/zic.c:1182
msgid "time too small"
msgstr "waktu terlalu kecil"
-#: timezone/zic.c:1203
+#: timezone/zic.c:1186
msgid "time too large"
msgstr "waktu terlalu besar"
-#: timezone/zic.c:1207 timezone/zic.c:1312
+#: timezone/zic.c:1190 timezone/zic.c:1295
msgid "invalid time of day"
msgstr "waktu dari hari tidak valid"
-#: timezone/zic.c:1226
+#: timezone/zic.c:1209
msgid "illegal CORRECTION field on Leap line"
msgstr "daerah KOREKSI tidak legal di baris Leap"
-#: timezone/zic.c:1231
+#: timezone/zic.c:1214
msgid "illegal Rolling/Stationary field on Leap line"
msgstr "daerah Rolling/Stationary tidak legal di baris Leap"
-#: timezone/zic.c:1247
+#: timezone/zic.c:1230
msgid "wrong number of fields on Link line"
msgstr "jumlah dari daerah salah di baris sambungan"
-#: timezone/zic.c:1251
+#: timezone/zic.c:1234
msgid "blank FROM field on Link line"
msgstr "daerah FROM kosong di baris Link"
-#: timezone/zic.c:1255
+#: timezone/zic.c:1238
msgid "blank TO field on Link line"
msgstr "daerah TO kosong di baris Link"
-#: timezone/zic.c:1333
+#: timezone/zic.c:1316
msgid "invalid starting year"
msgstr "awal tahun tidak valid"
-#: timezone/zic.c:1355
+#: timezone/zic.c:1338
msgid "invalid ending year"
msgstr "akhir tahun tidak valid"
-#: timezone/zic.c:1359
+#: timezone/zic.c:1342
msgid "starting year greater than ending year"
msgstr "awal tahun lebih besar dari akhir tahun"
-#: timezone/zic.c:1366
+#: timezone/zic.c:1349
msgid "typed single year"
msgstr "tipe tahun tunggal"
-#: timezone/zic.c:1401
+#: timezone/zic.c:1384
msgid "invalid weekday name"
msgstr "nama hari-minggu tidak valid"
-#: timezone/zic.c:1579
+#: timezone/zic.c:1562
#, c-format
msgid "%s: Can't remove %s: %s\n"
msgstr "%s: Tidak dapat menghapus %s: %s\n"
-#: timezone/zic.c:1589
+#: timezone/zic.c:1572
#, c-format
msgid "%s: Can't create %s: %s\n"
msgstr "%s: Tidak dapat membuat %s: %s\n"
-#: timezone/zic.c:1739
+#: timezone/zic.c:1722
#, c-format
msgid "%s: Error writing %s\n"
msgstr "%s: Error menulis %s\n"
-#: timezone/zic.c:2031
+#: timezone/zic.c:2015
msgid "no POSIX environment variable for zone"
msgstr "tidak ada variabel lingkungan POSIX untuk daerah"
-#: timezone/zic.c:2185
+#: timezone/zic.c:2172
msgid "can't determine time zone abbreviation to use just after until time"
msgstr "tidak dapat menentukan kependekan daerah waktu untuk digunakan setelah waktu"
-#: timezone/zic.c:2231
+#: timezone/zic.c:2218
msgid "too many transitions?!"
msgstr "terlalu banyak perubahan?!"
-#: timezone/zic.c:2250
+#: timezone/zic.c:2237
msgid "internal error - addtype called with bad isdst"
msgstr "internal error - addtype dipanggil dengan isdst buruk"
-#: timezone/zic.c:2254
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad ttisstd"
msgstr "internal error - addtype dipanggil dengan ttisstd buruk"
-#: timezone/zic.c:2258
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisgmt"
msgstr "internal error - addtype dipanggil dengan ttisgmt buruk"
-#: timezone/zic.c:2277
+#: timezone/zic.c:2264
msgid "too many local time types"
msgstr "terlalu banyak tipe waktu lokal"
-#: timezone/zic.c:2281
+#: timezone/zic.c:2268
msgid "UTC offset out of range"
msgstr "ofset UTC diluar dari jangkauan"
-#: timezone/zic.c:2309
+#: timezone/zic.c:2296
msgid "too many leap seconds"
msgstr "terlalu banyak leap detik"
-#: timezone/zic.c:2315
+#: timezone/zic.c:2302
msgid "repeated leap second moment"
msgstr "pengulangan momen leap detik"
-#: timezone/zic.c:2367
+#: timezone/zic.c:2354
msgid "Wild result from command execution"
msgstr "Hasil ganas dari eksekusi perintah"
-#: timezone/zic.c:2368
+#: timezone/zic.c:2355
#, c-format
msgid "%s: command was '%s', result was %d\n"
msgstr "%s: perintah adalah '%s', hasil adalah %d\n"
-#: timezone/zic.c:2466
+#: timezone/zic.c:2453
msgid "Odd number of quotation marks"
msgstr "Jumlah dari tanda kuotasi ganjil"
-#: timezone/zic.c:2555
+#: timezone/zic.c:2542
msgid "use of 2/29 in non leap-year"
msgstr "penggunaan dari 2/29 dalam bukan leap-year"
-#: timezone/zic.c:2590
+#: timezone/zic.c:2577
msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
msgstr "aturan melewati awal/akhir dari bulan -- tidak akan bekerja dengan versi sebelum 2004 dari zic"
-#: timezone/zic.c:2622
+#: timezone/zic.c:2609
msgid "time zone abbreviation lacks alphabetic at start"
msgstr "kependekan daerah waktu kurang alphabet di awal"
-#: timezone/zic.c:2624
+#: timezone/zic.c:2611
msgid "time zone abbreviation has more than 3 alphabetics"
msgstr "kependekan daerah waktu memiliki lebih dari 3 alphabet"
-#: timezone/zic.c:2626
+#: timezone/zic.c:2613
msgid "time zone abbreviation has too many alphabetics"
msgstr "kependekan daerah waktu memiliki terlalu banyak alphabet"
-#: timezone/zic.c:2636
+#: timezone/zic.c:2623
msgid "time zone abbreviation differs from POSIX standard"
msgstr "kependekan daerah waktu berbeda dari standar POSIX"
-#: timezone/zic.c:2648
+#: timezone/zic.c:2635
msgid "too many, or too long, time zone abbreviations"
msgstr "terlalu banyak, atau terlalu panjang, kependekan daerah waktu"
-#: timezone/zic.c:2689
+#: timezone/zic.c:2676
#, c-format
msgid "%s: Can't create directory %s: %s\n"
msgstr "%s: Tidak dapat membuat direktori %s: %s\n"
-#: timezone/zic.c:2711
+#: timezone/zic.c:2698
#, c-format
msgid "%s: %d did not sign extend correctly\n"
msgstr "%s: %d tidak menandai ektensi secara benar\n"
+
+#~ msgid "cannot create searchlist"
+#~ msgstr "tidak dapat membuat daftar pencarian"
+
+#~ msgid ""
+#~ "Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "Baca dan tampilkan data profiling objek terbagi.\vUntuk instruksi pelaporan bug, mohon lihat:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#~ msgid "%s: stopping date is invalid in string %Zd in `era' field"
+#~ msgstr "%s: tanggal selesai tidak valid dalam string %Zd dalam daerah `era'"
+
+#~ msgid ""
+#~ "Get locale-specific information.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "Dapatkan informasi lokal-spesifik.\vUntuk instruksi pelaporan bug, mohon lihat:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#~ msgid ""
+#~ "Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "Dapatkan masukan dari basis data administrasi.\vUntuk instruksi pelaporan bug, mohon lihat:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: opsi tidak legal -- %c\n"
+
+#~ msgid "authunix_create: out of memory\n"
+#~ msgstr "authunix_create: kehabisan memori\n"
+
+#~ msgid "clnttcp_create: out of memory\n"
+#~ msgstr "clnttcp_create: kehabisan memori\n"
+
+#~ msgid "clntudp_create: out of memory\n"
+#~ msgstr "clntudp_create: kehabisan memori\n"
+
+#~ msgid "clntunix_create: out of memory\n"
+#~ msgstr "clntunix_create: kehabisan memori\n"
+
+#~ msgid "svctcp_create: out of memory\n"
+#~ msgstr "svctcp_create: kehabisan memori\n"
+
+#~ msgid "svc_tcp: makefd_xprt: out of memory\n"
+#~ msgstr "svc_tcp: makefd_xprt: kehabisan memori\n"
+
+#~ msgid "svcudp_create: out of memory\n"
+#~ msgstr "svcudp_create: kehabisan memori\n"
+
+#~ msgid "svcunix_create: out of memory\n"
+#~ msgstr "svcunix_create: kehabisan memori\n"
+
+#~ msgid "svc_unix: makefd_xprt: out of memory\n"
+#~ msgstr "svc_unix: makefd_xprt: kehabisan memori\n"
+
+#~ msgid "xdr_bytes: out of memory\n"
+#~ msgstr "xdr_bytes: kehabisan memori\n"
+
+#~ msgid "xdr_string: out of memory\n"
+#~ msgstr "xdr_string: kehabisan memori\n"
+
+#~ msgid "xdr_array: out of memory\n"
+#~ msgstr "xdr_array: kehabisan memori\n"
+
+#~ msgid "xdrrec_create: out of memory\n"
+#~ msgstr "xdrrec_create: kehabisan memori\n"
+
+#~ msgid "xdr_reference: out of memory\n"
+#~ msgstr "xdr_reference: kehabisan memori\n"
diff --git a/po/ko.po b/po/ko.po
index 947e4a425e..aebd54c29c 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -1,13 +1,14 @@
# GNU libcì˜ í•œêµ­ì–´ 메시지
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2004, 2007, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the glibc package.
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2004, 2007, 2008, 2009 Free Software Foundation, Inc.
# Bang Jun-Young <bangjy@nownuri.net>, 1996-97.
-# Changwoo Ryu <cwryu@debian.org>, 2000-2004, 2007, 2008.
+# Changwoo Ryu <cwryu@debian.org>, 2000-2004, 2007, 2008, 2009.
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU libc 2.7\n"
-"POT-Creation-Date: 2007-10-15 21:18-0700\n"
-"PO-Revision-Date: 2008-01-23 11:35+0900\n"
+"Project-Id-Version: GNU libc 2.9.90\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-02-27 19:46+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: Korean <translation-team-ko@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
@@ -61,7 +62,7 @@ msgstr "ì´ ë„ì›€ë§ ë¦¬ìŠ¤íŠ¸ë¥¼ 표시함"
#: argp/argp-parse.c:103
msgid "Give a short usage message"
-msgstr "간략한 사용법 메세지를 표시함"
+msgstr "간략한 사용법 메시지를 표시함"
#: argp/argp-parse.c:104
msgid "Set the program name"
@@ -98,7 +99,7 @@ msgstr "%s%s%s:%u: %s%s예기치 못한 오류: %s.\n"
msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
msgstr "%s%s%s:%u: %s%sassertion `%s' 실패.\n"
-#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
msgid "NAME"
msgstr "<ì´ë¦„>"
@@ -119,7 +120,7 @@ msgid ""
"Generate message catalog.\vIf INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
"is -, output is written to standard output.\n"
msgstr ""
-"메세지 목ë¡ì„ 만듭니다.^K<ìž…ë ¥-파ì¼>ì´ - ì´ë©´ 표준 ìž…ë ¥ì„ ì½ê²Œ ë©ë‹ˆë‹¤. <출력-파ì¼>ì´ - ì´ë©´\n"
+"메시지 목ë¡ì„ 만듭니다.^K<ìž…ë ¥-파ì¼>ì´ - ì´ë©´ 표준 ìž…ë ¥ì„ ì½ê²Œ ë©ë‹ˆë‹¤. <출력-파ì¼>ì´ - ì´ë©´\n"
"표준 ì¶œë ¥ì— ì¶œë ¥í•©ë‹ˆë‹¤.\n"
#: catgets/gencat.c:124
@@ -130,9 +131,15 @@ msgstr ""
"-o <출력-파ì¼> [<ìž…ë ¥-파ì¼>]...\n"
"[<출력-파ì¼> [<ìž…ë ¥-파ì¼>]...]"
-#: catgets/gencat.c:232 debug/pcprofiledump.c:204 iconv/iconv_prog.c:411
-#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
-#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
@@ -140,12 +147,13 @@ msgstr ""
"버그를 보고하는 ë°©ë²•ì€ ë‹¤ìŒì„ 참고하십시오:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:296
-#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:426
-#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
-#: posix/getconf.c:1012
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -156,10 +164,12 @@ msgstr ""
"ì´ í”„ë¡œê·¸ëž¨ì€ ê³µê°œ 소프트웨어입니다; ë³µì‚¬ì¡°ê±´ì€ ì†ŒìŠ¤ë¥¼ 참조하십시오. ìƒí’ˆì„±\n"
"ì´ë‚˜ 특정 목ì ì— 대한 ì í•©ì„±ì„ 비롯하여 ì–´ë– í•œ ë³´ì¦ë„ 하지 않습니다.\n"
-#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:301 elf/sprof.c:361
-#: iconv/iconv_prog.c:431 iconv/iconvconfig.c:400 locale/programs/locale.c:280
-#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
-#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
#, c-format
msgid "Written by %s.\n"
msgstr "만든 사람: %s.\n"
@@ -168,7 +178,7 @@ msgstr "만든 사람: %s.\n"
msgid "*standard input*"
msgstr "*표준 입력*"
-#: catgets/gencat.c:288 iconv/iconv_charmap.c:158 iconv/iconv_prog.c:298
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
#: nss/makedb.c:170
#, c-format
msgid "cannot open input file `%s'"
@@ -210,7 +220,7 @@ msgstr "ì¤‘ë³µëœ ë©”ì‹œì§€ ì‹ë³„ìž"
#: catgets/gencat.c:731
msgid "invalid character: message ignored"
-msgstr "ìž˜ëª»ëœ ë¬¸ìž: 메세지는 무시합니다"
+msgstr "ìž˜ëª»ëœ ë¬¸ìž: 메시지는 무시합니다"
#: catgets/gencat.c:774
msgid "invalid line"
@@ -260,17 +270,17 @@ msgstr "PC 프로파ì¼ë§ìœ¼ë¡œ 만들어진 정보를 ë¤í”„합니다."
msgid "[FILE]"
msgstr "[파ì¼]"
-#: debug/pcprofiledump.c:104
+#: debug/pcprofiledump.c:108
#, c-format
msgid "cannot open input file"
msgstr "ìž…ë ¥ 파ì¼ì„ ì—´ 수 없습니다"
-#: debug/pcprofiledump.c:111
+#: debug/pcprofiledump.c:115
#, c-format
msgid "cannot read header"
msgstr "í—¤ë”를 ì½ì„ 수 없습니다"
-#: debug/pcprofiledump.c:175
+#: debug/pcprofiledump.c:179
#, c-format
msgid "invalid pointer size"
msgstr "ìž˜ëª»ëœ í¬ì¸í„° í¬ê¸°"
@@ -300,36 +310,32 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
"프로그램 ì‹¤í–‰ì„ ì¶”ì í•´ì„œ 현재 실행하고 있는 함수를 표시합니다.\n"
"\n"
" --data=<파ì¼> í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•˜ì§€ ì•Šê³ , <파ì¼>ì—ì„œ ë°ì´í„°ë§Œ 표시합니다\n"
"\n"
" -?,--help ë„움ë§ì„ 표시하고 ë냅니다\n"
-" --usage 간단한 사용법 메세지를 표시합니다\n"
+" --usage 간단한 사용법 메시지를 표시합니다\n"
" -V,--version 버전 정보를 표시하고 ë냅니다\n"
"\n"
"긴 ì˜µì…˜ì— í•„ìˆ˜ì ì¸ ì¸ìˆ˜ëŠ”, ê°™ì€ ì§§ì€ ì˜µì…˜ì—ì„œë„ í•„ìˆ˜ì ì¸ ì¸ìˆ˜ìž…니다.\n"
"\n"
-"버그 보고하는 ë°©ë²•ì€ ë‹¤ìŒì„ 참고하십시오:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
-#: debug/xtrace.sh:125
+#: debug/xtrace.sh:127
msgid "xtrace: unrecognized option \\`$1'\\n"
msgstr "xtrace: ì¸ì‹í•  수 없는 옵션 \\`$1'\\n"
-#: debug/xtrace.sh:138
+#: debug/xtrace.sh:140
msgid "No program name given\\n"
msgstr "프로그램 ì´ë¦„ì´ ì—†ìŠµë‹ˆë‹¤\\n"
-#: debug/xtrace.sh:146
+#: debug/xtrace.sh:148
#, sh-format
msgid "executable \\`$program' not found\\n"
msgstr "\\`$program' 실행 파ì¼ì´ 없습니다\\n"
-#: debug/xtrace.sh:150
+#: debug/xtrace.sh:152
#, sh-format
msgid "\\`$program' is no executable\\n"
msgstr "\\`$program' 파ì¼ì´ 실행 파ì¼ì´ 아닙니다\\n"
@@ -350,7 +356,7 @@ msgstr "ìž˜ëª»ëœ ë„¤ìž„ìŠ¤íŽ˜ì´ìŠ¤"
msgid "invalid mode"
msgstr "ìž˜ëª»ëœ ëª¨ë“œ"
-#: dlfcn/dlopen.c:64
+#: dlfcn/dlopen.c:65
msgid "invalid mode parameter"
msgstr "ìž˜ëª»ëœ ëª¨ë“œ 매개변수"
@@ -367,7 +373,7 @@ msgstr "ì•Œ 수 없는 ìš´ì˜ì²´ì œ"
msgid ", OS ABI: %s %d.%d.%d"
msgstr ", OS ABI: %s %d.%d.%d"
-#: elf/cache.c:134 elf/ldconfig.c:1270
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
msgid "Can't open cache file %s\n"
msgstr "ìºì‹œ íŒŒì¼ `%s'ì„(를) ì—´ 수 없습니다\n"
@@ -411,7 +417,7 @@ msgstr "%sì—ì„œ %s으로(ë¡œ) ì´ë¦„ì„ ë°”ê¾¸ëŠ” ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
msgid "cannot create scope list"
msgstr "스코프 목ë¡ì„ 만들 수 없습니다"
-#: elf/dl-close.c:724
+#: elf/dl-close.c:725
msgid "shared object not open"
msgstr "공유 오브ì íŠ¸ê°€ 열리지 않았습니다"
@@ -486,11 +492,11 @@ msgstr "ë™ì  오브ì íŠ¸ì— 대해 stat()ì´ ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
msgid "cannot open zero fill device"
msgstr "0으로 채운 장치를 열 수 없습니다"
-#: elf/dl-load.c:979 elf/dl-load.c:2224
+#: elf/dl-load.c:979 elf/dl-load.c:2215
msgid "cannot create shared object descriptor"
msgstr "공유 오브ì íŠ¸ 디스í¬ë¦½í„°ë¥¼ 만들 수 없습니다"
-#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
msgid "cannot read file data"
msgstr "íŒŒì¼ ë°ì´í„°ë¥¼ ì½ì„ 수 없습니다"
@@ -554,63 +560,59 @@ msgstr "실행할 수 있는 스íƒì„ 공유 오브ì íŠ¸ 필수요소로 만ë“
msgid "cannot close file descriptor"
msgstr "íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°ë¥¼ ë‹«ì„ ìˆ˜ 없습니다"
-#: elf/dl-load.c:1478
-msgid "cannot create searchlist"
-msgstr "찾기리스트를 만들 수 없습니다"
-
-#: elf/dl-load.c:1656
+#: elf/dl-load.c:1647
msgid "file too short"
msgstr "파ì¼ì´ 너무 짧습니다"
-#: elf/dl-load.c:1685
+#: elf/dl-load.c:1676
msgid "invalid ELF header"
msgstr "ìž˜ëª»ëœ ELF í—¤ë”"
-#: elf/dl-load.c:1697
+#: elf/dl-load.c:1688
msgid "ELF file data encoding not big-endian"
msgstr "ELF íŒŒì¼ ë°ì´í„° ì¸ì½”ë”©ì´ ë¹…ì¸ë””ì•ˆì´ ì•„ë‹™ë‹ˆë‹¤"
-#: elf/dl-load.c:1699
+#: elf/dl-load.c:1690
msgid "ELF file data encoding not little-endian"
msgstr "ELF íŒŒì¼ ë°ì´í„° ì¸ì½”ë”©ì´ ë¦¬í‹€ì¸ë””ì•ˆì´ ì•„ë‹™ë‹ˆë‹¤"
-#: elf/dl-load.c:1703
+#: elf/dl-load.c:1694
msgid "ELF file version ident does not match current one"
msgstr "ELF íŒŒì¼ ë²„ì „ identê°€ 현재 ident와 맞지 않습니다"
-#: elf/dl-load.c:1707
+#: elf/dl-load.c:1698
msgid "ELF file OS ABI invalid"
msgstr "ELF íŒŒì¼ OS ABIê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
-#: elf/dl-load.c:1709
+#: elf/dl-load.c:1700
msgid "ELF file ABI version invalid"
msgstr "ELF íŒŒì¼ ABI ë²„ì „ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤"
-#: elf/dl-load.c:1712
+#: elf/dl-load.c:1703
msgid "internal error"
msgstr "내부 오류"
-#: elf/dl-load.c:1719
+#: elf/dl-load.c:1710
msgid "ELF file version does not match current one"
msgstr "ELF íŒŒì¼ ë²„ì „ì´ í˜„ìž¬ 버전과 맞지 않습니다"
-#: elf/dl-load.c:1727
+#: elf/dl-load.c:1718
msgid "only ET_DYN and ET_EXEC can be loaded"
msgstr "ET_DYNê³¼ ET_EXECë§Œì„ ì½ì–´ë“¤ì¼ 수 있습니다"
-#: elf/dl-load.c:1733
+#: elf/dl-load.c:1724
msgid "ELF file's phentsize not the expected size"
msgstr "ELF 파ì¼ì˜ phentsizeê°€ 예ìƒê³¼ 맞지 않습니다"
-#: elf/dl-load.c:2240
+#: elf/dl-load.c:2231
msgid "wrong ELF class: ELFCLASS64"
msgstr "ELF í´ëž˜ìŠ¤ê°€ 틀렸습니다: ELFCLASS64"
-#: elf/dl-load.c:2241
+#: elf/dl-load.c:2232
msgid "wrong ELF class: ELFCLASS32"
msgstr "ELF í´ëž˜ìŠ¤ê°€ 틀렸습니다: ELFCLASS32"
-#: elf/dl-load.c:2244
+#: elf/dl-load.c:2235
msgid "cannot open shared object file"
msgstr "ë™ì  오브ì íŠ¸ 파ì¼ì„ ì—´ 수 없습니다"
@@ -642,11 +644,11 @@ msgstr "dlmopen()ì— ì‚¬ìš©í•  수 있는 네임스페ì´ìŠ¤ê°€ ë” ì´ìƒ ì—†ìŠ
msgid "invalid target namespace in dlmopen()"
msgstr "dlmopen()ì— ëŒ€ìƒ ë„¤ìž„ìŠ¤íŽ˜ì´ìŠ¤ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
-#: elf/dl-reloc.c:54
+#: elf/dl-reloc.c:121
msgid "cannot allocate memory in static TLS block"
msgstr "ì •ì  TLS 블럭ì—는 메모리를 할당할 수 없습니다"
-#: elf/dl-reloc.c:196
+#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
msgstr "리로케ì´ì…˜ì„ 위해 세그먼트를 쓰기 가능하ë„ë¡ ë§Œë“¤ 수 없습니다"
@@ -674,11 +676,11 @@ msgstr "ë™ì ìœ¼ë¡œ ì ìž¬í•˜ì§€ ì•Šì€ ì½”ë“œì— RTLD_NEXT를 사용함"
# 번역: capability는 DBì—ì„œ authenticationì„ ì¤„ì´ê¸° 위해 쓰는 것..
# 가까운 DB책 참조.
-#: elf/dl-sysdep.c:469 elf/dl-sysdep.c:481
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
msgid "cannot create capability list"
msgstr "ì¼€ì´í¼ë¹Œë¦¬í‹° 리스트를 만들 수 없습니다"
-#: elf/dl-tls.c:825
+#: elf/dl-tls.c:864
msgid "cannot create TLS data structures"
msgstr "TLS ë°ì´í„° 구조를 만들 수 없습니다"
@@ -686,223 +688,223 @@ msgstr "TLS ë°ì´í„° 구조를 만들 수 없습니다"
msgid "cannot allocate version reference table"
msgstr "버전 참조 í…Œì´ë¸”ì„ í• ë‹¹í•  수 없습니다"
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:141
msgid "Print cache"
msgstr "ìºì‹œ 표시"
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:142
msgid "Generate verbose messages"
msgstr "ë” ë§Žì€ ë©”ì‹œì§€ 표시"
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:143
msgid "Don't build cache"
msgstr "ìºì‹œë¥¼ 만들지 ì•ŠìŒ"
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:144
msgid "Don't generate links"
msgstr "ë§í¬ë¥¼ 만들지 ì•ŠìŒ"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "Change to and use ROOT as root directory"
-msgstr "<루트>ë¡œ ì´ë™í•œ ë‹¤ìŒ <루트>를 루트 디렉토리로 사용합니다"
+msgstr "<루트>ë¡œ ì´ë™í•œ ë‹¤ìŒ <루트>를 루트 디렉터리로 사용합니다"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "ROOT"
msgstr "<루트>"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "CACHE"
msgstr "<ìºì‹œ>"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "Use CACHE as cache file"
msgstr "ìºì‹œ 파ì¼ë¡œ <ìºì‹œ>를 사용합니다"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "CONF"
msgstr "<설정>"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "Use CONF as configuration file"
msgstr "설정 파ì¼ë¡œ <설정>ì„ ì‚¬ìš©í•©ë‹ˆë‹¤"
-#: elf/ldconfig.c:145
+#: elf/ldconfig.c:148
msgid "Only process directories specified on the command line. Don't build cache."
-msgstr "ëª…ë ¹í–‰ì— ì§€ì •í•œ 디렉토리만 처리합니다. ìºì‹œë¥¼ 만들지 않습니다."
+msgstr "ëª…ë ¹í–‰ì— ì§€ì •í•œ 디렉터리만 처리합니다. ìºì‹œë¥¼ 만들지 않습니다."
-#: elf/ldconfig.c:146
+#: elf/ldconfig.c:149
msgid "Manually link individual libraries."
msgstr "수ë™ìœ¼ë¡œ ê°ê°ì˜ ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ë§í¬í•˜ì‹­ì‹œì˜¤."
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "FORMAT"
msgstr "<형ì‹>"
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "Format to use: new, old or compat (default)"
msgstr "사용할 수 있는 형ì‹: new, old, compat (기본값)"
-#: elf/ldconfig.c:148
+#: elf/ldconfig.c:151
msgid "Ignore auxiliary cache file"
msgstr "ë³´ì¡° ìºì‹œ íŒŒì¼ ë¬´ì‹œ"
-#: elf/ldconfig.c:156
+#: elf/ldconfig.c:159
msgid "Configure Dynamic Linker Run Time Bindings."
msgstr "ë™ì  ë§ì»¤ì˜ 런타임 ë°”ì¸ë”©ì„ 설정합니다."
-#: elf/ldconfig.c:319
+#: elf/ldconfig.c:339
#, c-format
msgid "Path `%s' given more than once"
msgstr "`%s' 경로가 여러번 주어졌습니다"
-#: elf/ldconfig.c:359
+#: elf/ldconfig.c:379
#, c-format
msgid "%s is not a known library type"
msgstr "%sì€(는) 알려진 ë¼ì´ë¸ŒëŸ¬ë¦¬ íƒ€ìž…ì´ ì•„ë‹™ë‹ˆë‹¤"
-#: elf/ldconfig.c:384
+#: elf/ldconfig.c:404
#, c-format
msgid "Can't stat %s"
msgstr "%sì— stat()í•  수 없습니다"
-#: elf/ldconfig.c:458
+#: elf/ldconfig.c:478
#, c-format
msgid "Can't stat %s\n"
msgstr "%sì— stat()í•  수 없습니다\n"
-#: elf/ldconfig.c:468
+#: elf/ldconfig.c:488
#, c-format
msgid "%s is not a symbolic link\n"
msgstr "%sì€(는) 심볼릭 ë§í¬ê°€ 아닙니다\n"
-#: elf/ldconfig.c:487
+#: elf/ldconfig.c:507
#, c-format
msgid "Can't unlink %s"
msgstr "%sì„(를) 지울 수 없습니다"
-#: elf/ldconfig.c:493
+#: elf/ldconfig.c:513
#, c-format
msgid "Can't link %s to %s"
msgstr "%sì„(를) %s(으)ë¡œ ë§í¬í•  수 없습니다"
-#: elf/ldconfig.c:499
+#: elf/ldconfig.c:519
msgid " (changed)\n"
msgstr " (바뀜)\n"
-#: elf/ldconfig.c:501
+#: elf/ldconfig.c:521
msgid " (SKIPPED)\n"
msgstr " (지나침)\n"
-#: elf/ldconfig.c:556
+#: elf/ldconfig.c:576
#, c-format
msgid "Can't find %s"
msgstr "%sì„(를) ì°¾ì„ ìˆ˜ 없습니다"
-#: elf/ldconfig.c:572 elf/ldconfig.c:745 elf/ldconfig.c:793 elf/ldconfig.c:827
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
msgid "Cannot lstat %s"
msgstr "%sì— lstat()í•  수 없습니다"
-#: elf/ldconfig.c:579
+#: elf/ldconfig.c:599
#, c-format
msgid "Ignored file %s since it is not a regular file."
msgstr "ì¼ë°˜ 파ì¼ì´ 아니므로 %s 파ì¼ì„ 무시합니다."
-#: elf/ldconfig.c:588
+#: elf/ldconfig.c:608
#, c-format
msgid "No link created since soname could not be found for %s"
msgstr "%sì— ëŒ€í•œ sonameì„ ì°¾ì„ ìˆ˜ 없으므로 ë§í¬ë¥¼ 만들지 않습니다"
-#: elf/ldconfig.c:671
+#: elf/ldconfig.c:691
#, c-format
msgid "Can't open directory %s"
-msgstr "디렉토리 %sì„(를) ì—´ 수 없습니다"
+msgstr "디렉터리 %sì„(를) ì—´ 수 없습니다"
-#: elf/ldconfig.c:759
+#: elf/ldconfig.c:779
#, c-format
msgid "Cannot stat %s"
msgstr "%sì— stat()í•  수 없습니다"
-#: elf/ldconfig.c:814 elf/readlib.c:91
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
msgid "Input file %s not found.\n"
msgstr "ìž…ë ¥ íŒŒì¼ %sì„(를) 찾지 못했습니다.\n"
-#: elf/ldconfig.c:888
+#: elf/ldconfig.c:908
#, c-format
msgid "libc5 library %s in wrong directory"
-msgstr "libc5 library %sì´(ê°€) ìž˜ëª»ëœ ë””ë ‰í† ë¦¬ì— ìžˆìŠµë‹ˆë‹¤"
+msgstr "libc5 library %sì´(ê°€) ìž˜ëª»ëœ ë””ë ‰í„°ë¦¬ì— ìžˆìŠµë‹ˆë‹¤"
-#: elf/ldconfig.c:891
+#: elf/ldconfig.c:911
#, c-format
msgid "libc6 library %s in wrong directory"
-msgstr "libc6 library %sì´(ê°€) ìž˜ëª»ëœ ë””ë ‰í† ë¦¬ì— ìžˆìŠµë‹ˆë‹¤"
+msgstr "libc6 library %sì´(ê°€) ìž˜ëª»ëœ ë””ë ‰í„°ë¦¬ì— ìžˆìŠµë‹ˆë‹¤"
-#: elf/ldconfig.c:894
+#: elf/ldconfig.c:914
#, c-format
msgid "libc4 library %s in wrong directory"
-msgstr "libc4 library %sì´(ê°€) ìž˜ëª»ëœ ë””ë ‰í† ë¦¬ì— ìžˆìŠµë‹ˆë‹¤"
+msgstr "libc4 library %sì´(ê°€) ìž˜ëª»ëœ ë””ë ‰í„°ë¦¬ì— ìžˆìŠµë‹ˆë‹¤"
-#: elf/ldconfig.c:922
+#: elf/ldconfig.c:942
#, c-format
msgid "libraries %s and %s in directory %s have same soname but different type."
-msgstr "디렉토리 %sì˜ ë¼ì´ë¸ŒëŸ¬ë¦¬ %sê³¼(와) %sì´(ê°€) ê°™ì€ sonameì„ ê°€ì§€ê³  있지만 íƒ€ìž…ì´ ë‹¤ë¦…ë‹ˆë‹¤."
+msgstr "디렉터리 %sì˜ ë¼ì´ë¸ŒëŸ¬ë¦¬ %sê³¼(와) %sì´(ê°€) ê°™ì€ sonameì„ ê°€ì§€ê³  있지만 íƒ€ìž…ì´ ë‹¤ë¦…ë‹ˆë‹¤."
-#: elf/ldconfig.c:1031
+#: elf/ldconfig.c:1051
#, c-format
msgid "Can't open configuration file %s"
msgstr "설정 íŒŒì¼ `%s'ì„(를) ì—´ 수 없습니다"
-#: elf/ldconfig.c:1095
+#: elf/ldconfig.c:1115
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
msgstr "%s:%u: hwcap ì¤„ì˜ ë¬¸ë²•ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤"
-#: elf/ldconfig.c:1101
+#: elf/ldconfig.c:1121
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
msgstr "%s:%u: hwcap ì¸ë±ìŠ¤ %luì€(는) 최대값 %uì„(를) 넘어갔습니다"
-#: elf/ldconfig.c:1108 elf/ldconfig.c:1116
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
msgstr "%s:%u: hwcap ì¸ë±ìŠ¤ %luì€(는) ì´ë¯¸ %s(으)ë¡œ ì •ì˜ë˜ì–´ 있습니다"
-#: elf/ldconfig.c:1119
+#: elf/ldconfig.c:1139
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
msgstr "%s:%u: ì¤‘ë³µëœ hwcap %lu %s"
-#: elf/ldconfig.c:1141
+#: elf/ldconfig.c:1161
#, c-format
msgid "need absolute file name for configuration file when using -r"
msgstr "-r ì˜µì…˜ì„ ì‚¬ìš©í•  경우 설정 파ì¼ì˜ 절대 íŒŒì¼ ì´ë¦„ì´ í•„ìš”í•©ë‹ˆë‹¤"
-#: elf/ldconfig.c:1148 locale/programs/xmalloc.c:70 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
msgid "memory exhausted"
msgstr "메모리가 바닥남"
-#: elf/ldconfig.c:1178
+#: elf/ldconfig.c:1198
#, c-format
msgid "%s:%u: cannot read directory %s"
-msgstr "%s:%u: %s 디렉토리를 ì½ì„ 수 없습니다"
+msgstr "%s:%u: %s 디렉터리를 ì½ì„ 수 없습니다"
-#: elf/ldconfig.c:1223
+#: elf/ldconfig.c:1242
#, c-format
msgid "relative path `%s' used to build cache"
msgstr "ìºì‹œë¥¼ 만드는 ë° ìƒëŒ€ ê²½ë¡œì¸ `%s' 경로를 사용했습니다"
-#: elf/ldconfig.c:1249
+#: elf/ldconfig.c:1268
#, c-format
msgid "Can't chdir to /"
-msgstr "/ë¡œ 디렉토리를 ì´ë™í•  수 없습니다"
+msgstr "/ë¡œ 디렉터리를 ì´ë™í•  수 없습니다"
-#: elf/ldconfig.c:1291
+#: elf/ldconfig.c:1310
#, c-format
msgid "Can't open cache file directory %s\n"
-msgstr "ìºì‹œ íŒŒì¼ ë””ë ‰í† ë¦¬ `%s'ì„(를) ì—´ 수 없습니다\n"
+msgstr "ìºì‹œ íŒŒì¼ ë””ë ‰í„°ë¦¬ `%s'ì„(를) ì—´ 수 없습니다\n"
#: elf/ldd.bash.in:43
msgid "Written by %s and %s.\n"
@@ -917,8 +919,6 @@ msgid ""
" -r, --function-relocs process data and function relocations\n"
" -u, --unused print unused direct dependencies\n"
" -v, --verbose print all information\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"사용법: ldd [옵션]... <파ì¼>...\n"
" --help ì´ ë„움ë§ì„ 출력하고 ë납니다\n"
@@ -927,49 +927,47 @@ msgstr ""
" -r, --function-relocs ë°ì´í„° ë° í•¨ìˆ˜ 리로케ì´ì…˜ì„ 처리합니다\n"
" -u, --unused 사용하지 않는 ì§ì ‘ ì˜ì¡´ì„±ì„ 표시합니다\n"
" -v, --verbose 전체 정보를 표시합니다\n"
-"버그 ë³´ê³  ë°©ë²•ì€ ë‹¤ìŒì„ 참고하십시오:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: elf/ldd.bash.in:80
+#: elf/ldd.bash.in:82
msgid "ldd: option \\`$1' is ambiguous"
msgstr "ldd: \\`$1' ì˜µì…˜ì€ ëª¨í˜¸í•œ 옵션입니다"
-#: elf/ldd.bash.in:87
+#: elf/ldd.bash.in:89
msgid "unrecognized option"
msgstr "ì¸ì‹í•  수 없는 옵션"
-#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
msgid "Try \\`ldd --help' for more information."
msgstr "ë” ë§Žì€ ì •ë³´ë¥¼ 보려면 \\`ldd --help' 하십시오."
-#: elf/ldd.bash.in:125
+#: elf/ldd.bash.in:127
msgid "missing file arguments"
msgstr "íŒŒì¼ ì¸ìžê°€ 없습니다"
#. TRANS No such file or directory. This is a ``file doesn't exist'' error
#. TRANS for ordinary files that are referenced in contexts where they are
#. TRANS expected to already exist.
-#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
-msgstr "그런 파ì¼ì´ë‚˜ 디렉토리가 없습니다"
+msgstr "그런 파ì¼ì´ë‚˜ 디렉터리가 없습니다"
-#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
msgid "not regular file"
msgstr "ì¼ë°˜ 파ì¼ì´ 아님"
-#: elf/ldd.bash.in:154
+#: elf/ldd.bash.in:156
msgid "warning: you do not have execution permission for"
msgstr "경고: 다ìŒì— 대해 실행 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤"
-#: elf/ldd.bash.in:183
+#: elf/ldd.bash.in:185
msgid "\tnot a dynamic executable"
msgstr "\të™ì  실행 파ì¼ì´ 아닙니다"
-#: elf/ldd.bash.in:191
+#: elf/ldd.bash.in:193
msgid "exited with unknown exit code"
-msgstr "ì•Œ 수 없는 종료 코드로 ë났습니다"
+msgstr "ì•Œ 수 없는 오류 코드로 ë났습니다"
-#: elf/ldd.bash.in:196
+#: elf/ldd.bash.in:198
msgid "error: you do not have read permission for"
msgstr "오류: 다ìŒì— 대해 ì½ê¸° ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤"
@@ -1028,6 +1026,45 @@ msgstr "íŒŒì¼ `%s'ì— mmap()í•  수 없습니다.\n"
msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
msgstr "%sì€(는) ELF 파ì¼ì´ 아닙니다 - ì‹œìž‘ë¶€ë¶„ì˜ ë§¤ì§ ë°”ì´íŠ¸ê°€ 틀렸습니다.\n"
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+"사용법: sln ì›ë³¸ 대ìƒ|파ì¼\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s: íŒŒì¼ ì—´ê¸° 오류: %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "%d번 ì¤„ì— ëª©í‘œê°€ 없습니다\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s: 대ìƒì´ 디렉터리면 안 ë©ë‹ˆë‹¤\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr "%s: 예전 대ìƒì„ 제거하는 ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤\n"
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s: 대ìƒì´ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤: %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "\"%s\"ì—ì„œ \"%s\"(으)ë¡œ ë§í¬ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤: %s\n"
+
#: elf/sprof.c:77
msgid "Output selection:"
msgstr "출력 ì„ íƒ:"
@@ -1045,129 +1082,130 @@ msgid "generate call graph"
msgstr "호출 그래프를 만듦"
#: elf/sprof.c:89
-msgid ""
-"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"공유 오브ì íŠ¸ 프로파ì¼ë§ ë°ì´í„°ë¥¼ ì½ê³  표시합니다\\v버그를 보고하는 ë°©ë²•ì€ ë‹¤ìŒì„ 참고하십시오:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Read and display shared object profiling data."
+msgstr "공유 오브ì íŠ¸ í”„ë¡œíŒŒì¼ ë°ì´í„°ë¥¼ ì½ê³  표시할 수 없습니다."
#: elf/sprof.c:94
msgid "SHOBJ [PROFDATA]"
msgstr "SHOBJ [PROFDATA]"
-#: elf/sprof.c:400
+#: elf/sprof.c:420
#, c-format
msgid "failed to load shared object `%s'"
msgstr "ë™ì  오브ì íŠ¸ `%s'ì„(를) ì½ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
-#: elf/sprof.c:409
+#: elf/sprof.c:429
#, c-format
msgid "cannot create internal descriptors"
msgstr "내부 디스í¬ë¦½í„°ë¥¼ 만들 수 없습니다"
-#: elf/sprof.c:528
+#: elf/sprof.c:548
#, c-format
msgid "Reopening shared object `%s' failed"
msgstr "ë™ì  오브ì íŠ¸ `%s'ì„(를) 다시 여는 ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
-#: elf/sprof.c:535 elf/sprof.c:629
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
msgid "reading of section headers failed"
msgstr "섹션 í—¤ë”를 ì½ëŠ” ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
-#: elf/sprof.c:543 elf/sprof.c:637
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
msgid "reading of section header string table failed"
msgstr "섹션 í—¤ë” ë¬¸ìžì—´ í…Œì´ë¸”ì„ ì½ëŠ” ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
-#: elf/sprof.c:569
+#: elf/sprof.c:589
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
msgstr "*** 디버깅정보 íŒŒì¼ ì´ë¦„ì„ ì½ì„ 수 없습니다: %m\n"
-#: elf/sprof.c:589
+#: elf/sprof.c:609
#, c-format
msgid "cannot determine file name"
msgstr "íŒŒì¼ ì´ë¦„ì„ íŒŒì•…í•  수 없습니다"
-#: elf/sprof.c:622
+#: elf/sprof.c:642
#, c-format
msgid "reading of ELF header failed"
msgstr "ELF í—¤ë”를 ì½ëŠ” ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
-#: elf/sprof.c:658
+#: elf/sprof.c:678
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
msgstr "*** `%s' 파ì¼ì€ 디버깅 정보를 제거한 파ì¼ìž…니다: ë” ìžì„¸í•œ 분ì„ì€ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤\n"
-#: elf/sprof.c:688
+#: elf/sprof.c:708
#, c-format
msgid "failed to load symbol data"
msgstr "기호 ë°ì´í„°ë¥¼ ì½ëŠ” ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
-#: elf/sprof.c:755
+#: elf/sprof.c:775
#, c-format
msgid "cannot load profiling data"
msgstr "프로파ì¼ë§ ë°ì´í„°ë¥¼ ì½ì„ 수 없습니다"
-#: elf/sprof.c:764
+#: elf/sprof.c:784
#, c-format
msgid "while stat'ing profiling data file"
msgstr "프로파ì¼ë§ ë°ì´í„° 파ì¼ì„ 쓰는 ë™ì•ˆ"
-#: elf/sprof.c:772
+#: elf/sprof.c:792
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
msgstr "프로파ì¼ë§ ë°ì´í„° íŒŒì¼ `%s'ì€(는) ë™ì  오브ì íŠ¸`%s'와 맞지 않습니다"
-#: elf/sprof.c:783
+#: elf/sprof.c:803
#, c-format
msgid "failed to mmap the profiling data file"
msgstr "프로파ì¼ë§ ë°ì´í„° 파ì¼ì„ mmap하는 ë° ì‹¤íŒ¨"
-#: elf/sprof.c:791
+#: elf/sprof.c:811
#, c-format
msgid "error while closing the profiling data file"
msgstr "프로파ì¼ë§ ë°ì´í„° 파ì¼ì„ 닫는 ë„중 오류 ë°œìƒ"
-#: elf/sprof.c:800 elf/sprof.c:870
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
msgid "cannot create internal descriptor"
msgstr "내부 디스í¬ë¦½í„°ë¥¼ 만들 수 없습니다"
-#: elf/sprof.c:846
+#: elf/sprof.c:866
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
msgstr "`%s'ì€(는) `%s'ì— ë§žëŠ” í”„ë¡œíŒŒì¼ ë°ì´í„° 파ì¼ì´ 아닙니다"
-#: elf/sprof.c:1027 elf/sprof.c:1085
+#: elf/sprof.c:1047 elf/sprof.c:1105
#, c-format
msgid "cannot allocate symbol data"
msgstr "기호 ë°ì´í„°ë¥¼ 할당할 수 없습니다"
-#: iconv/iconv_charmap.c:176 iconv/iconv_prog.c:316
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "출력 파ì¼ì„ ì—´ 수 없습니다"
+
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
msgstr "`%s' ìž…ë ¥ì„ ë‹«ëŠ” ë„중 오류 ë°œìƒ"
-#: iconv/iconv_charmap.c:450
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
msgstr "%Zd ìœ„ì¹˜ì— ìž˜ëª»ëœ ìž…ë ¥ ìˆœì„œì—´ì´ ìžˆìŒ"
-#: iconv/iconv_charmap.c:469 iconv/iconv_prog.c:526
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
#, c-format
msgid "incomplete character or shift sequence at end of buffer"
msgstr "버í¼ì˜ ëì— ë¶ˆì™„ì „í•œ ë¬¸ìž í˜¹ì€ ì‰¬í”„íŠ¸ ì—°ì†"
-#: iconv/iconv_charmap.c:514 iconv/iconv_charmap.c:550 iconv/iconv_prog.c:569
-#: iconv/iconv_prog.c:605
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
#, c-format
msgid "error while reading the input"
msgstr "ìž…ë ¥ì„ ì½ëŠ” ë„ì¤‘ì— ì˜¤ë¥˜ ë°œìƒ"
-#: iconv/iconv_charmap.c:532 iconv/iconv_prog.c:587
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
#, c-format
msgid "unable to allocate buffer for input"
msgstr "ìž…ë ¥ì„ ìœ„í•œ 버í¼ë¥¼ 할당할 수 없습니다"
@@ -1220,62 +1258,57 @@ msgstr "주어진 파ì¼ì˜ ì¸ì½”ë”©ì„ í•œ ì¸ì½”딩ì—ì„œ ë˜ë‹¤ë¥¸ ì¸ì½”딩
msgid "[FILE...]"
msgstr "[파ì¼...]"
-#: iconv/iconv_prog.c:200
-#, c-format
-msgid "cannot open output file"
-msgstr "출력 파ì¼ì„ ì—´ 수 없습니다"
-
-#: iconv/iconv_prog.c:242
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
msgstr "`%s'ì—ì„œ 변환 ë° `%s'(으)ë¡œì˜ ë³€í™˜ì€ ì§€ì›í•˜ì§€ 않습니다"
-#: iconv/iconv_prog.c:247
+#: iconv/iconv_prog.c:239
#, c-format
msgid "conversion from `%s' is not supported"
msgstr "`%s'ì—ì„œ ë³€í™˜ì€ ì§€ì›í•˜ì§€ 않습니다"
-#: iconv/iconv_prog.c:254
+#: iconv/iconv_prog.c:246
#, c-format
msgid "conversion to `%s' is not supported"
msgstr "`%s'ë¡œì˜ ë³€í™˜ì€ ì§€ì›í•˜ì§€ 않습니다"
-#: iconv/iconv_prog.c:258
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
msgstr "`%s'ì—ì„œ `%s'ë¡œì˜ ë³€í™˜ì€ ì§€ì›í•˜ì§€ 않습니다"
-#: iconv/iconv_prog.c:268
+#: iconv/iconv_prog.c:260
#, c-format
msgid "failed to start conversion processing"
msgstr "ë³€í™˜ìž‘ì—…ì„ ì‹œìž‘í•˜ëŠ”ë° ì‹¤íŒ¨"
-#: iconv/iconv_prog.c:362
+#: iconv/iconv_prog.c:358
#, c-format
msgid "error while closing output file"
msgstr "출력 파ì¼ì„ 닫는 ë„중 오류 ë°œìƒ"
-#: iconv/iconv_prog.c:471 iconv/iconv_prog.c:497
+#: iconv/iconv_prog.c:456
#, c-format
msgid "conversion stopped due to problem in writing the output"
msgstr "출력파ì¼ì— 쓸 ë•Œ ë°œìƒí•œ 문제로 ë³€í™˜ìž‘ì—…ì„ ì¤‘ë‹¨í–ˆìŠµë‹ˆë‹¤"
-#: iconv/iconv_prog.c:522
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
msgstr "%ld ìœ„ì¹˜ì— ìž˜ëª»ëœ ìž…ë ¥ ìˆœì„œì—´ì´ ìžˆìŒ"
-#: iconv/iconv_prog.c:530
+#: iconv/iconv_prog.c:541
#, c-format
msgid "internal error (illegal descriptor)"
msgstr "내부 오류 (ìž˜ëª»ëœ ë””ìŠ¤í¬ë¦½í„°)"
-#: iconv/iconv_prog.c:533
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
msgstr "알 수 없는 iconv() 오류 %d"
-#: iconv/iconv_prog.c:779
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -1297,7 +1330,7 @@ msgstr "ê³ ì†ë¡œë”© iconv 모듈 설정 파ì¼ì„ 만들 수 없습니다."
#: iconv/iconvconfig.c:114
msgid "[DIR...]"
-msgstr "[디렉토리...]"
+msgstr "[디렉터리...]"
#: iconv/iconvconfig.c:127
msgid "Prefix used for all file accesses"
@@ -1309,12 +1342,12 @@ msgstr "ì¶œë ¥ì„ ì„¤ì¹˜í•œ 위치가 ì•„ë‹ˆë¼ <파ì¼>ì— ì¶œë ¥í•©ë‹ˆë‹¤ (--p
#: iconv/iconvconfig.c:132
msgid "Do not search standard directories, only those on the command line"
-msgstr "표준 디렉토리를 찾지 ì•Šê³ , ëª…ë ¹í–‰ì˜ ë””ë ‰í† ë¦¬ë§Œ 찾습니다"
+msgstr "표준 디렉터리를 찾지 ì•Šê³ , ëª…ë ¹í–‰ì˜ ë””ë ‰í„°ë¦¬ë§Œ 찾습니다"
#: iconv/iconvconfig.c:301
#, c-format
msgid "Directory arguments required when using --nostdlib"
-msgstr "--nostdlib ì˜µì…˜ì„ ì‚¬ìš©í•˜ë©´ 디렉토리 ì¸ìˆ˜ê°€ 필요합니다"
+msgstr "--nostdlib ì˜µì…˜ì„ ì‚¬ìš©í•˜ë©´ 디렉터리 ì¸ìˆ˜ê°€ 필요합니다"
#: iconv/iconvconfig.c:343 locale/programs/localedef.c:291
#, c-format
@@ -1337,7 +1370,7 @@ msgstr "rcmd: 메모리를 할당할 수 없습니다\n"
#: inet/rcmd.c:172
msgid "rcmd: socket: All ports in use\n"
-msgstr "rcmd: socket: 모든 í¬íŠ¸ê°€ 사용중\n"
+msgstr "rcmd: socket: 모든 í¬íŠ¸ê°€ 사용 중\n"
#: inet/rcmd.c:200
#, c-format
@@ -1420,7 +1453,7 @@ msgstr "UTF-8 범위를 ë²—ì–´ë‚œ 문ìž"
#: locale/programs/charmap-dir.c:59
#, c-format
msgid "cannot read character map directory `%s'"
-msgstr "`%s' ë¬¸ìž ì§€ë„ ë””ë ‰í† ë¦¬ë¥¼ ì½ì„ 수 없습니다"
+msgstr "`%s' ë¬¸ìž ì§€ë„ ë””ë ‰í„°ë¦¬ë¥¼ ì½ì„ 수 없습니다"
#: locale/programs/charmap.c:138
#, c-format
@@ -1511,7 +1544,7 @@ msgstr "ë¬¸ìž ì¸ì½”ë”©ì— ë°”ì´íŠ¸ê°€ 너무 많습니다"
msgid "no symbolic name given for end of range"
msgstr "ë²”ìœ„ì˜ ë까지 기호 ì´ë¦„ì´ ì—†ìŠµë‹ˆë‹¤"
-#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
#: locale/programs/ld-identification.c:452
@@ -1538,8 +1571,8 @@ msgstr "%sì— ëŒ€í•œ ê°’ì€ ì •ìˆ˜ì—¬ì•¼ 합니다"
msgid "%s: error in state machine"
msgstr "%s: ìƒíƒœ ê¸°ê³„ì— ì˜¤ë¥˜ ë°œìƒ"
-#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
-#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4115
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
#: locale/programs/ld-identification.c:468
#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
@@ -1562,7 +1595,7 @@ msgstr "ì•Œ 수 없는 ë¬¸ìž `%s'"
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
msgstr "ë²”ìœ„ì˜ ì‹œìž‘ê³¼ ëì˜ ë°”ì´íŠ¸ 시퀀스 ë°”ì´íŠ¸ 수가 다릅니다: %d ë° %d"
-#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3047
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
msgstr "문ìžì˜ 범위로 ìž˜ëª»ëœ ì´ë¦„"
@@ -1584,7 +1617,7 @@ msgstr "ë²”ìœ„ì˜ ìƒí•œê°’ì´ í•˜í•œê°’ë³´ë‹¤ 작습니다"
msgid "resulting bytes for range not representable."
msgstr "ë²”ìœ„ì˜ ìµœì¢… ë°”ì´íŠ¸ìˆ˜ë¥¼ 표시할 수 없습니다."
-#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
@@ -1594,10 +1627,10 @@ msgstr "ë²”ìœ„ì˜ ìµœì¢… ë°”ì´íŠ¸ìˆ˜ë¥¼ 표시할 수 없습니다."
msgid "No definition for %s category found"
msgstr "%s ë²”ì£¼ì— ëŒ€í•œ ì •ì˜ê°€ 없습니다"
-#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
-#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
-#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
-#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
@@ -1610,47 +1643,47 @@ msgstr "%s ë²”ì£¼ì— ëŒ€í•œ ì •ì˜ê°€ 없습니다"
msgid "%s: field `%s' not defined"
msgstr "%s: `%s' 필드를 ì •ì˜í•˜ì§€ 않았습니다"
-#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
-#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
msgstr "%s: `%s' 필드는 비어 있으면 안 ë©ë‹ˆë‹¤"
-#: locale/programs/ld-address.c:168
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
msgstr "%1$s: `%3$s' í•„ë“œì— ìž˜ëª»ëœ ì´ìŠ¤ì¼€ì´í”„ `%%%2$c' 순서열"
# 번역: terminology???
-#: locale/programs/ld-address.c:219
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
msgstr "%s: terminology 언어코드 `%s'ì´(ê°€) ì •ì˜í•˜ì§€ 않았습니다"
-#: locale/programs/ld-address.c:244
+#: locale/programs/ld-address.c:246
#, c-format
msgid "%s: field `%s' must not be defined"
msgstr "%s: `%s' 필드는 ì •ì˜í•´ì„œëŠ” 안 ë©ë‹ˆë‹¤"
-#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
msgstr "%s: 언어 ì¤„ìž„ë§ `%s'ì´(ê°€) ì •ì˜í•˜ì§€ 않았습니다"
-#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
-#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
msgstr "%s: `%s'ì˜ ê°’ì€ `%s'ì˜ ê°’ê³¼ 맞지 않습니다"
-#: locale/programs/ld-address.c:312
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
msgstr "%s: êµ­ê°€ 코드 ìˆ«ìž `%d'ë²ˆì€ ì˜¬ë°”ë¥´ì§€ 않습니다"
-#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
-#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
#: locale/programs/ld-identification.c:364
#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
@@ -1662,7 +1695,7 @@ msgstr "%s: êµ­ê°€ 코드 ìˆ«ìž `%d'ë²ˆì€ ì˜¬ë°”ë¥´ì§€ 않습니다"
msgid "%s: field `%s' declared more than once"
msgstr "%s: `%s' 필드를 여러 번 선언했습니다"
-#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
@@ -1672,7 +1705,7 @@ msgstr "%s: `%s' 필드를 여러 번 선언했습니다"
msgid "%s: unknown character in field `%s'"
msgstr "%s: `%s' í•„ë“œì— ì•Œë ¤ì§€ì§€ ì•Šì€ ë¬¸ìžê°€ 있습니다"
-#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
@@ -1682,10 +1715,10 @@ msgstr "%s: `%s' í•„ë“œì— ì•Œë ¤ì§€ì§€ ì•Šì€ ë¬¸ìžê°€ 있습니다"
msgid "%s: incomplete `END' line"
msgstr "%s: 불완전한 `END' 줄"
-#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:542
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
-#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4105
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
#: locale/programs/ld-identification.c:459
@@ -1829,7 +1862,7 @@ msgstr "`UNDEFINED'ì˜ ì •ì˜ê°€ 없습니다"
msgid "too many errors; giving up"
msgstr "오류가 너무 많습니다; í¬ê¸°í•©ë‹ˆë‹¤"
-#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4044
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
#, c-format
msgid "%s: nested conditionals not supported"
msgstr "%s: 중첩한 ì¡°ê±´ë¬¸ì€ ì§€ì›í•˜ì§€ 않습니다"
@@ -1849,29 +1882,29 @@ msgstr "%s: `%s'ì˜ ì •ì˜ê°€ 중복ë˜ì—ˆìŠµë‹ˆë‹¤"
msgid "%s: duplicate declaration of section `%s'"
msgstr "%s: 섹션 `%s'ì˜ ì„ ì–¸ì´ ì¤‘ë³µë˜ì—ˆìŠµë‹ˆë‹¤"
-#: locale/programs/ld-collate.c:3027
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
msgstr "%s: 사전순서 기호 ì´ë¦„ì— ì•Œ 수 없는 문ìž"
# 번역: equivalent definition??
-#: locale/programs/ld-collate.c:3159
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
msgstr "%s: ëŒ€ì‘ ë¬¸ìž ì •ì˜ ì´ë¦„ì— ì•Œë ¤ì§€ì§€ ì•Šì€ ë¬¸ìžê°€ 있습니다"
-#: locale/programs/ld-collate.c:3172
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
msgstr "%s: ëŒ€ì‘ ë¬¸ìž ì •ì˜ ê°’ì— ì•Œë ¤ì§€ì§€ ì•Šì€ ë¬¸ìžê°€ 있습니다"
# 번역: equivalent definition??
-#: locale/programs/ld-collate.c:3182
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
msgstr "%s: 대ì‘ë¬¸ìž ì •ì˜ì— ì•Œ 수 없는 기호 `%s'"
-#: locale/programs/ld-collate.c:3191
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
msgstr "대ì‘하는 사전 기호를 ë”하는 ë° ì˜¤ë¥˜"
@@ -1952,12 +1985,12 @@ msgstr "%s: 빈 범위 디스í¬ë¦½í„°ë¥¼ 쓸 수 없습니다"
msgid "%s: missing `reorder-sections-end' keyword"
msgstr "%s: `reorder-sections-end' 키워드가 빠졌습니다"
-#: locale/programs/ld-collate.c:4077
+#: locale/programs/ld-collate.c:4079
#, c-format
msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
msgstr "%s: '%s'ì´(ê°€) 해당하는 'ifdef' í˜¹ì€ 'ifndef' ì—†ì´ ë‚˜íƒ€ë‚¬ìŠµë‹ˆë‹¤"
-#: locale/programs/ld-collate.c:4095
+#: locale/programs/ld-collate.c:4097
#, c-format
msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
msgstr "%s: 'endif'ê°€ 해당하는 'ifdef' í˜¹ì€ 'ifndef' ì—†ì´ ë‚˜íƒ€ë‚¬ìŠµë‹ˆë‹¤"
@@ -2288,7 +2321,7 @@ msgstr "%s: `era' í•„ë“œì— ìžˆëŠ” 문ìžì—´ %Zdì—ì„œ 시작 날짜 ê°’ì˜ ëì
msgid "%s: starting date is invalid in string %Zd in `era' field"
msgstr "%s: `era' í•„ë“œì— ìžˆëŠ” 문ìžì—´ %Zdì—ì„œ 시작 날짜가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
-#: locale/programs/ld-time.c:407
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
msgstr "%s: `era' í•„ë“œì— ìžˆëŠ” 문ìžì—´ %Zdì˜ ì˜¤í”„ì…‹ì— ìž˜ëª»ëœ ì •ì§€ 날짜가 있습니다 "
@@ -2298,11 +2331,6 @@ msgstr "%s: `era' í•„ë“œì— ìžˆëŠ” 문ìžì—´ %Zdì˜ ì˜¤í”„ì…‹ì— ìž˜ëª»ëœ ì •ì§
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
msgstr "%s: `era' í•„ë“œì— ìžˆëŠ” 문ìžì—´ %Zdì—ì„œ 멈춤 날짜 ê°’ì˜ ëì— ì“¸ëª¨ì—†ëŠ” ê²ƒì´ ìžˆìŠµë‹ˆë‹¤"
-#: locale/programs/ld-time.c:435
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s: `era' í•„ë“œì— ìžˆëŠ” 문ìžì—´ %Zdì—ì„œ 정지 날짜가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
-
#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
@@ -2405,14 +2433,10 @@ msgid "Print more information"
msgstr "ë” ë§Žì€ ì •ë³´ë¥¼ 표시합니다"
#: locale/programs/locale.c:87
-msgid ""
-"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"로캘 관련 정보를 가져옵니다\\v버그를 보고하는 ë°©ë²•ì€ ë‹¤ìŒì„ 참고하십시오:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get locale-specific information."
+msgstr "로캘 관련 정보를 ì½ìŠµë‹ˆë‹¤."
-#: locale/programs/locale.c:92
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
@@ -2420,27 +2444,27 @@ msgstr ""
"<ì´ë¦„>\n"
"[-a|-m]"
-#: locale/programs/locale.c:193
+#: locale/programs/locale.c:194
#, c-format
msgid "Cannot set LC_CTYPE to default locale"
msgstr "LC_CTYPEì„ ê¸°ë³¸ 로캘로 설정할 수 없습니다"
-#: locale/programs/locale.c:195
+#: locale/programs/locale.c:196
#, c-format
msgid "Cannot set LC_MESSAGES to default locale"
msgstr "LC_MESSAGESì„ ê¸°ë³¸ 로캘로 설정할 수 없습니다"
-#: locale/programs/locale.c:208
+#: locale/programs/locale.c:209
#, c-format
msgid "Cannot set LC_COLLATE to default locale"
msgstr "LC_COLLATEì„ ê¸°ë³¸ 로캘로 설정할 수 없습니다"
-#: locale/programs/locale.c:224
+#: locale/programs/locale.c:225
#, c-format
msgid "Cannot set LC_ALL to default locale"
msgstr "LC_ALLì„ ê¸°ë³¸ 로캘로 설정할 수 없습니다"
-#: locale/programs/locale.c:500
+#: locale/programs/locale.c:518
#, c-format
msgid "while preparing output"
msgstr "ì¶œë ¥ì„ ì¤€ë¹„í•˜ëŠ” ë™ì•ˆ"
@@ -2463,7 +2487,7 @@ msgstr "<파ì¼>ì€ ê¸°í˜¸ë¡œ 표시한 ì´ë¦„ì—ì„œ UCS4 ê°’ìœ¼ë¡œì˜ ë§¤í•‘ì„
#: locale/programs/localedef.c:129
msgid "Create output even if warning messages were issued"
-msgstr "경고 메세지가 나올 경우ì—ë„ ì¶œë ¥í•¨"
+msgstr "경고 메시지가 나올 경우ì—ë„ ì¶œë ¥í•¨"
#: locale/programs/localedef.c:130
msgid "Create old-style tables"
@@ -2479,7 +2503,7 @@ msgstr "엄격하게 POSIX를 따름"
#: locale/programs/localedef.c:134
msgid "Suppress warnings and information messages"
-msgstr "경고 메세지와 관련 ì •ë³´ 메세지를 표시하지 ì•ŠìŒ"
+msgstr "경고 메시지와 관련 ì •ë³´ 메시지를 표시하지 ì•ŠìŒ"
#: locale/programs/localedef.c:135
msgid "Print more messages"
@@ -2530,7 +2554,7 @@ msgstr ""
#: locale/programs/localedef.c:232
#, c-format
msgid "cannot create directory for output files"
-msgstr "출력 파ì¼ì˜ 디렉토리를 만들 수 없습니다"
+msgstr "출력 파ì¼ì˜ 디렉터리를 만들 수 없습니다"
#: locale/programs/localedef.c:243
#, c-format
@@ -2556,7 +2580,7 @@ msgid ""
" locale path : %s\n"
"%s"
msgstr ""
-"ì‹œìŠ¤í…œì˜ ë””ë ‰í† ë¦¬, ë¬¸ìž ì§€ë„ : %s\n"
+"ì‹œìŠ¤í…œì˜ ë””ë ‰í„°ë¦¬, ë¬¸ìž ì§€ë„ : %s\n"
" 레파토리 지ë„: %s\n"
" 로캘 경로 : %s\n"
"%s"
@@ -2677,12 +2701,12 @@ msgstr "\"%s\"ì˜ ì •ë³´ë¥¼ ì½ëŠ” ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: %s: 무시합니다"
#: locale/programs/locarchive.c:1154
#, c-format
msgid "\"%s\" is no directory; ignored"
-msgstr "\"%s\" 파ì¼ì€ 디렉토리가 아닙니다: 무시합니다"
+msgstr "\"%s\" 파ì¼ì€ 디렉터리가 아닙니다: 무시합니다"
#: locale/programs/locarchive.c:1161
#, c-format
msgid "cannot open directory \"%s\": %s: ignored"
-msgstr "\"%s\" 디렉토리를 열 수 없습니다: %s: 무시합니다"
+msgstr "\"%s\" 디렉터리를 열 수 없습니다: %s: 무시합니다"
#: locale/programs/locarchive.c:1233
#, c-format
@@ -2724,8 +2748,8 @@ msgid "cannot create output file `%s' for category `%s'"
msgstr "출력 íŒŒì¼ `%s' 파ì¼ì„ 범주 `%s'ì— ëŒ€í•´ 만들 수 없습니다"
#: locale/programs/locfile.c:782
-msgid "expect string argument for `copy'"
-msgstr "`copy'ì— ëŒ€í•œ 문ìžì—´ ì¸ìˆ˜ê°€ 필요함"
+msgid "expecting string argument for `copy'"
+msgstr "`copy'ì— ëŒ€í•œ 문ìžì—´ ì¸ìˆ˜ê°€ 필요합니다"
#: locale/programs/locfile.c:786
msgid "locale name should consist only of portable characters"
@@ -2841,8 +2865,6 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"사용법: memusage [옵션]... <프로그램> [프로그램옵션]...\n"
"<프로그램>ì˜ ë©”ëª¨ë¦¬ ì‚¬ìš©ëŸ‰ì„ í”„ë¡œíŒŒì¼ë§í•©ë‹ˆë‹¤.\n"
@@ -2868,10 +2890,8 @@ msgstr ""
"\n"
"긴 ì˜µì…˜ì— í•„ìˆ˜ì ì¸ ì¸ìˆ˜ëŠ”, ê°™ì€ ì§§ì€ ì˜µì…˜ì—ì„œë„ í•„ìˆ˜ì ì¸ ì¸ìˆ˜ìž…니다.\n"
"\n"
-"버그 ë³´ê³  ë°©ë²•ì€ ë‹¤ìŒì„ 참고하십시오:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: malloc/memusage.sh:99
+#: malloc/memusage.sh:101
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
@@ -2883,52 +2903,52 @@ msgstr ""
" [--title=<문ìžì—´>] [--x-size=<í¬ê¸°>] [--y-size=<í¬ê¸°>]\n"
" <프로그램> [프로그램옵션]..."
-#: malloc/memusage.sh:191
+#: malloc/memusage.sh:193
msgid "memusage: option \\`${1##*=}' is ambiguous"
msgstr "memusage: \\`${1##*=}' ì˜µì…˜ì€ ëª¨í˜¸í•œ 옵션입니다"
-#: malloc/memusage.sh:200
+#: malloc/memusage.sh:202
msgid "memusage: unrecognized option \\`$1'"
msgstr "memusage: ì¸ì‹í•  수 없는 옵션 \\`$1'"
-#: malloc/memusage.sh:213
+#: malloc/memusage.sh:215
msgid "No program name given"
msgstr "프로그램 ì´ë¦„ì´ ì£¼ì–´ì§€ì§€ 않았습니다"
# 번역: Nameì´ ë™ì‚¬ì¸ê°€, 명사ì¸ê°€???
-#: malloc/memusagestat.c:54
+#: malloc/memusagestat.c:57
msgid "Name output file"
msgstr "출력 íŒŒì¼ ì´ë¦„"
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:58
msgid "Title string used in output graphic"
msgstr "출력 ê·¸ëž˜í”½ì— ì œëª© 문ìžì—´ 사용"
-#: malloc/memusagestat.c:56
+#: malloc/memusagestat.c:59
msgid "Generate output linear to time (default is linear to number of function calls)"
msgstr "ì‹œê°„ì— ë¹„ë¡€í•˜ëŠ” ì¶œë ¥ì„ ë§Œë“­ë‹ˆë‹¤ (ê¸°ë³¸ê°’ì€ í•¨ìˆ˜ 호출 íšŸìˆ˜ì— ë¹„ë¡€í•©ë‹ˆë‹¤)"
-#: malloc/memusagestat.c:58
+#: malloc/memusagestat.c:61
msgid "Also draw graph for total memory consumption"
msgstr "ì „ì²´ 메모리 ì†Œëª¨ì— ëŒ€í•œ ê·¸ëž˜í”„ë„ ê·¸ë¦½ë‹ˆë‹¤"
-#: malloc/memusagestat.c:59
+#: malloc/memusagestat.c:62
msgid "Make output graphic VALUE pixels wide"
msgstr "출력 ê·¸ëž˜í”½ì„ <ê°’> í”½ì…€ë§Œí¼ ë„“ê²Œ 만듭니다"
-#: malloc/memusagestat.c:60
+#: malloc/memusagestat.c:63
msgid "Make output graphic VALUE pixels high"
msgstr "출력 ê·¸ëž˜í”½ì„ <ê°’> í”½ì…€ë§Œí¼ ë†’ê²Œ 만듭니다"
-#: malloc/memusagestat.c:65
+#: malloc/memusagestat.c:68
msgid "Generate graphic from memory profiling data"
msgstr "메모리 프로파ì¼ë§ ìžë£Œì—ì„œ 그래픽 만들기"
-#: malloc/memusagestat.c:68
+#: malloc/memusagestat.c:71
msgid "DATAFILE [OUTFILE]"
msgstr "<ë°ì´í„°íŒŒì¼> [출력파ì¼]"
-#: misc/error.c:118 timezone/zic.c:417
+#: misc/error.c:118
msgid "Unknown system error"
msgstr "알 수 없는 시스템 오류"
@@ -2936,7 +2956,7 @@ msgstr "알 수 없는 시스템 오류"
msgid "unable to free arguments"
msgstr "ì¸ìžë¥¼ 비울 수 없습니다"
-#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr "성공"
@@ -2978,7 +2998,7 @@ msgid "First/next chain broken"
msgstr "first/next ì—°ê²°ì´ ëŠì–´ì§"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
msgstr "허가 거부"
@@ -3088,7 +3108,7 @@ msgstr "ì´ë¦„ í…Œì´ë¸”ì— ìž˜ëª»ëœ ì§ˆì˜"
#: nis/nis_error.h:38
msgid "Attempt to remove a non-empty table"
-msgstr "비어있지 ì•Šì€ í…Œì´ë¸”ì„ ì§€ìš°ë ¤ê³  ì‹œë„"
+msgstr "비어있지 ì•Šì€ í…Œì´ë¸”ì„ ì œê±°í•˜ë ¤ê³  ì‹œë„"
#: nis/nis_error.h:39
msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
@@ -3096,7 +3116,7 @@ msgstr "NIS+ 시작 파ì¼ì— 접근하는 ë° ì˜¤ë¥˜. NIS+를 설치했습니ê
#: nis/nis_error.h:40
msgid "Full resync required for directory"
-msgstr "ë””ë ‰í† ë¦¬ì— ëŒ€í•´ 완전한 resyncê°€ 필요함"
+msgstr "ë””ë ‰í„°ë¦¬ì— ëŒ€í•´ 완전한 resyncê°€ 필요함"
#: nis/nis_error.h:41
msgid "NIS+ operation failed"
@@ -3133,7 +3153,7 @@ msgstr "마스터 서버가 작업중ì´ë¯€ë¡œ, ì „ì²´ ë¤í”„를 연기합니다
#: nis/nis_local_names.c:122
#, c-format
msgid "LOCAL entry for UID %d in directory %s not unique\n"
-msgstr "디렉토리 %2$sì˜ UID %1$dë²ˆì„ ìœ„í•œ LOCAL entryê°€ 유ì¼í•˜ì§€ 않습니다\n"
+msgstr "디렉터리 %2$sì˜ UID %1$dë²ˆì„ ìœ„í•œ LOCAL entryê°€ 유ì¼í•˜ì§€ 않습니다\n"
#: nis/nis_print.c:51
msgid "UNKNOWN"
@@ -3149,7 +3169,7 @@ msgstr "오브ì íŠ¸ê°€ ì—†ìŒ\n"
#: nis/nis_print.c:115
msgid "DIRECTORY\n"
-msgstr "디렉토리\n"
+msgstr "디렉터리\n"
#: nis/nis_print.c:118
msgid "GROUP\n"
@@ -3331,7 +3351,7 @@ msgstr "오브ì íŠ¸ ì´ë¦„ : %s\n"
#: nis/nis_print.c:327
#, c-format
msgid "Directory : %s\n"
-msgstr "디렉토리 : %s\n"
+msgstr "디렉터리 : %s\n"
#: nis/nis_print.c:328
#, c-format
@@ -3465,7 +3485,7 @@ msgstr "netname2user: (NIS+ 찾기): %s\n"
#: nis/nss_nisplus/nisplus-publickey.c:321
#, c-format
msgid "netname2user: DES entry for %s in directory %s not unique"
-msgstr "netname2user: 디렉토리 %2$sì˜ %1$sì— ëŒ€í•œ DES entryê°€ 유ì¼í•˜ì§€ 않습니다"
+msgstr "netname2user: 디렉터리 %2$sì˜ %1$sì— ëŒ€í•œ DES entryê°€ 유ì¼í•˜ì§€ 않습니다"
#: nis/nss_nisplus/nisplus-publickey.c:339
#, c-format
@@ -3475,439 +3495,478 @@ msgstr "netname2user: 주요 ì´ë¦„ `%s'ì€(는) 너무 ê¹ë‹ˆë‹¤"
#: nis/nss_nisplus/nisplus-publickey.c:395
#, c-format
msgid "netname2user: LOCAL entry for %s in directory %s not unique"
-msgstr "netname2user: 디렉토리 %2$sì˜ %1$sì— ëŒ€í•œ LOCAL 엔트리가 유ì¼í•˜ì§€ 않습니다"
+msgstr "netname2user: 디렉터리 %2$sì˜ %1$sì— ëŒ€í•œ LOCAL 엔트리가 유ì¼í•˜ì§€ 않습니다"
#: nis/nss_nisplus/nisplus-publickey.c:402
msgid "netname2user: should not have uid 0"
msgstr "netname2user: UID를 0으로 할 수 없습니다"
-#: nis/ypclnt.c:825
+#: nis/ypclnt.c:836
msgid "Request arguments bad"
msgstr "요청 ì¸ìˆ˜ê°€ 잘못ë¨"
-#: nis/ypclnt.c:828
+#: nis/ypclnt.c:839
msgid "RPC failure on NIS operation"
msgstr "NIS 연산 중 RPC 실패함"
-#: nis/ypclnt.c:831
+#: nis/ypclnt.c:842
msgid "Can't bind to server which serves this domain"
msgstr "ì´ ë„ë©”ì¸ì„ 제공하는 ì„œë²„ì— ì—°ê²°í•  수 없습니다"
-#: nis/ypclnt.c:834
+#: nis/ypclnt.c:845
msgid "No such map in server's domain"
msgstr "ì„œë²„ì˜ ë„ë©”ì¸ì— 그런 지ë„ê°€ ì—†ìŒ"
-#: nis/ypclnt.c:837
+#: nis/ypclnt.c:848
msgid "No such key in map"
msgstr "지ë„ì— ê·¸ëŸ° 키가 ì—†ìŒ"
-#: nis/ypclnt.c:840
+#: nis/ypclnt.c:851
msgid "Internal NIS error"
msgstr "내부 NIS 오류"
-#: nis/ypclnt.c:843
+#: nis/ypclnt.c:854
msgid "Local resource allocation failure"
msgstr "지역 ìžì› 할당 실패"
-#: nis/ypclnt.c:846
+#: nis/ypclnt.c:857
msgid "No more records in map database"
msgstr "ì§€ë„ ë°ì´í„°ë² ì´ìŠ¤ì— ë” ì´ìƒì˜ 기ë¡ì´ ì—†ìŒ"
-#: nis/ypclnt.c:849
+#: nis/ypclnt.c:860
msgid "Can't communicate with portmapper"
msgstr "rpcinfo: í¬íŠ¸ë§¤í¼ì™€ 통신할 수 없습니다"
-#: nis/ypclnt.c:852
+#: nis/ypclnt.c:863
msgid "Can't communicate with ypbind"
msgstr "ypbind와 통신할 수 없습니다"
-#: nis/ypclnt.c:855
+#: nis/ypclnt.c:866
msgid "Can't communicate with ypserv"
msgstr "ypserv와 통신할 수 없습니다"
-#: nis/ypclnt.c:858
+#: nis/ypclnt.c:869
msgid "Local domain name not set"
msgstr "지역 ë„ë©”ì¸ëª…ì„ ì„¤ì •í•˜ì§€ 않았ìŒ"
-#: nis/ypclnt.c:861
+#: nis/ypclnt.c:872
msgid "NIS map database is bad"
msgstr "NIS ì§€ë„ ë°ì´í„°ë² ì´ìŠ¤ê°€ 틀렸습니다"
-#: nis/ypclnt.c:864
+#: nis/ypclnt.c:875
msgid "NIS client/server version mismatch - can't supply service"
msgstr "NIS í´ë¼ì´ì–¸íŠ¸/서버 버전 불ì¼ì¹˜ - 서비스를 제공할 수 없습니다"
-#: nis/ypclnt.c:870
+#: nis/ypclnt.c:881
msgid "Database is busy"
msgstr "ë°ì´í„°ë² ì´ìŠ¤ê°€ ìž‘ì—… 중입니다"
-#: nis/ypclnt.c:873
+#: nis/ypclnt.c:884
msgid "Unknown NIS error code"
msgstr "알 수 없는 NIS 오류 코드"
-#: nis/ypclnt.c:913
+#: nis/ypclnt.c:924
msgid "Internal ypbind error"
msgstr "내부 ypbind 오류"
-#: nis/ypclnt.c:916
+#: nis/ypclnt.c:927
msgid "Domain not bound"
msgstr "ë„ë©”ì¸ì´ 연결하지 ì•ŠìŒ"
-#: nis/ypclnt.c:919
+#: nis/ypclnt.c:930
msgid "System resource allocation failure"
msgstr "시스템 ìžì› 할당 실패"
-#: nis/ypclnt.c:922
+#: nis/ypclnt.c:933
msgid "Unknown ypbind error"
msgstr "알 수 없는 ypbind 오류"
-#: nis/ypclnt.c:963
+#: nis/ypclnt.c:974
msgid "yp_update: cannot convert host to netname\n"
msgstr "yp_update: 호스트를 네트ì´ë¦„으로 바꿀 수 없습니다\n"
-#: nis/ypclnt.c:981
+#: nis/ypclnt.c:992
msgid "yp_update: cannot get server address\n"
msgstr "yp_update: 서버 주소를 ì–»ì„ ìˆ˜ 없습니다\n"
-#: nscd/aicache.c:77 nscd/hstcache.c:468
+#: nscd/aicache.c:82 nscd/hstcache.c:481
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
msgstr "호스트 ìºì‹œì—ì„œ \"%s\"ì„(를) ì°¾ì„ ìˆ˜ 없었습니다!"
-#: nscd/aicache.c:79 nscd/hstcache.c:470
+#: nscd/aicache.c:84 nscd/hstcache.c:483
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
msgstr "호스트 ìºì‹œì—ì„œ \"%s\"ì„(를) 다시 ì½ì–´ë“¤ìž…니다!"
-#: nscd/cache.c:146
+#: nscd/cache.c:150
#, c-format
msgid "add new entry \"%s\" of type %s for %s to cache%s"
msgstr "새 항목 \"%s\" ë”하기, 종류 %s, ìš©ë„ %s, ìºì‹œ %s"
-#: nscd/cache.c:148
+#: nscd/cache.c:152
msgid " (first)"
msgstr " (처ìŒ)"
-#: nscd/cache.c:256 nscd/connections.c:810
+#: nscd/cache.c:286 nscd/connections.c:866
#, c-format
msgid "cannot stat() file `%s': %s"
msgstr "`%s' 파ì¼ì— stat()ì„ í•  수 없습니다: %s"
-#: nscd/cache.c:285
+#: nscd/cache.c:328
#, c-format
msgid "pruning %s cache; time %ld"
msgstr "잘ë¼ë‚´ê¸°: %s ìºì‹œ; 시간 %ld"
-#: nscd/cache.c:312
+#: nscd/cache.c:357
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
msgstr "처리: %s 항목 \"%s\", 제한시간 %<PRIu64>"
-#: nscd/connections.c:521 nscd/connections.c:533 nscd/connections.c:545
-#: nscd/connections.c:564
+#: nscd/connections.c:570
#, c-format
msgid "invalid persistent database file \"%s\": %s"
msgstr "ìž˜ëª»ëœ ê³ ì • ë°ì´í„° ë² ì´ìŠ¤ íŒŒì¼ \"%s\": %s"
-#: nscd/connections.c:535
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr "초기화하지 ì•Šì€ í—¤ë”"
+
+#: nscd/connections.c:583
msgid "header size does not match"
msgstr "í—¤ë” í¬ê¸°ê°€ 맞지 않습니다"
-#: nscd/connections.c:547
+#: nscd/connections.c:593
msgid "file size does not match"
msgstr "íŒŒì¼ í¬ê¸°ê°€ 맞지 않습니다"
-#: nscd/connections.c:566
+#: nscd/connections.c:610
msgid "verification failed"
msgstr "í™•ì¸ ì‹¤íŒ¨"
-#: nscd/connections.c:580
+#: nscd/connections.c:624
#, c-format
msgid "suggested size of table for database %s larger than the persistent database's table"
msgstr "%s ë°ì´í„°ë² ì´ìŠ¤ì˜ 제안한 í…Œì´ë¸” í¬ê¸°ê°€ ê³ ì • ë°ì´í„°ë² ì´ìŠ¤ í…Œì´ë¸”보다 í½ë‹ˆë‹¤"
-#: nscd/connections.c:591 nscd/connections.c:673
+#: nscd/connections.c:635 nscd/connections.c:720
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
msgstr "\"%s\"ì— ëŒ€í•œ ì½ê¸° ì „ìš© 디스í¬ë¦½í„°ë¥¼ 만들 수 없습니다: mmapì´ ì—†ìŠµë‹ˆë‹¤"
-#: nscd/connections.c:652
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr "'%s'ì— ì—°ê²°í•  수 없습니다"
+
+#: nscd/connections.c:699
#, c-format
msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
-msgstr "%sì— ëŒ€í•œ ë°ì´í„°ë² ì´ìŠ¤ê°€ ì†ìƒë˜ì—ˆê±°ë‚˜ ë™ì‹œì— 사용하고 있습니다. 필요하면 %sì„(를) 수ë™ìœ¼ë¡œ 지우고 다시 시작하십시오"
+msgstr "%sì— ëŒ€í•œ ë°ì´í„°ë² ì´ìŠ¤ê°€ ì†ìƒë˜ì—ˆê±°ë‚˜ ë™ì‹œì— 사용하고 있습니다. 필요하면 %sì„(를) 수ë™ìœ¼ë¡œ 제거하고 다시 시작하십시오"
-#: nscd/connections.c:659
+#: nscd/connections.c:706
#, c-format
msgid "cannot create %s; no persistent database used"
msgstr "%sì„(를) 만들 수 없습니다: ê³ ì • ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 사용하지 않습니다"
-#: nscd/connections.c:662
+#: nscd/connections.c:709
#, c-format
msgid "cannot create %s; no sharing possible"
msgstr "%sì„(를) 만들 수 없습니다: 공유가 불가능합니다"
-#: nscd/connections.c:733
+#: nscd/connections.c:780
#, c-format
msgid "cannot write to database file %s: %s"
msgstr "%s ë°ì´í„°ë² ì´ìŠ¤ 파ì¼ì— 쓸 수 없습니다: %s"
-#: nscd/connections.c:772
+#: nscd/connections.c:819
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
msgstr "ì†Œì¼“ì„ ì‹¤í–‰í•  ë•Œ ë‹«ë„ë¡ ì„¤ì •í•  수 없습니다: %s: 파ë¼ë…¸ì´ì•„ 모드를 사용하지 않습니다"
-#: nscd/connections.c:823
+#: nscd/connections.c:902
#, c-format
msgid "cannot open socket: %s"
msgstr "ì†Œì¼“ì„ ì—´ 수 없습니다: %s"
-#: nscd/connections.c:840
+#: nscd/connections.c:922
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
msgstr "ì†Œì¼“ì„ ë¹„ë™ê¸° 모드로 바꿀 수 없습니다: %s"
-#: nscd/connections.c:848
+#: nscd/connections.c:930
#, c-format
msgid "cannot set socket to close on exec: %s"
msgstr "ì†Œì¼“ì„ ì‹¤í–‰í•  ë•Œ ë‹«ë„ë¡ ì„¤ì •í•  수 없습니다: %s"
-#: nscd/connections.c:859
+#: nscd/connections.c:943
#, c-format
msgid "cannot enable socket to accept connections: %s"
msgstr "ì†Œì¼“ì´ ì—°ê²°ì„ ë°›ì•„ë“¤ì´ë„ë¡ í•  수 없습니다: %s"
-#: nscd/connections.c:955
+#: nscd/connections.c:1043
#, c-format
msgid "provide access to FD %d, for %s"
msgstr "FD %dë²ˆì— ì ‘ê·¼, ìš©ë„ %s"
-#: nscd/connections.c:967
+#: nscd/connections.c:1055
#, c-format
msgid "cannot handle old request version %d; current version is %d"
msgstr "ê³¼ê±°ì˜ ìš”ì²­ 버전 %d ë²„ì „ì„ ì²˜ë¦¬í•  수 없습니다; 현재 ë²„ì „ì€ %d입니다"
-#: nscd/connections.c:1009 nscd/connections.c:1062
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr "ê¶Œí•œì´ ì—†ì–´ì„œ %ldì—ì„œ 온 ìš”ì²­ì„ ì²˜ë¦¬í•  수 없습니다"
+
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr "ê¶Œí•œì´ ì—†ì–´ì„œ '%s'[%ld]ì—ì„œ 온 ìš”ì²­ì„ ì²˜ë¦¬í•  수 없습니다"
+
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr "ê¶Œí•œì´ ì—†ì–´ì„œ ìš”ì²­ì„ ì²˜ë¦¬í•  수 없습니다"
+
+#: nscd/connections.c:1125 nscd/connections.c:1178
#, c-format
msgid "cannot write result: %s"
msgstr "결과를 쓸 수 없습니다: %s"
-#: nscd/connections.c:1145
+#: nscd/connections.c:1261
#, c-format
msgid "error getting caller's id: %s"
msgstr "호출한 측 ID를 ì–»ëŠ”ë° ì˜¤ë¥˜: %s"
-#: nscd/connections.c:1204
+#: nscd/connections.c:1320
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "/proc/self/cmdlineì„ ì—´ 수 없습니다: %s: 파ë¼ë…¸ì´ì•„ 모드를 사용하지 않습니다"
-#: nscd/connections.c:1218
+#: nscd/connections.c:1334
#, c-format
msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "/proc/self/cmdlineì„ ì½ì„ 수 없습니다: %s: 파ë¼ë…¸ì´ì•„ 모드를 사용하지 않습니다"
-#: nscd/connections.c:1258
+#: nscd/connections.c:1374
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
msgstr "과거 UIDë¡œ 바꿀 수 없습니다: %s: 파ë¼ë…¸ì´ì•„ 모드를 사용하지 않습니다"
-#: nscd/connections.c:1268
+#: nscd/connections.c:1384
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
msgstr "과거 GIDë¡œ 바꿀 수 없습니다: %s: 파ë¼ë…¸ì´ì•„ 모드를 사용하지 않습니다"
-#: nscd/connections.c:1281
+#: nscd/connections.c:1397
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
-msgstr "과거 ìž‘ì—… 디렉토리로 바꿀 수 없습니다: %s: 파ë¼ë…¸ì´ì•„ 모드를 사용하지 않습니다"
+msgstr "과거 ìž‘ì—… 디렉터리로 바꿀 수 없습니다: %s: 파ë¼ë…¸ì´ì•„ 모드를 사용하지 않습니다"
-#: nscd/connections.c:1310
+#: nscd/connections.c:1429
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
msgstr "다시 실행 실패: %s: 파ë¼ë…¸ì´ì•„ 모드를 사용하지 않습니다"
-#: nscd/connections.c:1319
+#: nscd/connections.c:1438
#, c-format
msgid "cannot change current working directory to \"/\": %s"
-msgstr "현재 작업 디렉토리를 \"/\"로 바꿀 수 없습니다: %s"
+msgstr "현재 작업 디렉터리를 \"/\"로 바꿀 수 없습니다: %s"
-#: nscd/connections.c:1437
+#: nscd/connections.c:1644
#, c-format
msgid "short read while reading request: %s"
msgstr "ìš”êµ¬ì‚¬í•­ì„ ë‹¤ ì½ì§€ 못했ìŒ: %s"
-#: nscd/connections.c:1468
+#: nscd/connections.c:1677
#, c-format
msgid "key length in request too long: %d"
msgstr "요청한 í‚¤ì˜ ê¸¸ì´ê°€ 너무 ê¹€: %d"
-#: nscd/connections.c:1481
+#: nscd/connections.c:1690
#, c-format
msgid "short read while reading request key: %s"
msgstr "요청한 키를 다 ì½ì§€ 못했ìŒ: %s"
-#: nscd/connections.c:1490
+#: nscd/connections.c:1699
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
msgstr "handle_request: ìš”ì²­ì„ ë°›ì•˜ìŒ (버전 = %d), PID %ld"
-#: nscd/connections.c:1495
+#: nscd/connections.c:1704
#, c-format
msgid "handle_request: request received (Version = %d)"
msgstr "handle_request: ìš”ì²­ì„ ë°›ì•˜ìŒ (버전 = %d)"
-#: nscd/connections.c:1856
+#: nscd/connections.c:1903 nscd/connections.c:2101
#, c-format
-msgid "could only start %d threads; terminating"
-msgstr "스레드 %d개만 시작할 수 있습니다: ë냅니다"
+msgid "disabled inotify after read error %d"
+msgstr "ì½ê¸° 오류 %d번 ë°œìƒ í›„ inotify ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ì§€ 않습니다"
+
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr "조건 변수를 초기화할 수 없습니다"
+
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr "정리 스레드를 시작할 수 없습니다: ë냅니다"
+
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr "ìž‘ì—… 스레드를 시작할 수 없습니다: ë냅니다"
-#: nscd/connections.c:1904 nscd/connections.c:1905 nscd/connections.c:1922
-#: nscd/connections.c:1931 nscd/connections.c:1949 nscd/connections.c:1960
-#: nscd/connections.c:1971
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
#, c-format
msgid "Failed to run nscd as user '%s'"
msgstr "nscd를 '%s' 사용ìžë¡œ 실행하는 ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
-#: nscd/connections.c:1923
+#: nscd/connections.c:2322
#, c-format
msgid "initial getgrouplist failed"
msgstr "최초 getgrouplist 실패"
-#: nscd/connections.c:1932
+#: nscd/connections.c:2331
#, c-format
msgid "getgrouplist failed"
msgstr "getgrouplist 실패"
-#: nscd/connections.c:1950
+#: nscd/connections.c:2349
#, c-format
msgid "setgroups failed"
msgstr "setgroups 실패"
-#: nscd/grpcache.c:402 nscd/hstcache.c:418 nscd/initgrcache.c:412
-#: nscd/pwdcache.c:397 nscd/servicescache.c:343
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
#, c-format
msgid "short write in %s: %s"
msgstr "%sì—ì„œ 다 쓰지 못했습니다: %s"
-#: nscd/grpcache.c:445 nscd/initgrcache.c:78
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
msgstr "그룹 ìºì‹œì—ì„œ \"%s\"ì„(를) ì°¾ì„ ìˆ˜ 없었습니다!"
-#: nscd/grpcache.c:447 nscd/initgrcache.c:80
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
msgstr "그룹 ìºì‹œì—ì„œ \"%s\"ì„(를) 다시 ì½ì–´ë“¤ìž…니다!"
-#: nscd/grpcache.c:524
+#: nscd/grpcache.c:517
#, c-format
msgid "Invalid numeric gid \"%s\"!"
msgstr "gid 번호 \"%s\"ë²ˆì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤!"
-#: nscd/mem.c:383
+#: nscd/mem.c:457
#, c-format
msgid "freed %zu bytes in %s cache"
msgstr "%zu ë°”ì´íŠ¸ 메모리 í•´ì œ (%s ìºì‹œ) "
-#: nscd/mem.c:512
+#: nscd/mem.c:594
#, c-format
msgid "no more memory for database '%s'"
msgstr "'%s' ë°ì´í„°ë² ì´ìŠ¤ì— 메모리가 ë” ì´ìƒ 없습니다"
-#: nscd/nscd.c:98
+#: nscd/nscd.c:101
msgid "Read configuration data from NAME"
msgstr "<ì´ë¦„>ì—ì„œ 설정 ë°ì´í„°ë¥¼ ì½ìŠµë‹ˆë‹¤"
-#: nscd/nscd.c:100
+#: nscd/nscd.c:103
msgid "Do not fork and display messages on the current tty"
-msgstr "fork하지 ì•Šê³  현재 TTYì— ë©”ì„¸ì§€ë¥¼ 표시합니다"
+msgstr "fork하지 ì•Šê³  현재 TTYì— ë©”ì‹œì§€ë¥¼ 표시합니다"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "NUMBER"
msgstr "<숫ìž>"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "Start NUMBER threads"
msgstr "<숫ìž>ê°œì˜ ìŠ¤ë ˆë“œë¥¼ 시작합니다"
-#: nscd/nscd.c:102
+#: nscd/nscd.c:105
msgid "Shut the server down"
msgstr "서버를 ë냅니다"
-#: nscd/nscd.c:103
-msgid "Print current configuration statistic"
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
msgstr "현재 설정 ìƒíƒœë¥¼ 표시합니다"
-#: nscd/nscd.c:104
+#: nscd/nscd.c:107
msgid "TABLE"
msgstr "<í…Œì´ë¸”>"
-#: nscd/nscd.c:105
+#: nscd/nscd.c:108
msgid "Invalidate the specified cache"
msgstr "지정한 ìºì‹œë¥¼ 무효화합니다"
-#: nscd/nscd.c:106
+#: nscd/nscd.c:109
msgid "TABLE,yes"
msgstr "<í…Œì´ë¸”>,예"
-#: nscd/nscd.c:107
+#: nscd/nscd.c:110
msgid "Use separate cache for each user"
msgstr "사용ìžë³„ë¡œ 별ë„ì˜ ìºì‹œ 사용"
-#: nscd/nscd.c:112
+#: nscd/nscd.c:115
msgid "Name Service Cache Daemon."
msgstr "네임 서비스 ìºì‹œ ë°ëª¬."
-#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
#, c-format
msgid "wrong number of arguments"
msgstr "ì¸ìˆ˜ì˜ 개수가 잘못ë˜ì—ˆìŒ"
-#: nscd/nscd.c:154
+#: nscd/nscd.c:157
#, c-format
msgid "failure while reading configuration file; this is fatal"
msgstr "설정 파ì¼ì„ ì½ëŠ” ë° ì‹¤íŒ¨: 치명ì ìž…니다"
-#: nscd/nscd.c:163
+#: nscd/nscd.c:166
#, c-format
msgid "already running"
msgstr "ì´ë¯¸ 실행 중"
-#: nscd/nscd.c:178 nscd/nscd.c:233
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
msgid "cannot fork"
msgstr "fork할 수 없습니다"
-#: nscd/nscd.c:241
+#: nscd/nscd.c:244
#, c-format
msgid "cannot change current working directory to \"/\""
-msgstr "현재 작업 디렉토리를 \"/\"로 바꿀 수 없습니다"
+msgstr "현재 작업 디렉터리를 \"/\"로 바꿀 수 없습니다"
-#: nscd/nscd.c:249
+#: nscd/nscd.c:252
msgid "Could not create log file"
msgstr "ê¸°ë¡ íŒŒì¼ì„ 만들 수 없습니다"
-#: nscd/nscd.c:302 nscd/nscd.c:327 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
msgid "Only root is allowed to use this option!"
msgstr "rootë§Œì´ ì´ ì˜µì…˜ì„ ì‚¬ìš©í•  수 있습니다!"
-#: nscd/nscd.c:364 nscd/nscd_stat.c:191
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr "'%s'ì€(는) 알려진 ë°ì´í„°ë² ì´ìŠ¤ê°€ 아닙니다"
+
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
msgid "write incomplete"
msgstr "완전히 쓰지 못했습니다"
-#: nscd/nscd.c:375
+#: nscd/nscd.c:381
#, c-format
msgid "cannot read invalidate ACK"
msgstr "무효화 ACK를 ì½ì§€ 못했습니다"
-#: nscd/nscd.c:381
+#: nscd/nscd.c:387
#, c-format
msgid "invalidation failed"
msgstr "무효화 실패"
-#: nscd/nscd.c:391
+#: nscd/nscd.c:397
#, c-format
msgid "secure services not implemented anymore"
msgstr "보안 서비스는 ë” ì´ìƒ 구현하지 않습니다"
@@ -3922,37 +3981,37 @@ msgstr "%s ë°ì´í„°ë² ì´ìŠ¤ëŠ” 지ì›í•˜ì§€ 않습니다"
msgid "Parse error: %s"
msgstr "파싱 오류: %s"
-#: nscd/nscd_conf.c:193
+#: nscd/nscd_conf.c:194
#, c-format
msgid "Must specify user name for server-user option"
msgstr "server-user 옵션ì—ì„œ 사용ìžì´ë¦„ì„ ì§€ì •í•´ì•¼ 합니다"
-#: nscd/nscd_conf.c:200
+#: nscd/nscd_conf.c:201
#, c-format
msgid "Must specify user name for stat-user option"
msgstr "stat-user 옵션ì—ì„œ 사용ìžì´ë¦„ì„ ì§€ì •í•´ì•¼ 합니다"
-#: nscd/nscd_conf.c:244
+#: nscd/nscd_conf.c:245
#, c-format
msgid "invalid value for 'reload-count': %u"
msgstr "'reload-count'ì˜ ê°’ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤: %u"
-#: nscd/nscd_conf.c:259
+#: nscd/nscd_conf.c:260
#, c-format
msgid "Must specify value for restart-interval option"
msgstr "restart-interval ì˜µì…˜ì˜ ê°’ì„ ì§€ì •í•´ì•¼ 합니다"
-#: nscd/nscd_conf.c:273
+#: nscd/nscd_conf.c:274
#, c-format
msgid "Unknown option: %s %s %s"
msgstr "알 수 없는 옵션: %s %s %s"
-#: nscd/nscd_conf.c:286
+#: nscd/nscd_conf.c:287
#, c-format
msgid "cannot get current working directory: %s; disabling paranoia mode"
-msgstr "현재 ìž‘ì—… 디렉토리를 ì–»ì„ ìˆ˜ 없습니다: %s: 파ë¼ë…¸ì´ì•„ 모드를 사용하지 않습니다"
+msgstr "현재 ìž‘ì—… 디렉터리를 ì–»ì„ ìˆ˜ 없습니다: %s: 파ë¼ë…¸ì´ì•„ 모드를 사용하지 않습니다"
-#: nscd/nscd_conf.c:306
+#: nscd/nscd_conf.c:307
#, c-format
msgid "maximum file size for %s database too small"
msgstr "%s ë°ì´í„°ë² ì´ìŠ¤ì˜ 최대 íŒŒì¼ í¬ê¸°ê°€ 너무 작습니다"
@@ -4061,14 +4120,14 @@ msgstr ""
"\n"
"%s ìºì‹œ:\n"
"\n"
-"%15s ê°œì˜ ìºì‹œ 사용중\n"
+"%15s ê°œì˜ ìºì‹œ 사용 중\n"
"%15s ê°œì˜ ìºì‹œ ê³ ì •\n"
"%15s ê°œì˜ ìºì‹œ 공유\n"
"%15zu 만í¼ì˜ ì œì•ˆëœ í¬ê¸°\n"
"%15zu 만í¼ì˜ ì „ì²´ ë°ì´í„° í’€ í¬ê¸°\n"
"%15zu 만í¼ì˜ 사용 ë°ì´í„° í’€ í¬ê¸°\n"
-"%15lu ì´ˆë™ì•ˆ í¬ì§€í‹°ë¸Œ 엔트리 유지\n"
-"%15lu ì´ˆë™ì•ˆ 네거티브 엔트리 유지\n"
+"%15lu ì´ˆ ë™ì•ˆ í¬ì§€í‹°ë¸Œ 엔트리 유지\n"
+"%15lu ì´ˆ ë™ì•ˆ 네거티브 엔트리 유지\n"
"%15<PRIuMAX> 번 í¬ì§€í‹°ë¸Œ ì—”íŠ¸ë¦¬ì— ëŒ€í•´ ìºì‹œ 히트\n"
"%15<PRIuMAX> 번 네거티브 ì—”íŠ¸ë¦¬ì— ëŒ€í•´ ìºì‹œ 히트\n"
"%15<PRIuMAX> 번 í¬ì§€í‹°ë¸Œ ì—”íŠ¸ë¦¬ì— ëŒ€í•´ ìºì‹œ 미스\n"
@@ -4082,17 +4141,17 @@ msgstr ""
"%15<PRIuMAX> 메모리 할당 실패\n"
"%15s ë°”ë€ ì‚¬í•­ì— ëŒ€í•´ /etc/%s 검사\n"
-#: nscd/pwdcache.c:440
+#: nscd/pwdcache.c:443
#, c-format
msgid "Haven't found \"%s\" in password cache!"
msgstr "암호 ìºì‹œì—ì„œ \"%s\"ì„(를) ì°¾ì„ ìˆ˜ 없었습니다!"
-#: nscd/pwdcache.c:442
+#: nscd/pwdcache.c:445
#, c-format
msgid "Reloading \"%s\" in password cache!"
msgstr "암호 ìºì‹œì—ì„œ \"%s\"ì„(를) 다시 ì½ì–´ë“¤ìž…니다!"
-#: nscd/pwdcache.c:520
+#: nscd/pwdcache.c:523
#, c-format
msgid "Invalid numeric uid \"%s\"!"
msgstr "UID 번호 \"%s\"ë²ˆì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤!"
@@ -4168,7 +4227,11 @@ msgstr "NSCD 컨í…스트를 얻는 ë° ì˜¤ë¥˜"
msgid "Error getting sid from context"
msgstr "컨í…스트를 없애는 ë° ì˜¤ë¥˜"
-#: nscd/selinux.c:399
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr "ë°ì´í„°ë² ì´ìŠ¤ ì •ì±…ì„ ì»´íŒŒì¼ íƒ€ìž„ì— ì§€ì›í•˜ì§€ 않습니다"
+
+#: nscd/selinux.c:407
#, c-format
msgid ""
"\n"
@@ -4214,28 +4277,24 @@ msgid "Service configuration to be used"
msgstr "사용할 서비스 설정"
#: nss/getent.c:62
-msgid ""
-"Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"ê´€ë¦¬ìž ë°ì´í„°ë² ì´ìŠ¤ì—ì„œ í•­ëª©ì„ ê°€ì ¸ì˜µë‹ˆë‹¤\\v버그를 보고하는 ë°©ë²•ì€ ë‹¤ìŒì„ 참고하십시오:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get entries from administrative database."
+msgstr "ê´€ë¦¬ìž ë°ì´í„°ë² ì´ìŠ¤ì—ì„œ í•­ëª©ì„ ì½ìŠµë‹ˆë‹¤."
-#: nss/getent.c:145 nss/getent.c:394
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
msgid "Enumeration not supported on %s\n"
msgstr "%sì— ì´ë‰´ë¨¸ë ˆì´ì…˜ì„ 지ì›í•˜ì§€ 않습니다\n"
-#: nss/getent.c:782
+#: nss/getent.c:794
#, c-format
msgid "Unknown database name"
msgstr "ì•Œ 수 없는 ë°ì´í„°ë² ì´ìŠ¤ ì´ë¦„"
-#: nss/getent.c:808
+#: nss/getent.c:820
msgid "Supported databases:\n"
msgstr "지ì›í•˜ëŠ” ë°ì´í„°ë² ì´ìŠ¤:\n"
-#: nss/getent.c:868
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
msgstr "ì•Œ 수 없는 ë°ì´í„°ë² ì´ìŠ¤: `%s'\n"
@@ -4246,7 +4305,7 @@ msgstr "키를 소문ìžë¡œ 변환합니다 "
#: nss/makedb.c:63
msgid "Do not print messages while building database"
-msgstr "ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 만드는 ì¤‘ì— ë©”ì„¸ì§€ë¥¼ 출력하지 않습니다"
+msgstr "ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 만드는 ì¤‘ì— ë©”ì‹œì§€ë¥¼ 출력하지 않습니다"
#: nss/makedb.c:65
msgid "Print content of database file, one entry a line"
@@ -4309,151 +4368,165 @@ msgstr "사용법: %s [-v <스펙>] <변수ì´ë¦„> [경로ì´ë¦„]\n"
msgid " %s -a [pathname]\n"
msgstr " %s -a [경로ì´ë¦„]\n"
-#: posix/getconf.c:1067
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
+"사용법: getconf [-v <스펙>] <변수>\n"
+" 혹ì€: getconf [-v <스펙>] <경로변수> <경로>\n"
+"\n"
+"<변수> ë³€ìˆ˜ì— ëŒ€í•œ 설정 변수 ê°’ì„ ì½ìŠµë‹ˆë‹¤. í˜¹ì€ <경로> ê²½ë¡œì— ëŒ€í•œ 변수\n"
+"<경로_변수> ë³€ìˆ˜ì— ëŒ€í•œ 설정 변수 ê°’ì„ ì½ìŠµë‹ˆë‹¤. SPECì´ ìžˆìœ¼ë©´ 컴파ì¼\n"
+"환경 SPECì— ëŒ€í•œ ê°’ì„ ì½ìŠµë‹ˆë‹¤.\n"
+"\n"
+
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
msgstr "알 수 없는 스펙 \"%s\""
-#: posix/getconf.c:1095
+#: posix/getconf.c:1109
#, c-format
msgid "Couldn't execute %s"
msgstr "%s 실행할 수 없습니다"
-#: posix/getconf.c:1135 posix/getconf.c:1151
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
msgstr "ì •ì˜í•˜ì§€ ì•ŠìŒ"
-#: posix/getconf.c:1173
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
msgstr "ì¸ì‹í•  수 없는 변수 `%s'"
-#: posix/getopt.c:571 posix/getopt.c:587
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
msgid "%s: option '%s' is ambiguous\n"
-msgstr "%s: `%s' ì˜µì…˜ì€ ëª¨í˜¸í•œ 옵션입니다\n"
+msgstr "%s: '%s' ì˜µì…˜ì€ ëª¨í˜¸í•œ 옵션입니다\n"
-#: posix/getopt.c:620 posix/getopt.c:624
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: `--%s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n"
+msgstr "%s: '--%s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n"
-#: posix/getopt.c:633 posix/getopt.c:638
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: `%c%s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n"
+msgstr "%s: '%c%s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n"
-#: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
-#: posix/getopt.c:1035
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: `%s' ì˜µì…˜ì€ ì¸ìˆ˜ê°€ 필요합니다\n"
+msgstr "%s: '%s' ì˜µì…˜ì€ ì¸ìˆ˜ê°€ 필요합니다\n"
-#: posix/getopt.c:738 posix/getopt.c:741
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: ì¸ì‹í•  수 없는 옵션 `--%s'\n"
+msgstr "%s: ì¸ì‹í•  수 없는 옵션 '--%s'\n"
-#: posix/getopt.c:749 posix/getopt.c:752
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: ì¸ì‹í•  수 없는 옵션 `%c%s'\n"
-
-#: posix/getopt.c:804 posix/getopt.c:807
-#, c-format
-msgid "%s: illegal option -- '%c'\n"
-msgstr "%s: ìž˜ëª»ëœ ì˜µì…˜ -- %c\n"
+msgstr "%s: ì¸ì‹í•  수 없는 옵션 '%c%s'\n"
-#: posix/getopt.c:813 posix/getopt.c:816
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: 부ì ì ˆí•œ 옵션 -- %c\n"
+msgstr "%s: 부ì ì ˆí•œ 옵션 -- '%c'\n"
-#: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
-#: posix/getopt.c:1106
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: ì´ ì˜µì…˜ì€ ì¸ìˆ˜ê°€ 필요합니다 -- %c\n"
+msgstr "%s: ì´ ì˜µì…˜ì€ ì¸ìˆ˜ê°€ 필요합니다 -- '%c'\n"
-#: posix/getopt.c:937 posix/getopt.c:953
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: `-W %s' ì˜µì…˜ì€ ëª¨í˜¸í•œ 옵션입니다\n"
+msgstr "%s: '-W %s' ì˜µì…˜ì€ ëª¨í˜¸í•œ 옵션입니다\n"
-#: posix/getopt.c:977 posix/getopt.c:995
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: `-W %s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n"
+msgstr "%s: '-W %s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n"
-#: posix/regcomp.c:135
+#: posix/regcomp.c:136
msgid "No match"
msgstr "맞는 ì§ ì—†ìŒ"
-#: posix/regcomp.c:138
+#: posix/regcomp.c:139
msgid "Invalid regular expression"
msgstr "부ì ì ˆí•œ ì •ê·œì‹"
-#: posix/regcomp.c:141
+#: posix/regcomp.c:142
msgid "Invalid collation character"
msgstr "부ì ì ˆí•œ 대조 문ìž"
-#: posix/regcomp.c:144
+#: posix/regcomp.c:145
msgid "Invalid character class name"
msgstr "부ì ì ˆí•œ ë¬¸ìž í´ëž˜ìŠ¤ ì´ë¦„"
-#: posix/regcomp.c:147
+#: posix/regcomp.c:148
msgid "Trailing backslash"
msgstr "ë”°ë¼ë¶™ëŠ” 역슬래쉬"
-#: posix/regcomp.c:150
+#: posix/regcomp.c:151
msgid "Invalid back reference"
msgstr "부ì ì ˆí•œ 후방 참조"
-#: posix/regcomp.c:153
+#: posix/regcomp.c:154
msgid "Unmatched [ or [^"
msgstr "ì§ì´ 맞지 않는 [ ë˜ëŠ” [^"
-#: posix/regcomp.c:156
+#: posix/regcomp.c:157
msgid "Unmatched ( or \\("
msgstr "ì§ì´ 맞지 않는 ( ë˜ëŠ” \\("
-#: posix/regcomp.c:159
+#: posix/regcomp.c:160
msgid "Unmatched \\{"
msgstr "ì§ì´ 맞지 않는 \\{"
-#: posix/regcomp.c:162
+#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
msgstr "\\{\\}ì— ë¶€ì ì ˆí•œ ë‚´ìš©ë¬¼ì´ ìžˆìŒ"
-#: posix/regcomp.c:165
+#: posix/regcomp.c:166
msgid "Invalid range end"
msgstr "부ì ì ˆí•œ 범위 ë"
-#: posix/regcomp.c:168
+#: posix/regcomp.c:169
msgid "Memory exhausted"
msgstr "메모리가 바닥남"
-#: posix/regcomp.c:171
+#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
msgstr "ì•žì„  ì •ê·œì‹ì´ 부ì ì ˆí•¨"
-#: posix/regcomp.c:174
+#: posix/regcomp.c:175
msgid "Premature end of regular expression"
msgstr "ì •ê·œì‹ì´ 완결ë˜ì§€ ì•Šì€ ì±„ ë남"
-#: posix/regcomp.c:177
+#: posix/regcomp.c:178
msgid "Regular expression too big"
msgstr "ì •ê·œì‹ì´ 너무 í½ë‹ˆë‹¤"
-#: posix/regcomp.c:180
+#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
msgstr "ì§ì´ 맞지 않는 ) ë˜ëŠ” \\)"
-#: posix/regcomp.c:660
+#: posix/regcomp.c:681
msgid "No previous regular expression"
msgstr "ì´ì „ì˜ ì •ê·œì‹ì´ ì—†ìŒ"
-#: posix/wordexp.c:1798
+#: posix/wordexp.c:1832
msgid "parameter null or not set"
msgstr "ì¸ìžê°€ NULLì´ê±°ë‚˜ ì¸ìžë¥¼ 지정하지 않았습니다"
@@ -4537,133 +4610,138 @@ msgstr "실제 ì‹œê° ì‹œê·¸ë„ %d번"
msgid "Unknown signal %d"
msgstr "ì•Œ 수 없는 ì‹œê·¸ë„ %d번"
-#: sunrpc/auth_unix.c:114
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create: 메모리 부족\n"
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "메모리 부족\n"
#: sunrpc/auth_unix.c:350
msgid "auth_unix.c: Fatal marshalling problem"
msgstr "auth_unix.c: 치명ì ì¸ ë§ˆìƒ¬ë§ ë¬¸ì œ"
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; ë‚®ì€ ë²„ì „ = %lu, ë†’ì€ ë²„ì „ = %lu"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s: %s; ë‚®ì€ ë²„ì „ = %lu, ë†’ì€ ë²„ì „ = %lu"
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr "; ì´ìœ  = "
+#: sunrpc/clnt_perr.c:112
+#, c-format
+msgid "%s: %s; why = %s\n"
+msgstr "%s: %s; ì´ìœ  = %s\n"
-#: sunrpc/clnt_perr.c:132
+#: sunrpc/clnt_perr.c:114
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(ì•Œ 수 없는 ì¸ì¦ 오류 - %d)"
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s: %s; ì´ìœ  = (ì•Œ 수 없는 ì¸ì¦ 오류 - %d)\n"
-#: sunrpc/clnt_perr.c:172
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
msgstr "RPC: 성공"
-#: sunrpc/clnt_perr.c:175
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
msgstr "RPC: ì¸ìˆ˜ë¥¼ ì¸ì½”딩할 수 없습니다"
-#: sunrpc/clnt_perr.c:179
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
msgstr "RPC: 결과를 디코딩할 수 없습니다"
-#: sunrpc/clnt_perr.c:183
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
msgstr "RPC: 보낼 수 없습니다"
-#: sunrpc/clnt_perr.c:187
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
msgstr "RPC: ë°›ì„ ìˆ˜ 없습니다"
-#: sunrpc/clnt_perr.c:191
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
msgstr "RPC: 시간 초과"
-#: sunrpc/clnt_perr.c:195
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
msgstr "RPC: 호환ë˜ì§€ 않는 RPC 버전"
-#: sunrpc/clnt_perr.c:199
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
msgstr "RPC: ì¸ì¦ 오류"
-#: sunrpc/clnt_perr.c:203
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
msgstr "RPC: 프로그램 사용 불가능"
-#: sunrpc/clnt_perr.c:207
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
msgstr "RPC: 프로그램/버전 불ì¼ì¹˜"
-#: sunrpc/clnt_perr.c:211
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
msgstr "RPC: 프로시져 사용 불가능"
-#: sunrpc/clnt_perr.c:215
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
msgstr "RPC: 서버가 ì¸ìˆ˜ë¥¼ 디코딩할 수 없습니다"
-#: sunrpc/clnt_perr.c:219
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
msgstr "RPC: ì›ê²© 시스템 오류"
-#: sunrpc/clnt_perr.c:223
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
msgstr "RPC: 알 수 없는 호스트"
-#: sunrpc/clnt_perr.c:227
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
msgstr "RPC: 알 수 없는 규약"
-#: sunrpc/clnt_perr.c:231
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
msgstr "RPC: í¬íŠ¸ ë§µí¼ ì‹¤íŒ¨"
-#: sunrpc/clnt_perr.c:235
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
msgstr "RPC: í”„ë¡œê·¸ëž¨ì„ ë“±ë¡í•˜ì§€ ì•ŠìŒ"
-#: sunrpc/clnt_perr.c:239
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
msgstr "RPC: 실패 (지정하지 ì•Šì€ ì˜¤ë¥˜)"
-#: sunrpc/clnt_perr.c:280
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
msgstr "RPC: (알 수 없는 오류 코드)"
-#: sunrpc/clnt_perr.c:342
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
msgstr "ì¸ì¦ 성공"
-#: sunrpc/clnt_perr.c:345
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
msgstr "부ì ì ˆí•œ í´ë¼ì´ì–¸íŠ¸ ìžê²© 부여"
-#: sunrpc/clnt_perr.c:349
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
msgstr "서버가 ìžê²© 부여를 거부했습니다"
-#: sunrpc/clnt_perr.c:353
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
msgstr "부ì ì ˆí•œ í´ë¼ì´ì–¸íŠ¸ ê²€ì¦ê¸°"
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
msgstr "서버가 ê²€ì¦ê¸°ë¥¼ 거부했습니다"
-#: sunrpc/clnt_perr.c:361
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
msgstr "í´ë¼ì´ì–¸íŠ¸ ìžê²© 부여가 너무 약함"
-#: sunrpc/clnt_perr.c:365
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
msgstr "부ì ì ˆí•œ 서버 ê²€ì¦ê¸°"
-#: sunrpc/clnt_perr.c:369
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
msgstr "실패 (지정하지 ì•Šì€ ì˜¤ë¥˜)"
@@ -4671,18 +4749,6 @@ msgstr "실패 (지정하지 ì•Šì€ ì˜¤ë¥˜)"
msgid "clnt_raw.c: fatal header serialization error"
msgstr "clnt_raw.c: 치명ì ì¸ í—¤ë” ì§ë ¬í™” 오류"
-#: sunrpc/clnt_tcp.c:131
-msgid "clnttcp_create: out of memory\n"
-msgstr "clnttcp_create: 메모리 부족\n"
-
-#: sunrpc/clnt_udp.c:139
-msgid "clntudp_create: out of memory\n"
-msgstr "clntudp_create: 메모리 부족\n"
-
-#: sunrpc/clnt_unix.c:128
-msgid "clntunix_create: out of memory\n"
-msgstr "clntunix_create: 메모리 부족\n"
-
#: sunrpc/pm_getmaps.c:83
msgid "pmap_getmaps.c: rpc problem"
msgstr "pmap_getmaps.c: RPC 문제"
@@ -4711,119 +4777,242 @@ msgstr "브로드ìºìŠ¤íŠ¸ ì„ íƒ ë¬¸ì œ"
msgid "Cannot receive reply to broadcast"
msgstr "브로드ìºìŠ¤íŠ¸ì— 대한 ì‘ë‹µì„ ë°›ì„ ìˆ˜ 없습니다"
-#: sunrpc/rpc_main.c:286
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr "%s: ì¶œë ¥ì´ %sì„(를) ë®ì–´ì“¸ 것입니다\n"
-#: sunrpc/rpc_main.c:293
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr "%s: %sì„(를) ì—´ 수 ì—†ìŒ: %m\n"
-#: sunrpc/rpc_main.c:305
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
msgstr "%s: %sì„(를) 출력하는 ë„중 오류 ë°œìƒ: %m"
-#: sunrpc/rpc_main.c:340
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
msgstr "C 전처리기를 ì°¾ì„ ìˆ˜ 없습니다: %s \n"
-#: sunrpc/rpc_main.c:348
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
msgstr "ì–´ë–¤ C ì „ì²˜ë¦¬ê¸°ë„ (cpp) ì°¾ì„ ìˆ˜ 없습니다\n"
-#: sunrpc/rpc_main.c:417
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
msgstr "%s: C 전처리기가 ì‹œê·¸ë„ %d번으로 실패하였습니다\n"
-#: sunrpc/rpc_main.c:420
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
msgstr "%s: C 전처리기가 exit 코드 %d번으로 실패하였습니다\n"
-#: sunrpc/rpc_main.c:460
+#: sunrpc/rpc_main.c:464
#, c-format
msgid "illegal nettype: `%s'\n"
msgstr "ë„¤íŠ¸ì›Œí¬ ì¢…ë¥˜ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤: `%s'\n"
-#: sunrpc/rpc_main.c:1122
+#: sunrpc/rpc_main.c:1130
#, c-format
msgid "rpcgen: too many defines\n"
msgstr "rpcgen: 너무 ë§Žì€ ì •ì˜\n"
-#: sunrpc/rpc_main.c:1134
+#: sunrpc/rpc_main.c:1142
#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr "rcpgen: arglist 코딩 오류\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1167
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
msgstr "`%s' 파ì¼ì´ ì´ë¯¸ 있습니다. ë®ì–´ 쓸 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤\n"
-#: sunrpc/rpc_main.c:1212
+#: sunrpc/rpc_main.c:1220
#, c-format
msgid "Cannot specify more than one input file!\n"
msgstr "한개 ì´ìƒì˜ ìž…ë ¥ 파ì¼ì„ 지정할 수 없습니다!\n"
-#: sunrpc/rpc_main.c:1382
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
msgstr "ì´ êµ¬í˜„ë¬¼ì€ newstyleì´ë‚˜ MT-safe 코드를 지ì›í•˜ì§€ 않습니다!\n"
-#: sunrpc/rpc_main.c:1391
+#: sunrpc/rpc_main.c:1403
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
msgstr "네트워í¬ID 플래그를 inetd 플래그와 함께 쓸 수 없습니다!\n"
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
msgstr "네트워í¬ID 플래그를 TIRPC와 함께 쓸 수 없습니다!\n"
-#: sunrpc/rpc_main.c:1410
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
msgstr "새로운 스타ì¼ì—서는 í…Œì´ë¸” 플래그를 쓸 수 없습니다!\n"
-#: sunrpc/rpc_main.c:1429
+#: sunrpc/rpc_main.c:1441
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
msgstr "템플릿 ìƒì„± 플래그를 위해서는 \"입력파ì¼\"ì´ í•„ìš”í•©ë‹ˆë‹¤.\n"
-#: sunrpc/rpc_main.c:1434
+#: sunrpc/rpc_main.c:1446
#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr "í•œ ê°œ ì´ìƒì˜ íŒŒì¼ ìƒì„± 플래그를 쓸 수 없습니다\n"
-#: sunrpc/rpc_main.c:1443
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
msgstr "사용법: %s 입력파ì¼\n"
-#: sunrpc/rpc_main.c:1444
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
msgstr "\t%s [-abkCLNTM][-Dì´ë¦„[=ê°’]] [-i í¬ê¸°] [-I [-K ì´ˆ]] [-Y 경로] 입력파ì¼\n"
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o 출력파ì¼] [입력파ì¼]\n"
-#: sunrpc/rpc_main.c:1448
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
msgstr "\t%s [-s 네트워í¬ì¢…류]* [-o 출력파ì¼] [입력파ì¼]\n"
-#: sunrpc/rpc_main.c:1449
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
msgstr "\t%s [-n 네트워í¬ID]* [-o 출력파ì¼] [입력파ì¼]\n"
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr "옵션:\n"
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr "-a\t\t모든 파ì¼ì„ ìƒì„±í•©ë‹ˆë‹¤ (예제 í¬í•¨)\n"
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr "-b\t\t하위 호환성 모드 (SunOS 4.1 코드 ìƒì„±)\n"
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr "-c\t\tXDR ë£¨í‹´ì„ ìƒì„±í•©ë‹ˆë‹¤\n"
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr "-C\t\tANSI C 모드\n"
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr "-Dì´ë¦„[=ê°’]\t심볼 ê°’ì„ ì •ì˜í•©ë‹ˆë‹¤ (#defineê³¼ ë™ì¼)\n"
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr "-h\t\tí—¤ë” íŒŒì¼ì„ ìƒì„±í•©ë‹ˆë‹¤\n"
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr "-i í¬ê¸°\t\tì¸ë¼ì¸ 코드를 ìƒì„±í•˜ê¸° 시작할 í¬ê¸°\n"
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr "-I\t\t서버ì—ì„œ inetd ì§€ì› ì½”ë“œë¥¼ ìƒì„±í•©ë‹ˆë‹¤ (SunOS 4.1 ìš©ë„)\n"
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr "-K ì´ˆ\t\t활ë™ì´ K초간 없으면 서버가 ë납니다\n"
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr "-l\t\tí´ë¼ì´ì–¸íŠ¸ 코드를 ìƒì„±í•©ë‹ˆë‹¤\n"
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr "-L\t\t서버 오류를 syslog로 보냅니다\n"
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr "-m\t\t서버 코드를 ìƒì„±í•©ë‹ˆë‹¤\n"
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr "-M\t\t다중 스레드 ì§€ì› ì½”ë“œë¥¼ 만듭니다\n"
+
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr "-n netid\tnetid ì•„ì´ë”” 네í¬ì›Œí¬ë¥¼ 지ì›í•˜ëŠ” 서버 코드를 ìƒì„±í•©ë‹ˆë‹¤\n"
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr "-N\t\t여러 ê°œì˜ ì¸ìžì™€ ê°’ì— ì˜í•œ í˜¸ì¶œì„ ì§€ì›í•©ë‹ˆë‹¤\n"
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr "-o 출력파ì¼\t출력 파ì¼ì˜ ì´ë¦„\n"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr "-s nettype\tnettype 타입 네í¬ì›Œí¬ë¥¼ 지ì›í•˜ëŠ” 서버 코드를 ìƒì„±í•©ë‹ˆë‹¤\n"
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr "-Sc\t\tì›ê²© 프로시저를 사용하는 예제 í´ë¼ì´ì–¸íŠ¸ 코드를 ìƒì„±í•©ë‹ˆë‹¤\n"
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr "-Sc\t\tì›ê²© 프로시저를 ì •ì˜í•˜ëŠ” 예제 서버 코드를 ìƒì„±í•©ë‹ˆë‹¤\n"
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr "-Sm \t\të©”ì´í¬íŒŒì¼ 템플리트를 ìƒì„±í•©ë‹ˆë‹¤\n"
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr "-t\t\tRPC 디스패치 í…Œì´ë¸”ì„ ìƒì„±í•©ë‹ˆë‹¤\n"
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr "-T\t\tRPC 디스패치 í…Œì´ë¸”ì„ ì§€ì›í•˜ëŠ” 코드를 ìƒì„±í•©ë‹ˆë‹¤\n"
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr "-Y 경로\t\tC 전처리기를 (cpp) ì°¾ì„ ë””ë ‰í„°ë¦¬ ì´ë¦„\n"
+
#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
msgstr "ìƒìˆ˜ í˜¹ì€ ì‹ë³„ìžê°€ 와야 함"
@@ -4844,79 +5033,79 @@ msgstr "빈 문ìžì—´"
msgid "preprocessor error"
msgstr "전처리기 오류"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
msgstr "프로그램 %luì€(는) 사용 불가능합니다\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
msgstr "프로그램 %lu %lu ë²„ì „ì€ ì‚¬ìš© 불가능합니다\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr "프로그램 %lu %lu ë²„ì „ì€ ì¤€ë¹„ë˜ì–´ 기다리고 있습니다\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
msgstr "rpcinfo: í¬íŠ¸ë§¤í¼ì— ì—°ê²°í•  수 없습니다"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
msgstr "ì›ê²© í”„ë¡œê·¸ëž¨ì„ ë“±ë¡í•˜ì§€ 않았ìŒ.\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
msgstr " 프로그램 버전 프로토 í¬íŠ¸\n"
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
msgstr "(ì•Œ 수 ì—†ìŒ)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
msgstr "rpcinfo: 브로드ìºìŠ¤íŠ¸ 실패함: %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
msgstr "죄송합니다. root가 아닙니다\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
-msgstr "rpcinfo: 프로그램 %s 버전 %sì˜ ë“±ë¡ì„ 지울 수 없습니다\n"
+msgstr "rpcinfo: 프로그램 %s 버전 %sì˜ ë“±ë¡ì„ 삭제할 수 없습니다\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
msgstr "사용법: rpcinfo [ -n <í¬íŠ¸ë²ˆí˜¸> ] -u <호스트> <프로그램번호> [ <버전번호> ]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr " rpcinfo [ -n í¬íŠ¸ë²ˆí˜¸ ] -t 호스트 프로그램번호 [ 버전번호 ]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
msgstr " rpcinfo -p [ 호스트 ]\n"
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
msgstr " rpcinfo -b 프로그램번호 버전번호\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
msgstr " rpcinfo -d 프로그램번호 버전번호\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr "rpcinfo: %sì€(는) ì•Œ 수 없는 서비스입니다\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
msgstr "rpcinfo: %sì€(는) ì•Œ 수 없는 호스트입니다\n"
@@ -4965,14 +5154,6 @@ msgstr "svc_tcp.c - tcp 소켓 ìƒì„± 문제"
msgid "svc_tcp.c - cannot getsockname or listen"
msgstr "svc_tcp.c - getsockname í˜¹ì€ listen 불가능"
-#: sunrpc/svc_tcp.c:179
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create: 메모리 부족\n"
-
-#: sunrpc/svc_tcp.c:218
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp: makefd_xprt: 메모리 부족\n"
-
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
msgstr "svcudp_create: 소켓 만들기 문제"
@@ -4981,39 +5162,35 @@ msgstr "svcudp_create: 소켓 만들기 문제"
msgid "svcudp_create - cannot getsockname"
msgstr "svcudp_create - getsockname 불가능"
-#: sunrpc/svc_udp.c:152
-msgid "svcudp_create: out of memory\n"
-msgstr "svcudp_create: 메모리 부족\n"
-
-#: sunrpc/svc_udp.c:174
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
msgstr "svcudp_create: xp_padê°€ IP_PKTINFOì— ëŒ€í•˜ì—¬ 너무 작습니다\n"
-#: sunrpc/svc_udp.c:474
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
msgstr "enablecache: ìºì‹œê°€ ì´ë¯¸ 활성화ë˜ì–´ 있ìŒ"
-#: sunrpc/svc_udp.c:480
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
msgstr "enablecache: ìºì‹œë¥¼ 할당할 수 없습니다"
-#: sunrpc/svc_udp.c:489
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
msgstr "enablecache: ìºì‹œ ìžë£Œë¥¼ 할당할 수 없습니다"
-#: sunrpc/svc_udp.c:497
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
msgstr "enablecache: ìºì‹œ FIFO를 할당할 수 없습니다"
-#: sunrpc/svc_udp.c:532
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
msgstr "cache_set: 버릴 ê²ƒì„ ì°¾ì§€ 못했습니다"
-#: sunrpc/svc_udp.c:543
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
msgstr "cache_set: 버릴 ê²ƒì„ í• ë‹¹í•˜ì§€ 못했습니다"
-#: sunrpc/svc_udp.c:550
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
msgstr "cache_set: 새 rpc_buffer를 할당할 수 없습니다"
@@ -5025,34 +5202,6 @@ msgstr "svc_unix.c - AF_UNIX 소켓 ìƒì„± 문제"
msgid "svc_unix.c - cannot getsockname or listen"
msgstr "svc_unix.c - getsockname í˜¹ì€ listen 불가능"
-#: sunrpc/svc_unix.c:176
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create: 메모리 부족\n"
-
-#: sunrpc/svc_unix.c:215
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix: makefc_xprt: 메모리 부족\n"
-
-#: sunrpc/xdr.c:566
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes: 메모리 부족\n"
-
-#: sunrpc/xdr.c:718
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string: 메모리 부족\n"
-
-#: sunrpc/xdr_array.c:106
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array: 메모리 부족\n"
-
-#: sunrpc/xdr_rec.c:156
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create: 메모리 부족\n"
-
-#: sunrpc/xdr_ref.c:86
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_reference: 메모리 부족\n"
-
#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
msgid "Hangup"
msgstr "ëŠì–´ì§"
@@ -5315,13 +5464,13 @@ msgstr "그런 장치가 ì—†ìŒ"
#. TRANS A file that isn't a directory was specified when a directory is required.
#: sysdeps/gnu/errlist.c:229
msgid "Not a directory"
-msgstr "디렉토리가 아닙니다"
+msgstr "디렉터리가 아닙니다"
#. TRANS File is a directory; you cannot open a directory for writing,
#. TRANS or create or remove hard links to it.
#: sysdeps/gnu/errlist.c:239
msgid "Is a directory"
-msgstr "디렉토리입니다"
+msgstr "디렉터리입니다"
#. TRANS Invalid argument. This is used to indicate various kinds of problems
#. TRANS with passing the wrong argument to a library function.
@@ -5634,7 +5783,7 @@ msgstr "호스트로 ê°ˆ 루트가 ì—†ìŒ"
#. TRANS this error occurs when you are trying to delete a directory.
#: sysdeps/gnu/errlist.c:745
msgid "Directory not empty"
-msgstr "디렉토리가 비어있지 ì•ŠìŒ"
+msgstr "디렉터리가 비어있지 ì•ŠìŒ"
#. TRANS This means that the per-user limit on new process would be exceeded by
#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on
@@ -5798,7 +5947,7 @@ msgstr "ìž˜ëª»ëœ ë©”ì‹œì§€"
#: sysdeps/gnu/errlist.c:1009
msgid "Identifier removed"
-msgstr "ì‹ë³„ìž ì§€ì›€"
+msgstr "ì‹ë³„ìž ì œê±°"
#: sysdeps/gnu/errlist.c:1017
msgid "Multihop attempted"
@@ -6114,413 +6263,494 @@ msgstr "%sì€(는) 알려지지 ì•Šì€ ê¸°ê³„ %dì„(를) 위한 것입니다.\n"
msgid "makecontext: does not know how to handle more than 8 arguments\n"
msgstr "makecontext: 8개보다 ë§Žì€ ì¸ìžë¥¼ 어떻게 처리할 지 ì•Œ 수 없습니다\n"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
+"사용법: lddlibc4 <파ì¼>\n"
+"\n"
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
msgid "cannot open `%s'"
msgstr "`%s'ì„(를) ì—´ 수 없습니다"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
msgid "cannot read header from `%s'"
msgstr "`%s'ì—ì„œ í—¤ë”를 ì½ì„ 수 없습니다"
-#: timezone/zdump.c:211
+#: timezone/zdump.c:210
msgid "lacks alphabetic at start"
msgstr "알파벳으로 시작하지 않습니다"
-#: timezone/zdump.c:213
+#: timezone/zdump.c:212
msgid "has fewer than 3 alphabetics"
msgstr "알파벳 3ìžë³´ë‹¤ ì ìŠµë‹ˆë‹¤"
-#: timezone/zdump.c:215
+#: timezone/zdump.c:214
msgid "has more than 6 alphabetics"
msgstr "알파벳 6ìžë³´ë‹¤ 많습니다"
-#: timezone/zdump.c:223
+#: timezone/zdump.c:222
msgid "differs from POSIX standard"
msgstr "POSIX 표준과 다릅니다"
-#: timezone/zdump.c:229
+#: timezone/zdump.c:228
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
msgstr "%s: 경고: 지역 \"%s\" 약어 \"%s\" %s\n"
-#: timezone/zdump.c:280
+#: timezone/zdump.c:279
#, c-format
msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
msgstr "%s: ì‚¬ìš©ë²•ì€ %s [ --version ] [ -v ] [ -c [하위연ë„,]ìƒìœ„ì—°ë„ ] 지역ì´ë¦„ ...\n"
-#: timezone/zdump.c:297
+#: timezone/zdump.c:296
#, c-format
msgid "%s: wild -c argument %s\n"
msgstr "%s: ì œë©‹ëŒ€ë¡œì¸ -c ì¸ìˆ˜ %s\n"
-#: timezone/zdump.c:388
+#: timezone/zdump.c:387
msgid "Error writing to standard output"
msgstr "표준 ì¶œë ¥ì— ì“°ëŠ” ë° ì˜¤ë¥˜"
-#: timezone/zdump.c:411
+#: timezone/zdump.c:410
#, c-format
msgid "%s: use of -v on system with floating time_t other than float or double\n"
msgstr "%s: floatì´ë‚˜ doubleì´ ì•„ë‹Œ 부ë™ì†Œìˆ˜ time_t를 사용하는 시스템ì—ì„œ -v 옵션 사용\n"
-#: timezone/zic.c:392
+#: timezone/zic.c:388
#, c-format
msgid "%s: Memory exhausted: %s\n"
msgstr "%s: 메모리가 바닥남: %s\n"
-#: timezone/zic.c:451
+#: timezone/zic.c:434
#, c-format
msgid "\"%s\", line %d: %s"
msgstr "\"%s\", í–‰ %d: %s"
-#: timezone/zic.c:454
+#: timezone/zic.c:437
#, c-format
msgid " (rule from \"%s\", line %d)"
msgstr " (\"%s\"ì— ìžˆëŠ” 규칙, í–‰ %d)"
-#: timezone/zic.c:466
+#: timezone/zic.c:449
msgid "warning: "
msgstr "경고: "
-#: timezone/zic.c:476
+#: timezone/zic.c:459
#, c-format
msgid ""
"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
msgstr ""
"%s: ì‚¬ìš©ë²•ì€ %s [ --version ] [ -v ] [ -l ì§€ì—­ì‹œê° ] [ -p POSIX규칙 ] \\\n"
-"\t[ -d 디렉토리 ] [ -L 윤초 ] [ -y ì—°ë„ì˜í˜•íƒœ ] [ 파ì¼ì´ë¦„ ... ]\n"
+"\t[ -d 디렉터리 ] [ -L 윤초 ] [ -y ì—°ë„ì˜í˜•íƒœ ] [ 파ì¼ì´ë¦„ ... ]\n"
-#: timezone/zic.c:511
+#: timezone/zic.c:494
msgid "wild compilation-time specification of zic_t"
msgstr "ì œë©‹ëŒ€ë¡œì¸ zic_tì˜ ì»´íŒŒì¼ íƒ€ìž„ 명세"
-#: timezone/zic.c:528
+#: timezone/zic.c:511
#, c-format
msgid "%s: More than one -d option specified\n"
msgstr "%s: 하나 ì´ìƒì˜ -d ì˜µì…˜ì„ ì§€ì •í–ˆìŠµë‹ˆë‹¤\n"
-#: timezone/zic.c:538
+#: timezone/zic.c:521
#, c-format
msgid "%s: More than one -l option specified\n"
msgstr "%s: 하나 ì´ìƒì˜ -l ì˜µì…˜ì„ ì§€ì •í–ˆìŠµë‹ˆë‹¤\n"
-#: timezone/zic.c:548
+#: timezone/zic.c:531
#, c-format
msgid "%s: More than one -p option specified\n"
msgstr "%s: 하나 ì´ìƒì˜ -p ì˜µì…˜ì„ ì§€ì •í–ˆìŠµë‹ˆë‹¤\n"
-#: timezone/zic.c:558
+#: timezone/zic.c:541
#, c-format
msgid "%s: More than one -y option specified\n"
msgstr "%s: 하나 ì´ìƒì˜ -y ì˜µì…˜ì„ ì§€ì •í–ˆìŠµë‹ˆë‹¤\n"
-#: timezone/zic.c:568
+#: timezone/zic.c:551
#, c-format
msgid "%s: More than one -L option specified\n"
msgstr "%s: 하나 ì´ìƒì˜ -L ì˜µì…˜ì„ ì§€ì •í–ˆìŠµë‹ˆë‹¤\n"
-#: timezone/zic.c:617
+#: timezone/zic.c:600
msgid "link to link"
msgstr "ë§í¬ë¡œ ë§í¬"
-#: timezone/zic.c:682
+#: timezone/zic.c:665
msgid "hard link failed, symbolic link used"
msgstr "하드 ë§í¬ 실패, 심볼릭 ë§í¬ë¥¼ 사용합니다"
-#: timezone/zic.c:690
+#: timezone/zic.c:673
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
msgstr "%s: %sì„(를) %s(으)ë¡œ ë§í¬í•  수 없습니다: %s\n"
-#: timezone/zic.c:762 timezone/zic.c:764
+#: timezone/zic.c:745 timezone/zic.c:747
msgid "same rule name in multiple files"
msgstr "여러 파ì¼ì— ê°™ì€ ì´ë¦„ì˜ ê·œì¹™ì´ ìžˆìŒ"
-#: timezone/zic.c:805
+#: timezone/zic.c:788
msgid "unruly zone"
msgstr "규칙없는 지역"
-#: timezone/zic.c:812
+#: timezone/zic.c:795
#, c-format
msgid "%s in ruleless zone"
msgstr "규칙없는 ì§€ì—­ì— %s 있ìŒ"
-#: timezone/zic.c:833
+#: timezone/zic.c:816
msgid "standard input"
msgstr "표준 입력"
-#: timezone/zic.c:838
+#: timezone/zic.c:821
#, c-format
msgid "%s: Can't open %s: %s\n"
msgstr "%s: %sì„(를) ì—´ 수 없습니다: %s\n"
-#: timezone/zic.c:849
+#: timezone/zic.c:832
msgid "line too long"
msgstr "í–‰ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤"
-#: timezone/zic.c:869
+#: timezone/zic.c:852
msgid "input line of unknown type"
msgstr "ì•Œ 수 없는 í˜•íƒœì˜ ìž…ë ¥í–‰"
-#: timezone/zic.c:885
+#: timezone/zic.c:868
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
msgstr "%s: 윤초 파ì¼ì´ ì•„ë‹Œ %s 파ì¼ì— Leap ì¤„ì´ ìžˆìŒ\n"
-#: timezone/zic.c:892 timezone/zic.c:1329 timezone/zic.c:1351
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
msgstr "%s: 문제ìƒíƒœ: ìž˜ëª»ëœ ì¢Œë³€ê°’ %d\n"
-#: timezone/zic.c:900
+#: timezone/zic.c:883
#, c-format
msgid "%s: Error reading %s\n"
msgstr "%s: %sì„(를) ì½ëŠ” ë„중 오류 ë°œìƒ\n"
-#: timezone/zic.c:907
+#: timezone/zic.c:890
#, c-format
msgid "%s: Error closing %s: %s\n"
msgstr "%s: %sì„(를) 닫는 ë„중 오류 ë°œìƒ: %s\n"
-#: timezone/zic.c:912
+#: timezone/zic.c:895
msgid "expected continuation line not found"
msgstr "예ìƒí–ˆë˜ ì—°ì† í–‰ì„ ì°¾ì§€ 못했ìŒ"
-#: timezone/zic.c:956 timezone/zic.c:2489 timezone/zic.c:2508
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
msgid "time overflow"
msgstr "시간 ê°’ì´ ë„˜ì–´ê°"
-#: timezone/zic.c:960
+#: timezone/zic.c:943
msgid "24:00 not handled by pre-1998 versions of zic"
msgstr "24:00는 1998ë…„ ì „ ë²„ì „ì˜ zic는 처리하지 못합니다"
-#: timezone/zic.c:963
+#: timezone/zic.c:946
msgid "values over 24 hours not handled by pre-2007 versions of zic"
msgstr "24보다 í° ê°’ì€ 2007ë…„ ì „ ë²„ì „ì˜ zic는 처리하지 못합니다"
-#: timezone/zic.c:976
+#: timezone/zic.c:959
msgid "wrong number of fields on Rule line"
msgstr "Rule ì¤„ì— í•„ë“œì˜ ê°œìˆ˜ê°€ 잘못ë˜ì—ˆìŒ"
-#: timezone/zic.c:980
+#: timezone/zic.c:963
msgid "nameless rule"
msgstr "ì´ë¦„없는 규칙"
-#: timezone/zic.c:985
+#: timezone/zic.c:968
msgid "invalid saved time"
msgstr "절약 ì‹œê°„ì´ ë¶€ì ì ˆí•¨"
-#: timezone/zic.c:1006
+#: timezone/zic.c:989
msgid "wrong number of fields on Zone line"
msgstr "Zone ì¤„ì— í•„ë“œì˜ ê°¯ìˆ˜ê°€ 잘못ë˜ì—ˆìŒ"
-#: timezone/zic.c:1012
+#: timezone/zic.c:995
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
msgstr "\"지역 %s\" 행과 -l ì˜µì…˜ì€ ìƒí˜¸ 배타ì ìž…니다"
-#: timezone/zic.c:1020
+#: timezone/zic.c:1003
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
msgstr "\"지역 %s\" 행과 -p ì˜µì…˜ì€ ìƒí˜¸ 배타ì ìž…니다"
-#: timezone/zic.c:1032
+#: timezone/zic.c:1015
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
msgstr "지역명 %s (íŒŒì¼ \"%s\", í–‰ %d) 중복ë˜ì–´ 있습니다"
-#: timezone/zic.c:1048
+#: timezone/zic.c:1031
msgid "wrong number of fields on Zone continuation line"
msgstr "Zone continuation ì¤„ì— í•„ë“œì˜ ê°œìˆ˜ê°€ 잘못ë˜ì—ˆìŒ"
-#: timezone/zic.c:1088
+#: timezone/zic.c:1071
msgid "invalid UTC offset"
msgstr "UTC ì˜µì…‹ì´ ë¶€ì ì ˆí•¨"
-#: timezone/zic.c:1091
+#: timezone/zic.c:1074
msgid "invalid abbreviation format"
msgstr "약어 형ì‹ì´ 부ì ì ˆí•¨"
-#: timezone/zic.c:1120
+#: timezone/zic.c:1103
msgid "Zone continuation line end time is not after end time of previous line"
msgstr "계ì†ë˜ëŠ” Zone ì¤„ì— ìžˆëŠ” ë ì‹œê°ì´ 윗 ì¤„ì— ìžˆëŠ” ëì‹œê°ë³´ë‹¤ ëŠ¦ì€ ì‹œê°ì´ 아닙니다"
-#: timezone/zic.c:1148
+#: timezone/zic.c:1131
msgid "wrong number of fields on Leap line"
msgstr "Leap ì¤„ì— í•„ë“œì˜ ê°œìˆ˜ê°€ 잘못ë˜ì—ˆìŒ"
-#: timezone/zic.c:1157
+#: timezone/zic.c:1140
msgid "invalid leaping year"
msgstr "부ì ì ˆí•œ 윤년"
-#: timezone/zic.c:1177 timezone/zic.c:1283
+#: timezone/zic.c:1160 timezone/zic.c:1266
msgid "invalid month name"
msgstr "달 ì´ë¦„ì´ ë¶€ì ì ˆí•¨"
-#: timezone/zic.c:1190 timezone/zic.c:1396 timezone/zic.c:1410
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
msgid "invalid day of month"
msgstr "ë‹¬ì˜ ë‚ ì§œ 수가 부ì ì ˆí•¨"
-#: timezone/zic.c:1195
+#: timezone/zic.c:1178
msgid "time before zero"
msgstr "0 ì´ì „ì˜ ì‹œê°„"
-#: timezone/zic.c:1199
+#: timezone/zic.c:1182
msgid "time too small"
msgstr "시간 ê°’ì´ ë„ˆë¬´ 작습니다"
-#: timezone/zic.c:1203
+#: timezone/zic.c:1186
msgid "time too large"
msgstr "시간 ê°’ì´ ë„ˆë¬´ í½ë‹ˆë‹¤"
-#: timezone/zic.c:1207 timezone/zic.c:1312
+#: timezone/zic.c:1190 timezone/zic.c:1295
msgid "invalid time of day"
msgstr "부ì ì ˆí•œ 하루중 ì‹œê°"
-#: timezone/zic.c:1226
+#: timezone/zic.c:1209
msgid "illegal CORRECTION field on Leap line"
msgstr "Leap ì¤„ì— ìž˜ëª»ëœ CORRECTION í•„ë“œ"
-#: timezone/zic.c:1231
+#: timezone/zic.c:1214
msgid "illegal Rolling/Stationary field on Leap line"
msgstr "Leap ì¤„ì— ìž˜ëª»ëœ Rolling/Stationary í•„ë“œ"
-#: timezone/zic.c:1247
+#: timezone/zic.c:1230
msgid "wrong number of fields on Link line"
msgstr "Link ì¤„ì— í•„ë“œì˜ ìˆ˜ê°€ 틀렸ìŒ"
-#: timezone/zic.c:1251
+#: timezone/zic.c:1234
msgid "blank FROM field on Link line"
msgstr "Link ì¤„ì— FROM 필드가 ì—†ìŒ"
-#: timezone/zic.c:1255
+#: timezone/zic.c:1238
msgid "blank TO field on Link line"
msgstr "Link ì¤„ì— TO 필드가 ì—†ìŒ"
-#: timezone/zic.c:1333
+#: timezone/zic.c:1316
msgid "invalid starting year"
msgstr "시작하는 í•´ê°€ 부ì ì ˆí•¨"
-#: timezone/zic.c:1355
+#: timezone/zic.c:1338
msgid "invalid ending year"
msgstr "ë나는 í•´ê°€ 부ì ì ˆí•¨"
-#: timezone/zic.c:1359
+#: timezone/zic.c:1342
msgid "starting year greater than ending year"
msgstr "시작하는 í•´ê°€ ë나는 해보다 í½ë‹ˆë‹¤"
-#: timezone/zic.c:1366
+#: timezone/zic.c:1349
msgid "typed single year"
msgstr "ì—°ë„를 한개 입력했습니다"
-#: timezone/zic.c:1401
+#: timezone/zic.c:1384
msgid "invalid weekday name"
msgstr "부ì ì ˆí•œ ìš”ì¼ ì´ë¦„"
-#: timezone/zic.c:1579
+#: timezone/zic.c:1562
#, c-format
msgid "%s: Can't remove %s: %s\n"
-msgstr "%s: %sì„(를) 지울 수 없습니다: %s\n"
+msgstr "%s: %sì„(를) 제거할 수 없습니다: %s\n"
-#: timezone/zic.c:1589
+#: timezone/zic.c:1572
#, c-format
msgid "%s: Can't create %s: %s\n"
msgstr "%s: %sì„(를) 만들 수 없습니다: %s\n"
-#: timezone/zic.c:1739
+#: timezone/zic.c:1722
#, c-format
msgid "%s: Error writing %s\n"
msgstr "%s: %sì„(를) 쓰는 ë„중 오류 ë°œìƒ\n"
-#: timezone/zic.c:2031
+#: timezone/zic.c:2015
msgid "no POSIX environment variable for zone"
msgstr "ì§€ì—­ì— ëŒ€í•´ POSIX 환경 변수가 없습니다"
-#: timezone/zic.c:2185
+#: timezone/zic.c:2172
msgid "can't determine time zone abbreviation to use just after until time"
msgstr "단지 ì¢…ë£Œì‹œê° ì´í›„ì— ì‚¬ìš©í•˜ê¸° 위한 시간대 약어를 ê²°ì •í•  수 없습니다"
-#: timezone/zic.c:2231
+#: timezone/zic.c:2218
msgid "too many transitions?!"
msgstr "너무 ë§Žì€ ì „ì´?!"
-#: timezone/zic.c:2250
+#: timezone/zic.c:2237
msgid "internal error - addtype called with bad isdst"
msgstr "내부 오류 - 틀린 isdstë¡œ addtypeì„ í˜¸ì¶œ"
-#: timezone/zic.c:2254
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad ttisstd"
msgstr "내부 오류 - 틀린 ttisstdë¡œ addtypeì„ í˜¸ì¶œ"
-#: timezone/zic.c:2258
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisgmt"
msgstr "내부 오류 - 틀린 ttisgmtë¡œ addtypeì„ í˜¸ì¶œ"
-#: timezone/zic.c:2277
+#: timezone/zic.c:2264
msgid "too many local time types"
msgstr "지역 ì‹œê°ì˜ 종류가 너무 많습니다"
-#: timezone/zic.c:2281
+#: timezone/zic.c:2268
msgid "UTC offset out of range"
msgstr "UTC ì˜¤í”„ì…‹ì´ ë²”ìœ„ë¥¼ 벗어났습니다"
-#: timezone/zic.c:2309
+#: timezone/zic.c:2296
msgid "too many leap seconds"
msgstr "윤초가 너무 많습니다"
-#: timezone/zic.c:2315
+#: timezone/zic.c:2302
msgid "repeated leap second moment"
msgstr "ìœ¤ì´ˆì˜ í¬ê¸°ê°€ 중복ë˜ì—ˆìŠµë‹ˆë‹¤"
-#: timezone/zic.c:2367
+#: timezone/zic.c:2354
msgid "Wild result from command execution"
msgstr "명령 실행ì—ì„œ ì œ ë©‹ëŒ€ë¡œì˜ ê²°ê³¼ê°€ 나왔습니다"
-#: timezone/zic.c:2368
+#: timezone/zic.c:2355
#, c-format
msgid "%s: command was '%s', result was %d\n"
msgstr "%s: ëª…ë ¹ì€ '%s'였고, 결과는 %d였습니다\n"
-#: timezone/zic.c:2466
+#: timezone/zic.c:2453
msgid "Odd number of quotation marks"
msgstr "따옴표 수가 홀수입니다"
-#: timezone/zic.c:2555
+#: timezone/zic.c:2542
msgid "use of 2/29 in non leap-year"
msgstr "í‰ë…„ì— 2ì›” 29ì¼ì„ 사용"
-#: timezone/zic.c:2590
+#: timezone/zic.c:2577
msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
msgstr "ë‹¬ì˜ ì‹œìž‘/ëì„ ë„˜ì–´ê°€ëŠ” ê·œì¹™ì€ 2004ë…„ ì „ ë²„ì „ì˜ zicì—서는 ë™ìž‘하지 않습니다"
-#: timezone/zic.c:2622
+#: timezone/zic.c:2609
msgid "time zone abbreviation lacks alphabetic at start"
msgstr "시간대 약어가 알파벳으로 시작하지 않습니다"
-#: timezone/zic.c:2624
+#: timezone/zic.c:2611
msgid "time zone abbreviation has more than 3 alphabetics"
msgstr "시간대 약어가 알파벳 3ìžë³´ë‹¤ ê¹ë‹ˆë‹¤"
-#: timezone/zic.c:2626
+#: timezone/zic.c:2613
msgid "time zone abbreviation has too many alphabetics"
msgstr "시간대 ì•½ì–´ì— ì•ŒíŒŒë²³ì´ ë„ˆë¬´ 많습니다"
-#: timezone/zic.c:2636
+#: timezone/zic.c:2623
msgid "time zone abbreviation differs from POSIX standard"
msgstr "시간대 약어가 POSIX 표준과 다릅니다"
-#: timezone/zic.c:2648
+#: timezone/zic.c:2635
msgid "too many, or too long, time zone abbreviations"
msgstr "너무 많거나 너무 긴 시간대 약어"
-#: timezone/zic.c:2689
+#: timezone/zic.c:2676
#, c-format
msgid "%s: Can't create directory %s: %s\n"
-msgstr "%s: %s 디렉토리를 만들 수 없습니다: %s\n"
+msgstr "%s: %s 디렉터리를 만들 수 없습니다: %s\n"
-#: timezone/zic.c:2711
+#: timezone/zic.c:2698
#, c-format
msgid "%s: %d did not sign extend correctly\n"
msgstr "%s: %dì€(는) 부호 í™•ìž¥ì„ ì œëŒ€ë¡œ 하지 않았습니다\n"
+
+#~ msgid "cannot create searchlist"
+#~ msgstr "찾기리스트를 만들 수 없습니다"
+
+#~ msgid ""
+#~ "Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "공유 오브ì íŠ¸ 프로파ì¼ë§ ë°ì´í„°ë¥¼ ì½ê³  표시합니다\\v버그를 보고하는 ë°©ë²•ì€ ë‹¤ìŒì„ 참고하십시오:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#~ msgid "%s: stopping date is invalid in string %Zd in `era' field"
+#~ msgstr "%s: `era' í•„ë“œì— ìžˆëŠ” 문ìžì—´ %Zdì—ì„œ 정지 날짜가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
+
+#~ msgid ""
+#~ "Get locale-specific information.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "로캘 관련 정보를 가져옵니다\\v버그를 보고하는 ë°©ë²•ì€ ë‹¤ìŒì„ 참고하십시오:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#~ msgid ""
+#~ "Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "ê´€ë¦¬ìž ë°ì´í„°ë² ì´ìŠ¤ì—ì„œ í•­ëª©ì„ ê°€ì ¸ì˜µë‹ˆë‹¤\\v버그를 보고하는 ë°©ë²•ì€ ë‹¤ìŒì„ 참고하십시오:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: ìž˜ëª»ëœ ì˜µì…˜ -- %c\n"
+
+#~ msgid "authunix_create: out of memory\n"
+#~ msgstr "authunix_create: 메모리 부족\n"
+
+#~ msgid "clnttcp_create: out of memory\n"
+#~ msgstr "clnttcp_create: 메모리 부족\n"
+
+#~ msgid "clntudp_create: out of memory\n"
+#~ msgstr "clntudp_create: 메모리 부족\n"
+
+#~ msgid "clntunix_create: out of memory\n"
+#~ msgstr "clntunix_create: 메모리 부족\n"
+
+#~ msgid "svctcp_create: out of memory\n"
+#~ msgstr "svctcp_create: 메모리 부족\n"
+
+#~ msgid "svc_tcp: makefd_xprt: out of memory\n"
+#~ msgstr "svc_tcp: makefd_xprt: 메모리 부족\n"
+
+#~ msgid "svcudp_create: out of memory\n"
+#~ msgstr "svcudp_create: 메모리 부족\n"
+
+#~ msgid "svcunix_create: out of memory\n"
+#~ msgstr "svcunix_create: 메모리 부족\n"
+
+#~ msgid "svc_unix: makefd_xprt: out of memory\n"
+#~ msgstr "svc_unix: makefc_xprt: 메모리 부족\n"
+
+#~ msgid "xdr_bytes: out of memory\n"
+#~ msgstr "xdr_bytes: 메모리 부족\n"
+
+#~ msgid "xdr_string: out of memory\n"
+#~ msgstr "xdr_string: 메모리 부족\n"
+
+#~ msgid "xdr_array: out of memory\n"
+#~ msgstr "xdr_array: 메모리 부족\n"
+
+#~ msgid "xdrrec_create: out of memory\n"
+#~ msgstr "xdrrec_create: 메모리 부족\n"
+
+#~ msgid "xdr_reference: out of memory\n"
+#~ msgstr "xdr_reference: 메모리 부족\n"
diff --git a/po/libc.pot b/po/libc.pot
index a4ae24fd1f..71d425fc56 100644
--- a/po/libc.pot
+++ b/po/libc.pot
@@ -5,8 +5,8 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.7.90\n"
-"POT-Creation-Date: 2008-04-09 08:07-0700\n"
+"Project-Id-Version: libc 2.9.90\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -100,7 +100,7 @@ msgstr ""
msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
msgstr ""
-#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
msgid "NAME"
msgstr ""
@@ -129,20 +129,27 @@ msgid ""
"[OUTPUT-FILE [INPUT-FILE]...]"
msgstr ""
-#: catgets/gencat.c:232 debug/pcprofiledump.c:204 iconv/iconv_prog.c:408
-#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
-#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
msgstr ""
-#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:296
-#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:423
-#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
-#: posix/getconf.c:1012
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -150,10 +157,12 @@ msgid ""
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr ""
-#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:301 elf/sprof.c:361
-#: iconv/iconv_prog.c:428 iconv/iconvconfig.c:400 locale/programs/locale.c:280
-#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
-#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
#, c-format
msgid "Written by %s.\n"
msgstr ""
@@ -254,17 +263,17 @@ msgstr ""
msgid "[FILE]"
msgstr ""
-#: debug/pcprofiledump.c:104
+#: debug/pcprofiledump.c:108
#, c-format
msgid "cannot open input file"
msgstr ""
-#: debug/pcprofiledump.c:111
+#: debug/pcprofiledump.c:115
#, c-format
msgid "cannot read header"
msgstr ""
-#: debug/pcprofiledump.c:175
+#: debug/pcprofiledump.c:179
#, c-format
msgid "invalid pointer size"
msgstr ""
@@ -296,24 +305,22 @@ msgid ""
"corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
-#: debug/xtrace.sh:125
+#: debug/xtrace.sh:127
msgid "xtrace: unrecognized option \\`$1'\\n"
msgstr ""
-#: debug/xtrace.sh:138
+#: debug/xtrace.sh:140
msgid "No program name given\\n"
msgstr ""
-#: debug/xtrace.sh:146
+#: debug/xtrace.sh:148
#, sh-format
msgid "executable \\`$program' not found\\n"
msgstr ""
-#: debug/xtrace.sh:150
+#: debug/xtrace.sh:152
#, sh-format
msgid "\\`$program' is no executable\\n"
msgstr ""
@@ -334,7 +341,7 @@ msgstr ""
msgid "invalid mode"
msgstr ""
-#: dlfcn/dlopen.c:64
+#: dlfcn/dlopen.c:65
msgid "invalid mode parameter"
msgstr ""
@@ -351,7 +358,7 @@ msgstr ""
msgid ", OS ABI: %s %d.%d.%d"
msgstr ""
-#: elf/cache.c:134 elf/ldconfig.c:1269
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
msgid "Can't open cache file %s\n"
msgstr ""
@@ -470,11 +477,11 @@ msgstr ""
msgid "cannot open zero fill device"
msgstr ""
-#: elf/dl-load.c:979 elf/dl-load.c:2224
+#: elf/dl-load.c:979 elf/dl-load.c:2215
msgid "cannot create shared object descriptor"
msgstr ""
-#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
msgid "cannot read file data"
msgstr ""
@@ -538,63 +545,59 @@ msgstr ""
msgid "cannot close file descriptor"
msgstr ""
-#: elf/dl-load.c:1478
-msgid "cannot create searchlist"
-msgstr ""
-
-#: elf/dl-load.c:1656
+#: elf/dl-load.c:1647
msgid "file too short"
msgstr ""
-#: elf/dl-load.c:1685
+#: elf/dl-load.c:1676
msgid "invalid ELF header"
msgstr ""
-#: elf/dl-load.c:1697
+#: elf/dl-load.c:1688
msgid "ELF file data encoding not big-endian"
msgstr ""
-#: elf/dl-load.c:1699
+#: elf/dl-load.c:1690
msgid "ELF file data encoding not little-endian"
msgstr ""
-#: elf/dl-load.c:1703
+#: elf/dl-load.c:1694
msgid "ELF file version ident does not match current one"
msgstr ""
-#: elf/dl-load.c:1707
+#: elf/dl-load.c:1698
msgid "ELF file OS ABI invalid"
msgstr ""
-#: elf/dl-load.c:1709
+#: elf/dl-load.c:1700
msgid "ELF file ABI version invalid"
msgstr ""
-#: elf/dl-load.c:1712
+#: elf/dl-load.c:1703
msgid "internal error"
msgstr ""
-#: elf/dl-load.c:1719
+#: elf/dl-load.c:1710
msgid "ELF file version does not match current one"
msgstr ""
-#: elf/dl-load.c:1727
+#: elf/dl-load.c:1718
msgid "only ET_DYN and ET_EXEC can be loaded"
msgstr ""
-#: elf/dl-load.c:1733
+#: elf/dl-load.c:1724
msgid "ELF file's phentsize not the expected size"
msgstr ""
-#: elf/dl-load.c:2240
+#: elf/dl-load.c:2231
msgid "wrong ELF class: ELFCLASS64"
msgstr ""
-#: elf/dl-load.c:2241
+#: elf/dl-load.c:2232
msgid "wrong ELF class: ELFCLASS32"
msgstr ""
-#: elf/dl-load.c:2244
+#: elf/dl-load.c:2235
msgid "cannot open shared object file"
msgstr ""
@@ -626,29 +629,29 @@ msgstr ""
msgid "invalid target namespace in dlmopen()"
msgstr ""
-#: elf/dl-reloc.c:56
+#: elf/dl-reloc.c:121
msgid "cannot allocate memory in static TLS block"
msgstr ""
-#: elf/dl-reloc.c:198
+#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
msgstr ""
-#: elf/dl-reloc.c:281
+#: elf/dl-reloc.c:277
#, c-format
msgid "%s: no PLTREL found in object %s\n"
msgstr ""
-#: elf/dl-reloc.c:292
+#: elf/dl-reloc.c:288
#, c-format
msgid "%s: out of memory to store relocation results for %s\n"
msgstr ""
-#: elf/dl-reloc.c:308
+#: elf/dl-reloc.c:304
msgid "cannot restore segment prot after reloc"
msgstr ""
-#: elf/dl-reloc.c:333
+#: elf/dl-reloc.c:329
msgid "cannot apply additional memory protection after relocation"
msgstr ""
@@ -656,11 +659,11 @@ msgstr ""
msgid "RTLD_NEXT used in code not dynamically loaded"
msgstr ""
-#: elf/dl-sysdep.c:475 elf/dl-sysdep.c:487
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
msgid "cannot create capability list"
msgstr ""
-#: elf/dl-tls.c:848
+#: elf/dl-tls.c:864
msgid "cannot create TLS data structures"
msgstr ""
@@ -668,222 +671,222 @@ msgstr ""
msgid "cannot allocate version reference table"
msgstr ""
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:141
msgid "Print cache"
msgstr ""
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:142
msgid "Generate verbose messages"
msgstr ""
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:143
msgid "Don't build cache"
msgstr ""
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:144
msgid "Don't generate links"
msgstr ""
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "Change to and use ROOT as root directory"
msgstr ""
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "ROOT"
msgstr ""
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "CACHE"
msgstr ""
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "Use CACHE as cache file"
msgstr ""
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "CONF"
msgstr ""
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "Use CONF as configuration file"
msgstr ""
-#: elf/ldconfig.c:145
+#: elf/ldconfig.c:148
msgid ""
"Only process directories specified on the command line. Don't build cache."
msgstr ""
-#: elf/ldconfig.c:146
+#: elf/ldconfig.c:149
msgid "Manually link individual libraries."
msgstr ""
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "FORMAT"
msgstr ""
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "Format to use: new, old or compat (default)"
msgstr ""
-#: elf/ldconfig.c:148
+#: elf/ldconfig.c:151
msgid "Ignore auxiliary cache file"
msgstr ""
-#: elf/ldconfig.c:156
+#: elf/ldconfig.c:159
msgid "Configure Dynamic Linker Run Time Bindings."
msgstr ""
-#: elf/ldconfig.c:319
+#: elf/ldconfig.c:339
#, c-format
msgid "Path `%s' given more than once"
msgstr ""
-#: elf/ldconfig.c:359
+#: elf/ldconfig.c:379
#, c-format
msgid "%s is not a known library type"
msgstr ""
-#: elf/ldconfig.c:384
+#: elf/ldconfig.c:404
#, c-format
msgid "Can't stat %s"
msgstr ""
-#: elf/ldconfig.c:458
+#: elf/ldconfig.c:478
#, c-format
msgid "Can't stat %s\n"
msgstr ""
-#: elf/ldconfig.c:468
+#: elf/ldconfig.c:488
#, c-format
msgid "%s is not a symbolic link\n"
msgstr ""
-#: elf/ldconfig.c:487
+#: elf/ldconfig.c:507
#, c-format
msgid "Can't unlink %s"
msgstr ""
-#: elf/ldconfig.c:493
+#: elf/ldconfig.c:513
#, c-format
msgid "Can't link %s to %s"
msgstr ""
-#: elf/ldconfig.c:499
+#: elf/ldconfig.c:519
msgid " (changed)\n"
msgstr ""
-#: elf/ldconfig.c:501
+#: elf/ldconfig.c:521
msgid " (SKIPPED)\n"
msgstr ""
-#: elf/ldconfig.c:556
+#: elf/ldconfig.c:576
#, c-format
msgid "Can't find %s"
msgstr ""
-#: elf/ldconfig.c:572 elf/ldconfig.c:745 elf/ldconfig.c:793 elf/ldconfig.c:827
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
msgid "Cannot lstat %s"
msgstr ""
-#: elf/ldconfig.c:579
+#: elf/ldconfig.c:599
#, c-format
msgid "Ignored file %s since it is not a regular file."
msgstr ""
-#: elf/ldconfig.c:588
+#: elf/ldconfig.c:608
#, c-format
msgid "No link created since soname could not be found for %s"
msgstr ""
-#: elf/ldconfig.c:671
+#: elf/ldconfig.c:691
#, c-format
msgid "Can't open directory %s"
msgstr ""
-#: elf/ldconfig.c:759
+#: elf/ldconfig.c:779
#, c-format
msgid "Cannot stat %s"
msgstr ""
-#: elf/ldconfig.c:814 elf/readlib.c:91
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
msgid "Input file %s not found.\n"
msgstr ""
-#: elf/ldconfig.c:888
+#: elf/ldconfig.c:908
#, c-format
msgid "libc5 library %s in wrong directory"
msgstr ""
-#: elf/ldconfig.c:891
+#: elf/ldconfig.c:911
#, c-format
msgid "libc6 library %s in wrong directory"
msgstr ""
-#: elf/ldconfig.c:894
+#: elf/ldconfig.c:914
#, c-format
msgid "libc4 library %s in wrong directory"
msgstr ""
-#: elf/ldconfig.c:922
+#: elf/ldconfig.c:942
#, c-format
msgid ""
"libraries %s and %s in directory %s have same soname but different type."
msgstr ""
-#: elf/ldconfig.c:1031
+#: elf/ldconfig.c:1051
#, c-format
msgid "Can't open configuration file %s"
msgstr ""
-#: elf/ldconfig.c:1095
+#: elf/ldconfig.c:1115
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
msgstr ""
-#: elf/ldconfig.c:1101
+#: elf/ldconfig.c:1121
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
msgstr ""
-#: elf/ldconfig.c:1108 elf/ldconfig.c:1116
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
msgstr ""
-#: elf/ldconfig.c:1119
+#: elf/ldconfig.c:1139
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
msgstr ""
-#: elf/ldconfig.c:1141
+#: elf/ldconfig.c:1161
#, c-format
msgid "need absolute file name for configuration file when using -r"
msgstr ""
-#: elf/ldconfig.c:1148 locale/programs/xmalloc.c:70 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
msgid "memory exhausted"
msgstr ""
-#: elf/ldconfig.c:1178
+#: elf/ldconfig.c:1198
#, c-format
msgid "%s:%u: cannot read directory %s"
msgstr ""
-#: elf/ldconfig.c:1222
+#: elf/ldconfig.c:1242
#, c-format
msgid "relative path `%s' used to build cache"
msgstr ""
-#: elf/ldconfig.c:1248
+#: elf/ldconfig.c:1268
#, c-format
msgid "Can't chdir to /"
msgstr ""
-#: elf/ldconfig.c:1290
+#: elf/ldconfig.c:1310
#, c-format
msgid "Can't open cache file directory %s\n"
msgstr ""
@@ -901,50 +904,48 @@ msgid ""
" -r, --function-relocs process data and function relocations\n"
" -u, --unused print unused direct dependencies\n"
" -v, --verbose print all information\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
-#: elf/ldd.bash.in:80
+#: elf/ldd.bash.in:82
msgid "ldd: option \\`$1' is ambiguous"
msgstr ""
-#: elf/ldd.bash.in:87
+#: elf/ldd.bash.in:89
msgid "unrecognized option"
msgstr ""
-#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
msgid "Try \\`ldd --help' for more information."
msgstr ""
-#: elf/ldd.bash.in:125
+#: elf/ldd.bash.in:127
msgid "missing file arguments"
msgstr ""
#. TRANS No such file or directory. This is a ``file doesn't exist'' error
#. TRANS for ordinary files that are referenced in contexts where they are
#. TRANS expected to already exist.
-#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
msgstr ""
-#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
msgid "not regular file"
msgstr ""
-#: elf/ldd.bash.in:154
+#: elf/ldd.bash.in:156
msgid "warning: you do not have execution permission for"
msgstr ""
-#: elf/ldd.bash.in:183
+#: elf/ldd.bash.in:185
msgid "\tnot a dynamic executable"
msgstr ""
-#: elf/ldd.bash.in:191
+#: elf/ldd.bash.in:193
msgid "exited with unknown exit code"
msgstr ""
-#: elf/ldd.bash.in:196
+#: elf/ldd.bash.in:198
msgid "error: you do not have read permission for"
msgstr ""
@@ -1003,6 +1004,43 @@ msgstr ""
msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
msgstr ""
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr ""
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr ""
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr ""
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr ""
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr ""
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr ""
+
#: elf/sprof.c:77
msgid "Output selection:"
msgstr ""
@@ -1020,102 +1058,99 @@ msgid "generate call graph"
msgstr ""
#: elf/sprof.c:89
-msgid ""
-"Read and display shared object profiling data.\vFor bug reporting "
-"instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Read and display shared object profiling data."
msgstr ""
#: elf/sprof.c:94
msgid "SHOBJ [PROFDATA]"
msgstr ""
-#: elf/sprof.c:400
+#: elf/sprof.c:420
#, c-format
msgid "failed to load shared object `%s'"
msgstr ""
-#: elf/sprof.c:409
+#: elf/sprof.c:429
#, c-format
msgid "cannot create internal descriptors"
msgstr ""
-#: elf/sprof.c:528
+#: elf/sprof.c:548
#, c-format
msgid "Reopening shared object `%s' failed"
msgstr ""
-#: elf/sprof.c:535 elf/sprof.c:629
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
msgid "reading of section headers failed"
msgstr ""
-#: elf/sprof.c:543 elf/sprof.c:637
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
msgid "reading of section header string table failed"
msgstr ""
-#: elf/sprof.c:569
+#: elf/sprof.c:589
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
msgstr ""
-#: elf/sprof.c:589
+#: elf/sprof.c:609
#, c-format
msgid "cannot determine file name"
msgstr ""
-#: elf/sprof.c:622
+#: elf/sprof.c:642
#, c-format
msgid "reading of ELF header failed"
msgstr ""
-#: elf/sprof.c:658
+#: elf/sprof.c:678
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
msgstr ""
-#: elf/sprof.c:688
+#: elf/sprof.c:708
#, c-format
msgid "failed to load symbol data"
msgstr ""
-#: elf/sprof.c:755
+#: elf/sprof.c:775
#, c-format
msgid "cannot load profiling data"
msgstr ""
-#: elf/sprof.c:764
+#: elf/sprof.c:784
#, c-format
msgid "while stat'ing profiling data file"
msgstr ""
-#: elf/sprof.c:772
+#: elf/sprof.c:792
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
msgstr ""
-#: elf/sprof.c:783
+#: elf/sprof.c:803
#, c-format
msgid "failed to mmap the profiling data file"
msgstr ""
-#: elf/sprof.c:791
+#: elf/sprof.c:811
#, c-format
msgid "error while closing the profiling data file"
msgstr ""
-#: elf/sprof.c:800 elf/sprof.c:870
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
msgid "cannot create internal descriptor"
msgstr ""
-#: elf/sprof.c:846
+#: elf/sprof.c:866
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
msgstr ""
-#: elf/sprof.c:1027 elf/sprof.c:1085
+#: elf/sprof.c:1047 elf/sprof.c:1105
#, c-format
msgid "cannot allocate symbol data"
msgstr ""
@@ -1482,8 +1517,8 @@ msgstr ""
msgid "no symbolic name given for end of range"
msgstr ""
-#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
-#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3928
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
+#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
#: locale/programs/ld-identification.c:452
#: locale/programs/ld-measurement.c:238 locale/programs/ld-messages.c:332
@@ -1509,8 +1544,8 @@ msgstr ""
msgid "%s: error in state machine"
msgstr ""
-#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
-#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4121
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
#: locale/programs/ld-identification.c:468
#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
@@ -1534,7 +1569,7 @@ msgid ""
"same: %d vs %d"
msgstr ""
-#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3045
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
msgstr ""
@@ -1556,7 +1591,7 @@ msgstr ""
msgid "resulting bytes for range not representable."
msgstr ""
-#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
@@ -1566,10 +1601,10 @@ msgstr ""
msgid "No definition for %s category found"
msgstr ""
-#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
-#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
-#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
-#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
@@ -1582,46 +1617,46 @@ msgstr ""
msgid "%s: field `%s' not defined"
msgstr ""
-#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
-#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
msgstr ""
-#: locale/programs/ld-address.c:168
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
msgstr ""
-#: locale/programs/ld-address.c:219
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
msgstr ""
-#: locale/programs/ld-address.c:244
+#: locale/programs/ld-address.c:246
#, c-format
msgid "%s: field `%s' must not be defined"
msgstr ""
-#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
msgstr ""
-#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
-#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
msgstr ""
-#: locale/programs/ld-address.c:312
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
msgstr ""
-#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
-#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
#: locale/programs/ld-identification.c:364
#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
@@ -1633,7 +1668,7 @@ msgstr ""
msgid "%s: field `%s' declared more than once"
msgstr ""
-#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
@@ -1643,7 +1678,7 @@ msgstr ""
msgid "%s: unknown character in field `%s'"
msgstr ""
-#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3926
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
@@ -1653,10 +1688,10 @@ msgstr ""
msgid "%s: incomplete `END' line"
msgstr ""
-#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:542
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
-#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4111
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
#: locale/programs/ld-identification.c:459
@@ -1763,7 +1798,7 @@ msgstr ""
msgid "`%s' and `%.*s' are not valid names for symbolic range"
msgstr ""
-#: locale/programs/ld-collate.c:1369 locale/programs/ld-collate.c:3862
+#: locale/programs/ld-collate.c:1369 locale/programs/ld-collate.c:3858
#, c-format
msgid "%s: order for `%.*s' already defined at %s:%Zu"
msgstr ""
@@ -1804,7 +1839,7 @@ msgstr ""
msgid "too many errors; giving up"
msgstr ""
-#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4050
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
#, c-format
msgid "%s: nested conditionals not supported"
msgstr ""
@@ -1824,112 +1859,112 @@ msgstr ""
msgid "%s: duplicate declaration of section `%s'"
msgstr ""
-#: locale/programs/ld-collate.c:3025
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
msgstr ""
-#: locale/programs/ld-collate.c:3155
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
msgstr ""
-#: locale/programs/ld-collate.c:3168
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
msgstr ""
-#: locale/programs/ld-collate.c:3178
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
msgstr ""
-#: locale/programs/ld-collate.c:3187
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
msgstr ""
-#: locale/programs/ld-collate.c:3225
+#: locale/programs/ld-collate.c:3221
#, c-format
msgid "duplicate definition of script `%s'"
msgstr ""
-#: locale/programs/ld-collate.c:3273
+#: locale/programs/ld-collate.c:3269
#, c-format
msgid "%s: unknown section name `%.*s'"
msgstr ""
-#: locale/programs/ld-collate.c:3302
+#: locale/programs/ld-collate.c:3298
#, c-format
msgid "%s: multiple order definitions for section `%s'"
msgstr ""
-#: locale/programs/ld-collate.c:3330
+#: locale/programs/ld-collate.c:3326
#, c-format
msgid "%s: invalid number of sorting rules"
msgstr ""
-#: locale/programs/ld-collate.c:3357
+#: locale/programs/ld-collate.c:3353
#, c-format
msgid "%s: multiple order definitions for unnamed section"
msgstr ""
-#: locale/programs/ld-collate.c:3411 locale/programs/ld-collate.c:3541
-#: locale/programs/ld-collate.c:3904
+#: locale/programs/ld-collate.c:3407 locale/programs/ld-collate.c:3537
+#: locale/programs/ld-collate.c:3900
#, c-format
msgid "%s: missing `order_end' keyword"
msgstr ""
-#: locale/programs/ld-collate.c:3474
+#: locale/programs/ld-collate.c:3470
#, c-format
msgid "%s: order for collating symbol %.*s not yet defined"
msgstr ""
-#: locale/programs/ld-collate.c:3492
+#: locale/programs/ld-collate.c:3488
#, c-format
msgid "%s: order for collating element %.*s not yet defined"
msgstr ""
-#: locale/programs/ld-collate.c:3503
+#: locale/programs/ld-collate.c:3499
#, c-format
msgid "%s: cannot reorder after %.*s: symbol not known"
msgstr ""
-#: locale/programs/ld-collate.c:3555 locale/programs/ld-collate.c:3916
+#: locale/programs/ld-collate.c:3551 locale/programs/ld-collate.c:3912
#, c-format
msgid "%s: missing `reorder-end' keyword"
msgstr ""
-#: locale/programs/ld-collate.c:3589 locale/programs/ld-collate.c:3787
+#: locale/programs/ld-collate.c:3585 locale/programs/ld-collate.c:3783
#, c-format
msgid "%s: section `%.*s' not known"
msgstr ""
-#: locale/programs/ld-collate.c:3654
+#: locale/programs/ld-collate.c:3650
#, c-format
msgid "%s: bad symbol <%.*s>"
msgstr ""
-#: locale/programs/ld-collate.c:3850
+#: locale/programs/ld-collate.c:3846
#, c-format
msgid "%s: cannot have `%s' as end of ellipsis range"
msgstr ""
-#: locale/programs/ld-collate.c:3900
+#: locale/programs/ld-collate.c:3896
#, c-format
msgid "%s: empty category description not allowed"
msgstr ""
-#: locale/programs/ld-collate.c:3919
+#: locale/programs/ld-collate.c:3915
#, c-format
msgid "%s: missing `reorder-sections-end' keyword"
msgstr ""
-#: locale/programs/ld-collate.c:4083
+#: locale/programs/ld-collate.c:4079
#, c-format
msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
msgstr ""
-#: locale/programs/ld-collate.c:4101
+#: locale/programs/ld-collate.c:4097
#, c-format
msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
msgstr ""
@@ -2372,39 +2407,36 @@ msgid "Print more information"
msgstr ""
#: locale/programs/locale.c:87
-msgid ""
-"Get locale-specific information.\vFor bug reporting instructions, please "
-"see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get locale-specific information."
msgstr ""
-#: locale/programs/locale.c:92
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
msgstr ""
-#: locale/programs/locale.c:193
+#: locale/programs/locale.c:194
#, c-format
msgid "Cannot set LC_CTYPE to default locale"
msgstr ""
-#: locale/programs/locale.c:195
+#: locale/programs/locale.c:196
#, c-format
msgid "Cannot set LC_MESSAGES to default locale"
msgstr ""
-#: locale/programs/locale.c:208
+#: locale/programs/locale.c:209
#, c-format
msgid "Cannot set LC_COLLATE to default locale"
msgstr ""
-#: locale/programs/locale.c:224
+#: locale/programs/locale.c:225
#, c-format
msgid "Cannot set LC_ALL to default locale"
msgstr ""
-#: locale/programs/locale.c:500
+#: locale/programs/locale.c:518
#, c-format
msgid "while preparing output"
msgstr ""
@@ -2802,11 +2834,9 @@ msgid ""
"corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
-#: malloc/memusage.sh:99
+#: malloc/memusage.sh:101
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--"
"unbuffered]\n"
@@ -2815,53 +2845,53 @@ msgid ""
" PROGRAM [PROGRAMOPTION]..."
msgstr ""
-#: malloc/memusage.sh:191
+#: malloc/memusage.sh:193
msgid "memusage: option \\`${1##*=}' is ambiguous"
msgstr ""
-#: malloc/memusage.sh:200
+#: malloc/memusage.sh:202
msgid "memusage: unrecognized option \\`$1'"
msgstr ""
-#: malloc/memusage.sh:213
+#: malloc/memusage.sh:215
msgid "No program name given"
msgstr ""
-#: malloc/memusagestat.c:54
+#: malloc/memusagestat.c:57
msgid "Name output file"
msgstr ""
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:58
msgid "Title string used in output graphic"
msgstr ""
-#: malloc/memusagestat.c:56
+#: malloc/memusagestat.c:59
msgid ""
"Generate output linear to time (default is linear to number of function "
"calls)"
msgstr ""
-#: malloc/memusagestat.c:58
+#: malloc/memusagestat.c:61
msgid "Also draw graph for total memory consumption"
msgstr ""
-#: malloc/memusagestat.c:59
+#: malloc/memusagestat.c:62
msgid "Make output graphic VALUE pixels wide"
msgstr ""
-#: malloc/memusagestat.c:60
+#: malloc/memusagestat.c:63
msgid "Make output graphic VALUE pixels high"
msgstr ""
-#: malloc/memusagestat.c:65
+#: malloc/memusagestat.c:68
msgid "Generate graphic from memory profiling data"
msgstr ""
-#: malloc/memusagestat.c:68
+#: malloc/memusagestat.c:71
msgid "DATAFILE [OUTFILE]"
msgstr ""
-#: misc/error.c:118 timezone/zic.c:417
+#: misc/error.c:118
msgid "Unknown system error"
msgstr ""
@@ -2869,7 +2899,7 @@ msgstr ""
msgid "unable to free arguments"
msgstr ""
-#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr ""
@@ -2911,7 +2941,7 @@ msgid "First/next chain broken"
msgstr ""
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
msgstr ""
@@ -3410,100 +3440,100 @@ msgstr ""
msgid "netname2user: should not have uid 0"
msgstr ""
-#: nis/ypclnt.c:825
+#: nis/ypclnt.c:836
msgid "Request arguments bad"
msgstr ""
-#: nis/ypclnt.c:828
+#: nis/ypclnt.c:839
msgid "RPC failure on NIS operation"
msgstr ""
-#: nis/ypclnt.c:831
+#: nis/ypclnt.c:842
msgid "Can't bind to server which serves this domain"
msgstr ""
-#: nis/ypclnt.c:834
+#: nis/ypclnt.c:845
msgid "No such map in server's domain"
msgstr ""
-#: nis/ypclnt.c:837
+#: nis/ypclnt.c:848
msgid "No such key in map"
msgstr ""
-#: nis/ypclnt.c:840
+#: nis/ypclnt.c:851
msgid "Internal NIS error"
msgstr ""
-#: nis/ypclnt.c:843
+#: nis/ypclnt.c:854
msgid "Local resource allocation failure"
msgstr ""
-#: nis/ypclnt.c:846
+#: nis/ypclnt.c:857
msgid "No more records in map database"
msgstr ""
-#: nis/ypclnt.c:849
+#: nis/ypclnt.c:860
msgid "Can't communicate with portmapper"
msgstr ""
-#: nis/ypclnt.c:852
+#: nis/ypclnt.c:863
msgid "Can't communicate with ypbind"
msgstr ""
-#: nis/ypclnt.c:855
+#: nis/ypclnt.c:866
msgid "Can't communicate with ypserv"
msgstr ""
-#: nis/ypclnt.c:858
+#: nis/ypclnt.c:869
msgid "Local domain name not set"
msgstr ""
-#: nis/ypclnt.c:861
+#: nis/ypclnt.c:872
msgid "NIS map database is bad"
msgstr ""
-#: nis/ypclnt.c:864
+#: nis/ypclnt.c:875
msgid "NIS client/server version mismatch - can't supply service"
msgstr ""
-#: nis/ypclnt.c:870
+#: nis/ypclnt.c:881
msgid "Database is busy"
msgstr ""
-#: nis/ypclnt.c:873
+#: nis/ypclnt.c:884
msgid "Unknown NIS error code"
msgstr ""
-#: nis/ypclnt.c:913
+#: nis/ypclnt.c:924
msgid "Internal ypbind error"
msgstr ""
-#: nis/ypclnt.c:916
+#: nis/ypclnt.c:927
msgid "Domain not bound"
msgstr ""
-#: nis/ypclnt.c:919
+#: nis/ypclnt.c:930
msgid "System resource allocation failure"
msgstr ""
-#: nis/ypclnt.c:922
+#: nis/ypclnt.c:933
msgid "Unknown ypbind error"
msgstr ""
-#: nis/ypclnt.c:963
+#: nis/ypclnt.c:974
msgid "yp_update: cannot convert host to netname\n"
msgstr ""
-#: nis/ypclnt.c:981
+#: nis/ypclnt.c:992
msgid "yp_update: cannot get server address\n"
msgstr ""
-#: nscd/aicache.c:77 nscd/hstcache.c:473
+#: nscd/aicache.c:82 nscd/hstcache.c:481
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
msgstr ""
-#: nscd/aicache.c:79 nscd/hstcache.c:475
+#: nscd/aicache.c:84 nscd/hstcache.c:483
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
msgstr ""
@@ -3517,344 +3547,369 @@ msgstr ""
msgid " (first)"
msgstr ""
-#: nscd/cache.c:263 nscd/connections.c:811
+#: nscd/cache.c:286 nscd/connections.c:866
#, c-format
msgid "cannot stat() file `%s': %s"
msgstr ""
-#: nscd/cache.c:305
+#: nscd/cache.c:328
#, c-format
msgid "pruning %s cache; time %ld"
msgstr ""
-#: nscd/cache.c:334
+#: nscd/cache.c:357
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
msgstr ""
-#: nscd/connections.c:527
+#: nscd/connections.c:570
#, c-format
msgid "invalid persistent database file \"%s\": %s"
msgstr ""
-#: nscd/connections.c:535
+#: nscd/connections.c:578
msgid "uninitialized header"
msgstr ""
-#: nscd/connections.c:540
+#: nscd/connections.c:583
msgid "header size does not match"
msgstr ""
-#: nscd/connections.c:550
+#: nscd/connections.c:593
msgid "file size does not match"
msgstr ""
-#: nscd/connections.c:567
+#: nscd/connections.c:610
msgid "verification failed"
msgstr ""
-#: nscd/connections.c:581
+#: nscd/connections.c:624
#, c-format
msgid ""
"suggested size of table for database %s larger than the persistent "
"database's table"
msgstr ""
-#: nscd/connections.c:592 nscd/connections.c:674
+#: nscd/connections.c:635 nscd/connections.c:720
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
msgstr ""
-#: nscd/connections.c:653
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr ""
+
+#: nscd/connections.c:699
#, c-format
msgid ""
"database for %s corrupted or simultaneously used; remove %s manually if "
"necessary and restart"
msgstr ""
-#: nscd/connections.c:660
+#: nscd/connections.c:706
#, c-format
msgid "cannot create %s; no persistent database used"
msgstr ""
-#: nscd/connections.c:663
+#: nscd/connections.c:709
#, c-format
msgid "cannot create %s; no sharing possible"
msgstr ""
-#: nscd/connections.c:734
+#: nscd/connections.c:780
#, c-format
msgid "cannot write to database file %s: %s"
msgstr ""
-#: nscd/connections.c:773
+#: nscd/connections.c:819
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:824
+#: nscd/connections.c:902
#, c-format
msgid "cannot open socket: %s"
msgstr ""
-#: nscd/connections.c:841
+#: nscd/connections.c:922
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
msgstr ""
-#: nscd/connections.c:849
+#: nscd/connections.c:930
#, c-format
msgid "cannot set socket to close on exec: %s"
msgstr ""
-#: nscd/connections.c:860
+#: nscd/connections.c:943
#, c-format
msgid "cannot enable socket to accept connections: %s"
msgstr ""
-#: nscd/connections.c:960
+#: nscd/connections.c:1043
#, c-format
msgid "provide access to FD %d, for %s"
msgstr ""
-#: nscd/connections.c:972
+#: nscd/connections.c:1055
#, c-format
msgid "cannot handle old request version %d; current version is %d"
msgstr ""
-#: nscd/connections.c:982
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr ""
+
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr ""
+
+#: nscd/connections.c:1087
msgid "request not handled due to missing permission"
msgstr ""
-#: nscd/connections.c:1018 nscd/connections.c:1071
+#: nscd/connections.c:1125 nscd/connections.c:1178
#, c-format
msgid "cannot write result: %s"
msgstr ""
-#: nscd/connections.c:1154
+#: nscd/connections.c:1261
#, c-format
msgid "error getting caller's id: %s"
msgstr ""
-#: nscd/connections.c:1213
+#: nscd/connections.c:1320
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:1227
+#: nscd/connections.c:1334
#, c-format
msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:1267
+#: nscd/connections.c:1374
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:1277
+#: nscd/connections.c:1384
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:1290
+#: nscd/connections.c:1397
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:1319
+#: nscd/connections.c:1429
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:1328
+#: nscd/connections.c:1438
#, c-format
msgid "cannot change current working directory to \"/\": %s"
msgstr ""
-#: nscd/connections.c:1471
+#: nscd/connections.c:1644
#, c-format
msgid "short read while reading request: %s"
msgstr ""
-#: nscd/connections.c:1502
+#: nscd/connections.c:1677
#, c-format
msgid "key length in request too long: %d"
msgstr ""
-#: nscd/connections.c:1515
+#: nscd/connections.c:1690
#, c-format
msgid "short read while reading request key: %s"
msgstr ""
-#: nscd/connections.c:1524
+#: nscd/connections.c:1699
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
msgstr ""
-#: nscd/connections.c:1529
+#: nscd/connections.c:1704
#, c-format
msgid "handle_request: request received (Version = %d)"
msgstr ""
-#: nscd/connections.c:1866
+#: nscd/connections.c:1903 nscd/connections.c:2101
+#, c-format
+msgid "disabled inotify after read error %d"
+msgstr ""
+
+#: nscd/connections.c:2230
msgid "could not initialize conditional variable"
msgstr ""
-#: nscd/connections.c:1874
+#: nscd/connections.c:2238
msgid "could not start clean-up thread; terminating"
msgstr ""
-#: nscd/connections.c:1888
+#: nscd/connections.c:2252
msgid "could not start any worker thread; terminating"
msgstr ""
-#: nscd/connections.c:1939 nscd/connections.c:1940 nscd/connections.c:1957
-#: nscd/connections.c:1966 nscd/connections.c:1984 nscd/connections.c:1995
-#: nscd/connections.c:2006
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
#, c-format
msgid "Failed to run nscd as user '%s'"
msgstr ""
-#: nscd/connections.c:1958
+#: nscd/connections.c:2322
#, c-format
msgid "initial getgrouplist failed"
msgstr ""
-#: nscd/connections.c:1967
+#: nscd/connections.c:2331
#, c-format
msgid "getgrouplist failed"
msgstr ""
-#: nscd/connections.c:1985
+#: nscd/connections.c:2349
#, c-format
msgid "setgroups failed"
msgstr ""
-#: nscd/grpcache.c:404 nscd/hstcache.c:422 nscd/initgrcache.c:414
-#: nscd/pwdcache.c:399 nscd/servicescache.c:345
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
#, c-format
msgid "short write in %s: %s"
msgstr ""
-#: nscd/grpcache.c:447 nscd/initgrcache.c:78
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
msgstr ""
-#: nscd/grpcache.c:449 nscd/initgrcache.c:80
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
msgstr ""
-#: nscd/grpcache.c:526
+#: nscd/grpcache.c:517
#, c-format
msgid "Invalid numeric gid \"%s\"!"
msgstr ""
-#: nscd/mem.c:422
+#: nscd/mem.c:457
#, c-format
msgid "freed %zu bytes in %s cache"
msgstr ""
-#: nscd/mem.c:557
+#: nscd/mem.c:594
#, c-format
msgid "no more memory for database '%s'"
msgstr ""
-#: nscd/nscd.c:98
+#: nscd/nscd.c:101
msgid "Read configuration data from NAME"
msgstr ""
-#: nscd/nscd.c:100
+#: nscd/nscd.c:103
msgid "Do not fork and display messages on the current tty"
msgstr ""
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "NUMBER"
msgstr ""
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "Start NUMBER threads"
msgstr ""
-#: nscd/nscd.c:102
+#: nscd/nscd.c:105
msgid "Shut the server down"
msgstr ""
-#: nscd/nscd.c:103
+#: nscd/nscd.c:106
msgid "Print current configuration statistics"
msgstr ""
-#: nscd/nscd.c:104
+#: nscd/nscd.c:107
msgid "TABLE"
msgstr ""
-#: nscd/nscd.c:105
+#: nscd/nscd.c:108
msgid "Invalidate the specified cache"
msgstr ""
-#: nscd/nscd.c:106
+#: nscd/nscd.c:109
msgid "TABLE,yes"
msgstr ""
-#: nscd/nscd.c:107
+#: nscd/nscd.c:110
msgid "Use separate cache for each user"
msgstr ""
-#: nscd/nscd.c:112
+#: nscd/nscd.c:115
msgid "Name Service Cache Daemon."
msgstr ""
-#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
#, c-format
msgid "wrong number of arguments"
msgstr ""
-#: nscd/nscd.c:154
+#: nscd/nscd.c:157
#, c-format
msgid "failure while reading configuration file; this is fatal"
msgstr ""
-#: nscd/nscd.c:163
+#: nscd/nscd.c:166
#, c-format
msgid "already running"
msgstr ""
-#: nscd/nscd.c:178 nscd/nscd.c:233
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
msgid "cannot fork"
msgstr ""
-#: nscd/nscd.c:241
+#: nscd/nscd.c:244
#, c-format
msgid "cannot change current working directory to \"/\""
msgstr ""
-#: nscd/nscd.c:249
+#: nscd/nscd.c:252
msgid "Could not create log file"
msgstr ""
-#: nscd/nscd.c:302 nscd/nscd.c:327 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
msgid "Only root is allowed to use this option!"
msgstr ""
-#: nscd/nscd.c:364 nscd/nscd_stat.c:191
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr ""
+
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
msgid "write incomplete"
msgstr ""
-#: nscd/nscd.c:375
+#: nscd/nscd.c:381
#, c-format
msgid "cannot read invalidate ACK"
msgstr ""
-#: nscd/nscd.c:381
+#: nscd/nscd.c:387
#, c-format
msgid "invalidation failed"
msgstr ""
-#: nscd/nscd.c:391
+#: nscd/nscd.c:397
#, c-format
msgid "secure services not implemented anymore"
msgstr ""
@@ -3998,17 +4053,17 @@ msgid ""
"%15s check /etc/%s for changes\n"
msgstr ""
-#: nscd/pwdcache.c:442
+#: nscd/pwdcache.c:443
#, c-format
msgid "Haven't found \"%s\" in password cache!"
msgstr ""
-#: nscd/pwdcache.c:444
+#: nscd/pwdcache.c:445
#, c-format
msgid "Reloading \"%s\" in password cache!"
msgstr ""
-#: nscd/pwdcache.c:522
+#: nscd/pwdcache.c:523
#, c-format
msgid "Invalid numeric uid \"%s\"!"
msgstr ""
@@ -4104,12 +4159,12 @@ msgid ""
"%15u CAV misses\n"
msgstr ""
-#: nscd/servicescache.c:392
+#: nscd/servicescache.c:390
#, c-format
msgid "Haven't found \"%s\" in services cache!"
msgstr ""
-#: nscd/servicescache.c:394
+#: nscd/servicescache.c:392
#, c-format
msgid "Reloading \"%s\" in services cache!"
msgstr ""
@@ -4123,27 +4178,24 @@ msgid "Service configuration to be used"
msgstr ""
#: nss/getent.c:62
-msgid ""
-"Get entries from administrative database.\vFor bug reporting instructions, "
-"please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get entries from administrative database."
msgstr ""
-#: nss/getent.c:145 nss/getent.c:394
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
msgid "Enumeration not supported on %s\n"
msgstr ""
-#: nss/getent.c:782
+#: nss/getent.c:794
#, c-format
msgid "Unknown database name"
msgstr ""
-#: nss/getent.c:808
+#: nss/getent.c:820
msgid "Supported databases:\n"
msgstr ""
-#: nss/getent.c:868
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
msgstr ""
@@ -4214,21 +4266,33 @@ msgstr ""
msgid " %s -a [pathname]\n"
msgstr ""
-#: posix/getconf.c:1067
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
+
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
msgstr ""
-#: posix/getconf.c:1095
+#: posix/getconf.c:1109
#, c-format
msgid "Couldn't execute %s"
msgstr ""
-#: posix/getconf.c:1135 posix/getconf.c:1151
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
msgstr ""
-#: posix/getconf.c:1173
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
msgstr ""
@@ -4285,75 +4349,75 @@ msgstr ""
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr ""
-#: posix/regcomp.c:135
+#: posix/regcomp.c:136
msgid "No match"
msgstr ""
-#: posix/regcomp.c:138
+#: posix/regcomp.c:139
msgid "Invalid regular expression"
msgstr ""
-#: posix/regcomp.c:141
+#: posix/regcomp.c:142
msgid "Invalid collation character"
msgstr ""
-#: posix/regcomp.c:144
+#: posix/regcomp.c:145
msgid "Invalid character class name"
msgstr ""
-#: posix/regcomp.c:147
+#: posix/regcomp.c:148
msgid "Trailing backslash"
msgstr ""
-#: posix/regcomp.c:150
+#: posix/regcomp.c:151
msgid "Invalid back reference"
msgstr ""
-#: posix/regcomp.c:153
+#: posix/regcomp.c:154
msgid "Unmatched [ or [^"
msgstr ""
-#: posix/regcomp.c:156
+#: posix/regcomp.c:157
msgid "Unmatched ( or \\("
msgstr ""
-#: posix/regcomp.c:159
+#: posix/regcomp.c:160
msgid "Unmatched \\{"
msgstr ""
-#: posix/regcomp.c:162
+#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
msgstr ""
-#: posix/regcomp.c:165
+#: posix/regcomp.c:166
msgid "Invalid range end"
msgstr ""
-#: posix/regcomp.c:168
+#: posix/regcomp.c:169
msgid "Memory exhausted"
msgstr ""
-#: posix/regcomp.c:171
+#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
msgstr ""
-#: posix/regcomp.c:174
+#: posix/regcomp.c:175
msgid "Premature end of regular expression"
msgstr ""
-#: posix/regcomp.c:177
+#: posix/regcomp.c:178
msgid "Regular expression too big"
msgstr ""
-#: posix/regcomp.c:180
+#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
msgstr ""
-#: posix/regcomp.c:660
+#: posix/regcomp.c:681
msgid "No previous regular expression"
msgstr ""
-#: posix/wordexp.c:1798
+#: posix/wordexp.c:1832
msgid "parameter null or not set"
msgstr ""
@@ -4437,7 +4501,7 @@ msgstr ""
msgid "Unknown signal %d"
msgstr ""
-#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:140
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
@@ -4604,121 +4668,244 @@ msgstr ""
msgid "Cannot receive reply to broadcast"
msgstr ""
-#: sunrpc/rpc_main.c:286
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr ""
-#: sunrpc/rpc_main.c:293
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr ""
-#: sunrpc/rpc_main.c:305
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
msgstr ""
-#: sunrpc/rpc_main.c:340
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
msgstr ""
-#: sunrpc/rpc_main.c:348
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
msgstr ""
-#: sunrpc/rpc_main.c:417
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
msgstr ""
-#: sunrpc/rpc_main.c:420
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
msgstr ""
-#: sunrpc/rpc_main.c:460
+#: sunrpc/rpc_main.c:464
#, c-format
msgid "illegal nettype: `%s'\n"
msgstr ""
-#: sunrpc/rpc_main.c:1122
+#: sunrpc/rpc_main.c:1130
#, c-format
msgid "rpcgen: too many defines\n"
msgstr ""
-#: sunrpc/rpc_main.c:1134
+#: sunrpc/rpc_main.c:1142
#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr ""
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1167
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
msgstr ""
-#: sunrpc/rpc_main.c:1212
+#: sunrpc/rpc_main.c:1220
#, c-format
msgid "Cannot specify more than one input file!\n"
msgstr ""
-#: sunrpc/rpc_main.c:1382
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
msgstr ""
-#: sunrpc/rpc_main.c:1391
+#: sunrpc/rpc_main.c:1403
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
msgstr ""
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
msgstr ""
-#: sunrpc/rpc_main.c:1410
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
msgstr ""
-#: sunrpc/rpc_main.c:1429
+#: sunrpc/rpc_main.c:1441
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
msgstr ""
-#: sunrpc/rpc_main.c:1434
+#: sunrpc/rpc_main.c:1446
#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr ""
-#: sunrpc/rpc_main.c:1443
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
msgstr ""
-#: sunrpc/rpc_main.c:1444
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid ""
"\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] "
"infile\n"
msgstr ""
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
msgstr ""
-#: sunrpc/rpc_main.c:1448
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
msgstr ""
-#: sunrpc/rpc_main.c:1449
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
msgstr ""
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr ""
+
#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
msgstr ""
@@ -4739,79 +4926,79 @@ msgstr ""
msgid "preprocessor error"
msgstr ""
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
msgstr ""
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
msgstr ""
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr ""
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
msgstr ""
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
msgstr ""
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
msgstr ""
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
msgstr ""
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
msgstr ""
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
msgstr ""
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
msgstr ""
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
msgstr ""
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr ""
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
msgstr ""
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
msgstr ""
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
msgstr ""
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr ""
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
msgstr ""
@@ -5969,415 +6156,422 @@ msgstr ""
msgid "makecontext: does not know how to handle more than 8 arguments\n"
msgstr ""
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
msgid "cannot open `%s'"
msgstr ""
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
msgid "cannot read header from `%s'"
msgstr ""
-#: timezone/zdump.c:211
+#: timezone/zdump.c:210
msgid "lacks alphabetic at start"
msgstr ""
-#: timezone/zdump.c:213
+#: timezone/zdump.c:212
msgid "has fewer than 3 alphabetics"
msgstr ""
-#: timezone/zdump.c:215
+#: timezone/zdump.c:214
msgid "has more than 6 alphabetics"
msgstr ""
-#: timezone/zdump.c:223
+#: timezone/zdump.c:222
msgid "differs from POSIX standard"
msgstr ""
-#: timezone/zdump.c:229
+#: timezone/zdump.c:228
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
msgstr ""
-#: timezone/zdump.c:280
+#: timezone/zdump.c:279
#, c-format
msgid ""
"%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
msgstr ""
-#: timezone/zdump.c:297
+#: timezone/zdump.c:296
#, c-format
msgid "%s: wild -c argument %s\n"
msgstr ""
-#: timezone/zdump.c:388
+#: timezone/zdump.c:387
msgid "Error writing to standard output"
msgstr ""
-#: timezone/zdump.c:411
+#: timezone/zdump.c:410
#, c-format
msgid ""
"%s: use of -v on system with floating time_t other than float or double\n"
msgstr ""
-#: timezone/zic.c:392
+#: timezone/zic.c:388
#, c-format
msgid "%s: Memory exhausted: %s\n"
msgstr ""
-#: timezone/zic.c:451
+#: timezone/zic.c:434
#, c-format
msgid "\"%s\", line %d: %s"
msgstr ""
-#: timezone/zic.c:454
+#: timezone/zic.c:437
#, c-format
msgid " (rule from \"%s\", line %d)"
msgstr ""
-#: timezone/zic.c:466
+#: timezone/zic.c:449
msgid "warning: "
msgstr ""
-#: timezone/zic.c:476
+#: timezone/zic.c:459
#, c-format
msgid ""
"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
msgstr ""
-#: timezone/zic.c:511
+#: timezone/zic.c:494
msgid "wild compilation-time specification of zic_t"
msgstr ""
-#: timezone/zic.c:528
+#: timezone/zic.c:511
#, c-format
msgid "%s: More than one -d option specified\n"
msgstr ""
-#: timezone/zic.c:538
+#: timezone/zic.c:521
#, c-format
msgid "%s: More than one -l option specified\n"
msgstr ""
-#: timezone/zic.c:548
+#: timezone/zic.c:531
#, c-format
msgid "%s: More than one -p option specified\n"
msgstr ""
-#: timezone/zic.c:558
+#: timezone/zic.c:541
#, c-format
msgid "%s: More than one -y option specified\n"
msgstr ""
-#: timezone/zic.c:568
+#: timezone/zic.c:551
#, c-format
msgid "%s: More than one -L option specified\n"
msgstr ""
-#: timezone/zic.c:617
+#: timezone/zic.c:600
msgid "link to link"
msgstr ""
-#: timezone/zic.c:682
+#: timezone/zic.c:665
msgid "hard link failed, symbolic link used"
msgstr ""
-#: timezone/zic.c:690
+#: timezone/zic.c:673
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
msgstr ""
-#: timezone/zic.c:762 timezone/zic.c:764
+#: timezone/zic.c:745 timezone/zic.c:747
msgid "same rule name in multiple files"
msgstr ""
-#: timezone/zic.c:805
+#: timezone/zic.c:788
msgid "unruly zone"
msgstr ""
-#: timezone/zic.c:812
+#: timezone/zic.c:795
#, c-format
msgid "%s in ruleless zone"
msgstr ""
-#: timezone/zic.c:833
+#: timezone/zic.c:816
msgid "standard input"
msgstr ""
-#: timezone/zic.c:838
+#: timezone/zic.c:821
#, c-format
msgid "%s: Can't open %s: %s\n"
msgstr ""
-#: timezone/zic.c:849
+#: timezone/zic.c:832
msgid "line too long"
msgstr ""
-#: timezone/zic.c:869
+#: timezone/zic.c:852
msgid "input line of unknown type"
msgstr ""
-#: timezone/zic.c:885
+#: timezone/zic.c:868
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
msgstr ""
-#: timezone/zic.c:892 timezone/zic.c:1329 timezone/zic.c:1351
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
msgstr ""
-#: timezone/zic.c:900
+#: timezone/zic.c:883
#, c-format
msgid "%s: Error reading %s\n"
msgstr ""
-#: timezone/zic.c:907
+#: timezone/zic.c:890
#, c-format
msgid "%s: Error closing %s: %s\n"
msgstr ""
-#: timezone/zic.c:912
+#: timezone/zic.c:895
msgid "expected continuation line not found"
msgstr ""
-#: timezone/zic.c:956 timezone/zic.c:2489 timezone/zic.c:2508
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
msgid "time overflow"
msgstr ""
-#: timezone/zic.c:960
+#: timezone/zic.c:943
msgid "24:00 not handled by pre-1998 versions of zic"
msgstr ""
-#: timezone/zic.c:963
+#: timezone/zic.c:946
msgid "values over 24 hours not handled by pre-2007 versions of zic"
msgstr ""
-#: timezone/zic.c:976
+#: timezone/zic.c:959
msgid "wrong number of fields on Rule line"
msgstr ""
-#: timezone/zic.c:980
+#: timezone/zic.c:963
msgid "nameless rule"
msgstr ""
-#: timezone/zic.c:985
+#: timezone/zic.c:968
msgid "invalid saved time"
msgstr ""
-#: timezone/zic.c:1006
+#: timezone/zic.c:989
msgid "wrong number of fields on Zone line"
msgstr ""
-#: timezone/zic.c:1012
+#: timezone/zic.c:995
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
msgstr ""
-#: timezone/zic.c:1020
+#: timezone/zic.c:1003
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
msgstr ""
-#: timezone/zic.c:1032
+#: timezone/zic.c:1015
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
msgstr ""
-#: timezone/zic.c:1048
+#: timezone/zic.c:1031
msgid "wrong number of fields on Zone continuation line"
msgstr ""
-#: timezone/zic.c:1088
+#: timezone/zic.c:1071
msgid "invalid UTC offset"
msgstr ""
-#: timezone/zic.c:1091
+#: timezone/zic.c:1074
msgid "invalid abbreviation format"
msgstr ""
-#: timezone/zic.c:1120
+#: timezone/zic.c:1103
msgid "Zone continuation line end time is not after end time of previous line"
msgstr ""
-#: timezone/zic.c:1148
+#: timezone/zic.c:1131
msgid "wrong number of fields on Leap line"
msgstr ""
-#: timezone/zic.c:1157
+#: timezone/zic.c:1140
msgid "invalid leaping year"
msgstr ""
-#: timezone/zic.c:1177 timezone/zic.c:1283
+#: timezone/zic.c:1160 timezone/zic.c:1266
msgid "invalid month name"
msgstr ""
-#: timezone/zic.c:1190 timezone/zic.c:1396 timezone/zic.c:1410
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
msgid "invalid day of month"
msgstr ""
-#: timezone/zic.c:1195
+#: timezone/zic.c:1178
msgid "time before zero"
msgstr ""
-#: timezone/zic.c:1199
+#: timezone/zic.c:1182
msgid "time too small"
msgstr ""
-#: timezone/zic.c:1203
+#: timezone/zic.c:1186
msgid "time too large"
msgstr ""
-#: timezone/zic.c:1207 timezone/zic.c:1312
+#: timezone/zic.c:1190 timezone/zic.c:1295
msgid "invalid time of day"
msgstr ""
-#: timezone/zic.c:1226
+#: timezone/zic.c:1209
msgid "illegal CORRECTION field on Leap line"
msgstr ""
-#: timezone/zic.c:1231
+#: timezone/zic.c:1214
msgid "illegal Rolling/Stationary field on Leap line"
msgstr ""
-#: timezone/zic.c:1247
+#: timezone/zic.c:1230
msgid "wrong number of fields on Link line"
msgstr ""
-#: timezone/zic.c:1251
+#: timezone/zic.c:1234
msgid "blank FROM field on Link line"
msgstr ""
-#: timezone/zic.c:1255
+#: timezone/zic.c:1238
msgid "blank TO field on Link line"
msgstr ""
-#: timezone/zic.c:1333
+#: timezone/zic.c:1316
msgid "invalid starting year"
msgstr ""
-#: timezone/zic.c:1355
+#: timezone/zic.c:1338
msgid "invalid ending year"
msgstr ""
-#: timezone/zic.c:1359
+#: timezone/zic.c:1342
msgid "starting year greater than ending year"
msgstr ""
-#: timezone/zic.c:1366
+#: timezone/zic.c:1349
msgid "typed single year"
msgstr ""
-#: timezone/zic.c:1401
+#: timezone/zic.c:1384
msgid "invalid weekday name"
msgstr ""
-#: timezone/zic.c:1579
+#: timezone/zic.c:1562
#, c-format
msgid "%s: Can't remove %s: %s\n"
msgstr ""
-#: timezone/zic.c:1589
+#: timezone/zic.c:1572
#, c-format
msgid "%s: Can't create %s: %s\n"
msgstr ""
-#: timezone/zic.c:1739
+#: timezone/zic.c:1722
#, c-format
msgid "%s: Error writing %s\n"
msgstr ""
-#: timezone/zic.c:2031
+#: timezone/zic.c:2015
msgid "no POSIX environment variable for zone"
msgstr ""
-#: timezone/zic.c:2185
+#: timezone/zic.c:2172
msgid "can't determine time zone abbreviation to use just after until time"
msgstr ""
-#: timezone/zic.c:2231
+#: timezone/zic.c:2218
msgid "too many transitions?!"
msgstr ""
-#: timezone/zic.c:2250
+#: timezone/zic.c:2237
msgid "internal error - addtype called with bad isdst"
msgstr ""
-#: timezone/zic.c:2254
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad ttisstd"
msgstr ""
-#: timezone/zic.c:2258
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisgmt"
msgstr ""
-#: timezone/zic.c:2277
+#: timezone/zic.c:2264
msgid "too many local time types"
msgstr ""
-#: timezone/zic.c:2281
+#: timezone/zic.c:2268
msgid "UTC offset out of range"
msgstr ""
-#: timezone/zic.c:2309
+#: timezone/zic.c:2296
msgid "too many leap seconds"
msgstr ""
-#: timezone/zic.c:2315
+#: timezone/zic.c:2302
msgid "repeated leap second moment"
msgstr ""
-#: timezone/zic.c:2367
+#: timezone/zic.c:2354
msgid "Wild result from command execution"
msgstr ""
-#: timezone/zic.c:2368
+#: timezone/zic.c:2355
#, c-format
msgid "%s: command was '%s', result was %d\n"
msgstr ""
-#: timezone/zic.c:2466
+#: timezone/zic.c:2453
msgid "Odd number of quotation marks"
msgstr ""
-#: timezone/zic.c:2555
+#: timezone/zic.c:2542
msgid "use of 2/29 in non leap-year"
msgstr ""
-#: timezone/zic.c:2590
+#: timezone/zic.c:2577
msgid ""
"rule goes past start/end of month--will not work with pre-2004 versions of "
"zic"
msgstr ""
-#: timezone/zic.c:2622
+#: timezone/zic.c:2609
msgid "time zone abbreviation lacks alphabetic at start"
msgstr ""
-#: timezone/zic.c:2624
+#: timezone/zic.c:2611
msgid "time zone abbreviation has more than 3 alphabetics"
msgstr ""
-#: timezone/zic.c:2626
+#: timezone/zic.c:2613
msgid "time zone abbreviation has too many alphabetics"
msgstr ""
-#: timezone/zic.c:2636
+#: timezone/zic.c:2623
msgid "time zone abbreviation differs from POSIX standard"
msgstr ""
-#: timezone/zic.c:2648
+#: timezone/zic.c:2635
msgid "too many, or too long, time zone abbreviations"
msgstr ""
-#: timezone/zic.c:2689
+#: timezone/zic.c:2676
#, c-format
msgid "%s: Can't create directory %s: %s\n"
msgstr ""
-#: timezone/zic.c:2711
+#: timezone/zic.c:2698
#, c-format
msgid "%s: %d did not sign extend correctly\n"
msgstr ""
diff --git a/po/lt.po b/po/lt.po
index 516a93bd6c..76b35b9d22 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libc-2.7\n"
"POT-Creation-Date: 2007-10-15 21:18-0700\n"
-"PO-Revision-Date: 2008-10-28 01:02+0200\n"
+"PO-Revision-Date: 2009-02-12 05:24+0200\n"
"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
"MIME-Version: 1.0\n"
@@ -19,7 +19,7 @@ msgstr ""
#: argp/argp-help.c:228
#, c-format
msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
-msgstr "%.*s: ARGP_HELP_FMT parametrui rekia reikšmės"
+msgstr "%.*s: ARGP_HELP_FMT parametrui reikia reikšmės"
#: argp/argp-help.c:238
#, c-format
@@ -70,7 +70,6 @@ msgid "Set the program name"
msgstr "Nustatyti programos pavadinimÄ…"
#: argp/argp-parse.c:106
-#, fuzzy
msgid "Hang for SECS seconds (default 3600)"
msgstr "Laukti SEK sekundžių (standartiškai 3600)"
@@ -80,7 +79,7 @@ msgstr "IÅ¡spausdinti programos versijÄ…"
#: argp/argp-parse.c:183
msgid "(PROGRAM ERROR) No version known!?"
-msgstr "(PROGRAM ERROR) Nežinoma joka versija!?"
+msgstr "(PROGRAM ERROR) Nežinoma jokia versija!?"
#: argp/argp-parse.c:623
#, c-format
@@ -88,9 +87,8 @@ msgid "%s: Too many arguments\n"
msgstr "%s: Per daug argumentų\n"
#: argp/argp-parse.c:766
-#, fuzzy
msgid "(PROGRAM ERROR) Option should have been recognized!?"
-msgstr "(PROGRAM ERROR) Nežinoma joka versija!?"
+msgstr "(PROGRAM ERROR) Parametras turėjo būti atpažintas!?"
#: assert/assert-perr.c:57
#, c-format
@@ -190,7 +188,6 @@ msgid "unknown set `%s'"
msgstr "nežinomas rinkinys „%s“"
#: catgets/gencat.c:563
-#, fuzzy
msgid "invalid quote character"
msgstr "netaisyklingas kabuÄių simbolis"
@@ -208,12 +205,10 @@ msgid "duplicated message identifier"
msgstr "pakartotas pranešimo identifikatorius"
#: catgets/gencat.c:731
-#, fuzzy
msgid "invalid character: message ignored"
msgstr "netaisyklingas simbolis: pranešimas ignoruotas"
#: catgets/gencat.c:774
-#, fuzzy
msgid "invalid line"
msgstr "nekorektiška eilutė"
@@ -222,9 +217,9 @@ msgid "malformed line ignored"
msgstr "nekorektiška eilutė ignoruota"
#: catgets/gencat.c:992 catgets/gencat.c:1033 nss/makedb.c:183
-#, fuzzy, c-format
+#, c-format
msgid "cannot open output file `%s'"
-msgstr "%s: nepavyko atverti laikinojo failo: %s"
+msgstr "nepavyko atverti išvedimo failo: „%s“"
#: catgets/gencat.c:1195 locale/programs/linereader.c:560
#, fuzzy
@@ -263,9 +258,9 @@ msgid "[FILE]"
msgstr "[FAILAS]"
#: debug/pcprofiledump.c:104
-#, fuzzy, c-format
+#, c-format
msgid "cannot open input file"
-msgstr "%s: nepavyko atverti laikinojo failo: %s"
+msgstr "nepavyko atverti įvedimo failo"
#: debug/pcprofiledump.c:111
#, c-format
@@ -350,9 +345,8 @@ msgid "invalid mode parameter"
msgstr "netaisyklinga veiksena"
#: elf/cache.c:69
-#, fuzzy
msgid "unknown"
-msgstr "%s: adresas nežinomas"
+msgstr "nežinoma"
#: elf/cache.c:112
msgid "Unknown OS"
@@ -401,7 +395,7 @@ msgstr "%s pervardinimas į %s nesėkmingas"
#: elf/cache.c:440
#, c-format
msgid "Renaming of %s to %s failed"
-msgstr "%s pervardinimas į %s nesėkmingas"
+msgstr "%s pervadinimas į %s nesėkmingas"
#: elf/dl-close.c:378 elf/dl-open.c:460
#, fuzzy
@@ -573,14 +567,12 @@ msgid "invalid ELF header"
msgstr "netaisyklinga ELF antraštė"
#: elf/dl-load.c:1697
-#, fuzzy
msgid "ELF file data encoding not big-endian"
msgstr "ELF failo duomenų koduotė ne big-endian"
#: elf/dl-load.c:1699
-#, fuzzy
msgid "ELF file data encoding not little-endian"
-msgstr "ELF failo duomenų koduotė ne big-endian"
+msgstr "ELF failo duomenų koduotė ne little-endian"
#: elf/dl-load.c:1703
msgid "ELF file version ident does not match current one"
@@ -592,7 +584,7 @@ msgstr "ELF failo OS ABI netaisyklingas"
#: elf/dl-load.c:1709
msgid "ELF file ABI version invalid"
-msgstr "ELF failo ABI versioja netaisyklinga"
+msgstr "ELF failo ABI versija netaisyklinga"
#: elf/dl-load.c:1712
msgid "internal error"
@@ -619,7 +611,6 @@ msgid "wrong ELF class: ELFCLASS32"
msgstr "klaidinga ELF klasÄ—: ELFCLASS32"
#: elf/dl-load.c:2244
-#, fuzzy
msgid "cannot open shared object file"
msgstr "nepavyko atverti bendrojo objekto failo"
@@ -640,7 +631,6 @@ msgid "TLS generation counter wrapped! Please report this."
msgstr "TLS kartų skaitiklis persivertė! Prašytume apie tai pranešti."
#: elf/dl-open.c:549
-#, fuzzy
msgid "invalid mode for dlopen()"
msgstr "netaisyklinga veiksena dlopen()"
@@ -764,9 +754,9 @@ msgid "Configure Dynamic Linker Run Time Bindings."
msgstr ""
#: elf/ldconfig.c:319
-#, fuzzy, c-format
+#, c-format
msgid "Path `%s' given more than once"
-msgstr "%s: laukas „%s“ apibrėžtas daugiau negu vieną kartą"
+msgstr "Kelias „%s“ nurodytas daugiau negu vieną kartą"
#: elf/ldconfig.c:359
#, c-format
@@ -784,9 +774,9 @@ msgid "Can't stat %s\n"
msgstr "Nepavyko susaistyti (link) %s su %s"
#: elf/ldconfig.c:468
-#, fuzzy, c-format
+#, c-format
msgid "%s is not a symbolic link\n"
-msgstr "simbolinÄ— nuoroda"
+msgstr "%s nÄ—ra simbolinÄ— nuoroda\n"
#: elf/ldconfig.c:487
#, fuzzy, c-format
@@ -817,9 +807,9 @@ msgid "Cannot lstat %s"
msgstr "%s: nepavyko perskaityti: %s"
#: elf/ldconfig.c:579
-#, fuzzy, c-format
+#, c-format
msgid "Ignored file %s since it is not a regular file."
-msgstr "ne paprastas failas"
+msgstr "Failas %s praleistas, nes tai nÄ—ra paprastas failas"
#: elf/ldconfig.c:588
#, c-format
@@ -837,9 +827,9 @@ msgid "Cannot stat %s"
msgstr "%s: nepavyko perskaityti: %s"
#: elf/ldconfig.c:814 elf/readlib.c:91
-#, fuzzy, c-format
+#, c-format
msgid "Input file %s not found.\n"
-msgstr "Duomenų failas %s nerastas.\n"
+msgstr "Įvedimo failas %s nerastas.\n"
#: elf/ldconfig.c:888
#, c-format
@@ -898,9 +888,9 @@ msgid "memory exhausted"
msgstr "baigÄ—si atmintis"
#: elf/ldconfig.c:1178
-#, fuzzy, c-format
+#, c-format
msgid "%s:%u: cannot read directory %s"
-msgstr "nepavyko atverti aplanko %s"
+msgstr "%s:%u: nepavyko atverti aplanko %s"
#: elf/ldconfig.c:1223
#, c-format
@@ -959,9 +949,8 @@ msgid "No such file or directory"
msgstr "Toks failas ar aplankas neegzistuoja"
#: elf/ldd.bash.in:151 inet/rcmd.c:483
-#, fuzzy
msgid "not regular file"
-msgstr "paprastas failas"
+msgstr "ne paprastas failas"
#: elf/ldd.bash.in:154
msgid "warning: you do not have execution permission for"
@@ -1558,9 +1547,9 @@ msgstr "%s: klaida būsenų automate"
#: locale/programs/ld-numeric.c:384 locale/programs/ld-paper.c:257
#: locale/programs/ld-telephone.c:329 locale/programs/ld-time.c:1237
#: locale/programs/locfile.c:826 locale/programs/repertoire.c:324
-#, fuzzy, c-format
+#, c-format
msgid "%s: premature end of file"
-msgstr "%s: failo pabaiga"
+msgstr "%s: ankstyva failo pabaiga"
#: locale/programs/charmap.c:869 locale/programs/charmap.c:880
#, c-format
@@ -5839,7 +5828,7 @@ msgstr "Kanalo numeris už ribų"
#: sysdeps/gnu/errlist.c:1117
msgid "Level 2 not synchronized"
-msgstr "2 lygmuo nesinchonizuotas"
+msgstr "2 lygmuo nesinchronizuotas"
#: sysdeps/gnu/errlist.c:1125
msgid "Level 3 halted"
diff --git a/po/nl.po b/po/nl.po
index 9fbc5e4c8d..8ce51eb045 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,32 +1,31 @@
# Dutch translations for libc.
-# Copyright (C) 2007 Free Software Foundation, Inc.
+# Copyright (C) 2009 Free Software Foundation, Inc.
# This file is distributed under the same license as the glibc package.
#
# Elros Cyriatan <cyriatan@fastmail.fm>, 2004.
# Benno Schulenberg <benno@vertaalt.nl>, 2006, 2007, 2008.
msgid ""
msgstr ""
-"Project-Id-Version: libc-2.7\n"
+"Project-Id-Version: libc-2.9.90\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-10-15 21:18-0700\n"
-"PO-Revision-Date: 2008-04-05 22:04+0200\n"
-"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-03-04 11:41+0100\n"
+"Last-Translator: Erwin Poeze <erwin.poeze@gmail.com>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: argp/argp-help.c:228
#, c-format
msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
-msgstr "%.*s: Parameter in ARGP_HELP_FMT vereist een waarde"
+msgstr "%.*s: parameter in ARGP_HELP_FMT vereist een waarde"
#: argp/argp-help.c:238
#, c-format
msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
-msgstr "%.*s: Onbekende parameter in ARGP_HELP_FMT"
+msgstr "%.*s: onbekende parameter in ARGP_HELP_FMT"
#: argp/argp-help.c:251
#, c-format
@@ -106,7 +105,7 @@ msgstr "%s%s%s:%u: %s%sOnverwachte fout: %s.\n"
msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
msgstr "%s%s%s:%u: %s%sControletest '%s' faalt.\n"
-#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
msgid "NAME"
msgstr "NAAM"
@@ -139,9 +138,15 @@ msgstr ""
"-o UITVOERBESTAND [INVOERBESTAND...]\n"
"[UITVOERBESTAND [INVOERBESTAND...]]"
-#: catgets/gencat.c:232 debug/pcprofiledump.c:204 iconv/iconv_prog.c:411
-#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
-#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
@@ -149,12 +154,13 @@ msgstr ""
"Voor het rapporteren van fouten, zie:\n"
" <http://www.gnu.org/software/libc/bugs.html>.\n"
-#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:296
-#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:426
-#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
-#: posix/getconf.c:1012
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -166,10 +172,12 @@ msgstr ""
"Er is GEEN garantie, zelfs niet voor VERKOOPBAARHEID of GESCHIKTHEID\n"
"VOOR EEN BEPAALD DOEL.\n"
-#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:301 elf/sprof.c:361
-#: iconv/iconv_prog.c:431 iconv/iconvconfig.c:400 locale/programs/locale.c:280
-#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
-#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
#, c-format
msgid "Written by %s.\n"
msgstr "Geschreven door %s.\n"
@@ -178,7 +186,7 @@ msgstr "Geschreven door %s.\n"
msgid "*standard input*"
msgstr "*standaardinvoer*"
-#: catgets/gencat.c:288 iconv/iconv_charmap.c:158 iconv/iconv_prog.c:298
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
#: nss/makedb.c:170
#, c-format
msgid "cannot open input file `%s'"
@@ -272,17 +280,17 @@ msgstr ""
msgid "[FILE]"
msgstr "[BESTAND]"
-#: debug/pcprofiledump.c:104
+#: debug/pcprofiledump.c:108
#, c-format
msgid "cannot open input file"
msgstr "kan invoerbestand niet openen"
-#: debug/pcprofiledump.c:111
+#: debug/pcprofiledump.c:115
#, c-format
msgid "cannot read header"
msgstr "kan kop van bestand niet lezen"
-#: debug/pcprofiledump.c:175
+#: debug/pcprofiledump.c:179
#, c-format
msgid "invalid pointer size"
msgstr "ongeldige pointergrootte"
@@ -312,10 +320,7 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
-" \n"
"De uitvoering van een programma volgen door steeds de naam van\n"
"de uitgevoerde functie te printen.\n"
"\n"
@@ -325,23 +330,23 @@ msgstr ""
" --usage een korte gebruikssamenvatting tonen\n"
" -V,--version programmaversie tonen\n"
"\n"
-"Voor het rapporteren van gebreken in dit programma, zie:\n"
-" <http://www.gnu.org/software/libc/bugs.html>.\\n"
+"Argumenten die verplicht zijn voor lange opties, zijn ook verplicht voor de overeenkomstige korte opties.\n"
+"\n"
-#: debug/xtrace.sh:125
+#: debug/xtrace.sh:127
msgid "xtrace: unrecognized option \\`$1'\\n"
msgstr "xtrace: onbekende optie '$1'\\n"
-#: debug/xtrace.sh:138
+#: debug/xtrace.sh:140
msgid "No program name given\\n"
msgstr "Geen programmanaam gegeven\\n"
-#: debug/xtrace.sh:146
+#: debug/xtrace.sh:148
#, sh-format
msgid "executable \\`$program' not found\\n"
msgstr "Geen uitvoerbaar bestand '$program' gevonden\\n"
-#: debug/xtrace.sh:150
+#: debug/xtrace.sh:152
#, sh-format
msgid "\\`$program' is no executable\\n"
msgstr "'$program' is niet uitvoerbaar\\n"
@@ -362,7 +367,7 @@ msgstr "ongeldige naamsruimte"
msgid "invalid mode"
msgstr "ongeldige modus"
-#: dlfcn/dlopen.c:64
+#: dlfcn/dlopen.c:65
msgid "invalid mode parameter"
msgstr "ongeldige modusparameter"
@@ -379,7 +384,7 @@ msgstr "onbekend besturingssysteem"
msgid ", OS ABI: %s %d.%d.%d"
msgstr ", OS-ABI: %s %d.%d.%d"
-#: elf/cache.c:134 elf/ldconfig.c:1270
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
msgid "Can't open cache file %s\n"
msgstr "Kan cachebestand %s niet openen\n"
@@ -423,7 +428,7 @@ msgstr "Naamswijziging van %s naar %s is mislukt"
msgid "cannot create scope list"
msgstr "kan lijst voor geldigheidsbereik niet aanmaken"
-#: elf/dl-close.c:724
+#: elf/dl-close.c:725
msgid "shared object not open"
msgstr "gedeeld object is niet open"
@@ -496,11 +501,11 @@ msgstr "kan gedeeld object niet vinden"
msgid "cannot open zero fill device"
msgstr "kan nullenapparaat niet openen"
-#: elf/dl-load.c:979 elf/dl-load.c:2224
+#: elf/dl-load.c:979 elf/dl-load.c:2215
msgid "cannot create shared object descriptor"
msgstr "kan descriptor voor gedeeld object niet aanmaken"
-#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
msgid "cannot read file data"
msgstr "kan bestandsgegevens niet lezen"
@@ -564,63 +569,59 @@ msgstr "kan uitvoerbare stack niet aanzetten zoals gedeeld object vereist"
msgid "cannot close file descriptor"
msgstr "kan bestandsdescriptor niet sluiten"
-#: elf/dl-load.c:1478
-msgid "cannot create searchlist"
-msgstr "kan zoeklijst niet aanmaken"
-
-#: elf/dl-load.c:1656
+#: elf/dl-load.c:1647
msgid "file too short"
msgstr "bestand is te kort"
-#: elf/dl-load.c:1685
+#: elf/dl-load.c:1676
msgid "invalid ELF header"
msgstr "ongeldige ELF-header"
-#: elf/dl-load.c:1697
+#: elf/dl-load.c:1688
msgid "ELF file data encoding not big-endian"
msgstr "gegevenscodering van ELF-bestand is niet big-endian"
-#: elf/dl-load.c:1699
+#: elf/dl-load.c:1690
msgid "ELF file data encoding not little-endian"
msgstr "gegevenscodering van ELF-bestand is niet little-endian"
-#: elf/dl-load.c:1703
+#: elf/dl-load.c:1694
msgid "ELF file version ident does not match current one"
msgstr "ELF-bestands-identversie komt niet overeen met huidige"
-#: elf/dl-load.c:1707
+#: elf/dl-load.c:1698
msgid "ELF file OS ABI invalid"
msgstr "OS-ABI van ELF-bestand is ongeldig"
-#: elf/dl-load.c:1709
+#: elf/dl-load.c:1700
msgid "ELF file ABI version invalid"
msgstr "ABI-versie van ELF-bestand is ongeldig"
-#: elf/dl-load.c:1712
+#: elf/dl-load.c:1703
msgid "internal error"
msgstr "**interne fout**"
-#: elf/dl-load.c:1719
+#: elf/dl-load.c:1710
msgid "ELF file version does not match current one"
msgstr "ELF-bestandsversie komt niet overeen met huidige"
-#: elf/dl-load.c:1727
+#: elf/dl-load.c:1718
msgid "only ET_DYN and ET_EXEC can be loaded"
msgstr "alleen ET_DYN en ET_EXEC kunnen worden geladen"
-#: elf/dl-load.c:1733
+#: elf/dl-load.c:1724
msgid "ELF file's phentsize not the expected size"
msgstr "'phentsize' van ELF-bestand heeft niet de verwachte grootte"
-#: elf/dl-load.c:2240
+#: elf/dl-load.c:2231
msgid "wrong ELF class: ELFCLASS64"
msgstr "verkeerde ELF-klasse: ELFCLASS64"
-#: elf/dl-load.c:2241
+#: elf/dl-load.c:2232
msgid "wrong ELF class: ELFCLASS32"
msgstr "verkeerde ELF-klasse: ELFCLASS32"
-#: elf/dl-load.c:2244
+#: elf/dl-load.c:2235
msgid "cannot open shared object file"
msgstr "kan gedeeld objectbestand niet openen"
@@ -654,11 +655,11 @@ msgstr "geen naamsruimten meer beschikbaar voor dlmopen()"
msgid "invalid target namespace in dlmopen()"
msgstr "ongeldige doelnaamsruimte in dlmopen()"
-#: elf/dl-reloc.c:54
+#: elf/dl-reloc.c:121
msgid "cannot allocate memory in static TLS block"
msgstr "kan geen geheugen reserveren binnen statisch TLS-blok"
-#: elf/dl-reloc.c:196
+#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
msgstr "kan segment niet schrijfbaar maken voor verplaatsing"
@@ -684,11 +685,11 @@ msgstr "kan extra geheugenbescherming niet toepassen na verplaatsing"
msgid "RTLD_NEXT used in code not dynamically loaded"
msgstr "RTLD_NEXT is gebruikt in code die niet dynamisch geladen is"
-#: elf/dl-sysdep.c:469 elf/dl-sysdep.c:481
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
msgid "cannot create capability list"
msgstr "kan privilegeslijst niet aanmaken"
-#: elf/dl-tls.c:825
+#: elf/dl-tls.c:864
msgid "cannot create TLS data structures"
msgstr "kan TLS-gegevensstructuren niet aanmaken"
@@ -696,224 +697,224 @@ msgstr "kan TLS-gegevensstructuren niet aanmaken"
msgid "cannot allocate version reference table"
msgstr "kan geen geheugen reserveren voor tabel met versieverwijzingen"
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:141
msgid "Print cache"
msgstr "inhoud van de cache weergeven"
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:142
msgid "Generate verbose messages"
msgstr "breedsprakige uitvoer"
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:143
msgid "Don't build cache"
msgstr "geen cache opbouwen"
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:144
msgid "Don't generate links"
msgstr "geen koppelingen genereren"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "Change to and use ROOT as root directory"
msgstr "naar deze map gaan en als hoofdmap gebruiken"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "ROOT"
msgstr "BASISMAP"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "CACHE"
msgstr "CACHE-BESTAND"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "Use CACHE as cache file"
msgstr "dit cachebestand gebruiken"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "CONF"
msgstr "CONFIG-BESTAND"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "Use CONF as configuration file"
msgstr "dit configuratiebestand gebruiken"
-#: elf/ldconfig.c:145
+#: elf/ldconfig.c:148
msgid "Only process directories specified on the command line. Don't build cache."
msgstr "alleen de mappen op de opdrachtregel verwerken; geen cache opbouwen"
-#: elf/ldconfig.c:146
+#: elf/ldconfig.c:149
msgid "Manually link individual libraries."
msgstr "individuele bibliotheken handmatig koppelen"
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "FORMAT"
msgstr "INDELING"
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "Format to use: new, old or compat (default)"
msgstr "te gebruiken indeling: 'compat' (standaard), 'new', of 'old'"
-#: elf/ldconfig.c:148
+#: elf/ldconfig.c:151
msgid "Ignore auxiliary cache file"
msgstr "hulpcachebestand negeren"
-#: elf/ldconfig.c:156
+#: elf/ldconfig.c:159
msgid "Configure Dynamic Linker Run Time Bindings."
msgstr ""
" \n"
"Configureren van de dynamische linker."
-#: elf/ldconfig.c:319
+#: elf/ldconfig.c:339
#, c-format
msgid "Path `%s' given more than once"
msgstr "Pad '%s' is meerdere malen opgegeven"
-#: elf/ldconfig.c:359
+#: elf/ldconfig.c:379
#, c-format
msgid "%s is not a known library type"
msgstr "%s is geen bekende bibliotheeksoort"
-#: elf/ldconfig.c:384
+#: elf/ldconfig.c:404
#, c-format
msgid "Can't stat %s"
msgstr "Kan status van %s niet opvragen"
-#: elf/ldconfig.c:458
+#: elf/ldconfig.c:478
#, c-format
msgid "Can't stat %s\n"
msgstr "Kan status van %s niet opvragen\n"
-#: elf/ldconfig.c:468
+#: elf/ldconfig.c:488
#, c-format
msgid "%s is not a symbolic link\n"
msgstr "%s is geen symbolische koppeling\n"
-#: elf/ldconfig.c:487
+#: elf/ldconfig.c:507
#, c-format
msgid "Can't unlink %s"
msgstr "Kan %s niet ontkoppelen"
-#: elf/ldconfig.c:493
+#: elf/ldconfig.c:513
#, c-format
msgid "Can't link %s to %s"
msgstr "Kan %s niet aan %s koppelen"
-#: elf/ldconfig.c:499
+#: elf/ldconfig.c:519
msgid " (changed)\n"
msgstr " (gewijzigd)\n"
-#: elf/ldconfig.c:501
+#: elf/ldconfig.c:521
msgid " (SKIPPED)\n"
msgstr " (OVERGESLAGEN)\n"
-#: elf/ldconfig.c:556
+#: elf/ldconfig.c:576
#, c-format
msgid "Can't find %s"
msgstr "Kan %s niet vinden"
-#: elf/ldconfig.c:572 elf/ldconfig.c:745 elf/ldconfig.c:793 elf/ldconfig.c:827
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
msgid "Cannot lstat %s"
msgstr "Kan status van link %s niet opvragen"
-#: elf/ldconfig.c:579
+#: elf/ldconfig.c:599
#, c-format
msgid "Ignored file %s since it is not a regular file."
msgstr "Bestand %s wordt genegeerd omdat het geen gewoon bestand is."
-#: elf/ldconfig.c:588
+#: elf/ldconfig.c:608
#, c-format
msgid "No link created since soname could not be found for %s"
msgstr ""
"Geen koppeling aangemaakt, want kan van %s de 'soname'\n"
"(de naam van het gedeelde object) niet vinden"
-#: elf/ldconfig.c:671
+#: elf/ldconfig.c:691
#, c-format
msgid "Can't open directory %s"
msgstr "Kan map %s niet openen"
-#: elf/ldconfig.c:759
+#: elf/ldconfig.c:779
#, c-format
msgid "Cannot stat %s"
msgstr "Kan status van %s niet opvragen"
-#: elf/ldconfig.c:814 elf/readlib.c:91
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
msgid "Input file %s not found.\n"
msgstr "Kan invoerbestand %s niet vinden\n"
-#: elf/ldconfig.c:888
+#: elf/ldconfig.c:908
#, c-format
msgid "libc5 library %s in wrong directory"
msgstr "libc5-bibliotheek %s zit in verkeerde map"
-#: elf/ldconfig.c:891
+#: elf/ldconfig.c:911
#, c-format
msgid "libc6 library %s in wrong directory"
msgstr "libc6-bibliotheek %s zit in verkeerde map"
-#: elf/ldconfig.c:894
+#: elf/ldconfig.c:914
#, c-format
msgid "libc4 library %s in wrong directory"
msgstr "libc4-bibliotheek %s zit in verkeerde map"
-#: elf/ldconfig.c:922
+#: elf/ldconfig.c:942
#, c-format
msgid "libraries %s and %s in directory %s have same soname but different type."
msgstr "Bibliotheken %s en %s in map %s hebben dezelfde 'soname' maar een verschillende soort"
-#: elf/ldconfig.c:1031
+#: elf/ldconfig.c:1051
#, c-format
msgid "Can't open configuration file %s"
msgstr "Kan configuratiebestand %s niet openen"
-#: elf/ldconfig.c:1095
+#: elf/ldconfig.c:1115
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
msgstr "%s:%u: onjuiste syntax in 'hwcap'-regel"
-#: elf/ldconfig.c:1101
+#: elf/ldconfig.c:1121
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
msgstr "%s:%u: 'hwcap'-index %lu overschrijdt maximum %u"
-#: elf/ldconfig.c:1108 elf/ldconfig.c:1116
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
msgstr "%s:%u: 'hwcap'-index %lu is al gedefinieerd als %s"
-#: elf/ldconfig.c:1119
+#: elf/ldconfig.c:1139
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
msgstr "%s:%u: dubbele 'hwcap' %lu %s"
-#: elf/ldconfig.c:1141
+#: elf/ldconfig.c:1161
#, c-format
msgid "need absolute file name for configuration file when using -r"
msgstr "bij gebruik van '-r' is voor het configuratiebestand een absoluut pad vereist"
-#: elf/ldconfig.c:1148 locale/programs/xmalloc.c:70 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
msgid "memory exhausted"
msgstr "onvoldoende geheugen beschikbaar"
-#: elf/ldconfig.c:1178
+#: elf/ldconfig.c:1198
#, c-format
msgid "%s:%u: cannot read directory %s"
msgstr "%s:%u: kan map %s niet lezen"
-#: elf/ldconfig.c:1223
+#: elf/ldconfig.c:1242
#, c-format
msgid "relative path `%s' used to build cache"
msgstr "relatief pad '%s' wordt gebruikt bij opbouwen van cache"
-#: elf/ldconfig.c:1249
+#: elf/ldconfig.c:1268
#, c-format
msgid "Can't chdir to /"
msgstr "Kan niet naar hoofdmap ('/') gaan"
-#: elf/ldconfig.c:1291
+#: elf/ldconfig.c:1310
#, c-format
msgid "Can't open cache file directory %s\n"
msgstr "Kan map %s voor cachebestand niet openen\n"
@@ -931,62 +932,55 @@ msgid ""
" -r, --function-relocs process data and function relocations\n"
" -u, --unused print unused direct dependencies\n"
" -v, --verbose print all information\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Gebruik: ldd [OPTIE]... BESTAND...\n"
-"\n"
+" --help deze hulptekst tonen\n"
+" --version programmaversie tonen\n"
" -d, --data-relocs dataverplaatsingen verwerken\n"
" -r, --function-relocs data- en functieverplaatsingen verwerken\n"
" -u, --unused ongebruikte directe afhankelijkheden tonen\n"
" -v, --verbose breedsprakige uitvoer\n"
-"\n"
-" --version programmaversie tonen\n"
-" --help deze hulptekst tonen\n"
-"\n"
-"Voor het rapporteren van fouten, zie:\n"
-" <http://www.gnu.org/software/libc/bugs.html>."
-#: elf/ldd.bash.in:80
+#: elf/ldd.bash.in:82
msgid "ldd: option \\`$1' is ambiguous"
msgstr "ldd: optie '$1' is niet eenduidig"
-#: elf/ldd.bash.in:87
+#: elf/ldd.bash.in:89
msgid "unrecognized option"
msgstr "onbekende optie"
-#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
msgid "Try \\`ldd --help' for more information."
msgstr "Typ 'ldd --help' voor meer informatie."
-#: elf/ldd.bash.in:125
+#: elf/ldd.bash.in:127
msgid "missing file arguments"
msgstr "ontbrekende bestandsargumenten"
#. TRANS No such file or directory. This is a ``file doesn't exist'' error
#. TRANS for ordinary files that are referenced in contexts where they are
#. TRANS expected to already exist.
-#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
msgstr "Bestand of map bestaat niet"
-#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
msgid "not regular file"
msgstr "niet een normaal bestand"
-#: elf/ldd.bash.in:154
+#: elf/ldd.bash.in:156
msgid "warning: you do not have execution permission for"
msgstr "waarschuwing: u hebt geen uitvoeringsrechten voor"
-#: elf/ldd.bash.in:183
+#: elf/ldd.bash.in:185
msgid "\tnot a dynamic executable"
msgstr "\tgeen dynamisch uitvoerbaar bestand"
-#: elf/ldd.bash.in:191
+#: elf/ldd.bash.in:193
msgid "exited with unknown exit code"
msgstr "eindigde met een onbekende afsluitwaarde"
-#: elf/ldd.bash.in:196
+#: elf/ldd.bash.in:198
msgid "error: you do not have read permission for"
msgstr "fout: u hebt geen leesrechten voor"
@@ -1045,6 +1039,45 @@ msgstr "Kan bestand %s niet geheel in het geheugen plaatsen\n"
msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
msgstr "%s is geen ELF-bestand -- het heeft de verkeerde magische bytes aan het begin\n"
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+"Gebruik: sln src dest|bestand\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s: kan bestand niet openen: %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "Geen doel op regel %d\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s: bestemming kan geen map zijn\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr "%s: de oude bestemming verwijderen is mislukt\n"
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s: ongeldige bestemming: %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "Ongeldige koppeling van \"%s\" naar \"%s\": %s\n"
+
#: elf/sprof.c:77
msgid "Output selection:"
msgstr "Uitvoerselectie:"
@@ -1062,132 +1095,132 @@ msgid "generate call graph"
msgstr "een aanroepengrafiek genereren"
#: elf/sprof.c:89
-msgid ""
-"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-" \n"
-"Gegevens van prestatie-analyse inlezen en afbeelden.\vVoor het rapporteren van fouten, zie:\n"
-" <http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Read and display shared object profiling data."
+msgstr "Profielgegevens gedeeld object lezen en weergeven."
#: elf/sprof.c:94
msgid "SHOBJ [PROFDATA]"
msgstr "GEDEELD_OBJECT [ANALYSEGEGEVENS]"
-#: elf/sprof.c:400
+#: elf/sprof.c:420
#, c-format
msgid "failed to load shared object `%s'"
msgstr "laden van gedeeld object '%s' is mislukt"
# ###dubbel
-#: elf/sprof.c:409
+#: elf/sprof.c:429
#, c-format
msgid "cannot create internal descriptors"
msgstr "kan interne descriptor niet aanmaken"
-#: elf/sprof.c:528
+#: elf/sprof.c:548
#, c-format
msgid "Reopening shared object `%s' failed"
msgstr "heropenen van gedeeld object '%s' is mislukt"
-#: elf/sprof.c:535 elf/sprof.c:629
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
msgid "reading of section headers failed"
msgstr "lezen van sectiekoppen is mislukt"
-#: elf/sprof.c:543 elf/sprof.c:637
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
msgid "reading of section header string table failed"
msgstr "lezen van tekenreekstabel in sectiekop is mislukt"
-#: elf/sprof.c:569
+#: elf/sprof.c:589
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
msgstr "*** Kan naam van debuginfobestand niet lezen: %m\n"
-#: elf/sprof.c:589
+#: elf/sprof.c:609
#, c-format
msgid "cannot determine file name"
msgstr "kan bestandsnaam niet bepalen"
-#: elf/sprof.c:622
+#: elf/sprof.c:642
#, c-format
msgid "reading of ELF header failed"
msgstr "lezen van ELF-header is mislukt"
-#: elf/sprof.c:658
+#: elf/sprof.c:678
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
msgstr "*** Het bestand '%s' is gestript: gedetailleerde analyse is niet mogelijk\n"
-#: elf/sprof.c:688
+#: elf/sprof.c:708
#, c-format
msgid "failed to load symbol data"
msgstr "laden van symboolgegevens is mislukt"
-#: elf/sprof.c:755
+#: elf/sprof.c:775
#, c-format
msgid "cannot load profiling data"
msgstr "kan analysegegevens niet laden"
-#: elf/sprof.c:764
+#: elf/sprof.c:784
#, c-format
msgid "while stat'ing profiling data file"
msgstr "bij opvragen van status van analysegegevensbestand"
-#: elf/sprof.c:772
+#: elf/sprof.c:792
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
msgstr "analysegegevensbestand '%s' komt niet overeen met gedeeld object '%s'"
-#: elf/sprof.c:783
+#: elf/sprof.c:803
#, c-format
msgid "failed to mmap the profiling data file"
msgstr "kan analysegegevensbestand niet geheel in het geheugen plaatsen"
-#: elf/sprof.c:791
+#: elf/sprof.c:811
#, c-format
msgid "error while closing the profiling data file"
msgstr "fout bij sluiten van analysegegevensbestand"
# ###dubbel
-#: elf/sprof.c:800 elf/sprof.c:870
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
msgid "cannot create internal descriptor"
msgstr "kan interne descriptor niet aanmaken"
-#: elf/sprof.c:846
+#: elf/sprof.c:866
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
msgstr "'%s' is geen correct bestand met analysegegevens voor '%s'"
-#: elf/sprof.c:1027 elf/sprof.c:1085
+#: elf/sprof.c:1047 elf/sprof.c:1105
#, c-format
msgid "cannot allocate symbol data"
msgstr "kan geen geheugen reserveren voor symboolgegevens"
-#: iconv/iconv_charmap.c:176 iconv/iconv_prog.c:316
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "kan uitvoerbestand niet openen"
+
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
msgstr "fout bij sluiten van invoer '%s'"
-#: iconv/iconv_charmap.c:450
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
msgstr "ongeldige invoerreeks op positie %Zd"
-#: iconv/iconv_charmap.c:469 iconv/iconv_prog.c:526
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
#, c-format
msgid "incomplete character or shift sequence at end of buffer"
msgstr "onvolledige teken- of schuifreeks aan einde van buffer"
-#: iconv/iconv_charmap.c:514 iconv/iconv_charmap.c:550 iconv/iconv_prog.c:569
-#: iconv/iconv_prog.c:605
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
#, c-format
msgid "error while reading the input"
msgstr "fout bij lezen van de invoer"
-#: iconv/iconv_charmap.c:532 iconv/iconv_prog.c:587
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
#, c-format
msgid "unable to allocate buffer for input"
msgstr "kan geen geheugen reserveren voor invoerbuffer"
@@ -1242,63 +1275,58 @@ msgstr ""
msgid "[FILE...]"
msgstr "[BESTAND...]"
-#: iconv/iconv_prog.c:200
-#, c-format
-msgid "cannot open output file"
-msgstr "kan uitvoerbestand niet openen"
-
-#: iconv/iconv_prog.c:242
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
msgstr "conversie vanuit '%s' en conversie naar '%s' worden niet ondersteund"
-#: iconv/iconv_prog.c:247
+#: iconv/iconv_prog.c:239
#, c-format
msgid "conversion from `%s' is not supported"
msgstr "conversie vanuit '%s' wordt niet ondersteund"
-#: iconv/iconv_prog.c:254
+#: iconv/iconv_prog.c:246
#, c-format
msgid "conversion to `%s' is not supported"
msgstr "conversie naar '%s' wordt niet ondersteund"
-#: iconv/iconv_prog.c:258
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
msgstr "conversie van '%s' naar '%s' wordt niet ondersteund"
-#: iconv/iconv_prog.c:268
+#: iconv/iconv_prog.c:260
#, c-format
msgid "failed to start conversion processing"
msgstr "beginnen van conversieproces is mislukt"
-#: iconv/iconv_prog.c:362
+#: iconv/iconv_prog.c:358
#, c-format
msgid "error while closing output file"
msgstr "fout bij sluiten van uitvoerbestand"
-#: iconv/iconv_prog.c:471 iconv/iconv_prog.c:497
+#: iconv/iconv_prog.c:456
#, c-format
msgid "conversion stopped due to problem in writing the output"
msgstr "conversie is gestopt vanwege probleem bij schrijven van de uitvoer"
-#: iconv/iconv_prog.c:522
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
msgstr "ongeldige invoerreeks op positie %ld"
-#: iconv/iconv_prog.c:530
+#: iconv/iconv_prog.c:541
#, c-format
msgid "internal error (illegal descriptor)"
msgstr "**interne fout**: ongeldige descriptor"
-#: iconv/iconv_prog.c:533
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
msgstr "onbekende iconv()-fout %d"
# ###XXX ->contains
-#: iconv/iconv_prog.c:779
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -1536,7 +1564,7 @@ msgstr "te veel bytes in tekencodering"
msgid "no symbolic name given for end of range"
msgstr "geen symbolische naam gegeven voor einde-van-bereik"
-#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
#: locale/programs/ld-identification.c:452
@@ -1563,8 +1591,8 @@ msgstr "de waarde van %s moet een geheel getal zijn"
msgid "%s: error in state machine"
msgstr "%s: **interne fout** in toestandsmachine"
-#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
-#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4115
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
#: locale/programs/ld-identification.c:468
#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
@@ -1586,7 +1614,7 @@ msgstr "onbekend teken '%s'"
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
msgstr "het aantal bytes in de bytereeks is voor begin en einde van het bereik niet hetzelfde: %d tegenover %d"
-#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3047
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
msgstr "ongeldige namen voor tekenbereik"
@@ -1608,7 +1636,7 @@ msgstr "bovengrens in bereik is kleiner dan ondergrens"
msgid "resulting bytes for range not representable."
msgstr "resulterende bytes voor bereik zijn niet te representeren"
-#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
@@ -1618,10 +1646,10 @@ msgstr "resulterende bytes voor bereik zijn niet te representeren"
msgid "No definition for %s category found"
msgstr "Geen definitie gevonden voor %s-categorie"
-#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
-#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
-#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
-#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
@@ -1634,46 +1662,46 @@ msgstr "Geen definitie gevonden voor %s-categorie"
msgid "%s: field `%s' not defined"
msgstr "%s: het veld '%s' is niet gedefinieerd"
-#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
-#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
msgstr "%s: het veld '%s' mag niet leeg zijn"
-#: locale/programs/ld-address.c:168
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
msgstr "%s: ongeldige stuurcode '%%%c' in het veld '%s'"
-#: locale/programs/ld-address.c:219
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
msgstr "%s: terminologiecode '%s' is niet gedefinieerd"
-#: locale/programs/ld-address.c:244
+#: locale/programs/ld-address.c:246
#, c-format
msgid "%s: field `%s' must not be defined"
msgstr "%s: het veld '%s' mag niet gedefinieerd zijn"
-#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
msgstr "%s: taalafkorting '%s' is niet gedefinieerd"
-#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
-#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
msgstr "%s: waarde van '%s' komt niet overeen met waarde van '%s'"
-#: locale/programs/ld-address.c:312
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
msgstr "%s: numerieke landcode '%d' is ongeldig"
-#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
-#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
#: locale/programs/ld-identification.c:364
#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
@@ -1685,7 +1713,7 @@ msgstr "%s: numerieke landcode '%d' is ongeldig"
msgid "%s: field `%s' declared more than once"
msgstr "%s: het veld '%s' is meerdere keren gedeclareerd"
-#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
@@ -1695,7 +1723,7 @@ msgstr "%s: het veld '%s' is meerdere keren gedeclareerd"
msgid "%s: unknown character in field `%s'"
msgstr "%s: onbekend teken in het veld '%s'"
-#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
@@ -1705,10 +1733,10 @@ msgstr "%s: onbekend teken in het veld '%s'"
msgid "%s: incomplete `END' line"
msgstr "%s: onvolledige 'END'-regel"
-#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:542
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
-#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4105
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
#: locale/programs/ld-identification.c:459
@@ -1851,7 +1879,7 @@ msgstr "geen definitie van 'UNDEFINED'"
msgid "too many errors; giving up"
msgstr "te veel fouten -- gestopt"
-#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4044
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
#, c-format
msgid "%s: nested conditionals not supported"
msgstr "%s: geneste voorwaardelijke constructies worden niet ondersteund"
@@ -1871,27 +1899,27 @@ msgstr "%s: dubbele definitie van '%s'"
msgid "%s: duplicate declaration of section `%s'"
msgstr "%s: dubbele declaratie van sectie '%s'"
-#: locale/programs/ld-collate.c:3027
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
msgstr "%s: onbekend teken in naam van sorteringssymbool"
-#: locale/programs/ld-collate.c:3159
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
msgstr "%s: onbekend teken in naam van equivalentiedefinitie"
-#: locale/programs/ld-collate.c:3172
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
msgstr "%s: onbekend teken in waarde van equivalentiedefinitie"
-#: locale/programs/ld-collate.c:3182
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
msgstr "%s: onbekend symbool '%s' in equivalentiedefinitie"
-#: locale/programs/ld-collate.c:3191
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
msgstr "fout bij toevoegen van equivalent sorteringssymbool"
@@ -1971,12 +1999,12 @@ msgstr "%s: lege categoriebeschrijving is niet toegestaan"
msgid "%s: missing `reorder-sections-end' keyword"
msgstr "%s: ontbrekend sleutelwoord 'reorder-sections-end'"
-#: locale/programs/ld-collate.c:4077
+#: locale/programs/ld-collate.c:4079
#, c-format
msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
msgstr "%s: '%s' zonder bijpassende 'ifdef' of 'ifndef'"
-#: locale/programs/ld-collate.c:4095
+#: locale/programs/ld-collate.c:4097
#, c-format
msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
msgstr "%s: 'endif' zonder bijpassende 'ifdef' of 'ifndef'"
@@ -2300,7 +2328,7 @@ msgstr "%s: rommel aan het einde van de begindatum in tekenreeks %Zd in het veld
msgid "%s: starting date is invalid in string %Zd in `era' field"
msgstr "%s: begindatum is ongeldig in tekenreeks %Zd in het veld 'era'"
-#: locale/programs/ld-time.c:407
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
msgstr "%s: ongeldige einddatum in tekenreeks %Zd in het veld 'era'"
@@ -2310,11 +2338,6 @@ msgstr "%s: ongeldige einddatum in tekenreeks %Zd in het veld 'era'"
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
msgstr "%s: rommel aan het einde van de einddatum in tekenreeks %Zd in het veld 'era'"
-#: locale/programs/ld-time.c:435
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s: einddatum is ongeldig in tekenreeks %Zd in het veld 'era'"
-
#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
@@ -2417,15 +2440,10 @@ msgid "Print more information"
msgstr "uitgebreide uitvoer produceren"
#: locale/programs/locale.c:87
-msgid ""
-"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-" \n"
-"Informatie over taalregio-instellingen weergeven.\vVoor het rapporteren van fouten, zie:\n"
-" <http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get locale-specific information."
+msgstr "Informatie over taalregio ophalen."
-#: locale/programs/locale.c:92
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
@@ -2433,27 +2451,27 @@ msgstr ""
"NAAM\n"
"[-a|-m]"
-#: locale/programs/locale.c:193
+#: locale/programs/locale.c:194
#, c-format
msgid "Cannot set LC_CTYPE to default locale"
msgstr "Kan LC_TYPE niet op de standaard-taalregio instellen"
-#: locale/programs/locale.c:195
+#: locale/programs/locale.c:196
#, c-format
msgid "Cannot set LC_MESSAGES to default locale"
msgstr "Kan LC_MESSAGES niet op de standaard-taalregio instellen"
-#: locale/programs/locale.c:208
+#: locale/programs/locale.c:209
#, c-format
msgid "Cannot set LC_COLLATE to default locale"
msgstr "Kan LC_COLLATE niet op de standaard-taalregio instellen"
-#: locale/programs/locale.c:224
+#: locale/programs/locale.c:225
#, c-format
msgid "Cannot set LC_ALL to default locale"
msgstr "Kan LC_ALL niet op de standaard-taalregio instellen"
-#: locale/programs/locale.c:500
+#: locale/programs/locale.c:518
#, c-format
msgid "while preparing output"
msgstr "tijdens voorbereiden van uitvoer"
@@ -2740,8 +2758,8 @@ msgid "cannot create output file `%s' for category `%s'"
msgstr "kan uitvoerbestand '%s' niet aanmaken voor categorie '%s'"
#: locale/programs/locfile.c:782
-msgid "expect string argument for `copy'"
-msgstr "argument van 'copy' dient een tekenreeks te zijn"
+msgid "expecting string argument for `copy'"
+msgstr "argument van `copy' dient een tekenreeks te zijn"
#: locale/programs/locfile.c:786
msgid "locale name should consist only of portable characters"
@@ -2864,11 +2882,8 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Gebruik: memusage [OPTIE]... PROGRAMMA [PROGRAMMA-OPTIE]...\n"
-"\n"
"Het geheugengebruik van PROGRAMMA bijhouden.\n"
"\n"
" -n,--progname=NAAM te observeren programma\n"
@@ -2890,13 +2905,11 @@ msgstr ""
" -x,--x-size=GETAL breedte van de grafiek in pixels\n"
" -y,--y-size=GETAL hoogte van de grafiek in pixels\n"
"\n"
-"Een argument dat verplicht of optioneel is voor een lange optie, is dat\n"
+"Een argument dat verplicht is voor een lange optie, is dat\n"
"ook voor de overeenkomstige korte optie.\n"
"\n"
-"Voor het rapporteren van gebreken in dit programma, zie:\n"
-" <http://www.gnu.org/software/libc/bugs.html>."
-#: malloc/memusage.sh:99
+#: malloc/memusage.sh:101
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
@@ -2908,51 +2921,51 @@ msgstr ""
" [--total] [--title=TEKST] [--x-size=GETAL] [--y-size=GETAL]\n"
" PROGRAMMA [PROGRAMMA-OPTIE]..."
-#: malloc/memusage.sh:191
+#: malloc/memusage.sh:193
msgid "memusage: option \\`${1##*=}' is ambiguous"
msgstr "memusage: optie '${1##*=}' is niet eenduidig"
-#: malloc/memusage.sh:200
+#: malloc/memusage.sh:202
msgid "memusage: unrecognized option \\`$1'"
msgstr "memusage: onbekende optie '$1'"
-#: malloc/memusage.sh:213
+#: malloc/memusage.sh:215
msgid "No program name given"
msgstr "Geen programmanaam gegeven"
-#: malloc/memusagestat.c:54
+#: malloc/memusagestat.c:57
msgid "Name output file"
msgstr "naam van uitvoerbestand"
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:58
msgid "Title string used in output graphic"
msgstr "tekenreeks gebruikt als titel van uitvoergrafiek"
-#: malloc/memusagestat.c:56
+#: malloc/memusagestat.c:59
msgid "Generate output linear to time (default is linear to number of function calls)"
msgstr "de uitvoer lineair in de tijd maken (standaard is lineair in het aantal functie-aanroepen)"
-#: malloc/memusagestat.c:58
+#: malloc/memusagestat.c:61
msgid "Also draw graph for total memory consumption"
msgstr "ook een grafiek maken van totale geheugengebruik"
-#: malloc/memusagestat.c:59
+#: malloc/memusagestat.c:62
msgid "Make output graphic VALUE pixels wide"
msgstr "uitvoergrafiek dit aantal beeldpunten breed maken"
-#: malloc/memusagestat.c:60
+#: malloc/memusagestat.c:63
msgid "Make output graphic VALUE pixels high"
msgstr "uitvoergrafiek dit aantal beeldpunten hoog maken"
-#: malloc/memusagestat.c:65
+#: malloc/memusagestat.c:68
msgid "Generate graphic from memory profiling data"
msgstr "Een grafiek maken van geheugenanalyse-gegevens."
-#: malloc/memusagestat.c:68
+#: malloc/memusagestat.c:71
msgid "DATAFILE [OUTFILE]"
msgstr "GEGEVENSBESTAND [UITVOERBESTAND]"
-#: misc/error.c:118 timezone/zic.c:417
+#: misc/error.c:118
msgid "Unknown system error"
msgstr "Onbekende systeemfout"
@@ -2960,7 +2973,7 @@ msgstr "Onbekende systeemfout"
msgid "unable to free arguments"
msgstr "kan geheugen van argumenten niet vrijgeven"
-#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr "Gelukt"
@@ -3002,7 +3015,7 @@ msgid "First/next chain broken"
msgstr "De 'eerste/volgende'-ketting is gebroken"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
msgstr "Toegang geweigerd"
@@ -3505,435 +3518,474 @@ msgstr "netname2user: LOCAL-item voor %s in map %s is niet uniek"
msgid "netname2user: should not have uid 0"
msgstr "netname2user: UID mag niet 0 zijn"
-#: nis/ypclnt.c:825
+#: nis/ypclnt.c:836
msgid "Request arguments bad"
msgstr "Verzoeksargumenten zijn ongeldig"
-#: nis/ypclnt.c:828
+#: nis/ypclnt.c:839
msgid "RPC failure on NIS operation"
msgstr "RPC-aanroep is mislukt bij NIS-bewerking"
-#: nis/ypclnt.c:831
+#: nis/ypclnt.c:842
msgid "Can't bind to server which serves this domain"
msgstr "Kan niet binden aan de server die dit domein aanbiedt"
-#: nis/ypclnt.c:834
+#: nis/ypclnt.c:845
msgid "No such map in server's domain"
msgstr "Afbeelding bestaat niet in domein van server"
-#: nis/ypclnt.c:837
+#: nis/ypclnt.c:848
msgid "No such key in map"
msgstr "Sleutel bestaat niet in afbeelding"
-#: nis/ypclnt.c:840
+#: nis/ypclnt.c:851
msgid "Internal NIS error"
msgstr "**Interne NIS-fout**"
-#: nis/ypclnt.c:843
+#: nis/ypclnt.c:854
msgid "Local resource allocation failure"
msgstr "Fout bij reserveren van lokale hulpbron"
-#: nis/ypclnt.c:846
+#: nis/ypclnt.c:857
msgid "No more records in map database"
msgstr "Geen records meer in afbeeldingengegevensbank"
-#: nis/ypclnt.c:849
+#: nis/ypclnt.c:860
msgid "Can't communicate with portmapper"
msgstr "Kan niet communiceren met poortvertaler"
-#: nis/ypclnt.c:852
+#: nis/ypclnt.c:863
msgid "Can't communicate with ypbind"
msgstr "Kan niet communiceren met ypbind()"
-#: nis/ypclnt.c:855
+#: nis/ypclnt.c:866
msgid "Can't communicate with ypserv"
msgstr "Kan niet communiceren met ypserv()"
-#: nis/ypclnt.c:858
+#: nis/ypclnt.c:869
msgid "Local domain name not set"
msgstr "Lokale domeinnaam is niet ingesteld"
-#: nis/ypclnt.c:861
+#: nis/ypclnt.c:872
msgid "NIS map database is bad"
msgstr "NIS-afbeeldingengegevensbank is beschadigd"
-#: nis/ypclnt.c:864
+#: nis/ypclnt.c:875
msgid "NIS client/server version mismatch - can't supply service"
msgstr "versies van NIS-client en -server passen niet bij elkaar -- kan dienst niet aanbieden"
-#: nis/ypclnt.c:870
+#: nis/ypclnt.c:881
msgid "Database is busy"
msgstr "Gegevensbank is bezig"
-#: nis/ypclnt.c:873
+#: nis/ypclnt.c:884
msgid "Unknown NIS error code"
msgstr "Onbekende NIS-foutcode"
-#: nis/ypclnt.c:913
+#: nis/ypclnt.c:924
msgid "Internal ypbind error"
msgstr "**Interne ypbind()-fout**"
-#: nis/ypclnt.c:916
+#: nis/ypclnt.c:927
msgid "Domain not bound"
msgstr "Domein is niet gebonden"
-#: nis/ypclnt.c:919
+#: nis/ypclnt.c:930
msgid "System resource allocation failure"
msgstr "Fout bij reserveren van systeemhulpbron"
-#: nis/ypclnt.c:922
+#: nis/ypclnt.c:933
msgid "Unknown ypbind error"
msgstr "Onbekende ypbind()-fout"
-#: nis/ypclnt.c:963
+#: nis/ypclnt.c:974
msgid "yp_update: cannot convert host to netname\n"
msgstr "yp_update: kan host niet converteren naar netnaam\n"
-#: nis/ypclnt.c:981
+#: nis/ypclnt.c:992
msgid "yp_update: cannot get server address\n"
msgstr "yp_update: kan server-adres niet opvragen\n"
-#: nscd/aicache.c:77 nscd/hstcache.c:468
+#: nscd/aicache.c:82 nscd/hstcache.c:481
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
msgstr "Item \"%s\" niet gevonden in hosts-cache!"
-#: nscd/aicache.c:79 nscd/hstcache.c:470
+#: nscd/aicache.c:84 nscd/hstcache.c:483
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
msgstr "Herladen van \"%s\" in hosts-cache!"
-#: nscd/cache.c:146
+#: nscd/cache.c:150
#, c-format
msgid "add new entry \"%s\" of type %s for %s to cache%s"
msgstr "toevoegen van nieuw item \"%s\" van type %s voor %s aan cache%s"
-#: nscd/cache.c:148
+#: nscd/cache.c:152
msgid " (first)"
msgstr " (eerste)"
-#: nscd/cache.c:256 nscd/connections.c:810
+#: nscd/cache.c:286 nscd/connections.c:866
#, c-format
msgid "cannot stat() file `%s': %s"
msgstr "kan status van bestand '%s' niet opvragen: %s"
-#: nscd/cache.c:285
+#: nscd/cache.c:328
#, c-format
msgid "pruning %s cache; time %ld"
msgstr "snoeien van cache %s; tijd %ld"
-#: nscd/cache.c:312
+#: nscd/cache.c:357
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
msgstr "overwegen van %s-item \"%s\", tijdslimiet %<PRIu64>"
-#: nscd/connections.c:521 nscd/connections.c:533 nscd/connections.c:545
-#: nscd/connections.c:564
+#: nscd/connections.c:570
#, c-format
msgid "invalid persistent database file \"%s\": %s"
msgstr "ongeldig persistent gegevensbestand '%s': %s"
-#: nscd/connections.c:535
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr "niet-geïnitialiseerde header"
+
+#: nscd/connections.c:583
msgid "header size does not match"
msgstr "grootte van de kop klopt niet"
-#: nscd/connections.c:547
+#: nscd/connections.c:593
msgid "file size does not match"
msgstr "bestandsgrootte klopt niet"
-#: nscd/connections.c:566
+#: nscd/connections.c:610
msgid "verification failed"
msgstr "gegevenscontrole is mislukt"
-#: nscd/connections.c:580
+#: nscd/connections.c:624
#, c-format
msgid "suggested size of table for database %s larger than the persistent database's table"
msgstr "de aangeraden tabelgrootte voor gegevensbestand '%s' is groter dan de tabelgrootte van het persistente gegevensbestand"
-#: nscd/connections.c:591 nscd/connections.c:673
+#: nscd/connections.c:635 nscd/connections.c:720
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
msgstr "kan geen alleen-lezen-descriptor voor '%s' aanmaken; geen mmap()"
-#: nscd/connections.c:652
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr "kan '%s' niet openen"
+
+#: nscd/connections.c:699
#, c-format
msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
msgstr "gegevensbestand voor %s is beschadigd of wordt al gebruikt; verwijder %s zo nodig handmatig en herstart"
-#: nscd/connections.c:659
+#: nscd/connections.c:706
#, c-format
msgid "cannot create %s; no persistent database used"
msgstr "kan %s niet aanmaken; geen persistent gegevensbestand gebruikt"
-#: nscd/connections.c:662
+#: nscd/connections.c:709
#, c-format
msgid "cannot create %s; no sharing possible"
msgstr "kan %s niet aanmaken; bestandsdeling is niet mogelijk"
-#: nscd/connections.c:733
+#: nscd/connections.c:780
#, c-format
msgid "cannot write to database file %s: %s"
msgstr "kan niet naar gegevensbestand %s schrijven: %s"
-#: nscd/connections.c:772
+#: nscd/connections.c:819
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
msgstr "kan socket niet op sluiten-bij-exec instellen: %s -- paranoia-modus is uitgeschakeld"
-#: nscd/connections.c:823
+#: nscd/connections.c:902
#, c-format
msgid "cannot open socket: %s"
msgstr "kan socket niet openen: %s"
-#: nscd/connections.c:840
+#: nscd/connections.c:922
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
msgstr "kan socket niet omschakelen naar niet-blokkerende modus: %s"
-#: nscd/connections.c:848
+#: nscd/connections.c:930
#, c-format
msgid "cannot set socket to close on exec: %s"
msgstr "kan socket niet op sluiten-bij-exec instellen: %s"
-#: nscd/connections.c:859
+#: nscd/connections.c:943
#, c-format
msgid "cannot enable socket to accept connections: %s"
msgstr "kan socket geen verbindingen laten accepteren: %s"
-#: nscd/connections.c:955
+#: nscd/connections.c:1043
#, c-format
msgid "provide access to FD %d, for %s"
msgstr "toegang verleend aan bestandsdescriptor %d, voor %s"
-#: nscd/connections.c:967
+#: nscd/connections.c:1055
#, c-format
msgid "cannot handle old request version %d; current version is %d"
msgstr "kan verzoek voor oude versie %d niet behandelen; huidige versie is %d"
-#: nscd/connections.c:1009 nscd/connections.c:1062
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr "verzoek van %ld is niet behandeld omdat er rechten ontbreken"
+
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr "verzoek van '%s' [%ld] is niet behandeld omdat er rechten ontbreken"
+
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr "verzoek is niet behandeld omdat er rechten ontbreken"
+
+#: nscd/connections.c:1125 nscd/connections.c:1178
#, c-format
msgid "cannot write result: %s"
msgstr "kan resultaat niet schrijven: %s"
-#: nscd/connections.c:1145
+#: nscd/connections.c:1261
#, c-format
msgid "error getting caller's id: %s"
msgstr "fout bij opvragen van ID van aanroeper: %s"
-#: nscd/connections.c:1204
+#: nscd/connections.c:1320
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "kan '/proc/self/cmdline' niet openen: %s -- paranoia-modus is uitgeschakeld"
-#: nscd/connections.c:1218
+#: nscd/connections.c:1334
#, c-format
msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "kan '/proc/self/cmdline' niet openen: %s -- paranoia-modus wordt uitgeschakeld"
-#: nscd/connections.c:1258
+#: nscd/connections.c:1374
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
msgstr "kan niet overschakelen naar oude UID: %s -- paranoia-modus is uitgeschakeld"
-#: nscd/connections.c:1268
+#: nscd/connections.c:1384
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
msgstr "kan niet overschakelen naar oude GID: %s -- paranoia-modus is uitgeschakeld"
-#: nscd/connections.c:1281
+#: nscd/connections.c:1397
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
msgstr "kan niet overschakelen naar oude werkmap: %s -- paranoia-modus is uitgeschakeld"
-#: nscd/connections.c:1310
+#: nscd/connections.c:1429
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
msgstr "her-exec() is mislukt: %s -- paranoia-modus is uitgeschakeld"
-#: nscd/connections.c:1319
+#: nscd/connections.c:1438
#, c-format
msgid "cannot change current working directory to \"/\": %s"
msgstr "kan huidige werkmap niet overschakelen naar '/': %s"
-#: nscd/connections.c:1437
+#: nscd/connections.c:1644
#, c-format
msgid "short read while reading request: %s"
msgstr "te weinig gelezen bij lezen van verzoek: %s"
-#: nscd/connections.c:1468
+#: nscd/connections.c:1677
#, c-format
msgid "key length in request too long: %d"
msgstr "sleutellengte in verzoek is te lang: %d"
-#: nscd/connections.c:1481
+#: nscd/connections.c:1690
#, c-format
msgid "short read while reading request key: %s"
msgstr "te weinig gelezen bij lezen van verzoeksleutel: %s"
-#: nscd/connections.c:1490
+#: nscd/connections.c:1699
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
msgstr "handle_request(): verzoek ontvangen (versie = %d) van PID %ld"
-#: nscd/connections.c:1495
+#: nscd/connections.c:1704
#, c-format
msgid "handle_request: request received (Version = %d)"
msgstr "handle_request(): verzoek ontvangen (versie = %d)"
-#: nscd/connections.c:1856
+#: nscd/connections.c:1903 nscd/connections.c:2101
#, c-format
-msgid "could only start %d threads; terminating"
-msgstr "kan slechts %d threads starten -- gestopt"
+msgid "disabled inotify after read error %d"
+msgstr "inotify uitgeschakeld na leesfout %d"
+
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr "kan conditionele variabele niet initialiseren"
+
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr "kan opschoon-thread niet starten; gestopt"
-#: nscd/connections.c:1904 nscd/connections.c:1905 nscd/connections.c:1922
-#: nscd/connections.c:1931 nscd/connections.c:1949 nscd/connections.c:1960
-#: nscd/connections.c:1971
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr "kan geen worker-thread starten; gestopt"
+
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
#, c-format
msgid "Failed to run nscd as user '%s'"
msgstr "uitvoeren van nscd als gebruiker '%s' is mislukt"
-#: nscd/connections.c:1923
+#: nscd/connections.c:2322
#, c-format
msgid "initial getgrouplist failed"
msgstr "eerste getgrouplist() is mislukt"
-#: nscd/connections.c:1932
+#: nscd/connections.c:2331
#, c-format
msgid "getgrouplist failed"
msgstr "getgrouplist() is mislukt"
-#: nscd/connections.c:1950
+#: nscd/connections.c:2349
#, c-format
msgid "setgroups failed"
msgstr "setgroups() is mislukt"
-#: nscd/grpcache.c:402 nscd/hstcache.c:418 nscd/initgrcache.c:412
-#: nscd/pwdcache.c:397 nscd/servicescache.c:343
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
#, c-format
msgid "short write in %s: %s"
msgstr "te weinig geschreven in %s: %s"
-#: nscd/grpcache.c:445 nscd/initgrcache.c:78
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
msgstr "Item \"%s\" niet gevonden in groeps-cache!"
-#: nscd/grpcache.c:447 nscd/initgrcache.c:80
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
msgstr "Herladen van \"%s\" in groeps-cache!"
-#: nscd/grpcache.c:524
+#: nscd/grpcache.c:517
#, c-format
msgid "Invalid numeric gid \"%s\"!"
msgstr "Ongeldig numeriek GID '%s'!"
-#: nscd/mem.c:383
+#: nscd/mem.c:457
#, c-format
msgid "freed %zu bytes in %s cache"
msgstr "%zu bytes in cache %s vrijgegeven"
-#: nscd/mem.c:512
+#: nscd/mem.c:594
#, c-format
msgid "no more memory for database '%s'"
msgstr "onvoldoende geheugen beschikbaar voor gegevensbank '%s'"
-#: nscd/nscd.c:98
+#: nscd/nscd.c:101
msgid "Read configuration data from NAME"
msgstr "configuratiegegevens lezen uit dit bestand"
-#: nscd/nscd.c:100
+#: nscd/nscd.c:103
msgid "Do not fork and display messages on the current tty"
msgstr "niet naar de achtergrond gaan; berichten op huidige TTY weergeven"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "NUMBER"
msgstr "GETAL"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "Start NUMBER threads"
msgstr "dit aantal threads starten"
-#: nscd/nscd.c:102
+#: nscd/nscd.c:105
msgid "Shut the server down"
msgstr "de server afsluiten"
-#: nscd/nscd.c:103
-msgid "Print current configuration statistic"
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
msgstr "huidige configuratiestatistieken weergeven"
-#: nscd/nscd.c:104
+#: nscd/nscd.c:107
msgid "TABLE"
msgstr "TABEL"
-#: nscd/nscd.c:105
+#: nscd/nscd.c:108
msgid "Invalidate the specified cache"
msgstr "genoemde cache ongeldig maken"
-#: nscd/nscd.c:106
+#: nscd/nscd.c:109
msgid "TABLE,yes"
msgstr "TABEL,ja"
-#: nscd/nscd.c:107
+#: nscd/nscd.c:110
msgid "Use separate cache for each user"
msgstr "aparte cache gebruiken voor elke gebruiker"
-#: nscd/nscd.c:112
+#: nscd/nscd.c:115
msgid "Name Service Cache Daemon."
msgstr ""
" \n"
"Daemon voor namen-cache."
-#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
#, c-format
msgid "wrong number of arguments"
msgstr "Verkeerd aantal argumenten"
-#: nscd/nscd.c:154
+#: nscd/nscd.c:157
#, c-format
msgid "failure while reading configuration file; this is fatal"
msgstr "kan configuratiebestand niet lezen -- server wordt niet gestart"
-#: nscd/nscd.c:163
+#: nscd/nscd.c:166
#, c-format
msgid "already running"
msgstr "wordt al uitgevoerd"
-#: nscd/nscd.c:178 nscd/nscd.c:233
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
msgid "cannot fork"
msgstr "kan geen nieuw proces starten"
-#: nscd/nscd.c:241
+#: nscd/nscd.c:244
#, c-format
msgid "cannot change current working directory to \"/\""
msgstr "kan '/' niet de huidige werkmap maken"
-#: nscd/nscd.c:249
+#: nscd/nscd.c:252
msgid "Could not create log file"
msgstr "Kan geen logbestand aanmaken"
-#: nscd/nscd.c:302 nscd/nscd.c:327 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
msgid "Only root is allowed to use this option!"
msgstr "Alleen root mag deze optie gebruiken!"
-#: nscd/nscd.c:364 nscd/nscd_stat.c:191
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr "'%s' is geen bekende database"
+
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
msgid "write incomplete"
msgstr "ongeldigmakingsopdracht is onvolledig geschreven"
-#: nscd/nscd.c:375
+#: nscd/nscd.c:381
#, c-format
msgid "cannot read invalidate ACK"
msgstr "geen ongeldigheidsbevestiging ontvangen"
-#: nscd/nscd.c:381
+#: nscd/nscd.c:387
#, c-format
msgid "invalidation failed"
msgstr "het ongeldigmaken is mislukt"
-#: nscd/nscd.c:391
+#: nscd/nscd.c:397
#, c-format
msgid "secure services not implemented anymore"
msgstr "beveiligde services worden niet langer ondersteund"
@@ -3948,37 +4000,37 @@ msgstr "gegevensbank '%s' wordt niet ondersteund"
msgid "Parse error: %s"
msgstr "Ontledingsfout: %s"
-#: nscd/nscd_conf.c:193
+#: nscd/nscd_conf.c:194
#, c-format
msgid "Must specify user name for server-user option"
msgstr "De optie 'server-user' vereist een gebruikersnaam als argument"
-#: nscd/nscd_conf.c:200
+#: nscd/nscd_conf.c:201
#, c-format
msgid "Must specify user name for stat-user option"
msgstr "De optie 'stat-user' vereist een gebruikersnaam als argument"
-#: nscd/nscd_conf.c:244
+#: nscd/nscd_conf.c:245
#, c-format
msgid "invalid value for 'reload-count': %u"
msgstr "Ongeldige waarde voor 'reload-count': %u"
-#: nscd/nscd_conf.c:259
+#: nscd/nscd_conf.c:260
#, c-format
msgid "Must specify value for restart-interval option"
msgstr "De optie 'restart-interval' vereist een waarde als argument"
-#: nscd/nscd_conf.c:273
+#: nscd/nscd_conf.c:274
#, c-format
msgid "Unknown option: %s %s %s"
msgstr "Onbekende optie: %s %s %s"
-#: nscd/nscd_conf.c:286
+#: nscd/nscd_conf.c:287
#, c-format
msgid "cannot get current working directory: %s; disabling paranoia mode"
msgstr "Kan huidige werkmap niet bepalen: %s -- paranoia-modus is uitgeschakeld"
-#: nscd/nscd_conf.c:306
+#: nscd/nscd_conf.c:307
#, c-format
msgid "maximum file size for %s database too small"
msgstr "Maximum bestandsgrootte voor %s-gegevensbank is te klein"
@@ -4108,17 +4160,17 @@ msgstr ""
"%15<PRIuMAX> aantal mislukte geheugenreserveringen\n"
"%15s /etc/%s controleren op wijzigingen\n"
-#: nscd/pwdcache.c:440
+#: nscd/pwdcache.c:443
#, c-format
msgid "Haven't found \"%s\" in password cache!"
msgstr "Item \"%s\" niet gevonden in wachtwoorden-cache!"
-#: nscd/pwdcache.c:442
+#: nscd/pwdcache.c:445
#, c-format
msgid "Reloading \"%s\" in password cache!"
msgstr "Herladen van \"%s\" in wachtwoorden-cache!"
-#: nscd/pwdcache.c:520
+#: nscd/pwdcache.c:523
#, c-format
msgid "Invalid numeric uid \"%s\"!"
msgstr "Ongeldig numeriek UID '%s'!"
@@ -4194,7 +4246,11 @@ msgstr "Kan geen context voor nscd verkrijgen"
msgid "Error getting sid from context"
msgstr "Kan uit de context geen SID verkrijgen"
-#: nscd/selinux.c:399
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr "ondersteuning compileertijd voor databasebeleid ontbreekt"
+
+#: nscd/selinux.c:407
#, c-format
msgid ""
"\n"
@@ -4240,29 +4296,24 @@ msgid "Service configuration to be used"
msgstr "te gebruiken configuratie"
#: nss/getent.c:62
-msgid ""
-"Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-" \n"
-"Items uit een gegevensbank weergeven.\vVoor het rapporteren van fouten, zie:\n"
-" <http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get entries from administrative database."
+msgstr "Haal items uit administratieve database."
-#: nss/getent.c:145 nss/getent.c:394
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
msgid "Enumeration not supported on %s\n"
msgstr "Opsomming wordt niet ondersteund op %s\n"
-#: nss/getent.c:782
+#: nss/getent.c:794
#, c-format
msgid "Unknown database name"
msgstr "Onbekende gegevensbanknaam"
-#: nss/getent.c:808
+#: nss/getent.c:820
msgid "Supported databases:\n"
msgstr "Ondersteunde gegevensbanken:\n"
-#: nss/getent.c:868
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
msgstr "Onbekende gegevensbank: %s\n"
@@ -4336,151 +4387,165 @@ msgstr "Gebruik: %s [-v specificatie] naam_van_variabele [padnaam]\n"
msgid " %s -a [pathname]\n"
msgstr " %s -a [padnaam]\n"
-#: posix/getconf.c:1067
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
+"Gebruik: getconf [-v SPEC] VAR\n"
+" of: getconf [-v SPEC] PAD_VAR PAD\n"
+"\n"
+"De configuratiewaarde voor variabele VAR ophalen, of variabele PAD_VAR\n"
+"voor pad PAD. Als SPEC opgegeven wordt, gelden de waarden voor de\n"
+"compilatieomgeving.\n"
+"\n"
+
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
msgstr "onbekende specificatie '%s'"
-#: posix/getconf.c:1095
+#: posix/getconf.c:1109
#, c-format
msgid "Couldn't execute %s"
msgstr "Kan %s niet uitvoeren"
-#: posix/getconf.c:1135 posix/getconf.c:1151
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
msgstr "ongedefinieerd"
-#: posix/getconf.c:1173
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
msgstr "Onbekende variabele '%s'"
-#: posix/getopt.c:571 posix/getopt.c:587
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
-msgid "%s: option `%s' is ambiguous\n"
+msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: optie '%s' is niet eenduidig\n"
-#: posix/getopt.c:620 posix/getopt.c:624
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: optie '--%s' staat geen argument toe\n"
-#: posix/getopt.c:633 posix/getopt.c:638
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: optie '%c%s' staat geen argument toe\n"
-#: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
-#: posix/getopt.c:1035
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
-msgid "%s: option `%s' requires an argument\n"
+msgid "%s: option '%s' requires an argument\n"
msgstr "%s: optie '%s' vereist een argument\n"
-#: posix/getopt.c:738 posix/getopt.c:741
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: onbekende optie '--%s'\n"
-#: posix/getopt.c:749 posix/getopt.c:752
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: onbekende optie '%c%s'\n"
-#: posix/getopt.c:804 posix/getopt.c:807
-#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr "%s: ongeldige optie -- %c\n"
-
-#: posix/getopt.c:813 posix/getopt.c:816
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
-msgid "%s: invalid option -- %c\n"
+msgid "%s: invalid option -- '%c'\n"
msgstr "%s: ongeldige optie -- %c\n"
-#: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
-#: posix/getopt.c:1106
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: optie vereist een argument -- %c\n"
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: optie vereist een argument -- '%c'\n"
-#: posix/getopt.c:937 posix/getopt.c:953
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: optie '-W %s' is niet eenduidig\n"
-#: posix/getopt.c:977 posix/getopt.c:995
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: optie '-W %s' staat geen argument toe\n"
-#: posix/regcomp.c:135
+#: posix/regcomp.c:136
msgid "No match"
msgstr "Geen overeenkomsten"
-#: posix/regcomp.c:138
+#: posix/regcomp.c:139
msgid "Invalid regular expression"
msgstr "Ongeldige reguliere expressie"
-#: posix/regcomp.c:141
+#: posix/regcomp.c:142
msgid "Invalid collation character"
msgstr "Ongeldig samengesteld teken"
-#: posix/regcomp.c:144
+#: posix/regcomp.c:145
msgid "Invalid character class name"
msgstr "Ongeldige tekenklassenaam"
-#: posix/regcomp.c:147
+#: posix/regcomp.c:148
msgid "Trailing backslash"
msgstr "Backslash aan het eind"
-#: posix/regcomp.c:150
+#: posix/regcomp.c:151
msgid "Invalid back reference"
msgstr "Ongeldige terugverwijzing"
-#: posix/regcomp.c:153
+#: posix/regcomp.c:154
msgid "Unmatched [ or [^"
msgstr "Ongepaarde [ of [^"
-#: posix/regcomp.c:156
+#: posix/regcomp.c:157
msgid "Unmatched ( or \\("
msgstr "Ongepaarde ( of \\("
-#: posix/regcomp.c:159
+#: posix/regcomp.c:160
msgid "Unmatched \\{"
msgstr "Ongepaarde \\{"
-#: posix/regcomp.c:162
+#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
msgstr "Ongeldige inhoud van \\{\\}"
-#: posix/regcomp.c:165
+#: posix/regcomp.c:166
msgid "Invalid range end"
msgstr "Ongeldig bereikeinde"
-#: posix/regcomp.c:168
+#: posix/regcomp.c:169
msgid "Memory exhausted"
msgstr "Onvoldoende geheugen beschikbaar"
-#: posix/regcomp.c:171
+#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
msgstr "Ongeldige voorafgaande reguliere expressie"
-#: posix/regcomp.c:174
+#: posix/regcomp.c:175
msgid "Premature end of regular expression"
msgstr "Voortijdig einde van reguliere expressie"
-#: posix/regcomp.c:177
+#: posix/regcomp.c:178
msgid "Regular expression too big"
msgstr "Reguliere expressie is te groot"
-#: posix/regcomp.c:180
+#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
msgstr "Ongepaarde ) of \\)"
-#: posix/regcomp.c:660
+#: posix/regcomp.c:681
msgid "No previous regular expression"
msgstr "Geen eerdere reguliere expressie"
-#: posix/wordexp.c:1798
+#: posix/wordexp.c:1832
msgid "parameter null or not set"
msgstr "parameter is null of niet ingesteld"
@@ -4564,133 +4629,138 @@ msgstr "Realtime-signaal %d"
msgid "Unknown signal %d"
msgstr "Onbekend signaal %d"
-#: sunrpc/auth_unix.c:114
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create(): onvoldoende geheugen\n"
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "onvoldoende geheugen beschikbaar\n"
#: sunrpc/auth_unix.c:350
msgid "auth_unix.c: Fatal marshalling problem"
msgstr "auth_unix.c: Fataal marshallingprobleem "
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; lage versie = %lu, hoge versie = %lu"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s: %s; lage versie = %lu, hoge versie = %lu"
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr "; reden = "
+#: sunrpc/clnt_perr.c:112
+#, c-format
+msgid "%s: %s; why = %s\n"
+msgstr "%s: %s; reden = %s\n"
-#: sunrpc/clnt_perr.c:132
+#: sunrpc/clnt_perr.c:114
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(onbekende authenticatiefout -- %d)"
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s: %s; reden = (onbekende authenticatiefout - %d)\n"
-#: sunrpc/clnt_perr.c:172
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
msgstr "RPC: Gelukt"
-#: sunrpc/clnt_perr.c:175
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
msgstr "RPC: Kan argumenten niet coderen"
-#: sunrpc/clnt_perr.c:179
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
msgstr "RPC: Kan resultaat niet decoderen"
-#: sunrpc/clnt_perr.c:183
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
msgstr "RPC: Kan niet verzenden"
-#: sunrpc/clnt_perr.c:187
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
msgstr "RPC: Kan niet ontvangen"
-#: sunrpc/clnt_perr.c:191
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
msgstr "RPC: Duurde te lang"
-#: sunrpc/clnt_perr.c:195
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
msgstr "RPC: Incompatibele versies van RPC"
-#: sunrpc/clnt_perr.c:199
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
msgstr "RPC: Authenticatiefout"
-#: sunrpc/clnt_perr.c:203
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
msgstr "RPC: Programma is onbeschikbaar"
-#: sunrpc/clnt_perr.c:207
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
msgstr "RPC: Programma's of versies passen niet bij elkaar"
-#: sunrpc/clnt_perr.c:211
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
msgstr "RPC: Procedure is onbeschikbaar"
-#: sunrpc/clnt_perr.c:215
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
msgstr "RPC: Server kan argumenten niet decoderen"
-#: sunrpc/clnt_perr.c:219
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
msgstr "RPC: Fout in ginds systeem"
-#: sunrpc/clnt_perr.c:223
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
msgstr "RPC: Onbekende host"
-#: sunrpc/clnt_perr.c:227
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
msgstr "RPC: Onbekend protocol"
-#: sunrpc/clnt_perr.c:231
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
msgstr "RPC: Mislukking in poortvertaler"
-#: sunrpc/clnt_perr.c:235
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
msgstr "RPC: Programma is niet geregistreerd"
-#: sunrpc/clnt_perr.c:239
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
msgstr "RPC: Mislukt (ongespecificeerde fout)"
-#: sunrpc/clnt_perr.c:280
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
msgstr "RPC: (onbekende foutcode)"
-#: sunrpc/clnt_perr.c:342
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
msgstr "Authenticatie is gelukt"
-#: sunrpc/clnt_perr.c:345
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
msgstr "Ongeldige client-identificatiegegevens"
-#: sunrpc/clnt_perr.c:349
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
msgstr "Server verwierp identificatiegegevens"
-#: sunrpc/clnt_perr.c:353
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
msgstr "Ongeldige client-verificatie"
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
msgstr "Server verwierp verificatie"
-#: sunrpc/clnt_perr.c:361
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
msgstr "Client-identificatiegegevens zijn te zwak"
-#: sunrpc/clnt_perr.c:365
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
msgstr "Ongeldige server-verificatie"
-#: sunrpc/clnt_perr.c:369
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
msgstr "Mislukt (ongespecificeerde fout)"
@@ -4698,18 +4768,6 @@ msgstr "Mislukt (ongespecificeerde fout)"
msgid "clnt_raw.c: fatal header serialization error"
msgstr "clnt_raw.c: fatale serialisatiefout van de kop"
-#: sunrpc/clnt_tcp.c:131
-msgid "clnttcp_create: out of memory\n"
-msgstr "clnttcp_create(): onvoldoende geheugen\n"
-
-#: sunrpc/clnt_udp.c:139
-msgid "clntudp_create: out of memory\n"
-msgstr "clntudp_create(): onvoldoende geheugen\n"
-
-#: sunrpc/clnt_unix.c:128
-msgid "clntunix_create: out of memory\n"
-msgstr "clntunix_create(): onvoldoende geheugen\n"
-
#: sunrpc/pm_getmaps.c:83
msgid "pmap_getmaps.c: rpc problem"
msgstr "pmap_getmaps.c: RPC-probleem"
@@ -4738,123 +4796,246 @@ msgstr "Probleem bij polsen na broadcast"
msgid "Cannot receive reply to broadcast"
msgstr "Kan geen antwoord op broadcast ontvangen"
-#: sunrpc/rpc_main.c:286
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr "%s: uitvoer zou %s overschrijven\n"
-#: sunrpc/rpc_main.c:293
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr "%s: kan %s niet openen: %m\n"
-#: sunrpc/rpc_main.c:305
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
msgstr "%s: tijdens schrijven van uitvoer naar %s: %m"
-#: sunrpc/rpc_main.c:340
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
msgstr "kan C-voorverwerker niet vinden: %s \n"
-#: sunrpc/rpc_main.c:348
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
msgstr "kan geen enkele C-voorverwerker (CPP) vinden\n"
-#: sunrpc/rpc_main.c:417
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
msgstr "%s: C-voorverwerking is mislukt met signaal %d\n"
-#: sunrpc/rpc_main.c:420
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
msgstr "%s: C-voorverwerking is mislukt met afsluitwaarde %d\n"
-#: sunrpc/rpc_main.c:460
+#: sunrpc/rpc_main.c:464
#, c-format
msgid "illegal nettype: `%s'\n"
msgstr "ongeldige netsoort: '%s'\n"
-#: sunrpc/rpc_main.c:1122
+#: sunrpc/rpc_main.c:1130
#, c-format
msgid "rpcgen: too many defines\n"
msgstr "rpcgen: te veel definities\n"
-#: sunrpc/rpc_main.c:1134
+#: sunrpc/rpc_main.c:1142
#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr "rpcgen: fout in codering van argumentenlijst\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1167
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
msgstr "Bestand '%s' bestaat al en wordt mogelijk overschreven.\n"
-#: sunrpc/rpc_main.c:1212
+#: sunrpc/rpc_main.c:1220
#, c-format
msgid "Cannot specify more than one input file!\n"
msgstr "Meer dan één invoerbestand is niet mogelijk\n"
-#: sunrpc/rpc_main.c:1382
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
msgstr "Deze implementatie ondersteunt geen 'newstyle'- of 'MT-safe'-code\n"
-#: sunrpc/rpc_main.c:1391
+#: sunrpc/rpc_main.c:1403
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
msgstr "Optie 'netid' gaat niet samen met standaardoptie 'inetd'\n"
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
msgstr "Optie 'netid' is niet mogelijk zonder TIRPC\n"
-#: sunrpc/rpc_main.c:1410
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
msgstr "Tabelopties gaan niet samen met 'newstyle'\n"
-#: sunrpc/rpc_main.c:1429
+#: sunrpc/rpc_main.c:1441
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
msgstr "Bij sjabloonaanmaakopties is een invoerbestand vereist\n"
-#: sunrpc/rpc_main.c:1434
+#: sunrpc/rpc_main.c:1446
#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr "Meer dan één bestandsaanmaakoptie is niet mogelijk\n"
-#: sunrpc/rpc_main.c:1443
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
msgstr "Gebruik: %s invoerbestand\n"
-#: sunrpc/rpc_main.c:1444
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
msgstr ""
" %s [-abkCLNTM] [-Dnaam[=waarde]] [-i grootte]\n"
" [-I [-K seconden]] [-Y pad] invoerbestand\n"
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
msgstr ""
" %s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm]\n"
" [-o uitvoerbestand] [invoerbestand]\n"
-#: sunrpc/rpc_main.c:1448
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
msgstr " %s [-s netsoort]* [-o uitvoerbestand] [invoerbestand]\n"
-#: sunrpc/rpc_main.c:1449
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
msgstr " %s [-n netid]* [-o uitvoerbestand] [invoerbestand]\n"
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr "opties:\n"
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr "-a\t\talle bestanden genereren, inclusief voorbeelden\n"
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr "-b\t\tterugwaardse compatibiliteitsmodus (maakt code voor SunOS 4.1 aan)\n"
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr "-c\t\tXDR-routines genereren\n"
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr "-C\t\tANSI C-modus\n"
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr "-Dname[=waarde]\tdefineert een symbool (gelijk aan #define)\n"
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr "-h\t\tgenereert headerbestand\n"
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr "-i grootte\t\tbij overschrijden grootte wordt inline-code aangemaakt\n"
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr "-I\t\tgenereert code voor inetd-ondersteuning in server (voor SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr "-K seconden\tserver stopt na K seconden van inactiviteit\n"
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr "-l\t\tgenereert client-side stubs\n"
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr "-L\t\tserverfouten worden weggeschreven naar syslog\n"
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr "-m\t\tgenereert server-side stubs\n"
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr "-M\t\tgenereert MT-safe-code\n"
+
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr "-n netid\tgenereert servercode die benoemde netid ondersteund\n"
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr "-N\t\tondersteunt meervoudige argumenten en call-by-value\n"
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr "-o uitvoer\tnaam van het uitvoerbestand\n"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr "-s nettype\tgenereert servercode dat benoemde nettype ondersteund\n"
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr "-Sc\t\tgenereert voorbeeld-clientcode die remote-procedures ondersteunt\n"
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr "-Ss\t\tgenereert voorbeeld-servercode die remote-procedures definieert\n"
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr "-Sm \t\tgenereert makefilesjabloon \n"
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr "-t\t\tgenereert RPC-dispatchtabel\n"
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr "-T\t\tgenereert code om RPC-dispatchtabellen te ondersteunen\n"
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr "-Y pad\t\tmapnaam om C-voorverwerker (CPP) te vinden\n"
+
#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
msgstr "een constante of een naam werd verwacht"
@@ -4875,79 +5056,79 @@ msgstr "lege tekenreeks"
msgid "preprocessor error"
msgstr "voorverwerkingsfout"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
msgstr "programma %lu is niet beschikbaar\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
msgstr "programma %lu versie %lu is niet beschikbaar\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr "programma %lu versie %lu is gereed en wacht\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
msgstr "rpcinfo: kan geen contact maken met poortvertaler"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
msgstr "Er zijn geen programma's van elders geregistreerd.\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
msgstr " program.vers.protocl.poort\n"
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
msgstr "(onbekend)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
msgstr "rpcinfo: broadcast is mislukt: %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
msgstr "Sorry, u bent niet root.\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
msgstr "rpcinfo: Kan registratie voor programma %s versie %s niet verwijderen\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
msgstr "Gebruik: rpcinfo [-n poortnummer] -u host programmanummer [versienummer]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr " rpcinfo [-n poortnummer] -t host programmanummer [versienummer]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
msgstr " rpcinfo -p [ host ]\n"
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
msgstr " rpcinfo -b programmanummer versienummer\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
msgstr " rpcinfo -d programmanummer versienummer\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr "rpcinfo: %s is een onbekende dienst\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
msgstr "rpcinfo: %s is een onbekende host\n"
@@ -4996,14 +5177,6 @@ msgstr "svc_tcp.c: probleem bij aanmaken van TCP-socket"
msgid "svc_tcp.c - cannot getsockname or listen"
msgstr "svc_tcp.c: getsockname() en listen() zijn mislukt"
-#: sunrpc/svc_tcp.c:179
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create(): onvoldoende geheugen\n"
-
-#: sunrpc/svc_tcp.c:218
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp.c: makefd_xprt(): onvoldoende geheugen\n"
-
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
msgstr "svcudp_create(): probleem bij aanmaken van socket"
@@ -5012,39 +5185,35 @@ msgstr "svcudp_create(): probleem bij aanmaken van socket"
msgid "svcudp_create - cannot getsockname"
msgstr "svcudp_create(): getsockname() is mislukt"
-#: sunrpc/svc_udp.c:152
-msgid "svcudp_create: out of memory\n"
-msgstr "svcudp_create(): onvoldoende geheugen\n"
-
-#: sunrpc/svc_udp.c:174
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
msgstr "svcudp_create(): 'xp_pad' is te klein voor 'IP_PKTINFO'\n"
-#: sunrpc/svc_udp.c:474
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
msgstr "enablecache(): buffering staat al aan"
-#: sunrpc/svc_udp.c:480
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
msgstr "enablecache(): kan geen geheugen voor cache reserveren"
-#: sunrpc/svc_udp.c:489
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
msgstr "enablecache(): kan geen geheugen voor cachegegevens reserveren"
-#: sunrpc/svc_udp.c:497
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
msgstr "enablecache(): kan geen geheugen voor cache-fifo reserveren"
-#: sunrpc/svc_udp.c:532
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
msgstr "cache_set(): kan het herbruikbare item niet vinden"
-#: sunrpc/svc_udp.c:543
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
msgstr "cache_set(): kan geen geheugen reserveren voor nieuw item"
-#: sunrpc/svc_udp.c:550
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
msgstr "cache_set(): kan geen geheugen reserveren voor nieuw RPC-buffer"
@@ -5056,34 +5225,6 @@ msgstr "svc_unix.c: probleem bij aanmaken van AF_UNIX-socket"
msgid "svc_unix.c - cannot getsockname or listen"
msgstr "svc_unix.c: getsockname() en listen() zijn mislukt"
-#: sunrpc/svc_unix.c:176
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create(): onvoldoende geheugen\n"
-
-#: sunrpc/svc_unix.c:215
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix.c: makefd_xprt(): onvoldoende geheugen\n"
-
-#: sunrpc/xdr.c:566
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes(): onvoldoende geheugen\n"
-
-#: sunrpc/xdr.c:718
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string(): onvoldoende geheugen\n"
-
-#: sunrpc/xdr_array.c:106
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array(): onvoldoende geheugen\n"
-
-#: sunrpc/xdr_rec.c:156
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create(): onvoldoende geheugen\n"
-
-#: sunrpc/xdr_ref.c:86
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_reference(): onvoldoende geheugen\n"
-
#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
msgid "Hangup"
msgstr "Ophangen"
@@ -6145,78 +6286,87 @@ msgstr "%s is voor onbekende machine %d.\n"
msgid "makecontext: does not know how to handle more than 8 arguments\n"
msgstr "makecontext(): kan niet meer dan 8 argumenten aan\n"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
+"Gebruik: lddlibc4 BESTAND\n"
+"\n"
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
msgid "cannot open `%s'"
msgstr "kan '%s' niet openen"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
msgid "cannot read header from `%s'"
msgstr "kan kop van '%s' niet lezen"
-#: timezone/zdump.c:211
+#: timezone/zdump.c:210
msgid "lacks alphabetic at start"
msgstr "begint niet met een letter"
-#: timezone/zdump.c:213
+#: timezone/zdump.c:212
msgid "has fewer than 3 alphabetics"
msgstr "heeft minder dan drie letters"
-#: timezone/zdump.c:215
+#: timezone/zdump.c:214
msgid "has more than 6 alphabetics"
msgstr "heeft meer dan zes letters"
-#: timezone/zdump.c:223
+#: timezone/zdump.c:222
msgid "differs from POSIX standard"
msgstr "verschilt van de POSIX-standaard"
-#: timezone/zdump.c:229
+#: timezone/zdump.c:228
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
msgstr "%s: Waarschuwing: zone \"%s\", afkorting \"%s\" %s\n"
-#: timezone/zdump.c:280
+#: timezone/zdump.c:279
#, c-format
msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
msgstr ""
"Gebruik: %s [-v] [-c [ondergrens,]bovengrens] zonenaam...\n"
" %s --version\n"
-#: timezone/zdump.c:297
+#: timezone/zdump.c:296
#, c-format
msgid "%s: wild -c argument %s\n"
msgstr "%s: extra argument %s bij optie -c\n"
-#: timezone/zdump.c:388
+#: timezone/zdump.c:387
msgid "Error writing to standard output"
msgstr "Fout tijdens schrijven naar standaarduitvoer"
-#: timezone/zdump.c:411
+#: timezone/zdump.c:410
#, c-format
msgid "%s: use of -v on system with floating time_t other than float or double\n"
msgstr "%s: Optie -v is gebruikt op een systeem zonder een adequaat drijvende-kommatype voor 'time_t'\n"
-#: timezone/zic.c:392
+#: timezone/zic.c:388
#, c-format
msgid "%s: Memory exhausted: %s\n"
msgstr "%s: Onvoldoende geheugen beschikbaar: %s\n"
-#: timezone/zic.c:451
+#: timezone/zic.c:434
#, c-format
msgid "\"%s\", line %d: %s"
msgstr "\"%s\", regel %d: %s"
-#: timezone/zic.c:454
+#: timezone/zic.c:437
#, c-format
msgid " (rule from \"%s\", line %d)"
msgstr " (voorschrift uit \"%s\", regel %d)"
-#: timezone/zic.c:466
+#: timezone/zic.c:449
msgid "warning: "
msgstr "waarschuwing: "
-#: timezone/zic.c:476
+#: timezone/zic.c:459
#, c-format
msgid ""
"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
@@ -6226,335 +6376,410 @@ msgstr ""
" [-L schrikkelsecondenbestand] [-y jaarsoortopdracht] [bestand...]\n"
" %s --version\n"
-#: timezone/zic.c:511
+#: timezone/zic.c:494
msgid "wild compilation-time specification of zic_t"
msgstr "compilatiefout: type 'zic_t' heeft te weinig bits"
-#: timezone/zic.c:528
+#: timezone/zic.c:511
#, c-format
msgid "%s: More than one -d option specified\n"
msgstr "%s: Optie -d is meermaals gegeven\n"
-#: timezone/zic.c:538
+#: timezone/zic.c:521
#, c-format
msgid "%s: More than one -l option specified\n"
msgstr "%s: Optie -l is meermaals gegeven\n"
-#: timezone/zic.c:548
+#: timezone/zic.c:531
#, c-format
msgid "%s: More than one -p option specified\n"
msgstr "%s: Optie -p is meermaals gegeven\n"
-#: timezone/zic.c:558
+#: timezone/zic.c:541
#, c-format
msgid "%s: More than one -y option specified\n"
msgstr "%s: Optie -y is meermaals gegeven\n"
-#: timezone/zic.c:568
+#: timezone/zic.c:551
#, c-format
msgid "%s: More than one -L option specified\n"
msgstr "%s: Optie -L is meermaals gegeven\n"
-#: timezone/zic.c:617
+#: timezone/zic.c:600
msgid "link to link"
msgstr "koppeling naar een andere koppeling"
-#: timezone/zic.c:682
+#: timezone/zic.c:665
msgid "hard link failed, symbolic link used"
msgstr "harde koppeling is mislukt; symbolische wordt gebruikt"
-#: timezone/zic.c:690
+#: timezone/zic.c:673
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
msgstr "%s: Kan geen koppeling maken van %s naar %s: %s\n"
-#: timezone/zic.c:762 timezone/zic.c:764
+#: timezone/zic.c:745 timezone/zic.c:747
msgid "same rule name in multiple files"
msgstr "dezelfde voorschriftnaam in meerdere bestanden"
-#: timezone/zic.c:805
+#: timezone/zic.c:788
msgid "unruly zone"
msgstr "onhandelbare zone"
-#: timezone/zic.c:812
+#: timezone/zic.c:795
#, c-format
msgid "%s in ruleless zone"
msgstr "%s in voorschriftloze zone"
-#: timezone/zic.c:833
+#: timezone/zic.c:816
msgid "standard input"
msgstr "standaardinvoer"
-#: timezone/zic.c:838
+#: timezone/zic.c:821
#, c-format
msgid "%s: Can't open %s: %s\n"
msgstr "%s: Kan %s niet openen: %s\n"
-#: timezone/zic.c:849
+#: timezone/zic.c:832
msgid "line too long"
msgstr "regel is te lang"
-#: timezone/zic.c:869
+#: timezone/zic.c:852
msgid "input line of unknown type"
msgstr "invoerregel is van onbekende soort"
-#: timezone/zic.c:885
+#: timezone/zic.c:868
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
msgstr "%s: Schrikkelregel in niet-schrikkelbestand %s\n"
-#: timezone/zic.c:892 timezone/zic.c:1329 timezone/zic.c:1351
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
msgstr "%s: **interne fout** -- ongeldige regelcode %d\n"
-#: timezone/zic.c:900
+#: timezone/zic.c:883
#, c-format
msgid "%s: Error reading %s\n"
msgstr "%s: Fout bij lezen van %s\n"
-#: timezone/zic.c:907
+#: timezone/zic.c:890
#, c-format
msgid "%s: Error closing %s: %s\n"
msgstr "%s: Fout bij sluiten van %s: %s\n"
-#: timezone/zic.c:912
+#: timezone/zic.c:895
msgid "expected continuation line not found"
msgstr "verwachte regelcontinuering is niet gevonden"
-#: timezone/zic.c:956 timezone/zic.c:2489 timezone/zic.c:2508
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
msgid "time overflow"
msgstr "tijdsoverloop"
-#: timezone/zic.c:960
+#: timezone/zic.c:943
msgid "24:00 not handled by pre-1998 versions of zic"
msgstr "versies van 'zic' van voor 1998 kunnen '24:00' niet aan"
-#: timezone/zic.c:963
+#: timezone/zic.c:946
msgid "values over 24 hours not handled by pre-2007 versions of zic"
msgstr "versies van 'zic' van voor 2007 kunnen uren boven de 24 niet aan"
-#: timezone/zic.c:976
+#: timezone/zic.c:959
msgid "wrong number of fields on Rule line"
msgstr "verkeerd aantal velden op 'Rule'-regel"
-#: timezone/zic.c:980
+#: timezone/zic.c:963
msgid "nameless rule"
msgstr "naamloos voorschrift"
-#: timezone/zic.c:985
+#: timezone/zic.c:968
msgid "invalid saved time"
msgstr "ongeldige opgeslagen tijd"
-#: timezone/zic.c:1006
+#: timezone/zic.c:989
msgid "wrong number of fields on Zone line"
msgstr "verkeerd aantal velden op 'Zone'-regel"
-#: timezone/zic.c:1012
+#: timezone/zic.c:995
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
msgstr "De regel \"Zone %s\" en optie -l sluiten elkaar uit"
-#: timezone/zic.c:1020
+#: timezone/zic.c:1003
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
msgstr "De regel \"Zone %s\" en optie -p sluiten elkaar uit"
-#: timezone/zic.c:1032
+#: timezone/zic.c:1015
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
msgstr "dubbele zonenaam '%s' (in bestand %s, regel %d)"
-#: timezone/zic.c:1048
+#: timezone/zic.c:1031
msgid "wrong number of fields on Zone continuation line"
msgstr "verkeerd aantal velden op 'Zone'-continueringsregel"
-#: timezone/zic.c:1088
+#: timezone/zic.c:1071
msgid "invalid UTC offset"
msgstr "ongeldige positie ten opzichte van UTC"
-#: timezone/zic.c:1091
+#: timezone/zic.c:1074
msgid "invalid abbreviation format"
msgstr "ongeldige opmaak voor afkorting"
-#: timezone/zic.c:1120
+#: timezone/zic.c:1103
msgid "Zone continuation line end time is not after end time of previous line"
msgstr "'Zone'-continueringsregel: eindtijd ligt niet na eindtijd van vorige regel"
-#: timezone/zic.c:1148
+#: timezone/zic.c:1131
msgid "wrong number of fields on Leap line"
msgstr "verkeerd aantal velden op 'Leap'-regel"
-#: timezone/zic.c:1157
+#: timezone/zic.c:1140
msgid "invalid leaping year"
msgstr "ongeldig schrikkeljaar"
-#: timezone/zic.c:1177 timezone/zic.c:1283
+#: timezone/zic.c:1160 timezone/zic.c:1266
msgid "invalid month name"
msgstr "ongeldige maandnaam"
-#: timezone/zic.c:1190 timezone/zic.c:1396 timezone/zic.c:1410
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
msgid "invalid day of month"
msgstr "ongeldige dag van maand"
-#: timezone/zic.c:1195
+#: timezone/zic.c:1178
msgid "time before zero"
msgstr "tijdswaarde is kleiner dan nul"
-#: timezone/zic.c:1199
+#: timezone/zic.c:1182
msgid "time too small"
msgstr "tijdswaarde is te klein"
-#: timezone/zic.c:1203
+#: timezone/zic.c:1186
msgid "time too large"
msgstr "tijdswaarde is te groot"
-#: timezone/zic.c:1207 timezone/zic.c:1312
+#: timezone/zic.c:1190 timezone/zic.c:1295
msgid "invalid time of day"
msgstr "ongeldige tijd van de dag"
-#: timezone/zic.c:1226
+#: timezone/zic.c:1209
msgid "illegal CORRECTION field on Leap line"
msgstr "ongeldig CORRECTION-veld op 'Leap'-regel"
-#: timezone/zic.c:1231
+#: timezone/zic.c:1214
msgid "illegal Rolling/Stationary field on Leap line"
msgstr "ongeldig 'Rolling'/'Stationary'-veld op 'Leap'-regel"
-#: timezone/zic.c:1247
+#: timezone/zic.c:1230
msgid "wrong number of fields on Link line"
msgstr "verkeerd aantal velden op 'Link'-regel"
-#: timezone/zic.c:1251
+#: timezone/zic.c:1234
msgid "blank FROM field on Link line"
msgstr "leeg FROM-veld op 'Link'-regel"
-#: timezone/zic.c:1255
+#: timezone/zic.c:1238
msgid "blank TO field on Link line"
msgstr "leeg TO-veld op 'Link'-regel"
-#: timezone/zic.c:1333
+#: timezone/zic.c:1316
msgid "invalid starting year"
msgstr "ongeldig beginjaar"
-#: timezone/zic.c:1355
+#: timezone/zic.c:1338
msgid "invalid ending year"
msgstr "ongeldig eindjaar"
-#: timezone/zic.c:1359
+#: timezone/zic.c:1342
msgid "starting year greater than ending year"
msgstr "beginjaar is groter dan eindjaar"
-#: timezone/zic.c:1366
+#: timezone/zic.c:1349
msgid "typed single year"
msgstr "begin- en eindjaar zijn gelijk"
-#: timezone/zic.c:1401
+#: timezone/zic.c:1384
msgid "invalid weekday name"
msgstr "ongeldige naam voor weekdag"
-#: timezone/zic.c:1579
+#: timezone/zic.c:1562
#, c-format
msgid "%s: Can't remove %s: %s\n"
msgstr "%s: Kan %s niet verwijderen: %s\n"
-#: timezone/zic.c:1589
+#: timezone/zic.c:1572
#, c-format
msgid "%s: Can't create %s: %s\n"
msgstr "%s: Kan %s niet aanmaken: %s\n"
-#: timezone/zic.c:1739
+#: timezone/zic.c:1722
#, c-format
msgid "%s: Error writing %s\n"
msgstr "%s: Fout bij schrijven van %s\n"
-#: timezone/zic.c:2031
+#: timezone/zic.c:2015
msgid "no POSIX environment variable for zone"
msgstr "geen POSIX-omgevingsvariabele voor tijdzone"
-#: timezone/zic.c:2185
+#: timezone/zic.c:2172
msgid "can't determine time zone abbreviation to use just after until time"
msgstr "kan tijdzone-afkorting voor gebruik na een tot-tijd niet bepalen"
-#: timezone/zic.c:2231
+#: timezone/zic.c:2218
msgid "too many transitions?!"
msgstr "te veel overgangen!?"
-#: timezone/zic.c:2250
+#: timezone/zic.c:2237
msgid "internal error - addtype called with bad isdst"
msgstr "**interne fout** -- addtype() aangeroepen met onjuiste 'isdst'"
-#: timezone/zic.c:2254
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad ttisstd"
msgstr "**interne fout** -- addtype() aangeroepen met onjuiste 'ttisstd'"
-#: timezone/zic.c:2258
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisgmt"
msgstr "**interne fout** -- addtype() aangeroepen met onjuiste 'ttisgmt'"
-#: timezone/zic.c:2277
+#: timezone/zic.c:2264
msgid "too many local time types"
msgstr "te veel soorten lokale tijd"
-#: timezone/zic.c:2281
+#: timezone/zic.c:2268
msgid "UTC offset out of range"
msgstr "Verschuiving ten opzichte van UTC valt buiten bereik"
-#: timezone/zic.c:2309
+#: timezone/zic.c:2296
msgid "too many leap seconds"
msgstr "te veel schrikkelseconden"
-#: timezone/zic.c:2315
+#: timezone/zic.c:2302
msgid "repeated leap second moment"
msgstr "herhaald schrikkelseconde-moment"
-#: timezone/zic.c:2367
+#: timezone/zic.c:2354
msgid "Wild result from command execution"
msgstr "Vreemd resultaat van uitgevoerde opdracht"
-#: timezone/zic.c:2368
+#: timezone/zic.c:2355
#, c-format
msgid "%s: command was '%s', result was %d\n"
msgstr "%s: opdracht was '%s', resultaat was %d\n"
-#: timezone/zic.c:2466
+#: timezone/zic.c:2453
msgid "Odd number of quotation marks"
msgstr "Oneven aantal aanhalingstekens"
-#: timezone/zic.c:2555
+#: timezone/zic.c:2542
msgid "use of 2/29 in non leap-year"
msgstr "'29-2' gebruikt in een niet-schrikkeljaar"
-#: timezone/zic.c:2590
+#: timezone/zic.c:2577
msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
msgstr "voorschrift gaat voorbij begin of einde van maand -- dit werkt niet met versies van 'zic' van voor 2004"
-#: timezone/zic.c:2622
+#: timezone/zic.c:2609
msgid "time zone abbreviation lacks alphabetic at start"
msgstr "tijdzone-afkorting begint niet met een letter"
-#: timezone/zic.c:2624
+#: timezone/zic.c:2611
msgid "time zone abbreviation has more than 3 alphabetics"
msgstr "tijdzone-afkorting heeft meer dan drie letters"
-#: timezone/zic.c:2626
+#: timezone/zic.c:2613
msgid "time zone abbreviation has too many alphabetics"
msgstr "tijdzone-afkorting heeft te veel letters"
-#: timezone/zic.c:2636
+#: timezone/zic.c:2623
msgid "time zone abbreviation differs from POSIX standard"
msgstr "tijdzone-afkorting verschilt van de POSIX-standaard"
-#: timezone/zic.c:2648
+#: timezone/zic.c:2635
msgid "too many, or too long, time zone abbreviations"
msgstr "te veel of te lange tijdzone-afkortingen"
-#: timezone/zic.c:2689
+#: timezone/zic.c:2676
#, c-format
msgid "%s: Can't create directory %s: %s\n"
msgstr "%s: Kan map %s niet aanmaken: %s\n"
-#: timezone/zic.c:2711
+#: timezone/zic.c:2698
#, c-format
msgid "%s: %d did not sign extend correctly\n"
msgstr "%s: %d is niet correct omgezet naar een grotere precisie\n"
+
+#~ msgid "cannot create searchlist"
+#~ msgstr "kan zoeklijst niet aanmaken"
+
+#~ msgid ""
+#~ "Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ " \n"
+#~ "Gegevens van prestatie-analyse inlezen en afbeelden.\vVoor het rapporteren van fouten, zie:\n"
+#~ " <http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#~ msgid "%s: stopping date is invalid in string %Zd in `era' field"
+#~ msgstr "%s: einddatum is ongeldig in tekenreeks %Zd in het veld 'era'"
+
+#~ msgid ""
+#~ "Get locale-specific information.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ " \n"
+#~ "Informatie over taalregio-instellingen weergeven.\vVoor het rapporteren van fouten, zie:\n"
+#~ " <http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#~ msgid ""
+#~ "Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ " \n"
+#~ "Items uit een gegevensbank weergeven.\vVoor het rapporteren van fouten, zie:\n"
+#~ " <http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: ongeldige optie -- %c\n"
+
+#~ msgid "authunix_create: out of memory\n"
+#~ msgstr "authunix_create(): onvoldoende geheugen\n"
+
+#~ msgid "clnttcp_create: out of memory\n"
+#~ msgstr "clnttcp_create(): onvoldoende geheugen\n"
+
+#~ msgid "clntudp_create: out of memory\n"
+#~ msgstr "clntudp_create(): onvoldoende geheugen\n"
+
+#~ msgid "clntunix_create: out of memory\n"
+#~ msgstr "clntunix_create(): onvoldoende geheugen\n"
+
+#~ msgid "svctcp_create: out of memory\n"
+#~ msgstr "svctcp_create(): onvoldoende geheugen\n"
+
+#~ msgid "svc_tcp: makefd_xprt: out of memory\n"
+#~ msgstr "svc_tcp.c: makefd_xprt(): onvoldoende geheugen\n"
+
+#~ msgid "svcudp_create: out of memory\n"
+#~ msgstr "svcudp_create(): onvoldoende geheugen\n"
+
+#~ msgid "svcunix_create: out of memory\n"
+#~ msgstr "svcunix_create(): onvoldoende geheugen\n"
+
+#~ msgid "svc_unix: makefd_xprt: out of memory\n"
+#~ msgstr "svc_unix.c: makefd_xprt(): onvoldoende geheugen\n"
+
+#~ msgid "xdr_bytes: out of memory\n"
+#~ msgstr "xdr_bytes(): onvoldoende geheugen\n"
+
+#~ msgid "xdr_string: out of memory\n"
+#~ msgstr "xdr_string(): onvoldoende geheugen\n"
+
+#~ msgid "xdr_array: out of memory\n"
+#~ msgstr "xdr_array(): onvoldoende geheugen\n"
+
+#~ msgid "xdrrec_create: out of memory\n"
+#~ msgstr "xdrrec_create(): onvoldoende geheugen\n"
+
+#~ msgid "xdr_reference: out of memory\n"
+#~ msgstr "xdr_reference(): onvoldoende geheugen\n"
diff --git a/po/pl.po b/po/pl.po
index cba36a77ff..fa8170e3cb 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,13 +1,14 @@
# Polish translation for GNU libc.
-# Copyright (C) 1996, 1997, 1998, 1999, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2002, 2003, 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the glibc package.
# Pawe³ Krawczyk <kravietz@ceti.pl>, 1996,97,98,99.
-# Jakub Bogusz <qboosh@pld-linux.org>, 2002-2007.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2002-2009.
#
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.7\n"
-"POT-Creation-Date: 2007-10-15 21:18-0700\n"
-"PO-Revision-Date: 2007-10-23 20:10+0200\n"
+"Project-Id-Version: libc 2.9.90\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-03-02 22:15+0100\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
@@ -98,7 +99,7 @@ msgstr "%s%s%s:%u %s%sNiespodziewany b³±d: %s.\n"
msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
msgstr "%s%s%s:%u: %s%sWarunek zapewnienia `%s' nie zosta³ spe³niony.\n"
-#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
msgid "NAME"
msgstr "NAZWA"
@@ -130,9 +131,15 @@ msgstr ""
"-o PLIK-WY [PLIK-WE]...\n"
"[PLIK-WY [PLIK-WE]...]"
-#: catgets/gencat.c:232 debug/pcprofiledump.c:204 iconv/iconv_prog.c:411
-#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
-#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
@@ -140,12 +147,13 @@ msgstr ""
"Instrukcje dotycz±ce zg³aszania b³êdów znajduj± siê pod adresem:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:296
-#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:426
-#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
-#: posix/getconf.c:1012
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -158,10 +166,12 @@ msgstr ""
"SPRZEDA¯Y lub PRZYDATNO¦CI DO KONKRETNYCH ZASTOSOWAÑ.\n"
# w %s wchodzi nazwisko autora danego programu/procedury -PK
-#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:301 elf/sprof.c:361
-#: iconv/iconv_prog.c:431 iconv/iconvconfig.c:400 locale/programs/locale.c:280
-#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
-#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
#, c-format
msgid "Written by %s.\n"
msgstr "Autorem jest %s.\n"
@@ -170,7 +180,7 @@ msgstr "Autorem jest %s.\n"
msgid "*standard input*"
msgstr "*standardowe wej¶cie*"
-#: catgets/gencat.c:288 iconv/iconv_charmap.c:158 iconv/iconv_prog.c:298
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
#: nss/makedb.c:170
#, c-format
msgid "cannot open input file `%s'"
@@ -262,17 +272,17 @@ msgstr "Zrzut informacji wygenerowanych przez profilowanie PC."
msgid "[FILE]"
msgstr "[PLIK]"
-#: debug/pcprofiledump.c:104
+#: debug/pcprofiledump.c:108
#, c-format
msgid "cannot open input file"
msgstr "nie mo¿na otworzyæ pliku wej¶ciowego"
-#: debug/pcprofiledump.c:111
+#: debug/pcprofiledump.c:115
#, c-format
msgid "cannot read header"
msgstr "nie mo¿na odczytaæ nag³ówka"
-#: debug/pcprofiledump.c:175
+#: debug/pcprofiledump.c:179
#, c-format
msgid "invalid pointer size"
msgstr "nieprawid³owy rozmiar wska¼nika"
@@ -302,8 +312,6 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
"¦ledzenie wykonywania programu poprzez wypisywanie aktualnie wykonywanych\n"
"funkcji.\n"
@@ -317,23 +325,21 @@ msgstr ""
"Argumenty obowi±zkowe dla d³ugich opcji s± obowi±zkowe równie¿ dla odpowiednich\n"
"krótkich opcji.\n"
"\n"
-"Informacje na temat zg³aszania b³êdów mo¿na znale¼æ pod adresem:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
-#: debug/xtrace.sh:125
+#: debug/xtrace.sh:127
msgid "xtrace: unrecognized option \\`$1'\\n"
msgstr "xtrace: nieznana opcja \\`$1'\\n"
-#: debug/xtrace.sh:138
+#: debug/xtrace.sh:140
msgid "No program name given\\n"
msgstr "Nie podano nazwy programu\\n"
-#: debug/xtrace.sh:146
+#: debug/xtrace.sh:148
#, sh-format
msgid "executable \\`$program' not found\\n"
msgstr "nie znaleziono programu wykonywalnego \\`$program'\\n"
-#: debug/xtrace.sh:150
+#: debug/xtrace.sh:152
#, sh-format
msgid "\\`$program' is no executable\\n"
msgstr "\\`$program' nie jest wykonywalny\\n"
@@ -354,7 +360,7 @@ msgstr "niepoprawna przestrzeñ nazw"
msgid "invalid mode"
msgstr "niepoprawny tryb"
-#: dlfcn/dlopen.c:64
+#: dlfcn/dlopen.c:65
msgid "invalid mode parameter"
msgstr "niepoprawny parametr trybu"
@@ -371,7 +377,7 @@ msgstr "Nieznany system"
msgid ", OS ABI: %s %d.%d.%d"
msgstr ", ABI systemu: %s %d.%d.%d"
-#: elf/cache.c:134 elf/ldconfig.c:1270
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
msgid "Can't open cache file %s\n"
msgstr "Nie mo¿na otworzyæ pliku bufora %s\n"
@@ -415,7 +421,7 @@ msgstr "Zmiana nazwy %s na %s nie powiod³a siê"
msgid "cannot create scope list"
msgstr "nie mo¿na utworzyæ listy zakresów"
-#: elf/dl-close.c:724
+#: elf/dl-close.c:725
msgid "shared object not open"
msgstr "obiekt dzielony nie jest otwarty"
@@ -488,11 +494,11 @@ msgstr "nie mo¿na wykonaæ stat na obiekcie dzielonym"
msgid "cannot open zero fill device"
msgstr "nie mo¿na otworzyæ urz±dzenia wype³niaj±cego zerami"
-#: elf/dl-load.c:979 elf/dl-load.c:2224
+#: elf/dl-load.c:979 elf/dl-load.c:2215
msgid "cannot create shared object descriptor"
msgstr "nie mo¿na utworzyæ deskryptora obiektu dzielonego"
-#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
msgid "cannot read file data"
msgstr "nie mo¿na odczytaæ danych z pliku"
@@ -556,63 +562,59 @@ msgstr "nie mo¿na w³±czyæ wykonywalnego stosu wymaganego przez obiekt dzielony"
msgid "cannot close file descriptor"
msgstr "nie mo¿na zamkn±æ deskryptora pliku"
-#: elf/dl-load.c:1478
-msgid "cannot create searchlist"
-msgstr "nie mo¿na utworzyæ listy przeszukiwañ"
-
-#: elf/dl-load.c:1656
+#: elf/dl-load.c:1647
msgid "file too short"
msgstr "plik za krótki"
-#: elf/dl-load.c:1685
+#: elf/dl-load.c:1676
msgid "invalid ELF header"
msgstr "nieprawid³owy nag³ówek ELF"
-#: elf/dl-load.c:1697
+#: elf/dl-load.c:1688
msgid "ELF file data encoding not big-endian"
msgstr "kodowanie danych w pliku ELF nie jest big-endian"
-#: elf/dl-load.c:1699
+#: elf/dl-load.c:1690
msgid "ELF file data encoding not little-endian"
msgstr "kodowanie danych w pliku ELF nie jest little-endian"
-#: elf/dl-load.c:1703
+#: elf/dl-load.c:1694
msgid "ELF file version ident does not match current one"
msgstr "identyfikator wersji pliku ELF nie zgadza siê z aktualnym"
-#: elf/dl-load.c:1707
+#: elf/dl-load.c:1698
msgid "ELF file OS ABI invalid"
msgstr "niepoprawne ABI systemu w pliku ELF"
-#: elf/dl-load.c:1709
+#: elf/dl-load.c:1700
msgid "ELF file ABI version invalid"
msgstr "niepoprawna wersja ABI w pliku ELF"
-#: elf/dl-load.c:1712
+#: elf/dl-load.c:1703
msgid "internal error"
msgstr "b³±d wewnêtrzny"
-#: elf/dl-load.c:1719
+#: elf/dl-load.c:1710
msgid "ELF file version does not match current one"
msgstr "wersja pliku ELF nie zgadza siê z aktualn±"
-#: elf/dl-load.c:1727
+#: elf/dl-load.c:1718
msgid "only ET_DYN and ET_EXEC can be loaded"
msgstr "tylko ET_DYN i ET_EXEC mog± byæ wczytane"
-#: elf/dl-load.c:1733
+#: elf/dl-load.c:1724
msgid "ELF file's phentsize not the expected size"
msgstr "phentsize w pliku ELF nie jest oczekiwanym rozmiarem"
-#: elf/dl-load.c:2240
+#: elf/dl-load.c:2231
msgid "wrong ELF class: ELFCLASS64"
msgstr "niew³a¶ciwa klasa ELF: ELFCLASS64"
-#: elf/dl-load.c:2241
+#: elf/dl-load.c:2232
msgid "wrong ELF class: ELFCLASS32"
msgstr "niew³a¶ciwa klasa ELF: ELFCLASS32"
-#: elf/dl-load.c:2244
+#: elf/dl-load.c:2235
msgid "cannot open shared object file"
msgstr "nie mo¿na otworzyæ pliku obiektu dzielonego"
@@ -644,11 +646,11 @@ msgstr "nie ma wiêcej dostêpnych przestrzeni nazw dla dlmopen()"
msgid "invalid target namespace in dlmopen()"
msgstr "b³êdna przestrzeñ nazw dla celu w dlmopen()"
-#: elf/dl-reloc.c:54
+#: elf/dl-reloc.c:121
msgid "cannot allocate memory in static TLS block"
msgstr "nie mo¿na przydzieliæ pamiêci w statycznym bloku TLS"
-#: elf/dl-reloc.c:196
+#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
msgstr "nie mo¿na uczyniæ segmentu zapisywalnym w celu relokacji"
@@ -674,11 +676,11 @@ msgstr "nie mo¿na na³o¿yæ dodatkowej ochrony pamiêci po relokacji"
msgid "RTLD_NEXT used in code not dynamically loaded"
msgstr "RTLD_NEXT wyst±pi³o w kodzie nie ³adowanym dynamicznie"
-#: elf/dl-sysdep.c:469 elf/dl-sysdep.c:481
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
msgid "cannot create capability list"
msgstr "nie mo¿na utworzyæ listy uprawnieñ"
-#: elf/dl-tls.c:825
+#: elf/dl-tls.c:864
msgid "cannot create TLS data structures"
msgstr "nie mo¿na utworzyæ struktur danych TLS"
@@ -686,220 +688,220 @@ msgstr "nie mo¿na utworzyæ struktur danych TLS"
msgid "cannot allocate version reference table"
msgstr "nie mo¿na przydzieliæ tablicy odniesieñ do wersji"
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:141
msgid "Print cache"
msgstr "Wypisanie zawarto¶ci bufora"
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:142
msgid "Generate verbose messages"
msgstr "Wy¶wietlanie wiêkszej liczby komunikatów"
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:143
msgid "Don't build cache"
msgstr "Nie budowanie bufora"
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:144
msgid "Don't generate links"
msgstr "Nie tworzenie dowi±zañ"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "Change to and use ROOT as root directory"
msgstr "Przej¶cie do i u¿ywanie KATALOGU jako g³ównego katalogu"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "ROOT"
msgstr "KATALOG"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "CACHE"
msgstr "BUFOR"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "Use CACHE as cache file"
msgstr "U¿ycie BUFORA jako pliku bufora"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "CONF"
msgstr "KONF"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "Use CONF as configuration file"
msgstr "U¿ycie KONF jako pliku konfiguracyjnego"
-#: elf/ldconfig.c:145
+#: elf/ldconfig.c:148
msgid "Only process directories specified on the command line. Don't build cache."
msgstr "Przetwarzanie wy³±cznie katalogów podanych z linii poleceñ; nie budowanie bufora."
-#: elf/ldconfig.c:146
+#: elf/ldconfig.c:149
msgid "Manually link individual libraries."
msgstr "Rêczne tworzenie dowi±zañ do pojedynczych bibliotek."
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "FORMAT"
msgstr "FORMAT"
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "Format to use: new, old or compat (default)"
msgstr "U¿ywany format: new, old lub compat (domy¶lny)"
-#: elf/ldconfig.c:148
+#: elf/ldconfig.c:151
msgid "Ignore auxiliary cache file"
msgstr "Ignorowanie dodatkowego pliku bufora"
-#: elf/ldconfig.c:156
+#: elf/ldconfig.c:159
msgid "Configure Dynamic Linker Run Time Bindings."
msgstr "Konfiguracja powi±zañ dynamicznego linkera."
-#: elf/ldconfig.c:319
+#: elf/ldconfig.c:339
#, c-format
msgid "Path `%s' given more than once"
msgstr "¦cie¿ka `%s' podana wiêcej ni¿ raz"
-#: elf/ldconfig.c:359
+#: elf/ldconfig.c:379
#, c-format
msgid "%s is not a known library type"
msgstr "%s nie jest znanym rodzajem biblioteki"
-#: elf/ldconfig.c:384
+#: elf/ldconfig.c:404
#, c-format
msgid "Can't stat %s"
msgstr "Nie mo¿na wykonaæ stat na %s"
-#: elf/ldconfig.c:458
+#: elf/ldconfig.c:478
#, c-format
msgid "Can't stat %s\n"
msgstr "Nie mo¿na wykonaæ stat na %s\n"
-#: elf/ldconfig.c:468
+#: elf/ldconfig.c:488
#, c-format
msgid "%s is not a symbolic link\n"
msgstr "%s nie jest dowi±zaniem symbolicznym\n"
-#: elf/ldconfig.c:487
+#: elf/ldconfig.c:507
#, c-format
msgid "Can't unlink %s"
msgstr "Nie mo¿na usun±æ %s"
-#: elf/ldconfig.c:493
+#: elf/ldconfig.c:513
#, c-format
msgid "Can't link %s to %s"
msgstr "Nie mo¿na dowi±zaæ %s do %s"
-#: elf/ldconfig.c:499
+#: elf/ldconfig.c:519
msgid " (changed)\n"
msgstr " (zmieniono)\n"
-#: elf/ldconfig.c:501
+#: elf/ldconfig.c:521
msgid " (SKIPPED)\n"
msgstr " (POMINIÊTO)\n"
-#: elf/ldconfig.c:556
+#: elf/ldconfig.c:576
#, c-format
msgid "Can't find %s"
msgstr "Nie mo¿na znale¼æ %s"
-#: elf/ldconfig.c:572 elf/ldconfig.c:745 elf/ldconfig.c:793 elf/ldconfig.c:827
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
msgid "Cannot lstat %s"
msgstr "Nie mo¿na wykonaæ lstat na %s"
-#: elf/ldconfig.c:579
+#: elf/ldconfig.c:599
#, c-format
msgid "Ignored file %s since it is not a regular file."
msgstr "Zignorowano plik %s poniewa¿ nie jest zwyk³ym plikiem."
-#: elf/ldconfig.c:588
+#: elf/ldconfig.c:608
#, c-format
msgid "No link created since soname could not be found for %s"
msgstr "Nie utworzono dowi±zania poniewa¿ nie znaleziono soname dla %s"
-#: elf/ldconfig.c:671
+#: elf/ldconfig.c:691
#, c-format
msgid "Can't open directory %s"
msgstr "Nie mo¿na otworzyæ katalogu %s"
-#: elf/ldconfig.c:759
+#: elf/ldconfig.c:779
#, c-format
msgid "Cannot stat %s"
msgstr "Nie mo¿na wykonaæ stat na %s"
-#: elf/ldconfig.c:814 elf/readlib.c:91
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
msgid "Input file %s not found.\n"
msgstr "Nie znaleziono pliku wej¶ciowego %s.\n"
-#: elf/ldconfig.c:888
+#: elf/ldconfig.c:908
#, c-format
msgid "libc5 library %s in wrong directory"
msgstr "biblioteka libc5 %s w z³ym katalogu"
-#: elf/ldconfig.c:891
+#: elf/ldconfig.c:911
#, c-format
msgid "libc6 library %s in wrong directory"
msgstr "biblioteka libc6 %s w z³ym katalogu"
-#: elf/ldconfig.c:894
+#: elf/ldconfig.c:914
#, c-format
msgid "libc4 library %s in wrong directory"
msgstr "biblioteka libc4 %s w z³ym katalogu"
-#: elf/ldconfig.c:922
+#: elf/ldconfig.c:942
#, c-format
msgid "libraries %s and %s in directory %s have same soname but different type."
msgstr "biblioteki %s i %s w katalogu %s maj± to samo soname ale inny rodzaj."
-#: elf/ldconfig.c:1031
+#: elf/ldconfig.c:1051
#, c-format
msgid "Can't open configuration file %s"
msgstr "Nie mo¿na otworzyæ pliku konfiguracyjnego %s"
-#: elf/ldconfig.c:1095
+#: elf/ldconfig.c:1115
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
msgstr "%s:%u: b³êdna sk³adnia w linii hwcap"
-#: elf/ldconfig.c:1101
+#: elf/ldconfig.c:1121
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
msgstr "%s:%u: indeks hwcap %lu powy¿ej maksymalnego %u"
-#: elf/ldconfig.c:1108 elf/ldconfig.c:1116
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
msgstr "%s:%u: indeks hwcap %lu ju¿ zdefiniowany jako %s"
-#: elf/ldconfig.c:1119
+#: elf/ldconfig.c:1139
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
msgstr "%s:%u: powtórzony hwcap %lu %s"
-#: elf/ldconfig.c:1141
+#: elf/ldconfig.c:1161
#, c-format
msgid "need absolute file name for configuration file when using -r"
msgstr "opcja -r wymaga bezwzglêdnej ¶cie¿ki pliku konfiguracyjnego"
-#: elf/ldconfig.c:1148 locale/programs/xmalloc.c:70 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
msgid "memory exhausted"
msgstr "pamiêæ wyczerpana"
-#: elf/ldconfig.c:1178
+#: elf/ldconfig.c:1198
#, c-format
msgid "%s:%u: cannot read directory %s"
msgstr "%s:%u: nie mo¿na odczytaæ %s"
-#: elf/ldconfig.c:1223
+#: elf/ldconfig.c:1242
#, c-format
msgid "relative path `%s' used to build cache"
msgstr "u¿yto wzglêdnej ¶cie¿ki `%s' do utworzenia bufora"
-#: elf/ldconfig.c:1249
+#: elf/ldconfig.c:1268
#, c-format
msgid "Can't chdir to /"
msgstr "Nie mo¿na przej¶æ do katalogu /"
-#: elf/ldconfig.c:1291
+#: elf/ldconfig.c:1310
#, c-format
msgid "Can't open cache file directory %s\n"
msgstr "Nie mo¿na otworzyæ katalogu pliku bufora %s\n"
@@ -917,8 +919,6 @@ msgid ""
" -r, --function-relocs process data and function relocations\n"
" -u, --unused print unused direct dependencies\n"
" -v, --verbose print all information\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Sk³adnia: ldd [OPCJA]... PLIK...\n"
" --help wypisanie tego opisu i zakoñczenie\n"
@@ -927,49 +927,47 @@ msgstr ""
" -r, --function-relocs przetworzenie relokacji danych i funkcji\n"
" -u, --unused wypisanie nieu¿ywanych bezpo¶rednich zale¿no¶ci\n"
" -v, --verbose wypisanie wszystkich informacji\n"
-"Instrukcje dotycz±ce zg³aszania b³êdów znajduj± siê pod adresem:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: elf/ldd.bash.in:80
+#: elf/ldd.bash.in:82
msgid "ldd: option \\`$1' is ambiguous"
msgstr "ldd: opcja \\`$1' jest niejednoznaczna"
-#: elf/ldd.bash.in:87
+#: elf/ldd.bash.in:89
msgid "unrecognized option"
msgstr "nieznana opcja"
-#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
msgid "Try \\`ldd --help' for more information."
msgstr "Polecenie \\`ldd --help' pozwoli uzyskaæ wiêcej informacji."
-#: elf/ldd.bash.in:125
+#: elf/ldd.bash.in:127
msgid "missing file arguments"
msgstr "brakuj±ce argumenty plikowe"
#. TRANS No such file or directory. This is a ``file doesn't exist'' error
#. TRANS for ordinary files that are referenced in contexts where they are
#. TRANS expected to already exist.
-#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
msgstr "Nie ma takiego pliku ani katalogu"
-#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
msgid "not regular file"
msgstr "nie jest zwyk³ym plikiem"
-#: elf/ldd.bash.in:154
+#: elf/ldd.bash.in:156
msgid "warning: you do not have execution permission for"
msgstr "uwaga: brak uprawnieñ do wykonywania"
-#: elf/ldd.bash.in:183
+#: elf/ldd.bash.in:185
msgid "\tnot a dynamic executable"
msgstr "\tnie jest dynamicznym programem wykonywalnym"
-#: elf/ldd.bash.in:191
+#: elf/ldd.bash.in:193
msgid "exited with unknown exit code"
msgstr "zakoñczy³ dzia³anie z nieznanym kodem wyj¶cia"
-#: elf/ldd.bash.in:196
+#: elf/ldd.bash.in:198
msgid "error: you do not have read permission for"
msgstr "b³±d: brak uprawnieñ do odczytu"
@@ -1028,6 +1026,45 @@ msgstr "Nie mo¿na wykonaæ mmap pliku %s.\n"
msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
msgstr "%s nie jest plikiem ELF - ma z³e bajty magiczne na pocz±tku.\n"
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+"Sk³adnia: sln ¼ród³o cel|plik\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s: b³±d otwierania pliku: %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "Brak celu w linii %d\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s: cel nie mo¿e byæ katalogiem\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr "%s: nie uda³o siê usun±æ starego celu\n"
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s: b³êdny cel: %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "B³êdne dowi±zanie \"%s\" do \"%s\": %s\n"
+
#: elf/sprof.c:77
msgid "Output selection:"
msgstr "Wybór wyj¶cia:"
@@ -1046,129 +1083,130 @@ msgid "generate call graph"
msgstr "generowanie wykresu wywo³añ"
#: elf/sprof.c:89
-msgid ""
-"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Odczyt i wy¶wietlanie danych profiluj±cych dla obiektów wspó³dzielonych.\vInstrukcje dotycz±ce zg³aszania b³êdów znajduj± siê pod adresem:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Read and display shared object profiling data."
+msgstr "Odczyt i wy¶wietlanie danych profiluj±cych dla obiektów wspó³dzielonych."
#: elf/sprof.c:94
msgid "SHOBJ [PROFDATA]"
msgstr "OBIEKT_DZIELONY [DANE_PROFILUJ¡CE]"
-#: elf/sprof.c:400
+#: elf/sprof.c:420
#, c-format
msgid "failed to load shared object `%s'"
msgstr "za³adowanie dzielonego obiektu `%s' nie powiod³o siê"
-#: elf/sprof.c:409
+#: elf/sprof.c:429
#, c-format
msgid "cannot create internal descriptors"
msgstr "nie mo¿na utworzyæ wewnêtrznych deskryptorów"
-#: elf/sprof.c:528
+#: elf/sprof.c:548
#, c-format
msgid "Reopening shared object `%s' failed"
msgstr "Ponowne otwarcie obiektu dzielonego `%s' nie powiod³o siê"
-#: elf/sprof.c:535 elf/sprof.c:629
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
msgid "reading of section headers failed"
msgstr "odczyt nag³ówków sekcji nie powiód³ siê"
-#: elf/sprof.c:543 elf/sprof.c:637
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
msgid "reading of section header string table failed"
msgstr "odczyt tablicy ³añcuchów nag³ówków sekcji nie powiód³ siê"
-#: elf/sprof.c:569
+#: elf/sprof.c:589
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
msgstr "*** Nie mo¿na odczytaæ nazwy pliku informacji diagnostycznych: %m\n"
-#: elf/sprof.c:589
+#: elf/sprof.c:609
#, c-format
msgid "cannot determine file name"
msgstr "nie mo¿na okre¶liæ nazwy pliku"
-#: elf/sprof.c:622
+#: elf/sprof.c:642
#, c-format
msgid "reading of ELF header failed"
msgstr "odczyt nag³ówka ELF nie powiód³ siê"
-#: elf/sprof.c:658
+#: elf/sprof.c:678
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
msgstr "*** Symbole z pliku `%s' zosta³y usuniête, dok³adna analiza jest niemo¿liwa\n"
-#: elf/sprof.c:688
+#: elf/sprof.c:708
#, c-format
msgid "failed to load symbol data"
msgstr "za³adowanie danych o symbolach nie powiod³o siê"
-#: elf/sprof.c:755
+#: elf/sprof.c:775
#, c-format
msgid "cannot load profiling data"
msgstr "nie mo¿na za³adowaæ danych do profilowania"
-#: elf/sprof.c:764
+#: elf/sprof.c:784
#, c-format
msgid "while stat'ing profiling data file"
msgstr "podczas wykonywania stat na pliku z danymi profiluj±cymi"
-#: elf/sprof.c:772
+#: elf/sprof.c:792
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
msgstr "dane profiluj±ce w pliku `%s' nie pasuj± do obiektu dzielonego `%s'"
-#: elf/sprof.c:783
+#: elf/sprof.c:803
#, c-format
msgid "failed to mmap the profiling data file"
msgstr "wykonanie mmap danych profiluj±cych nie powiod³o siê"
-#: elf/sprof.c:791
+#: elf/sprof.c:811
#, c-format
msgid "error while closing the profiling data file"
msgstr "b³±d podczas zamykania pliku z danymi profiluj±cymi"
-#: elf/sprof.c:800 elf/sprof.c:870
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
msgid "cannot create internal descriptor"
msgstr "nie mo¿na utworzyæ wewnêtrznego deskryptora"
-#: elf/sprof.c:846
+#: elf/sprof.c:866
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
msgstr "`%s' nie jest poprawnym plikiem danych profiluj±cych dla `%s'"
-#: elf/sprof.c:1027 elf/sprof.c:1085
+#: elf/sprof.c:1047 elf/sprof.c:1105
#, c-format
msgid "cannot allocate symbol data"
msgstr "nie mo¿na przydzieliæ pamiêci dla symboli"
-#: iconv/iconv_charmap.c:176 iconv/iconv_prog.c:316
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "nie mo¿na otworzyæ pliku wyj¶ciowego"
+
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
msgstr "b³±d podczas zamykania wej¶cia `%s'"
-#: iconv/iconv_charmap.c:450
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
msgstr "b³êdna sekwencja wej¶ciowa na pozycji %Zd"
-#: iconv/iconv_charmap.c:469 iconv/iconv_prog.c:526
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
#, c-format
msgid "incomplete character or shift sequence at end of buffer"
msgstr "niekompletny znak lub sekwencja steruj±ca na koñcu bufora"
-#: iconv/iconv_charmap.c:514 iconv/iconv_charmap.c:550 iconv/iconv_prog.c:569
-#: iconv/iconv_prog.c:605
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
#, c-format
msgid "error while reading the input"
msgstr "b³±d podczas czytania danych wej¶ciowych"
-#: iconv/iconv_charmap.c:532 iconv/iconv_prog.c:587
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
#, c-format
msgid "unable to allocate buffer for input"
msgstr "przydzielenie bufora dla danych wej¶ciowych by³o niemo¿liwe"
@@ -1221,62 +1259,57 @@ msgstr "Konwersja podanych plików miêdzy ró¿nymi metodami kodowania."
msgid "[FILE...]"
msgstr "[PLIK...]"
-#: iconv/iconv_prog.c:200
-#, c-format
-msgid "cannot open output file"
-msgstr "nie mo¿na otworzyæ pliku wyj¶ciowego"
-
-#: iconv/iconv_prog.c:242
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
msgstr "konwersje z `%s' oraz do `%s' nie s± obs³ugiwane"
-#: iconv/iconv_prog.c:247
+#: iconv/iconv_prog.c:239
#, c-format
msgid "conversion from `%s' is not supported"
msgstr "konwersja z `%s' nie jest obs³ugiwana"
-#: iconv/iconv_prog.c:254
+#: iconv/iconv_prog.c:246
#, c-format
msgid "conversion to `%s' is not supported"
msgstr "konwersja do `%s' nie jest obs³ugiwana"
-#: iconv/iconv_prog.c:258
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
msgstr "konwersja z `%s' do `%s' nie jest obs³ugiwana"
-#: iconv/iconv_prog.c:268
+#: iconv/iconv_prog.c:260
#, c-format
msgid "failed to start conversion processing"
msgstr "nie uda³o siê rozpocz±æ konwersji"
-#: iconv/iconv_prog.c:362
+#: iconv/iconv_prog.c:358
#, c-format
msgid "error while closing output file"
msgstr "b³±d podczas zamykania pliku wyj¶ciowego"
-#: iconv/iconv_prog.c:471 iconv/iconv_prog.c:497
+#: iconv/iconv_prog.c:456
#, c-format
msgid "conversion stopped due to problem in writing the output"
msgstr "konwersja przerwana z powodu problemu z zapisaniem wyników"
-#: iconv/iconv_prog.c:522
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
msgstr "b³êdna sekwencja wej¶ciowa na pozycji %ld"
-#: iconv/iconv_prog.c:530
+#: iconv/iconv_prog.c:541
#, c-format
msgid "internal error (illegal descriptor)"
msgstr "b³±d wewnêtrzny (nieprawid³owy deskryptor)"
-#: iconv/iconv_prog.c:533
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
msgstr "nieznany b³±d iconv() %d"
-#: iconv/iconv_prog.c:779
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -1512,7 +1545,7 @@ msgstr "za du¿o bajtów w kodzie znaku"
msgid "no symbolic name given for end of range"
msgstr "brak nazwy symbolicznej dla koñca przedzia³u"
-#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
#: locale/programs/ld-identification.c:452
@@ -1541,8 +1574,8 @@ msgstr "warto¶æ %s musi byæ liczb± ca³kowit±"
msgid "%s: error in state machine"
msgstr "%s: b³±d w automacie skoñczonym"
-#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
-#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4115
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
#: locale/programs/ld-identification.c:468
#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
@@ -1564,7 +1597,7 @@ msgstr "nieznany znak `%s'"
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
msgstr "liczba bajtów dla sekwencji bajtów pocz±tku i koñca przedzia³u jest ró¿na: %d i %d"
-#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3047
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
msgstr "nieprawid³owe nazwy dla przedzia³u znaków"
@@ -1586,7 +1619,7 @@ msgstr "górna granica przedzia³u nie jest mniejsza ni¿ dolna"
msgid "resulting bytes for range not representable."
msgstr "wynikowe bajty dla przedzia³u nie mog± zostaæ wyra¿one."
-#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
@@ -1596,10 +1629,10 @@ msgstr "wynikowe bajty dla przedzia³u nie mog± zostaæ wyra¿one."
msgid "No definition for %s category found"
msgstr "Nie znaleziono definicji dla kategorii %s"
-#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
-#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
-#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
-#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
@@ -1612,46 +1645,46 @@ msgstr "Nie znaleziono definicji dla kategorii %s"
msgid "%s: field `%s' not defined"
msgstr "%s: pole `%s' nie jest zdefiniowane"
-#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
-#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
msgstr "%s: pole `%s' nie mo¿e byæ puste"
-#: locale/programs/ld-address.c:168
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
msgstr "%s: niepoprawna sekwencja escape `%%%c' w polu `%s'"
-#: locale/programs/ld-address.c:219
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
msgstr "%s: kod jêzyka terminologii `%s' nie jest zdefiniowany"
-#: locale/programs/ld-address.c:244
+#: locale/programs/ld-address.c:246
#, c-format
msgid "%s: field `%s' must not be defined"
msgstr "%s: pole `%s' nie mo¿e byæ zdefiniowane"
-#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
msgstr "%s: skrót jêzyka `%s' nie jest zdefiniowany"
-#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
-#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
msgstr "%s: warto¶æ `%s' nie pasuje do warto¶ci `%s'"
-#: locale/programs/ld-address.c:312
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
msgstr "%s: liczbowy kod kraju `%d' jest niepoprawny"
-#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
-#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
#: locale/programs/ld-identification.c:364
#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
@@ -1663,7 +1696,7 @@ msgstr "%s: liczbowy kod kraju `%d' jest niepoprawny"
msgid "%s: field `%s' declared more than once"
msgstr "%s: pole `%s' zadeklarowane wiêcej ni¿ raz"
-#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
@@ -1673,7 +1706,7 @@ msgstr "%s: pole `%s' zadeklarowane wiêcej ni¿ raz"
msgid "%s: unknown character in field `%s'"
msgstr "%s: nieznany znak w polu `%s'"
-#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
@@ -1683,10 +1716,10 @@ msgstr "%s: nieznany znak w polu `%s'"
msgid "%s: incomplete `END' line"
msgstr "%s: niekompletna linia `END'"
-#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:542
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
-#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4105
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
#: locale/programs/ld-identification.c:459
@@ -1831,7 +1864,7 @@ msgstr "brak definicji `UNDEFINED'"
msgid "too many errors; giving up"
msgstr "zbyt du¿o b³êdów; poddajê siê"
-#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4044
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
#, c-format
msgid "%s: nested conditionals not supported"
msgstr "%s: warunki zagnie¿d¿one nie s± obs³ugiwane"
@@ -1851,27 +1884,27 @@ msgstr "%s: powtórzona definicja `%s'"
msgid "%s: duplicate declaration of section `%s'"
msgstr "%s: powtórzona deklaracja sekcji `%s'"
-#: locale/programs/ld-collate.c:3027
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
msgstr "%s: nieznany znak w nazwie symbolu scalaj±cego"
-#: locale/programs/ld-collate.c:3159
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
msgstr "%s: nieznany znak w nazwie definicji równowa¿no¶ci"
-#: locale/programs/ld-collate.c:3172
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
msgstr "%s: nieznany znak w warto¶ci definicji równowa¿no¶ci"
-#: locale/programs/ld-collate.c:3182
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
msgstr "%s: nieznany symbol `%s' w definicji równowa¿no¶ci"
-#: locale/programs/ld-collate.c:3191
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
msgstr "b³±d podczas dodawania równowa¿nego symbolu scalaj±cego"
@@ -1951,12 +1984,12 @@ msgstr "%s: pusty opis kategorii niedozwolony"
msgid "%s: missing `reorder-sections-end' keyword"
msgstr "%s: brak s³owa kluczowego `reorder-sections-end'"
-#: locale/programs/ld-collate.c:4077
+#: locale/programs/ld-collate.c:4079
#, c-format
msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
msgstr "%s: '%s' bez odpowiadaj±cego mu 'ifdef' lub 'ifndef'"
-#: locale/programs/ld-collate.c:4095
+#: locale/programs/ld-collate.c:4097
#, c-format
msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
msgstr "%s: 'endif' bez odpowiadaj±cego mu 'ifdef' lub 'ifndef'"
@@ -2280,7 +2313,7 @@ msgstr "%s: ¶mieci na koñcu daty pocz±tkowej w ³añcuchu %Zd w polu `era' "
msgid "%s: starting date is invalid in string %Zd in `era' field"
msgstr "%s: niepoprawna data pocz±tkowa w ³añcuchu %Zd w polu `era'"
-#: locale/programs/ld-time.c:407
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
msgstr "%s: niepoprawna data koñcowa w ³añcuchu %Zd w polu `era'"
@@ -2290,11 +2323,6 @@ msgstr "%s: niepoprawna data koñcowa w ³añcuchu %Zd w polu `era'"
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
msgstr "%s: ¶mieci na koñcu daty koñcowej w ³añcuchu %Zd w polu `era'"
-#: locale/programs/ld-time.c:435
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s: niepoprawna data koñcowa w ³añcuchu %Zd w polu `era'"
-
#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
@@ -2397,14 +2425,10 @@ msgid "Print more information"
msgstr "Wypisanie wiêkszej ilo¶ci informacji"
#: locale/programs/locale.c:87
-msgid ""
-"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Pobranie informacji dotycz±cych lokalizacji.\vInstrukcje dotycz±ce zg³aszania b³êdów znajduj± siê pod adresem:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get locale-specific information."
+msgstr "Odczyt informacji dotycz±cych lokalizacji."
-#: locale/programs/locale.c:92
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
@@ -2412,27 +2436,27 @@ msgstr ""
"NAZWA\n"
"[-a|-m]"
-#: locale/programs/locale.c:193
+#: locale/programs/locale.c:194
#, c-format
msgid "Cannot set LC_CTYPE to default locale"
msgstr "Nie mo¿na ustawiæ LC_CTYPE na domy¶ln± lokalizacjê"
-#: locale/programs/locale.c:195
+#: locale/programs/locale.c:196
#, c-format
msgid "Cannot set LC_MESSAGES to default locale"
msgstr "Nie mo¿na ustawiæ LC_MESSAGES na domy¶ln± lokalizacjê"
-#: locale/programs/locale.c:208
+#: locale/programs/locale.c:209
#, c-format
msgid "Cannot set LC_COLLATE to default locale"
msgstr "Nie mo¿na ustawiæ LC_COLLATE na domy¶ln± lokalizacjê"
-#: locale/programs/locale.c:224
+#: locale/programs/locale.c:225
#, c-format
msgid "Cannot set LC_ALL to default locale"
msgstr "Nie mo¿na ustawiæ LC_ALL na domy¶ln± lokalizacjê"
-#: locale/programs/locale.c:500
+#: locale/programs/locale.c:518
#, c-format
msgid "while preparing output"
msgstr "podczas przygotowywania wyników"
@@ -2716,7 +2740,7 @@ msgid "cannot create output file `%s' for category `%s'"
msgstr "nie mo¿na utworzyæ pliku wyj¶ciowego `%s' dla kategorii `%s'"
#: locale/programs/locfile.c:782
-msgid "expect string argument for `copy'"
+msgid "expecting string argument for `copy'"
msgstr "spodziewanym argumentem dla `copy' jest ³añcuch"
#: locale/programs/locfile.c:786
@@ -2833,8 +2857,6 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Sk³adnia: memusage [OPCJA]... PROGRAM [OPCJA-PROGRAMU]...\n"
"Profilowanie wykorzystania pamiêci przez PROGRAM.\n"
@@ -2861,10 +2883,8 @@ msgstr ""
"Argumenty obowi±zkowe dla d³ugich opcji s± obowi±zkowe równie¿ dla odpowiednich\n"
"krótkich opcji.\n"
"\n"
-"Informacje na temat zg³aszania b³êdów mo¿na znale¼æ pod adresem:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: malloc/memusage.sh:99
+#: malloc/memusage.sh:101
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
@@ -2876,51 +2896,51 @@ msgstr ""
" [--title=£AÑCUCH] [--x-size=ROZMIAR] [--y-size=ROZMIAR]\n"
" PROGRAM [OPCJA-PROGRAMU]..."
-#: malloc/memusage.sh:191
+#: malloc/memusage.sh:193
msgid "memusage: option \\`${1##*=}' is ambiguous"
msgstr "memusage: opcja \\`${1##*=}' jest niejednoznaczna"
-#: malloc/memusage.sh:200
+#: malloc/memusage.sh:202
msgid "memusage: unrecognized option \\`$1'"
msgstr "memusage: nieznana opcja \\`$1'"
-#: malloc/memusage.sh:213
+#: malloc/memusage.sh:215
msgid "No program name given"
msgstr "Nie podano nazwy programu"
-#: malloc/memusagestat.c:54
+#: malloc/memusagestat.c:57
msgid "Name output file"
msgstr "Nazwa pliku wyj¶ciowego"
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:58
msgid "Title string used in output graphic"
msgstr "£añcuch tytu³owy u¿ywany w wynikowym wykresie"
-#: malloc/memusagestat.c:56
+#: malloc/memusagestat.c:59
msgid "Generate output linear to time (default is linear to number of function calls)"
msgstr "Generowanie wyj¶cia liniowo po czasie (domy¶lnie: liniowo po liczbie wywo³añ funkcji)"
-#: malloc/memusagestat.c:58
+#: malloc/memusagestat.c:61
msgid "Also draw graph for total memory consumption"
msgstr "Narysowanie tak¿e wykresu ca³kowitego u¿ycia pamiêci"
-#: malloc/memusagestat.c:59
+#: malloc/memusagestat.c:62
msgid "Make output graphic VALUE pixels wide"
msgstr "Stworzenie wykresu szeroko¶ci VALUE pikseli"
-#: malloc/memusagestat.c:60
+#: malloc/memusagestat.c:63
msgid "Make output graphic VALUE pixels high"
msgstr "Stworzenie wykresu szeroko¶ci VALUE pikseli"
-#: malloc/memusagestat.c:65
+#: malloc/memusagestat.c:68
msgid "Generate graphic from memory profiling data"
msgstr "Wygenerowanie wykresu z danych profilowania pamiêci"
-#: malloc/memusagestat.c:68
+#: malloc/memusagestat.c:71
msgid "DATAFILE [OUTFILE]"
msgstr "PLIK-DANYCH [PLIK-WYJ¦CIOWY]"
-#: misc/error.c:118 timezone/zic.c:417
+#: misc/error.c:118
msgid "Unknown system error"
msgstr "Nieznany b³±d systemowy"
@@ -2928,7 +2948,7 @@ msgstr "Nieznany b³±d systemowy"
msgid "unable to free arguments"
msgstr "zwolnienie argumentów niemo¿liwe"
-#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr "Sukces"
@@ -2970,7 +2990,7 @@ msgid "First/next chain broken"
msgstr "£añcuch pierwszy/nastêpny jest uszkodzony"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
msgstr "Brak dostêpu"
@@ -3476,434 +3496,473 @@ msgstr "netname2user: wpis LOKALNY dla %s w katalogu %s nie jest unikalny"
msgid "netname2user: should not have uid 0"
msgstr "netname2user: UID 0 nie powinien wyst±piæ"
-#: nis/ypclnt.c:825
+#: nis/ypclnt.c:836
msgid "Request arguments bad"
msgstr "Argumenty ¿±dania s± b³êdne"
-#: nis/ypclnt.c:828
+#: nis/ypclnt.c:839
msgid "RPC failure on NIS operation"
msgstr "B³±d RPC podczas operacji NIS"
-#: nis/ypclnt.c:831
+#: nis/ypclnt.c:842
msgid "Can't bind to server which serves this domain"
msgstr "Nie mo¿na po³±czyæ siê z serwerem dla tej domeny"
-#: nis/ypclnt.c:834
+#: nis/ypclnt.c:845
msgid "No such map in server's domain"
msgstr "Brak takiej mapy w domenie serwera"
-#: nis/ypclnt.c:837
+#: nis/ypclnt.c:848
msgid "No such key in map"
msgstr "Brak takiego klucza w mapie"
-#: nis/ypclnt.c:840
+#: nis/ypclnt.c:851
msgid "Internal NIS error"
msgstr "B³±d wewnêtrzny NIS"
-#: nis/ypclnt.c:843
+#: nis/ypclnt.c:854
msgid "Local resource allocation failure"
msgstr "Wyst±pi³ b³±d podczas przydzielania lokalnych zasobów"
-#: nis/ypclnt.c:846
+#: nis/ypclnt.c:857
msgid "No more records in map database"
msgstr "Nie ma wiêcej rekordów w mapie"
-#: nis/ypclnt.c:849
+#: nis/ypclnt.c:860
msgid "Can't communicate with portmapper"
msgstr "Komunikacja z portmapperem jest niemo¿liwa"
-#: nis/ypclnt.c:852
+#: nis/ypclnt.c:863
msgid "Can't communicate with ypbind"
msgstr "Komunikacja z ypbind jest niemo¿liwa"
-#: nis/ypclnt.c:855
+#: nis/ypclnt.c:866
msgid "Can't communicate with ypserv"
msgstr "Komunikacja z ypserv jest niemo¿liwa"
-#: nis/ypclnt.c:858
+#: nis/ypclnt.c:869
msgid "Local domain name not set"
msgstr "Lokalna domena nie jest ustawiona"
-#: nis/ypclnt.c:861
+#: nis/ypclnt.c:872
msgid "NIS map database is bad"
msgstr "Mapa NIS zawiera b³êdy"
-#: nis/ypclnt.c:864
+#: nis/ypclnt.c:875
msgid "NIS client/server version mismatch - can't supply service"
msgstr "Niezgodno¶æ wersji miêdzy klientem i serwerem NIS - us³uga niemo¿liwa"
-#: nis/ypclnt.c:870
+#: nis/ypclnt.c:881
msgid "Database is busy"
msgstr "Baza danych jest zajêta"
-#: nis/ypclnt.c:873
+#: nis/ypclnt.c:884
msgid "Unknown NIS error code"
msgstr "Nieznany kod b³êdu NIS"
-#: nis/ypclnt.c:913
+#: nis/ypclnt.c:924
msgid "Internal ypbind error"
msgstr "B³±d wewnêtrzny ypbind"
-#: nis/ypclnt.c:916
+#: nis/ypclnt.c:927
msgid "Domain not bound"
msgstr "Domena nie zosta³a zwi±zana"
-#: nis/ypclnt.c:919
+#: nis/ypclnt.c:930
msgid "System resource allocation failure"
msgstr "Wyst±pi³ b³±d podczas przydzielania zasobów systemowych"
-#: nis/ypclnt.c:922
+#: nis/ypclnt.c:933
msgid "Unknown ypbind error"
msgstr "Nieznany b³±d ypbind"
-#: nis/ypclnt.c:963
+#: nis/ypclnt.c:974
msgid "yp_update: cannot convert host to netname\n"
msgstr "yp_update: nie mo¿na przekonwertowaæ nazwy hosta na nazwê sieci\n"
-#: nis/ypclnt.c:981
+#: nis/ypclnt.c:992
msgid "yp_update: cannot get server address\n"
msgstr "yp_update: nie mo¿na uzyskaæ adresu serwera\n"
-#: nscd/aicache.c:77 nscd/hstcache.c:468
+#: nscd/aicache.c:82 nscd/hstcache.c:481
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
msgstr "Nie znaleziono \"%s\" w buforze hostów!"
-#: nscd/aicache.c:79 nscd/hstcache.c:470
+#: nscd/aicache.c:84 nscd/hstcache.c:483
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
msgstr "Prze³adowywanie \"%s\" w buforze hostów!"
-#: nscd/cache.c:146
+#: nscd/cache.c:150
#, c-format
msgid "add new entry \"%s\" of type %s for %s to cache%s"
msgstr "dodanie nowego wpisu \"%s\" typu %s dla %s do bufora%s"
-#: nscd/cache.c:148
+#: nscd/cache.c:152
msgid " (first)"
msgstr " (pierwszy)"
-#: nscd/cache.c:256 nscd/connections.c:810
+#: nscd/cache.c:286 nscd/connections.c:866
#, c-format
msgid "cannot stat() file `%s': %s"
msgstr "znalezienie pliku bazy danych `%s' jest niemo¿liwe: %s"
-#: nscd/cache.c:285
+#: nscd/cache.c:328
#, c-format
msgid "pruning %s cache; time %ld"
msgstr "czyszczenie bufora %s; czas %ld"
-#: nscd/cache.c:312
+#: nscd/cache.c:357
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
msgstr "rozwa¿anie wpisu %s \"%s\", limit czasu %<PRIu64>"
-#: nscd/connections.c:521 nscd/connections.c:533 nscd/connections.c:545
-#: nscd/connections.c:564
+#: nscd/connections.c:570
#, c-format
msgid "invalid persistent database file \"%s\": %s"
msgstr "nieprawid³owy plik trwa³ej bazy danych \"%s\": %s"
-#: nscd/connections.c:535
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr "niezainicjowany nag³ówek"
+
+#: nscd/connections.c:583
msgid "header size does not match"
msgstr "rozmiar nag³ówka siê nie zgadza"
-#: nscd/connections.c:547
+#: nscd/connections.c:593
msgid "file size does not match"
msgstr "rozmiar pliku siê nie zgadza"
-#: nscd/connections.c:566
+#: nscd/connections.c:610
msgid "verification failed"
msgstr "weryfikacja nie powiod³a siê"
-#: nscd/connections.c:580
+#: nscd/connections.c:624
#, c-format
msgid "suggested size of table for database %s larger than the persistent database's table"
msgstr "sugerowany rozmiar tablicy dla bazy danych %s wiêkszy od bufora trwa³ej bazy danych"
-#: nscd/connections.c:591 nscd/connections.c:673
+#: nscd/connections.c:635 nscd/connections.c:720
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
msgstr "nie mo¿na utworzyæ deskryptora tylko dla odczytu dla \"%s\"; brak mmap"
-#: nscd/connections.c:652
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr "brak dostêpu do '%s'"
+
+#: nscd/connections.c:699
#, c-format
msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
msgstr "baza danych dla %s uszkodzona lub jednocze¶nie u¿ywana; w razie potrzeby trzeba rêcznie usun±æ %s i zrestartowaæ"
-#: nscd/connections.c:659
+#: nscd/connections.c:706
#, c-format
msgid "cannot create %s; no persistent database used"
msgstr "nie mo¿na utworzyæ %s; trwa³a baza danych nie u¿ywana"
-#: nscd/connections.c:662
+#: nscd/connections.c:709
#, c-format
msgid "cannot create %s; no sharing possible"
msgstr "nie mo¿na utworzyæ %s; wspó³dzielenie niemo¿liwe"
-#: nscd/connections.c:733
+#: nscd/connections.c:780
#, c-format
msgid "cannot write to database file %s: %s"
msgstr "nie mo¿na zapisaæ do pliku bazy danych %s: %s"
-#: nscd/connections.c:772
+#: nscd/connections.c:819
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
msgstr "nie mo¿na ustawiæ gniazda do zamkniêcia przy exec: %s; wy³±czono tryb paranoiczny"
-#: nscd/connections.c:823
+#: nscd/connections.c:902
#, c-format
msgid "cannot open socket: %s"
msgstr "nie mo¿na otworzyæ gniazda: %s"
-#: nscd/connections.c:840
+#: nscd/connections.c:922
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
msgstr "nie mo¿na przestawiæ gniazda w tryb nieblokuj±cy: %s"
-#: nscd/connections.c:848
+#: nscd/connections.c:930
#, c-format
msgid "cannot set socket to close on exec: %s"
msgstr "nie mo¿na ustawiæ gniazda do zamkniêcia przy exec: %s"
-#: nscd/connections.c:859
+#: nscd/connections.c:943
#, c-format
msgid "cannot enable socket to accept connections: %s"
msgstr "nie mo¿na otworzyæ gniazda do przyjmowania po³±czeñ: %s"
-#: nscd/connections.c:955
+#: nscd/connections.c:1043
#, c-format
msgid "provide access to FD %d, for %s"
msgstr "udostêpnianie FD %d dla %s"
-#: nscd/connections.c:967
+#: nscd/connections.c:1055
#, c-format
msgid "cannot handle old request version %d; current version is %d"
msgstr "nie mo¿na obs³u¿yæ ¿±dañ w starej wersji %d; aktualna wersja to %d"
-#: nscd/connections.c:1009 nscd/connections.c:1062
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr "¿±danie od %ld nie obs³u¿one z powodu braku uprawnieñ"
+
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr "¿±danie od '%s' [%ld] nie obs³u¿one z powodu braku uprawnieñ"
+
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr "¿±danie nie obs³u¿one z powodu braku uprawnieñ"
+
+#: nscd/connections.c:1125 nscd/connections.c:1178
#, c-format
msgid "cannot write result: %s"
msgstr "nie mo¿na zapisaæ wyniku: %s"
-#: nscd/connections.c:1145
+#: nscd/connections.c:1261
#, c-format
msgid "error getting caller's id: %s"
msgstr "b³±d podczas pobierania identyfikatorów wywo³uj±cych: %s"
-#: nscd/connections.c:1204
+#: nscd/connections.c:1320
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "nie mo¿na otworzyæ /proc/self/cmdline: %s; wy³±czono tryb paranoiczny"
-#: nscd/connections.c:1218
+#: nscd/connections.c:1334
#, c-format
msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "nie mo¿na odczytaæ /proc/self/cmdline: %s; wy³±czono tryb paranoiczny"
-#: nscd/connections.c:1258
+#: nscd/connections.c:1374
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
msgstr "nie mo¿na zmieniæ na stary UID: %s; wy³±czono tryb paranoiczny"
-#: nscd/connections.c:1268
+#: nscd/connections.c:1384
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
msgstr "nie mo¿na zmieniæ na stary GID: %s; wy³±czono tryb paranoiczny"
-#: nscd/connections.c:1281
+#: nscd/connections.c:1397
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
msgstr "nie mo¿na przej¶æ do starego katalog roboczego: %s; wy³±czono tryb paranoiczny"
-#: nscd/connections.c:1310
+#: nscd/connections.c:1429
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
msgstr "ponowne wywo³anie nie powiod³o siê: %s; wy³±czono tryb paranoiczny"
-#: nscd/connections.c:1319
+#: nscd/connections.c:1438
#, c-format
msgid "cannot change current working directory to \"/\": %s"
msgstr "nie mo¿na zmieniæ bie¿±cego katalogu na \"/\": %s"
-#: nscd/connections.c:1437
+#: nscd/connections.c:1644
#, c-format
msgid "short read while reading request: %s"
msgstr "skrócony odczyt podczas czytania ¿±dania: `%s'"
-#: nscd/connections.c:1468
+#: nscd/connections.c:1677
#, c-format
msgid "key length in request too long: %d"
msgstr "d³ugo¶æ klucza w ¿±daniu zbyt du¿a: %d"
-#: nscd/connections.c:1481
+#: nscd/connections.c:1690
#, c-format
msgid "short read while reading request key: %s"
msgstr "skrócony odczyt podczas czytania klucza ¿±dania: %s"
-#: nscd/connections.c:1490
+#: nscd/connections.c:1699
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
msgstr "handle_request: odebrano ¿±danie (Wersja = %d) od procesu %ld"
-#: nscd/connections.c:1495
+#: nscd/connections.c:1704
#, c-format
msgid "handle_request: request received (Version = %d)"
msgstr "handle_request: odebrano ¿±danie (Wersja = %d)"
-#: nscd/connections.c:1856
+#: nscd/connections.c:1903 nscd/connections.c:2101
#, c-format
-msgid "could only start %d threads; terminating"
-msgstr "mo¿na uruchomiæ tylko %d w±tków; zakoñczenie"
+msgid "disabled inotify after read error %d"
+msgstr "inotify wy³±czone po b³êdzie odczytu %d"
+
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr "nie mo¿na zainicjowaæ zmiennej warunkowej"
-#: nscd/connections.c:1904 nscd/connections.c:1905 nscd/connections.c:1922
-#: nscd/connections.c:1931 nscd/connections.c:1949 nscd/connections.c:1960
-#: nscd/connections.c:1971
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr "nie mo¿na uruchomiæ w±tku czyszcz±cego; zakoñczenie"
+
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr "nie mo¿na uruchomiæ ¿adnego w±tku roboczego; zakoñczenie"
+
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
#, c-format
msgid "Failed to run nscd as user '%s'"
msgstr "Uruchomienie nscd jako u¿ytkownik '%s' nie powiod³o siê"
-#: nscd/connections.c:1923
+#: nscd/connections.c:2322
#, c-format
msgid "initial getgrouplist failed"
msgstr "pocz±tkowe getgrouplist nie powiod³o siê"
-#: nscd/connections.c:1932
+#: nscd/connections.c:2331
#, c-format
msgid "getgrouplist failed"
msgstr "getgrouplist nie powiod³o siê"
-#: nscd/connections.c:1950
+#: nscd/connections.c:2349
#, c-format
msgid "setgroups failed"
msgstr "setgroups nie powiod³o siê"
-#: nscd/grpcache.c:402 nscd/hstcache.c:418 nscd/initgrcache.c:412
-#: nscd/pwdcache.c:397 nscd/servicescache.c:343
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
#, c-format
msgid "short write in %s: %s"
msgstr "b³±d zapisu w %s: %s"
-#: nscd/grpcache.c:445 nscd/initgrcache.c:78
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
msgstr "Nie znaleziono \"%s\" w buforze grup!"
-#: nscd/grpcache.c:447 nscd/initgrcache.c:80
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
msgstr "Prze³adowywanie \"%s\" w buforze grup!"
-#: nscd/grpcache.c:524
+#: nscd/grpcache.c:517
#, c-format
msgid "Invalid numeric gid \"%s\"!"
msgstr "Nieprawid³owy liczbowy gid \"%s\"!"
-#: nscd/mem.c:383
+#: nscd/mem.c:457
#, c-format
msgid "freed %zu bytes in %s cache"
msgstr "zwolniono %zu bajtów w buforze %s"
-#: nscd/mem.c:512
+#: nscd/mem.c:594
#, c-format
msgid "no more memory for database '%s'"
msgstr "nie ma wiêcej pamiêci dla bazy danych '%s'"
-#: nscd/nscd.c:98
+#: nscd/nscd.c:101
msgid "Read configuration data from NAME"
msgstr "Odczyt konfiguracji z pliku NAZWA"
-#: nscd/nscd.c:100
+#: nscd/nscd.c:103
msgid "Do not fork and display messages on the current tty"
msgstr "Nie przechodzenie w t³o i wy¶wietlanie komunikatów na bie¿±cym terminalu"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "NUMBER"
msgstr "LICZBA"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "Start NUMBER threads"
msgstr "Uruchomienie takiej LICZBY w±tków"
-#: nscd/nscd.c:102
+#: nscd/nscd.c:105
msgid "Shut the server down"
msgstr "Zakoñczenie pracy serwera"
-#: nscd/nscd.c:103
-msgid "Print current configuration statistic"
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
msgstr "Wy¶wietlenie aktualnych statystyk konfiguracji"
-#: nscd/nscd.c:104
+#: nscd/nscd.c:107
msgid "TABLE"
msgstr "TABLICA"
-#: nscd/nscd.c:105
+#: nscd/nscd.c:108
msgid "Invalidate the specified cache"
msgstr "Uniewa¿nienie podanego bufora"
-#: nscd/nscd.c:106
+#: nscd/nscd.c:109
msgid "TABLE,yes"
msgstr "TABLICA,yes"
-#: nscd/nscd.c:107
+#: nscd/nscd.c:110
msgid "Use separate cache for each user"
msgstr "U¿ycie oddzielnego bufora dla ka¿dego u¿ytkownika"
# XXX moze zostawic oryginal albo zrobic ladniej -PK
-#: nscd/nscd.c:112
+#: nscd/nscd.c:115
msgid "Name Service Cache Daemon."
msgstr "Demon buforuj±cy us³ugi odwzorowania nazw."
-#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
#, c-format
msgid "wrong number of arguments"
msgstr "z³a liczba argumentów"
-#: nscd/nscd.c:154
+#: nscd/nscd.c:157
#, c-format
msgid "failure while reading configuration file; this is fatal"
msgstr "niepowodzenie podczas odczytu pliku konfiguracyjnego; koniec pracy"
-#: nscd/nscd.c:163
+#: nscd/nscd.c:166
#, c-format
msgid "already running"
msgstr "jest ju¿ uruchomiony"
-#: nscd/nscd.c:178 nscd/nscd.c:233
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
msgid "cannot fork"
msgstr "nie mo¿na wykonaæ fork"
-#: nscd/nscd.c:241
+#: nscd/nscd.c:244
#, c-format
msgid "cannot change current working directory to \"/\""
msgstr "nie mo¿na zmieniæ bie¿±cego katalogu na \"/\""
-#: nscd/nscd.c:249
+#: nscd/nscd.c:252
msgid "Could not create log file"
msgstr "Nie mo¿na utworzyæ pliku dziennika"
-#: nscd/nscd.c:302 nscd/nscd.c:327 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
msgid "Only root is allowed to use this option!"
msgstr "Tylko root mo¿e u¿ywaæ tej opcji!"
-#: nscd/nscd.c:364 nscd/nscd_stat.c:191
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr "'%s' nie jest znan± baz± danych"
+
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
msgid "write incomplete"
msgstr "zapis nie by³ kompletny"
-#: nscd/nscd.c:375
+#: nscd/nscd.c:381
#, c-format
msgid "cannot read invalidate ACK"
msgstr "nie mo¿na odczytaæ ACK dla uniewa¿nienia"
-#: nscd/nscd.c:381
+#: nscd/nscd.c:387
#, c-format
msgid "invalidation failed"
msgstr "uniewa¿nienie nie powiod³o siê"
-#: nscd/nscd.c:391
+#: nscd/nscd.c:397
#, c-format
msgid "secure services not implemented anymore"
msgstr "bezpieczne us³ugi nie s± ju¿ zaimplementowane"
@@ -3918,37 +3977,37 @@ msgstr "baza danych %s nie jest obs³ugiwana"
msgid "Parse error: %s"
msgstr "B³±d analizowania: %s"
-#: nscd/nscd_conf.c:193
+#: nscd/nscd_conf.c:194
#, c-format
msgid "Must specify user name for server-user option"
msgstr "Trzeba podaæ nazwê u¿ytkownika dla opcji server-user"
-#: nscd/nscd_conf.c:200
+#: nscd/nscd_conf.c:201
#, c-format
msgid "Must specify user name for stat-user option"
msgstr "Trzeba podaæ nazwê u¿ytkownika dla opcji stat-user"
-#: nscd/nscd_conf.c:244
+#: nscd/nscd_conf.c:245
#, c-format
msgid "invalid value for 'reload-count': %u"
msgstr "b³êdna warto¶æ dla 'reload-count': %u"
-#: nscd/nscd_conf.c:259
+#: nscd/nscd_conf.c:260
#, c-format
msgid "Must specify value for restart-interval option"
msgstr "Trzeba podaæ warto¶æ dla opcji restart-interval"
-#: nscd/nscd_conf.c:273
+#: nscd/nscd_conf.c:274
#, c-format
msgid "Unknown option: %s %s %s"
msgstr "Nieznana opcja: %s %s %s"
-#: nscd/nscd_conf.c:286
+#: nscd/nscd_conf.c:287
#, c-format
msgid "cannot get current working directory: %s; disabling paranoia mode"
msgstr "nie mo¿na pobraæ bie¿±cego katalogu: %s; wy³±czono tryb paranoiczny"
-#: nscd/nscd_conf.c:306
+#: nscd/nscd_conf.c:307
#, c-format
msgid "maximum file size for %s database too small"
msgstr "maksymalny rozmiar pliku dla bazy danych %s jest zbyt ma³y"
@@ -4078,17 +4137,17 @@ msgstr ""
"%15<PRIuMAX> przydzieleñ pamiêci nie powiod³o siê\n"
"%15s sprawdzanie zmian w /etc/%s\n"
-#: nscd/pwdcache.c:440
+#: nscd/pwdcache.c:443
#, c-format
msgid "Haven't found \"%s\" in password cache!"
msgstr "Nie znaleziono \"%s\" w buforze hase³!"
-#: nscd/pwdcache.c:442
+#: nscd/pwdcache.c:445
#, c-format
msgid "Reloading \"%s\" in password cache!"
msgstr "Prze³adowywanie \"%s\" w buforze hase³!"
-#: nscd/pwdcache.c:520
+#: nscd/pwdcache.c:523
#, c-format
msgid "Invalid numeric uid \"%s\"!"
msgstr "Nieprawid³owy liczbowy uid \"%s\"!"
@@ -4164,7 +4223,11 @@ msgstr "B³±d podczas pobierania kontekstu nscd"
msgid "Error getting sid from context"
msgstr "B³±d podczas pobierania sid z kontekstu"
-#: nscd/selinux.c:399
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr "brak wkompilowanej obs³ugi polityki bazy danych"
+
+#: nscd/selinux.c:407
#, c-format
msgid ""
"\n"
@@ -4210,28 +4273,24 @@ msgid "Service configuration to be used"
msgstr "U¿ycie tej konfiguracji us³ugi rozwi±zywania nazw"
#: nss/getent.c:62
-msgid ""
-"Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Pobranie wpisów z administracyjnej bazy danych.\vInstrukcje dotycz±ce zg³aszania b³êdów znajduj± siê pod adresem:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get entries from administrative database."
+msgstr "Odczyt wpisów z bazy administracyjnej."
-#: nss/getent.c:145 nss/getent.c:394
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
msgid "Enumeration not supported on %s\n"
msgstr "Wyliczanie nie obs³ugiwane dla %s\n"
-#: nss/getent.c:782
+#: nss/getent.c:794
#, c-format
msgid "Unknown database name"
msgstr "Nieznana baza danych"
-#: nss/getent.c:808
+#: nss/getent.c:820
msgid "Supported databases:\n"
msgstr "Obs³ugiwane bazy danych:\n"
-#: nss/getent.c:868
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
msgstr "Nieznana baza `%s'\n"
@@ -4305,151 +4364,165 @@ msgstr "Sk³adnia: %s [-v specyfikacja] nazwa_zmiennej [¶cie¿ka]\n"
msgid " %s -a [pathname]\n"
msgstr " %s -a [¶cie¿ka]\n"
-#: posix/getconf.c:1067
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
+"Sk³adnia: getconf [-v SPEC] ZMIENNA\n"
+" lub: getconf [-v SPEC] ZMIENNA_SC ¦CIE¯KA\n"
+"\n"
+"Odczyt warto¶ci konfiguracji dla zmiennej ZMIENNA lub zmiennej ZMIENNA_SC\n"
+"dla ¶cie¿ki ¦CIE¯KA. Je¶li podano SPEC, podawane s± warto¶ci dla ¶rodowiska\n"
+"kompilacji SPEC.\n"
+"\n"
+
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
msgstr "nieznana specyfikacja \"%s\""
-#: posix/getconf.c:1095
+#: posix/getconf.c:1109
#, c-format
msgid "Couldn't execute %s"
msgstr "Nie mo¿na wykonaæ %s"
-#: posix/getconf.c:1135 posix/getconf.c:1151
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
msgstr "niezdefiniowana"
-#: posix/getconf.c:1173
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
msgstr "Nierozpoznana zmienna `%s'"
-#: posix/getopt.c:571 posix/getopt.c:587
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: opcja `%s' jest niejednoznaczna\n"
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: opcja '%s' jest niejednoznaczna\n"
-#: posix/getopt.c:620 posix/getopt.c:624
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: opcja `--%s' nie mo¿e mieæ argumentów\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: opcja '--%s' nie mo¿e mieæ argumentów\n"
-#: posix/getopt.c:633 posix/getopt.c:638
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr "%s: opcja `%c%s' nie mo¿e mieæ argumentów\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: opcja '%c%s' nie mo¿e mieæ argumentów\n"
-#: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
-#: posix/getopt.c:1035
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: opcja `%s' musi mieæ argument\n"
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: opcja '%s' musi mieæ argument\n"
-#: posix/getopt.c:738 posix/getopt.c:741
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: nieznana opcja `--%s'\n"
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: nieznana opcja '--%s'\n"
-#: posix/getopt.c:749 posix/getopt.c:752
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: nieznana opcja `%c%s'\n"
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: nieznana opcja '%c%s'\n"
-#: posix/getopt.c:804 posix/getopt.c:807
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr "%s: niew³a¶ciwa opcja -- %c\n"
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: b³êdna opcja -- '%c'\n"
-#: posix/getopt.c:813 posix/getopt.c:816
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
-msgid "%s: invalid option -- %c\n"
-msgstr "%s: b³êdna opcja -- %c\n"
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: opcja musi mieæ argument -- '%c'\n"
-#: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
-#: posix/getopt.c:1106
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: opcja musi mieæ argument -- %c\n"
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: opcja '-W %s' jest niejednoznaczna\n"
-#: posix/getopt.c:937 posix/getopt.c:953
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: opcja `-W %s' jest niejednoznaczna\n"
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: opcja '-W %s' nie mo¿e mieæ argumentów\n"
-#: posix/getopt.c:977 posix/getopt.c:995
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr "%s: opcja `-W %s' nie mo¿e mieæ argumentów\n"
-
-#: posix/regcomp.c:135
+#: posix/regcomp.c:136
msgid "No match"
msgstr "Nic nie pasuje"
-#: posix/regcomp.c:138
+#: posix/regcomp.c:139
msgid "Invalid regular expression"
msgstr "B³êdne wyra¿enie regularne"
-#: posix/regcomp.c:141
+#: posix/regcomp.c:142
msgid "Invalid collation character"
msgstr "B³êdny znak sortowany"
-#: posix/regcomp.c:144
+#: posix/regcomp.c:145
msgid "Invalid character class name"
msgstr "B³êdna nazwa klasy znaku"
-#: posix/regcomp.c:147
+#: posix/regcomp.c:148
msgid "Trailing backslash"
msgstr "Koñcz±cy znak `\\'"
-#: posix/regcomp.c:150
+#: posix/regcomp.c:151
msgid "Invalid back reference"
msgstr "B³êdny odno¶nik wstecz"
-#: posix/regcomp.c:153
+#: posix/regcomp.c:154
msgid "Unmatched [ or [^"
msgstr "Niesparowane [ lub [^"
-#: posix/regcomp.c:156
+#: posix/regcomp.c:157
msgid "Unmatched ( or \\("
msgstr "Niesparowane ( lub \\("
-#: posix/regcomp.c:159
+#: posix/regcomp.c:160
msgid "Unmatched \\{"
msgstr "Niesparowane \\{"
-#: posix/regcomp.c:162
+#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
msgstr "B³êdna zawarto¶æ \\{\\}"
-#: posix/regcomp.c:165
+#: posix/regcomp.c:166
msgid "Invalid range end"
msgstr "B³êdny koniec zakresu"
-#: posix/regcomp.c:168
+#: posix/regcomp.c:169
msgid "Memory exhausted"
msgstr "Pamiêæ wyczerpana"
-#: posix/regcomp.c:171
+#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
msgstr "B³êdne poprzedzaj±ce wyra¿enie regularne"
-#: posix/regcomp.c:174
+#: posix/regcomp.c:175
msgid "Premature end of regular expression"
msgstr "Niespodziewany koniec wyra¿enia regularnego"
-#: posix/regcomp.c:177
+#: posix/regcomp.c:178
msgid "Regular expression too big"
msgstr "Wyra¿enie regularne jest za du¿e"
-#: posix/regcomp.c:180
+#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
msgstr "Niesparowane ) lub \\)"
-#: posix/regcomp.c:660
+#: posix/regcomp.c:681
msgid "No previous regular expression"
msgstr "Brak wyra¿enia regularnego"
-#: posix/wordexp.c:1798
+#: posix/wordexp.c:1832
msgid "parameter null or not set"
msgstr "parametr pusty lub nie ustawiony"
@@ -4533,133 +4606,138 @@ msgstr "Sygna³ czasu rzeczywistego %d"
msgid "Unknown signal %d"
msgstr "Nieznany sygna³ %d"
-#: sunrpc/auth_unix.c:114
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create: brak pamiêci\n"
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "brak pamiêci\n"
#: sunrpc/auth_unix.c:350
msgid "auth_unix.c: Fatal marshalling problem"
msgstr "auth_unix.c: Krytyczny problem z prze³±czaniem"
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; wersja poboczna = %lu, wersja g³ówna = %lu"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s: %s; wersja poboczna = %lu, wersja g³ówna = %lu"
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr "; bo = "
+#: sunrpc/clnt_perr.c:112
+#, c-format
+msgid "%s: %s; why = %s\n"
+msgstr "%s: %s; powód = %s\n"
-#: sunrpc/clnt_perr.c:132
+#: sunrpc/clnt_perr.c:114
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(nieznany b³±d uwierzytelnienia - %d)"
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s: %s; powód = (nieznany b³±d uwierzytelnienia - %d)\n"
-#: sunrpc/clnt_perr.c:172
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
msgstr "RPC: Sukces"
-#: sunrpc/clnt_perr.c:175
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
msgstr "RPC: Nie mo¿na zakodowaæ argumentów"
-#: sunrpc/clnt_perr.c:179
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
msgstr "RPC: Nie mo¿na zdekodowaæ wyniku"
-#: sunrpc/clnt_perr.c:183
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
msgstr "RPC: Niemo¿liwe wysy³anie"
-#: sunrpc/clnt_perr.c:187
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
msgstr "RPC: Niemo¿liwy odbiór"
-#: sunrpc/clnt_perr.c:191
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
msgstr "RPC: Czas oczekiwania przekroczony"
-#: sunrpc/clnt_perr.c:195
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
msgstr "RPC: Niekompatybilne wersje RPC"
-#: sunrpc/clnt_perr.c:199
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
msgstr "RPC: B³±d uwierzytelniania"
-#: sunrpc/clnt_perr.c:203
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
msgstr "RPC: Niedostêpny program"
-#: sunrpc/clnt_perr.c:207
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
msgstr "RPC: Niezgodno¶æ programu/wersji"
-#: sunrpc/clnt_perr.c:211
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
msgstr "RPC: Niedostêpna procedura"
-#: sunrpc/clnt_perr.c:215
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
msgstr "RPC: Serwer nie mo¿e zdekodowaæ argumentów"
-#: sunrpc/clnt_perr.c:219
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
msgstr "RPC: B³±d w odleg³ym systemie"
-#: sunrpc/clnt_perr.c:223
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
msgstr "RPC: Nieznany host"
-#: sunrpc/clnt_perr.c:227
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
msgstr "RCP: Nieznany protokó³"
-#: sunrpc/clnt_perr.c:231
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
msgstr "RPC: Awaria portmappera"
-#: sunrpc/clnt_perr.c:235
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
msgstr "RPC: Nie zarejestrowany program"
-#: sunrpc/clnt_perr.c:239
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
msgstr "RPC: Nieudane (niesprecyzowany b³±d)"
-#: sunrpc/clnt_perr.c:280
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
msgstr "RPC: (nieznany kod b³êdu)"
-#: sunrpc/clnt_perr.c:342
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
msgstr "Uwierzytelnienie poprawne"
-#: sunrpc/clnt_perr.c:345
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
msgstr "B³êdne uwierzytelnienie klienta"
-#: sunrpc/clnt_perr.c:349
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
msgstr "Serwer odrzuci³ wierzytelno¶æ"
-#: sunrpc/clnt_perr.c:353
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
msgstr "B³êdny weryfikator klienta"
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
msgstr "Serwer odrzuci³ weryfikacjê"
-#: sunrpc/clnt_perr.c:361
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
msgstr "Wierzytelno¶æ klienta jest zbyt ma³a"
-#: sunrpc/clnt_perr.c:365
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
msgstr "B³êdny weryfikator serwera"
-#: sunrpc/clnt_perr.c:369
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
msgstr "Nieudane (nieustalony b³±d)"
@@ -4667,18 +4745,6 @@ msgstr "Nieudane (nieustalony b³±d)"
msgid "clnt_raw.c: fatal header serialization error"
msgstr "clnt_raw.c: krytyczny b³±d serializacji nag³ówka"
-#: sunrpc/clnt_tcp.c:131
-msgid "clnttcp_create: out of memory\n"
-msgstr "clnttcp_create: brak pamiêci\n"
-
-#: sunrpc/clnt_udp.c:139
-msgid "clntudp_create: out of memory\n"
-msgstr "clntudp_create: brak pamiêci\n"
-
-#: sunrpc/clnt_unix.c:128
-msgid "clntunix_create: out of memory\n"
-msgstr "clntunix_create: brak pamiêci\n"
-
#: sunrpc/pm_getmaps.c:83
msgid "pmap_getmaps.c: rpc problem"
msgstr "pmap_getmaps.c: problem rpc"
@@ -4707,119 +4773,242 @@ msgstr "Problem z nas³uchem przy rozg³aszaniu"
msgid "Cannot receive reply to broadcast"
msgstr "Nie mo¿na otrzymaæ odpowiedzi na rozg³aszanie"
-#: sunrpc/rpc_main.c:286
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr "%s: wyj¶cie nadpisze %s\n"
-#: sunrpc/rpc_main.c:293
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr "%s: nie mo¿na otworzyæ %s: %m\n"
-#: sunrpc/rpc_main.c:305
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
msgstr "%s: podczas zapisywania wyj¶cia do %s: %m"
-#: sunrpc/rpc_main.c:340
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
msgstr "nie mo¿na odnale¼æ preprocesora C: %s \n"
-#: sunrpc/rpc_main.c:348
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
msgstr "nie mo¿na odnale¼æ preprocesora C (cpp)\n"
-#: sunrpc/rpc_main.c:417
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
msgstr "%s: preprocesor C zakoñczy³ pracê z sygna³em %d\n"
-#: sunrpc/rpc_main.c:420
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
msgstr "%s: preprocesor C zakoñczy³ pracê z kodem wyj¶cia %d\n"
-#: sunrpc/rpc_main.c:460
+#: sunrpc/rpc_main.c:464
#, c-format
msgid "illegal nettype: `%s'\n"
msgstr "b³êdny typ sieci: '%s'\n"
-#: sunrpc/rpc_main.c:1122
+#: sunrpc/rpc_main.c:1130
#, c-format
msgid "rpcgen: too many defines\n"
msgstr "rpcgen: za du¿o definicji\n"
-#: sunrpc/rpc_main.c:1134
+#: sunrpc/rpc_main.c:1142
#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr "rpcgen: b³êdne kodowanie arglist\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1167
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
msgstr "plik `%s' ju¿ istnieje i mo¿e zostaæ nadpisany\n"
-#: sunrpc/rpc_main.c:1212
+#: sunrpc/rpc_main.c:1220
#, c-format
msgid "Cannot specify more than one input file!\n"
msgstr "Mo¿na podaæ tylko jeden plik wej¶ciowy!\n"
-#: sunrpc/rpc_main.c:1382
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
msgstr "Ta implementacja nie obs³uguje kodu w nowym stylu ani bezpiecznego dla w±tków!\n"
-#: sunrpc/rpc_main.c:1391
+#: sunrpc/rpc_main.c:1403
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
msgstr "Nie mo¿na u¿ywaæ flagi id_sieci z flag± inetd!\n"
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
msgstr "Flagi id_sieci mo¿na u¿ywaæ tylko z TIRPC!\n"
-#: sunrpc/rpc_main.c:1410
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
msgstr "Nowa sk³adnia opcji nie pozwala na u¿ywanie flagi table!\n"
-#: sunrpc/rpc_main.c:1429
+#: sunrpc/rpc_main.c:1441
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
msgstr "flagi generowania szablonów wymagaj± podania \"pliku_we\".\n"
-#: sunrpc/rpc_main.c:1434
+#: sunrpc/rpc_main.c:1446
#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr "Nie mo¿na podaæ wiêcej ni¿ jednej flagi generowania pliku!\n"
-#: sunrpc/rpc_main.c:1443
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
msgstr "sk³adnia: %s plik_we\n"
-#: sunrpc/rpc_main.c:1444
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
msgstr "\t%s [-abkCLNTM][-Dnazwa[=warto¶æ]] [-i rozmiar] [-I [-K sekund]] [-Y ¶cie¿ka] plik_we\n"
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o plik_wy] [plik_we]\n"
-#: sunrpc/rpc_main.c:1448
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
msgstr "\t%s [-s typ_sieci]* [-o plik_wy] [plik_we]\n"
-#: sunrpc/rpc_main.c:1449
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
msgstr "\t%s [-n id_sieci]* [-o plik_wy] [plik_we]\n"
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr "opcje:\n"
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr "-a\t\tgenerowanie wszystkich plików, tak¿e przyk³adów\n"
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr "-b\t\ttryb kompatybilno¶ci wstecznej (generuje kod dla SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr "-c\t\tgenerowanie funkcji XDR\n"
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr "-C\t\ttryb ANSI C\n"
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr "-Dnazwa[=warto¶æ]\tdefinicja symbolu (to samo co #define)\n"
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr "-h\t\tgenerowanie pliku nag³ówkowego\n"
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr "-i rozmiar\trozmiar przy którym zacz±æ generowaæ kod inline\n"
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr "-I\t\tgenerowanie kodu do obs³ugi inetd w serwerze (dla SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr "-K sekund\tserwer koñczy pracê po K sekund nieaktywno¶ci\n"
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr "-l\t\tgenerowanie za¶lepek dla strony klienckiej\n"
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr "-L\t\tzapisywanie b³êdów serwera do dziennika systemowego\n"
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr "-m\t\tgenerowanie za¶lepek dla strony serwera\n"
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr "-M\t\tgenerowanie kodu bezpiecznego dla w±tków (MT-safe)\n"
+
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr "-n id_sieci\tgenerowanie kodu serwera obs³uguj±cego podany id_sieci\n"
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr "-N\t\tobs³uga wielu argumentów i wywo³ywania przez warto¶æ\n"
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr "-o plik_wy\tnazwa pliku wyj¶ciowego\n"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr "-s typ_sieci\tgenerowanie kodu serwera obs³uguj±cego podany typ_sieci\n"
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr "-Sc\t\tgenerowanie przyk³adowego kodu klienta u¿ywaj±cego procedur zdalnych\n"
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr "-Ss\t\tgenerowanie przyk³adowego kodu serwera definiuj±cego procedury zdalne\n"
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr "-Sm \t\tgenerowanie szablonu makefile\n"
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr "-t\t\tgenerowanie tablicy wysy³ania RPC\n"
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr "-T\t\tgenerowanie kodu obs³uguj±cego tablice wysy³ania RPC\n"
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr "-Y ¶cie¿ka\tnazwa katalogu, w którym znajduje siê preprocesor C (cpp)\n"
+
#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
msgstr "spodziewana sta³a lub identyfikator"
@@ -4840,82 +5029,82 @@ msgstr "pusty ³añcuch znaków"
msgid "preprocessor error"
msgstr "b³±d preprocesora"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
msgstr "program %lu jest niedostêpny\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
msgstr "program %lu w wersji %lu jest niedostêpny\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr "program %lu w wersji %lu gotowy i oczekuje\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
msgstr "rpcinfo: kontakt z portmapperem niemo¿liwy"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
msgstr "Brak zarejestrowanych zdalnych programów.\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
msgstr " program wer. proto port\n"
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
msgstr "(nieznany)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
msgstr "rpcinfo: rozg³aszanie nieudane: %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
msgstr "Niestety nie jeste¶ rootem\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
msgstr "rpcinfo: Nie mo¿na usun±æ rejestracji programu %s w wersji %s\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
msgstr "Sk³adnia: rpcinfo [ -n nr_portu ] -u host nr_programu [ nr_wersji ]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr " rpcinfo [ -n nr_portu ] -t host nr_programu [ nr_wersji ]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
msgstr " rpcinfo -p [ host ]\n"
# collation symbol...
# collation element... dlaczego 'element ³±cz±cy' ??? -pk
#
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
msgstr " rpcinfo -b nr_programu nr_wersji\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
msgstr " rpcinfo -d nr_programu nr_wersji\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr "rpcinfo: nieznana us³uga %s\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
msgstr "rpcinfo: nieznany host %s\n"
@@ -4964,14 +5153,6 @@ msgstr "svc_tcp.c - problemy przy tworzeniu gniazda tcp"
msgid "svc_tcp.c - cannot getsockname or listen"
msgstr "svc_tcp.c - nie mo¿na wykonaæ getsockname lub listen"
-#: sunrpc/svc_tcp.c:179
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create: brak pamiêci\n"
-
-#: sunrpc/svc_tcp.c:218
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp: makefd_xprt: brak pamiêci\n"
-
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
msgstr "svcudp_create: problemy przy tworzeniu gniazda"
@@ -4980,39 +5161,35 @@ msgstr "svcudp_create: problemy przy tworzeniu gniazda"
msgid "svcudp_create - cannot getsockname"
msgstr "svcudp_create - nie mo¿na wykonaæ getsockname"
-#: sunrpc/svc_udp.c:152
-msgid "svcudp_create: out of memory\n"
-msgstr "svcudp_create: brak pamiêci\n"
-
-#: sunrpc/svc_udp.c:174
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
msgstr "svcudp_create: xp_pad jest za ma³e na IP_PKTINFO\n"
-#: sunrpc/svc_udp.c:474
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
msgstr "enablecache: bufor jest ju¿ aktywny"
-#: sunrpc/svc_udp.c:480
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
msgstr "enablecache: nie mo¿na przydzieliæ bufora"
-#: sunrpc/svc_udp.c:489
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
msgstr "enablecache: nie mo¿na przydzieliæ danych bufora"
-#: sunrpc/svc_udp.c:497
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
msgstr "enablecache: nie mo¿na przydzieliæ kolejki dla bufora"
-#: sunrpc/svc_udp.c:532
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
msgstr "cache_set: nie znaleziono wpisu mo¿liwego do powtórnego wykorzystania"
-#: sunrpc/svc_udp.c:543
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
msgstr "cache_set: przydzielenie pamiêci dla nowego wpisu jest niemo¿liwe"
-#: sunrpc/svc_udp.c:550
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
msgstr "cache_set: nie mo¿na przydzieliæ nowego rpc_buffer"
@@ -5024,34 +5201,6 @@ msgstr "svc_unix.c - problemy przy tworzeniu gniazda AF_UNIX"
msgid "svc_unix.c - cannot getsockname or listen"
msgstr "svc_unix.c - nie mo¿na wykonaæ getsockname lub listen"
-#: sunrpc/svc_unix.c:176
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create: brak pamiêci\n"
-
-#: sunrpc/svc_unix.c:215
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix: makefd_xprt: brak pamiêci\n"
-
-#: sunrpc/xdr.c:566
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes: brak pamiêci\n"
-
-#: sunrpc/xdr.c:718
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string: brak pamiêci\n"
-
-#: sunrpc/xdr_array.c:106
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array: brak pamiêci\n"
-
-#: sunrpc/xdr_rec.c:156
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create: brak pamiêci\n"
-
-#: sunrpc/xdr_ref.c:86
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_reference: brak pamiêci\n"
-
#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
msgid "Hangup"
msgstr "Roz³±czenie"
@@ -6117,76 +6266,85 @@ msgstr "%s jest dla nieznanej maszyny %d.\n"
msgid "makecontext: does not know how to handle more than 8 arguments\n"
msgstr "makecontext: nie wiadomo jak obs³u¿yæ wiêcej ni¿ 8 argumentów\n"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
+"Sk³adnia: lddlibc4 PLIK\n"
+"\n"
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
msgid "cannot open `%s'"
msgstr "nie mo¿na otworzyæ `%s'"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
msgid "cannot read header from `%s'"
msgstr "nie mo¿na przeczytaæ nag³ówka z `%s'"
-#: timezone/zdump.c:211
+#: timezone/zdump.c:210
msgid "lacks alphabetic at start"
msgstr "nie zaczyna siê od litery"
-#: timezone/zdump.c:213
+#: timezone/zdump.c:212
msgid "has fewer than 3 alphabetics"
msgstr "ma mniej ni¿ 3 litery"
-#: timezone/zdump.c:215
+#: timezone/zdump.c:214
msgid "has more than 6 alphabetics"
msgstr "ma wiêcej ni¿ 6 liter"
-#: timezone/zdump.c:223
+#: timezone/zdump.c:222
msgid "differs from POSIX standard"
msgstr "ró¿ni siê od standardu POSIX"
-#: timezone/zdump.c:229
+#: timezone/zdump.c:228
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
msgstr "%s: uwaga: skrót strefy \"%s\" \"%s\" %s\n"
-#: timezone/zdump.c:280
+#: timezone/zdump.c:279
#, c-format
msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
msgstr "%s: sk³adnia: %s [ --version ] [ -v ] [ -c [rokpocz,]rokkoñc ] nazwa_strefy...\n"
-#: timezone/zdump.c:297
+#: timezone/zdump.c:296
#, c-format
msgid "%s: wild -c argument %s\n"
msgstr "%s: niepoprawny argument -c %s\n"
-#: timezone/zdump.c:388
+#: timezone/zdump.c:387
msgid "Error writing to standard output"
msgstr "B³±d podczas pisania na standardowe wyj¶cie"
-#: timezone/zdump.c:411
+#: timezone/zdump.c:410
#, c-format
msgid "%s: use of -v on system with floating time_t other than float or double\n"
msgstr "%s: u¿ycie -v na systemie ze zmiennoprzecinkowym time_t innym ni¿ float lub double\n"
-#: timezone/zic.c:392
+#: timezone/zic.c:388
#, c-format
msgid "%s: Memory exhausted: %s\n"
msgstr "%s: Brak pamiêci: %s\n"
-#: timezone/zic.c:451
+#: timezone/zic.c:434
#, c-format
msgid "\"%s\", line %d: %s"
msgstr "\"%s\", linia %d: %s"
-#: timezone/zic.c:454
+#: timezone/zic.c:437
#, c-format
msgid " (rule from \"%s\", line %d)"
msgstr " (regu³a z \"%s\", linia %d)"
-#: timezone/zic.c:466
+#: timezone/zic.c:449
msgid "warning: "
msgstr "uwaga: "
-#: timezone/zic.c:476
+#: timezone/zic.c:459
#, c-format
msgid ""
"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
@@ -6195,336 +6353,532 @@ msgstr ""
"%s: sk³adnia: %s [ --version ] [ -v ] [ -l czas_lokalny ] [ -p regu³y_POSIX ] \\\n"
"\t[ -d katalog ] [ -L sek_przestêpne ] [ -y yearistype ] [ plik ...]\n"
-#: timezone/zic.c:511
+#: timezone/zic.c:494
msgid "wild compilation-time specification of zic_t"
msgstr "niepoprawna specyfikacja zic_t w czasie kompilacji"
-#: timezone/zic.c:528
+#: timezone/zic.c:511
#, c-format
msgid "%s: More than one -d option specified\n"
msgstr "%s: Podano wiêcej ni¿ jedn± opcjê -d\n"
-#: timezone/zic.c:538
+#: timezone/zic.c:521
#, c-format
msgid "%s: More than one -l option specified\n"
msgstr "%s: Podano wiêcej ni¿ jedn± opcjê -l\n"
-#: timezone/zic.c:548
+#: timezone/zic.c:531
#, c-format
msgid "%s: More than one -p option specified\n"
msgstr "%s: Podano wiêcej ni¿ jedn± opcjê -p\n"
-#: timezone/zic.c:558
+#: timezone/zic.c:541
#, c-format
msgid "%s: More than one -y option specified\n"
msgstr "%s: Podano wiêcej ni¿ jedn± opcjê -y\n"
-#: timezone/zic.c:568
+#: timezone/zic.c:551
#, c-format
msgid "%s: More than one -L option specified\n"
msgstr "%s: Podano wiêcej ni¿ jedn± opcjê -L\n"
-#: timezone/zic.c:617
+#: timezone/zic.c:600
msgid "link to link"
msgstr "dowi±zanie do dowi±zania"
-#: timezone/zic.c:682
+#: timezone/zic.c:665
msgid "hard link failed, symbolic link used"
msgstr "stworzenie dowi±zania zwyk³ego nie powiod³o siê, u¿yto symbolicznego"
-#: timezone/zic.c:690
+#: timezone/zic.c:673
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
msgstr "%s: Nie mo¿na dowi±zaæ %s do %s: %s\n"
-#: timezone/zic.c:762 timezone/zic.c:764
+#: timezone/zic.c:745 timezone/zic.c:747
msgid "same rule name in multiple files"
msgstr "ta sama nazwa nazwa regu³y w ró¿nych plikach"
-#: timezone/zic.c:805
+#: timezone/zic.c:788
msgid "unruly zone"
msgstr "strefa bez regu³"
-#: timezone/zic.c:812
+#: timezone/zic.c:795
#, c-format
msgid "%s in ruleless zone"
msgstr "%s w strefie dla której nie zdefiniowano regu³"
-#: timezone/zic.c:833
+#: timezone/zic.c:816
msgid "standard input"
msgstr "standardowe wej¶cie"
-#: timezone/zic.c:838
+#: timezone/zic.c:821
#, c-format
msgid "%s: Can't open %s: %s\n"
msgstr "%s: Nie mo¿na otworzyæ %s: %s\n"
-#: timezone/zic.c:849
+#: timezone/zic.c:832
msgid "line too long"
msgstr "za d³uga linia"
-#: timezone/zic.c:869
+#: timezone/zic.c:852
msgid "input line of unknown type"
msgstr "nieznany typ linii wej¶ciowej"
-#: timezone/zic.c:885
+#: timezone/zic.c:868
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
msgstr "%s: linia Leap nie znajduje siê w pliku sekund przestêpnych %s\n"
-#: timezone/zic.c:892 timezone/zic.c:1329 timezone/zic.c:1351
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
msgstr "%s: panika: B³êdna l-warto¶æ %d\n"
-#: timezone/zic.c:900
+#: timezone/zic.c:883
#, c-format
msgid "%s: Error reading %s\n"
msgstr "%s: B³±d odczytu %s\n"
-#: timezone/zic.c:907
+#: timezone/zic.c:890
#, c-format
msgid "%s: Error closing %s: %s\n"
msgstr "%s: B³±d podczas zamykania %s: %s\n"
-#: timezone/zic.c:912
+#: timezone/zic.c:895
msgid "expected continuation line not found"
msgstr "brak spodziewanej linii kontynuacji"
-#: timezone/zic.c:956 timezone/zic.c:2489 timezone/zic.c:2508
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
msgid "time overflow"
msgstr "przepe³nienie czasu"
-#: timezone/zic.c:960
+#: timezone/zic.c:943
msgid "24:00 not handled by pre-1998 versions of zic"
msgstr "24:00 nie by³a obs³ugiwana przez wersje zic sprzed 1998 roku"
-#: timezone/zic.c:963
+#: timezone/zic.c:946
msgid "values over 24 hours not handled by pre-2007 versions of zic"
msgstr "warto¶ci wiêksze ni¿ 24 godziny nie by³y obs³ugiwane przez zic sprzed 2007 roku"
-#: timezone/zic.c:976
+#: timezone/zic.c:959
msgid "wrong number of fields on Rule line"
msgstr "z³a liczba pól w linii Rule"
-#: timezone/zic.c:980
+#: timezone/zic.c:963
msgid "nameless rule"
msgstr "bezimienna regu³a"
-#: timezone/zic.c:985
+#: timezone/zic.c:968
msgid "invalid saved time"
msgstr "b³êdny czas oszczêdno¶ci"
-#: timezone/zic.c:1006
+#: timezone/zic.c:989
msgid "wrong number of fields on Zone line"
msgstr "z³a liczba pól w linii Zone"
-#: timezone/zic.c:1012
+#: timezone/zic.c:995
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
msgstr "Linia \"Zone %s\" i opcja -l wykluczaj± siê wzajemnie"
-#: timezone/zic.c:1020
+#: timezone/zic.c:1003
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
msgstr "Linia \"Zone %s\" i opcja -p wykluczaj± siê wzajemnie"
-#: timezone/zic.c:1032
+#: timezone/zic.c:1015
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
msgstr "powtórzona nazwa strefy %s (plik \"%s\", linia %d)"
-#: timezone/zic.c:1048
+#: timezone/zic.c:1031
msgid "wrong number of fields on Zone continuation line"
msgstr "z³a liczba pól w linii kontynuacji Zone"
-#: timezone/zic.c:1088
+#: timezone/zic.c:1071
msgid "invalid UTC offset"
msgstr "nieprawid³owe przesuniêcie UTC"
-#: timezone/zic.c:1091
+#: timezone/zic.c:1074
msgid "invalid abbreviation format"
msgstr "nieprawid³owy format skrótu"
-#: timezone/zic.c:1120
+#: timezone/zic.c:1103
msgid "Zone continuation line end time is not after end time of previous line"
msgstr "Czas koñcowy linii kontynuacji Zone nie jest po czasie koñcowym poprzedniej linii"
-#: timezone/zic.c:1148
+#: timezone/zic.c:1131
msgid "wrong number of fields on Leap line"
msgstr "z³a liczba pól w linii Leap"
-#: timezone/zic.c:1157
+#: timezone/zic.c:1140
msgid "invalid leaping year"
msgstr "nieprawid³owy rok przestêpny"
-#: timezone/zic.c:1177 timezone/zic.c:1283
+#: timezone/zic.c:1160 timezone/zic.c:1266
msgid "invalid month name"
msgstr "nieprawid³owa nazwa miesi±ca"
-#: timezone/zic.c:1190 timezone/zic.c:1396 timezone/zic.c:1410
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
msgid "invalid day of month"
msgstr "nieprawid³owy dzieñ miesi±ca"
-#: timezone/zic.c:1195
+#: timezone/zic.c:1178
msgid "time before zero"
msgstr "czas przed zerem"
-#: timezone/zic.c:1199
+#: timezone/zic.c:1182
msgid "time too small"
msgstr "czas zbyt ma³y"
-#: timezone/zic.c:1203
+#: timezone/zic.c:1186
msgid "time too large"
msgstr "czas zbyt du¿y"
-#: timezone/zic.c:1207 timezone/zic.c:1312
+#: timezone/zic.c:1190 timezone/zic.c:1295
msgid "invalid time of day"
msgstr "nieprawid³owa pora dnia"
-#: timezone/zic.c:1226
+#: timezone/zic.c:1209
msgid "illegal CORRECTION field on Leap line"
msgstr "b³êdne pole CORRECTION w linii Leap"
-#: timezone/zic.c:1231
+#: timezone/zic.c:1214
msgid "illegal Rolling/Stationary field on Leap line"
msgstr "b³êdne pole Rolling/Stationary w linii Leap"
-#: timezone/zic.c:1247
+#: timezone/zic.c:1230
msgid "wrong number of fields on Link line"
msgstr "z³a liczba pól w linii Link"
-#: timezone/zic.c:1251
+#: timezone/zic.c:1234
msgid "blank FROM field on Link line"
msgstr "puste pole FROM w linii Link"
-#: timezone/zic.c:1255
+#: timezone/zic.c:1238
msgid "blank TO field on Link line"
msgstr "puste pole TO w linii Link"
-#: timezone/zic.c:1333
+#: timezone/zic.c:1316
msgid "invalid starting year"
msgstr "nieprawid³owy rok pocz±tkowy"
-#: timezone/zic.c:1355
+#: timezone/zic.c:1338
msgid "invalid ending year"
msgstr "nieprawid³owy rok koñcowy"
-#: timezone/zic.c:1359
+#: timezone/zic.c:1342
msgid "starting year greater than ending year"
msgstr "rok pocz±tkowy jest pó¼niejszy ni¿ koñcowy"
-#: timezone/zic.c:1366
+#: timezone/zic.c:1349
msgid "typed single year"
msgstr "podano pojedynczy rok"
-#: timezone/zic.c:1401
+#: timezone/zic.c:1384
msgid "invalid weekday name"
msgstr "nieprawid³owa nazwa dnia tygodnia"
-#: timezone/zic.c:1579
+#: timezone/zic.c:1562
#, c-format
msgid "%s: Can't remove %s: %s\n"
msgstr "%s: Nie mo¿na usun±æ %s: %s\n"
-#: timezone/zic.c:1589
+#: timezone/zic.c:1572
#, c-format
msgid "%s: Can't create %s: %s\n"
msgstr "%s: Nie mo¿na utworzyæ %s: %s\n"
-#: timezone/zic.c:1739
+#: timezone/zic.c:1722
#, c-format
msgid "%s: Error writing %s\n"
msgstr "%s: B³±d podczas zapisu do %s\n"
-#: timezone/zic.c:2031
+#: timezone/zic.c:2015
msgid "no POSIX environment variable for zone"
msgstr "brak zmiennej ¶rodowiskowej POSIX dla strefy"
# jak ladnie przetlumaczyc ten until time? -PK
-#: timezone/zic.c:2185
+#: timezone/zic.c:2172
msgid "can't determine time zone abbreviation to use just after until time"
msgstr "nie mo¿na okre¶liæ skrótu strefy czasowej po koñcu przedzia³u czasu"
-#: timezone/zic.c:2231
+#: timezone/zic.c:2218
msgid "too many transitions?!"
msgstr "za du¿o konwersji?!"
-#: timezone/zic.c:2250
+#: timezone/zic.c:2237
msgid "internal error - addtype called with bad isdst"
msgstr "b³±d wewnêtrzny - addtype wywo³ane z b³êdnym isdst"
-#: timezone/zic.c:2254
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad ttisstd"
msgstr "b³±d wewnêtrzny - addtype wywo³ane z b³êdnym ttisstd"
-#: timezone/zic.c:2258
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisgmt"
msgstr "b³±d wewnêtrzny - addtype wywo³ane z b³êdnym ttisgmt"
-#: timezone/zic.c:2277
+#: timezone/zic.c:2264
msgid "too many local time types"
msgstr "za du¿o lokalnych typów czasu"
-#: timezone/zic.c:2281
+#: timezone/zic.c:2268
msgid "UTC offset out of range"
msgstr "przesuniêcie wzglêdem UTC poza zakresem"
-#: timezone/zic.c:2309
+#: timezone/zic.c:2296
msgid "too many leap seconds"
msgstr "za du¿o sekund przestêpnych"
-#: timezone/zic.c:2315
+#: timezone/zic.c:2302
msgid "repeated leap second moment"
msgstr "powtórzona chwila wystêpowania sekund przestêpnych"
-#: timezone/zic.c:2367
+#: timezone/zic.c:2354
msgid "Wild result from command execution"
msgstr "Osobliwy wynik wykonania polecenia"
-#: timezone/zic.c:2368
+#: timezone/zic.c:2355
#, c-format
msgid "%s: command was '%s', result was %d\n"
msgstr "%s: polecenie `%s' zwróci³o %d\n"
-#: timezone/zic.c:2466
+#: timezone/zic.c:2453
msgid "Odd number of quotation marks"
msgstr "Nieparzysta liczba cudzys³owów"
-#: timezone/zic.c:2555
+#: timezone/zic.c:2542
msgid "use of 2/29 in non leap-year"
msgstr "u¿ycie 2/29 w roku nieprzestêpnym"
-#: timezone/zic.c:2590
+#: timezone/zic.c:2577
msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
msgstr "regu³a przekracza pocz±tek/koniec miesi±ca - nie zadzia³a z wersjami zic sprzed 2004 roku"
-#: timezone/zic.c:2622
+#: timezone/zic.c:2609
msgid "time zone abbreviation lacks alphabetic at start"
msgstr "skrót nazwy strefy czasowej nie zaczyna siê od litery"
-#: timezone/zic.c:2624
+#: timezone/zic.c:2611
msgid "time zone abbreviation has more than 3 alphabetics"
msgstr "skrót nazwy strefy czasowej ma mniej ni¿ 3 litery"
-#: timezone/zic.c:2626
+#: timezone/zic.c:2613
msgid "time zone abbreviation has too many alphabetics"
msgstr "skrót nazwy strefy czasowej ma zbyt du¿o liter"
-#: timezone/zic.c:2636
+#: timezone/zic.c:2623
msgid "time zone abbreviation differs from POSIX standard"
msgstr "skrót nazwy strefy czasowej ró¿ni siê od standardu POSIX"
-#: timezone/zic.c:2648
+#: timezone/zic.c:2635
msgid "too many, or too long, time zone abbreviations"
msgstr "za d³ugie lub za du¿o skrótów stref czasowych"
-#: timezone/zic.c:2689
+#: timezone/zic.c:2676
#, c-format
msgid "%s: Can't create directory %s: %s\n"
msgstr "%s: Nie mo¿na utworzyæ katalogu %s: %s\n"
-#: timezone/zic.c:2711
+#: timezone/zic.c:2698
#, c-format
msgid "%s: %d did not sign extend correctly\n"
msgstr "%s: %d niepoprawnie rozszerzy³ znak\n"
+
+#~ msgid "cannot create searchlist"
+#~ msgstr "nie mo¿na utworzyæ listy przeszukiwañ"
+
+#~ msgid ""
+#~ "Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "Odczyt i wy¶wietlanie danych profiluj±cych dla obiektów wspó³dzielonych.\vInstrukcje dotycz±ce zg³aszania b³êdów znajduj± siê pod adresem:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#, fuzzy
+#~ msgid "%s: stopping date is invalid in string %Zd in `era' field"
+#~ msgstr "%s: niepoprawna data pocz±tkowa w ³añcuchu %Zd w polu `era'"
+
+#~ msgid ""
+#~ "Get locale-specific information.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "Pobranie informacji dotycz±cych lokalizacji.\vInstrukcje dotycz±ce zg³aszania b³êdów znajduj± siê pod adresem:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#~ msgid ""
+#~ "Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+#~ msgstr ""
+#~ "Pobranie wpisów z administracyjnej bazy danych.\vInstrukcje dotycz±ce zg³aszania b³êdów znajduj± siê pod adresem:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\n"
+
+#, fuzzy
+#~ msgid "%s: illegal option -- %c\n"
+#~ msgstr "%s: b³êdna opcja -- '%c'\n"
+
+#, fuzzy
+#~ msgid "authunix_create: out of memory\n"
+#~ msgstr "registerrpc: brak pamiêci\n"
+
+#, fuzzy
+#~ msgid "clnttcp_create: out of memory\n"
+#~ msgstr "registerrpc: brak pamiêci\n"
+
+#, fuzzy
+#~ msgid "clntudp_create: out of memory\n"
+#~ msgstr "registerrpc: brak pamiêci\n"
+
+#, fuzzy
+#~ msgid "clntunix_create: out of memory\n"
+#~ msgstr "registerrpc: brak pamiêci\n"
+
+#, fuzzy
+#~ msgid "svctcp_create: out of memory\n"
+#~ msgstr "svc_run - brak pamiêci"
+
+#, fuzzy
+#~ msgid "svc_tcp: makefd_xprt: out of memory\n"
+#~ msgstr "svc_run - brak pamiêci"
+
+#, fuzzy
+#~ msgid "svcudp_create: out of memory\n"
+#~ msgstr "svc_run - brak pamiêci"
+
+#, fuzzy
+#~ msgid "svcunix_create: out of memory\n"
+#~ msgstr "svc_run - brak pamiêci"
+
+#, fuzzy
+#~ msgid "svc_unix: makefd_xprt: out of memory\n"
+#~ msgstr "svc_run - brak pamiêci"
+
+#, fuzzy
+#~ msgid "xdr_bytes: out of memory\n"
+#~ msgstr "registerrpc: brak pamiêci\n"
+
+#, fuzzy
+#~ msgid "xdr_string: out of memory\n"
+#~ msgstr "registerrpc: brak pamiêci\n"
+
+#, fuzzy
+#~ msgid "xdr_array: out of memory\n"
+#~ msgstr "registerrpc: brak pamiêci\n"
+
+#, fuzzy
+#~ msgid "xdrrec_create: out of memory\n"
+#~ msgstr "registerrpc: brak pamiêci\n"
+
+#, fuzzy
+#~ msgid "xdr_reference: out of memory\n"
+#~ msgstr "registerrpc: brak pamiêci\n"
+
+#~ msgid ""
+#~ "Trace execution of program by printing currently executed function.\n"
+#~ "\n"
+#~ " --data=FILE Don't run the program, just print the data from FILE.\n"
+#~ "\n"
+#~ " -?,--help Print this help and exit\n"
+#~ " --usage Give a short usage message\n"
+#~ " -V,--version Print version information and exit\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are also mandatory for any corresponding\n"
+#~ "short options.\n"
+#~ "\n"
+#~ "For bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\\n"
+#~ msgstr ""
+#~ "¦ledzenie wykonywania programu poprzez wypisywanie aktualnie wykonywanych\n"
+#~ "funkcji.\n"
+#~ "\n"
+#~ " --data=PLIK Wypisanie danych z PLIKU zamiast uruchamiania programu\n"
+#~ "\n"
+#~ " -?,--help Wypisanie tego opisu i zakoñczenie\n"
+#~ " --usage Podanie krótkiego opisu sk³adni polecenia\n"
+#~ " -V,--version Wypisanie informacji o wersji i zakoñczenie\n"
+#~ "\n"
+#~ "Argumenty obowi±zkowe dla d³ugich opcji s± obowi±zkowe równie¿ dla odpowiednich\n"
+#~ "krótkich opcji.\n"
+#~ "\n"
+#~ "Informacje na temat zg³aszania b³êdów mo¿na znale¼æ pod adresem:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>.\\n"
+
+#~ msgid ""
+#~ "Usage: ldd [OPTION]... FILE...\n"
+#~ " --help print this help and exit\n"
+#~ " --version print version information and exit\n"
+#~ " -d, --data-relocs process data relocations\n"
+#~ " -r, --function-relocs process data and function relocations\n"
+#~ " -u, --unused print unused direct dependencies\n"
+#~ " -v, --verbose print all information\n"
+#~ "For bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>."
+#~ msgstr ""
+#~ "Sk³adnia: ldd [OPCJA]... PLIK...\n"
+#~ " --help wypisanie tego opisu i zakoñczenie\n"
+#~ " --version wypisanie informacji o wersji i zakoñczenie\n"
+#~ " -d, --data-relocs przetworzenie relokacji danych\n"
+#~ " -r, --function-relocs przetworzenie relokacji danych i funkcji\n"
+#~ " -u, --unused wypisanie nieu¿ywanych bezpo¶rednich zale¿no¶ci\n"
+#~ " -v, --verbose wypisanie wszystkich informacji\n"
+#~ "Instrukcje dotycz±ce zg³aszania b³êdów znajduj± siê pod adresem:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>."
+
+#~ msgid ""
+#~ "Usage: memusage [OPTION]... PROGRAM [PROGRAMOPTION]...\n"
+#~ "Profile memory usage of PROGRAM.\n"
+#~ "\n"
+#~ " -n,--progname=NAME Name of the program file to profile\n"
+#~ " -p,--png=FILE Generate PNG graphic and store it in FILE\n"
+#~ " -d,--data=FILE Generate binary data file and store it in FILE\n"
+#~ " -u,--unbuffered Don't buffer output\n"
+#~ " -b,--buffer=SIZE Collect SIZE entries before writing them out\n"
+#~ " --no-timer Don't collect additional information through timer\n"
+#~ " -m,--mmap Also trace mmap & friends\n"
+#~ "\n"
+#~ " -?,--help Print this help and exit\n"
+#~ " --usage Give a short usage message\n"
+#~ " -V,--version Print version information and exit\n"
+#~ "\n"
+#~ " The following options only apply when generating graphical output:\n"
+#~ " -t,--time-based Make graph linear in time\n"
+#~ " -T,--total Also draw graph of total memory use\n"
+#~ " --title=STRING Use STRING as title of the graph\n"
+#~ " -x,--x-size=SIZE Make graphic SIZE pixels wide\n"
+#~ " -y,--y-size=SIZE Make graphic SIZE pixels high\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are also mandatory for any corresponding\n"
+#~ "short options.\n"
+#~ "\n"
+#~ "For bug reporting instructions, please see:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>."
+#~ msgstr ""
+#~ "Sk³adnia: memusage [OPCJA]... PROGRAM [OPCJA-PROGRAMU]...\n"
+#~ "Profilowanie wykorzystania pamiêci przez PROGRAM.\n"
+#~ "\n"
+#~ " -n,--progname=NAZWA Nazwa pliku programu do profilowania\n"
+#~ " -p,--png=PLIK Wygenerowanie grafiki PNG i zapisanie jej do PLIKU\n"
+#~ " -d,--data=PLIK Wygenerowanie danych binarnych i zapisanie do PLIKU\n"
+#~ " -u,--unbuffered Nie buforowanie wyj¶cia\n"
+#~ " -b,--buffer=ROZMIAR Zgromadzenie tylu wpisów przed zapisaniem ich\n"
+#~ " --no-timer Nie zbieranie dodatkowych informacji z u¿yciem zegara\n"
+#~ " -m,--mmap ¦ledzenie tak¿e mmap i podobnych funkcji\n"
+#~ "\n"
+#~ " -?,--help Wypisanie tego opisu i zakoñczenie\n"
+#~ " --usage Podanie krótkiego opisu sk³adni polecenia\n"
+#~ " -V,--version Wypisanie informacji o wersji i zakoñczenie\n"
+#~ "\n"
+#~ " Nastêpuj±ce opcje odnosz± siê tylko do generowania graficznego wyj¶cia:\n"
+#~ " -t,--time-based Utworzenie wykresu liniowego w czasie\n"
+#~ " -T,--total Narysowanie tak¿e wykresu ca³kowitego u¿ycia pamiêci\n"
+#~ " --title=£AÑCUCH U¿ycie £AÑCUCHA jako tytu³u wykresu\n"
+#~ " -x,--x-size=ROZMIAR Utworzenie wykresu o podanej szeroko¶ci w pikselach\n"
+#~ " -y,--y-size=ROZMIAR Utworzenie wykresu o podanej wysoko¶ci w pikselach\n"
+#~ "\n"
+#~ "Argumenty obowi±zkowe dla d³ugich opcji s± obowi±zkowe równie¿ dla odpowiednich\n"
+#~ "krótkich opcji.\n"
+#~ "\n"
+#~ "Informacje na temat zg³aszania b³êdów mo¿na znale¼æ pod adresem:\n"
+#~ "<http://www.gnu.org/software/libc/bugs.html>."
diff --git a/po/ru.po b/po/ru.po
index e1d94a77ca..0ee25d7bc0 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -1,150 +1,165 @@
-# ÐÅÒÅ×ÏÄ ÓÏÏÂÝÅÎÉÊ GNU libc
-# Copyright (C) 2005 Free Software Foundation, Inc.
-# Oleg Tihonov <ost@tatnipi.ru>, 2005, 2007.
+# translation of libc-2.9.90.ru.po to Russian
+# Translation of libc messages to Russian
+# Copyright (C) 2005, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the glibc package.
+#
#
+# Oleg Tihonov <ost@tatnipi.ru>, 2005, 2007.
+# Dimitriy Ryazantcev <DJm00n@mail.ru>, 2009.
+# Pavel Maryanov <acid_jack@ukr.net>, 2009.
+# Yuri Kozlov <yuray@komyakino.ru>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.5\n"
-"POT-Creation-Date: 2006-09-29 11:38-0700\n"
-"PO-Revision-Date: 2007-02-13 13:52+0300\n"
-"Last-Translator: Oleg Tihonov <ost@tatnipi.ru>\n"
-"Language-Team: Russian <ru@li.org>\n"
+"Project-Id-Version: libc 2.9.90\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-03-07 09:59+0300\n"
+"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
+"Language-Team: Russian <gnu@mx.ru>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=koi8-r\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: KBabel 1.11.4\n"
-#: argp/argp-help.c:227
+#: argp/argp-help.c:228
#, c-format
msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
-msgstr "%.*s: ÐÁÒÁÍÅÔÒ ARGP_HELP_FMT ÔÒÅÂÕÅÔ ÚÎÁÞÅÎÉÅ"
+msgstr "%.*s: параметр ARGP_HELP_FMT требует значение"
-#: argp/argp-help.c:237
+#: argp/argp-help.c:238
#, c-format
msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
-msgstr "%.*s: ÎÅÉÚ×ÅÓÔÎÙÊ ÐÁÒÁÍÅÔÒ ARGP_HELP_FMT"
+msgstr "%.*s: неизвеÑтный параметр ARGP_HELP_FMT"
-#: argp/argp-help.c:250
+#: argp/argp-help.c:251
#, c-format
msgid "Garbage in ARGP_HELP_FMT: %s"
-msgstr "íÕÓÏÒ × ARGP_HELP_FMT: %s"
+msgstr "МуÑор в ARGP_HELP_FMT: %s"
-#: argp/argp-help.c:1214
+#: argp/argp-help.c:1215
msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
-msgstr "ïÂÑÚÁÔÅÌØÎÙÅ ÉÌÉ ÎÅÏÂÑÚÁÔÅÌØÎÙÅ ÁÒÇÕÍÅÎÔÙ ÄÌÑ ÄÌÉÎÎÙÈ ËÌÀÞÅÊ ÔÁËÖÅ Ñ×ÌÑÀÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍÉ ÉÌÉ ÎÅÏÂÑÚÁÔÅÌØÎÙÍÉ ÄÌÑ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ËÏÒÏÔËÉÈ ËÌÀÞÅÊ."
+msgstr "ОбÑзательные или необÑзательные аргументы Ð´Ð»Ñ Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… ключей также ÑвлÑÑŽÑ‚ÑÑ Ð¾Ð±Ñзательными или необÑзательными Ð´Ð»Ñ ÑоответÑтвующих коротких ключей."
-#: argp/argp-help.c:1600
+#: argp/argp-help.c:1601
msgid "Usage:"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ:"
+msgstr "ИÑпользование:"
-#: argp/argp-help.c:1604
+#: argp/argp-help.c:1605
msgid " or: "
-msgstr " ÉÌÉ: "
+msgstr " или: "
-#: argp/argp-help.c:1616
+#: argp/argp-help.c:1617
msgid " [OPTION...]"
-msgstr " [ëìàþ...]"
+msgstr " [КЛЮЧ...]"
-#: argp/argp-help.c:1643
+#: argp/argp-help.c:1644
#, c-format
msgid "Try `%s --help' or `%s --usage' for more information.\n"
-msgstr "ðÏÐÒÏÂÕÊÔÅ `%s --help' ÉÌÉ `%s --usage' ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÇÏ ÏÐÉÓÁÎÉÑ.\n"
+msgstr "Попробуйте «%s --help» или «%s --usage» Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подробного опиÑаниÑ.\n"
-#: argp/argp-help.c:1671
+#: argp/argp-help.c:1672
#, c-format
msgid "Report bugs to %s.\n"
-msgstr "óÏÏÂÝÅÎÉÑ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ ÐÏ ÁÄÒÅÓÕ %s.\n"
+msgstr "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках отправлÑйте по адреÑу %s.\n"
#: argp/argp-parse.c:102
msgid "Give this help list"
-msgstr "÷ÙÄÁÅÔ ÜÔÏÔ ÓÐÒÁ×ÏÞÎÙÊ ÓÐÉÓÏË"
+msgstr "Выдает Ñтот Ñправочный ÑпиÑок"
#: argp/argp-parse.c:103
msgid "Give a short usage message"
-msgstr "÷ÙÄÁÅÔ ËÒÁÔËÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÉÓÐÏÌØÚÏ×ÁÎÉÉ"
+msgstr "Выдает краткую информацию об иÑпользовании"
#: argp/argp-parse.c:104
msgid "Set the program name"
-msgstr "õÓÔÁÎÁ×ÌÉ×ÁÅÔ ÉÍÑ ÐÒÏÇÒÁÍÍÙ"
+msgstr "УÑтанавливает Ð¸Ð¼Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹"
#: argp/argp-parse.c:106
msgid "Hang for SECS seconds (default 3600)"
-msgstr "÷ÉÓÉÔ ÕËÁÚÁÎÎÏÅ ÞÉÓÌÏ ÓÅËÕÎÄ (ÐÏ ÕÍÏÌÞÁÎÉÀ 3600)"
+msgstr "ВиÑит указанное чиÑло Ñекунд (по умолчанию 3600)"
#: argp/argp-parse.c:167
msgid "Print program version"
-msgstr "ðÅÞÁÔÁÅÔ ×ÅÒÓÉÀ ÐÒÏÇÒÁÍÍÙ"
+msgstr "Печатает верÑию программы"
#: argp/argp-parse.c:183
msgid "(PROGRAM ERROR) No version known!?"
-msgstr "(ïûéâëá ðòïçòáííù) ÷ÅÒÓÉÑ ÎÅÉÚ×ÅÓÔÎÁ!?"
+msgstr "(ОШИБКРПРОГРÐММЫ) ВерÑÐ¸Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтна!?"
#: argp/argp-parse.c:623
#, c-format
msgid "%s: Too many arguments\n"
-msgstr "%s: óÌÉÛËÏÍ ÍÎÏÇÏ ÁÒÇÕÍÅÎÔÏ×\n"
+msgstr "%s: Слишком много аргументов\n"
#: argp/argp-parse.c:766
msgid "(PROGRAM ERROR) Option should have been recognized!?"
-msgstr "(ïûéâëá ðòïçòáííù) ëÌÀÞ ÄÏÌÖÅÎ ÂÙÔØ ÒÁÓÐÏÚÎÁÎ!?"
+msgstr "(ОШИБКРПРОГРÐММЫ) Ключ должен быть раÑпознан!?"
#: assert/assert-perr.c:57
#, c-format
msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
-msgstr "%s%s%s:%u: %s%sîÅÏÖÉÄÁÎÎÁÑ ÏÛÉÂËÁ: %s.\n"
+msgstr "%s%s%s:%u: %s%sÐÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s.\n"
#: assert/assert.c:57
#, c-format
msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
-msgstr "%s%s%s:%u: %s%sðÒÏ×ÅÒÏÞÎÏÅ ÕÔ×ÅÒÖÄÅÎÉÅ `%s' ÎÅ ×ÙÐÏÌÎÅÎÏ.\n"
+msgstr "%s%s%s:%u: %s%sПроверочное утверждение «%s» не выполнено.\n"
-#: catgets/gencat.c:109 catgets/gencat.c:113 nscd/nscd.c:96 nss/makedb.c:61
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
msgid "NAME"
-msgstr "æáêì"
+msgstr "ФÐЙЛ"
-#: catgets/gencat.c:110
+#: catgets/gencat.c:111
msgid "Create C header file NAME containing symbol definitions"
-msgstr "óÏÚÄÁÅÔ ÚÁÇÏÌÏ×ÏÞÎÙÊ æáêì ÎÁ óÉ, ÓÏÄÅÒÖÁÝÉÊ ÏÐÒÅÄÅÌÅÎÉÑ ÓÉÍ×ÏÌÏ×."
+msgstr "Создает заголовочный ФÐЙЛ на Си, Ñодержащий Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñимволов."
-#: catgets/gencat.c:112
+#: catgets/gencat.c:113
msgid "Do not use existing catalog, force new output file"
-msgstr "îÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÕÝÅÓÔ×ÕÀÝÉÊ ËÁÔÁÌÏÇ, ÐÒÉÎÕÄÉÔÅÌØÎÏ ÓÏÚÄÁÔØ ÎÏ×ÙÊ ×ÙÈÏÄÎÏÊ ÆÁÊÌ"
+msgstr "Ðе иÑпользовать ÑущеÑтвующий каталог, принудительно Ñоздать новый выходной файл"
-#: catgets/gencat.c:113 nss/makedb.c:61
+#: catgets/gencat.c:114 nss/makedb.c:61
msgid "Write output to file NAME"
-msgstr "úÁÐÉÓÁÔØ ×Ù×ÏÄ × æáêì"
+msgstr "ЗапиÑать вывод в ФÐЙЛ"
-#: catgets/gencat.c:118
+#: catgets/gencat.c:119
msgid ""
-"Generate message catalog. If INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
+"Generate message catalog.\vIf INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
"is -, output is written to standard output.\n"
msgstr ""
-"çÅÎÅÒÉÒÕÅÔ ËÁÔÁÌÏÇ ÓÏÏÂÝÅÎÉÊ. åÓÌÉ ÷èïäîïê-æáêì ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ. åÓÌÉ\n"
-"÷ùèïäîïê-æáêì ÚÁÄÁÎ ËÁË -, ÒÅÚÕÌØÔÁÔ ÐÅÞÁÔÁÅÔÓÑ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"Генерирует каталог Ñообщений.\vЕÑли ВХОДÐОЙ-ФÐЙЛ задан как -, читает Ñтандартный ввод. ЕÑли\n"
+"ВЫХОДÐОЙ-ФÐЙЛ задан как -, результат печатаетÑÑ Ð½Ð° Ñтандартный вывод.\n"
-#: catgets/gencat.c:123
+#: catgets/gencat.c:124
msgid ""
"-o OUTPUT-FILE [INPUT-FILE]...\n"
"[OUTPUT-FILE [INPUT-FILE]...]"
msgstr ""
-"-o ÷ùèïäîïê-æáêì [÷èïäîïê-æáêì]...\n"
-"[÷ùèïäîïê-æáêì [÷èïäîïê-æáêì]...]"
-
-#: catgets/gencat.c:231 debug/pcprofiledump.c:199 iconv/iconv_prog.c:410
-#: iconv/iconvconfig.c:379 locale/programs/localedef.c:370
-#: login/programs/pt_chown.c:88 malloc/memusagestat.c:525 nss/makedb.c:231
+"-o ВЫХОДÐОЙ-ФÐЙЛ [ВХОДÐОЙ-ФÐЙЛ]...\n"
+"[ВЫХОДÐОЙ-ФÐЙЛ [ВХОДÐОЙ-ФÐЙЛ]...]"
+
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
msgstr ""
-"éÎÓÔÒÕËÃÉÉ ÐÏ ÓÏÏÂÝÅÎÉÀ Ï ÏÛÉÂËÁÈ ÓÍÏÔÒÉÔÅ ÎÁ\n"
+"ИнÑтрукции по Ñообщению об ошибках Ñмотрите на\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: catgets/gencat.c:245 debug/xtrace.sh:64 elf/ldconfig.c:285
-#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:425
-#: iconv/iconvconfig.c:394 locale/programs/locale.c:274
-#: locale/programs/localedef.c:386 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:71 nscd/nscd.c:401 nss/getent.c:83 nss/makedb.c:245
-#: posix/getconf.c:1007
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
+#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -152,140 +167,142 @@ msgid ""
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
-"üÔÏ Ó×ÏÂÏÄÎÁÑ ÐÒÏÇÒÁÍÍÁ; ÐÏÄÒÏÂÎÏÓÔÉ Ï ÕÓÌÏ×ÉÑÈ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÑ\n"
-"ÓÍÏÔÒÉÔÅ × ÉÓÈÏÄÎÏÍ ÔÅËÓÔÅ. íÙ îå ÐÒÅÄÏÓÔÁ×ÌÑÅÍ ÇÁÒÁÎÔÉÊ; ÄÁÖÅ ÇÁÒÁÎÔÉÊ\n"
-"ëïííåòþåóëïê ðòéçïäîïóôé ÉÌÉ ðòéçïäîïóôé äìñ ëáëïê-ìéâï ãåìé.\n"
+"Это ÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°; подробноÑти об уÑловиÑÑ… раÑпроÑтранениÑ\n"
+"Ñмотрите в иÑходном текÑте. Мы ÐЕ предоÑтавлÑем гарантий; даже гарантий\n"
+"КОММЕРЧЕСКОЙ ПРИГОДÐОСТИ или ПРИГОДÐОСТИ ДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ.\n"
-#: catgets/gencat.c:250 debug/xtrace.sh:68 elf/ldconfig.c:290 elf/sprof.c:361
-#: iconv/iconv_prog.c:430 iconv/iconvconfig.c:399 locale/programs/locale.c:279
-#: locale/programs/localedef.c:391 malloc/memusage.sh:75 nscd/nscd.c:406
-#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1012
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
#, c-format
msgid "Written by %s.\n"
-msgstr "á×ÔÏÒ ÐÒÏÇÒÁÍÍÙ -- %s.\n"
+msgstr "Ðвтор программы -- %s.\n"
-#: catgets/gencat.c:281
+#: catgets/gencat.c:282
msgid "*standard input*"
-msgstr "*ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ*"
+msgstr "*Ñтандартный ввод*"
-#: catgets/gencat.c:287 iconv/iconv_charmap.c:157 iconv/iconv_prog.c:297
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
#: nss/makedb.c:170
#, c-format
msgid "cannot open input file `%s'"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÈÏÄÎÏÊ ÆÁÊÌ `%s'"
+msgstr "невозможно открыть входной файл «%s»"
-#: catgets/gencat.c:416 catgets/gencat.c:493
+#: catgets/gencat.c:417 catgets/gencat.c:494
msgid "illegal set number"
-msgstr "ÎÅ×ÅÒÎÙÊ ÎÏÍÅÒ ÍÎÏÖÅÓÔ×Á"
+msgstr "неверный номер множеÑтва"
-#: catgets/gencat.c:443
+#: catgets/gencat.c:444
msgid "duplicate set definition"
-msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÍÎÏÖÅÓÔ×Á"
+msgstr "повторное определение множеÑтва"
-#: catgets/gencat.c:445 catgets/gencat.c:622 catgets/gencat.c:676
+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
msgid "this is the first definition"
-msgstr "ÜÔÏ ÐÅÒ×ÏÅ ÏÐÒÅÄÅÌÅÎÉÅ"
+msgstr "Ñто первое определение"
-#: catgets/gencat.c:521
+#: catgets/gencat.c:522
#, c-format
msgid "unknown set `%s'"
-msgstr "ÎÅÉÚ×ÅÓÔÎÏÅ ÍÎÏÖÅÓÔ×Ï `%s'"
+msgstr "неизвеÑтное множеÑтво «%s»"
-#: catgets/gencat.c:562
+#: catgets/gencat.c:563
msgid "invalid quote character"
-msgstr "ÎÅ×ÅÒÎÙÊ ÜËÒÁÎÉÒÕÀÝÉÊ ÚÎÁË"
+msgstr "неверный Ñкранирующий знак"
-#: catgets/gencat.c:575
+#: catgets/gencat.c:576
#, c-format
msgid "unknown directive `%s': line ignored"
-msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÄÉÒÅËÔÉ×Á `%s': ÓÔÒÏËÁ ÉÇÎÏÒÉÒÏ×ÁÎÁ"
+msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° «%s»: Ñтрока игнорирована"
-#: catgets/gencat.c:620
+#: catgets/gencat.c:621
msgid "duplicated message number"
-msgstr "ÐÏ×ÔÏÒÎÙÊ ÎÏÍÅÒ ÓÏÏÂÝÅÎÉÑ"
+msgstr "повторный номер ÑообщениÑ"
-#: catgets/gencat.c:673
+#: catgets/gencat.c:674
msgid "duplicated message identifier"
-msgstr "ÐÏ×ÔÏÒÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÓÏÏÂÝÅÎÉÑ"
+msgstr "повторный идентификатор ÑообщениÑ"
-#: catgets/gencat.c:730
+#: catgets/gencat.c:731
msgid "invalid character: message ignored"
-msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÚÎÁË: ÓÏÏÂÝÅÎÉÅ ÉÇÎÏÒÉÒÏ×ÁÎÏ"
+msgstr "недопуÑтимый знак: Ñообщение игнорировано"
-#: catgets/gencat.c:773
+#: catgets/gencat.c:774
msgid "invalid line"
-msgstr "ÎÅ×ÅÒÎÁÑ ÓÔÒÏËÁ"
+msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñтрока"
-#: catgets/gencat.c:827
+#: catgets/gencat.c:828
msgid "malformed line ignored"
-msgstr "ÎÅÐÒÁ×ÉÌØÎÁÑ ÓÔÒÏËÁ ÉÇÎÏÒÉÒÏ×ÁÎÁ"
+msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñтрока игнорирована"
-#: catgets/gencat.c:991 catgets/gencat.c:1032 nss/makedb.c:183
+#: catgets/gencat.c:992 catgets/gencat.c:1033 nss/makedb.c:183
#, c-format
msgid "cannot open output file `%s'"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ `%s'"
+msgstr "невозможно открыть выходной файл «%s»"
-#: catgets/gencat.c:1194 locale/programs/linereader.c:559
+#: catgets/gencat.c:1195 locale/programs/linereader.c:560
msgid "invalid escape sequence"
-msgstr "ÎÅ×ÅÒÎÁÑ ÕÐÒÁ×ÌÑÀÝÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ"
+msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÑÑŽÑ‰Ð°Ñ Ð¿Ð¾ÑледовательноÑÑ‚ÑŒ"
-#: catgets/gencat.c:1216
+#: catgets/gencat.c:1217
msgid "unterminated message"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÏÅ ÓÏÏÂÝÅÎÉÅ"
+msgstr "незавершенное Ñообщение"
-#: catgets/gencat.c:1240
+#: catgets/gencat.c:1241
#, c-format
msgid "while opening old catalog file"
-msgstr "ÐÒÉ ÏÔËÒÙÔÉÉ ÓÔÁÒÏÇÏ ÆÁÊÌÁ ËÁÔÁÌÏÇÁ"
+msgstr "при открытии Ñтарого файла каталога"
-#: catgets/gencat.c:1331
+#: catgets/gencat.c:1332
#, c-format
msgid "conversion modules not available"
-msgstr "ÍÏÄÕÌÉ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ÎÅÄÏÓÔÕÐÎÙ"
+msgstr "модули Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтупны"
-#: catgets/gencat.c:1357
+#: catgets/gencat.c:1358
#, c-format
msgid "cannot determine escape character"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÚÎÁË ×ÙÈÏÄÁ"
+msgstr "невозможно определить знак выхода"
-#: debug/pcprofiledump.c:52
+#: debug/pcprofiledump.c:53
msgid "Don't buffer output"
-msgstr "îÅ ÂÕÆÅÒÉÒÏ×ÁÔØ ×Ù×ÏÄ"
+msgstr "Ðе буферировать вывод"
-#: debug/pcprofiledump.c:57
+#: debug/pcprofiledump.c:58
msgid "Dump information generated by PC profiling."
-msgstr "óÂÒÁÓÙ×ÁÅÔ ÉÎÆÏÒÍÁÃÉÀ, ÓÏÂÒÁÎÎÕÀ ÐÒÉ ÐÒÏÆÉÌÉÒÏ×ÁÎÉÉ PC."
+msgstr "СбраÑывает информацию, Ñобранную при профилировании PC."
-#: debug/pcprofiledump.c:60
+#: debug/pcprofiledump.c:61
msgid "[FILE]"
-msgstr "[æáêì]"
+msgstr "[ФÐЙЛ]"
-#: debug/pcprofiledump.c:100
+#: debug/pcprofiledump.c:108
#, c-format
msgid "cannot open input file"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÈÏÄÎÏÊ ÆÁÊÌ"
+msgstr "невозможно открыть входной файл"
-#: debug/pcprofiledump.c:106
+#: debug/pcprofiledump.c:115
#, c-format
msgid "cannot read header"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÚÁÇÏÌÏ×ÏË"
+msgstr "невозможно Ñчитать заголовок"
-#: debug/pcprofiledump.c:170
+#: debug/pcprofiledump.c:179
#, c-format
msgid "invalid pointer size"
-msgstr "ÎÅ×ÅÒÎÙÊ ÒÁÚÍÅÒ ÕËÁÚÁÔÅÌÑ"
+msgstr "неверный размер указателÑ"
#: debug/xtrace.sh:27 debug/xtrace.sh:45
msgid "Usage: xtrace [OPTION]... PROGRAM [PROGRAMOPTION]...\\n"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: xtrace [ëìàþ]... ðòïçòáííá [ëìàþ-ðòïçòáííù]...\\n"
+msgstr "ИÑпользование: xtrace [КЛЮЧ]... ПРОГРÐММР[КЛЮЧ-ПРОГРÐММЫ]...\\n"
#: debug/xtrace.sh:33
-msgid "Try `xtrace --help' for more information.\\n"
-msgstr "ðÏÐÒÏÂÕÊÔÅ `xtrace --help' ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÇÏ ÏÐÉÓÁÎÉÑ.\\n"
+msgid "Try \\`xtrace --help' for more information.\\n"
+msgstr "Попробуйте «xtrace --help» Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подробного опиÑаниÑ.\\n"
#: debug/xtrace.sh:39
-msgid "xtrace: option `$1' requires an argument.\\n"
-msgstr "xtrace: ËÌÀÞ `%1' ÔÒÅÂÕÅÔ ÁÒÇÕÍÅÎÔ.\\n"
+msgid "xtrace: option \\`$1' requires an argument.\\n"
+msgstr "xtrace: ключ «%1» требует аргумент.\\n"
#: debug/xtrace.sh:46
msgid ""
@@ -300,626 +317,603 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
-"ôÒÁÓÓÉÒÕÅÔ ×ÙÐÏÌÎÅÎÉÅ ÐÒÏÇÒÁÍÍÙ, ÐÅÞÁÔÁÑ ×ÙÐÏÌÎÑÀÝÕÀÓÑ × ÄÁÎÎÏÅ ×ÒÅÍÑ ÆÕÎËÃÉÀ.\n"
+"ТраÑÑирует выполнение программы, Ð¿ÐµÑ‡Ð°Ñ‚Ð°Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑющуюÑÑ Ð² данное Ð²Ñ€ÐµÐ¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ.\n"
"\n"
-" --data=æáêì îÅ ×ÙÐÏÌÎÑÔØ ÐÒÏÇÒÁÍÍÕ, ÐÒÏÓÔÏ ÎÁÐÅÞÁÔÁÔØ ÄÁÎÎÙÅ ÉÚ æáêìá.\n"
-" \n"
-" -?,--help ðÏËÁÚÁÔØ ÜÔÕ ÓÐÒÁ×ËÕ É ×ÙÊÔÉ\n"
-" --usage ðÏËÁÚÁÔØ ËÒÁÔËÏÅ ÓÏÏÂÝÅÎÉÅ Ï ÉÓÐÏÌØÚÏ×ÁÎÉÉ\n"
-" -V,--version ðÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ\n"
+" --data=ФÐЙЛ Ðе выполнÑÑ‚ÑŒ программу, проÑто напечатать данные из ФÐЙЛÐ.\n"
"\n"
-"áÒÇÕÍÅÎÔÙ, ÏÂÑÚÁÔÅÌØÎÙÅ ÄÌÑ ÄÌÉÎÎÙÈ ËÌÀÞÅÊ, ÏÂÑÚÁÔÅÌØÎÙ É ÄÌÑ\n"
-"ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ËÏÒÏÔËÉÈ.\n"
+" -?,--help Показать Ñту Ñправку и выйти\n"
+" --usage Показать краткое Ñообщение об иÑпользовании\n"
+" -V,--version Показать информацию о верÑии и выйти\n"
+"\n"
+"Ðргументы, обÑзательные Ð´Ð»Ñ Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… ключей, обÑзательны и длÑ\n"
+"ÑоответÑтвующих коротких.\n"
"\n"
-"éÎÓÔÒÕËÃÉÉ ÐÏ ÓÏÏÂÝÅÎÉÀ Ï ÏÛÉÂËÁÈ ÓÍÏÔÒÉÔÅ ÎÁ\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
-#: debug/xtrace.sh:125
-msgid "xtrace: unrecognized option `$1'\\n"
-msgstr "xtrace: ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ËÌÀÞ `$1'\\n"
+#: debug/xtrace.sh:127
+msgid "xtrace: unrecognized option \\`$1'\\n"
+msgstr "xtrace: нераÑпознанный ключ «$1»\\n"
-#: debug/xtrace.sh:138
+#: debug/xtrace.sh:140
msgid "No program name given\\n"
-msgstr "îÅ ÚÁÄÁÎÏ ÉÍÑ ÐÒÏÇÒÁÍÍÙ\\n"
+msgstr "Ðе задано Ð¸Ð¼Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹\\n"
-#: debug/xtrace.sh:146
+#: debug/xtrace.sh:148
#, sh-format
-msgid "executable `$program' not found\\n"
-msgstr "ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ `$program' ÎÅ ÎÁÊÄÅÎ\\n"
+msgid "executable \\`$program' not found\\n"
+msgstr "иÑполнÑемый файл «$program» не найден\\n"
-#: debug/xtrace.sh:150
+#: debug/xtrace.sh:152
#, sh-format
-msgid "`$program' is no executable\\n"
-msgstr "`$program' ÎÅ Ñ×ÌÑÅÔÓÑ ÉÓÐÏÌÎÑÅÍÙÍ ÆÁÊÌÏÍ\\n"
+msgid "\\`$program' is no executable\\n"
+msgstr "«$program» не ÑвлÑетÑÑ Ð¸ÑполнÑемым файлом\\n"
-#: dlfcn/dlinfo.c:67
+#: dlfcn/dlinfo.c:64
msgid "RTLD_SELF used in code not dynamically loaded"
-msgstr "RTLD_SELF ÉÓÐÏÌØÚÏ×ÁÎÏ × ÎÅ ÄÉÎÁÍÉÞÅÓËÉ ÚÁÇÒÕÖÅÎÎÏÍ ËÏÄÅ"
+msgstr "RTLD_SELF иÑпользовано в не динамичеÑки загруженном коде"
-#: dlfcn/dlinfo.c:76
+#: dlfcn/dlinfo.c:73
msgid "unsupported dlinfo request"
-msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÚÁÐÒÏÓ dlinfo"
+msgstr "неподдерживаемый Ð·Ð°Ð¿Ñ€Ð¾Ñ dlinfo"
#: dlfcn/dlmopen.c:64
msgid "invalid namespace"
-msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÏÓÔÒÁÎÓÔ×Ï ÉÍÅÎ"
+msgstr "неверное проÑтранÑтво имен"
#: dlfcn/dlmopen.c:69
msgid "invalid mode"
-msgstr "ÎÅ×ÅÒÎÙÊ ÒÅÖÉÍ"
+msgstr "неверный режим"
-#: dlfcn/dlopen.c:64
+#: dlfcn/dlopen.c:65
msgid "invalid mode parameter"
-msgstr "ÎÅ×ÅÒÎÙÊ ÐÁÒÁÍÅÔÒ ÒÅÖÉÍÁ"
+msgstr "неверный параметр режима"
-#: elf/cache.c:67
+#: elf/cache.c:69
msgid "unknown"
-msgstr "ÎÅÉÚ×ÅÓÔÎÏ"
+msgstr "неизвеÑтно"
-#: elf/cache.c:110
+#: elf/cache.c:112
msgid "Unknown OS"
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ïó"
+msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ ÐžÐ¡"
-#: elf/cache.c:115
+#: elf/cache.c:117
#, c-format
msgid ", OS ABI: %s %d.%d.%d"
-msgstr ", ABI ïó: %s %d.%d.%d"
+msgstr ", ABI ОС: %s %d.%d.%d"
-#: elf/cache.c:141 elf/ldconfig.c:1231
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
msgid "Can't open cache file %s\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÜÛ-ÆÁÊÌ %s\n"
+msgstr "Ðевозможно открыть кÑш-файл %s\n"
-#: elf/cache.c:153
+#: elf/cache.c:148
#, c-format
msgid "mmap of cache file failed.\n"
-msgstr "ÏÔÏÂÒÁÖÅÎÉÅ ËÜÛ-ÆÁÊÌÁ × ÐÁÍÑÔØ ÎÅ ÕÄÁÌÏÓØ.\n"
+msgstr "отображение кÑш-файла в памÑÑ‚ÑŒ не удалоÑÑŒ.\n"
-#: elf/cache.c:157 elf/cache.c:167
+#: elf/cache.c:152 elf/cache.c:166
#, c-format
msgid "File is not a cache file.\n"
-msgstr "üÔÏ ÎÅ ËÜÛ-ÆÁÊÌ.\n"
+msgstr "Это не кÑш-файл.\n"
-#: elf/cache.c:200 elf/cache.c:210
+#: elf/cache.c:199 elf/cache.c:209
#, c-format
msgid "%d libs found in cache `%s'\n"
-msgstr "%d ÂÉÂÌÉÏÔÅË ÎÁÊÄÅÎÏ × ËÜÛÅ `%s'\n"
-
-#: elf/cache.c:409
-#, c-format
-msgid "Can't remove old temporary cache file %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÓÔÁÒÙÊ ×ÒÅÍÅÎÎÙÊ ËÜÛ-ÆÁÊÌ %s"
+msgstr "%d библиотек найдено в кÑше «%s»\n"
-#: elf/cache.c:416
+#: elf/cache.c:403
#, c-format
msgid "Can't create temporary cache file %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÒÅÍÅÎÎÙÊ ËÜÛ-ÆÁÊÌ %s"
+msgstr "Ðевозможно Ñоздать временный кÑш-файл %s"
-#: elf/cache.c:424 elf/cache.c:434 elf/cache.c:438
+#: elf/cache.c:411 elf/cache.c:421 elf/cache.c:425 elf/cache.c:430
#, c-format
msgid "Writing of cache data failed"
-msgstr "úÁÐÉÓØ ÄÁÎÎÙÈ ËÜÛÁ ÎÅÕÓÐÅÛÎÁ"
+msgstr "ЗапиÑÑŒ данных кÑша неуÑпешна"
-#: elf/cache.c:442
-#, c-format
-msgid "Writing of cache data failed."
-msgstr "úÁÐÉÓØ ÄÁÎÎÙÈ ËÜÛÁ ÎÅÕÓÐÅÛÎÁ."
-
-#: elf/cache.c:449
+#: elf/cache.c:435
#, c-format
msgid "Changing access rights of %s to %#o failed"
-msgstr "éÚÍÅÎÅÎÉÅ ÐÒÁ× ÄÏÓÔÕÐÁ ÄÌÑ %s ÎÁ %#o ÎÅÕÓÐÅÛÎÏ"
+msgstr "Изменение прав доÑтупа Ð´Ð»Ñ %s на %#o неуÑпешно"
-#: elf/cache.c:454
+#: elf/cache.c:440
#, c-format
msgid "Renaming of %s to %s failed"
-msgstr "ðÅÒÅÉÍÅÎÏ×ÁÎÉÅ %s × %s ÎÅÕÓÐÅÛÎÏ"
+msgstr "Переименование %s в %s неуÑпешно"
+
+#: elf/dl-close.c:378 elf/dl-open.c:460
+msgid "cannot create scope list"
+msgstr "невозможно Ñоздать ÑпиÑок облаÑтей"
-#: elf/dl-close.c:116
+#: elf/dl-close.c:725
msgid "shared object not open"
-msgstr "ÒÁÚÄÅÌÑÅÍÙÊ ÏÂßÅËÔ ÎÅ ÏÔËÒÙÔ"
+msgstr "разделÑемый объект не открыт"
-#: elf/dl-deps.c:112
+#: elf/dl-deps.c:114
msgid "DST not allowed in SUID/SGID programs"
-msgstr "DST ÎÅ ÄÏÐÕÓËÁÅÔÓÑ × ÐÒÏÇÒÁÍÍÁÈ Ó SUID/SGID"
+msgstr "DST не допуÑкаетÑÑ Ð² программах Ñ SUID/SGID"
-#: elf/dl-deps.c:125
-msgid "empty dynamics string token substitution"
-msgstr ""
+#: elf/dl-deps.c:127 elf/dl-open.c:282
+msgid "empty dynamic string token substitution"
+msgstr "пуÑтое вхождение динамичеÑкого Ñтрокового токена"
-#: elf/dl-deps.c:131
+#: elf/dl-deps.c:133
#, c-format
msgid "cannot load auxiliary `%s' because of empty dynamic string token substitution\n"
-msgstr ""
+msgstr "невозможно загрузить вÑпомогательное «%s» из-за Ð²Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿ÑƒÑтого динамичеÑкого Ñтрокового токена\n"
-#: elf/dl-deps.c:472
+#: elf/dl-deps.c:474
msgid "cannot allocate dependency list"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ ÓÐÉÓÏË ÚÁ×ÉÓÉÍÏÓÔÅÊ"
+msgstr "невозможно выделить памÑÑ‚ÑŒ под ÑпиÑок завиÑимоÑтей"
-#: elf/dl-deps.c:505 elf/dl-deps.c:560
+#: elf/dl-deps.c:510 elf/dl-deps.c:565
msgid "cannot allocate symbol search list"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ ÓÐÉÓÏË ÐÏÉÓËÁ ÓÉÍ×ÏÌÏ×"
+msgstr "невозможно выделить памÑÑ‚ÑŒ под ÑпиÑок поиÑка Ñимволов"
-#: elf/dl-deps.c:545
+#: elf/dl-deps.c:550
msgid "Filters not supported with LD_TRACE_PRELINKING"
-msgstr "æÉÌØÔÒÙ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ Ó LD_TRACE_PRELINKING"
+msgstr "Фильтры не поддерживаютÑÑ Ñ LD_TRACE_PRELINKING"
#: elf/dl-error.c:77
msgid "DYNAMIC LINKER BUG!!!"
-msgstr "ïûéâëá äéîáíéþåóëïçï ëïíðïîï÷ýéëá!!!"
+msgstr "ОШИБКРДИÐÐМИЧЕСКОГО КОМПОÐОВЩИКÐ!!!"
#: elf/dl-error.c:124
msgid "error while loading shared libraries"
-msgstr "ÏÛÉÂËÁ ÐÒÉ ÚÁÇÒÕÚËÅ ÒÁÚÄÅÌÑÅÍÙÈ ÂÉÂÌÉÏÔÅË"
+msgstr "ошибка при загрузке разделÑемых библиотек"
#: elf/dl-fptr.c:88
msgid "cannot map pages for fdesc table"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÒÁÎÉÃÙ ÄÌÑ ÔÁÂÌÉÃÙ fdesc"
+msgstr "невозможно отобразить Ñтраницы Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ fdesc"
#: elf/dl-fptr.c:192
msgid "cannot map pages for fptr table"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÒÁÎÉÃÙ ÄÌÑ ÔÁÂÌÉÃÙ fptr"
+msgstr "невозможно отобразить Ñтраницы Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ fptr"
#: elf/dl-fptr.c:221
msgid "internal error: symidx out of range of fptr table"
-msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: symidx ×ÙÈÏÄÉÔ ÚÁ ÐÒÅÄÅÌÙ ÔÁÂÌÉÃÙ fptr"
+msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: symidx выходит за пределы таблицы fptr"
#: elf/dl-load.c:372
msgid "cannot allocate name record"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ ÚÁÐÉÓØ ÉÍÅÎÉ"
+msgstr "невозможно выделить памÑÑ‚ÑŒ под запиÑÑŒ имени"
-#: elf/dl-load.c:474 elf/dl-load.c:553 elf/dl-load.c:673 elf/dl-load.c:786
+#: elf/dl-load.c:474 elf/dl-load.c:582 elf/dl-load.c:667 elf/dl-load.c:780
msgid "cannot create cache for search path"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÜÛ ÄÌÑ ÐÕÔÅÊ ÐÏÉÓËÁ"
+msgstr "невозможно Ñоздать кÑш Ð´Ð»Ñ Ð¿ÑƒÑ‚ÐµÐ¹ поиÑка"
-#: elf/dl-load.c:576
+#: elf/dl-load.c:565
msgid "cannot create RUNPATH/RPATH copy"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÏÐÉÀ RUNPATH/RPATH"
+msgstr "невозможно Ñоздать копию RUNPATH/RPATH"
-#: elf/dl-load.c:659
+#: elf/dl-load.c:653
msgid "cannot create search path array"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÍÁÓÓÉ× ÐÕÔÅÊ ÐÏÉÓËÁ"
+msgstr "невозможно Ñоздать маÑÑив путей поиÑка"
-#: elf/dl-load.c:870
+#: elf/dl-load.c:864
msgid "cannot stat shared object"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat ÄÌÑ ÒÁÚÄÅÌÑÅÍÏÇÏ ÏÂßÅËÔÁ"
+msgstr "невозможно выполнить stat Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ñемого объекта"
-#: elf/dl-load.c:940
+#: elf/dl-load.c:934
msgid "cannot open zero fill device"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ-ÉÓÔÏÞÎÉË ÎÕÌÅÊ"
+msgstr "невозможно открыть файл-иÑточник нулей"
-#: elf/dl-load.c:985 elf/dl-load.c:2215
+#: elf/dl-load.c:979 elf/dl-load.c:2215
msgid "cannot create shared object descriptor"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÄÅÓËÒÉÐÔÏÒ ÒÁÚÄÅÌÑÅÍÏÇÏ ÏÂßÅËÔÁ"
+msgstr "невозможно Ñоздать деÑкриптор разделÑемого объекта"
-#: elf/dl-load.c:1004 elf/dl-load.c:1663 elf/dl-load.c:1755
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
msgid "cannot read file data"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ÄÁÎÎÙÅ ÆÁÊÌÁ"
+msgstr "невозможно прочитать данные файла"
-#: elf/dl-load.c:1048
+#: elf/dl-load.c:1042
msgid "ELF load command alignment not page-aligned"
-msgstr "×ÙÒÁ×ÎÉ×ÁÎÉÅ ËÏÍÁÎÄÙ ÚÁÇÒÕÚËÉ ELF ÎÅ ×ÙÒÏ×ÎÅÎÏ ÐÏ ÓÔÒÁÎÉÃÅ"
+msgstr "выравнивание команды загрузки ELF не выровнено по Ñтранице"
-#: elf/dl-load.c:1055
+#: elf/dl-load.c:1049
msgid "ELF load command address/offset not properly aligned"
-msgstr "ÁÄÒÅÓ/ÓÍÅÝÅÎÉÅ ËÏÍÁÎÄÙ ÚÁÇÒÕÚËÉ ELF ÎÅ ×ÙÒÏ×ÎÅÎÏ ÐÒÁ×ÉÌØÎÏ"
+msgstr "адреÑ/Ñмещение команды загрузки ELF не выровнено правильно"
-#: elf/dl-load.c:1139
+#: elf/dl-load.c:1132
msgid "cannot allocate TLS data structures for initial thread"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ TLS-ÓÔÒÕËÔÕÒÙ ÄÌÑ ÎÁÞÁÌØÎÏÇÏ ÔÒÅÄÁ"
+msgstr "невозможно выделить памÑÑ‚ÑŒ под TLS-Ñтруктуры Ð´Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ треда"
-#: elf/dl-load.c:1163
+#: elf/dl-load.c:1155
msgid "cannot handle TLS data"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÂÒÁÂÏÔÁÔØ ÄÁÎÎÙÅ TLS"
+msgstr "невозможно обработать данные TLS"
-#: elf/dl-load.c:1182
+#: elf/dl-load.c:1174
msgid "object file has no loadable segments"
-msgstr "× ÏÂßÅËÔÎÏÍ ÆÁÊÌÅ ÎÅÔ ÚÁÇÒÕÖÁÅÍÙÈ ÓÅÇÍÅÎÔÏ×"
+msgstr "в объектном файле нет загружаемых Ñегментов"
-#: elf/dl-load.c:1218
+#: elf/dl-load.c:1210
msgid "failed to map segment from shared object"
-msgstr "ÓÂÏÊ ÏÔÏÂÒÁÖÅÎÉÑ ÓÅÇÍÅÎÔÁ ÉÚ ÒÁÚÄÅÌÑÅÍÏÇÏ ÏÂßÅËÔÁ"
+msgstr "Ñбой Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñегмента из разделÑемого объекта"
-#: elf/dl-load.c:1242
+#: elf/dl-load.c:1236
msgid "cannot dynamically load executable"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÄÉÎÁÍÉÞÅÓËÉ ÚÁÇÒÕÚÉÔØ ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ"
+msgstr "невозможно динамичеÑки загрузить иÑполнÑемый файл"
-#: elf/dl-load.c:1303
+#: elf/dl-load.c:1298
msgid "cannot change memory protections"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ÚÁÝÉÔÕ ÐÁÍÑÔÉ"
+msgstr "невозможно изменить защиту памÑти"
-#: elf/dl-load.c:1322
+#: elf/dl-load.c:1317
msgid "cannot map zero-fill pages"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÒÁÎÉÃÙ ÚÁÐÏÌÎÅÎÉÑ ÎÕÌÑÍÉ"
+msgstr "невозможно отобразить Ñтраницы Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð½ÑƒÐ»Ñми"
-#: elf/dl-load.c:1336
+#: elf/dl-load.c:1331
msgid "object file has no dynamic section"
-msgstr "× ÏÂßÅËÔÎÏÍ ÆÁÊÌÅ ÎÅÔ ÄÉÎÁÍÉÞÅÓËÏÊ ÓÅËÃÉÉ"
+msgstr "в объектном файле нет динамичеÑкой Ñекции"
-#: elf/dl-load.c:1359
+#: elf/dl-load.c:1354
msgid "shared object cannot be dlopen()ed"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÉÍÅÎÉÔØ dlopen() Ë ÒÁÚÄÅÌÑÅÍÏÍÕ ÏÂßÅËÔÕ"
+msgstr "невозможно применить dlopen() к разделÑемому объекту"
-#: elf/dl-load.c:1372
+#: elf/dl-load.c:1367
msgid "cannot allocate memory for program header"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ ÚÁÇÏÌÏ×ÏË ÐÒÏÇÒÁÍÍÙ"
+msgstr "невозможно выделить памÑÑ‚ÑŒ под заголовок программы"
-#: elf/dl-load.c:1389 elf/dl-open.c:174
+#: elf/dl-load.c:1384 elf/dl-open.c:218
msgid "invalid caller"
-msgstr "ÎÅ×ÅÒÎÁÑ ×ÙÚÙ×ÁÀÝÁÑ ÆÕÎËÃÉÑ"
+msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ"
-#: elf/dl-load.c:1428
+#: elf/dl-load.c:1423
msgid "cannot enable executable stack as shared object requires"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÄÅÊÓÔ×Ï×ÁÔØ ÉÓÐÏÌÎÑÅÍÙÊ ÓÔÅË, ËÁË ÔÒÅÂÕÅÔ ÒÁÚÄÅÌÑÅÍÙÊ ÏÂßÅËÔ"
+msgstr "невозможно задейÑтвовать иÑполнÑемый Ñтек, как требует разделÑемый объект"
-#: elf/dl-load.c:1443
+#: elf/dl-load.c:1436
msgid "cannot close file descriptor"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁËÒÙÔØ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ"
-
-#: elf/dl-load.c:1485
-msgid "cannot create searchlist"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÐÉÓÏË ÐÏÉÓËÁ"
+msgstr "невозможно закрыть деÑкриптор файла"
-#: elf/dl-load.c:1663
+#: elf/dl-load.c:1647
msgid "file too short"
-msgstr "ÆÁÊÌ ÓÌÉÛËÏÍ ÍÁÌ"
+msgstr "файл Ñлишком мал"
-#: elf/dl-load.c:1692
+#: elf/dl-load.c:1676
msgid "invalid ELF header"
-msgstr "ÎÅ×ÅÒÎÙÊ ÚÁÇÏÌÏ×ÏË ELF"
+msgstr "неверный заголовок ELF"
-#: elf/dl-load.c:1704
+#: elf/dl-load.c:1688
msgid "ELF file data encoding not big-endian"
-msgstr "ËÏÄÉÒÏ×ËÁ ÄÁÎÎÙÈ × ELF-ÆÁÊÌÅ ÎÅ ÔÕÐÏËÏÎÅÞÎÁÑ"
+msgstr "кодировка данных в ELF-файле не тупоконечнаÑ"
-#: elf/dl-load.c:1706
+#: elf/dl-load.c:1690
msgid "ELF file data encoding not little-endian"
-msgstr "ËÏÄÉÒÏ×ËÁ ÄÁÎÎÙÈ × ELF-ÆÁÊÌÅ ÎÅ ÏÓÔÒÏËÏÎÅÞÎÁÑ"
+msgstr "кодировка данных в ELF-файле не оÑтроконечнаÑ"
-#: elf/dl-load.c:1710
+#: elf/dl-load.c:1694
msgid "ELF file version ident does not match current one"
-msgstr "ÉÄÅÎÔÉÆÉËÁÔÏÒ ×ÅÒÓÉÉ ELF-ÆÁÊÌÁ ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÔÅËÕÝÅÊ ×ÅÒÓÉÉ"
+msgstr "идентификатор верÑии ELF-файла не ÑоответÑтвует текущей верÑии"
-#: elf/dl-load.c:1714
+#: elf/dl-load.c:1698
msgid "ELF file OS ABI invalid"
-msgstr "ÎÅ×ÅÒÎÙÊ ABI ïó ELF-ÆÁÊÌÁ"
+msgstr "неверный ABI ОС ELF-файла"
-#: elf/dl-load.c:1716
+#: elf/dl-load.c:1700
msgid "ELF file ABI version invalid"
-msgstr "ÎÅ×ÅÒÎÁÑ ×ÅÒÓÉÑ ABI ELF-ÆÁÊÌÁ"
+msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ ABI ELF-файла"
-#: elf/dl-load.c:1719
+#: elf/dl-load.c:1703
msgid "internal error"
-msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ"
+msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
-#: elf/dl-load.c:1726
+#: elf/dl-load.c:1710
msgid "ELF file version does not match current one"
-msgstr "×ÅÒÓÉÑ ELF-ÆÁÊÌÁ ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÔÅËÕÝÅÊ ×ÅÒÓÉÉ"
+msgstr "верÑÐ¸Ñ ELF-файла не ÑоответÑтвует текущей верÑии"
-#: elf/dl-load.c:1734
+#: elf/dl-load.c:1718
msgid "only ET_DYN and ET_EXEC can be loaded"
-msgstr "ÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÔÏÌØËÏ ET_DYN É ET_EXEC"
+msgstr "можно загрузить только ET_DYN и ET_EXEC"
# ???
-#: elf/dl-load.c:1740
+#: elf/dl-load.c:1724
msgid "ELF file's phentsize not the expected size"
-msgstr "phentsize ELF-ÆÁÊÌÁ ÎÅ ÓÏ×ÐÁÄÁÅÔ Ó ÏÖÉÄÁÅÍÙÍ ÒÁÚÍÅÒÏÍ"
+msgstr "phentsize ELF-файла не Ñовпадает Ñ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ñ‹Ð¼ размером"
#: elf/dl-load.c:2231
msgid "wrong ELF class: ELFCLASS64"
-msgstr "ÎÅÐÒÁ×ÉÌØÎÙÊ ËÌÁÓÓ ELF: ELFCLASS64"
+msgstr "неправильный клаÑÑ ELF: ELFCLASS64"
#: elf/dl-load.c:2232
msgid "wrong ELF class: ELFCLASS32"
-msgstr "ÎÅÐÒÁ×ÉÌØÎÙÊ ËÌÁÓÓ ELF: ELFCLASS32"
+msgstr "неправильный клаÑÑ ELF: ELFCLASS32"
#: elf/dl-load.c:2235
msgid "cannot open shared object file"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÒÁÚÄÅÌÑÅÍÙÊ ÏÂßÅËÔÎÙÊ ÆÁÊÌ"
+msgstr "невозможно открыть разделÑемый объектный файл"
-#: elf/dl-lookup.c:261
+#: elf/dl-lookup.c:356
msgid "relocation error"
-msgstr "ÏÛÉÂËÁ ÐÅÒÅÍÅÝÅÎÉÑ"
+msgstr "ошибка перемещениÑ"
-#: elf/dl-lookup.c:289
+#: elf/dl-lookup.c:384
msgid "symbol lookup error"
-msgstr "ÏÛÉÂËÁ ÐÏÉÓËÁ ÓÉÍ×ÏÌÁ"
+msgstr "ошибка поиÑка Ñимвола"
-#: elf/dl-open.c:112
+#: elf/dl-open.c:114
msgid "cannot extend global scope"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÒÁÓÛÉÒÉÔØ ÇÌÏÂÁÌØÎÕÀ ÏÂÌÁÓÔØ"
-
-#: elf/dl-open.c:237
-msgid "empty dynamic string token substitution"
-msgstr ""
-
-#: elf/dl-open.c:406 elf/dl-open.c:417 elf/dl-open.c:425
-msgid "cannot create scope list"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÐÉÓÏË ÏÂÌÁÓÔÅÊ"
+msgstr "невозможно раÑширить глобальную облаÑÑ‚ÑŒ"
-#: elf/dl-open.c:470
+#: elf/dl-open.c:512
msgid "TLS generation counter wrapped! Please report this."
-msgstr "ðÅÒÅÐÏÌÎÅÎÉÅ ÓÞÅÔÞÉËÁ ÐÏËÏÌÅÎÉÊ TLS! ðÏÖÁÌÕÊÓÔÁ, ÓÏÏÂÝÉÔÅ Ï ÜÔÏÍ."
+msgstr "Переполнение Ñчетчика поколений TLS! ПожалуйÑта, Ñообщите об Ñтом."
-#: elf/dl-open.c:508
+#: elf/dl-open.c:549
msgid "invalid mode for dlopen()"
-msgstr "ÎÅ×ÅÒÎÙÊ ÒÅÖÉÍ ÄÌÑ dlopen()"
+msgstr "неверный режим Ð´Ð»Ñ dlopen()"
-#: elf/dl-open.c:525
+#: elf/dl-open.c:566
msgid "no more namespaces available for dlmopen()"
-msgstr "ÂÏÌØÛÅ ÎÅÔ ÄÏÓÔÕÐÎÙÈ ÐÒÏÓÔÒÁÎÓÔ× ÉÍÅÎ ÄÌÑ dlmopen()"
+msgstr "больше нет доÑтупных проÑтранÑтв имен Ð´Ð»Ñ dlmopen()"
-#: elf/dl-open.c:538
+#: elf/dl-open.c:579
msgid "invalid target namespace in dlmopen()"
-msgstr "ÎÅ×ÅÒÎÏÅ ÃÅÌÅ×ÏÅ ÐÒÏÓÔÒÁÎÓÔ×Ï ÉÍÅÎ × dlmopen()"
+msgstr "неверное целевое проÑтранÑтво имен в dlmopen()"
-#: elf/dl-reloc.c:55
+#: elf/dl-reloc.c:121
msgid "cannot allocate memory in static TLS block"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ × ÓÔÁÔÉÞÎÏÍ ÂÌÏËÅ TLS"
+msgstr "невозможно выделить памÑÑ‚ÑŒ в Ñтатичном блоке TLS"
-#: elf/dl-reloc.c:198
+#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÄÅÌÁÔØ ÓÅÇÍÅÎÔ ÚÁÐÉÓÙ×ÁÅÍÙÍ ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÑ"
+msgstr "невозможно Ñделать Ñегмент запиÑываемым Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ"
-#: elf/dl-reloc.c:279
+#: elf/dl-reloc.c:277
#, c-format
msgid "%s: no PLTREL found in object %s\n"
-msgstr "%s: × ÏÂßÅËÔÅ %s ÎÅ ÎÁÊÄÅÎÏ PLTREL\n"
+msgstr "%s: в объекте %s не найдено PLTREL\n"
-#: elf/dl-reloc.c:290
+#: elf/dl-reloc.c:288
#, c-format
msgid "%s: out of memory to store relocation results for %s\n"
-msgstr "%s: ÎÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ ÄÌÑ ÚÁÐÉÓÉ ÒÅÚÕÌØÔÁÔÏ× ÒÅÌÏËÁÃÉÉ ÄÌÑ %s\n"
+msgstr "%s: недоÑтаточно памÑти Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи результатов релокации Ð´Ð»Ñ %s\n"
-#: elf/dl-reloc.c:306
+#: elf/dl-reloc.c:304
msgid "cannot restore segment prot after reloc"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÏÓÓÔÁÎÏ×ÉÔØ ÚÁÝÉÔÕ ÓÅÇÍÅÎÔÁ ÐÏÓÌÅ ÐÅÒÅÍÅÝÅÎÉÑ"
+msgstr "невозможно воÑÑтановить защиту Ñегмента поÑле перемещениÑ"
-#: elf/dl-reloc.c:331
+#: elf/dl-reloc.c:329
msgid "cannot apply additional memory protection after relocation"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÉÍÅÎÉÔØ ÄÏÐÏÌÎÉÔÅÌØÎÕÀ ÚÁÝÉÔÕ ÐÁÍÑÔÉ ÐÏÓÌÅ ÒÅÌÏËÁÃÉÉ"
+msgstr "невозможно применить дополнительную защиту памÑти поÑле релокации"
-#: elf/dl-sym.c:98
+#: elf/dl-sym.c:162
msgid "RTLD_NEXT used in code not dynamically loaded"
-msgstr "RTLD_NEXT ÉÓÐÏÌØÚÏ×ÁÎÏ × ÎÅ ÄÉÎÁÍÉÞÅÓËÉ ÚÁÇÒÕÖÅÎÎÏÍ ËÏÄÅ"
+msgstr "RTLD_NEXT иÑпользовано в не динамичеÑки загруженном коде"
-#: elf/dl-sysdep.c:495
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
msgid "cannot create capability list"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÐÉÓÏË ×ÏÚÍÏÖÎÏÓÔÅÊ"
+msgstr "невозможно Ñоздать ÑпиÑок возможноÑтей"
-#: elf/dl-tls.c:829
+#: elf/dl-tls.c:864
msgid "cannot create TLS data structures"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÔÒÕËÔÕÒÙ ÄÁÎÎÙÈ TLS"
+msgstr "невозможно Ñоздать Ñтруктуры данных TLS"
#: elf/dl-version.c:303
msgid "cannot allocate version reference table"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ ÔÁÂÌÉÃÕ ÓÓÙÌÏË ÎÁ ×ÅÒÓÉÉ"
+msgstr "невозможно выделить памÑÑ‚ÑŒ под таблицу ÑÑылок на верÑии"
-#: elf/ldconfig.c:133
+#: elf/ldconfig.c:141
msgid "Print cache"
-msgstr "îÁÐÅÞÁÔÁÔØ ËÜÛ"
+msgstr "Ðапечатать кÑш"
-#: elf/ldconfig.c:134
+#: elf/ldconfig.c:142
msgid "Generate verbose messages"
-msgstr "çÅÎÅÒÉÒÏ×ÁÔØ ÐÏÄÒÏÂÎÙÅ ÓÏÏÂÝÅÎÉÑ"
+msgstr "Генерировать подробные ÑообщениÑ"
-#: elf/ldconfig.c:135
+#: elf/ldconfig.c:143
msgid "Don't build cache"
-msgstr "îÅ ÓÔÒÏÉÔØ ËÜÛ"
+msgstr "Ðе Ñтроить кÑш"
-#: elf/ldconfig.c:136
+#: elf/ldconfig.c:144
msgid "Don't generate links"
-msgstr "îÅ ÇÅÎÅÒÉÒÏ×ÁÔØ ÓÓÙÌËÉ"
+msgstr "Ðе генерировать ÑÑылки"
-#: elf/ldconfig.c:137
+#: elf/ldconfig.c:145
msgid "Change to and use ROOT as root directory"
-msgstr "ðÅÒÅÊÔÉ × ROOT É ÉÓÐÏÌØÚÏ×ÁÔØ ÅÇÏ ËÁË ËÏÒÎÅ×ÏÊ ËÁÔÁÌÏÇ"
+msgstr "Перейти в КОРЕÐЬ и иÑпользовать его как корневой каталог"
-#: elf/ldconfig.c:137
+#: elf/ldconfig.c:145
msgid "ROOT"
-msgstr ""
+msgstr "КОРЕÐЬ"
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:146
msgid "CACHE"
-msgstr ""
+msgstr "КЭШ"
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:146
msgid "Use CACHE as cache file"
-msgstr "éÓÐÏÌØÚÏ×ÁÔØ CACHE × ËÁÞÅÓÔ×Å ËÜÛ-ÆÁÊÌÁ"
+msgstr "ИÑпользовать КЭШ в качеÑтве кÑш-файла"
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:147
msgid "CONF"
-msgstr ""
+msgstr "КОÐФИГУРÐЦИЯ"
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:147
msgid "Use CONF as configuration file"
-msgstr "éÓÐÏÌØÚÏ×ÁÔØ CONF × ËÁÞÅÓÔ×Å ËÏÎÆÉÇÕÒÁÃÉÏÎÎÏÇÏ ÆÁÊÌÁ"
+msgstr "ИÑпользовать КОÐФИГУРÐЦИЯ в качеÑтве конфигурационного файла"
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:148
msgid "Only process directories specified on the command line. Don't build cache."
-msgstr "ïÂÒÁÂÏÔÁÔØ ÔÏÌØËÏ ËÁÔÁÌÏÇÉ, ÕËÁÚÁÎÎÙÅ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ. îÅ ÓÔÒÏÉÔØ ËÜÛ."
+msgstr "Обработать только каталоги, указанные в командной Ñтроке. Ðе Ñтроить кÑш."
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:149
msgid "Manually link individual libraries."
-msgstr "÷ÒÕÞÎÕÀ ÓËÏÍÐÏÎÏ×ÁÔØ ÏÔÄÅÌØÎÙÅ ÂÉÂÌÉÏÔÅËÉ."
+msgstr "Вручную Ñкомпоновать отдельные библиотеки."
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:150
msgid "FORMAT"
-msgstr ""
+msgstr "FORMAT"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:150
msgid "Format to use: new, old or compat (default)"
-msgstr "éÓÐÏÌØÚÕÅÍÙÊ ÆÏÒÍÁÔ: new, old ÉÌÉ compat (ÐÏ ÕÍÏÌÞÁÎÉÀ)"
+msgstr "ИÑпользуемый формат: new, old или compat (по умолчанию)"
-#: elf/ldconfig.c:150
+#: elf/ldconfig.c:151
+msgid "Ignore auxiliary cache file"
+msgstr "Игнорирование вÑпомогательного файла кÑша"
+
+#: elf/ldconfig.c:159
msgid "Configure Dynamic Linker Run Time Bindings."
-msgstr "ëÏÎÆÉÇÕÒÉÒÕÅÔ Ó×ÑÚÉ ×ÒÅÍÅÎÉ ×ÙÐÏÌÎÅÎÉÑ ÄÌÑ ÄÉÎÁÍÉÞÅÓËÏÇÏ ËÏÍÐÏÎÏ×ÝÉËÁ."
+msgstr "Конфигурирует ÑвÑзи времени Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкого компоновщика."
-#: elf/ldconfig.c:308
+#: elf/ldconfig.c:339
#, c-format
msgid "Path `%s' given more than once"
-msgstr "ðÕÔØ `%s' ÚÁÄÁÎ ÎÅÓËÏÌØËÏ ÒÁÚ"
+msgstr "Путь «%s» задан неÑколько раз"
-#: elf/ldconfig.c:348
+#: elf/ldconfig.c:379
#, c-format
msgid "%s is not a known library type"
-msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÉÚ×ÅÓÔÎÙÍ ÔÉÐÏÍ ÂÉÂÌÉÏÔÅËÉ"
+msgstr "%s не ÑвлÑетÑÑ Ð¸Ð·Ð²ÐµÑтным типом библиотеки"
-#: elf/ldconfig.c:373
+#: elf/ldconfig.c:404
#, c-format
msgid "Can't stat %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat %s"
+msgstr "Ðевозможно выполнить stat %s"
-#: elf/ldconfig.c:447
+#: elf/ldconfig.c:478
#, c-format
msgid "Can't stat %s\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat %s\n"
+msgstr "Ðевозможно выполнить stat %s\n"
-#: elf/ldconfig.c:457
+#: elf/ldconfig.c:488
#, c-format
msgid "%s is not a symbolic link\n"
-msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÓÉÍ×ÏÌØÎÏÊ ÓÓÙÌËÏÊ\n"
+msgstr "%s не ÑвлÑетÑÑ Ñимвольной ÑÑылкой\n"
-#: elf/ldconfig.c:476
+#: elf/ldconfig.c:507
#, c-format
msgid "Can't unlink %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÓÓÙÌËÕ %s"
+msgstr "Ðевозможно удалить ÑÑылку %s"
-#: elf/ldconfig.c:482
+#: elf/ldconfig.c:513
#, c-format
msgid "Can't link %s to %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÓÙÌËÕ Ó %s ÎÁ %s"
+msgstr "Ðевозможно Ñоздать ÑÑылку Ñ %s на %s"
-#: elf/ldconfig.c:488
+#: elf/ldconfig.c:519
msgid " (changed)\n"
-msgstr " (ÉÍÅÎÅÎÏ)\n"
+msgstr " (именено)\n"
-#: elf/ldconfig.c:490
+#: elf/ldconfig.c:521
msgid " (SKIPPED)\n"
-msgstr " (ðòïðõýåîï)\n"
+msgstr " (ПРОПУЩЕÐО)\n"
-#: elf/ldconfig.c:545
+#: elf/ldconfig.c:576
#, c-format
msgid "Can't find %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ %s"
+msgstr "Ðевозможно найти %s"
-#: elf/ldconfig.c:561
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
-msgid "Can't lstat %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ lstat %s"
+msgid "Cannot lstat %s"
+msgstr "Ðевозможно выполнить lstat %s"
-#: elf/ldconfig.c:568
+#: elf/ldconfig.c:599
#, c-format
msgid "Ignored file %s since it is not a regular file."
-msgstr "æÁÊÌ %s ÉÇÎÏÒÉÒÏ×ÁÎ, ÐÏÓËÏÌØËÕ ÜÔÏ ÎÅ ÏÂÙÞÎÙÊ ÆÁÊÌ"
+msgstr "Файл %s игнорирован, поÑкольку Ñто не обычный файл"
-#: elf/ldconfig.c:576
+#: elf/ldconfig.c:608
#, c-format
msgid "No link created since soname could not be found for %s"
-msgstr "óÓÙÌËÁ ÎÅ ÓÏÚÄÁÎÁ, ÐÏÓËÏÌØËÕ ÄÌÑ %s ÎÅ ÂÙÌÏ ÎÁÊÄÅÎÏ soname"
+msgstr "СÑылка не Ñоздана, поÑкольку Ð´Ð»Ñ %s не было найдено soname"
-#: elf/ldconfig.c:667
+#: elf/ldconfig.c:691
#, c-format
msgid "Can't open directory %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÁÔÁÌÏÇ %s"
+msgstr "Ðевозможно открыть каталог %s"
-#: elf/ldconfig.c:735 elf/ldconfig.c:782
-#, c-format
-msgid "Cannot lstat %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ lstat %s"
-
-#: elf/ldconfig.c:747
+#: elf/ldconfig.c:779
#, c-format
msgid "Cannot stat %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat %s"
+msgstr "Ðевозможно выполнить stat %s"
-#: elf/ldconfig.c:804 elf/readlib.c:90
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
msgid "Input file %s not found.\n"
-msgstr "÷ÈÏÄÎÏÊ ÆÁÊÌ %s ÎÅ ÎÁÊÄÅÎ.\n"
+msgstr "Входной файл %s не найден.\n"
-#: elf/ldconfig.c:855
+#: elf/ldconfig.c:908
#, c-format
msgid "libc5 library %s in wrong directory"
-msgstr "libc5-ÂÉÂÌÉÏÔÅËÁ %s × ÎÅÐÒÁ×ÉÌØÎÏÍ ËÁÔÁÌÏÇÅ"
+msgstr "libc5-библиотека %s в неправильном каталоге"
-#: elf/ldconfig.c:858
+#: elf/ldconfig.c:911
#, c-format
msgid "libc6 library %s in wrong directory"
-msgstr "libc6-ÂÉÂÌÉÏÔÅËÁ %s × ÎÅÐÒÁ×ÉÌØÎÏÍ ËÁÔÁÌÏÇÅ"
+msgstr "libc6-библиотека %s в неправильном каталоге"
-#: elf/ldconfig.c:861
+#: elf/ldconfig.c:914
#, c-format
msgid "libc4 library %s in wrong directory"
-msgstr "libc4-ÂÉÂÌÉÏÔÅËÁ %s × ÎÅÐÒÁ×ÉÌØÎÏÍ ËÁÔÁÌÏÇÅ"
+msgstr "libc4-библиотека %s в неправильном каталоге"
-#: elf/ldconfig.c:888
+#: elf/ldconfig.c:942
#, c-format
msgid "libraries %s and %s in directory %s have same soname but different type."
-msgstr "ÂÉÂÌÉÏÔÅËÉ %s É %s × ËÁÔÁÌÏÇÅ %s ÉÍÅÀÔ ÏÄÉÎÁËÏ×ÙÊ soname, ÎÏ ÒÁÚÎÙÅ ÔÉÐÙ."
+msgstr "библиотеки %s и %s в каталоге %s имеют одинаковый soname, но разные типы."
-#: elf/ldconfig.c:995
+#: elf/ldconfig.c:1051
#, c-format
msgid "Can't open configuration file %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ %s"
+msgstr "Ðевозможно открыть конфигурационный файл %s"
-#: elf/ldconfig.c:1059
+#: elf/ldconfig.c:1115
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
-msgstr "%s:%u: ÎÅÐÒÁ×ÉÌØÎÙÊ ÓÉÎÔÁËÓÉÓ × ÓÔÒÏËÅ hwcap"
+msgstr "%s:%u: неправильный ÑинтакÑÐ¸Ñ Ð² Ñтроке hwcap"
-#: elf/ldconfig.c:1065
+#: elf/ldconfig.c:1121
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
-msgstr "%s:%u: ÉÎÄÅËÓ hwcap %lu ÐÒÅ×ÙÛÁÅÔ ÍÁËÓÉÍÕÍ %u"
+msgstr "%s:%u: Ð¸Ð½Ð´ÐµÐºÑ hwcap %lu превышает макÑимум %u"
-#: elf/ldconfig.c:1072 elf/ldconfig.c:1080
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
-msgstr "%s:%u: ÉÎÄÅËÓ hwcap %lu ÕÖÅ ÏÐÒÅÄÅÌÅÎ ËÁË %s"
+msgstr "%s:%u: Ð¸Ð½Ð´ÐµÐºÑ hwcap %lu уже определен как %s"
-#: elf/ldconfig.c:1083
+#: elf/ldconfig.c:1139
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
-msgstr "%s:%u: ÐÏ×ÔÏÒÎÏÅ hwcap %lu %s"
+msgstr "%s:%u: повторное hwcap %lu %s"
-#: elf/ldconfig.c:1105
+#: elf/ldconfig.c:1161
#, c-format
msgid "need absolute file name for configuration file when using -r"
-msgstr "ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ -r ÎÅÏÂÈÏÄÉÍÏ ÚÁÄÁ×ÁÔØ ÁÂÓÏÌÀÔÎÏÅ ÉÍÑ ÄÌÑ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÏÇÏ ÆÁÊÌÁ"
+msgstr "при иÑпользовании -r необходимо задавать абÑолютное Ð¸Ð¼Ñ Ð´Ð»Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¾Ð³Ð¾ файла"
-#: elf/ldconfig.c:1112 locale/programs/xmalloc.c:69 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:980 posix/getconf.c:1158
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
msgid "memory exhausted"
-msgstr "ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
+msgstr "памÑÑ‚ÑŒ иÑчерпана"
-#: elf/ldconfig.c:1142
+#: elf/ldconfig.c:1198
#, c-format
msgid "%s:%u: cannot read directory %s"
-msgstr "%s:%u: ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ËÁÔÁÌÏÇ %s"
+msgstr "%s:%u: невозможно прочитать каталог %s"
-#: elf/ldconfig.c:1182
+#: elf/ldconfig.c:1242
#, c-format
msgid "relative path `%s' used to build cache"
-msgstr "ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ ËÜÛÁ ÉÓÐÏÌØÚÏ×ÁÎ ÏÔÎÏÓÉÔÅÌØÎÙÊ ÐÕÔØ `%s'"
+msgstr "Ð´Ð»Ñ Ð¿Ð¾ÑÑ‚Ñ€Ð¾ÐµÐ½Ð¸Ñ ÐºÑша иÑпользован отноÑительный путь «%s»"
-#: elf/ldconfig.c:1210
+#: elf/ldconfig.c:1268
#, c-format
msgid "Can't chdir to /"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÊÔÉ × ËÁÔÁÌÏÇ /"
+msgstr "Ðевозможно перейти в каталог /"
-#: elf/ldconfig.c:1252
+#: elf/ldconfig.c:1310
#, c-format
msgid "Can't open cache file directory %s\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÁÔÁÌÏÇ ËÜÛ-ÆÁÊÌÁ %s\n"
+msgstr "Ðевозможно открыть каталог кÑш-файла %s\n"
#: elf/ldd.bash.in:43
msgid "Written by %s and %s.\n"
-msgstr "á×ÔÏÒÙ ÐÒÏÇÒÁÍÍÙ -- %s É %s.\n"
+msgstr "Ðвторы программы -- %s и %s.\n"
#: elf/ldd.bash.in:48
msgid ""
@@ -930,365 +924,396 @@ msgid ""
" -r, --function-relocs process data and function relocations\n"
" -u, --unused print unused direct dependencies\n"
" -v, --verbose print all information\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
-"éÓÐÏÌØÚÏ×ÁÎÉÅ: ldd [ëìàþ]... æáêì...\n"
-" --help ÎÁÐÅÞÁÔÁÔØ ÜÔÕ ÓÐÒÁ×ËÕ É ×ÙÊÔÉ\n"
-" --version ÎÁÐÅÞÁÔÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ\n"
-" -d, --data-relocs ÏÂÒÁÂÏÔÁÔØ ÒÅÌÏËÁÃÉÉ ÄÁÎÎÙÈ\n"
-" -r, --function-relocs ÏÂÒÁÂÏÔÁÔØ ÒÅÌÏËÁÃÉÉ ÄÁÎÎÙÈ É ÆÕÎËÃÉÊ\n"
-" -u, --unused ÎÁÐÅÞÁÔÁÔØ ÎÅÉÓÐÏÌØÚÕÅÍÙÅ ÐÒÑÍÙÅ ÚÁ×ÉÓÉÍÏÓÔÉ\n"
-" -v, --verbose ÎÁÐÅÞÁÔÁÔØ ×ÓÀ ÉÎÆÏÒÍÁÃÉÀ\n"
-"éÎÓÔÒÕËÃÉÉ ÐÏ ÓÏÏÂÝÅÎÉÀ Ï ÏÛÉÂËÁÈ ÓÍÏÔÒÉÔÅ ÎÁ\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-
-#: elf/ldd.bash.in:80
-msgid "ldd: option `$1' is ambiguous"
-msgstr "ldd: ËÌÀÞ `$1' ÎÅÏÄÎÏÚÎÁÞÅÎ"
-
-#: elf/ldd.bash.in:87
+"ИÑпользование: ldd [КЛЮЧ]... ФÐЙЛ...\n"
+" --help напечатать Ñту Ñправку и выйти\n"
+" --version напечатать информацию о верÑии и выйти\n"
+" -d, --data-relocs обработать релокации данных\n"
+" -r, --function-relocs обработать релокации данных и функций\n"
+" -u, --unused напечатать неиÑпользуемые прÑмые завиÑимоÑти\n"
+" -v, --verbose напечатать вÑÑŽ информацию\n"
+
+#: elf/ldd.bash.in:82
+msgid "ldd: option \\`$1' is ambiguous"
+msgstr "ldd: ключ «$1» неоднозначен"
+
+#: elf/ldd.bash.in:89
msgid "unrecognized option"
-msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ËÌÀÞ"
+msgstr "нераÑпознанный ключ"
-#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
-msgid "Try `ldd --help' for more information."
-msgstr "ðÏÐÒÏÂÕÊÔÅ `ldd --help' ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÇÏ ÏÐÉÓÁÎÉÑ."
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
+msgid "Try \\`ldd --help' for more information."
+msgstr "Попробуйте «ldd --help» Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подробного опиÑаниÑ."
-#: elf/ldd.bash.in:125
+#: elf/ldd.bash.in:127
msgid "missing file arguments"
-msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÁÒÇÕÍÅÎÔÙ, ÚÁÄÁÀÝÉÅ ÆÁÊÌÙ"
+msgstr "отÑутÑтвуют аргументы, задающие файлы"
#. TRANS No such file or directory. This is a ``file doesn't exist'' error
#. TRANS for ordinary files that are referenced in contexts where they are
#. TRANS expected to already exist.
-#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
-msgstr "îÅÔ ÔÁËÏÇÏ ÆÁÊÌÁ ÉÌÉ ËÁÔÁÌÏÇÁ"
+msgstr "Ðет такого файла или каталога"
-#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
msgid "not regular file"
-msgstr "ÎÅ ÏÂÙÞÎÙÊ ÆÁÊÌ"
+msgstr "не обычный файл"
-#: elf/ldd.bash.in:154
+#: elf/ldd.bash.in:156
msgid "warning: you do not have execution permission for"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: Õ ×ÁÓ ÎÅÔ ÐÒÁ× ÎÁ ×ÙÐÏÌÎÅÎÉÅ"
+msgstr "предупреждение: у Ð²Ð°Ñ Ð½ÐµÑ‚ прав на выполнение"
-#: elf/ldd.bash.in:183
+#: elf/ldd.bash.in:185
msgid "\tnot a dynamic executable"
-msgstr "\tÎÅ Ñ×ÌÑÅÔÓÑ ÄÉÎÁÍÉÞÅÓËÉÍ ÉÓÐÏÌÎÑÅÍÙÍ ÆÁÊÌÏÍ"
+msgstr "\tне ÑвлÑетÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑким иÑполнÑемым файлом"
-#: elf/ldd.bash.in:191
+#: elf/ldd.bash.in:193
msgid "exited with unknown exit code"
-msgstr "ÚÁ×ÅÒÛÅÎÏ Ó ÎÅÉÚ×ÅÓÔÎÙÍ ×ÙÈÏÄÎÙÍ ËÏÄÏÍ"
+msgstr "завершено Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтным выходным кодом"
-#: elf/ldd.bash.in:196
+#: elf/ldd.bash.in:198
msgid "error: you do not have read permission for"
-msgstr "ÏÛÉÂËÁ: Õ ×ÁÓ ÎÅÔ ÒÁÚÒÅÛÅÎÉÑ ÎÁ ÞÔÅÎÉÅ"
+msgstr "ошибка: у Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° чтение"
#: elf/readelflib.c:35
#, c-format
msgid "file %s is truncated\n"
-msgstr "ÆÁÊÌ %s ÕÓÅÞÅÎ\n"
+msgstr "файл %s уÑечен\n"
#: elf/readelflib.c:67
#, c-format
msgid "%s is a 32 bit ELF file.\n"
-msgstr "%s Ñ×ÌÑÅÔÓÑ 32-ÂÉÔÎÙÍ ELF-ÆÁÊÌÏÍ.\n"
+msgstr "%s ÑвлÑетÑÑ 32-битным ELF-файлом.\n"
#: elf/readelflib.c:69
#, c-format
msgid "%s is a 64 bit ELF file.\n"
-msgstr "%s Ñ×ÌÑÅÔÓÑ 64-ÂÉÔÎÙÍ ELF-ÆÁÊÌÏÍ.\n"
+msgstr "%s ÑвлÑетÑÑ 64-битным ELF-файлом.\n"
#: elf/readelflib.c:71
#, c-format
msgid "Unknown ELFCLASS in file %s.\n"
-msgstr "îÅÉÚ×ÅÓÔÎÙÊ ELFCLASS × ÆÁÊÌÅ %s.\n"
+msgstr "ÐеизвеÑтный ELFCLASS в файле %s.\n"
#: elf/readelflib.c:78
#, c-format
msgid "%s is not a shared object file (Type: %d).\n"
-msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÒÁÚÄÅÌÑÅÍÙÍ ÏÂßÅËÔÎÙÍ ÆÁÊÌÏÍ (ôÉÐ: %d).\n"
+msgstr "%s не ÑвлÑетÑÑ Ñ€Ð°Ð·Ð´ÐµÐ»Ñемым объектным файлом (Тип: %d).\n"
#: elf/readelflib.c:109
#, c-format
msgid "more than one dynamic segment\n"
-msgstr "ÂÏÌÅÅ ÏÄÎÏÇÏ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÅÇÍÅÎÔÏ×\n"
+msgstr "более одного динамичеÑких Ñегментов\n"
-#: elf/readlib.c:96
+#: elf/readlib.c:97
#, c-format
msgid "Cannot fstat file %s.\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ fstat ÄÌÑ ÆÁÊÌÁ %s.\n"
+msgstr "Ðевозможно выполнить fstat Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° %s.\n"
-#: elf/readlib.c:107
+#: elf/readlib.c:108
#, c-format
msgid "File %s is empty, not checked."
-msgstr "æÁÊÌ %s ÐÕÓÔ; ÎÅ ÂÙÌ ÐÒÏ×ÅÒÅÎ."
+msgstr "Файл %s пуÑÑ‚; не был проверен."
-#: elf/readlib.c:113
+#: elf/readlib.c:114
#, c-format
msgid "File %s is too small, not checked."
-msgstr "æÁÊÌ %s ÓÌÉÛËÏÍ ÍÁÌ; ÎÅ ÂÙÌ ÐÒÏ×ÅÒÅÎ."
+msgstr "Файл %s Ñлишком мал; не был проверен."
-#: elf/readlib.c:123
+#: elf/readlib.c:124
#, c-format
msgid "Cannot mmap file %s.\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔÏÂÒÁÚÉÔØ × ÐÁÍÑÔØ ÆÁÊÌ %s.\n"
+msgstr "Ðевозможно отобразить в памÑÑ‚ÑŒ файл %s.\n"
-#: elf/readlib.c:161
+#: elf/readlib.c:162
#, c-format
msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
-msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ELF-ÆÁÊÌÏÍ -- Õ ÎÅÇÏ × ÎÁÞÁÌÅ ÎÅÐÒÁ×ÉÌØÎÙÅ ×ÏÌÛÅÂÎÙÅ ÂÁÊÔÙ.\n"
+msgstr "%s не ÑвлÑетÑÑ ELF-файлом -- у него в начале неправильные волшебные байты.\n"
+
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+"ИÑпользование: sln иÑточник назначение |файл\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s: ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°: %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "Ðе задана цель в Ñтроке %d\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s: в назначении Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ каталог\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr "%s: не удалоÑÑŒ удалить Ñтарое назначение\n"
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s: неверное назначение: %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ ÑÑылка Ñ %s на %s: %s\n"
#: elf/sprof.c:77
msgid "Output selection:"
-msgstr "÷ÙÂÏÒ ÔÉÐÁ ×Ù×ÏÄÁ:"
+msgstr "Выбор типа вывода:"
#: elf/sprof.c:79
msgid "print list of count paths and their number of use"
-msgstr "ÎÁÐÅÞÁÔÁÔØ ÓÐÉÓÏË ÐÕÔÅÊ ÓÞÅÔÞÉËÏ× É ÞÉÓÌÏ ÉÈ ÉÓÐÏÌØÚÏ×ÁÎÉÊ"
+msgstr "напечатать ÑпиÑок путей Ñчётчиков и чиÑло их иÑпользований"
#: elf/sprof.c:81
msgid "generate flat profile with counts and ticks"
-msgstr "ÇÅÎÅÒÉÒÏ×ÁÔØ ÐÌÏÓËÉÊ ÐÒÏÆÉÌØ ÓÏ ÓÞÅÔÞÉËÁÍÉ É ÍÅÔËÁÍÉ"
+msgstr "генерировать плоÑкий профиль Ñо Ñчётчиками и метками"
#: elf/sprof.c:82
msgid "generate call graph"
-msgstr "ÇÅÎÅÒÉÒÏ×ÁÔØ ÇÒÁÆ ×ÙÚÏ×Ï×"
+msgstr "генерировать граф вызовов"
#: elf/sprof.c:89
-msgid ""
-"Read and display shared object profiling data. For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"óÞÉÔÙ×ÁÅÔ É ÏÔÏÂÒÁÖÁÅÔ ÄÁÎÎÙÅ ÐÒÏÆÉÌÉÒÏ×ÁÎÉÑ ÒÁÚÄÅÌÑÅÍÏÇÏ ÏÂßÅËÔÁ. éÎÓÔÒÕËÃÉÉ ÐÏ ÓÏÏÂÝÅÎÉÀ Ï ÏÛÉÂËÁÈ ÓÍÏÔÒÉÔÅ ÎÁ\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Read and display shared object profiling data."
+msgstr "Читает и показывает разделÑемые объекты данных профилированиÑ."
#: elf/sprof.c:94
msgid "SHOBJ [PROFDATA]"
-msgstr "òáúä-ïâÿåëô [ðòïæ-äáîîùå]"
+msgstr "РÐЗД-ОБЪЕКТ [ПРОФ-ДÐÐÐЫЕ]"
-#: elf/sprof.c:400
+#: elf/sprof.c:420
#, c-format
msgid "failed to load shared object `%s'"
-msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÒÁÚÄÅÌÑÅÍÙÊ ÏÂßÅËÔ `%s'"
+msgstr "не удалоÑÑŒ загрузить разделÑемый объект «%s»"
-#: elf/sprof.c:409
+#: elf/sprof.c:429
#, c-format
msgid "cannot create internal descriptors"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÎÕÔÒÅÎÎÉÅ ÄÅÓËÒÉÐÔÏÒÙ"
+msgstr "невозможно Ñоздать внутренние деÑкрипторы"
-#: elf/sprof.c:528
+#: elf/sprof.c:548
#, c-format
msgid "Reopening shared object `%s' failed"
-msgstr "óÂÏÊ ÐÏ×ÔÏÒÎÏÇÏ ÏÔËÒÙÔÉÑ ÒÁÚÄÅÌÑÅÍÏÇÏ ÏÂßÅËÔÁ `%s'"
+msgstr "Сбой повторного Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ñемого объекта «%s»"
-#: elf/sprof.c:535 elf/sprof.c:629
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
msgid "reading of section headers failed"
-msgstr "ÞÔÅÎÉÅ ÚÁÇÏÌÏ×ËÏ× ÓÅËÃÉÉ ÎÅÕÓÐÅÛÎÏ"
+msgstr "чтение заголовков Ñекции неуÑпешно"
-#: elf/sprof.c:543 elf/sprof.c:637
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
msgid "reading of section header string table failed"
-msgstr "ÞÔÅÎÉÅ ÓÔÒÏËÉ ÚÁÇÏÌÏ×ËÁ ÓÅËÃÉÉ ÎÅÕÓÐÅÛÎÏ"
+msgstr "чтение Ñтроки заголовка Ñекции неуÑпешно"
-#: elf/sprof.c:569
+#: elf/sprof.c:589
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
-msgstr "*** îÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ÆÁÊÌ Ó ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÅÊ: %m\n"
+msgstr "*** Ðевозможно прочитать файл Ñ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð¹ информацией: %m\n"
-#: elf/sprof.c:589
+#: elf/sprof.c:609
#, c-format
msgid "cannot determine file name"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÉÍÑ ÆÁÊÌÁ"
+msgstr "невозможно определить Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
-#: elf/sprof.c:622
+#: elf/sprof.c:642
#, c-format
msgid "reading of ELF header failed"
-msgstr "ÓÞÉÔÙ×ÁÎÉÅ ÚÁÇÏÌÏ×ËÁ ELF ÎÅÕÓÐÅÛÎÏ"
+msgstr "Ñчитывание заголовка ELF неуÑпешно"
-#: elf/sprof.c:658
+#: elf/sprof.c:678
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
-msgstr "*** æÁÊÌ `%s' ÏÞÉÝÅÎ: ÐÏÄÒÏÂÎÙÊ ÁÎÁÌÉÚ ÎÅ×ÏÚÍÏÖÅÎ\n"
+msgstr "*** Файл «%s» очищен: подробный анализ невозможен\n"
-#: elf/sprof.c:688
+#: elf/sprof.c:708
#, c-format
msgid "failed to load symbol data"
-msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÄÁÎÎÙÅ Ï ÓÉÍ×ÏÌÁÈ"
+msgstr "не удалоÑÑŒ загрузить данные о Ñимволах"
-#: elf/sprof.c:755
+#: elf/sprof.c:775
#, c-format
msgid "cannot load profiling data"
-msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÐÒÏÆÉÌÉÒÏ×ÏÞÎÙÅ ÄÁÎÎÙÅ"
+msgstr "не удалоÑÑŒ загрузить профилировочные данные"
-#: elf/sprof.c:764
+#: elf/sprof.c:784
#, c-format
msgid "while stat'ing profiling data file"
-msgstr "ÐÒÉ ÏÐÅÒÁÃÉÉ stat ÎÁÄ ÆÁÊÌÏÍ Ó ÐÒÏÆÉÌÉÒÏ×ÏÞÎÙÍÉ ÄÁÎÎÙÍÉ"
+msgstr "при операции stat над файлом Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð¾Ñ‡Ð½Ñ‹Ð¼Ð¸ данными"
-#: elf/sprof.c:772
+#: elf/sprof.c:792
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
-msgstr "ÆÁÊÌ Ó ÐÒÏÆÉÌÉÒÏ×ÏÞÎÙÍÉ ÄÁÎÎÙÍÉ `%s' ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÒÁÚÄÅÌÑÅÍÏÍÕ ÏÂßÅËÔÕ `%s'"
+msgstr "файл Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð¾Ñ‡Ð½Ñ‹Ð¼Ð¸ данными «%s» не ÑоответÑтвует разделÑемому объекту «%s»"
-#: elf/sprof.c:783
+#: elf/sprof.c:803
#, c-format
msgid "failed to mmap the profiling data file"
-msgstr "ÎÅ ÕÄÁÌÏÓØ ÏÔÏÂÒÁÚÉÔØ × ÐÁÍÑÔØ ÆÁÊÌ Ó ÐÒÏÆÉÌÉÒÏ×ÏÞÎÙÍÉ ÄÁÎÎÙÍÉ"
+msgstr "не удалоÑÑŒ отобразить в памÑÑ‚ÑŒ файл Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð¾Ñ‡Ð½Ñ‹Ð¼Ð¸ данными"
-#: elf/sprof.c:791
+#: elf/sprof.c:811
#, c-format
msgid "error while closing the profiling data file"
-msgstr "ÏÛÉÂËÁ ÐÒÉ ÚÁËÒÙÔÉÉ ÆÁÊÌÁ Ó ÐÒÏÆÉÌÉÒÏ×ÏÞÎÙÍÉ ÄÁÎÎÙÍÉ"
+msgstr "ошибка при закрытии файла Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð¾Ñ‡Ð½Ñ‹Ð¼Ð¸ данными"
-#: elf/sprof.c:800 elf/sprof.c:870
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
msgid "cannot create internal descriptor"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÎÕÔÒÅÎÎÉÊ ÄÅÓËÒÉÐÔÏÒ"
+msgstr "невозможно Ñоздать внутренний деÑкриптор"
-#: elf/sprof.c:846
+#: elf/sprof.c:866
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
-msgstr "`%s' ÎÅ Ñ×ÌÑÅÔÓÑ ×ÅÒÎÙÍ ÆÁÊÌÏÍ Ó ÐÒÏÆÉÌÉÒÏ×ÏÞÎÙÍÉ ÄÁÎÎÙÍÉ ÄÌÑ `%s'"
+msgstr "«%s» не ÑвлÑетÑÑ Ð²ÐµÑ€Ð½Ñ‹Ð¼ файлом Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð¾Ñ‡Ð½Ñ‹Ð¼Ð¸ данными Ð´Ð»Ñ Â«%s»"
-#: elf/sprof.c:1027 elf/sprof.c:1085
+#: elf/sprof.c:1047 elf/sprof.c:1105
#, c-format
msgid "cannot allocate symbol data"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ ÄÁÎÎÙÅ ÓÉÍ×ÏÌÁ"
+msgstr "невозможно выделить памÑÑ‚ÑŒ под данные Ñимвола"
-#: iconv/iconv_charmap.c:175 iconv/iconv_prog.c:315
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "невозможно открыть выходной файл"
+
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
-msgstr "ÏÛÉÂËÁ ÐÒÉ ÚÁËÒÙÔÉÉ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ `%s'"
+msgstr "ошибка при закрытии входного файла «%s»"
-#: iconv/iconv_charmap.c:449
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
-msgstr "ÎÅÄÏÐÕÓÔÉÍÁÑ ×ÈÏÄÎÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ × ÐÏÚÉÃÉÉ %Zd"
+msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾ÑледовательноÑÑ‚ÑŒ в позиции %Zd"
-#: iconv/iconv_charmap.c:468 iconv/iconv_prog.c:525
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
#, c-format
msgid "incomplete character or shift sequence at end of buffer"
-msgstr "ÎÅÐÏÌÎÙÊ ÚÎÁË ÉÌÉ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÓÄ×ÉÇÁ × ËÏÎÃÅ ÂÕÆÅÒÁ"
+msgstr "неполный знак или поÑледовательноÑÑ‚ÑŒ Ñдвига в конце буфера"
-#: iconv/iconv_charmap.c:513 iconv/iconv_charmap.c:549 iconv/iconv_prog.c:568
-#: iconv/iconv_prog.c:604
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
#, c-format
msgid "error while reading the input"
-msgstr "ÏÛÉÂËÁ ÐÒÉ ÞÔÅÎÉÉ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ"
+msgstr "ошибка при чтении входного файла"
-#: iconv/iconv_charmap.c:531 iconv/iconv_prog.c:586
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
#, c-format
msgid "unable to allocate buffer for input"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÂÕÆÅÒ ÄÌÑ ××ÏÄÁ"
+msgstr "невозможно получить буфер Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð°"
-#: iconv/iconv_prog.c:59
+#: iconv/iconv_prog.c:60
msgid "Input/Output format specification:"
-msgstr "óÐÅÃÉÆÉËÁÃÉÑ ÆÏÒÍÁÔÁ ××ÏÄÁ/×Ù×ÏÄÁ:"
+msgstr "Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° ввода/вывода:"
-#: iconv/iconv_prog.c:60
+#: iconv/iconv_prog.c:61
msgid "encoding of original text"
-msgstr "ËÏÄÉÒÏ×ËÁ ÏÒÉÇÉÎÁÌØÎÏÇÏ ÔÅËÓÔÁ"
+msgstr "кодировка оригинального текÑта"
-#: iconv/iconv_prog.c:61
+#: iconv/iconv_prog.c:62
msgid "encoding for output"
-msgstr "ËÏÄÉÒÏ×ËÁ ÄÌÑ ×Ù×ÏÄÁ"
+msgstr "кодировка Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð°"
-#: iconv/iconv_prog.c:62
+#: iconv/iconv_prog.c:63
msgid "Information:"
-msgstr "éÎÆÏÒÍÁÃÉÑ:"
+msgstr "ИнформациÑ:"
-#: iconv/iconv_prog.c:63
+#: iconv/iconv_prog.c:64
msgid "list all known coded character sets"
-msgstr "ÐÅÒÅÞÉÓÌÉÔØ ×ÓÅ ÉÚ×ÅÓÔÎÙÅ ×ÓÔÒÏÅÎÎÙÅ ËÏÄÉÒÏ×ËÉ"
+msgstr "перечиÑлить вÑе извеÑтные вÑтроенные кодировки"
-#: iconv/iconv_prog.c:64 locale/programs/localedef.c:126
+#: iconv/iconv_prog.c:65 locale/programs/localedef.c:127
msgid "Output control:"
-msgstr "õÓÐÒÁ×ÌÅÎÉÅ ×Ù×ÏÄÏÍ:"
+msgstr "УÑправление выводом:"
-#: iconv/iconv_prog.c:65
+#: iconv/iconv_prog.c:66
msgid "omit invalid characters from output"
-msgstr "ÐÒÏÐÕÓËÁÔØ ÎÁ ×Ù×ÏÄÅ ÎÅÄÏÐÕÓÔÉÍÙÅ ÚÎÁËÉ"
+msgstr "пропуÑкать на выводе недопуÑтимые знаки"
-#: iconv/iconv_prog.c:66
+#: iconv/iconv_prog.c:67
msgid "output file"
-msgstr "×ÙÈÏÄÎÏÊ ÆÁÊÌ"
+msgstr "выходной файл"
-#: iconv/iconv_prog.c:67
+#: iconv/iconv_prog.c:68
msgid "suppress warnings"
-msgstr "ÎÅ ÐÅÞÁÔÁÔØ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ"
+msgstr "не печатать предупреждениÑ"
-#: iconv/iconv_prog.c:68
+#: iconv/iconv_prog.c:69
msgid "print progress information"
-msgstr "ÐÅÞÁÔÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÈÏÄÅ ÒÁÂÏÔÙ"
+msgstr "печатать информацию о ходе работы"
-#: iconv/iconv_prog.c:73
+#: iconv/iconv_prog.c:74
msgid "Convert encoding of given files from one encoding to another."
-msgstr "ðÒÅÏÂÒÁÚÕÅÔ ÕËÁÚÁÎÎÙÅ ÆÁÊÌÙ ÉÚ ÏÄÎÏÊ ËÏÄÉÒÏ×ËÉ × ÄÒÕÇÕÀ."
+msgstr "Преобразует указанные файлы из одной кодировки в другую."
-#: iconv/iconv_prog.c:77
+#: iconv/iconv_prog.c:78
msgid "[FILE...]"
-msgstr "[æáêì...]"
+msgstr "[ФÐЙЛ...]"
-#: iconv/iconv_prog.c:199
-#, c-format
-msgid "cannot open output file"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ"
-
-#: iconv/iconv_prog.c:241
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
-msgstr "ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ÉÚ `%s' É × `%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ"
+msgstr "Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· «%s» и в «%s» не поддерживаютÑÑ"
-#: iconv/iconv_prog.c:246
+#: iconv/iconv_prog.c:239
#, c-format
msgid "conversion from `%s' is not supported"
-msgstr "ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÉÚ `%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+msgstr "преобразование из «%s» не поддерживаетÑÑ"
-#: iconv/iconv_prog.c:253
+#: iconv/iconv_prog.c:246
#, c-format
msgid "conversion to `%s' is not supported"
-msgstr "ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ × `%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+msgstr "преобразование в «%s» не поддерживаетÑÑ"
-#: iconv/iconv_prog.c:257
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
-msgstr "ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÉÚ `%s' × `%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+msgstr "преобразование из «%s» в «%s» не поддерживаетÑÑ"
-#: iconv/iconv_prog.c:267
+#: iconv/iconv_prog.c:260
#, c-format
msgid "failed to start conversion processing"
-msgstr "ÎÅ ÕÄÁÌÏÓØ ÎÁÞÁÔØ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ"
+msgstr "не удалоÑÑŒ начать преобразование"
-#: iconv/iconv_prog.c:361
+#: iconv/iconv_prog.c:358
#, c-format
msgid "error while closing output file"
-msgstr "ÏÛÉÂËÁ ÐÒÉ ÚÁËÒÙÔÉÉ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ"
+msgstr "ошибка при закрытии выходного файла"
-#: iconv/iconv_prog.c:470 iconv/iconv_prog.c:496
+#: iconv/iconv_prog.c:456
#, c-format
msgid "conversion stopped due to problem in writing the output"
-msgstr "ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÏÓÔÁÎÏ×ÌÅÎÏ ÉÚ-ÚÁ ÐÒÏÂÌÅÍÙ ÐÒÉ ÚÁÐÉÓÉ ×Ù×ÏÄÁ"
+msgstr "преобразование оÑтановлено из-за проблемы при запиÑи вывода"
-#: iconv/iconv_prog.c:521
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
-msgstr "ÎÅÄÏÐÕÓÔÉÍÁÑ ×ÈÏÄÎÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ × ÐÏÚÉÃÉÉ %ld"
+msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾ÑледовательноÑÑ‚ÑŒ в позиции %ld"
-#: iconv/iconv_prog.c:529
+#: iconv/iconv_prog.c:541
#, c-format
msgid "internal error (illegal descriptor)"
-msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ (ÎÅ×ÅÒÎÙÊ ÄÅÓËÒÉÐÔÏÒ)"
+msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° (неверный деÑкриптор)"
-#: iconv/iconv_prog.c:532
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
-msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ iconv() %d"
+msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° iconv() %d"
-#: iconv/iconv_prog.c:778
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -1297,1258 +1322,1249 @@ msgid ""
"\n"
" "
msgstr ""
-"óÌÅÄÕÀÝÉÊ ÓÐÉÓÏË ÓÏÄÅÒÖÉÔ ×ÓÅ ÉÚ×ÅÓÔÎÙÅ ×ÓÔÒÏÅÎÎÙÅ ËÏÄÉÒÏ×ËÉ. üÔÏ ÎÅ\n"
-"ÏÂÑÚÁÔÅÌØÎÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÌÀÂÙÅ ËÏÍÂÉÎÁÃÉÉ ÄÁÎÎÙÈ\n"
-"ÉÍÅÎ × ÐÁÒÁÍÅÔÒÁÈ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ FROM É TO. ïÄÎÁ É ÔÁ ÖÅ ËÏÄÉÒÏ×ËÁ\n"
-"ÍÏÖÅÔ ÂÙÔØ ÐÅÒÅÞÉÓÌÅÎÁ ÐÏÄ ÎÅÓËÏÌØËÉÍÉ ÉÍÅÎÁÍÉ (ÐÓÅ×ÄÏÎÉÍÁÍÉ).\n"
+"Следующий ÑпиÑок Ñодержит вÑе извеÑтные вÑтроенные кодировки. Это не\n"
+"обÑзательно означает, что можно иÑпользовать любые комбинации данных\n"
+"имен в параметрах командной Ñтроки FROM и TO. Одна и та же кодировка\n"
+"может быть перечиÑлена под неÑколькими именами (пÑевдонимами).\n"
"\n"
" "
-#: iconv/iconvconfig.c:109
+#: iconv/iconvconfig.c:110
msgid "Create fastloading iconv module configuration file."
-msgstr "óÏÚÄÁÅÔ ÂÙÓÔÒÏÚÁÇÒÕÖÁÅÍÙÊ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ ÍÏÄÕÌÑ iconv."
+msgstr "Создает быÑтрозагружаемый конфигурационный файл Ð¼Ð¾Ð´ÑƒÐ»Ñ iconv."
-#: iconv/iconvconfig.c:113
+#: iconv/iconvconfig.c:114
msgid "[DIR...]"
-msgstr "[ëáôáìïç...]"
+msgstr "[КÐТÐЛОГ...]"
-#: iconv/iconvconfig.c:126
+#: iconv/iconvconfig.c:127
msgid "Prefix used for all file accesses"
-msgstr "ðÒÅÆÉËÓ, ÉÓÐÏÌØÚÕÅÍÙÊ ÄÌÑ ÄÏÓÔÕÐÁ ËÏ ×ÓÅÍ ÆÁÊÌÁÍ"
+msgstr "ПрефикÑ, иÑпользуемый Ð´Ð»Ñ Ð´Ð¾Ñтупа ко вÑем файлам"
-#: iconv/iconvconfig.c:127
+#: iconv/iconvconfig.c:128
msgid "Put output in FILE instead of installed location (--prefix does not apply to FILE)"
-msgstr "úÁÐÉÓÁÔØ ×Ù×ÏÄ × æáêì, Á ÎÅ × ÍÅÓÔÏ ÕÓÔÁÎÏ×ËÉ (--prefix ÎÅ ÐÒÉÍÅÎÑÅÔÓÑ Ë æáêìõ)"
+msgstr "ЗапиÑать вывод в ФÐЙЛ, а не в меÑто уÑтановки (--prefix не применÑетÑÑ Ðº ФÐЙЛУ)"
-#: iconv/iconvconfig.c:131
+#: iconv/iconvconfig.c:132
msgid "Do not search standard directories, only those on the command line"
-msgstr "îÅ ÉÓËÁÔØ × ÓÔÁÎÄÁÒÔÎÙÈ ËÁÔÁÌÏÇÁÈ, Á ÔÏÌØËÏ × ÕËÁÚÁÎÎÙÈ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ"
+msgstr "Ðе иÑкать в Ñтандартных каталогах, а только в указанных в командной Ñтроке"
-#: iconv/iconvconfig.c:300
+#: iconv/iconvconfig.c:301
#, c-format
msgid "Directory arguments required when using --nostdlib"
-msgstr "ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ --nostdlib ÔÒÅÂÕÅÔÓÑ ÚÁÄÁ×ÁÔØ ÁÒÇÕÍÅÎÔÙ-ËÁÔÁÌÏÇÉ"
+msgstr "При иÑпользовании --nostdlib требуетÑÑ Ð·Ð°Ð´Ð°Ð²Ð°Ñ‚ÑŒ аргументы-каталоги"
-#: iconv/iconvconfig.c:342 locale/programs/localedef.c:290
+#: iconv/iconvconfig.c:343 locale/programs/localedef.c:291
#, c-format
msgid "no output file produced because warnings were issued"
-msgstr "×ÙÈÏÄÎÏÊ ÆÁÊÌ ÎÅ ÓÏÚÄÁÎ, ÐÏÓËÏÌØËÕ ÂÙÌÉ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ"
+msgstr "выходной файл не Ñоздан, поÑкольку были предупреждениÑ"
-#: iconv/iconvconfig.c:428
+#: iconv/iconvconfig.c:429
#, c-format
msgid "while inserting in search tree"
-msgstr "ÐÒÉ ×ÓÔÁ×ËÅ × ÄÅÒÅ×Ï ÐÏÉÓËÁ"
+msgstr "при вÑтавке в дерево поиÑка"
-#: iconv/iconvconfig.c:1236
+#: iconv/iconvconfig.c:1238
#, c-format
msgid "cannot generate output file"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÇÅÎÅÒÉÒÏ×ÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ"
+msgstr "невозможно Ñгенерировать выходной файл"
#: inet/rcmd.c:157
msgid "rcmd: Cannot allocate memory\n"
-msgstr "rcmd: îÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ\n"
+msgstr "rcmd: Ðевозможно выделить памÑÑ‚ÑŒ\n"
#: inet/rcmd.c:172
msgid "rcmd: socket: All ports in use\n"
-msgstr "rcmd: socket: ÷ÓÅ ÐÏÒÔÙ ÉÓÐÏÌØÚÕÀÔÓÑ\n"
+msgstr "rcmd: socket: Ð’Ñе порты иÑпользуютÑÑ\n"
#: inet/rcmd.c:200
#, c-format
msgid "connect to address %s: "
-msgstr "ÓÏÅÄÉÎÅÎÉÅ Ó ÁÄÒÅÓÏÍ %s: "
+msgstr "Ñоединение Ñ Ð°Ð´Ñ€ÐµÑом %s: "
#: inet/rcmd.c:213
#, c-format
msgid "Trying %s...\n"
-msgstr "ðÏÐÙÔËÁ %s...\n"
+msgstr "Попытка %s...\n"
#: inet/rcmd.c:249
#, c-format
msgid "rcmd: write (setting up stderr): %m\n"
-msgstr "rcmd: write (ÎÁÓÔÒÏÊËÁ stderr): %m\n"
+msgstr "rcmd: write (наÑтройка stderr): %m\n"
#: inet/rcmd.c:265
#, c-format
msgid "rcmd: poll (setting up stderr): %m\n"
-msgstr "rcmd: poll (ÎÁÓÔÒÏÊËÁ stderr): %m\n"
+msgstr "rcmd: poll (наÑтройка stderr): %m\n"
#: inet/rcmd.c:268
msgid "poll: protocol failure in circuit setup\n"
-msgstr "poll: ÓÂÏÊ ÐÒÏÔÏËÏÌÁ ÐÒÉ ÎÁÓÔÒÏÊËÅ ÃÅÐÉ\n"
+msgstr "poll: Ñбой протокола при наÑтройке цепи\n"
#: inet/rcmd.c:301
msgid "socket: protocol failure in circuit setup\n"
-msgstr "socket: ÓÂÏÊ ÐÒÏÔÏËÏÌÁ ÐÒÉ ÎÁÓÔÒÏÊËÅ ÃÅÐÉ\n"
+msgstr "socket: Ñбой протокола при наÑтройке цепи\n"
#: inet/rcmd.c:325
#, c-format
msgid "rcmd: %s: short read"
-msgstr "rcmd: %s: ÎÅÐÏÌÎÏÅ ÞÔÅÎÉÅ"
+msgstr "rcmd: %s: неполное чтение"
#: inet/rcmd.c:481
msgid "lstat failed"
-msgstr "lstat ÎÅÕÓÐÅÛÎÁ"
+msgstr "lstat неуÑпешна"
#: inet/rcmd.c:488
msgid "cannot open"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ"
+msgstr "невозможно открыть"
#: inet/rcmd.c:490
msgid "fstat failed"
-msgstr "fstat ÎÅÕÓÐÅÛÎÁ"
+msgstr "fstat неуÑпешна"
#: inet/rcmd.c:492
msgid "bad owner"
-msgstr "ÎÅÐÒÁ×ÉÌØÎÙÊ ×ÌÁÄÅÌÅÃ"
+msgstr "неправильный владелец"
#: inet/rcmd.c:494
msgid "writeable by other than owner"
-msgstr "ÍÏÖÅÔ ÚÁÐÉÓÙ×ÁÔØÓÑ ÎÅ ×ÌÁÄÅÌØÃÅÍ"
+msgstr "может запиÑыватьÑÑ Ð½Ðµ владельцем"
#: inet/rcmd.c:496
msgid "hard linked somewhere"
-msgstr "ÉÍÅÅÔÓÑ ÖÅÓÔËÁÑ ÓÓÙÌËÁ"
+msgstr "имеетÑÑ Ð¶ÐµÑÑ‚ÐºÐ°Ñ ÑÑылка"
#: inet/ruserpass.c:170 inet/ruserpass.c:193
msgid "out of memory"
-msgstr "ÎÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ"
+msgstr "недоÑтаточно памÑти"
#: inet/ruserpass.c:184
msgid "Error: .netrc file is readable by others."
-msgstr "ïÛÉÂËÁ: ÆÁÊÌ .netrc ÍÏÖÅÔ ÚÁÐÉÓÙ×ÁÔØÓÑ ÄÒÕÇÉÍÉ."
+msgstr "Ошибка: файл .netrc может запиÑыватьÑÑ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸."
#: inet/ruserpass.c:185
msgid "Remove password or make file unreadable by others."
-msgstr "õÄÁÌÉÔÅ ÐÁÒÏÌØ ÉÌÉ ÓÄÅÌÁÊÔÅ ÆÁÊÌ ÎÅÞÉÔÁÅÍÙÍ ÄÒÕÇÉÍÉ."
+msgstr "Удалите пароль или Ñделайте файл нечитаемым другими."
#: inet/ruserpass.c:277
#, c-format
msgid "Unknown .netrc keyword %s"
-msgstr "îÅÉÚ×ÅÓÔÎÏÅ ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï .netrc %s"
+msgstr "ÐеизвеÑтное ключевое Ñлово .netrc %s"
#: libidn/nfkc.c:464
msgid "Character out of range for UTF-8"
-msgstr "úÎÁË ×ÎÅ ÄÉÁÐÁÚÏÎÁ ÄÌÑ UTF-8"
+msgstr "Знак вне диапазона Ð´Ð»Ñ UTF-8"
-#: locale/programs/charmap-dir.c:57
+#: locale/programs/charmap-dir.c:59
#, c-format
msgid "cannot read character map directory `%s'"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ËÁÔÁÌÏÇ ÏÔÏÂÒÁÖÅÎÉÊ ÚÎÁËÏ× `%s'"
+msgstr "невозможно прочитать каталог отображений знаков «%s»"
-#: locale/programs/charmap.c:137
+#: locale/programs/charmap.c:138
#, c-format
msgid "character map file `%s' not found"
-msgstr "ÆÁÊÌ ÏÔÏÂÒÁÖÅÎÉÊ ÚÎÁËÏ× `%s' ÎÅ ÎÁÊÄÅÎ"
+msgstr "файл отображений знаков «%s» не найден"
-#: locale/programs/charmap.c:194
+#: locale/programs/charmap.c:195
#, c-format
msgid "default character map file `%s' not found"
-msgstr "ÐÒÉÍÅÎÑÅÍÙÊ ÐÏ ÕÍÏÌÞÁÎÉÀ ÆÁÊÌ ÏÔÏÂÒÁÖÅÎÉÊ ÚÎÁËÏ× `%s' ÎÅ ÎÁÊÄÅÎ"
+msgstr "применÑемый по умолчанию файл отображений знаков «%s» не найден"
-#: locale/programs/charmap.c:257
+#: locale/programs/charmap.c:258
#, c-format
msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
-msgstr "ÏÔÏÂÒÁÖÅÎÉÅ ÚÎÁËÏ× `%s' ÎÅ ÓÏ×ÍÅÓÔÉÍÏ Ó ASCII, ÌÏËÁÌØ ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÓÔÁÎÄÁÒÔÕ ISO C\n"
+msgstr "отображение знаков «%s» не ÑовмеÑтимо Ñ ASCII, локаль не ÑоответÑтвует Ñтандарту ISO C\n"
-#: locale/programs/charmap.c:336
+#: locale/programs/charmap.c:337
#, c-format
msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
-msgstr "%s: <mb_cur_max> ÄÏÌÖÎÏ ÂÙÔØ ÂÏÌØÛÅ ÞÅÍ <mb_cur_min>\n"
+msgstr "%s: <mb_cur_max> должно быть больше чем <mb_cur_min>\n"
-#: locale/programs/charmap.c:356 locale/programs/charmap.c:373
+#: locale/programs/charmap.c:357 locale/programs/charmap.c:374
#: locale/programs/repertoire.c:174
#, c-format
msgid "syntax error in prolog: %s"
-msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ÐÒÏÌÏÇÅ: %s"
+msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в прологе: %s"
-#: locale/programs/charmap.c:357
+#: locale/programs/charmap.c:358
msgid "invalid definition"
-msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ"
+msgstr "неверное определение"
-#: locale/programs/charmap.c:374 locale/programs/locfile.c:125
-#: locale/programs/locfile.c:152 locale/programs/repertoire.c:175
+#: locale/programs/charmap.c:375 locale/programs/locfile.c:126
+#: locale/programs/locfile.c:153 locale/programs/repertoire.c:175
msgid "bad argument"
-msgstr "ÎÅÐÒÁ×ÉÌØÎÙÊ ÁÒÇÕÍÅÎÔ"
+msgstr "неправильный аргумент"
-#: locale/programs/charmap.c:402
+#: locale/programs/charmap.c:403
#, c-format
msgid "duplicate definition of <%s>"
-msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÄÌÑ <%s>"
+msgstr "повторное определение Ð´Ð»Ñ <%s>"
-#: locale/programs/charmap.c:409
+#: locale/programs/charmap.c:410
#, c-format
msgid "value for <%s> must be 1 or greater"
-msgstr "ÚÎÁÞÅÎÉÅ <%s> ÄÏÌÖÎÏ ÂÙÔØ 1 ÉÌÉ ÂÏÌØÛÅ"
+msgstr "значение <%s> должно быть 1 или больше"
-#: locale/programs/charmap.c:421
+#: locale/programs/charmap.c:422
#, c-format
msgid "value of <%s> must be greater or equal than the value of <%s>"
-msgstr "ÚÎÁÞÅÎÉÅ <%s> ÄÏÌÖÎÏ ÂÙÔØ ÂÏÌØÛÅ ÉÌÉ ÒÁ×ÎÏ ÚÎÁÞÅÎÉÀ <%s>"
+msgstr "значение <%s> должно быть больше или равно значению <%s>"
-#: locale/programs/charmap.c:444 locale/programs/repertoire.c:183
+#: locale/programs/charmap.c:445 locale/programs/repertoire.c:183
#, c-format
msgid "argument to <%s> must be a single character"
-msgstr "ÁÒÇÕÍÅÎÔ ÄÌÑ <%s> ÄÏÌÖÅÎ ÂÙÔØ ÏÄÎÉÍ ÚÎÁËÏÍ"
+msgstr "аргумент Ð´Ð»Ñ <%s> должен быть одним знаком"
-#: locale/programs/charmap.c:470
+#: locale/programs/charmap.c:471
msgid "character sets with locking states are not supported"
-msgstr "ËÏÄÉÒÏ×ËÉ Ó ÂÌÏËÉÒÕÀÝÉÍÉ ÓÏÓÔÏÑÎÉÑÍÉ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ"
+msgstr "кодировки Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€ÑƒÑŽÑ‰Ð¸Ð¼Ð¸ ÑоÑтоÑниÑми не поддерживаютÑÑ"
-#: locale/programs/charmap.c:497 locale/programs/charmap.c:551
-#: locale/programs/charmap.c:583 locale/programs/charmap.c:677
-#: locale/programs/charmap.c:732 locale/programs/charmap.c:773
-#: locale/programs/charmap.c:814
+#: locale/programs/charmap.c:498 locale/programs/charmap.c:552
+#: locale/programs/charmap.c:584 locale/programs/charmap.c:678
+#: locale/programs/charmap.c:733 locale/programs/charmap.c:774
+#: locale/programs/charmap.c:815
#, c-format
msgid "syntax error in %s definition: %s"
-msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ÏÐÒÅÄÅÌÅÎÉÉ %s: %s"
+msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в определении %s: %s"
-#: locale/programs/charmap.c:498 locale/programs/charmap.c:678
-#: locale/programs/charmap.c:774 locale/programs/repertoire.c:230
+#: locale/programs/charmap.c:499 locale/programs/charmap.c:679
+#: locale/programs/charmap.c:775 locale/programs/repertoire.c:230
msgid "no symbolic name given"
-msgstr "ÎÅ ÚÁÄÁÎÏ ÓÉÍ×ÏÌØÎÏÅ ÉÍÑ"
+msgstr "не задано Ñимвольное имÑ"
-#: locale/programs/charmap.c:552
+#: locale/programs/charmap.c:553
msgid "invalid encoding given"
-msgstr "ÚÁÄÁÎÁ ÎÅ×ÅÒÎÁÑ ËÏÄÉÒÏ×ËÁ"
+msgstr "задана Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ°"
-#: locale/programs/charmap.c:561
+#: locale/programs/charmap.c:562
msgid "too few bytes in character encoding"
-msgstr "ÓÌÉÛËÏÍ ÍÁÌÏ ÂÁÊÔ × ËÏÄÉÒÏ×ËÅ ÚÎÁËÁ"
+msgstr "Ñлишком мало байт в кодировке знака"
-#: locale/programs/charmap.c:563
+#: locale/programs/charmap.c:564
msgid "too many bytes in character encoding"
-msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÂÁÊÔ × ËÏÄÉÒÏ×ËÅ ÚÎÁËÁ"
+msgstr "Ñлишком много байт в кодировке знака"
-#: locale/programs/charmap.c:585 locale/programs/charmap.c:733
-#: locale/programs/charmap.c:816 locale/programs/repertoire.c:296
+#: locale/programs/charmap.c:586 locale/programs/charmap.c:734
+#: locale/programs/charmap.c:817 locale/programs/repertoire.c:296
msgid "no symbolic name given for end of range"
-msgstr "ÎÅ ÚÁÄÁÎÏ ÓÉÍ×ÏÌØÎÏÅ ÉÍÑ ÄÌÑ ËÏÎÃÁ ÄÉÁÐÁÚÏÎÁ"
-
-#: locale/programs/charmap.c:609 locale/programs/locfile.c:818
+msgstr "не задано Ñимвольное Ð¸Ð¼Ñ Ð´Ð»Ñ ÐºÐ¾Ð½Ñ†Ð° диапазона"
+
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
+#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
+#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
+#: locale/programs/ld-identification.c:452
+#: locale/programs/ld-measurement.c:238 locale/programs/ld-messages.c:332
+#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:307
+#: locale/programs/ld-numeric.c:368 locale/programs/ld-paper.c:241
+#: locale/programs/ld-telephone.c:313 locale/programs/ld-time.c:1221
#: locale/programs/repertoire.c:313
#, c-format
-msgid "`%1$s' definition does not end with `END %1$s'"
-msgstr "ÏÐÒÅÄÅÌÅÎÉÅ `%1$s' ÎÅ ÚÁËÁÎÞÉ×ÁÅÔÓÑ ÎÁ `END %1$s'"
+msgid "%1$s: definition does not end with `END %1$s'"
+msgstr "%1$s: определение не заканчиваетÑÑ Ð½Ð° «END %1$s»"
-#: locale/programs/charmap.c:642
+#: locale/programs/charmap.c:643
msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
-msgstr "ÐÏÓÌÅ ÏÐÒÅÄÅÌÅÎÉÑ CHARMAP ÍÏÇÕÔ ÓÌÅÄÏ×ÁÔØ ÔÏÌØËÏ ÏÐÒÅÄÅÌÅÎÉÑ WIDTH"
+msgstr "поÑле Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ CHARMAP могут Ñледовать только Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ WIDTH"
-#: locale/programs/charmap.c:650 locale/programs/charmap.c:713
+#: locale/programs/charmap.c:651 locale/programs/charmap.c:714
#, c-format
msgid "value for %s must be an integer"
-msgstr "ÚÎÁÞÅÎÉÅ ÄÌÑ %s ÄÏÌÖÎÏ ÂÙÔØ ÃÅÌÙÍ ÞÉÓÌÏÍ"
+msgstr "значение Ð´Ð»Ñ %s должно быть целым чиÑлом"
-#: locale/programs/charmap.c:841
+#: locale/programs/charmap.c:842
#, c-format
msgid "%s: error in state machine"
-msgstr "%s: ÏÛÉÂËÁ × Á×ÔÏÍÁÔÅ"
-
-#: locale/programs/charmap.c:849 locale/programs/ld-address.c:615
-#: locale/programs/ld-collate.c:2650 locale/programs/ld-collate.c:3820
-#: locale/programs/ld-ctype.c:2224 locale/programs/ld-ctype.c:2996
-#: locale/programs/ld-identification.c:467
-#: locale/programs/ld-measurement.c:253 locale/programs/ld-messages.c:347
-#: locale/programs/ld-monetary.c:956 locale/programs/ld-name.c:322
-#: locale/programs/ld-numeric.c:383 locale/programs/ld-paper.c:256
-#: locale/programs/ld-telephone.c:328 locale/programs/ld-time.c:1236
-#: locale/programs/locfile.c:825 locale/programs/repertoire.c:324
+msgstr "%s: ошибка в автомате"
+
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
+#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
+#: locale/programs/ld-identification.c:468
+#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
+#: locale/programs/ld-monetary.c:959 locale/programs/ld-name.c:323
+#: locale/programs/ld-numeric.c:384 locale/programs/ld-paper.c:257
+#: locale/programs/ld-telephone.c:329 locale/programs/ld-time.c:1237
+#: locale/programs/locfile.c:826 locale/programs/repertoire.c:324
#, c-format
msgid "%s: premature end of file"
-msgstr "%s: ÐÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ"
+msgstr "%s: преждевременный конец файла"
-#: locale/programs/charmap.c:868 locale/programs/charmap.c:879
+#: locale/programs/charmap.c:869 locale/programs/charmap.c:880
#, c-format
msgid "unknown character `%s'"
-msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÚÎÁË `%s'"
+msgstr "неизвеÑтный знак «%s»"
-#: locale/programs/charmap.c:887
+#: locale/programs/charmap.c:888
#, c-format
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
-msgstr "ÞÉÓÌÏ ÂÁÊÔ ÄÌÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÂÁÊÔ ÎÁÞÁÌÁ É ËÏÎÃÁ ÄÉÁÐÁÚÏÎÁ ÎÅ ÓÏ×ÐÁÄÁÀÔ: %d É %d"
+msgstr "чиÑло байт Ð´Ð»Ñ Ð¿Ð¾ÑледовательноÑти байт начала и конца диапазона не Ñовпадают: %d и %d"
-#: locale/programs/charmap.c:992 locale/programs/ld-collate.c:2933
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
-msgstr "ÎÅÄÏÐÕÓÔÉÍÙÅ ÉÍÅÎÁ ÄÌÑ ÄÉÁÐÁÚÏÎÁ ÚÎÁËÏ×"
+msgstr "недопуÑтимые имена Ð´Ð»Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° знаков"
-#: locale/programs/charmap.c:1004 locale/programs/repertoire.c:431
+#: locale/programs/charmap.c:1005 locale/programs/repertoire.c:431
msgid "hexadecimal range format should use only capital characters"
-msgstr "× ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÏÍ ÆÏÒÍÁÔÅ ÄÉÁÐÁÚÏÎÁ ÓÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÏÌØËÏ ÚÁÇÌÁ×ÎÙÅ ÂÕË×Ù"
+msgstr "в шеÑтнадцатиричном формате диапазона Ñледует иÑпользовать только заглавные буквы"
-#: locale/programs/charmap.c:1022
+#: locale/programs/charmap.c:1023 locale/programs/repertoire.c:449
#, c-format
-msgid "<%s> and <%s> are illegal names for range"
-msgstr "<%s> É <%s> -- ÎÅÄÏÐÕÓÔÉÍÙÅ ÉÍÅÎÁ ÄÌÑ ÄÉÁÐÁÚÏÎÁ"
+msgid "<%s> and <%s> are invalid names for range"
+msgstr "<%s> и <%s> не ÑвлÑÑŽÑ‚ÑÑ Ð´Ð¾Ð¿ÑƒÑтимыми именами диапазона"
-#: locale/programs/charmap.c:1028
-msgid "upper limit in range is not higher then lower limit"
-msgstr "×ÅÒÈÎÑÑ ÇÒÁÎÉÃÁ ÄÉÁÐÁÚÏÎÁ ÎÅ ÂÏÌØÛÅ ÎÉÖÎÅÊ ÇÒÁÎÉÃÙ"
+#: locale/programs/charmap.c:1029 locale/programs/repertoire.c:456
+msgid "upper limit in range is smaller than lower limit"
+msgstr "верхнÑÑ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð° диапазона меньше нижней"
-#: locale/programs/charmap.c:1086
+#: locale/programs/charmap.c:1087
msgid "resulting bytes for range not representable."
-msgstr "ÒÅÚÕÌØÔÉÒÕÀÝÉÅ ÂÁÊÔÙ ÄÌÑ ÄÉÁÐÁÚÏÎÁ ÎÅ×ÏÚÍÏÖÎÏ ÍÁÛÉÎÎÏ ÐÒÅÄÓÔÁ×ÉÔØ."
+msgstr "результирующие байты Ð´Ð»Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° невозможно машинно предÑтавить."
-#: locale/programs/ld-address.c:132 locale/programs/ld-collate.c:1532
-#: locale/programs/ld-ctype.c:419 locale/programs/ld-identification.c:132
-#: locale/programs/ld-measurement.c:93 locale/programs/ld-messages.c:96
-#: locale/programs/ld-monetary.c:192 locale/programs/ld-name.c:93
-#: locale/programs/ld-numeric.c:97 locale/programs/ld-paper.c:90
-#: locale/programs/ld-telephone.c:93 locale/programs/ld-time.c:158
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
+#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
+#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
+#: locale/programs/ld-numeric.c:98 locale/programs/ld-paper.c:91
+#: locale/programs/ld-telephone.c:94 locale/programs/ld-time.c:159
#, c-format
msgid "No definition for %s category found"
-msgstr "îÅ ÎÁÊÄÅÎÏ ÏÐÒÅÄÅÌÅÎÉÑ ÄÌÑ ËÁÔÅÇÏÒÉÉ %s"
-
-#: locale/programs/ld-address.c:143 locale/programs/ld-address.c:181
-#: locale/programs/ld-address.c:199 locale/programs/ld-address.c:228
-#: locale/programs/ld-address.c:300 locale/programs/ld-address.c:319
-#: locale/programs/ld-address.c:332 locale/programs/ld-identification.c:145
-#: locale/programs/ld-measurement.c:104 locale/programs/ld-monetary.c:204
-#: locale/programs/ld-monetary.c:248 locale/programs/ld-monetary.c:264
-#: locale/programs/ld-monetary.c:276 locale/programs/ld-name.c:104
-#: locale/programs/ld-name.c:141 locale/programs/ld-numeric.c:111
-#: locale/programs/ld-numeric.c:125 locale/programs/ld-paper.c:101
-#: locale/programs/ld-paper.c:110 locale/programs/ld-telephone.c:104
-#: locale/programs/ld-telephone.c:161 locale/programs/ld-time.c:174
-#: locale/programs/ld-time.c:195
+msgstr "Ðе найдено Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¸ %s"
+
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
+#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
+#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
+#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
+#: locale/programs/ld-name.c:142 locale/programs/ld-numeric.c:112
+#: locale/programs/ld-numeric.c:126 locale/programs/ld-paper.c:102
+#: locale/programs/ld-paper.c:111 locale/programs/ld-telephone.c:105
+#: locale/programs/ld-telephone.c:162 locale/programs/ld-time.c:175
+#: locale/programs/ld-time.c:196
#, c-format
msgid "%s: field `%s' not defined"
-msgstr "%s: ÐÏÌÅ `%s' ÎÅ ÏÐÒÅÄÅÌÅÎÏ"
+msgstr "%s: поле «%s» не определено"
-#: locale/programs/ld-address.c:155 locale/programs/ld-address.c:207
-#: locale/programs/ld-address.c:237 locale/programs/ld-address.c:275
-#: locale/programs/ld-name.c:116 locale/programs/ld-telephone.c:116
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
+#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
-msgstr "%s: ÐÏÌÅ `%s' ÄÏÌÖÎÏ ÂÙÔØ ÎÅÐÕÓÔÙÍ"
+msgstr "%s: поле «%s» должно быть непуÑтым"
-#: locale/programs/ld-address.c:167
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
-msgstr "%s: ÎÅ×ÅÒÎÁÑ ÕÐÒÁ×ÌÑÀÝÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ `%%%c' × ÐÏÌÅ `%s'"
+msgstr "%s: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÑÑŽÑ‰Ð°Ñ Ð¿Ð¾ÑледовательноÑÑ‚ÑŒ «%%%c» в поле «%s»"
-#: locale/programs/ld-address.c:218
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
-msgstr ""
+msgstr "%s: термин Ñзыка «%s» не определен"
-#: locale/programs/ld-address.c:243
+#: locale/programs/ld-address.c:246
#, c-format
msgid "%s: field `%s' must not be defined"
-msgstr "%s: ÐÏÌÅ `%s' ÎÅ ÄÏÌÖÎÏ ÂÙÔØ ÏÐÒÅÄÅÌÅÎÏ"
+msgstr "%s: поле «%s» не должно быть определено"
-#: locale/programs/ld-address.c:257 locale/programs/ld-address.c:286
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
-msgstr "%s: ÓÏËÒÁÝÅÎÎÏÅ ÉÍÑ ÑÚÙËÁ `%s' ÎÅ ÏÐÒÅÄÅÌÅÎÏ"
+msgstr "%s: Ñокращенное Ð¸Ð¼Ñ Ñзыка «%s» не определено"
-#: locale/programs/ld-address.c:264 locale/programs/ld-address.c:292
-#: locale/programs/ld-address.c:326 locale/programs/ld-address.c:338
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
-msgstr "%s: ÚÎÁÞÅÎÉÅ `%s' ÎÅ ÓÏ×ÐÁÄÁÅÔ ÓÏ ÚÎÁÞÅÎÉÅÍ `%s'"
+msgstr "%s: значение «%s» не Ñовпадает Ñо значением «%s»"
-#: locale/programs/ld-address.c:311
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
-msgstr "%s: ÎÅ×ÅÒÎÙÊ ÞÉÓÌÏ×ÏÊ ËÏÄ ÓÔÒÁÎÙ `%d'"
-
-#: locale/programs/ld-address.c:507 locale/programs/ld-address.c:544
-#: locale/programs/ld-address.c:582 locale/programs/ld-ctype.c:2603
-#: locale/programs/ld-identification.c:363
-#: locale/programs/ld-measurement.c:220 locale/programs/ld-messages.c:300
-#: locale/programs/ld-monetary.c:698 locale/programs/ld-monetary.c:733
-#: locale/programs/ld-monetary.c:774 locale/programs/ld-name.c:279
-#: locale/programs/ld-numeric.c:262 locale/programs/ld-paper.c:223
-#: locale/programs/ld-telephone.c:287 locale/programs/ld-time.c:1125
-#: locale/programs/ld-time.c:1167
+msgstr "%s: неверный чиÑловой код Ñтраны «%d»"
+
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-identification.c:364
+#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
+#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
+#: locale/programs/ld-monetary.c:777 locale/programs/ld-name.c:280
+#: locale/programs/ld-numeric.c:263 locale/programs/ld-paper.c:224
+#: locale/programs/ld-telephone.c:288 locale/programs/ld-time.c:1126
+#: locale/programs/ld-time.c:1168
#, c-format
msgid "%s: field `%s' declared more than once"
-msgstr "%s: ÐÏÌÅ `%s' ÏÂßÑ×ÌÅÎÏ ÎÅÓËÏÌØËÏ ÒÁÚ"
+msgstr "%s: поле «%s» объÑвлено неÑколько раз"
-#: locale/programs/ld-address.c:511 locale/programs/ld-address.c:549
-#: locale/programs/ld-identification.c:367 locale/programs/ld-messages.c:310
-#: locale/programs/ld-monetary.c:702 locale/programs/ld-monetary.c:737
-#: locale/programs/ld-name.c:283 locale/programs/ld-numeric.c:266
-#: locale/programs/ld-telephone.c:291 locale/programs/ld-time.c:1019
-#: locale/programs/ld-time.c:1088 locale/programs/ld-time.c:1130
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
+#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
+#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
+#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
+#: locale/programs/ld-telephone.c:292 locale/programs/ld-time.c:1020
+#: locale/programs/ld-time.c:1089 locale/programs/ld-time.c:1131
#, c-format
msgid "%s: unknown character in field `%s'"
-msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ÚÎÁË × ÐÏÌÅ `%s'"
+msgstr "%s: неизвеÑтный знак в поле «%s»"
-#: locale/programs/ld-address.c:596 locale/programs/ld-collate.c:3802
-#: locale/programs/ld-ctype.c:2976 locale/programs/ld-identification.c:448
-#: locale/programs/ld-measurement.c:234 locale/programs/ld-messages.c:329
-#: locale/programs/ld-monetary.c:938 locale/programs/ld-name.c:304
-#: locale/programs/ld-numeric.c:365 locale/programs/ld-paper.c:238
-#: locale/programs/ld-telephone.c:310 locale/programs/ld-time.c:1218
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
+#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
+#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
+#: locale/programs/ld-numeric.c:366 locale/programs/ld-paper.c:239
+#: locale/programs/ld-telephone.c:311 locale/programs/ld-time.c:1219
#, c-format
msgid "%s: incomplete `END' line"
-msgstr "%s: ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÓÔÒÏËÁ `END'"
-
-#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:2653
-#: locale/programs/ld-collate.c:3804 locale/programs/ld-ctype.c:2227
-#: locale/programs/ld-ctype.c:2979 locale/programs/ld-identification.c:451
-#: locale/programs/ld-measurement.c:237 locale/programs/ld-messages.c:331
-#: locale/programs/ld-monetary.c:940 locale/programs/ld-name.c:306
-#: locale/programs/ld-numeric.c:367 locale/programs/ld-paper.c:240
-#: locale/programs/ld-telephone.c:312 locale/programs/ld-time.c:1220
-#, c-format
-msgid "%1$s: definition does not end with `END %1$s'"
-msgstr "%1$s: ÏÐÒÅÄÅÌÅÎÉÅ ÎÅ ÚÁËÁÎÞÉ×ÁÅÔÓÑ ÎÁ `END %1$s'"
-
-#: locale/programs/ld-address.c:606 locale/programs/ld-collate.c:521
-#: locale/programs/ld-collate.c:573 locale/programs/ld-collate.c:869
-#: locale/programs/ld-collate.c:882 locale/programs/ld-collate.c:2640
-#: locale/programs/ld-collate.c:3811 locale/programs/ld-ctype.c:1955
-#: locale/programs/ld-ctype.c:2214 locale/programs/ld-ctype.c:2801
-#: locale/programs/ld-ctype.c:2987 locale/programs/ld-identification.c:458
-#: locale/programs/ld-measurement.c:244 locale/programs/ld-messages.c:338
-#: locale/programs/ld-monetary.c:947 locale/programs/ld-name.c:313
-#: locale/programs/ld-numeric.c:374 locale/programs/ld-paper.c:247
-#: locale/programs/ld-telephone.c:319 locale/programs/ld-time.c:1227
+msgstr "%s: Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ð°Ñ Ñтрока «END»"
+
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
+#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
+#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
+#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
+#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
+#: locale/programs/ld-identification.c:459
+#: locale/programs/ld-measurement.c:245 locale/programs/ld-messages.c:339
+#: locale/programs/ld-monetary.c:950 locale/programs/ld-name.c:314
+#: locale/programs/ld-numeric.c:375 locale/programs/ld-paper.c:248
+#: locale/programs/ld-telephone.c:320 locale/programs/ld-time.c:1228
#, c-format
msgid "%s: syntax error"
-msgstr "%s: ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ"
+msgstr "%s: ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
-#: locale/programs/ld-collate.c:396
+#: locale/programs/ld-collate.c:417
#, c-format
msgid "`%.*s' already defined in charmap"
-msgstr "`%.*s' ÕÖÅ ÏÐÒÅÄÅÌÅÎ × ÏÔÏÂÒÁÖÅÎÉÉ ÚÎÁËÏ×"
+msgstr "«%.*s» уже определен в отображении знаков"
-#: locale/programs/ld-collate.c:405
+#: locale/programs/ld-collate.c:426
#, c-format
msgid "`%.*s' already defined in repertoire"
-msgstr "`%.*s' ÕÖÅ ÏÐÒÅÄÅÌÅÎÏ × ÒÅÐÅÒÔÕÁÒÅ"
+msgstr "«%.*s» уже определено в репертуаре"
-#: locale/programs/ld-collate.c:412
+#: locale/programs/ld-collate.c:433
#, c-format
msgid "`%.*s' already defined as collating symbol"
-msgstr "`%.*s' ÕÖÅ ÏÐÒÅÄÅÌÅÎÏ ËÁË ÓÉÍ×ÏÌ ÓÏÒÔÉÒÏ×ËÉ"
+msgstr "«%.*s» уже определено как Ñимвол Ñортировки"
-#: locale/programs/ld-collate.c:419
+#: locale/programs/ld-collate.c:440
#, c-format
msgid "`%.*s' already defined as collating element"
-msgstr "`%.*s' ÕÖÅ ÏÐÒÅÄÅÌÅÎÏ ËÁË ÜÌÅÍÅÎÔ ÓÏÒÔÉÒÏ×ËÉ"
+msgstr "«%.*s» уже определено как Ñлемент Ñортировки"
-#: locale/programs/ld-collate.c:450 locale/programs/ld-collate.c:476
+#: locale/programs/ld-collate.c:471 locale/programs/ld-collate.c:497
#, c-format
msgid "%s: `forward' and `backward' are mutually excluding each other"
-msgstr "%s: `forward' É `backward' ×ÚÁÉÍÎÏ ÉÓËÌÀÞÁÀÔÓÑ"
+msgstr "%s: «forward» и «backward» взаимно иÑключаютÑÑ"
-#: locale/programs/ld-collate.c:460 locale/programs/ld-collate.c:486
-#: locale/programs/ld-collate.c:502
+#: locale/programs/ld-collate.c:481 locale/programs/ld-collate.c:507
+#: locale/programs/ld-collate.c:523
#, c-format
msgid "%s: `%s' mentioned more than once in definition of weight %d"
-msgstr "%s: `%s' ×ÓÔÒÅÞÁÅÔÓÑ ÂÏÌÅÅ ÏÄÎÏÇÏ ÒÁÚÁ × ÏÐÒÅÄÅÌÅÎÉÉ ×ÅÓÁ %d"
+msgstr "%s: «%s» вÑтречаетÑÑ Ð±Ð¾Ð»ÐµÐµ одного раза в определении веÑа %d"
-#: locale/programs/ld-collate.c:558
+#: locale/programs/ld-collate.c:579
#, c-format
msgid "%s: too many rules; first entry only had %d"
-msgstr "%s: ÓÌÉÛËÏÍ ÍÎÏÇÏ ÐÒÁ×ÉÌ; × ÐÅÒ×ÏÍ ×ÈÏÖÄÅÎÉÉ ÂÙÌÏ ÔÏÌØËÏ %d"
+msgstr "%s: Ñлишком много правил; в первом вхождении было только %d"
-#: locale/programs/ld-collate.c:594
+#: locale/programs/ld-collate.c:615
#, c-format
msgid "%s: not enough sorting rules"
-msgstr "%s: ÎÅÄÏÓÔÁÔÏÞÎÏ ÐÒÁ×ÉÌ ÓÏÒÔÉÒÏ×ËÉ"
+msgstr "%s: недоÑтаточно правил Ñортировки"
-#: locale/programs/ld-collate.c:759
+#: locale/programs/ld-collate.c:780
#, c-format
msgid "%s: empty weight string not allowed"
-msgstr "%s: ÐÕÓÔÁÑ ÓÔÒÏËÁ ×ÅÓÁ ÎÅÄÏÐÕÓÔÉÍÁ"
+msgstr "%s: пуÑÑ‚Ð°Ñ Ñтрока веÑа недопуÑтима"
-#: locale/programs/ld-collate.c:854
+#: locale/programs/ld-collate.c:875
#, c-format
msgid "%s: weights must use the same ellipsis symbol as the name"
-msgstr "%s: ×ÅÓÁ ÄÏÌÖÎÙ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÁËÏÊ ÖÅ ÓÉÍ×ÏÌ ÜÌÌÉÐÓÉÓÁ, ËÁË ÉÍÑ"
+msgstr "%s: веÑа должны иÑпользовать такой же Ñимвол ÑллипÑиÑа, как имÑ"
-#: locale/programs/ld-collate.c:910
+#: locale/programs/ld-collate.c:931
#, c-format
msgid "%s: too many values"
-msgstr "%s: ÓÌÉÛËÏÍ ÍÎÏÇÏ ÚÎÁÞÅÎÉÊ"
+msgstr "%s: Ñлишком много значений"
-#: locale/programs/ld-collate.c:1029 locale/programs/ld-collate.c:1204
+#: locale/programs/ld-collate.c:1051 locale/programs/ld-collate.c:1226
#, c-format
msgid "order for `%.*s' already defined at %s:%Zu"
-msgstr "ÐÏÒÑÄÏË ÄÌÑ `%.*s' ÕÖÅ ÏÐÒÅÄÅÌÅÎ × %s:%Zu"
+msgstr "порÑдок Ð´Ð»Ñ Â«%.*s» уже определен в %s:%Zu"
-#: locale/programs/ld-collate.c:1079
+#: locale/programs/ld-collate.c:1101
#, c-format
msgid "%s: the start and the end symbol of a range must stand for characters"
-msgstr "%s: ÎÁÞÁÌØÎÙÊ É ËÏÎÅÞÎÙÊ ÓÉÍ×ÏÌÙ ÄÉÁÐÁÚÏÎÁ ÄÏÌÖÎÙ ÏÂÏÚÎÁÞÁÔØ ÚÎÁËÉ"
+msgstr "%s: начальный и конечный Ñимволы диапазона должны обозначать знаки"
-#: locale/programs/ld-collate.c:1106
+#: locale/programs/ld-collate.c:1128
#, c-format
msgid "%s: byte sequences of first and last character must have the same length"
-msgstr "%s: ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÂÁÊÔ ÄÌÑ ÐÅÒ×ÏÇÏ É ÐÏÓÌÅÄÎÅÇÏ ÚÎÁËÁ ÄÏÌÖÎÙ ÂÙÔØ ÏÄÉÎÁËÏ×ÏÊ ÄÌÉÎÙ"
+msgstr "%s: поÑледовательноÑти байт Ð´Ð»Ñ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾ и поÑледнего знака должны быть одинаковой длины"
-#: locale/programs/ld-collate.c:1148
+#: locale/programs/ld-collate.c:1170
#, c-format
-msgid "%s: byte sequence of first character of sequence is not lower than that of the last character"
-msgstr "%s: ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÂÁÊÔ ÄÌÑ ÐÅÒ×ÏÇÏ ÚÎÁËÁ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÎÅ ÍÅÎØÛÅ ÞÅÍ ÄÌÑ ÐÏÓÌÅÄÎÅÇÏ"
+msgid "%s: byte sequence of first character of range is not lower than that of the last character"
+msgstr "%s: поÑледовательноÑÑ‚ÑŒ байт Ð´Ð»Ñ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾ знака диапазона не меньше чем Ð´Ð»Ñ Ð¿Ð¾Ñледнего"
-#: locale/programs/ld-collate.c:1273
+#: locale/programs/ld-collate.c:1295
#, c-format
msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
-msgstr "%s: ÜÌÌÉÐÓÉÓ ÓÉÍ×ÏÌØÎÏÇÏ ÄÉÁÐÁÚÏÎÁ ÎÅ ÍÏÖÅÔ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÓÌÅÄÏ×ÁÔØ ÐÏÓÌÅ `order_start'"
+msgstr "%s: ÑллипÑÐ¸Ñ Ñимвольного диапазона не может непоÑредÑтвенно Ñледовать поÑле «order_start»"
-#: locale/programs/ld-collate.c:1277
+#: locale/programs/ld-collate.c:1299
#, c-format
msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'"
-msgstr "%s: ÐÏÓÌÅ ÜÌÌÉÐÓÉÓÁ ÓÉÍ×ÏÌØÎÏÇÏ ÄÉÁÐÁÚÏÎÁ ÎÅ ÍÏÖÅÔ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÓÌÅÄÏ×ÁÔØ `order_end'"
+msgstr "%s: поÑле ÑллипÑиÑа Ñимвольного диапазона не может непоÑредÑтвенно Ñледовать «order_end»"
-#: locale/programs/ld-collate.c:1297 locale/programs/ld-ctype.c:1475
+#: locale/programs/ld-collate.c:1319 locale/programs/ld-ctype.c:1477
#, c-format
msgid "`%s' and `%.*s' are not valid names for symbolic range"
-msgstr "`%s' É `%.*s' ÎÅ Ñ×ÌÑÀÔÓÑ ×ÅÒÎÙÍÉ ÉÍÅÎÁÍÉ ÓÉÍ×ÏÌØÎÏÇÏ ÄÉÁÐÏÚÏÎÁ"
+msgstr "«%s» и «%.*s» не ÑвлÑÑŽÑ‚ÑÑ Ð²ÐµÑ€Ð½Ñ‹Ð¼Ð¸ именами Ñимвольного диапазона"
-#: locale/programs/ld-collate.c:1346 locale/programs/ld-collate.c:3739
+#: locale/programs/ld-collate.c:1369 locale/programs/ld-collate.c:3858
#, c-format
msgid "%s: order for `%.*s' already defined at %s:%Zu"
-msgstr "%s: ÐÏÒÑÄÏË ÄÌÑ `%.*s' ÕÖÅ ÏÐÒÅÄÅÌÅÎ × %s:%Zu"
+msgstr "%s: порÑдок Ð´Ð»Ñ Â«%.*s» уже определён в %s:%Zu"
-#: locale/programs/ld-collate.c:1355
+#: locale/programs/ld-collate.c:1378
#, c-format
msgid "%s: `%s' must be a character"
-msgstr "%s: `%s' ÄÏÌÖÎÏ ÂÙÔØ ÚÎÁËÏÍ"
+msgstr "%s: «%s» должно быть знаком"
-#: locale/programs/ld-collate.c:1548
+#: locale/programs/ld-collate.c:1573
#, c-format
msgid "%s: `position' must be used for a specific level in all sections or none"
-msgstr "%s: `position' ÄÏÌÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÄÌÑ ÏÄÎÏÇÏ ËÏÎËÒÅÔÎÏÇÏ ÕÒÏ×ÎÑ ÌÉÂÏ ×Ï ×ÓÅÈ ÓÅËÃÉÑÈ, ÌÉÂÏ ÎÉ × ÏÄÎÏÊ"
+msgstr "%s: «position» должно иÑпользоватьÑÑ Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ конкретного ÑƒÑ€Ð¾Ð²Ð½Ñ Ð»Ð¸Ð±Ð¾ во вÑех ÑекциÑÑ…, либо ни в одной"
-#: locale/programs/ld-collate.c:1573
+#: locale/programs/ld-collate.c:1598
#, c-format
msgid "symbol `%s' not defined"
-msgstr "ÓÉÍ×ÏÌ `%s' ÎÅ ÏÐÒÅÄÅÌÅÎ"
+msgstr "Ñимвол «%s» не определен"
-#: locale/programs/ld-collate.c:1649 locale/programs/ld-collate.c:1755
+#: locale/programs/ld-collate.c:1674 locale/programs/ld-collate.c:1780
#, c-format
msgid "symbol `%s' has the same encoding as"
-msgstr "ÓÉÍ×ÏÌ `%s' ÉÍÅÅÔ ÔÁËÕÀ ÖÅ ËÏÄÉÒÏ×ËÕ ËÁË"
+msgstr "Ñимвол «%s» имеет такую же кодировку как"
-#: locale/programs/ld-collate.c:1653 locale/programs/ld-collate.c:1759
+#: locale/programs/ld-collate.c:1678 locale/programs/ld-collate.c:1784
#, c-format
msgid "symbol `%s'"
-msgstr "ÓÉÍ×ÏÌ `%s'"
+msgstr "Ñимвол «%s»"
-#: locale/programs/ld-collate.c:1801
+#: locale/programs/ld-collate.c:1826
#, c-format
msgid "no definition of `UNDEFINED'"
-msgstr "ÎÅÔ ÏÐÒÅÄÅÌÅÎÉÑ ÄÌÑ `UNDEFINED'"
+msgstr "нет Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Â«UNDEFINED»"
-#: locale/programs/ld-collate.c:1830
+#: locale/programs/ld-collate.c:1855
#, c-format
msgid "too many errors; giving up"
-msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÏÛÉÂÏË; ËÏÎÅÃ"
+msgstr "Ñлишком много ошибок; конец"
+
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
+#, c-format
+msgid "%s: nested conditionals not supported"
+msgstr "%s: вложенные уÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ðµ поддерживаютÑÑ"
+
+#: locale/programs/ld-collate.c:2677
+#, c-format
+msgid "%s: more then one 'else'"
+msgstr "%s: больше одного 'else'"
-#: locale/programs/ld-collate.c:2738
+#: locale/programs/ld-collate.c:2852
#, c-format
msgid "%s: duplicate definition of `%s'"
-msgstr "%s: ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `%s'"
+msgstr "%s: повторное определение «%s»"
-#: locale/programs/ld-collate.c:2774
+#: locale/programs/ld-collate.c:2888
#, c-format
msgid "%s: duplicate declaration of section `%s'"
-msgstr "%s: ÐÏ×ÔÏÒÎÏÅ ÏÂßÑ×ÌÅÎÉÅ ÓÅËÃÉÉ `%s'"
+msgstr "%s: повторное объÑвление Ñекции «%s»"
-#: locale/programs/ld-collate.c:2913
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
-msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ÚÎÁË × ÉÍÅÎÉ ÓÉÍ×ÏÌÁ ÓÏÒÔÉÒÏ×ËÉ"
+msgstr "%s: неизвеÑтный знак в имени Ñимвола Ñортировки"
-#: locale/programs/ld-collate.c:3045
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
-msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ÚÎÁË × ÉÍÅÎÉ ÏÐÒÅÄÅÌÅÎÉÑ ÜË×É×ÁÌÅÎÔÎÏÓÔÉ"
+msgstr "%s: неизвеÑтный знак в имени Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑквивалентноÑти"
-#: locale/programs/ld-collate.c:3058
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
-msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ÚÎÁË × ÚÎÁÞÅÎÉÉ ÏÐÒÅÄÅÌÅÎÁÑ ÜË×É×ÁÌÅÎÔÎÏÓÔÉ"
+msgstr "%s: неизвеÑтный знак в значении Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°Ñ ÑквивалентноÑти"
-#: locale/programs/ld-collate.c:3068
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
-msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ `%s' × ÏÐÒÅÄÅÌÅÎÉÉ ÜË×É×ÁÌÅÎÔÎÏÓÔÉ"
+msgstr "%s: неизвеÑтный Ñимвол «%s» в определении ÑквивалентноÑти"
-#: locale/programs/ld-collate.c:3077
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
-msgstr "ÏÛÉÂËÁ ÐÒÉ ÄÏÂÁ×ÌÅÎÉÉ ÜË×É×ÁÌÅÎÔÎÏÇÏ ÓÉÍ×ÏÌÁ ÓÏÒÔÉÒÏ×ËÉ"
+msgstr "ошибка при добавлении Ñквивалентного Ñимвола Ñортировки"
-#: locale/programs/ld-collate.c:3107
+#: locale/programs/ld-collate.c:3221
#, c-format
msgid "duplicate definition of script `%s'"
-msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÓÔÅÍÙ ÐÉÓØÍÁ `%s'"
+msgstr "повторное определение ÑиÑтемы пиÑьма «%s»"
-#: locale/programs/ld-collate.c:3155
+#: locale/programs/ld-collate.c:3269
#, c-format
-msgid "%s: unknown section name `%s'"
-msgstr "%s: ÎÅÉÚ×ÅÓÔÎÏÅ ÉÍÑ ÓÅËÃÉÉ `%s'"
+msgid "%s: unknown section name `%.*s'"
+msgstr "%s: неизвеÑтное Ð¸Ð¼Ñ Ñекции «%.*s»"
-#: locale/programs/ld-collate.c:3183
+#: locale/programs/ld-collate.c:3298
#, c-format
msgid "%s: multiple order definitions for section `%s'"
-msgstr "%s: ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÐÏÒÑÄËÁ ÄÌÑ ÓÅËÃÉÉ `%s'"
+msgstr "%s: повторное определение порÑдка Ð´Ð»Ñ Ñекции «%s»"
-#: locale/programs/ld-collate.c:3208
+#: locale/programs/ld-collate.c:3326
#, c-format
msgid "%s: invalid number of sorting rules"
-msgstr "%s: ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÒÁ×ÉÌ ÓÏÒÔÉÒÏ×ËÉ"
+msgstr "%s: неверное чиÑло правил Ñортировки"
-#: locale/programs/ld-collate.c:3235
+#: locale/programs/ld-collate.c:3353
#, c-format
msgid "%s: multiple order definitions for unnamed section"
-msgstr "%s: ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÐÏÒÑÄËÁ ÄÌÑ ÂÅÚÙÍÑÎÎÏÊ ÓÅËÃÉÉ"
+msgstr "%s: повторное определение порÑдка Ð´Ð»Ñ Ð±ÐµÐ·Ñ‹Ð¼Ñнной Ñекции"
-#: locale/programs/ld-collate.c:3289 locale/programs/ld-collate.c:3417
-#: locale/programs/ld-collate.c:3780
+#: locale/programs/ld-collate.c:3407 locale/programs/ld-collate.c:3537
+#: locale/programs/ld-collate.c:3900
#, c-format
msgid "%s: missing `order_end' keyword"
-msgstr "%s: ÐÒÏÐÕÝÅÎÏ ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï `order_end'"
+msgstr "%s: пропущено ключевое Ñлово «order_end»"
-#: locale/programs/ld-collate.c:3350
+#: locale/programs/ld-collate.c:3470
#, c-format
msgid "%s: order for collating symbol %.*s not yet defined"
-msgstr "%s: ÐÏÒÑÄÏË ÄÌÑ ÓÉÍ×ÏÌÁ ÓÏÒÔÉÒÏ×ËÉ %.*s ÅÝÅ ÎÅ ÏÐÒÅÄÅÌÅÎ"
+msgstr "%s: порÑдок Ð´Ð»Ñ Ñимвола Ñортировки %.*s еще не определен"
-#: locale/programs/ld-collate.c:3368
+#: locale/programs/ld-collate.c:3488
#, c-format
msgid "%s: order for collating element %.*s not yet defined"
-msgstr "%s: ÐÏÒÑÄÏË ÄÌÑ ÜÌÅÍÅÎÔÁ ÓÏÒÔÉÒÏ×ËÉ %.*s ÅÝÅ ÎÅ ÏÐÒÅÄÅÌÅÎ"
+msgstr "%s: порÑдок Ð´Ð»Ñ Ñлемента Ñортировки %.*s еще не определен"
-#: locale/programs/ld-collate.c:3379
+#: locale/programs/ld-collate.c:3499
#, c-format
msgid "%s: cannot reorder after %.*s: symbol not known"
-msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÐÏÍÅÎÑÔØ ÐÏÒÑÄÏË ÐÏÓÌÅ %.*s: ÓÉÍ×ÏÌ ÎÅÉÚ×ÅÓÔÅÎ"
+msgstr "%s: невозможно поменÑÑ‚ÑŒ порÑдок поÑле %.*s: Ñимвол неизвеÑтен"
-#: locale/programs/ld-collate.c:3431 locale/programs/ld-collate.c:3792
+#: locale/programs/ld-collate.c:3551 locale/programs/ld-collate.c:3912
#, c-format
msgid "%s: missing `reorder-end' keyword"
-msgstr "%s: ÐÒÏÐÕÝÅÎÏ ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï `reorder-end'"
+msgstr "%s: пропущено ключевое Ñлово «reorder-end»"
-#: locale/programs/ld-collate.c:3465 locale/programs/ld-collate.c:3664
+#: locale/programs/ld-collate.c:3585 locale/programs/ld-collate.c:3783
#, c-format
msgid "%s: section `%.*s' not known"
-msgstr "%s: ÓÅËÃÉÑ `%.*s' ÎÅÉÚ×ÅÓÔÎÁ"
+msgstr "%s: ÑÐµÐºÑ†Ð¸Ñ Â«%.*s» неизвеÑтна"
-#: locale/programs/ld-collate.c:3530
+#: locale/programs/ld-collate.c:3650
#, c-format
msgid "%s: bad symbol <%.*s>"
-msgstr "%s: ÎÅÐÒÁ×ÉÌØÎÙÊ ÓÉÍ×ÏÌ <%.*s>"
+msgstr "%s: неправильный Ñимвол <%.*s>"
-#: locale/programs/ld-collate.c:3727
+#: locale/programs/ld-collate.c:3846
#, c-format
msgid "%s: cannot have `%s' as end of ellipsis range"
-msgstr "%s: `%s' ÎÅ ÍÏÖÅÔ ÂÙÔØ ËÏÎÃÏÍ ÄÉÁÐÁÚÏÎÁ Ó ÜÌÌÉÐÓÉÓÏÍ"
+msgstr "%s: «%s» не может быть концом диапазона Ñ ÑллипÑиÑом"
-#: locale/programs/ld-collate.c:3776
+#: locale/programs/ld-collate.c:3896
#, c-format
msgid "%s: empty category description not allowed"
-msgstr "%s: ÐÕÓÔÙÅ ÏÐÉÓÁÎÉÑ ËÁÔÅÇÏÒÉÊ ÎÅÄÏÐÕÓÔÉÍÙ"
+msgstr "%s: пуÑтые опиÑÐ°Ð½Ð¸Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¹ недопуÑтимы"
-#: locale/programs/ld-collate.c:3795
+#: locale/programs/ld-collate.c:3915
#, c-format
msgid "%s: missing `reorder-sections-end' keyword"
-msgstr "%s: ÐÒÏÐÕÝÅÎÏ ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï `reorder-sections-end'"
+msgstr "%s: пропущено ключевое Ñлово «reorder-sections-end»"
+
+#: locale/programs/ld-collate.c:4079
+#, c-format
+msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
+msgstr "%s: '%s' без ÑоответÑтвующего 'ifdef' или 'ifndef'"
+
+#: locale/programs/ld-collate.c:4097
+#, c-format
+msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
+msgstr "%s: 'endif' без ÑоответÑтвующего 'ifdef' или 'ifndef'"
-#: locale/programs/ld-ctype.c:438
+#: locale/programs/ld-ctype.c:439
#, c-format
msgid "No character set name specified in charmap"
-msgstr "÷ ÏÔÏÂÒÁÖÅÎÉÉ ÚÎÁËÏ× ÎÅ ÕËÁÚÁÎÏ ÉÍÑ ÎÁÂÏÒÁ ÚÎÁËÏ×"
+msgstr "Ð’ отображении знаков не указано Ð¸Ð¼Ñ Ð½Ð°Ð±Ð¾Ñ€Ð° знаков"
-#: locale/programs/ld-ctype.c:467
+#: locale/programs/ld-ctype.c:468
#, c-format
msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
-msgstr "ÚÎÁË L'\\u%0*x' × ËÌÁÓÓÅ `%s' ÄÏÌÖÅÎ ÂÙÔØ × ËÌÁÓÓÅ `%s'"
+msgstr "знак L'\\u%0*x' в клаÑÑе «%s» должен быть в клаÑÑе «%s»"
-#: locale/programs/ld-ctype.c:482
+#: locale/programs/ld-ctype.c:483
#, c-format
msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'"
-msgstr "ÚÎÁË L'\\u%0*x' × ËÌÁÓÓÅ `%s' ÎÅ ÄÏÌÖÅÎ ÂÙÔØ × ËÌÁÓÓÅ `%s'"
+msgstr "знак L'\\u%0*x' в клаÑÑе «%s» не должен быть в клаÑÑе «%s»"
-#: locale/programs/ld-ctype.c:496 locale/programs/ld-ctype.c:554
+#: locale/programs/ld-ctype.c:497 locale/programs/ld-ctype.c:555
#, c-format
msgid "internal error in %s, line %u"
-msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ × %s, ÓÔÒÏËÁ %u"
+msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° в %s, Ñтрока %u"
-#: locale/programs/ld-ctype.c:525
+#: locale/programs/ld-ctype.c:526
#, c-format
msgid "character '%s' in class `%s' must be in class `%s'"
-msgstr "ÚÎÁË '%s' × ËÌÁÓÓÅ `%s' ÄÏÌÖÅÎ ÂÙÔØ × ËÌÁÓÓÅ `%s'"
+msgstr "знак »%s» в клаÑÑе «%s» должен быть в клаÑÑе «%s»"
-#: locale/programs/ld-ctype.c:541
+#: locale/programs/ld-ctype.c:542
#, c-format
msgid "character '%s' in class `%s' must not be in class `%s'"
-msgstr "ÚÎÁË '%s' × ËÌÁÓÓÅ `%s' ÎÅ ÄÏÌÖÅÎ ÂÙÔØ × ËÌÁÓÓÅ `%s'"
+msgstr "знак »%s» в клаÑÑе «%s» не должен быть в клаÑÑе «%s»"
-#: locale/programs/ld-ctype.c:571 locale/programs/ld-ctype.c:609
+#: locale/programs/ld-ctype.c:572 locale/programs/ld-ctype.c:610
#, c-format
msgid "<SP> character not in class `%s'"
-msgstr "ÚÎÁË <SP> ÎÅ × ËÌÁÓÓÅ `%s'"
+msgstr "знак <SP> не в клаÑÑе «%s»"
-#: locale/programs/ld-ctype.c:583 locale/programs/ld-ctype.c:620
+#: locale/programs/ld-ctype.c:584 locale/programs/ld-ctype.c:621
#, c-format
msgid "<SP> character must not be in class `%s'"
-msgstr "ÚÎÁË <SP> ÎÅ ÄÏÌÖÅÎ ÂÙÔØ × ËÌÁÓÓÅ `%s'"
+msgstr "знак <SP> не должен быть в клаÑÑе «%s»"
-#: locale/programs/ld-ctype.c:598
+#: locale/programs/ld-ctype.c:599
#, c-format
msgid "character <SP> not defined in character map"
-msgstr "ÚÎÁË <SP> ÎÅ ÏÐÒÅÄÅÌÅÎ × ÏÔÏÂÒÁÖÅÎÉÉ ÚÎÁËÏ×"
+msgstr "знак <SP> не определен в отображении знаков"
-#: locale/programs/ld-ctype.c:712
+#: locale/programs/ld-ctype.c:714
#, c-format
msgid "`digit' category has not entries in groups of ten"
-msgstr "×ÈÏÖÄÅÎÉÑ ËÁÔÅÇÏÒÉÉ `digit' ÎÅ ÇÒÕÐÐÉÒÕÀÔÓÑ ÐÏ ÄÅÓÑÔØ"
+msgstr "Ð²Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¸ «digit» не группируютÑÑ Ð¿Ð¾ деÑÑÑ‚ÑŒ"
-#: locale/programs/ld-ctype.c:761
+#: locale/programs/ld-ctype.c:763
#, c-format
msgid "no input digits defined and none of the standard names in the charmap"
-msgstr ""
+msgstr "не указаны входные цифры или Ñтандартные имена в таблице Ñимволов"
-#: locale/programs/ld-ctype.c:826
+#: locale/programs/ld-ctype.c:828
#, c-format
msgid "not all characters used in `outdigit' are available in the charmap"
-msgstr ""
+msgstr "не вÑе знаки, иÑпользованные в «outdigit», доÑтупны в данной таблице Ñимволов"
-#: locale/programs/ld-ctype.c:843
+#: locale/programs/ld-ctype.c:845
#, c-format
msgid "not all characters used in `outdigit' are available in the repertoire"
-msgstr "ÎÅ ×ÓÅ ÚÎÁËÉ, ÉÓÐÏÌØÚÏ×ÁÎÎÙÅ × `outdigit', ÄÏÓÔÕÐÎÙ × ÄÁÎÎÏÍ ÒÅÐÅÒÔÕÁÒÅ"
+msgstr "не вÑе знаки, иÑпользованные в «outdigit», доÑтупны в данном репертуаре"
-#: locale/programs/ld-ctype.c:1243
+#: locale/programs/ld-ctype.c:1245
#, c-format
msgid "character class `%s' already defined"
-msgstr "ËÌÁÓÓ ÚÎÁËÏ× `%s' ÕÖÅ ÏÐÒÅÄÅÌÅÎ"
+msgstr "клаÑÑ Ð·Ð½Ð°ÐºÐ¾Ð² «%s» уже определен"
-#: locale/programs/ld-ctype.c:1249
+#: locale/programs/ld-ctype.c:1251
#, c-format
msgid "implementation limit: no more than %Zd character classes allowed"
-msgstr "ÏÇÒÁÎÉÞÅÎÉÅ ÒÅÁÌÉÚÁÃÉÉ: ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÎÅ ÂÏÌÅÅ %Zd ËÌÁÓÓÏ× ÚÎÁËÏ×"
+msgstr "ограничение реализации: поддерживаетÑÑ Ð½Ðµ более %Zd клаÑÑов знаков"
-#: locale/programs/ld-ctype.c:1275
+#: locale/programs/ld-ctype.c:1277
#, c-format
msgid "character map `%s' already defined"
-msgstr "ÏÔÏÂÒÁÖÅÎÉÅ ÚÎÁËÏ× `%s' ÕÖÅ ÏÐÒÅÄÅÌÅÎÏ"
+msgstr "отображение знаков «%s» уже определено"
-#: locale/programs/ld-ctype.c:1281
+#: locale/programs/ld-ctype.c:1283
#, c-format
msgid "implementation limit: no more than %d character maps allowed"
-msgstr "ÏÇÒÁÎÉÞÅÎÉÅ ÒÅÁÌÉÚÁÃÉÉ: ÄÏÐÕÓËÁÅÔÓÑ ÎÅ ÂÏÌÅÅ %d ÏÔÏÂÒÁÖÅÎÉÊ ÚÎÁËÏ×"
+msgstr "ограничение реализации: допуÑкаетÑÑ Ð½Ðµ более %d отображений знаков"
-#: locale/programs/ld-ctype.c:1546 locale/programs/ld-ctype.c:1671
-#: locale/programs/ld-ctype.c:1777 locale/programs/ld-ctype.c:2466
-#: locale/programs/ld-ctype.c:3462
+#: locale/programs/ld-ctype.c:1548 locale/programs/ld-ctype.c:1673
+#: locale/programs/ld-ctype.c:1779 locale/programs/ld-ctype.c:2471
+#: locale/programs/ld-ctype.c:3467
#, c-format
msgid "%s: field `%s' does not contain exactly ten entries"
-msgstr "%s: ÐÏÌÅ `%s' ÎÅ ÓÏÄÅÒÖÉÔ ÒÏ×ÎÏ ÄÅÓÑÔØ ×ÈÏÖÄÅÎÉÊ"
+msgstr "%s: поле «%s» не Ñодержит ровно деÑÑÑ‚ÑŒ вхождений"
-#: locale/programs/ld-ctype.c:1574 locale/programs/ld-ctype.c:2145
+#: locale/programs/ld-ctype.c:1576 locale/programs/ld-ctype.c:2150
#, c-format
msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
-msgstr "×ÅÒÈÎÅÅ ÚÎÁÞÅÎÉÅ ÄÉÁÐÁÚÏÎÁ <U%0*X> ÍÅÎØÛÅ ÞÅÍ ÎÉÖÎÅÅ ÚÎÁÞÅÎÉÅ <U%0*X>"
+msgstr "верхнее значение диапазона <U%0*X> меньше чем нижнее значение <U%0*X>"
-#: locale/programs/ld-ctype.c:1701
+#: locale/programs/ld-ctype.c:1703
msgid "start and end character sequence of range must have the same length"
-msgstr "ÎÁÞÁÌØÎÁÑ É ËÏÎÅÞÎÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÚÎÁËÏ× ÄÉÁÐÁÚÏÎÁ ÄÏÌÖÎÙ ÂÙÔØ ÏÄÉÎÁËÏ×ÏÊ ÄÌÉÎÙ"
+msgstr "Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð¸ ÐºÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ð¿Ð¾ÑледовательноÑти знаков диапазона должны быть одинаковой длины"
-#: locale/programs/ld-ctype.c:1708
+#: locale/programs/ld-ctype.c:1710
msgid "to-value character sequence is smaller than from-value sequence"
-msgstr "ËÏÎÅÞÎÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÚÎÁËÏ× ÄÉÁÐÁÚÏÎÁ ÍÅÎØÛÅ ÞÅÍ ÎÁÞÁÌØÎÁÑ"
+msgstr "ÐºÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ð¿Ð¾ÑледовательноÑÑ‚ÑŒ знаков диапазона меньше чем начальнаÑ"
-#: locale/programs/ld-ctype.c:2065 locale/programs/ld-ctype.c:2116
+#: locale/programs/ld-ctype.c:2070 locale/programs/ld-ctype.c:2121
msgid "premature end of `translit_ignore' definition"
-msgstr "ÐÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÏÐÒÅÄÅÌÅÎÉÑ `translit_ignore'"
+msgstr "преждевременный конец Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Â«translit_ignore»"
-#: locale/programs/ld-ctype.c:2071 locale/programs/ld-ctype.c:2122
-#: locale/programs/ld-ctype.c:2164
+#: locale/programs/ld-ctype.c:2076 locale/programs/ld-ctype.c:2127
+#: locale/programs/ld-ctype.c:2169
msgid "syntax error"
-msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ"
+msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
-#: locale/programs/ld-ctype.c:2298
+#: locale/programs/ld-ctype.c:2303
#, c-format
msgid "%s: syntax error in definition of new character class"
-msgstr "%s: ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ÏÐÒÅÄÅÌÅÎÉÉ ÎÏ×ÏÇÏ ËÌÁÓÓÁ ÚÎÁËÏ×"
+msgstr "%s: ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в определении нового клаÑÑа знаков"
-#: locale/programs/ld-ctype.c:2313
+#: locale/programs/ld-ctype.c:2318
#, c-format
msgid "%s: syntax error in definition of new character map"
-msgstr "%s: ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ÏÐÒÅÄÅÌÅÎÉÉ ÎÏ×ÏÇÏ ÏÔÏÂÒÁÖÅÎÉÑ ÚÎÁËÏ×"
+msgstr "%s: ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в определении нового Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð½Ð°ÐºÐ¾Ð²"
-#: locale/programs/ld-ctype.c:2488
+#: locale/programs/ld-ctype.c:2493
msgid "ellipsis range must be marked by two operands of same type"
-msgstr "ÄÉÁÐÁÚÏÎ Ó ÜÌÌÉÐÓÉÓÏÍ ÄÏÌÖÅÎ ÂÙÔØ ÐÏÍÅÞÅÎ Ä×ÕÍÑ ÏÐÅÒÁÎÄÁÍÉ ÏÄÎÏÇÏ ÔÉÐÁ"
+msgstr "диапазон Ñ ÑллипÑиÑом должен быть помечен Ð´Ð²ÑƒÐ¼Ñ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð°Ð¼Ð¸ одного типа"
-#: locale/programs/ld-ctype.c:2497
+#: locale/programs/ld-ctype.c:2502
msgid "with symbolic name range values the absolute ellipsis `...' must not be used"
-msgstr "Ó ÓÉÍ×ÏÌØÎÙÍÉ ÉÍÅÎÁÍÉ ÚÎÁÞÅÎÉÊ ÄÉÁÐÁÚÏÎÁ ÎÅÌØÚÑ ÉÓÐÏÌØÚÏ×ÁÔØ ÁÂÓÏÌÀÔÎÙÊ ÜÌÌÉÐÓÉÓ `...'"
+msgstr "Ñ Ñимвольными именами значений диапазона Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать абÑолютный ÑллипÑÐ¸Ñ Â«...»"
-#: locale/programs/ld-ctype.c:2512
+#: locale/programs/ld-ctype.c:2517
msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
-msgstr "Ó UCS-ÚÎÁÞÅÎÉÑÍÉ ÄÉÁÐÁÚÏÎÁ ÓÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÙÊ ÓÉÍ×ÏÌØÎÙÊ ÜÌÌÉÐÓÉÓ `..'"
+msgstr "Ñ UCS-значениÑми диапазона Ñледует иÑпользовать шеÑтнадцатиричный Ñимвольный ÑллипÑÐ¸Ñ Â«..»"
-#: locale/programs/ld-ctype.c:2526
+#: locale/programs/ld-ctype.c:2531
msgid "with character code range values one must use the absolute ellipsis `...'"
-msgstr "ÓÏ ÚÎÁËÏ×ÙÍÉ ËÏÄÁÍÉ ÚÎÁÞÅÎÉÊ ÄÉÁÐÁÚÏÎÁ ÓÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÁÂÓÏÌÀÔÎÙÊ ÜÌÌÉÐÓÉÓ `...'"
+msgstr "Ñо знаковыми кодами значений диапазона Ñледует иÑпользовать абÑолютный ÑллипÑÐ¸Ñ Â«...»"
-#: locale/programs/ld-ctype.c:2677
+#: locale/programs/ld-ctype.c:2682
#, c-format
msgid "duplicated definition for mapping `%s'"
-msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÏÔÏÂÒÁÖÅÎÉÑ `%s'"
+msgstr "повторное определение Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Â«%s»"
-#: locale/programs/ld-ctype.c:2763 locale/programs/ld-ctype.c:2907
+#: locale/programs/ld-ctype.c:2768 locale/programs/ld-ctype.c:2912
#, c-format
msgid "%s: `translit_start' section does not end with `translit_end'"
-msgstr "%s: ÓÅËÃÉÑ `translit_start' ÎÅ ÚÁËÁÎÞÉ×ÁÅÔÓÑ ÎÁ `translit_end'"
+msgstr "%s: ÑÐµÐºÑ†Ð¸Ñ Â«translit_start» не заканчиваетÑÑ Ð½Ð° «translit_end»"
-#: locale/programs/ld-ctype.c:2858
+#: locale/programs/ld-ctype.c:2863
#, c-format
msgid "%s: duplicate `default_missing' definition"
-msgstr "%s: ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `default_missing'"
+msgstr "%s: повторное определение «default_missing»"
-#: locale/programs/ld-ctype.c:2863
+#: locale/programs/ld-ctype.c:2868
msgid "previous definition was here"
-msgstr "ÐÒÅÄÙÄÕÝÅÅ ÏÐÒÅÄÅÌÅÎÉÅ ÂÙÌÏ ÚÄÅÓØ"
+msgstr "предыдущее определение было здеÑÑŒ"
-#: locale/programs/ld-ctype.c:2885
+#: locale/programs/ld-ctype.c:2890
#, c-format
msgid "%s: no representable `default_missing' definition found"
-msgstr "%s: ÎÅ ÎÁÊÄÅÎÏ ÐÒÅÄÓÔÁ×ÉÍÏÇÏ ÏÐÒÅÄÅÌÅÎÉÑ `default_missing'"
-
-#: locale/programs/ld-ctype.c:3038
-#, c-format
-msgid "%s: character `%s' not defined in charmap while needed as default value"
-msgstr "%s: ÚÎÁË `%s' ÎÅ ÏÐÒÅÄÅÌÅÎ × ÏÔÏÂÒÁÖÅÎÉÉ ÚÎÁËÏ×, ÏÄÎÁËÏ ÏÎ ÎÅÏÂÈÏÄÉÍ ËÁË ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ"
+msgstr "%s: не найдено предÑтавимого Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Â«default_missing»"
#: locale/programs/ld-ctype.c:3043 locale/programs/ld-ctype.c:3127
#: locale/programs/ld-ctype.c:3147 locale/programs/ld-ctype.c:3168
#: locale/programs/ld-ctype.c:3189 locale/programs/ld-ctype.c:3210
#: locale/programs/ld-ctype.c:3231 locale/programs/ld-ctype.c:3271
#: locale/programs/ld-ctype.c:3292 locale/programs/ld-ctype.c:3359
-#, c-format
-msgid "%s: character `%s' in charmap not representable with one byte"
-msgstr "%s: ÚÎÁË `%s' × ÏÔÏÂÒÁÖÅÎÉÉ ÚÎÁËÏ× ÎÅÐÒÅÄÓÔÁ×ÉÍ ÏÄÎÉÍ ÂÁÊÔÏÍ"
-
-#: locale/programs/ld-ctype.c:3122 locale/programs/ld-ctype.c:3142
-#: locale/programs/ld-ctype.c:3184 locale/programs/ld-ctype.c:3205
-#: locale/programs/ld-ctype.c:3226 locale/programs/ld-ctype.c:3266
-#: locale/programs/ld-ctype.c:3287 locale/programs/ld-ctype.c:3354
-#: locale/programs/ld-ctype.c:3396 locale/programs/ld-ctype.c:3421
+#: locale/programs/ld-ctype.c:3401 locale/programs/ld-ctype.c:3426
#, c-format
msgid "%s: character `%s' not defined while needed as default value"
-msgstr "%s: ÚÎÁË `%s' ÎÅ ÏÐÒÅÄÅÌÅÎ, ÈÏÔÑ ÏÎ ÎÕÖÅÎ ËÁË ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ"
+msgstr "%s: знак «%s» не определен, Ñ…Ð¾Ñ‚Ñ Ð¾Ð½ нужен как значение по умолчанию"
-#: locale/programs/ld-ctype.c:3163
+#: locale/programs/ld-ctype.c:3048 locale/programs/ld-ctype.c:3132
+#: locale/programs/ld-ctype.c:3152 locale/programs/ld-ctype.c:3173
+#: locale/programs/ld-ctype.c:3194 locale/programs/ld-ctype.c:3215
+#: locale/programs/ld-ctype.c:3236 locale/programs/ld-ctype.c:3276
+#: locale/programs/ld-ctype.c:3297 locale/programs/ld-ctype.c:3364
#, c-format
-msgid "character `%s' not defined while needed as default value"
-msgstr "ÚÎÁË `%s' ÎÅ ÏÐÒÅÄÅÌÅÎ, ÈÏÔÑ ÏÎ ÎÕÖÅÎ ËÁË ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ"
+msgid "%s: character `%s' in charmap not representable with one byte"
+msgstr "%s: знак «%s» в отображении знаков непредÑтавим одним байтом"
-#: locale/programs/ld-ctype.c:3403 locale/programs/ld-ctype.c:3428
+#: locale/programs/ld-ctype.c:3408 locale/programs/ld-ctype.c:3433
#, c-format
msgid "%s: character `%s' needed as default value not representable with one byte"
-msgstr "%s: ÚÎÁË `%s' ÎÕÖÅÎ ËÁË ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÎÏ ÅÇÏ ÎÅÌØÚÑ ÐÒÅÄÓÔÁ×ÉÔØ ÏÄÎÉÍ ÂÁÊÔÏÍ"
+msgstr "%s: знак «%s» нужен как значение по умолчанию, но его Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ´Ñтавить одним байтом"
-#: locale/programs/ld-ctype.c:3483
+#: locale/programs/ld-ctype.c:3489
#, c-format
msgid "no output digits defined and none of the standard names in the charmap"
-msgstr ""
+msgstr "не указаны выходные цифры или Ñтандартные имена в таблице Ñимволов"
-#: locale/programs/ld-ctype.c:3774
+#: locale/programs/ld-ctype.c:3780
#, c-format
msgid "%s: transliteration data from locale `%s' not available"
-msgstr "%s: ÎÅÔ ÄÁÎÎÙÈ ÄÌÑ ÔÒÁÎÓÌÉÔÅÒÁÃÉÉ ÉÚ ÌÏËÁÌÉ `%s'"
+msgstr "%s: нет данных Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½Ñлитерации из локали «%s»"
-#: locale/programs/ld-ctype.c:3875
+#: locale/programs/ld-ctype.c:3881
#, c-format
msgid "%s: table for class \"%s\": %lu bytes\n"
-msgstr "%s: ÔÁÂÌÉÃÁ ÄÌÑ ËÌÁÓÓÁ \"%s\": %lu ÂÁÊÔ\n"
+msgstr "%s: таблица Ð´Ð»Ñ ÐºÐ»Ð°ÑÑа «%s»: %lu байт\n"
-#: locale/programs/ld-ctype.c:3944
+#: locale/programs/ld-ctype.c:3950
#, c-format
msgid "%s: table for map \"%s\": %lu bytes\n"
-msgstr "%s: ÔÁÂÌÉÃÁ ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÑ \"%s\": %lu ÂÁÊÔ\n"
+msgstr "%s: таблица Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Â«%s»: %lu байт\n"
-#: locale/programs/ld-ctype.c:4077
+#: locale/programs/ld-ctype.c:4083
#, c-format
msgid "%s: table for width: %lu bytes\n"
-msgstr "%s: ÔÁÂÌÉÃÁ ÄÌÑ ÛÉÒÉÎÙ: %lu ÂÁÊÔ\n"
+msgstr "%s: таблица Ð´Ð»Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ñ‹: %lu байт\n"
-#: locale/programs/ld-identification.c:169
+#: locale/programs/ld-identification.c:170
#, c-format
msgid "%s: no identification for category `%s'"
-msgstr "%s: ÎÅÔ ÉÄÅÎÔÉÆÉËÁÃÉÉ ÄÌÑ ËÁÔÅÇÏÒÉÉ `%s'"
+msgstr "%s: нет идентификации Ð´Ð»Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¸ «%s»"
-#: locale/programs/ld-identification.c:434
+#: locale/programs/ld-identification.c:435
#, c-format
msgid "%s: duplicate category version definition"
-msgstr "%s: ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ×ÅÒÓÉÉ ËÁÔÅÇÏÒÉÉ"
+msgstr "%s: повторное определение верÑии категории"
-#: locale/programs/ld-measurement.c:112
+#: locale/programs/ld-measurement.c:113
#, c-format
msgid "%s: invalid value for field `%s'"
-msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÚÎÁÞÅÎÉÅ ÐÏÌÑ `%s'"
+msgstr "%s: недопуÑтимое значение Ð¿Ð¾Ð»Ñ Â«%s»"
-#: locale/programs/ld-messages.c:113 locale/programs/ld-messages.c:147
+#: locale/programs/ld-messages.c:114 locale/programs/ld-messages.c:148
#, c-format
msgid "%s: field `%s' undefined"
-msgstr "%s: ÐÏÌÅ `%s' ÎÅ ÏÐÒÅÄÅÌÅÎÏ"
+msgstr "%s: поле «%s» не определено"
-#: locale/programs/ld-messages.c:120 locale/programs/ld-messages.c:154
+#: locale/programs/ld-messages.c:121 locale/programs/ld-messages.c:155
+#: locale/programs/ld-monetary.c:256 locale/programs/ld-numeric.c:118
#, c-format
msgid "%s: value for field `%s' must not be an empty string"
-msgstr "%s: ÚÎÁÞÅÎÉÅ ÐÏÌÑ `%s' ÎÅ ÄÏÌÖÎÏ ÂÙÔØ ÐÕÓÔÏÊ ÓÔÒÏËÏÊ"
+msgstr "%s: значение Ð¿Ð¾Ð»Ñ Â«%s» не должно быть пуÑтой Ñтрокой"
-#: locale/programs/ld-messages.c:136 locale/programs/ld-messages.c:170
+#: locale/programs/ld-messages.c:137 locale/programs/ld-messages.c:171
#, c-format
msgid "%s: no correct regular expression for field `%s': %s"
-msgstr "%s: ÎÅÔ ÐÒÁ×ÉÌØÎÏÇÏ ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ ÄÌÑ ÐÏÌÑ `%s': %s"
+msgstr "%s: нет правильного регулÑрного Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ Â«%s»: %s"
-#: locale/programs/ld-monetary.c:222
+#: locale/programs/ld-monetary.c:224
#, c-format
msgid "%s: value of field `int_curr_symbol' has wrong length"
-msgstr "%s: ÚÎÁÞÅÎÉÅ ÐÏÌÑ `int_curr_symbol' ÉÍÅÅÔ ÎÅÐÒÁ×ÉÌØÎÕÀ ÄÌÉÎÕ"
+msgstr "%s: значение Ð¿Ð¾Ð»Ñ Â«int_curr_symbol» имеет неправильную длину"
-#: locale/programs/ld-monetary.c:235
+#: locale/programs/ld-monetary.c:237
#, c-format
msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217"
-msgstr "%s: ÚÎÁÞÅÎÉÅ ÐÏÌÑ `int_curr_symbol' ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÎÉ ÏÄÎÏÍÕ ×ÅÒÎÏÍÕ ÉÍÅÎÉ ÉÚ ISO 4217"
-
-#: locale/programs/ld-monetary.c:254 locale/programs/ld-numeric.c:117
-#, c-format
-msgid "%s: value for field `%s' must not be the empty string"
-msgstr "%s: ÚÎÁÞÅÎÉÅ ÐÏÌÑ `%s' ÎÅ ÄÏÌÖÎÏ ÂÙÔØ ÐÕÓÔÏÊ ÓÔÒÏËÏÊ"
+msgstr "%s: значение Ð¿Ð¾Ð»Ñ Â«int_curr_symbol» не ÑоответÑтвует ни одному верному имени из ISO 4217"
-#: locale/programs/ld-monetary.c:282 locale/programs/ld-monetary.c:312
+#: locale/programs/ld-monetary.c:285 locale/programs/ld-monetary.c:315
#, c-format
msgid "%s: value for field `%s' must be in range %d...%d"
-msgstr "%s: ÚÎÁÞÅÎÉÅ ÐÏÌÑ `%s' ÄÏÌÖÎÏ ÂÙÔØ × ÄÉÁÐÁÚÏÎÅ %d...%d"
+msgstr "%s: значение Ð¿Ð¾Ð»Ñ Â«%s» должно быть в диапазоне %d...%d"
-#: locale/programs/ld-monetary.c:744 locale/programs/ld-numeric.c:273
+#: locale/programs/ld-monetary.c:747 locale/programs/ld-numeric.c:274
#, c-format
msgid "%s: value for field `%s' must be a single character"
-msgstr "%s: ÚÎÁÞÅÎÉÅ ÐÏÌÑ `%s' ÄÏÌÖÎÏ ÂÙÔØ ÏÄÎÉÍ ÚÎÁËÏÍ"
+msgstr "%s: значение Ð¿Ð¾Ð»Ñ Â«%s» должно быть одним знаком"
-#: locale/programs/ld-monetary.c:841 locale/programs/ld-numeric.c:317
+#: locale/programs/ld-monetary.c:844 locale/programs/ld-numeric.c:318
#, c-format
msgid "%s: `-1' must be last entry in `%s' field"
-msgstr "%s: `-1' ÄÏÌÖÎÏ ÂÙÔØ ÐÏÓÌÅÄÎÉÍ ×ÈÏÖÄÅÎÉÅ × ÐÏÌÅ `%s'"
+msgstr "%s: «-1» должно быть поÑледним вхождение в поле «%s»"
-#: locale/programs/ld-monetary.c:863 locale/programs/ld-numeric.c:334
+#: locale/programs/ld-monetary.c:866 locale/programs/ld-numeric.c:335
#, c-format
msgid "%s: values for field `%s' must be smaller than 127"
-msgstr "%s: ÚÎÁÞÅÎÉÑ ÐÏÌÑ `%s' ÄÏÌÖÎÙ ÂÙÔØ ÍÅÎØÛÅ 127"
+msgstr "%s: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ñ Â«%s» должны быть меньше 127"
-#: locale/programs/ld-monetary.c:906
+#: locale/programs/ld-monetary.c:909
msgid "conversion rate value cannot be zero"
-msgstr "ÚÎÁÞÅÎÉÅ ÏÂÍÅÎÎÏÇÏ ËÕÒÓÁ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÎÕÌÅÍ"
+msgstr "значение обменного курÑа не может быть нулем"
-#: locale/programs/ld-name.c:128 locale/programs/ld-telephone.c:125
-#: locale/programs/ld-telephone.c:148
+#: locale/programs/ld-name.c:129 locale/programs/ld-telephone.c:126
+#: locale/programs/ld-telephone.c:149
#, c-format
msgid "%s: invalid escape sequence in field `%s'"
-msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÁÑ ÕÐÒÁ×ÌÑÀÝÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ × ÐÏÌÅ `%s'"
+msgstr "%s: недопуÑÑ‚Ð¸Ð¼Ð°Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÑÑŽÑ‰Ð°Ñ Ð¿Ð¾ÑледовательноÑÑ‚ÑŒ в поле «%s»"
-#: locale/programs/ld-time.c:246
+#: locale/programs/ld-time.c:247
#, c-format
msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'"
-msgstr "%s: ÆÌÁÇ ÎÁÐÒÁ×ÌÅÎÉÑ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era' ÎÅ '+' É ÎÅ '-'"
+msgstr "%s: флаг Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² Ñтроке %Zd в поле «era» не »+» и не »-»"
-#: locale/programs/ld-time.c:257
+#: locale/programs/ld-time.c:258
#, c-format
msgid "%s: direction flag in string %Zd in `era' field is not a single character"
-msgstr "%s: ÆÌÁÇ ÎÁÐÒÁ×ÌÅÎÉÑ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era' ÎÅ Ñ×ÌÑÅÔÓÑ ÏÄÎÉÍ ÚÎÁËÏÍ"
+msgstr "%s: флаг Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² Ñтроке %Zd в поле «era» не ÑвлÑетÑÑ Ð¾Ð´Ð½Ð¸Ð¼ знаком"
-#: locale/programs/ld-time.c:270
+#: locale/programs/ld-time.c:271
#, c-format
msgid "%s: invalid number for offset in string %Zd in `era' field"
-msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ ÄÌÑ ÓÍÅÝÅÎÉÑ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+msgstr "%s: недопуÑтимое чиÑло Ð´Ð»Ñ ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð² Ñтроке %Zd в поле «era»"
-#: locale/programs/ld-time.c:278
+#: locale/programs/ld-time.c:279
#, c-format
msgid "%s: garbage at end of offset value in string %Zd in `era' field"
-msgstr "%s: ÍÕÓÏÒ × ËÏÎÃÅ ÚÎÁÞÅÎÉÑ ÓÍÅÝÅÎÉÑ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+msgstr "%s: муÑор в конце Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð² Ñтроке %Zd в поле «era»"
-#: locale/programs/ld-time.c:329
+#: locale/programs/ld-time.c:330
#, c-format
msgid "%s: invalid starting date in string %Zd in `era' field"
-msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÁÑ ÎÁÞÁÌØÎÁÑ ÄÁÔÁ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+msgstr "%s: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð°Ñ‚Ð° в Ñтроке %Zd в поле «era»"
-#: locale/programs/ld-time.c:338
+#: locale/programs/ld-time.c:339
#, c-format
msgid "%s: garbage at end of starting date in string %Zd in `era' field "
-msgstr "%s: ÍÕÓÏÒ × ËÏÎÃÅ ÎÁÞÁÌØÎÏÊ ÄÁÔÙ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+msgstr "%s: муÑор в конце начальной даты в Ñтроке %Zd в поле «era»"
-#: locale/programs/ld-time.c:357
+#: locale/programs/ld-time.c:358
#, c-format
msgid "%s: starting date is invalid in string %Zd in `era' field"
-msgstr "%s: ÎÅ×ÅÒÎÁÑ ÎÁÞÁÌØÎÁÑ ÄÁÔÁ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+msgstr "%s: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð°Ñ‚Ð° в Ñтроке %Zd в поле «era»"
-#: locale/programs/ld-time.c:406
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
-msgstr "%s: ÎÅ×ÅÒÎÁÑ ËÏÎÅÞÎÁÑ ÄÁÔÁ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+msgstr "%s: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° в Ñтроке %Zd в поле «era»"
-#: locale/programs/ld-time.c:415
+#: locale/programs/ld-time.c:416
#, c-format
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
-msgstr "%s: ÍÕÓÏÒ × ËÏÎÃÅ ËÏÎÅÞÎÏÊ ÄÁÔÙ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
-
-#: locale/programs/ld-time.c:434
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s: ÎÅ×ÅÒÎÁÑ ËÏÎÅÞÎÁÑ ÄÁÔÁ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+msgstr "%s: муÑор в конце конечной даты в Ñтроке %Zd в поле «era»"
-#: locale/programs/ld-time.c:443
+#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
-msgstr "%s: ÐÒÏÐÕÝÅÎÏ ÉÍÑ ÜÒÙ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+msgstr "%s: пропущено Ð¸Ð¼Ñ Ñры в Ñтроке %Zd в поле «era»"
-#: locale/programs/ld-time.c:455
+#: locale/programs/ld-time.c:456
#, c-format
msgid "%s: missing era format in string %Zd in `era' field"
-msgstr "%s: ÐÒÏÐÕÝÅÎ ÆÏÒÍÁÔ ÜÒÙ × ÓÔÒÏËÅ %Zd × ÐÏÌÅ `era'"
+msgstr "%s: пропущен формат Ñры в Ñтроке %Zd в поле «era»"
-#: locale/programs/ld-time.c:496
+#: locale/programs/ld-time.c:497
#, c-format
msgid "%s: third operand for value of field `%s' must not be larger than %d"
-msgstr "%s: ÔÒÅÔÉÊ ÏÐÅÒÁÎÄ ÄÌÑ ÚÎÁÞÅÎÉÑ ÐÏÌÑ `%s' ÎÅ ÄÏÌÖÅÎ ÂÙÔØ ÂÏÌØÛÅ %d"
+msgstr "%s: третий операнд Ð´Ð»Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ñ Â«%s» не должен быть больше %d"
-#: locale/programs/ld-time.c:504 locale/programs/ld-time.c:512
-#, c-format
-msgid "%s: values of field `%s' must not be larger than %d"
-msgstr "%s: ÚÎÁÞÅÎÉÑ ÐÏÌÑ `%s' ÎÅ ÄÏÌÖÎÙ ÂÙÔØ ÂÏÌØÛÅ %d"
-
-#: locale/programs/ld-time.c:520
+#: locale/programs/ld-time.c:505 locale/programs/ld-time.c:513
+#: locale/programs/ld-time.c:521
#, c-format
msgid "%s: values for field `%s' must not be larger than %d"
-msgstr "%s: ÚÎÁÞÅÎÉÑ ÄÌÑ ÐÏÌÑ `%s' ÎÅ ÄÏÌÖÎÙ ÂÙÔØ ÂÏÌØÛÅ %d"
+msgstr "%s: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ Â«%s» не должны быть больше %d"
-#: locale/programs/ld-time.c:1003
+#: locale/programs/ld-time.c:1004
#, c-format
msgid "%s: too few values for field `%s'"
-msgstr "%s: ÓÌÉÛËÏÍ ÍÁÌÏ ÚÎÁÞÅÎÉÊ ÄÌÑ ÐÏÌÑ `%s'"
+msgstr "%s: Ñлишком мало значений Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ Â«%s»"
-#: locale/programs/ld-time.c:1048
+#: locale/programs/ld-time.c:1049
msgid "extra trailing semicolon"
-msgstr "ÌÉÛÎÅÅ Ä×ÏÅÔÏÞÉÅ × ËÏÎÃÅ"
+msgstr "лишнее двоеточие в конце"
-#: locale/programs/ld-time.c:1051
+#: locale/programs/ld-time.c:1052
#, c-format
msgid "%s: too many values for field `%s'"
-msgstr "%s: ÓÌÉÛËÏÍ ÍÎÏÇÏ ÚÎÁÞÅÎÉÊ ÄÌÑ ÐÏÌÑ `%s'"
+msgstr "%s: Ñлишком много значений Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ Â«%s»"
-#: locale/programs/linereader.c:129
+#: locale/programs/linereader.c:130
msgid "trailing garbage at end of line"
-msgstr "ÍÕÓÏÒ × ËÏÎÃÅ ÓÔÒÏËÉ"
+msgstr "муÑор в конце Ñтроки"
-#: locale/programs/linereader.c:297
+#: locale/programs/linereader.c:298
msgid "garbage at end of number"
-msgstr "ÍÕÓÏÒ × ËÏÎÃÅ ÞÉÓÌÁ"
+msgstr "муÑор в конце чиÑла"
-#: locale/programs/linereader.c:409
+#: locale/programs/linereader.c:410
msgid "garbage at end of character code specification"
-msgstr "ÍÕÓÏÒ × ËÏÎÃÅ ÓÐÅÃÉÆÉËÁÃÉÉ ËÏÄÁ ÚÎÁËÁ"
+msgstr "муÑор в конце Ñпецификации кода знака"
-#: locale/programs/linereader.c:495
+#: locale/programs/linereader.c:496
msgid "unterminated symbolic name"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÏÅ ÓÉÍ×ÏÌØÎÏÅ ÉÍÑ"
+msgstr "незавершенное Ñимвольное имÑ"
-#: locale/programs/linereader.c:622
+#: locale/programs/linereader.c:623
msgid "illegal escape sequence at end of string"
-msgstr "ÎÅ×ÅÒÎÁÑ ÕÐÒÁ×ÌÑÀÝÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ × ËÏÎÃÅ ÓÔÒÏËÉ"
+msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÑÑŽÑ‰Ð°Ñ Ð¿Ð¾ÑледовательноÑÑ‚ÑŒ в конце Ñтроки"
-#: locale/programs/linereader.c:626 locale/programs/linereader.c:854
+#: locale/programs/linereader.c:627 locale/programs/linereader.c:855
msgid "unterminated string"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÓÔÒÏËÁ"
+msgstr "Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ð°Ñ Ñтрока"
-#: locale/programs/linereader.c:668
+#: locale/programs/linereader.c:669
msgid "non-symbolic character value should not be used"
-msgstr "ÎÅ ÓÔÏÉÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÎÅÓÉÍ×ÏÌØÎÏÅ ÚÎÁËÏ×ÏÅ ÚÎÁÞÅÎÉÅ"
+msgstr "не Ñтоит иÑпользовать неÑимвольное знаковое значение"
-#: locale/programs/linereader.c:815
+#: locale/programs/linereader.c:816
#, c-format
msgid "symbol `%.*s' not in charmap"
-msgstr "ÓÉÍ×ÏÌ `%.*s' ÏÔÓÕÔÓÔ×ÕÅÔ × ÏÔÏÂÒÁÖÅÎÉÉ ÚÎÁËÏ×"
+msgstr "Ñимвол «%.*s» отÑутÑтвует в отображении знаков"
-#: locale/programs/linereader.c:836
+#: locale/programs/linereader.c:837
#, c-format
msgid "symbol `%.*s' not in repertoire map"
-msgstr "ÓÉÍ×ÏÌ `%.*s' ÏÔÓÕÔÓÔ×ÕÅÔ × ÏÔÏÂÒÁÖÅÎÉÉ ÒÅÐÅÒÔÕÁÒÁ"
+msgstr "Ñимвол «%.*s» отÑутÑтвует в отображении репертуара"
-#: locale/programs/locale.c:73
+#: locale/programs/locale.c:74
msgid "System information:"
-msgstr "éÎÆÏÒÍÁÃÉÑ Ï ÓÉÓÔÅÍÅ:"
+msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ ÑиÑтеме:"
-#: locale/programs/locale.c:75
+#: locale/programs/locale.c:76
msgid "Write names of available locales"
-msgstr "îÁÐÉÓÁÔØ ÉÍÅÎÁ ÄÏÓÔÕÐÎÙÈ ÌÏËÁÌÅÊ"
+msgstr "ÐапиÑать имена доÑтупных локалей"
-#: locale/programs/locale.c:77
+#: locale/programs/locale.c:78
msgid "Write names of available charmaps"
-msgstr "ðÅÞÁÔÁÅÔ ÉÍÅÎÁ ÄÏÓÔÕÐÎÙÈ ÏÔÏÂÒÁÖÅÎÉÊ ÚÎÁËÏ×"
+msgstr "Печатает имена доÑтупных отображений знаков"
-#: locale/programs/locale.c:78
+#: locale/programs/locale.c:79
msgid "Modify output format:"
-msgstr "éÚÍÅÎÅÎÉÅ ×ÙÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ:"
+msgstr "Изменение выходного формата:"
-#: locale/programs/locale.c:79
+#: locale/programs/locale.c:80
msgid "Write names of selected categories"
-msgstr "îÁÐÉÓÁÔØ ÉÍÅÎÁ ×ÙÂÒÁÎÎÙÈ ËÁÔÅÇÏÒÉÊ"
+msgstr "ÐапиÑать имена выбранных категорий"
-#: locale/programs/locale.c:80
+#: locale/programs/locale.c:81
msgid "Write names of selected keywords"
-msgstr "îÁÐÉÓÁÔØ ÉÍÅÎÁ ×ÙÂÒÁÎÎÙÈ ËÌÀÞÅ×ÙÈ ÓÌÏ×"
+msgstr "ÐапиÑать имена выбранных ключевых Ñлов"
-#: locale/programs/locale.c:81
+#: locale/programs/locale.c:82
msgid "Print more information"
-msgstr "îÁÐÅÞÁÔÁÔØ ÂÏÌØÛÅ ÉÎÆÏÒÍÁÃÉÉ"
+msgstr "Ðапечатать больше информации"
-#: locale/programs/locale.c:86
-msgid ""
-"Get locale-specific information. For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"÷ÙÄÁÅÔ ÉÎÆÏÒÍÁÃÉÀ, ÏÔÎÏÓÑÝÕÀÓÑ Ë ÌÏËÁÌÉ. éÎÓÔÒÕËÃÉÉ ÐÏ ÓÏÏÂÝÅÎÉÀ Ï ÏÛÉÂËÁÈ ÓÍÏÔÒÉÔÅ ÎÁ\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+#: locale/programs/locale.c:87
+msgid "Get locale-specific information."
+msgstr "Получить информацию, завиÑимую от локали."
-#: locale/programs/locale.c:91
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
msgstr ""
-"éíñ\n"
+"ИМЯ\n"
"[-a|-m]"
-#: locale/programs/locale.c:192
+#: locale/programs/locale.c:194
#, c-format
msgid "Cannot set LC_CTYPE to default locale"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ LC_CTYPE × ÌÏËÁÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ."
+msgstr "Ðевозможно уÑтановить LC_CTYPE в локаль по умолчанию."
-#: locale/programs/locale.c:194
+#: locale/programs/locale.c:196
#, c-format
msgid "Cannot set LC_MESSAGES to default locale"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ LC_MESSAGES × ÌÏËÁÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ."
+msgstr "Ðевозможно уÑтановить LC_MESSAGES в локаль по умолчанию."
-#: locale/programs/locale.c:207
+#: locale/programs/locale.c:209
#, c-format
msgid "Cannot set LC_COLLATE to default locale"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ LC_COLLATE × ÌÏËÁÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ."
+msgstr "Ðевозможно уÑтановить LC_COLLATE в локаль по умолчанию."
-#: locale/programs/locale.c:223
+#: locale/programs/locale.c:225
#, c-format
msgid "Cannot set LC_ALL to default locale"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ LC_ALL × ÌÏËÁÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ."
+msgstr "Ðевозможно уÑтановить LC_ALL в локаль по умолчанию."
-#: locale/programs/locale.c:499
+#: locale/programs/locale.c:518
#, c-format
msgid "while preparing output"
-msgstr "ÐÒÉ ÐÏÄÇÏÔÏ×ËÅ ×Ù×ÏÄÁ"
+msgstr "при подготовке вывода"
-#: locale/programs/localedef.c:119
+#: locale/programs/localedef.c:120
msgid "Input Files:"
-msgstr "÷ÈÏÄÎÙÅ ÆÁÊÌÙ:"
+msgstr "Входные файлы:"
-#: locale/programs/localedef.c:121
+#: locale/programs/localedef.c:122
msgid "Symbolic character names defined in FILE"
-msgstr "óÉÍ×ÏÌØÎÙÅ ÉÍÅÎÁ ÚÎÁËÏ× ÏÂßÑ×ÌÅÎÙ × æáêìå"
+msgstr "Символьные имена знаков объÑвлены в ФÐЙЛЕ"
-#: locale/programs/localedef.c:122
+#: locale/programs/localedef.c:123
msgid "Source definitions are found in FILE"
-msgstr "éÓÈÏÄÎÙÅ ÏÐÒÅÄÅÌÅÎÉÑ ÎÁÈÏÄÑÔÓÑ × æáêìå"
+msgstr "ИÑходные Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð½Ð°Ñ…Ð¾Ð´ÑÑ‚ÑÑ Ð² ФÐЙЛЕ"
-#: locale/programs/localedef.c:124
+#: locale/programs/localedef.c:125
msgid "FILE contains mapping from symbolic names to UCS4 values"
-msgstr "æáêì ÓÏÄÅÒÖÉÔ ÏÔÏÂÒÁÖÅÎÉÑ ÉÚ ÓÉÍ×ÏÌØÎÙÈ ÉÍÅÎ × ÚÎÁÞÅÎÉÑ UCS4"
+msgstr "ФÐЙЛ Ñодержит Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð· Ñимвольных имен в Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ UCS4"
-#: locale/programs/localedef.c:128
+#: locale/programs/localedef.c:129
msgid "Create output even if warning messages were issued"
-msgstr "óÏÚÄÁ×ÁÔØ ×Ù×ÏÄ, ÄÁÖÅ ÅÓÌÉ ÂÙÌÉ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ"
+msgstr "Создавать вывод, даже еÑли были предупреждениÑ"
-#: locale/programs/localedef.c:129
+#: locale/programs/localedef.c:130
msgid "Create old-style tables"
-msgstr "óÏÚÄÁ×ÁÔØ ÔÁÂÌÉÃÙ × ÓÔÁÒÏÍ ÓÔÉÌÅ"
+msgstr "Создавать таблицы в Ñтаром Ñтиле"
-#: locale/programs/localedef.c:130
+#: locale/programs/localedef.c:131
msgid "Optional output file prefix"
-msgstr "îÅÏÂÑÚÁÔÅÌØÎÙÊ ÐÒÅÆÉËÓ ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×"
+msgstr "ÐеобÑзательный Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ñ… файлов"
-#: locale/programs/localedef.c:131
+#: locale/programs/localedef.c:132
msgid "Be strictly POSIX conform"
-msgstr "óÔÒÏÇÏ ÓÌÅÄÏ×ÁÔØ ÓÔÁÎÄÁÒÔÕ POSIX"
+msgstr "Строго Ñледовать Ñтандарту POSIX"
-#: locale/programs/localedef.c:133
+#: locale/programs/localedef.c:134
msgid "Suppress warnings and information messages"
-msgstr "îÅ ×Ù×ÏÄÉÔØ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ É ÉÎÆÏÒÍÁÃÉÏÎÎÙÅ ÓÏÏÂÝÅÎÉÑ"
+msgstr "Ðе выводить Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¸ информационные ÑообщениÑ"
-#: locale/programs/localedef.c:134
+#: locale/programs/localedef.c:135
msgid "Print more messages"
-msgstr "ðÅÞÁÔÁÔØ ÂÏÌØÛÅ ÓÏÏÂÝÅÎÉÊ"
+msgstr "Печатать больше Ñообщений"
-#: locale/programs/localedef.c:135
+#: locale/programs/localedef.c:136
msgid "Archive control:"
-msgstr "õÐÒÁ×ÌÅÎÉÅ ÁÒÈÉ×ÏÍ:"
+msgstr "Управление архивом:"
-#: locale/programs/localedef.c:137
+#: locale/programs/localedef.c:138
msgid "Don't add new data to archive"
-msgstr "îÅ ÄÏÂÁ×ÌÑÔØ × ÁÒÈÉ× ÎÏ×ÙÅ ÄÁÎÎÙÅ"
+msgstr "Ðе добавлÑÑ‚ÑŒ в архив новые данные"
-#: locale/programs/localedef.c:139
+#: locale/programs/localedef.c:140
msgid "Add locales named by parameters to archive"
-msgstr "äÏÂÁ×ÉÔØ × ÁÒÈÉ× ÌÏËÁÌÉ, ÕËÁÚÁÎÎÙÅ × ÐÁÒÁÍÅÔÒÁÈ"
+msgstr "Добавить в архив локали, указанные в параметрах"
-#: locale/programs/localedef.c:140
+#: locale/programs/localedef.c:141
msgid "Replace existing archive content"
-msgstr "úÁÍÅÎÉÔØ ÓÕÝÅÓÔ×ÕÀÝÅÅ ÓÏÄÅÒÖÉÍÏÅ ÁÒÈÉ×Á"
+msgstr "Заменить ÑущеÑтвующее Ñодержимое архива"
-#: locale/programs/localedef.c:142
+#: locale/programs/localedef.c:143
msgid "Remove locales named by parameters from archive"
-msgstr "õÄÁÌÉÔØ ÉÚ ÁÒÈÉ×Á ÌÏËÁÌÉ, ÕËÁÚÁÎÎÙÅ × ÐÁÒÁÍÅÔÒÁÈ"
+msgstr "Удалить из архива локали, указанные в параметрах"
-#: locale/programs/localedef.c:143
+#: locale/programs/localedef.c:144
msgid "List content of archive"
-msgstr "ðÅÒÅÞÉÓÌÉÔØ ÓÏÄÅÒÖÉÍÏÅ ÁÒÈÉ×Á"
+msgstr "ПеречиÑлить Ñодержимое архива"
-#: locale/programs/localedef.c:145
+#: locale/programs/localedef.c:146
msgid "locale.alias file to consult when making archive"
-msgstr "ÆÁÊÌ locale.alias, Ë ËÏÔÏÒÏÍÕ ÓÌÅÄÕÅÔ ÏÂÒÁÝÁÔØÓÑ ÐÒÉ ÓÏÚÄÁÎÉÉ ÁÒÈÉ×Á"
+msgstr "файл locale.alias, к которому Ñледует обращатьÑÑ Ð¿Ñ€Ð¸ Ñоздании архива"
-#: locale/programs/localedef.c:150
+#: locale/programs/localedef.c:151
msgid "Compile locale specification"
-msgstr "ëÏÍÐÉÌÉÒÕÅÔ ÓÐÅÃÉÆÉËÁÃÉÀ ÌÏËÁÌÉ"
+msgstr "Компилирует Ñпецификацию локали"
-#: locale/programs/localedef.c:153
+#: locale/programs/localedef.c:154
msgid ""
"NAME\n"
"[--add-to-archive|--delete-from-archive] FILE...\n"
"--list-archive [FILE]"
msgstr ""
-"éíñ\n"
-"[--add-to-archive|--delete-from-archive] æáêì...\n"
-"--list-archive [æáêì]"
+"ИМЯ\n"
+"[--add-to-archive|--delete-from-archive] ФÐЙЛ...\n"
+"--list-archive [ФÐЙЛ]"
-#: locale/programs/localedef.c:231
+#: locale/programs/localedef.c:232
#, c-format
msgid "cannot create directory for output files"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×"
+msgstr "невозможно Ñоздать каталог Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ñ… файлов"
-#: locale/programs/localedef.c:242
+#: locale/programs/localedef.c:243
#, c-format
msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
-msgstr "æáôáìøîáñ ïûéâëá: ÓÉÓÔÅÍÁ ÎÅ ÏÐÒÅÄÅÌÑÅÔ `_POSIX2_LOCALEDEF'"
+msgstr "ФÐТÐЛЬÐÐЯ ОШИБКÐ: ÑиÑтема не определÑет «_POSIX2_LOCALEDEF»"
-#: locale/programs/localedef.c:256 locale/programs/localedef.c:272
-#: locale/programs/localedef.c:598 locale/programs/localedef.c:618
+#: locale/programs/localedef.c:257 locale/programs/localedef.c:273
+#: locale/programs/localedef.c:599 locale/programs/localedef.c:619
#, c-format
msgid "cannot open locale definition file `%s'"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ Ó ÏÐÒÅÄÅÌÅÎÉÅÍ ÌÏËÁÌÉ `%s'"
+msgstr "невозможно открыть файл Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸ÐµÐ¼ локали «%s»"
-#: locale/programs/localedef.c:284
+#: locale/programs/localedef.c:285
#, c-format
msgid "cannot write output files to `%s'"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ ×ÙÈÏÄÎÙÅ ÆÁÊÌÙ × `%s'"
+msgstr "невозможно запиÑать выходные файлы в «%s»"
-#: locale/programs/localedef.c:365
+#: locale/programs/localedef.c:366
#, c-format
msgid ""
"System's directory for character maps : %s\n"
@@ -2556,218 +2572,214 @@ msgid ""
" locale path : %s\n"
"%s"
msgstr ""
-"óÉÓÔÅÍÎÙÅ ËÁÔÁÌÏÇÉ ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÊ ÚÎÁËÏ×: %s\n"
-" ÏÔÏÂÒÁÖÅÎÉÊ ÒÅÐÅÒÔÕÁÒÏ×: %s\n"
-" ÐÕÔØ ÌÏËÁÌÉ : %s\n"
+"СиÑтемные каталоги Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ð¹ знаков: %s\n"
+" отображений репертуаров: %s\n"
+" путь локали : %s\n"
"%s"
-#: locale/programs/localedef.c:566
+#: locale/programs/localedef.c:567
#, c-format
msgid "circular dependencies between locale definitions"
-msgstr "ÃÉËÌÉÞÅÓËÉÅ ÚÁ×ÉÓÉÍÏÓÔÉ ÍÅÖÄÕ ÏÐÒÅÄÅÌÅÎÉÑÍÉ ÌÏËÁÌÅÊ"
+msgstr "цикличеÑкие завиÑимоÑти между определениÑми локалей"
-#: locale/programs/localedef.c:572
+#: locale/programs/localedef.c:573
#, c-format
msgid "cannot add already read locale `%s' a second time"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÕÖÅ ÓÞÉÔÁÎÎÕÀ ÌÏËÁÌØ `%s' ×ÔÏÒÏÊ ÒÁÚ"
+msgstr "невозможно добавить уже Ñчитанную локаль «%s» второй раз"
-#: locale/programs/locarchive.c:87 locale/programs/locarchive.c:256
+#: locale/programs/locarchive.c:88 locale/programs/locarchive.c:261
#, c-format
msgid "cannot create temporary file"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ"
+msgstr "невозможно Ñоздать временный файл"
-#: locale/programs/locarchive.c:116 locale/programs/locarchive.c:302
+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:307
#, c-format
msgid "cannot initialize archive file"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÁÒÈÉ×ÎÙÊ ÆÁÊÌ"
+msgstr "невозможно проинициализировать архивный файл"
-#: locale/programs/locarchive.c:123 locale/programs/locarchive.c:309
+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:314
#, c-format
msgid "cannot resize archive file"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ÒÁÚÍÅÒ ÁÒÈÉ×ÎÏÇÏ ÆÁÊÌÁ"
+msgstr "невозможно изменить размер архивного файла"
-#: locale/programs/locarchive.c:132 locale/programs/locarchive.c:318
-#: locale/programs/locarchive.c:506
+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:323
+#: locale/programs/locarchive.c:527
#, c-format
msgid "cannot map archive header"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔÏÂÒÁÚÉÔØ × ÐÁÍÑÔØ ÚÁÇÏÌÏ×ÏË ÁÒÈÉ×Á"
+msgstr "невозможно отобразить в памÑÑ‚ÑŒ заголовок архива"
-#: locale/programs/locarchive.c:154
+#: locale/programs/locarchive.c:156
#, c-format
msgid "failed to create new locale archive"
-msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÎÏ×ÙÊ ÁÒÈÉ× ÌÏËÁÌÉ"
+msgstr "не удалоÑÑŒ Ñоздать новый архив локали"
-#: locale/programs/locarchive.c:166
+#: locale/programs/locarchive.c:168
#, c-format
msgid "cannot change mode of new locale archive"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ÐÒÁ×Á ÄÏÓÔÕÐÁ ÄÌÑ ÎÏ×ÏÇÏ ÁÒÈÉ×ÎÏÇÏ ÆÁÊÌÁ"
+msgstr "невозможно изменить права доÑтупа Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ архивного файла"
-#: locale/programs/locarchive.c:250
+#: locale/programs/locarchive.c:255
#, c-format
msgid "cannot map locale archive file"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔÏÂÒÁÚÉÔØ × ÐÁÍÑÔØ ÁÒÈÉ×ÎÙÊ ÆÁÊÌ ÌÏËÁÌÉ"
+msgstr "невозможно отобразить в памÑÑ‚ÑŒ архивный файл локали"
-#: locale/programs/locarchive.c:326
+#: locale/programs/locarchive.c:331
#, c-format
msgid "cannot lock new archive"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÎÏ×ÙÊ ÁÒÈÉ×"
+msgstr "невозможно заблокировать новый архив"
-#: locale/programs/locarchive.c:375
+#: locale/programs/locarchive.c:396
#, c-format
msgid "cannot extend locale archive file"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÒÁÓÛÉÒÉÔØ ÁÒÈÉ×ÎÙÊ ÆÁÊÌ ÌÏËÁÌÉ"
+msgstr "невозможно раÑширить архивный файл локали"
-#: locale/programs/locarchive.c:384
+#: locale/programs/locarchive.c:405
#, c-format
msgid "cannot change mode of resized locale archive"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ÐÒÁ×Á ÄÏÓÔÕÐÁ ÁÒÈÉ×Á ÌÏËÁÌÉ ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÒÁÚÍÅÒÁ"
+msgstr "невозможно изменить права доÑтупа архива локали поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°"
-#: locale/programs/locarchive.c:392
+#: locale/programs/locarchive.c:413
#, c-format
msgid "cannot rename new archive"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÉÍÅÎÏ×ÁÔØ ÎÏ×ÙÊ ÁÒÈÉ×"
+msgstr "невозможно переименовать новый архив"
-#: locale/programs/locarchive.c:445
+#: locale/programs/locarchive.c:466
#, c-format
msgid "cannot open locale archive \"%s\""
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÁÒÈÉ× ÌÏËÁÌÉ \"%s\""
+msgstr "невозможно открыть архив локали «%s»"
-#: locale/programs/locarchive.c:450
+#: locale/programs/locarchive.c:471
#, c-format
msgid "cannot stat locale archive \"%s\""
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat ÄÌÑ ÁÒÈÉ×Á ÌÏËÁÌÉ \"%s\""
+msgstr "невозможно выполнить stat Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° локали «%s»"
-#: locale/programs/locarchive.c:469
+#: locale/programs/locarchive.c:490
#, c-format
msgid "cannot lock locale archive \"%s\""
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÁÒÈÉ× ÌÏËÁÌÉ \"%s\""
+msgstr "невозможно заблокировать архив локали «%s»"
-#: locale/programs/locarchive.c:492
+#: locale/programs/locarchive.c:513
#, c-format
msgid "cannot read archive header"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÚÁÇÏÌÏ×ÏË ÁÒÈÉ×Á"
+msgstr "невозможно Ñчитать заголовок архива"
-#: locale/programs/locarchive.c:552
+#: locale/programs/locarchive.c:573
#, c-format
msgid "locale '%s' already exists"
-msgstr "ÌÏËÁÌØ '%s' ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ"
+msgstr "локаль «%s» уже ÑущеÑтвует"
-#: locale/programs/locarchive.c:783 locale/programs/locarchive.c:798
-#: locale/programs/locarchive.c:810 locale/programs/locarchive.c:822
-#: locale/programs/locfile.c:343
+#: locale/programs/locarchive.c:804 locale/programs/locarchive.c:819
+#: locale/programs/locarchive.c:831 locale/programs/locarchive.c:843
+#: locale/programs/locfile.c:344
#, c-format
msgid "cannot add to locale archive"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ Ë ÁÒÈÉ×Õ ÌÏËÁÌÉ"
+msgstr "невозможно добавить к архиву локали"
-#: locale/programs/locarchive.c:977
+#: locale/programs/locarchive.c:998
#, c-format
msgid "locale alias file `%s' not found"
-msgstr "ÆÁÊÌ ÐÓÅ×ÄÏÎÉÍÏ× ÌÏËÁÌÅÊ `%s' ÎÅ ÎÁÊÄÅÎ"
+msgstr "файл пÑевдонимов локалей «%s» не найден"
-#: locale/programs/locarchive.c:1121
+#: locale/programs/locarchive.c:1142
#, c-format
msgid "Adding %s\n"
-msgstr "äÏÂÁ×ÌÅÎÉÅ %s\n"
+msgstr "Добавление %s\n"
-#: locale/programs/locarchive.c:1127
+#: locale/programs/locarchive.c:1148
#, c-format
msgid "stat of \"%s\" failed: %s: ignored"
-msgstr "ÏÐÅÒÁÃÉÑ stat ÄÌÑ \"%s\" ÎÅÕÓÐÅÛÎÁ: %s: ÉÇÎÏÒÉÒÏ×ÁÎÏ"
+msgstr "Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ stat Ð´Ð»Ñ Â«%s» неуÑпешна: %s: игнорировано"
-#: locale/programs/locarchive.c:1133
+#: locale/programs/locarchive.c:1154
#, c-format
msgid "\"%s\" is no directory; ignored"
-msgstr "\"%s\" ÎÅ Ñ×ÌÑÅÔÓÑ ËÁÔÁÌÏÇÏÍ; ÉÇÎÏÒÉÒÏ×ÁÎÏ"
+msgstr "«%s» не ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼; игнорировано"
-#: locale/programs/locarchive.c:1140
+#: locale/programs/locarchive.c:1161
#, c-format
msgid "cannot open directory \"%s\": %s: ignored"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÁÔÁÌÏÇ \"%s\": %s: ÉÇÎÏÒÉÒÏ×ÁÎÏ"
+msgstr "невозможно открыть каталог «%s»: %s: игнорировано"
-#: locale/programs/locarchive.c:1212
+#: locale/programs/locarchive.c:1233
#, c-format
msgid "incomplete set of locale files in \"%s\""
-msgstr "ÎÅÐÏÌÎÙÊ ÎÁÂÏÒ ÆÁÊÌÏ× ÌÏËÁÌÉ × \"%s\""
+msgstr "неполный набор файлов локали в «%s»"
-#: locale/programs/locarchive.c:1276
+#: locale/programs/locarchive.c:1297
#, c-format
msgid "cannot read all files in \"%s\": ignored"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ×ÓÅ ÆÁÊÌÙ × \"%s\": ÉÇÎÏÒÉÒÏ×ÁÎÏ"
+msgstr "невозможно прочитать вÑе файлы в «%s»: игнорировано"
-#: locale/programs/locarchive.c:1346
+#: locale/programs/locarchive.c:1367
#, c-format
msgid "locale \"%s\" not in archive"
-msgstr "ÌÏËÁÌØ \"%s\" ÏÔÓÕÔÓÔ×ÕÅÔ × ÁÒÈÉ×Å"
+msgstr "локаль «%s» отÑутÑтвует в архиве"
-#: locale/programs/locfile.c:131
+#: locale/programs/locfile.c:132
#, c-format
msgid "argument to `%s' must be a single character"
-msgstr "ÁÒÇÕÍÅÎÔ ÄÌÑ `%s' ÄÏÌÖÅÎ ÂÙÔØ ÏÄÎÉÍ ÚÎÁËÏÍ"
+msgstr "аргумент Ð´Ð»Ñ Â«%s» должен быть одним знаком"
-#: locale/programs/locfile.c:251
+#: locale/programs/locfile.c:252
msgid "syntax error: not inside a locale definition section"
-msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ: ×ÎÅ ÓÅËÃÉÉ ÏÐÒÅÄÅÌÅÎÉÑ ÌÏËÁÌÉ"
+msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: вне Ñекции Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸"
-#: locale/programs/locfile.c:625
+#: locale/programs/locfile.c:626
#, c-format
msgid "cannot open output file `%s' for category `%s'"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ `%s' ÄÌÑ ËÁÔÅÇÏÒÉÉ `%s'"
+msgstr "невозможно открыть выходной файл «%s» Ð´Ð»Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¸ «%s»"
-#: locale/programs/locfile.c:649
+#: locale/programs/locfile.c:650
#, c-format
msgid "failure while writing data for category `%s'"
-msgstr "ÏÛÉÂËÁ ÐÒÉ ÚÁÐÉÓÉ ÄÁÎÎÙÈ ÄÌÑ ËÁÔÅÇÏÒÉÉ`%s'"
+msgstr "ошибка при запиÑи данных Ð´Ð»Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¸Â«%s»"
-#: locale/programs/locfile.c:745
+#: locale/programs/locfile.c:746
#, c-format
msgid "cannot create output file `%s' for category `%s'"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ `%s' ÄÌÑ ËÁÔÅÇÏÒÉÉ `%s'"
+msgstr "невозможно Ñоздать выходной файл «%s» Ð´Ð»Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¸ «%s»"
-#: locale/programs/locfile.c:781
-msgid "expect string argument for `copy'"
-msgstr "ÄÌÑ `copy' ÏÖÉÄÁÅÔÓÑ ÁÒÇÕÍÅÎÔ-ÓÔÒÏËÁ"
+#: locale/programs/locfile.c:782
+msgid "expecting string argument for `copy'"
+msgstr "Ð´Ð»Ñ Â«copy» ожидаетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚-Ñтрока"
-#: locale/programs/locfile.c:785
+#: locale/programs/locfile.c:786
msgid "locale name should consist only of portable characters"
-msgstr "ÉÍÑ ÌÏËÁÌÉ ÄÏÌÖÎÏ ÓÏÓÔÏÑÔØ ÔÏÌØËÏ ÉÚ ÐÅÒÅÎÏÓÉÍÙÈ ÚÎÁËÏ×"
+msgstr "Ð¸Ð¼Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ должно ÑоÑтоÑÑ‚ÑŒ только из переноÑимых знаков"
-#: locale/programs/locfile.c:804
+#: locale/programs/locfile.c:805
msgid "no other keyword shall be specified when `copy' is used"
-msgstr "ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ `copy' ÎÅÌØÚÑ ÚÁÄÁ×ÁÔØ ÄÒÕÇÉÅ ËÌÀÞÅ×ÙÅ ÓÌÏ×Á"
+msgstr "при иÑпользовании «copy» Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ð²Ð°Ñ‚ÑŒ другие ключевые Ñлова"
+
+#: locale/programs/locfile.c:819
+#, c-format
+msgid "`%1$s' definition does not end with `END %1$s'"
+msgstr "определение «%1$s» не заканчиваетÑÑ Ð½Ð° «END %1$s»"
#: locale/programs/repertoire.c:229 locale/programs/repertoire.c:270
#: locale/programs/repertoire.c:295
#, c-format
msgid "syntax error in repertoire map definition: %s"
-msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ÏÐÒÅÄÅÌÅÎÉÉ ÏÔÏÂÒÁÖÅÎÉÑ ÒÅÐÅÒÔÕÁÒÁ: %s"
+msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в определении Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¿ÐµÑ€Ñ‚ÑƒÐ°Ñ€Ð°: %s"
#: locale/programs/repertoire.c:271
msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
-msgstr "ÎÅ ÚÁÄÁÎÏ ÚÎÁÞÅÎÉÅ <Uxxxx> ÉÌÉ <Uxxxxxxxx>"
+msgstr "не задано значение <Uxxxx> или <Uxxxxxxxx>"
#: locale/programs/repertoire.c:331
#, c-format
msgid "cannot save new repertoire map"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÈÒÁÎÉÔØ ÎÏ×ÏÅ ÏÔÏÂÒÁÖÅÎÉÅ ÒÅÐÅÒÔÕÁÒÁ"
+msgstr "невозможно Ñохранить новое отображение репертуара"
#: locale/programs/repertoire.c:342
#, c-format
msgid "repertoire map file `%s' not found"
-msgstr "ÆÁÊÌ ÏÔÏÂÒÁÖÅÎÉÑ ÒÅÐÅÒÔÕÁÒÁ `%s' ÎÅ ÎÁÊÄÅÎ"
-
-#: locale/programs/repertoire.c:449
-#, c-format
-msgid "<%s> and <%s> are invalid names for range"
-msgstr "<%s> É <%s> ÎÅ Ñ×ÌÑÀÔÓÑ ÄÏÐÕÓÔÉÍÙÍÉ ÉÍÅÎÁÍÉ ÄÉÁÐÁÚÏÎÁ"
-
-#: locale/programs/repertoire.c:456
-msgid "upper limit in range is not smaller then lower limit"
-msgstr "×ÅÒÈÎÑÑ ÇÒÁÎÉÃÁ ÄÉÁÐÁÚÏÎÁ ÎÅ ÍÅÎØÛÅ ÎÉÖÎÅÊ"
+msgstr "файл Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¿ÐµÑ€Ñ‚ÑƒÐ°Ñ€Ð° «%s» не найден"
#: login/programs/pt_chown.c:74
#, c-format
msgid "Set the owner, group and access permission of the slave pseudo terminal corresponding to the master pseudo terminal passed on file descriptor `%d'. This is the helper program for the `grantpt' function. It is not intended to be run directly from the command line.\n"
-msgstr "õÓÔÁÎÁ×ÌÉ×ÁÅÔ ×ÌÁÄÅÌØÃÁ, ÇÒÕÐÐÕ É ÐÒÁ×Á ÄÏÓÔÕÐÁ ÄÌÑ ÐÏÄÞÉÎÅÎÎÏÇÏ ÐÓÅ×ÄÏÔÅÒÍÉÎÁÌÁ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÏÓÎÏ×ÎÏÍÕ ÐÓÅ×ÄÏÔÅÒÍÉÎÁÌÕ, ÐÅÒÅÄÁÎÎÏÇÏ ÐÏ ÄÅÓËÒÉÐÔÏÒÕ ÆÁÊÌÁ `%d'. üÔÏ ×ÓÐÏÍÏÇÁÔÅÌØÎÁÑ ÐÒÏÇÒÁÍÍÁ ÄÌÑ ÆÕÎËÃÉÉ `grantpt'. ïÎÁ ÎÅ ÐÒÅÄÎÁÚÎÁÞÅÎÁ ÄÌÑ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏÇÏ ÚÁÐÕÓËÁ ÉÚ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ.\n"
+msgstr "УÑтанавливает владельца, группу и права доÑтупа Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‡Ð¸Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ пÑевдотерминала, ÑоответÑтвующего оÑновному пÑевдотерминалу, переданного по деÑкриптору файла «%d». Это вÑÐ¿Ð¾Ð¼Ð¾Ð³Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ «grantpt». Она не предназначена Ð´Ð»Ñ Ð½ÐµÐ¿Ð¾ÑредÑтвенного запуÑка из командной Ñтроки.\n"
#: login/programs/pt_chown.c:84
#, c-format
@@ -2776,47 +2788,47 @@ msgid ""
"\n"
"%s"
msgstr ""
-"÷ÌÁÄÅÌÅà ÕÓÔÁÎÁ×ÌÅÎ × ÔÅËÕÝÅÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ, ÇÒÕÐÐÁ ÕÓÔÁÎÁ×ÌÅÎÁ × `%s', ÐÒÁ×Á ÄÏÓÔÕÐÁ ÕÓÔÁÎÁ×ÌÅÎÙ × `%o'.\n"
+"Владелец уÑтанавлен в текущего пользователÑ, группа уÑтанавлена в «%s», права доÑтупа уÑтанавлены в «%o».\n"
"\n"
"%s"
#: login/programs/pt_chown.c:161
#, c-format
msgid "too many arguments"
-msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÁÒÇÕÍÅÎÔÏ×"
+msgstr "Ñлишком много аргументов"
#: login/programs/pt_chown.c:169
#, c-format
msgid "needs to be installed setuid `root'"
-msgstr "ÎÅÏÂÈÏÄÉÍÏ ÕÓÔÁÎÏ×ÉÔØ Ó setuid `root'"
+msgstr "необходимо уÑтановить Ñ setuid «root»"
-#: malloc/mcheck.c:324
+#: malloc/mcheck.c:330
msgid "memory is consistent, library is buggy\n"
-msgstr "ÐÁÍÑÔØ × ÈÏÒÏÛÅÍ ÓÏÓÔÏÑÎÉÉ, ÏÛÉÂËÉ × ÂÉÂÌÉÏÔÅËÅ\n"
+msgstr "памÑÑ‚ÑŒ в хорошем ÑоÑтоÑнии, ошибки в библиотеке\n"
-#: malloc/mcheck.c:327
+#: malloc/mcheck.c:333
msgid "memory clobbered before allocated block\n"
-msgstr "ÐÁÍÑÔØ ÚÁÔÅÒÔÁ ÐÅÒÅÄ ×ÙÄÅÌÅÎÎÙÍ ÂÌÏËÏÍ\n"
+msgstr "памÑÑ‚ÑŒ затерта перед выделенным блоком\n"
-#: malloc/mcheck.c:330
+#: malloc/mcheck.c:336
msgid "memory clobbered past end of allocated block\n"
-msgstr "ÐÁÍÑÔØ ÚÁÔÅÒÔÁ ÐÏÓÌÅ ËÏÎÃÁ ×ÙÄÅÌÅÎÎÏÇÏ ÂÌÏËÁ\n"
+msgstr "памÑÑ‚ÑŒ затерта поÑле конца выделенного блока\n"
-#: malloc/mcheck.c:333
+#: malloc/mcheck.c:339
msgid "block freed twice\n"
-msgstr "ÂÌÏË ÏÓ×ÏÂÏÖÄÅÎ Ä×ÁÖÄÙ\n"
+msgstr "блок оÑвобожден дважды\n"
-#: malloc/mcheck.c:336
+#: malloc/mcheck.c:342
msgid "bogus mcheck_status, library is buggy\n"
-msgstr "ÎÅÁÄÅË×ÁÔÎÙÊ mcheck_status, × ÂÉÂÌÉÏÔÅËÅ ÏÛÉÂËÉ\n"
+msgstr "неадекватный mcheck_status, в библиотеке ошибки\n"
#: malloc/memusage.sh:27
-msgid "Try `memusage --help' for more information."
-msgstr "ðÏÐÒÏÂÕÊÔÅ `memusage --help' ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÇÏ ÏÐÉÓÁÎÉÑ."
+msgid "Try \\`memusage --help' for more information."
+msgstr "Попробуйте «memusage --help» Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подробного опиÑаниÑ."
#: malloc/memusage.sh:33
-msgid "memusage: option `$1' requires an argument"
-msgstr "memusage: ËÌÀÞ `$1' ÔÒÅÂÕÅÔ ÁÒÇÕÍÅÎÔ"
+msgid "memusage: option \\`$1' requires an argument"
+msgstr "memusage: ключ «$1» требует аргумент"
#: malloc/memusage.sh:39
msgid ""
@@ -2828,7 +2840,7 @@ msgid ""
" -d,--data=FILE Generate binary data file and store it in FILE\n"
" -u,--unbuffered Don't buffer output\n"
" -b,--buffer=SIZE Collect SIZE entries before writing them out\n"
-" --no-timer Don't collect additional information though timer\n"
+" --no-timer Don't collect additional information through timer\n"
" -m,--mmap Also trace mmap & friends\n"
"\n"
" -?,--help Print this help and exit\n"
@@ -2845,416 +2857,411 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
-"éÓÐÏÌØÚÏ×ÁÎÉÅ: memusage [ëìàþ]... ðòïçòáííá [ëìàþ-ðòïçòáííù]...\n"
-"ðÒÏÆÉÌÉÒÕÅÔ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÐÁÍÑÔÉ ðòïçòáííïê.\n"
+"ИÑпользование: memusage [КЛЮЧ]... ПРОГРÐММР[КЛЮЧ-ПРОГРÐММЫ]...\n"
+"Профилирует иÑпользование памÑти ПРОГРÐММОЙ.\n"
"\n"
-" -n,--progname=éíñ éÍÑ ÐÒÏÇÒÁÍÍÎÏÇÏ ÆÁÊÌÁ ÄÌÑ ÐÒÏÆÉÌÉÒÏ×ËÉ\n"
-" -p,--png=æáêì óÏÚÄÁÔØ PNG-ÇÒÁÆÉË É ÚÁÐÉÓÁÔØ ÅÇÏ × æáêì\n"
-" -d,--data=æáêì óÏÚÄÁÔØ ÂÉÎÁÒÎÙÊ ÆÁÊÌ ÄÁÎÎÙÈ É ÚÁÐÉÓÁÔØ ÅÇÏ æáêì\n"
-" -u,--unbuffered îÅ ÂÕÆÅÒÉÒÏ×ÁÔØ ×Ù×ÏÄ\n"
-" -b,--buffer=þéóìï óÏÂÒÁÔØ ÚÁÄÁÎÎÏÅ þéóìï ×ÈÏÖÄÅÎÉÊ ÐÅÒÅÄ ÚÁÐÉÓØÀ\n"
-" --no-timer îÅ ÓÏÂÉÒÁÔØ ÄÏÐÏÌÎÉÔÅÌØÎÕÀ ÉÎÆÏÒÍÁÃÉÀ ÐÏ ÔÁÊÍÅÒÕ\n"
-" -m,--mmap ôÒÁÓÓÉÒÏ×ÁÔØ ÔÁËÖÅ mmap É ÅÅ ÄÒÕÚÅÊ\n"
+" -n,--progname=ИМЯ Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° программы Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²ÐºÐ¸\n"
+" -p,--png=ФÐЙЛ Создать PNG-график и запиÑать его в ФÐЙЛ\n"
+" -d,--data=ФÐЙЛ Создать двоичный файл данных и запиÑать его ФÐЙЛ\n"
+" -u,--unbuffered Ðе буферизировать вывод\n"
+" -b,--buffer=ЧИСЛО Собрать заданное ЧИСЛО вхождений перед запиÑью\n"
+" --no-timer Ðе Ñобирать дополнительную информацию по таймеру\n"
+" -m,--mmap ТраÑÑировать также mmap и её друзей\n"
"\n"
-" -?,--help îÁÐÅÞÁÔÁÔØ ÜÔÕ ÓÐÒÁ×ËÕ É ×ÙÊÔÉ\n"
-" --usage ðÏËÁÚÁÔØ ËÒÁÔËÕÀ ÓÐÒÁ×ËÕ Ï ÉÓÐÏÌØÚÏ×ÁÎÉÉ\n"
-" -V,--version îÁÐÅÞÁÔÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ\n"
+" -?,--help Ðапечатать Ñту Ñправку и выйти\n"
+" --usage Показать краткую Ñправку об иÑпользовании\n"
+" -V,--version Ðапечатать информацию о верÑии и выйти\n"
"\n"
-" óÌÅÄÕÀÝÉÅ ËÌÀÞÉ ÐÒÉÍÅÎÉÍÙ ÔÏÌØËÏ ÐÒÉ ÇÅÎÅÒÉÒÏ×ÁÎÉÉ ÇÒÁÆÉÞÅÓËÏÇÏ ×Ù×ÏÄÁ:\n"
-" -t,--time-based óÄÅÌÁÔØ ÌÉÎÅÊÎÙÊ ÐÏ ×ÒÅÍÅÎÉ ÇÒÁÆÉË\n"
-" -T,--total îÁÞÅÒÔÉÔØ ÔÁËÖÅ ÉÔÏÇÏ×ÙÊ ÇÒÁÆÉË ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÐÁÍÑÔÉ\n"
-" --title=óôòïëá éÓÐÏÌØÚÏ×ÁÔØ óôòïëõ × ËÁÞÅÓÔ×Å ÚÁÇÏÌÏ×ËÁ ÇÒÁÆÉËÁ\n"
-" -x,--x-size=þéóìï óÄÅÌÁÔØ ÇÒÁÆÉË ×ÙÓÏÔÏÊ × ÚÁÄÁÎÎÏÅ þéóìï ÐÉËÓÅÌÏ×\n"
-" -y,--y-size=þéóìï óÄÅÌÁÔØ ÇÒÁÆÉË ÛÉÒÉÎÏÊ × ÚÁÄÁÎÎÏÅ þéóìï ÐÉËÓÅÌÏ×\n"
+" Следующие ключи применимы только при генерировании графичеÑкого вывода:\n"
+" -t,--time-based Сделать линейный по времени график\n"
+" -T,--total Ðачертить также итоговый график иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°Ð¼Ñти\n"
+" --title=СТРОКРИÑпользовать СТРОКУ в качеÑтве заголовка графика\n"
+" -x,--x-size=ЧИСЛО Сделать график выÑотой в заданное ЧИСЛО пикÑелов\n"
+" -y,--y-size=ЧИСЛО Сделать график шириной в заданное ЧИСЛО пикÑелов\n"
"\n"
+"Ðргументы, обÑзательные Ð´Ð»Ñ Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… ключей, обÑзательны и длÑ\n"
+"ÑоответÑтвующих коротких.\n"
"\n"
-"áÒÇÕÍÅÎÔÙ, ÏÂÑÚÁÔÅÌØÎÙÅ ÄÌÑ ÄÌÉÎÎÙÈ ËÌÀÞÅÊ, ÏÂÑÚÁÔÅÌØÎÙ É ÄÌÑ\n"
-"ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ËÏÒÏÔËÉÈ.\n"
-"\n"
-"éÎÓÔÒÕËÃÉÉ ÐÏ ÓÏÏÂÝÅÎÉÀ Ï ÏÛÉÂËÁÈ ÓÍÏÔÒÉÔÅ ÎÁ\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: malloc/memusage.sh:90
+#: malloc/memusage.sh:101
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
" [--title=STRING] [--x-size=SIZE] [--y-size=SIZE]\n"
" PROGRAM [PROGRAMOPTION]..."
msgstr ""
-"óÉÎÔÁËÓÉÓ: memusage [--data=æáêì] [--progname=éíñ] [--png=æáêì] [--unbuffered]\n"
-" [--buffer=þéóìï] [--no-timer] [--time-based] [--total]\n"
-" [--title=óôòïëá] [--x-size=þéóìï] [--y-size=þéóìï]\n"
-" ðòïçòáííá [ëìàþ-ðòïçòáííù]..."
+"СинтакÑиÑ: memusage [--data=ФÐЙЛ] [--progname=ИМЯ] [--png=ФÐЙЛ] [--unbuffered]\n"
+" [--buffer=ЧИСЛО] [--no-timer] [--time-based] [--total]\n"
+" [--title=СТРОКÐ] [--x-size=ЧИСЛО] [--y-size=ЧИСЛО]\n"
+" ПРОГРÐММР[КЛЮЧ-ПРОГРÐММЫ]..."
-#: malloc/memusage.sh:182
-msgid "memusage: option `${1##*=}' is ambiguous"
-msgstr "memusage: ËÌÀÞ `${1##*=}' ÎÅÏÄÎÏÚÎÁÞÅÎ"
+#: malloc/memusage.sh:193
+msgid "memusage: option \\`${1##*=}' is ambiguous"
+msgstr "memusage: ключ «${1##*=}» неоднозначен"
-#: malloc/memusage.sh:191
-msgid "memusage: unrecognized option `$1'"
-msgstr "memusage: ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ËÌÀÞ `$1'"
+#: malloc/memusage.sh:202
+msgid "memusage: unrecognized option \\`$1'"
+msgstr "memusage: нераÑпознанный ключ «$1»"
-#: malloc/memusage.sh:204
+#: malloc/memusage.sh:215
msgid "No program name given"
-msgstr "îÅ ÚÁÄÁÎÏ ÉÍÑ ÐÒÏÇÒÁÍÍÙ"
+msgstr "Ðе задано Ð¸Ð¼Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹"
-#: malloc/memusagestat.c:53
+#: malloc/memusagestat.c:57
msgid "Name output file"
-msgstr "éÍÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ"
+msgstr "Ð˜Ð¼Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла"
-#: malloc/memusagestat.c:54
+#: malloc/memusagestat.c:58
msgid "Title string used in output graphic"
-msgstr "úÁÇÏÌÏ×ÏË ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÇÒÁÆÉËÁ"
+msgstr "Заголовок Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ графика"
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:59
msgid "Generate output linear to time (default is linear to number of function calls)"
-msgstr "çÅÎÅÒÉÒÏ×ÁÔØ ×Ù×ÏÄ ÌÉÎÅÊÎÏ ÏÔÎÏÓÉÔÅÌØÎÏ ×ÒÅÍÅÎÉ (ÐÏ ÕÍÏÌÞÁÎÉÀ ÌÉÎÅÊÎÏ ÏÔÎÏÓÉÔÅÌØÎÏ ÞÉÓÌÕ ×ÙÚÏ×Ï× ÆÕÎËÃÉÊ)"
+msgstr "Генерировать вывод линейно отноÑительно времени (по умолчанию линейно отноÑительно чиÑлу вызовов функций)"
-#: malloc/memusagestat.c:57
+#: malloc/memusagestat.c:61
msgid "Also draw graph for total memory consumption"
-msgstr "ðÏÓÔÒÏÉÔØ ÔÁËÖÅ ÇÒÁÆÉË ÉÔÏÇÏ×ÏÇÏ ÐÏÔÒÅÂÌÅÎÉÑ ÐÁÍÑÔÉ"
+msgstr "ПоÑтроить также график итогового Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти"
-#: malloc/memusagestat.c:58
-msgid "make output graphic VALUE pixel wide"
-msgstr "ÒÉÓÏ×ÁÔØ ÇÒÁÆÉË ÛÉÒÉÎÏÊ × VALUE ÐÉËÓÅÌÏ×"
+#: malloc/memusagestat.c:62
+msgid "Make output graphic VALUE pixels wide"
+msgstr "РиÑовать график шириной в VALUE пикÑелов"
-#: malloc/memusagestat.c:59
-msgid "make output graphic VALUE pixel high"
-msgstr "ÒÉÓÏ×ÁÔØ ÇÒÁÆÉË ×ÙÓÏÔÏÊ × VALUE ÐÉËÓÅÌÏ×"
+#: malloc/memusagestat.c:63
+msgid "Make output graphic VALUE pixels high"
+msgstr "РиÑовать график выÑотой в VALUE пикÑелов"
-#: malloc/memusagestat.c:64
+#: malloc/memusagestat.c:68
msgid "Generate graphic from memory profiling data"
-msgstr "óÇÅÎÅÒÉÒÏ×ÁÔØ ÇÒÁÆÉË ÐÏ ÄÁÎÎÙÍ ÐÒÏÆÉÌÉÒÏ×ÁÎÉÑ ÐÁÍÑÔÉ"
+msgstr "Сгенерировать график по данным Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°Ð¼Ñти"
-#: malloc/memusagestat.c:67
+#: malloc/memusagestat.c:71
msgid "DATAFILE [OUTFILE]"
-msgstr "æáêì-äáîîùè [÷ùèïäîïê-æáêì]"
+msgstr "ФÐЙЛ-ДÐÐÐЫХ [ВЫХОДÐОЙ-ФÐЙЛ]"
-#: misc/error.c:118 timezone/zic.c:396
+#: misc/error.c:118
msgid "Unknown system error"
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ"
+msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ ÑиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
#: nis/nis_callback.c:189
msgid "unable to free arguments"
-msgstr "ÎÅ ÕÄÁÌÏÓØ ×ÙÓ×ÏÂÏÄÉÔØ ÚÁÎÑÔÕÀ ÁÒÇÕÍÅÎÔÁÍÉ ÐÁÍÑÔØ"
+msgstr "не удалоÑÑŒ выÑвободить занÑтую аргументами памÑÑ‚ÑŒ"
-#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
#: sysdeps/gnu/errlist.c:20
msgid "Success"
-msgstr "ðÏÂÅÄÁ"
+msgstr "Победа"
#: nis/nis_error.h:2
msgid "Probable success"
-msgstr "÷ÅÒÏÑÔÎÙÊ ÕÓÐÅÈ"
+msgstr "ВероÑтный уÑпех"
#: nis/nis_error.h:3
msgid "Not found"
-msgstr "îÅ ÎÁÊÄÅÎÏ"
+msgstr "Ðе найдено"
#: nis/nis_error.h:4
msgid "Probably not found"
-msgstr "÷ÅÒÏÑÔÎÏ, ÎÅ ÎÁÊÄÅÎÏ"
+msgstr "ВероÑтно, не найдено"
#: nis/nis_error.h:5
msgid "Cache expired"
-msgstr "÷ÒÅÍÑ ÖÉÚÎÉ ËÜÛÁ ÉÓÔÅËÌÏ "
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¶Ð¸Ð·Ð½Ð¸ кÑша иÑтекло "
#: nis/nis_error.h:6
msgid "NIS+ servers unreachable"
-msgstr "óÌÕÖÂÙ NIS+ ÎÅÄÏÓÔÉÖÉÍÙ"
+msgstr "Службы NIS+ недоÑтижимы"
#: nis/nis_error.h:7
msgid "Unknown object"
-msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÏÂßÅËÔ"
+msgstr "ÐеизвеÑтный объект"
#: nis/nis_error.h:8
msgid "Server busy, try again"
-msgstr "óÅÒ×ÅÒ ÚÁÎÑÔ, ÐÏÐÒÏÂÕÊÔÅ ÅÝÅ ÒÁÚ"
+msgstr "Сервер занÑÑ‚, попробуйте еще раз"
#: nis/nis_error.h:9
msgid "Generic system error"
-msgstr "ïÂÝÁÑ ÏÛÉÂËÁ ÓÉÓÔÅÍÙ"
+msgstr "ÐžÐ±Ñ‰Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° ÑиÑтемы"
#: nis/nis_error.h:10
msgid "First/next chain broken"
-msgstr "òÁÚÏÒ×ÁÎÁ ÃÅÐÏÞËÁ ÐÅÒ×ÙÊ/ÓÌÅÄÕÀÝÉÊ"
+msgstr "Разорвана цепочка первый/Ñледующий"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
-msgstr "ïÔËÁÚÁÎÏ × ÄÏÓÔÕÐÅ"
+msgstr "Отказано в доÑтупе"
#: nis/nis_error.h:12
msgid "Not owner"
-msgstr "îÅ ×ÌÁÄÅÌÅÃ"
+msgstr "Ðе владелец"
#: nis/nis_error.h:13
msgid "Name not served by this server"
-msgstr "éÍÑ ÎÅ ÏÂÓÌÕÖÉ×ÁÅÔÓÑ ÄÁÎÎÙÍ ÓÅÒ×ÅÒÏÍ"
+msgstr "Ð˜Ð¼Ñ Ð½Ðµ обÑлуживаетÑÑ Ð´Ð°Ð½Ð½Ñ‹Ð¼ Ñервером"
#: nis/nis_error.h:14
msgid "Server out of memory"
-msgstr "ðÁÍÑÔØ ÎÁ ÓÅÒ×ÅÒÅ ÉÓÞÅÒÐÁÎÁ"
+msgstr "ПамÑÑ‚ÑŒ на Ñервере иÑчерпана"
#: nis/nis_error.h:15
msgid "Object with same name exists"
-msgstr "óÕÝÅÓÔ×ÕÅÔ ÏÂßÅËÔ Ó ÔÁËÉÍ ÖÅ ÉÍÅÎÅÍ"
+msgstr "СущеÑтвует объект Ñ Ñ‚Ð°ÐºÐ¸Ð¼ же именем"
#: nis/nis_error.h:16
msgid "Not master server for this domain"
-msgstr "üÔÏ ÎÅ ÍÁÓÔÅÒ-ÓÅÒ×ÅÒ ÄÌÑ ÄÁÎÎÏÇÏ ÄÏÍÅÎÁ"
+msgstr "Это не маÑтер-Ñервер Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ домена"
#: nis/nis_error.h:17
msgid "Invalid object for operation"
-msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÄÌÑ ÄÁÎÎÏÊ ÏÐÅÒÁÃÉÉ ÏÂßÅËÔ"
+msgstr "ÐедопуÑтимый Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ операции объект"
#: nis/nis_error.h:18
msgid "Malformed name, or illegal name"
-msgstr "îÅÐÒÁ×ÉÌØÎÏ ÕËÁÚÁÎÎÏÅ ÉÌÉ ÎÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ"
+msgstr "Ðеправильно указанное или недопуÑтимое имÑ"
#: nis/nis_error.h:19
msgid "Unable to create callback"
-msgstr ""
+msgstr "Ðе удалоÑÑŒ Ñоздать обратный вызов"
#: nis/nis_error.h:20
msgid "Results sent to callback proc"
-msgstr ""
+msgstr "Результат отправлен процедуре обратного вызова"
#: nis/nis_error.h:21
msgid "Not found, no such name"
-msgstr "îÅ ÎÁÊÄÅÎÏ, ÎÅÔ ÔÁËÏÇÏ ÉÍÅÎÉ"
+msgstr "Ðе найдено, нет такого имени"
#: nis/nis_error.h:22
msgid "Name/entry isn't unique"
-msgstr "éÍÑ/ÚÁÐÉÓØ ÎÅ ÕÎÉËÁÌØÎÏ"
+msgstr "ИмÑ/запиÑÑŒ не уникально"
#: nis/nis_error.h:23
msgid "Modification failed"
-msgstr "íÏÄÉÆÉËÁÃÉÑ ÎÅ ÕÄÁÌÁÓØ"
+msgstr "ÐœÐ¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð½Ðµ удалаÑÑŒ"
#: nis/nis_error.h:24
msgid "Database for table does not exist"
-msgstr "âÁÚÁ ÄÁÎÎÙÈ ÄÌÑ ÔÁÂÌÉÃÙ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ"
+msgstr "База данных Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ не ÑущеÑтвует"
#: nis/nis_error.h:25
msgid "Entry/table type mismatch"
-msgstr "îÅÓÏÏÔ×ÅÔÓÔ×ÉÅ ÔÉÐÏ× ÚÁÐÉÓÉ/ÔÁÂÌÉÃÙ"
+msgstr "ÐеÑоответÑтвие типов запиÑи/таблицы"
#: nis/nis_error.h:26
msgid "Link points to illegal name"
-msgstr "óÓÙÌËÁ ÕËÁÚÙ×ÁÅÔ ÎÁ ÎÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ"
+msgstr "СÑылка указывает на недопуÑтимое имÑ"
#: nis/nis_error.h:27
msgid "Partial success"
-msgstr "þÁÓÔÉÞÎÙÊ ÕÓÐÅÈ"
+msgstr "ЧаÑтичный уÑпех"
#: nis/nis_error.h:28
msgid "Too many attributes"
-msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÁÔÒÉÂÕÔÏ×"
+msgstr "Слишком много атрибутов"
#: nis/nis_error.h:29
msgid "Error in RPC subsystem"
-msgstr "ïÛÉÂËÁ × ÐÏÄÓÉÓÔÅÍÅ RPC"
+msgstr "Ошибка в подÑиÑтеме RPC"
#: nis/nis_error.h:30
msgid "Missing or malformed attribute"
-msgstr "ðÒÏÐÕÝÅÎÎÙÊ ÉÌÉ ÎÅÐÒÁ×ÉÌØÎÏ ÕËÁÚÁÎÎÙÊ ÁÔÒÉÂÕÔ"
+msgstr "Пропущенный или неправильно указанный атрибут"
#: nis/nis_error.h:31
msgid "Named object is not searchable"
-msgstr "éÍÅÎÏ×ÁÎÎÙÊ ÏÂßÅËÔ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÐÏÉÓË"
+msgstr "Именованный объект не поддерживает поиÑк"
#: nis/nis_error.h:32
msgid "Error while talking to callback proc"
-msgstr ""
+msgstr "Ошибка вызова процедуры обратного вызова"
#: nis/nis_error.h:33
msgid "Non NIS+ namespace encountered"
-msgstr "ïÂÎÁÒÕÖÅÎÏ ÎÅ-NIS+ ÐÒÏÓÔÒÁÎÓÔ×Ï ÉÍÅÎ"
+msgstr "Обнаружено не-NIS+ проÑтранÑтво имен"
#: nis/nis_error.h:34
msgid "Illegal object type for operation"
-msgstr "îÅ ÄÏÐÕÓÔÉÍÙÊ ÄÌÑ ÏÐÅÒÁÃÉÉ ÔÉÐ ÏÂßÅËÔÁ"
+msgstr "Ðе допуÑтимый Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸ тип объекта"
#: nis/nis_error.h:35
msgid "Passed object is not the same object on server"
-msgstr "ðÅÒÅÄÁÎÎÙÊ ÏÂßÅËÔ ÎÅ ÔÏÇÏ ÖÅ ÔÉÐÁ, ÞÔÏ ÏÂßÅËÔ ÎÁ ÓÅÒ×ÅÒÅ"
+msgstr "Переданный объект не того же типа, что объект на Ñервере"
#: nis/nis_error.h:36
msgid "Modify operation failed"
-msgstr "ïÐÅÒÁÃÉÑ ÍÏÄÉÆÉËÁÃÉÉ ÎÅÕÓÐÅÛÎÁ"
+msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ неуÑпешна"
#: nis/nis_error.h:37
msgid "Query illegal for named table"
-msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÚÁÐÒÏÓ ÄÌÑ ÉÍÅÎÏ×ÁÎÎÏÊ ÔÁÂÌÉÃÙ"
+msgstr "ÐедопуÑтимый Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¹ таблицы"
#: nis/nis_error.h:38
msgid "Attempt to remove a non-empty table"
-msgstr "ðÏÐÙÔËÁ ÕÄÁÌÉÔØ ÎÅÐÕÓÔÕÀ ÔÁÂÌÉÃÕ"
+msgstr "Попытка удалить непуÑтую таблицу"
#: nis/nis_error.h:39
msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
-msgstr "ïÛÉÂËÁ ÏÂÒÁÝÅÎÉÑ Ë ÆÁÊÌÕ ÈÏÌÏÄÎÏÇÏ ÚÁÐÕÓËÁ NIS+. õÓÔÁÎÏ×ÌÅÎ ÌÉ NIS+?"
+msgstr "Ошибка Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ðº файлу холодного запуÑка NIS+. УÑтановлен ли NIS+?"
#: nis/nis_error.h:40
msgid "Full resync required for directory"
-msgstr "äÌÑ ËÁÔÁÌÏÇÁ ÔÒÅÂÕÅÔÓÑ ÐÏÌÎÁÑ ÒÅÓÉÎÈÒÏÎÉÚÁÃÉÑ"
+msgstr "Ð”Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° требуетÑÑ Ð¿Ð¾Ð»Ð½Ð°Ñ Ñ€ÐµÑинхронизациÑ"
#: nis/nis_error.h:41
msgid "NIS+ operation failed"
-msgstr "ïÐÅÒÁÃÉÑ NIS+ ÎÅÕÓÐÅÛÎÁ"
+msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ NIS+ неуÑпешна"
#: nis/nis_error.h:42
msgid "NIS+ service is unavailable or not installed"
-msgstr "óÌÕÖÂÁ NIS+ ÎÅÄÏÓÔÕÐÎÁ ÉÌÉ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ"
+msgstr "Служба NIS+ недоÑтупна или не уÑтановлена"
#: nis/nis_error.h:43
msgid "Yes, 42 is the meaning of life"
-msgstr "äÁ, 42 -- ÜÔÏ ÓÍÙÓÌ ÖÉÚÎÉ"
+msgstr "Да, 42 -- Ñто ÑмыÑл жизни"
#: nis/nis_error.h:44
msgid "Unable to authenticate NIS+ server"
-msgstr "îÅ ÕÄÁÌÏÓØ ÁÕÔÅÎÆÉÃÉÒÏ×ÁÔØ ÓÅÒ×ÅÒ NIS+"
+msgstr "Ðе удалоÑÑŒ аутенфицировать Ñервер NIS+"
#: nis/nis_error.h:45
msgid "Unable to authenticate NIS+ client"
-msgstr "îÅ ÕÄÁÌÏÓØ ÁÕÔÅÎÆÉÃÉÒÏ×ÁÔØ ËÌÉÅÎÔ NIS+"
+msgstr "Ðе удалоÑÑŒ аутенфицировать клиент NIS+"
#: nis/nis_error.h:46
msgid "No file space on server"
-msgstr "îÁ ÓÅÒ×ÅÒÅ ÎÅÔ ÄÉÓËÏ×ÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á"
+msgstr "Ðа Ñервере нет диÑкового проÑтранÑтва"
#: nis/nis_error.h:47
msgid "Unable to create process on server"
-msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÐÒÏÃÅÓÓ ÎÁ ÓÅÒ×ÅÒÅ"
+msgstr "Ðе удалоÑÑŒ Ñоздать процеÑÑ Ð½Ð° Ñервере"
#: nis/nis_error.h:48
msgid "Master server busy, full dump rescheduled."
-msgstr "íÁÓÔÅÒ-ÓÅÒ×ÅÒ ÚÁÎÑÔ, ÚÁÐÌÁÎÉÒÏ×ÁÎ ÐÏÌÎÙÊ ÄÁÍÐ."
+msgstr "МаÑтер-Ñервер занÑÑ‚, запланирован полный дамп."
#: nis/nis_local_names.c:122
#, c-format
msgid "LOCAL entry for UID %d in directory %s not unique\n"
-msgstr "úÁÐÉÓØ LOCAL ÄÌÑ UID %d × ËÁÔÁÌÏÇÅ %s ÎÅ ÕÎÉËÁÌØÎÁ\n"
+msgstr "ЗапиÑÑŒ LOCAL Ð´Ð»Ñ UID %d в каталоге %s не уникальна\n"
#: nis/nis_print.c:51
msgid "UNKNOWN"
-msgstr "îåéú÷åóôîï"
+msgstr "ÐЕИЗВЕСТÐО"
#: nis/nis_print.c:109
msgid "BOGUS OBJECT\n"
-msgstr "îåáäåë÷áôîùê ïâÿåëô\n"
+msgstr "ÐЕÐДЕКВÐТÐЫЙ ОБЪЕКТ\n"
#: nis/nis_print.c:112
msgid "NO OBJECT\n"
-msgstr "îåô ïâÿåëôá\n"
+msgstr "ÐЕТ ОБЪЕКТÐ\n"
#: nis/nis_print.c:115
msgid "DIRECTORY\n"
-msgstr "ëáôáìïç\n"
+msgstr "КÐТÐЛОГ\n"
#: nis/nis_print.c:118
msgid "GROUP\n"
-msgstr "çòõððá\n"
+msgstr "ГРУППÐ\n"
#: nis/nis_print.c:121
msgid "TABLE\n"
-msgstr "ôáâìéãá\n"
+msgstr "ТÐБЛИЦÐ\n"
#: nis/nis_print.c:124
msgid "ENTRY\n"
-msgstr "úáðéóø\n"
+msgstr "ЗÐПИСЬ\n"
#: nis/nis_print.c:127
msgid "LINK\n"
-msgstr "óóùìëá\n"
+msgstr "ССЫЛКÐ\n"
#: nis/nis_print.c:130
msgid "PRIVATE\n"
-msgstr "ðòé÷áôîïå\n"
+msgstr "ПРИВÐТÐОЕ\n"
#: nis/nis_print.c:133
msgid "(Unknown object)\n"
-msgstr "(îÅÉÚ×ÅÓÔÎÙÊ ÏÂßÅËÔ)\n"
+msgstr "(ÐеизвеÑтный объект)\n"
#: nis/nis_print.c:167
#, c-format
msgid "Name : `%s'\n"
-msgstr "éÍÑ : `%s'\n"
+msgstr "Ð˜Ð¼Ñ : «%s»\n"
#: nis/nis_print.c:168
#, c-format
msgid "Type : %s\n"
-msgstr "ôÉÐ : %s\n"
+msgstr "Тип : %s\n"
#: nis/nis_print.c:173
msgid "Master Server :\n"
-msgstr "íÁÓÔÅÒ-ÓÅÒ×ÅÒ :\n"
+msgstr "МаÑтер-Ñервер :\n"
#: nis/nis_print.c:175
msgid "Replicate :\n"
-msgstr "òÅÐÌÉËÁ :\n"
+msgstr "Реплика :\n"
#: nis/nis_print.c:176
#, c-format
msgid "\tName : %s\n"
-msgstr "\téÍÑ : %s\n"
+msgstr "\tÐ˜Ð¼Ñ : %s\n"
#: nis/nis_print.c:177
msgid "\tPublic Key : "
-msgstr "\tðÕÂÌÉÞÎÙÊ ËÌÀÞ : "
+msgstr "\tПубличный ключ : "
#: nis/nis_print.c:181
msgid "None.\n"
-msgstr "îÅÔ.\n"
+msgstr "Ðет.\n"
#: nis/nis_print.c:184
#, c-format
msgid "Diffie-Hellmann (%d bits)\n"
-msgstr "äÉÆÆÉ-èÅÌÍÁÎ (%d ÂÉÔ)\n"
+msgstr "Диффи-Хелман (%d бит)\n"
#: nis/nis_print.c:189
#, c-format
msgid "RSA (%d bits)\n"
-msgstr "RSA (%d ÂÉÔ)\n"
+msgstr "RSA (%d бит)\n"
#: nis/nis_print.c:192
msgid "Kerberos.\n"
-msgstr "ëÅÒÂÅÒÏÓ.\n"
+msgstr "КербероÑ.\n"
#: nis/nis_print.c:195
#, c-format
msgid "Unknown (type = %d, bits = %d)\n"
-msgstr "îÅÉÚ×ÅÓÔÎÏ (ÔÉÐ = %d, ÂÉÔÙ = %d)\n"
+msgstr "ÐеизвеÑтно (тип = %d, биты = %d)\n"
#: nis/nis_print.c:206
#, c-format
msgid "\tUniversal addresses (%u)\n"
-msgstr "\tõÎÉ×ÅÒÓÁÌØÎÙÅ ÁÄÒÅÓÁ (%u)\n"
+msgstr "\tУниверÑальные адреÑа (%u)\n"
#: nis/nis_print.c:228
msgid "Time to live : "
-msgstr "÷ÒÅÍÑ ÖÉÚÎÉ : "
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¶Ð¸Ð·Ð½Ð¸ : "
#: nis/nis_print.c:230
msgid "Default Access rights :\n"
-msgstr "ðÒÁ×Á ÄÏÓÔÕÐÁ ÐÏ ÕÍÏÌÞÁÎÉÀ :\n"
+msgstr "Права доÑтупа по умолчанию :\n"
#: nis/nis_print.c:239
#, c-format
msgid "\tType : %s\n"
-msgstr "\tôÉÐ : %s\n"
+msgstr "\tТип : %s\n"
#: nis/nis_print.c:240
msgid "\tAccess rights: "
-msgstr "\tðÒÁ×Á ÄÏÓÔÕÐÁ: "
+msgstr "\tПрава доÑтупа: "
#: nis/nis_print.c:254
msgid "Group Flags :"
-msgstr "æÌÁÇÉ ÇÒÕÐÐÙ :"
+msgstr "Флаги группы :"
#: nis/nis_print.c:257
msgid ""
@@ -3262,96 +3269,96 @@ msgid ""
"Group Members :\n"
msgstr ""
"\n"
-"þÌÅÎÙ ÇÒÕÐÐÙ :\n"
+"Члены группы :\n"
#: nis/nis_print.c:269
#, c-format
msgid "Table Type : %s\n"
-msgstr "ôÉÐ ÔÁÂÌÉÃÙ : %s\n"
+msgstr "Тип таблицы : %s\n"
#: nis/nis_print.c:270
#, c-format
msgid "Number of Columns : %d\n"
-msgstr "þÉÓÌÏ ÓÔÏÌÂÃÏ× : %d\n"
+msgstr "ЧиÑло Ñтолбцов : %d\n"
#: nis/nis_print.c:271
#, c-format
msgid "Character Separator : %c\n"
-msgstr "úÎÁË-ÒÁÚÄÅÌÉÔÅÌØ : %c\n"
+msgstr "Знак-разделитель : %c\n"
#: nis/nis_print.c:272
#, c-format
msgid "Search Path : %s\n"
-msgstr "ðÕÔØ ÐÏÉÓËÁ : %s\n"
+msgstr "Путь поиÑка : %s\n"
#: nis/nis_print.c:273
msgid "Columns :\n"
-msgstr "óÔÏÌÂÃÙ :\n"
+msgstr "Столбцы :\n"
#: nis/nis_print.c:276
#, c-format
msgid "\t[%d]\tName : %s\n"
-msgstr "\t[%d]\téÍÑ : %s\n"
+msgstr "\t[%d]\tÐ˜Ð¼Ñ : %s\n"
#: nis/nis_print.c:278
msgid "\t\tAttributes : "
-msgstr "\t\táÔÒÉÂÕÔÙ : "
+msgstr "\t\tÐтрибуты : "
#: nis/nis_print.c:280
msgid "\t\tAccess Rights : "
-msgstr "\t\tðÒÁ×Á ÄÏÓÔÕÐÁ : "
+msgstr "\t\tПрава доÑтупа : "
#: nis/nis_print.c:290
msgid "Linked Object Type : "
-msgstr "ôÉÐ ÏÂßÅËÔÁ ÐÏ ÓÓÙÌËÅ : "
+msgstr "Тип объекта по ÑÑылке : "
#: nis/nis_print.c:292
#, c-format
msgid "Linked to : %s\n"
-msgstr "óÓÙÌËÁ ÎÁ : %s\n"
+msgstr "СÑылка на : %s\n"
#: nis/nis_print.c:302
#, c-format
msgid "\tEntry data of type %s\n"
-msgstr "\täÁÎÎÙÅ ÚÁÐÉÓÉ ÔÉÐÁ %s\n"
+msgstr "\tДанные запиÑи типа %s\n"
#: nis/nis_print.c:305
#, c-format
msgid "\t[%u] - [%u bytes] "
-msgstr "\t[%u] - [%u ÂÁÊÔ] "
+msgstr "\t[%u] - [%u байт] "
#: nis/nis_print.c:308
msgid "Encrypted data\n"
-msgstr "úÁÛÉÆÒÏ×ÁÎÎÙÅ ÄÁÎÎÙÅ\n"
+msgstr "Зашифрованные данные\n"
#: nis/nis_print.c:310
msgid "Binary data\n"
-msgstr "âÉÎÁÒÎÙÅ ÄÁÎÎÙÅ\n"
+msgstr "Бинарные данные\n"
#: nis/nis_print.c:326
#, c-format
msgid "Object Name : %s\n"
-msgstr "éÍÑ ÏÂßÅËÔÁ : %s\n"
+msgstr "Ð˜Ð¼Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° : %s\n"
#: nis/nis_print.c:327
#, c-format
msgid "Directory : %s\n"
-msgstr "ëÁÔÁÌÏÇ : %s\n"
+msgstr "Каталог : %s\n"
#: nis/nis_print.c:328
#, c-format
msgid "Owner : %s\n"
-msgstr "÷ÌÁÄÅÌÅà : %s\n"
+msgstr "Владелец : %s\n"
#: nis/nis_print.c:329
#, c-format
msgid "Group : %s\n"
-msgstr "çÒÕÐÐÁ : %s\n"
+msgstr "Группа : %s\n"
-# ??? ÚÄÅÓØ, ÎÉÖÅ É ×ÙÛÅ -- ÒÁÓÓÔÁ×ÉÔØ ÐÒÏÂÅÌÙ ËÁË ÎÁÄÏ
+# ??? здеÑÑŒ, ниже и выше -- раÑÑтавить пробелы как надо
#: nis/nis_print.c:330
msgid "Access Rights : "
-msgstr "ðÒÁ×Á ÄÏÓÔÕÐÁ : "
+msgstr "Права доÑтупа : "
#: nis/nis_print.c:332
#, c-format
@@ -3360,102 +3367,106 @@ msgid ""
"Time to Live : "
msgstr ""
"\n"
-"÷ÒÅÍÑ ÖÉÚÎÉ : "
+"Ð’Ñ€ÐµÐ¼Ñ Ð¶Ð¸Ð·Ð½Ð¸ : "
#: nis/nis_print.c:335
#, c-format
msgid "Creation Time : %s"
-msgstr "÷ÒÅÍÑ ÓÏÚÄÁÎÉÑ : %s"
+msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ : %s"
#: nis/nis_print.c:337
#, c-format
msgid "Mod. Time : %s"
-msgstr "÷ÒÅÍÑ ÍÏÄÉÆÉËÁÃÉÉ : %s"
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ : %s"
#: nis/nis_print.c:338
msgid "Object Type : "
-msgstr "ôÉÐ ÏÂßÅËÔÁ : "
+msgstr "Тип объекта : "
#: nis/nis_print.c:358
#, c-format
msgid " Data Length = %u\n"
-msgstr " äÌÉÎÁ ÄÁÎÎÙÈ = %u\n"
+msgstr " Длина данных = %u\n"
#: nis/nis_print.c:372
#, c-format
msgid "Status : %s\n"
-msgstr "óÔÁÔÕÓ : %s\n"
+msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ : %s\n"
#: nis/nis_print.c:373
#, c-format
msgid "Number of objects : %u\n"
-msgstr "þÉÓÌÏ ÏÂßÅËÔÏ× : %u\n"
+msgstr "ЧиÑло объектов : %u\n"
#: nis/nis_print.c:377
#, c-format
msgid "Object #%d:\n"
-msgstr "ïÂßÅËÔ #%d:\n"
+msgstr "Объект #%d:\n"
#: nis/nis_print_group_entry.c:117
#, c-format
msgid "Group entry for \"%s.%s\" group:\n"
-msgstr "úÁÐÉÓØ ÇÒÕÐÐÙ ÄÌÑ ÇÒÕÐÐÙ \"%s.%s\":\n"
+msgstr "ЗапиÑÑŒ группы Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ «%s.%s»:\n"
#: nis/nis_print_group_entry.c:125
msgid " Explicit members:\n"
-msgstr " ñ×ÎÙÅ ÞÌÅÎÙ:\n"
+msgstr " Явные члены:\n"
#: nis/nis_print_group_entry.c:130
msgid " No explicit members\n"
-msgstr " îÅÔ Ñ×ÎÙÈ ÞÌÅÎÏ×\n"
+msgstr " Ðет Ñвных членов\n"
#: nis/nis_print_group_entry.c:133
msgid " Implicit members:\n"
-msgstr " îÅÑ×ÎÙÅ ÞÌÅÎÙ:\n"
+msgstr " ÐеÑвные члены:\n"
#: nis/nis_print_group_entry.c:138
msgid " No implicit members\n"
-msgstr " îÅÔ ÎÅÑ×ÎÙÈ ÞÌÅÎÏ×\n"
+msgstr " Ðет неÑвных членов\n"
#: nis/nis_print_group_entry.c:141
msgid " Recursive members:\n"
-msgstr " òÅËÕÒÓÉ×ÎÙÅ ÞÌÅÎÙ:\n"
+msgstr " РекурÑивные члены:\n"
#: nis/nis_print_group_entry.c:146
msgid " No recursive members\n"
-msgstr " îÅÔ ÒÅËÕÒÓÉ×ÎÙÈ ÞÌÅÎÏ×\n"
+msgstr " Ðет рекурÑивных членов\n"
-#: nis/nis_print_group_entry.c:149 nis/nis_print_group_entry.c:165
+#: nis/nis_print_group_entry.c:149
msgid " Explicit nonmembers:\n"
-msgstr " ñ×ÎÙÅ ÎÅ-ÞÌÅÎÙ:\n"
+msgstr " Явные не-члены:\n"
#: nis/nis_print_group_entry.c:154
msgid " No explicit nonmembers\n"
-msgstr " îÅÔ Ñ×ÎÙÈ ÎÅ-ÞÌÅÎÏ×\n"
+msgstr " Ðет Ñвных не-членов\n"
#: nis/nis_print_group_entry.c:157
msgid " Implicit nonmembers:\n"
-msgstr " îÅÑ×ÎÙÅ ÎÅ-ÞÌÅÎÙ:\n"
+msgstr " ÐеÑвные не-члены:\n"
#: nis/nis_print_group_entry.c:162
msgid " No implicit nonmembers\n"
-msgstr " îÅÔ ÎÅÑ×ÎÙÈ ÎÅ-ÞÌÅÎÏ×\n"
+msgstr " Ðет неÑвных не-членов\n"
+
+#: nis/nis_print_group_entry.c:165
+msgid " Recursive nonmembers:\n"
+msgstr " РекурÑивные не-члены:\n"
#: nis/nis_print_group_entry.c:170
msgid " No recursive nonmembers\n"
-msgstr " îÅÔ ÒÅËÕÒÓÉ×ÎÙÈ ÎÅ-ÞÌÅÎÏ×\n"
+msgstr " Ðет рекурÑивных не-членов\n"
# ???
#: nis/nss_nisplus/nisplus-publickey.c:101
#: nis/nss_nisplus/nisplus-publickey.c:183
#, c-format
msgid "DES entry for netname %s not unique\n"
-msgstr "úÁÐÉÓØ DES ÄÌÑ netname %s ÎÅ ÕÎÉËÁÌØÎÁ\n"
+msgstr "ЗапиÑÑŒ DES Ð´Ð»Ñ netname %s не уникальна\n"
#: nis/nss_nisplus/nisplus-publickey.c:220
#, c-format
-msgid "netname2user: missing group id list in `%s'."
-msgstr "netname2user: ÐÒÏÐÕÝÅÎ ÓÐÉÓÏË ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÇÒÕÐÐ × `%s'."
+msgid "netname2user: missing group id list in `%s'"
+msgstr "netname2user: пропущен ÑпиÑок идентификаторов групп в «%s»"
#: nis/nss_nisplus/nisplus-publickey.c:302
#: nis/nss_nisplus/nisplus-publickey.c:308
@@ -3463,521 +3474,569 @@ msgstr "netname2user: ÐÒÏÐÕÝÅÎ ÓÐÉÓÏË ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÇÒÕÐÐ × `%s'."
#: nis/nss_nisplus/nisplus-publickey.c:382
#, c-format
msgid "netname2user: (nis+ lookup): %s\n"
-msgstr "netname2user: (ÐÏÉÓË × nis+): %s\n"
+msgstr "netname2user: (поиÑк в nis+): %s\n"
#: nis/nss_nisplus/nisplus-publickey.c:321
#, c-format
msgid "netname2user: DES entry for %s in directory %s not unique"
-msgstr "netname2user: ÚÁÐÉÓØ DES ÄÌÑ %s × ËÁÔÁÌÏÇÅ %s ÎÅ ÕÎÉËÁÌØÎÁ"
+msgstr "netname2user: запиÑÑŒ DES Ð´Ð»Ñ %s в каталоге %s не уникальна"
#: nis/nss_nisplus/nisplus-publickey.c:339
#, c-format
msgid "netname2user: principal name `%s' too long"
-msgstr "netname2user: ÉÍÑ ÐÒÉÎÃÉÐÁÌÁ `%s' ÓÌÉÛËÏÍ ×ÅÌÉËÏ"
+msgstr "netname2user: Ð¸Ð¼Ñ Ð¿Ñ€Ð¸Ð½Ñ†Ð¸Ð¿Ð°Ð»Ð° «%s» Ñлишком велико"
#: nis/nss_nisplus/nisplus-publickey.c:395
#, c-format
msgid "netname2user: LOCAL entry for %s in directory %s not unique"
-msgstr "netname2user: ÚÁÐÉÓØ LOCAL ÄÌÑ %s × ËÁÔÁÌÏÇÅ %s ÎÅ ÕÎÉËÁÌØÎÁ"
+msgstr "netname2user: запиÑÑŒ LOCAL Ð´Ð»Ñ %s в каталоге %s не уникальна"
#: nis/nss_nisplus/nisplus-publickey.c:402
msgid "netname2user: should not have uid 0"
-msgstr "netname2user: ÎÅ ÄÏÌÖÅÎ ÉÍÅÔØ ÎÕÌÅ×ÏÊ uid"
+msgstr "netname2user: не должен иметь нулевой uid"
-#: nis/ypclnt.c:825
+#: nis/ypclnt.c:836
msgid "Request arguments bad"
-msgstr "îÅÐÒÁ×ÉÌØÎÙÅ ÁÒÇÕÍÅÎÔÙ ÚÁÐÒÏÓÁ"
+msgstr "Ðеправильные аргументы запроÑа"
-#: nis/ypclnt.c:828
+#: nis/ypclnt.c:839
msgid "RPC failure on NIS operation"
-msgstr "óÂÏÊ RPC ÐÒÉ ÏÐÅÒÁÃÉÉ NIS"
+msgstr "Сбой RPC при операции NIS"
-#: nis/ypclnt.c:831
+#: nis/ypclnt.c:842
msgid "Can't bind to server which serves this domain"
-msgstr "îÅ ÕÄÁÅÔÓÑ ÓÏÅÄÉÎÉÔØÓÑ Ó ÓÅÒ×ÅÒÏÍ, ÏÂÓÌÕÖÉ×ÁÀÝÉÍ ÜÔÏÔ ÄÏÍÅÎ"
+msgstr "Ðе удаетÑÑ ÑоединитьÑÑ Ñ Ñервером, обÑлуживающим Ñтот домен"
-#: nis/ypclnt.c:834
+#: nis/ypclnt.c:845
msgid "No such map in server's domain"
-msgstr "îÅÔ ÔÁËÏÇÏ ÏÔÏÂÒÁÖÅÎÉÑ × ÄÏÍÅÎÅ ÓÅÒ×ÅÒÁ"
+msgstr "Ðет такого Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² домене Ñервера"
-#: nis/ypclnt.c:837
+#: nis/ypclnt.c:848
msgid "No such key in map"
-msgstr "îÅÔ ÔÁËÏÇÏ ËÌÀÞÁ × ÏÔÏÂÒÁÖÅÎÉÉ"
+msgstr "Ðет такого ключа в отображении"
-#: nis/ypclnt.c:840
+#: nis/ypclnt.c:851
msgid "Internal NIS error"
-msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ NIS"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° NIS"
-#: nis/ypclnt.c:843
+#: nis/ypclnt.c:854
msgid "Local resource allocation failure"
-msgstr "óÂÏÊ ÐÒÉ ×ÙÄÅÌÅÎÉÉ ÌÏËÁÌØÎÏÇÏ ÒÅÓÕÒÓÁ"
+msgstr "Сбой при выделении локального реÑурÑа"
-#: nis/ypclnt.c:846
+#: nis/ypclnt.c:857
msgid "No more records in map database"
-msgstr "âÏÌØÛÅ ÎÅÔ ÚÁÐÉÓÅÊ × ÂÁÚÅ ÄÁÎÎÙÈ ÏÔÏÂÒÁÖÅÎÉÊ"
+msgstr "Больше нет запиÑей в базе данных отображений"
-#: nis/ypclnt.c:849
+#: nis/ypclnt.c:860
msgid "Can't communicate with portmapper"
-msgstr "îÅ×ÏÚÍÏÖÎÏ Ó×ÑÚÁÔØÓÑ Ó ÏÔÏÂÒÁÖÁÔÅÌÅÍ ÐÏÒÔÏ×"
+msgstr "Ðевозможно ÑвÑзатьÑÑ Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶Ð°Ñ‚ÐµÐ»ÐµÐ¼ портов"
-#: nis/ypclnt.c:852
+#: nis/ypclnt.c:863
msgid "Can't communicate with ypbind"
-msgstr "îÅ×ÏÚÍÏÖÎÏ Ó×ÑÚÁÔØÓÑ Ó ypbind"
+msgstr "Ðевозможно ÑвÑзатьÑÑ Ñ ypbind"
-#: nis/ypclnt.c:855
+#: nis/ypclnt.c:866
msgid "Can't communicate with ypserv"
-msgstr "îÅ×ÏÚÍÏÖÎÏ Ó×ÑÚÁÔØÓÑ Ó ypserv"
+msgstr "Ðевозможно ÑвÑзатьÑÑ Ñ ypserv"
-#: nis/ypclnt.c:858
+#: nis/ypclnt.c:869
msgid "Local domain name not set"
-msgstr "ìÏËÁÌØÎÏÅ ÉÍÑ ÄÏÍÅÎÁ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÏ"
+msgstr "Локальное Ð¸Ð¼Ñ Ð´Ð¾Ð¼ÐµÐ½Ð° не уÑтановлено"
-#: nis/ypclnt.c:861
+#: nis/ypclnt.c:872
msgid "NIS map database is bad"
-msgstr "îÅÐÒÁ×ÉÌØÎÁÑ ÂÁÚÁ ÄÁÎÎÙÈ ÏÔÏÂÒÁÖÅÎÉÊ NIS"
+msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð±Ð°Ð·Ð° данных отображений NIS"
-#: nis/ypclnt.c:864
+#: nis/ypclnt.c:875
msgid "NIS client/server version mismatch - can't supply service"
-msgstr "îÅÓÏÏÔ×ÅÔÓÔ×ÉÅ ×ÅÒÓÉÊ ËÌÉÅÎÔÁ/ÓÅÒ×ÅÒÁ NIS -- ÎÅ×ÏÚÍÏÖÎÏ ÐÒÅÄÏÓÔÁ×ÉÔØ ÓÌÕÖÂÕ"
+msgstr "ÐеÑоответÑтвие верÑий клиента/Ñервера NIS -- невозможно предоÑтавить Ñлужбу"
-#: nis/ypclnt.c:870
+#: nis/ypclnt.c:881
msgid "Database is busy"
-msgstr "âÁÚÁ ÄÁÎÎÙÈ ÚÁÎÑÔÁ"
+msgstr "База данных занÑта"
-#: nis/ypclnt.c:873
+#: nis/ypclnt.c:884
msgid "Unknown NIS error code"
-msgstr "îÅÉÚ×ÅÓÔÎÙÊ ËÏÄ ÏÛÉÂËÉ NIS"
+msgstr "ÐеизвеÑтный код ошибки NIS"
-#: nis/ypclnt.c:913
+#: nis/ypclnt.c:924
msgid "Internal ypbind error"
-msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ ypbind"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° ypbind"
-#: nis/ypclnt.c:916
+#: nis/ypclnt.c:927
msgid "Domain not bound"
-msgstr "äÏÍÅÎ ÎÅ ÎÁÊÄÅÎ"
+msgstr "Домен не найден"
-#: nis/ypclnt.c:919
+#: nis/ypclnt.c:930
msgid "System resource allocation failure"
-msgstr "óÂÏÊ ×ÙÄÅÌÅÎÉÑ ÓÉÓÔÅÍÎÏÇÏ ÒÅÓÕÒÓÁ"
+msgstr "Сбой Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ ÑиÑтемного реÑурÑа"
-#: nis/ypclnt.c:922
+#: nis/ypclnt.c:933
msgid "Unknown ypbind error"
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ ypbind"
+msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° ypbind"
-#: nis/ypclnt.c:963
+#: nis/ypclnt.c:974
msgid "yp_update: cannot convert host to netname\n"
-msgstr "yp_update: ÎÅ×ÏÚÍÏÖÎÏ ÐÒÅÏÂÒÁÚÏ×ÁÔØ ÈÏÓÔ × netname\n"
+msgstr "yp_update: невозможно преобразовать хоÑÑ‚ в netname\n"
-#: nis/ypclnt.c:981
+#: nis/ypclnt.c:992
msgid "yp_update: cannot get server address\n"
-msgstr "yp_update: ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÁÄÒÅÓ ÓÅÒ×ÅÒÁ\n"
+msgstr "yp_update: невозможно получить Ð°Ð´Ñ€ÐµÑ Ñервера\n"
-#: nscd/aicache.c:76 nscd/hstcache.c:461
+#: nscd/aicache.c:82 nscd/hstcache.c:481
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
-msgstr "îÅ ÎÁÊÄÅÎÏ \"%s\" × ËÜÛÅ ÈÏÓÔÏ×!"
+msgstr "Ðе найдено «%s» в кÑше хоÑтов!"
-#: nscd/aicache.c:78 nscd/hstcache.c:463
+#: nscd/aicache.c:84 nscd/hstcache.c:483
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
-msgstr "ðÅÒÅÚÁÇÒÕÚËÁ \"%s\" × ËÜÛÅ ÈÏÓÔÏ×!"
+msgstr "Перезагрузка «%s» в кÑше хоÑтов!"
-#: nscd/cache.c:126
+#: nscd/cache.c:150
#, c-format
msgid "add new entry \"%s\" of type %s for %s to cache%s"
-msgstr "ÄÏÂÁ×ÉÔØ ÎÏ×ÕÀ ÚÁÐÉÓØ \"%s\" ÔÉÐÁ %s ÄÌÑ %s × ËÜÛ%s"
+msgstr "добавить новую запиÑÑŒ «%s» типа %s Ð´Ð»Ñ %s в кÑш%s"
-#: nscd/cache.c:233 nscd/connections.c:750
+#: nscd/cache.c:152
+msgid " (first)"
+msgstr " (первый)"
+
+#: nscd/cache.c:286 nscd/connections.c:866
#, c-format
msgid "cannot stat() file `%s': %s"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat() ÄÌÑ ÆÁÊÌÁ `%s': %s"
+msgstr "невозможно выполнить stat() Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s»: %s"
-#: nscd/cache.c:262
+#: nscd/cache.c:328
#, c-format
msgid "pruning %s cache; time %ld"
-msgstr ""
+msgstr "очитка %s кÑша; Ð²Ñ€ÐµÐ¼Ñ %ld"
-#: nscd/cache.c:289
+#: nscd/cache.c:357
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
-msgstr ""
+msgstr "вычиÑление %s Ñлемента «%s», тайм-аут %<PRIu64>"
-#: nscd/connections.c:469 nscd/connections.c:481 nscd/connections.c:493
-#: nscd/connections.c:512
+#: nscd/connections.c:570
#, c-format
msgid "invalid persistent database file \"%s\": %s"
-msgstr "ÎÅ×ÅÒÎÙÊ ÆÁÊÌ Ó ÐÏÓÔÏÑÎÎÏÊ ÂÁÚÏÊ ÄÁÎÎÙÈ \"%s\": %s"
+msgstr "неверный файл Ñ Ð¿Ð¾ÑтоÑнной базой данных «%s»: %s"
-#: nscd/connections.c:483
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr "неинициализированный заголовок"
+
+#: nscd/connections.c:583
msgid "header size does not match"
-msgstr "ÒÁÚÍÅÒ ÚÁÇÏÌÏ×ËÁ ÎÅ ÓÏ×ÐÁÄÁÅÔ"
+msgstr "размер заголовка не Ñовпадает"
-#: nscd/connections.c:495
+#: nscd/connections.c:593
msgid "file size does not match"
-msgstr "ÎÅ ÓÏ×ÐÁÄÁÅÔ ÒÁÚÍÅÒ ÆÁÊÌÁ"
+msgstr "не Ñовпадает размер файла"
-#: nscd/connections.c:514
+#: nscd/connections.c:610
msgid "verification failed"
-msgstr "×ÅÒÉÆÉËÁÃÉÑ ÎÅ ÕÄÁÌÁÓØ"
+msgstr "Ð²ÐµÑ€Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð½Ðµ удалаÑÑŒ"
-#: nscd/connections.c:528
+#: nscd/connections.c:624
#, c-format
msgid "suggested size of table for database %s larger than the persistent database's table"
-msgstr "ÐÒÅÄÌÁÇÁÅÍÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ ÄÌÑ ÂÁÚÙ ÄÁÎÎÙÈ %s ÂÏÌØÛÅ ÞÅÍ ÔÁÂÌÉÃÁ Õ ÐÏÓÔÏÑÎÎÏÊ ÂÁÚÙ ÄÁÎÎÙÈ"
+msgstr "предлагаемый размер таблицы Ð´Ð»Ñ Ð±Ð°Ð·Ñ‹ данных %s больше чем таблица у поÑтоÑнной базы данных"
-#: nscd/connections.c:538 nscd/connections.c:619
+#: nscd/connections.c:635 nscd/connections.c:720
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÄÅÓËÒÉÐÔÏÒ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ ÄÌÑ \"%s\"; ÏÔÓÕÔÓÔ×ÕÅÔ mmap"
+msgstr "невозможно Ñоздать деÑкриптор только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Â«%s»; отÑутÑтвует mmap"
+
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr "нет доÑтупа к «%s»"
-#: nscd/connections.c:598
+#: nscd/connections.c:699
#, c-format
msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
-msgstr "ÂÁÚÁ ÄÁÎÎÙÈ ÄÌÑ %s ÐÏ×ÒÅÖÄÅÎÁ ÉÌÉ ÐÁÒÁÌÌÅÌØÎÏ ÉÓÐÏÌØÚÕÅÔÓÑ; ÕÄÁÌÉÔÅ %s ×ÒÕÞÎÕÀ, ÅÓÌÉ ÎÅÏÂÈÏÄÉÍÏ, É ÐÅÒÅÚÁÐÕÓÔÉÔÅ"
+msgstr "база данных Ð´Ð»Ñ %s повреждена или параллельно иÑпользуетÑÑ; удалите %s вручную, еÑли необходимо, и перезапуÑтите"
-#: nscd/connections.c:605
+#: nscd/connections.c:706
#, c-format
msgid "cannot create %s; no persistent database used"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ %s; ÐÏÓÔÏÑÎÎÙÅ ÂÁÚÙ ÄÁÎÎÙÈ ÎÅ ÉÓÐÏÌØÚÏ×ÁÎÙ"
+msgstr "невозможно Ñоздать %s; поÑтоÑнные базы данных не иÑпользованы"
-#: nscd/connections.c:608
+#: nscd/connections.c:709
#, c-format
msgid "cannot create %s; no sharing possible"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ %s; ÒÁÚÄÅÌÅÎÉÅ ÎÅ×ÏÚÍÏÖÎÏ"
+msgstr "невозможно Ñоздать %s; разделение невозможно"
-#: nscd/connections.c:679
+#: nscd/connections.c:780
#, c-format
msgid "cannot write to database file %s: %s"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ × ÆÁÊÌ ÂÁÚÙ ÄÁÎÎÙÈ %s: %s "
+msgstr "невозможно запиÑать в файл базы данных %s: %s "
-#: nscd/connections.c:713
+#: nscd/connections.c:819
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÚÁËÒÙÔÉÅ ÓÏËÅÔÁ ÐÒÉ exec: %s; ÐÁÒÁÎÏÉÄÁÌØÎÙÊ ÒÅÖÉÍ ×ÙËÌÀÞÅÎ"
+msgstr "невозможно уÑтановить закрытие Ñокета при exec: %s; параноидальный режим выключен"
-#: nscd/connections.c:763
+#: nscd/connections.c:902
#, c-format
msgid "cannot open socket: %s"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÓÏËÅÔ: %s"
+msgstr "невозможно открыть Ñокет: %s"
-#: nscd/connections.c:780
+#: nscd/connections.c:922
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅ×ÅÓÔÉ ÓÏËÅÔ × ÎÅÂÌÏËÉÒÕÀÝÉÊ ÒÅÖÉÍ: %s"
+msgstr "невозможно перевеÑти Ñокет в неблокирующий режим: %s"
-#: nscd/connections.c:788
+#: nscd/connections.c:930
#, c-format
msgid "cannot set socket to close on exec: %s"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÄÅÌÁÔØ ÓÏËÅÔ ÚÁËÒÙ×ÁÀÝÉÍÓÑ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ exec: %s"
+msgstr "невозможно Ñделать Ñокет закрывающимÑÑ Ð¿Ñ€Ð¸ выполнении exec: %s"
-#: nscd/connections.c:799
+#: nscd/connections.c:943
#, c-format
msgid "cannot enable socket to accept connections: %s"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÄÅÌÁÔØ ÓÏËÅÔ ÐÒÉÎÉÍÁÀÝÉÍ ÓÏÅÄÉÎÅÎÉÑ: %s"
+msgstr "невозможно Ñделать Ñокет принимающим ÑоединениÑ: %s"
-#: nscd/connections.c:892
+#: nscd/connections.c:1043
#, c-format
msgid "provide access to FD %d, for %s"
-msgstr ""
+msgstr "предоÑтавить доÑтуп FD %d, Ð´Ð»Ñ %s"
-#: nscd/connections.c:904
+#: nscd/connections.c:1055
#, c-format
msgid "cannot handle old request version %d; current version is %d"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÂÒÁÂÏÔÁÔØ ÚÁÐÒÏÓ ÓÔÁÒÏÊ ×ÅÒÓÉÉ %d; ÔÅËÕÝÁÑ ×ÅÒÓÉÑ %d"
+msgstr "невозможно обработать Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñтарой верÑии %d; Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ %d"
-#: nscd/connections.c:954 nscd/connections.c:1007
+#: nscd/connections.c:1077
#, c-format
-msgid "cannot write result: %s"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ ÒÅÚÕÌØÔÁÔ: %s"
+msgid "request from %ld not handled due to missing permission"
+msgstr "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚ %ld не обработан из-за нехватки прав"
#: nscd/connections.c:1082
#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚ '%s' [%ld] не обработан из-за нехватки прав"
+
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ обработан из-за нехватки прав"
+
+#: nscd/connections.c:1125 nscd/connections.c:1178
+#, c-format
+msgid "cannot write result: %s"
+msgstr "невозможно запиÑать результат: %s"
+
+#: nscd/connections.c:1261
+#, c-format
msgid "error getting caller's id: %s"
-msgstr "ÏÛÉÂËÁ ÐÒÉ ÐÏÌÕÞÅÎÉÉ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ ×ÙÚÙ×ÁÀÝÅÊ ÓÔÏÒÏÎÙ: %s"
+msgstr "ошибка при получении идентификатора вызывающей Ñтороны: %s"
-#: nscd/connections.c:1140 nscd/connections.c:1154
+#: nscd/connections.c:1320
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ /proc/self/cmdline: %s; ÐÁÒÁÎÏÉÄÁÌØÎÙÊ ÒÅÖÉÍ ×ÙËÌÀÞÅÎ"
+msgstr "невозможно открыть /proc/self/cmdline: %s; параноидальный режим выключен"
+
+#: nscd/connections.c:1334
+#, c-format
+msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
+msgstr "невозможно прочитать /proc/self/cmdline: %s; параноидальный режим выключен"
-#: nscd/connections.c:1194
+#: nscd/connections.c:1374
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÍÅÎÉÔØ UID ÎÁ ÐÒÅÖÎÉÊ: %s; ÐÁÒÁÎÏÉÄÁÌØÎÙÊ ÒÅÖÉÍ ×ÙËÌÀÞÅÎ"
+msgstr "невозможно Ñменить UID на прежний: %s; параноидальный режим выключен"
-#: nscd/connections.c:1204
+#: nscd/connections.c:1384
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÍÅÎÉÔØ GID ÎÁ ÐÒÅÖÎÉÊ: %s; ÐÁÒÁÎÏÉÄÁÌØÎÙÊ ÒÅÖÉÍ ×ÙËÌÀÞÅÎ"
+msgstr "невозможно Ñменить GID на прежний: %s; параноидальный режим выключен"
-#: nscd/connections.c:1217
+#: nscd/connections.c:1397
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÅÒÎÕÔØÓÑ × ÐÒÅÖÎÉÊ ÒÁÂÏÞÉÊ ËÁÔÁÌÏÇ: %s; ÐÁÒÁÎÏÉÄÁÌØÎÙÊ ÒÅÖÉÍ ×ÙËÌÀÞÅÎ"
+msgstr "невозможно вернутьÑÑ Ð² прежний рабочий каталог: %s; параноидальный режим выключен"
-#: nscd/connections.c:1245
+#: nscd/connections.c:1429
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
-msgstr "ÐÏ×ÔÏÒÎÙÊ exec ÎÅÕÓÐÅÛÅÎ: %s; ÐÁÒÁÎÏÉÄÁÌØÎÙÊ ÒÅÖÉÍ ×ÙËÌÀÞÅÎ"
+msgstr "повторный exec не уÑпешен: %s; параноидальный режим выключен"
-#: nscd/connections.c:1254
+#: nscd/connections.c:1438
#, c-format
msgid "cannot change current working directory to \"/\": %s"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÍÅÎÉÔØ ÒÁÂÏÞÉÊ ËÁÔÁÌÏÇ ÎÁ \"/\": %s"
+msgstr "невозможно Ñменить рабочий каталог на «/»: %s"
-#: nscd/connections.c:1372
+#: nscd/connections.c:1644
#, c-format
msgid "short read while reading request: %s"
-msgstr "ÎÅÐÏÌÎÙÊ ÓÞÉÔÁÎÎÙÊ ÂÌÏË ÐÒÉ ÞÔÅÎÉÉ ÚÁÐÒÏÓÁ: %s"
+msgstr "неполный Ñчитанный блок при чтении запроÑа: %s"
-#: nscd/connections.c:1404
+#: nscd/connections.c:1677
#, c-format
msgid "key length in request too long: %d"
-msgstr "ÄÌÉÎÁ ËÌÀÞÁ × ÚÁÐÒÏÓÅ ÓÌÉÛËÏÍ ×ÅÌÉËÁ: %d"
+msgstr "длина ключа в запроÑе Ñлишком велика: %d"
-#: nscd/connections.c:1417
+#: nscd/connections.c:1690
#, c-format
msgid "short read while reading request key: %s"
-msgstr "ÎÅÐÏÌÎÙÊ ÓÞÉÔÁÎÎÙÊ ÂÌÏË ÐÒÉ ÞÔÅÎÉÉ ËÌÀÞÁ ÚÁÐÒÏÓÁ: %s"
+msgstr "неполный Ñчитанный блок при чтении ключа запроÑа: %s"
-#: nscd/connections.c:1426
+#: nscd/connections.c:1699
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
-msgstr "handle_request: ÐÏÌÕÞÅÎ ÚÁÐÒÏÓ (×ÅÒÓÉÑ = %d) ÏÔ PID %ld"
+msgstr "handle_request: получен Ð·Ð°Ð¿Ñ€Ð¾Ñ (верÑÐ¸Ñ = %d) от PID %ld"
-#: nscd/connections.c:1431
+#: nscd/connections.c:1704
#, c-format
msgid "handle_request: request received (Version = %d)"
-msgstr "handle_request: ÐÏÌÕÞÅÎ ÚÁÐÒÏÓ (×ÅÒÓÉÑ = %d)"
+msgstr "handle_request: получен Ð·Ð°Ð¿Ñ€Ð¾Ñ (верÑÐ¸Ñ = %d)"
-#: nscd/connections.c:1792
+#: nscd/connections.c:1903 nscd/connections.c:2101
#, c-format
-msgid "could only start %d threads; terminating"
-msgstr "ÕÄÁÌÏÓØ ÚÁÐÕÓÔÉÔØ ÔÏÌØËÏ %d ÔÒÅÄÏ×; ÏÓÔÁÎÏ×"
+msgid "disabled inotify after read error %d"
+msgstr "выключение inotify поÑле ошибки Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %d"
-#: nscd/connections.c:1840 nscd/connections.c:1841 nscd/connections.c:1858
-#: nscd/connections.c:1867 nscd/connections.c:1885 nscd/connections.c:1896
-#: nscd/connections.c:1907
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr "невозможно инициализировать уÑловное выражение"
+
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr "не удалоÑÑŒ запуÑтить очищающий поток; оÑтанов"
+
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr "не удалоÑÑŒ запуÑтить ни один рабочий поток; оÑтанов"
+
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
#, c-format
msgid "Failed to run nscd as user '%s'"
-msgstr "îÅ ÕÄÁÌÏÓØ ÚÁÐÕÓÔÉÔØ nscd ÏÔ ÉÍÅÎÉ ÐÏÌØÚÏ×ÁÔÅÌÑ '%s'"
+msgstr "Ðе удалоÑÑŒ запуÑтить nscd от имени Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Â»%s»"
-#: nscd/connections.c:1859
+#: nscd/connections.c:2322
#, c-format
msgid "initial getgrouplist failed"
-msgstr "ÐÅÒ×ÏÎÁÞÁÌØÎÁÑ getgrouplist ÎÅÕÓÐÅÛÎÁ"
+msgstr "Ð¿ÐµÑ€Ð²Ð¾Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ getgrouplist завершалаÑÑŒ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹"
-#: nscd/connections.c:1868
+#: nscd/connections.c:2331
#, c-format
msgid "getgrouplist failed"
-msgstr "getgrouplist ÎÅÕÓÐÅÛÎÁ"
+msgstr "getgrouplist завершилаÑÑŒ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹"
-#: nscd/connections.c:1886
+#: nscd/connections.c:2349
#, c-format
msgid "setgroups failed"
-msgstr "setgroups ÎÅÕÓÐÅÛÎÁ"
+msgstr "setgroups завершилаÑÑŒ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹"
-#: nscd/grpcache.c:400 nscd/hstcache.c:411 nscd/initgrcache.c:411
-#: nscd/pwdcache.c:395
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
#, c-format
msgid "short write in %s: %s"
-msgstr "ÎÅÐÏÌÎÁÑ ÚÁÐÉÓØ × %s: %s"
+msgstr "Ð½ÐµÐ¿Ð¾Ð»Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ в %s: %s"
-#: nscd/grpcache.c:443 nscd/initgrcache.c:77
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
-msgstr "îÅ ÎÁÊÄÅÎÏ \"%s\" × ËÜÛÅ ÇÒÕÐÐ!"
+msgstr "Ðе найдено «%s» в кÑше групп!"
-#: nscd/grpcache.c:445 nscd/initgrcache.c:79
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
-msgstr "ðÅÒÅÚÁÇÒÕÚËÁ \"%s\" × ËÜÛÅ ÇÒÕÐÐ!"
+msgstr "Перезагрузка «%s» в кÑше групп!"
-#: nscd/grpcache.c:536
+#: nscd/grpcache.c:517
#, c-format
msgid "Invalid numeric gid \"%s\"!"
-msgstr "îÅ×ÅÒÎÙÊ ÞÉÓÌÏ×ÏÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÇÒÕÐÐÙ \"%s\"!"
+msgstr "Ðеверный чиÑловой идентификатор группы «%s»!"
-#: nscd/mem.c:382
+#: nscd/mem.c:457
#, c-format
msgid "freed %zu bytes in %s cache"
-msgstr "ÏÓ×ÏÂÏÖÄÅÎÏ %zu ÂÁÊÔ × ËÜÛÅ %s"
+msgstr "оÑвобождено %zu байт в кÑше %s"
-#: nscd/mem.c:511
+#: nscd/mem.c:594
#, c-format
msgid "no more memory for database '%s'"
-msgstr "ÎÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ ÄÌÑ ÂÁÚÙ ÄÁÎÎÙÈ '%s'"
+msgstr "недоÑтаточно памÑти Ð´Ð»Ñ Ð±Ð°Ð·Ñ‹ данных «%s»"
-#: nscd/nscd.c:97
+#: nscd/nscd.c:101
msgid "Read configuration data from NAME"
-msgstr "þÉÔÁÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÅ ÄÁÎÎÙÅ ÉÚ æáêìá"
+msgstr "Читать конфигурационные данные из ФÐЙЛÐ"
-#: nscd/nscd.c:99
+#: nscd/nscd.c:103
msgid "Do not fork and display messages on the current tty"
-msgstr "îÅ ÐÏÒÏÖÄÁÔØ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ, ÐÅÞÁÔÁÔØ ÓÏÏÂÝÅÎÉÑ ÎÁ ÔÅËÕÝÉÊ ÔÅÒÍÉÎÁÌ"
+msgstr "Ðе порождать дочерний процеÑÑ, печатать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð° текущий терминал"
-#: nscd/nscd.c:100
+#: nscd/nscd.c:104
msgid "NUMBER"
-msgstr "þéóìï"
+msgstr "ЧИСЛО"
-#: nscd/nscd.c:100
+#: nscd/nscd.c:104
msgid "Start NUMBER threads"
-msgstr "úÁÐÕÓÔÉÔØ ÕËÁÚÁÎÎÏÅ þéóìï ÎÉÔÅÊ"
+msgstr "ЗапуÑтить указанное ЧИСЛО нитей"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:105
msgid "Shut the server down"
-msgstr "÷ÙËÌÀÞÉÔØ ÓÅÒ×ÅÒ"
+msgstr "Выключить Ñервер"
-#: nscd/nscd.c:102
-msgid "Print current configuration statistic"
-msgstr "îÁÐÅÞÁÔÁÔØ ÓÔÁÔÉÓÔÉËÕ ÐÏ ÔÅËÕÝÅÊ ËÏÎÆÉÇÕÒÁÃÉÉ"
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
+msgstr "Ðапечатать ÑтатиÑтику по текущей конфигурации"
-#: nscd/nscd.c:103
+#: nscd/nscd.c:107
msgid "TABLE"
-msgstr "ôáâìéãá"
+msgstr "ТÐБЛИЦÐ"
-#: nscd/nscd.c:104
+#: nscd/nscd.c:108
msgid "Invalidate the specified cache"
-msgstr "ïÂßÑ×ÉÔØ ÕËÁÚÁÎÎÙÊ ËÜÛ ÎÅÄÅÊÓÔ×ÉÔÅÌØÎÙÍ"
+msgstr "ОбъÑвить указанный кÑш недейÑтвительным"
-#: nscd/nscd.c:105
+#: nscd/nscd.c:109
msgid "TABLE,yes"
-msgstr "ôáâìéãá,yes"
+msgstr "ТÐБЛИЦÐ,yes"
-#: nscd/nscd.c:106
+#: nscd/nscd.c:110
msgid "Use separate cache for each user"
-msgstr "éÓÐÏÌØÚÏ×ÁÔØ ÏÔÄÅÌØÎÙÊ ËÜÛ ÄÌÑ ËÁÖÄÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ"
+msgstr "ИÑпользовать отдельный кÑш Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ пользователÑ"
-#: nscd/nscd.c:111
+#: nscd/nscd.c:115
msgid "Name Service Cache Daemon."
-msgstr "äÅÍÏÎ ËÜÛÁ ÓÌÕÖÂÙ ÉÍÅÎ."
+msgstr "Демон кÑша Ñлужбы имен."
-#: nscd/nscd.c:143 nss/getent.c:858 nss/makedb.c:123
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
#, c-format
msgid "wrong number of arguments"
-msgstr "îÅÐÒÁ×ÉÌØÎÏÅ ÞÉÓÌÏ ÁÒÇÕÍÅÎÔÏ×"
+msgstr "Ðеправильное чиÑло аргументов"
-#: nscd/nscd.c:153
+#: nscd/nscd.c:157
#, c-format
msgid "failure while reading configuration file; this is fatal"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ; ÜÔÏ ÆÁÔÁÌØÎÙÊ ÓÂÏÊ"
+msgstr "невозможно прочитать файл конфигурации; Ñто фатальный Ñбой"
-#: nscd/nscd.c:162
+#: nscd/nscd.c:166
#, c-format
msgid "already running"
-msgstr "ÕÖÅ ÚÁÐÕÝÅÎ"
+msgstr "уже запущен"
-#: nscd/nscd.c:177 nscd/nscd.c:232
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
msgid "cannot fork"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÒÏÄÉÔØ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ"
+msgstr "невозможно породить дочерний процеÑÑ"
-#: nscd/nscd.c:240
+#: nscd/nscd.c:244
#, c-format
msgid "cannot change current working directory to \"/\""
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÍÅÎÉÔØ ÒÁÂÏÞÉÊ ËÁÔÁÌÏÇ ÎÁ \"/\""
+msgstr "невозможно Ñменить рабочий каталог на «/»"
-#: nscd/nscd.c:248
+#: nscd/nscd.c:252
msgid "Could not create log file"
-msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÆÁÊÌ ÐÒÏÔÏËÏÌÁ"
+msgstr "Ðе удалоÑÑŒ Ñоздать файл протокола"
-#: nscd/nscd.c:301 nscd/nscd.c:326 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
msgid "Only root is allowed to use this option!"
-msgstr "ôÏÌØËÏ ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌØ ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÜÔÏÔ ËÌÀÞ!"
+msgstr "Только Ñуперпользователь может иÑпользовать Ñтот ключ!"
+
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных %s"
-#: nscd/nscd.c:359 nscd/nscd_stat.c:191
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
msgid "write incomplete"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÚÁÐÉÓØ"
+msgstr "Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ"
-#: nscd/nscd.c:370
+#: nscd/nscd.c:381
#, c-format
msgid "cannot read invalidate ACK"
-msgstr ""
+msgstr "невозможно прочитать аннулированный ACK"
-#: nscd/nscd.c:376
+#: nscd/nscd.c:387
#, c-format
msgid "invalidation failed"
-msgstr ""
+msgstr "аннулирование не удалоÑÑŒ"
-#: nscd/nscd.c:386
+#: nscd/nscd.c:397
#, c-format
msgid "secure services not implemented anymore"
-msgstr ""
+msgstr "безопаÑные ÑервиÑÑ‹ более не поддерживаютÑÑ"
-#: nscd/nscd_conf.c:55
+#: nscd/nscd_conf.c:57
#, c-format
-msgid "database %s is not supported\n"
-msgstr "ÂÁÚÁ ÄÁÎÎÙÈ %s ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ\n"
+msgid "database %s is not supported"
+msgstr "база данных %s не поддерживаетÑÑ"
-#: nscd/nscd_conf.c:106
+#: nscd/nscd_conf.c:108
#, c-format
msgid "Parse error: %s"
-msgstr "ïÛÉÂËÁ ÒÁÚÂÏÒÁ: %s"
+msgstr "Ошибка разбора: %s"
-#: nscd/nscd_conf.c:191
+#: nscd/nscd_conf.c:194
#, c-format
msgid "Must specify user name for server-user option"
-msgstr "îÕÖÎÏ ÕËÁÚÁÔØ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ËÌÀÞÁ server-user"
+msgstr "Ðужно указать Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° server-user"
-#: nscd/nscd_conf.c:198
+#: nscd/nscd_conf.c:201
#, c-format
msgid "Must specify user name for stat-user option"
-msgstr "îÕÖÎÏ ÕËÁÚÁÔØ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ËÌÀÞÁ stat-user"
+msgstr "Ðужно указать Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° stat-user"
-#: nscd/nscd_conf.c:242
+#: nscd/nscd_conf.c:245
#, c-format
msgid "invalid value for 'reload-count': %u"
-msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ 'reload-count': %u"
+msgstr "недопуÑтимое значение Ð´Ð»Ñ Â«reload-count»: %u"
-#: nscd/nscd_conf.c:257
+#: nscd/nscd_conf.c:260
#, c-format
msgid "Must specify value for restart-interval option"
-msgstr "îÕÖÎÏ ÕËÁÚÁÔØ ÚÎÁÞÅÎÉÅ ÄÌÑ ËÌÀÞÁ restart-interval"
+msgstr "Ðужно указать значение Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° restart-interval"
-#: nscd/nscd_conf.c:271
+#: nscd/nscd_conf.c:274
#, c-format
msgid "Unknown option: %s %s %s"
-msgstr "îÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ: %s %s %s"
+msgstr "ÐеизвеÑтный ключ: %s %s %s"
-#: nscd/nscd_conf.c:284
+#: nscd/nscd_conf.c:287
#, c-format
msgid "cannot get current working directory: %s; disabling paranoia mode"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÔÅËÕÝÉÊ ÒÁÂÏÞÉÊ ËÁÔÁÌÏÇ: %s; ÐÁÒÁÎÏÉÄÁÌØÎÙÊ ÒÅÖÉÍ ×ÙËÌÀÞÅÎ"
+msgstr "невозможно получить текущий рабочий каталог: %s; параноидальный режим выключен"
-#: nscd/nscd_conf.c:304
+#: nscd/nscd_conf.c:307
#, c-format
msgid "maximum file size for %s database too small"
-msgstr "ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÆÁÊÌÁ ÄÌÑ ÂÁÚÙ ÄÁÎÎÙÈ %s ÓÌÉÛËÏÍ ÍÁÌ"
+msgstr "макÑимальный размер файла Ð´Ð»Ñ Ð±Ð°Ð·Ñ‹ данных %s Ñлишком мал"
#: nscd/nscd_stat.c:141
#, c-format
msgid "cannot write statistics: %s"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ ÓÔÁÔÉÓÔÉËÕ: %s"
+msgstr "невозможно запиÑать ÑтатиÑтику: %s"
#: nscd/nscd_stat.c:156
msgid "yes"
-msgstr "ÄÁ"
+msgstr "да"
#: nscd/nscd_stat.c:157
msgid "no"
-msgstr "ÎÅÔ"
+msgstr "нет"
#: nscd/nscd_stat.c:168
#, c-format
msgid "Only root or %s is allowed to use this option!"
-msgstr "ôÏÌØËÏ ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌØ ÉÌÉ %s ÍÏÇÕÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÜÔÏÔ ËÌÀÞ!"
+msgstr "Только Ñуперпользователь или %s могут иÑпользовать Ñтот ключ!"
#: nscd/nscd_stat.c:179
#, c-format
msgid "nscd not running!\n"
-msgstr "nscd ÎÅ ÚÁÐÕÝÅÎ!\n"
+msgstr "nscd не запущен!\n"
#: nscd/nscd_stat.c:203
#, c-format
msgid "cannot read statistics data"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÓÔÁÔÉÓÔÉÞÅÓËÉÅ ÄÁÎÎÙÅ"
+msgstr "невозможно Ñчитать ÑтатиÑтичеÑкие данные"
#: nscd/nscd_stat.c:206
#, c-format
@@ -3986,29 +4045,29 @@ msgid ""
"\n"
"%15d server debug level\n"
msgstr ""
-"ëÏÎÆÉÇÕÒÁÃÉÑ nscd:\n"
+"ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ nscd:\n"
"\n"
-"%15d ÕÒÏ×ÅÎØ ÏÔÌÁÄËÉ ÓÅÒ×ÅÒÁ\n"
+"%15d уровень отладки Ñервера\n"
#: nscd/nscd_stat.c:230
#, c-format
msgid "%3ud %2uh %2um %2lus server runtime\n"
-msgstr "%3ud %2uh %2um %2lus ×ÒÅÍÑ ÒÁÂÏÔÙ ÓÅÒ×ÅÒÁ\n"
+msgstr "%3ud %2uh %2um %2lus Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñервера\n"
#: nscd/nscd_stat.c:233
#, c-format
msgid " %2uh %2um %2lus server runtime\n"
-msgstr " %2uh %2um %2lus ×ÒÅÍÑ ÒÁÂÏÔÙ ÓÅÒ×ÅÒÁ\n"
+msgstr " %2uh %2um %2lus Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñервера\n"
#: nscd/nscd_stat.c:235
#, c-format
msgid " %2um %2lus server runtime\n"
-msgstr " %2um %2lus ×ÒÅÍÑ ÒÁÂÏÔÙ ÓÅÒ×ÅÒÁ\n"
+msgstr " %2um %2lus Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñервера\n"
#: nscd/nscd_stat.c:237
#, c-format
msgid " %2lus server runtime\n"
-msgstr " %2lus ×ÒÅÍÑ ÒÁÂÏÔÙ ÓÅÒ×ÅÒÁ\n"
+msgstr " %2lus Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñервера\n"
#: nscd/nscd_stat.c:239
#, c-format
@@ -4019,11 +4078,11 @@ msgid ""
"%15s paranoia mode enabled\n"
"%15lu restart internal\n"
msgstr ""
-"%15d ÔÅËÕÝÅÅ ËÏÌÉÞÅÓÔ×Ï ÔÒÅÄÏ×\n"
-"%15d ÍÁËÓÉÍÁÌØÎÏÅ ÞÉÓÌÏ ÔÒÅÄÏ×\n"
-"%15lu ÞÉÓÌÏ ÓÌÕÞÁÅ×, ËÏÇÄÁ ËÌÉÅÎÔÁÍ ÐÒÉÛÌÏÓØ ÖÄÁÔØ\n"
-"%15s ÐÁÒÁÎÏÉÄÁÌØÎÙÊ ÒÅÖÉÍ ×ËÌÀÞÅÎ\n"
-"%15lu ×ÎÕÔÒÅÎÎÉÊ ÐÅÒÅÚÁÐÕÓË\n"
+"%15d текущее количеÑтво потоков\n"
+"%15d макÑимальное чиÑло потоков\n"
+"%15lu чиÑло Ñлучаев, когда клиентам пришлоÑÑŒ ждать\n"
+"%15s параноидальный режим включен\n"
+"%15lu внутренний перезапуÑк\n"
#: nscd/nscd_stat.c:273
#, c-format
@@ -4053,120 +4112,120 @@ msgid ""
"%15s check /etc/%s for changes\n"
msgstr ""
"\n"
-"ëÜÛ %s:\n"
+"КÑш %s:\n"
"\n"
-"%15s ËÜÛ ÚÁÄÅÊÓÔ×Ï×ÁÎ\n"
-"%15s ËÜÛ ÐÏÓÔÏÑÎÎÙÊ\n"
-"%15s ËÜÛ ÒÁÚÄÅÌÑÅÍÙÊ\n"
-"%15Zu ÐÒÅÄÌÁÇÁÅÍÙÊ ÒÁÚÍÅÒ\n"
-"%15zu ÏÂÝÉÊ ÏÂßÅÍ ÐÕÌÁ ÄÁÎÎÙÈ\n"
-"%15zu ÉÓÐÏÌØÚÏ×ÁÎÎÙÊ ÏÂßÅÍ ÐÕÌÁ ÄÁÎÎÙÈ\n"
-"%15lu ÓÅËÕÎÄÙ ÖÉÚÎÉ ÄÌÑ ÐÏÌÏÖÉÔÅÌØÎÙÈ ÚÁÐÉÓÅÊ\n"
-"%15lu ÓÅËÕÎÄÙ ÖÉÚÎÉ ÄÌÑ ÏÔÒÉÃÁÔÅÌØÎÙÈ ÚÁÐÉÓÅÊ\n"
-"%15<PRIuMAX> ÐÏÐÁÄÁÎÉÑ ÎÁ ÐÏÌÏÖÉÔÅÌØÎÙÅ ÚÁÐÉÓÉ\n"
-"%15<PRIuMAX> ÐÏÐÁÄÁÎÉÑ ÎÁ ÏÔÒÉÃÁÔÅÌØÎÙÅ ÚÁÐÉÓÉ\n"
-"%15<PRIuMAX> ÐÒÏÍÁÈÉ ÎÁ ÐÏÌÏÖÉÔÅÌØÎÙÅ ÚÁÐÉÓÉ\n"
-"%15<PRIuMAX> ÐÒÏÍÁÈÉ ÎÁ ÏÔÒÉÃÁÔÅÌØÎÙÅ ÚÁÐÉÓÉ\n"
-"%15lu%% ÞÁÓÔÏÔÁ ÐÏÐÁÄÁÎÉÑ ÎÁ ËÜÛ\n"
-"%15zu ÔÅËÕÝÅÅ ÞÉÓÌÏ ËÜÛÉÒÏ×ÁÎÎÙÈ ÚÎÁÞÅÎÉÊ\n"
-"%15zu ÍÁËÓÉÍÁÌØÎÏÅ ÞÉÓÌÏ ËÜÛÉÒÏ×ÁÎÎÙÈ ÚÎÁÞÅÎÉÊ\n"
-"%15zu ÍÁËÓÉÍÁÌØÎÁÑ ÄÌÉÎÁ ÃÅÐÏÞËÉ ÐÏÉÓËÁ\n"
-"%15<PRIuMAX> ÞÉÓÌÏ ÚÁÄÅÒÖÅË ÎÁ rdlock\n"
-"%15<PRIuMAX> ÞÉÓÌÏ ÚÁÄÅÒÖÅË ÎÁ wrlock\n"
-"%15<PRIuMAX> ÞÉÓÌÏ ÏÛÉÂÏË ×ÙÄÅÌÅÎÉÑ ÐÁÍÑÔÉ\n"
-"%15s ÏÔÓÌÅÖÉ×ÁÀÔÓÑ ÌÉ ÉÚÍÅÎÅÎÉÑ /etc/%s \n"
-
-#: nscd/pwdcache.c:438
+"%15s кÑш задейÑтвован\n"
+"%15s кÑш поÑтоÑнный\n"
+"%15s кÑш разделÑемый\n"
+"%15Zu предлагаемый размер\n"
+"%15zu общий объем пула данных\n"
+"%15zu иÑпользованный объем пула данных\n"
+"%15lu Ñекунды жизни Ð´Ð»Ñ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… запиÑей\n"
+"%15lu Ñекунды жизни Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ñ†Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… запиÑей\n"
+"%15<PRIuMAX> Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð½Ð¸Ñ Ð½Ð° положительные запиÑи\n"
+"%15<PRIuMAX> Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð½Ð¸Ñ Ð½Ð° отрицательные запиÑи\n"
+"%15<PRIuMAX> промахи на положительные запиÑи\n"
+"%15<PRIuMAX> промахи на отрицательные запиÑи\n"
+"%15lu%% чаÑтота Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð½Ð¸Ñ Ð½Ð° кÑш\n"
+"%15zu текущее чиÑло кÑшированных значений\n"
+"%15zu макÑимальное чиÑло кÑшированных значений\n"
+"%15zu макÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° цепочки поиÑка\n"
+"%15<PRIuMAX> чиÑло задержек на rdlock\n"
+"%15<PRIuMAX> чиÑло задержек на wrlock\n"
+"%15<PRIuMAX> чиÑло ошибок Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти\n"
+"%15s отÑлеживаютÑÑ Ð»Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ /etc/%s \n"
+
+#: nscd/pwdcache.c:443
#, c-format
msgid "Haven't found \"%s\" in password cache!"
-msgstr "îÅ ÎÁÊÄÅÎÏ \"%s\" × ËÜÛÅ ÐÁÒÏÌÅÊ!"
+msgstr "Ðе найдено «%s» в кÑше паролей!"
-#: nscd/pwdcache.c:440
+#: nscd/pwdcache.c:445
#, c-format
msgid "Reloading \"%s\" in password cache!"
-msgstr "ðÅÒÅÚÁÇÒÕÚËÁ \"%s\" × ËÜÛÅ ÐÁÒÏÌÅÊ!"
+msgstr "Перезагрузка «%s» в кÑше паролей!"
-#: nscd/pwdcache.c:532
+#: nscd/pwdcache.c:523
#, c-format
msgid "Invalid numeric uid \"%s\"!"
-msgstr "îÅ×ÅÒÎÙÊ ÞÉÓÌÏ×ÏÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ \"%s\"!"
+msgstr "Ðеверный чиÑловой идентификатор Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Â«%s»!"
-#: nscd/selinux.c:151
+#: nscd/selinux.c:156
#, c-format
msgid "Failed opening connection to the audit subsystem: %m"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÓÏÅÄÉÎÅÎÉÅ Ó ÐÏÄÓÉÓÔÅÍÏÊ ÁÕÄÉÔÁ: %m"
+msgstr "Ðе удалоÑÑŒ открыть Ñоединение Ñ Ð¿Ð¾Ð´ÑиÑтемой аудита: %m"
-#: nscd/selinux.c:172
+#: nscd/selinux.c:177
msgid "Failed to set keep-capabilities"
-msgstr ""
+msgstr "Ðе удалоÑÑŒ уÑтановить возможноÑти хранениÑ"
-#: nscd/selinux.c:173 nscd/selinux.c:232
+#: nscd/selinux.c:178 nscd/selinux.c:241
#, c-format
msgid "prctl(KEEPCAPS) failed"
-msgstr "prctl(KEEPCAPS) ÎÅÕÓÐÅÛÎÁ"
+msgstr "prctl(KEEPCAPS) неуÑпешна"
-#: nscd/selinux.c:187
+#: nscd/selinux.c:192
msgid "Failed to initialize drop of capabilities"
-msgstr ""
+msgstr "Ðе удалоÑÑŒ инициализировать возможноÑти ÑброÑа"
-#: nscd/selinux.c:188
+#: nscd/selinux.c:193
#, c-format
msgid "cap_init failed"
-msgstr "cap_init ÎÅÕÓÐÅÛÎÁ"
+msgstr "cap_init неуÑпешна"
-#: nscd/selinux.c:205
-msgid "Failed to drop capabilities\n"
-msgstr ""
+#: nscd/selinux.c:214 nscd/selinux.c:231
+msgid "Failed to drop capabilities"
+msgstr "Ðе удалоÑÑŒ ÑброÑить возможноÑти"
-#: nscd/selinux.c:206 nscd/selinux.c:223
+#: nscd/selinux.c:215 nscd/selinux.c:232
#, c-format
msgid "cap_set_proc failed"
-msgstr "cap_set_proc ÎÅÕÓÐÅÛÎÁ"
+msgstr "cap_set_proc неуÑпешна"
-#: nscd/selinux.c:222
-msgid "Failed to drop capabilities"
-msgstr ""
-
-#: nscd/selinux.c:231
+#: nscd/selinux.c:240
msgid "Failed to unset keep-capabilities"
-msgstr ""
+msgstr "Ðе удалоÑÑŒ ÑнÑÑ‚ÑŒ возможноÑти хранениÑ"
-#: nscd/selinux.c:247
+#: nscd/selinux.c:256
msgid "Failed to determine if kernel supports SELinux"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÐÒÅÄÅÌÉÔØ, ÐÏÄÄÅÒÖÉ×ÁÅÔ ÌÉ ÑÄÒÏ SELinux"
+msgstr "Ðе удалоÑÑŒ определить, поддерживает ли Ñдро SELinux"
-#: nscd/selinux.c:262
+#: nscd/selinux.c:271
#, c-format
msgid "Failed to start AVC thread"
-msgstr "îÅ ÕÄÁÌÏÓØ ÚÁÐÕÓÔÉÔØ ÔÒÅÄ AVC"
+msgstr "Ðе удалоÑÑŒ запуÑтить тред AVC"
-#: nscd/selinux.c:284
+#: nscd/selinux.c:293
#, c-format
msgid "Failed to create AVC lock"
-msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÂÌÏËÉÒÏ×ËÕ"
+msgstr "Ðе удалоÑÑŒ Ñоздать блокировку"
-#: nscd/selinux.c:324
+#: nscd/selinux.c:333
#, c-format
msgid "Failed to start AVC"
-msgstr "îÅ ÕÄÁÌÏÓØ ÚÁÐÕÓÔÉÔØ AVC"
+msgstr "Ðе удалоÑÑŒ запуÑтить AVC"
-#: nscd/selinux.c:326
+#: nscd/selinux.c:335
msgid "Access Vector Cache (AVC) started"
-msgstr "Access Vector Cache (AVC) ÚÁÐÕÝÅÎ"
+msgstr "Access Vector Cache (AVC) запущен"
-#: nscd/selinux.c:347
+#: nscd/selinux.c:356
msgid "Error getting context of socket peer"
-msgstr "ïÛÉÂËÁ ÐÏÌÕÞÅÎÉÑ ËÏÎÔÅËÓÔÁ ÄÒÕÇÏÊ ÓÔÏÒÏÎÙ ÓÏËÅÔÁ"
+msgstr "Ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ‚ÐµÐºÑта другой Ñтороны Ñокета"
-#: nscd/selinux.c:352
+#: nscd/selinux.c:361
msgid "Error getting context of nscd"
-msgstr "ïÛÉÂËÁ ÐÏÌÕÞÅÎÉÑ ËÏÎÔÅËÓÔÁ nscd"
+msgstr "Ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ‚ÐµÐºÑта nscd"
-#: nscd/selinux.c:358
+#: nscd/selinux.c:367
msgid "Error getting sid from context"
-msgstr "ïÛÉÂËÁ ÐÏÌÕÞÅÎÉÑ sid ÉÚ ËÏÎÔÅËÓÔÁ"
+msgstr "Ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ sid из контекÑта"
-#: nscd/selinux.c:390
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr "отÑутÑтвует поддержка Ñтратегий баз данных при компилÑции"
+
+#: nscd/selinux.c:407
#, c-format
msgid ""
"\n"
@@ -4182,67 +4241,73 @@ msgid ""
"%15u CAV misses\n"
msgstr ""
"\n"
-"óÔÁÔÉÓÔÉËÁ AVC SELinux:\n"
+"СтатиÑтика AVC SELinux:\n"
"\n"
-"%15u ÐÏÉÓËÏ× ÚÁÐÉÓÅÊ\n"
-"%15u ÐÏÐÁÄÁÎÉÊ\n"
-"%15u ÐÒÏÍÁÈÏ×\n"
-"%15u ÓÂÒÏÓÏ× ÚÁÐÉÓÅÊ\n"
-"%15u ÐÏÉÓËÏ× CAV\n"
-"%15u ÐÏÐÁÄÁÎÉÊ CAV\n"
-"%15u ÐÒÏ×ÅÒÏË CAV\n"
-"%15u ÐÒÏÍÁÈÏ× CAV\n"
+"%15u поиÑков запиÑей\n"
+"%15u попаданий\n"
+"%15u промахов\n"
+"%15u ÑброÑов запиÑей\n"
+"%15u поиÑков CAV\n"
+"%15u попаданий CAV\n"
+"%15u проверок CAV\n"
+"%15u промахов CAV\n"
+
+#: nscd/servicescache.c:390
+#, c-format
+msgid "Haven't found \"%s\" in services cache!"
+msgstr "Ðе найдено \"%s\" в кÑше ÑервиÑов!"
+
+#: nscd/servicescache.c:392
+#, c-format
+msgid "Reloading \"%s\" in services cache!"
+msgstr "Перезагрузка \"%s\" в кÑше ÑервиÑов!"
#: nss/getent.c:52
msgid "database [key ...]"
-msgstr "ÂÁÚÁ-ÄÁÎÎÙÈ [ËÌÀÞ ...]"
+msgstr "база-данных [ключ ...]"
#: nss/getent.c:57
msgid "Service configuration to be used"
-msgstr "éÓÐÏÌØÚÕÅÍÁÑ ËÏÎÆÉÇÕÒÁÃÉÑ ÓÌÕÖÂÙ"
+msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñлужбы"
#: nss/getent.c:62
-msgid ""
-"Get entries from administrative database. For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"ðÏÌÕÞÁÅÔ ÚÁÐÉÓÉ ÉÚ ÁÄÍÉÎÉÓÔÒÁÔÉ×ÎÏÊ ÂÁÚÙ ÄÁÎÎÙÈ. éÎÓÔÒÕËÃÉÉ ÐÏ ÓÏÏÂÝÅÎÉÀ Ï ÏÛÉÂËÁÈ ÓÍÏÔÒÉÔÅ ÎÁ:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get entries from administrative database."
+msgstr "Получить запиÑи из управлÑющей базы данных."
-#: nss/getent.c:145 nss/getent.c:394
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
msgid "Enumeration not supported on %s\n"
-msgstr "ðÅÒÅÞÉÓÌÅÎÉÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÄÌÑ %s\n"
+msgstr "ПеречиÑление не поддерживаетÑÑ Ð´Ð»Ñ %s\n"
-#: nss/getent.c:782
+#: nss/getent.c:794
#, c-format
msgid "Unknown database name"
-msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÉÍÑ ÂÁÚÙ ÄÁÎÎÙÈ"
+msgstr "ÐеизвеÑтное Ð¸Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных"
-#: nss/getent.c:808
+#: nss/getent.c:820
msgid "Supported databases:\n"
-msgstr "ðÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÂÁÚÙ ÄÁÎÎÙÈ:\n"
+msgstr "Поддерживаемые базы данных:\n"
-#: nss/getent.c:868
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÂÁÚÁ ÄÁÎÎÙÈ: %s\n"
+msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных: %s\n"
#: nss/makedb.c:60
msgid "Convert key to lower case"
-msgstr "ðÒÅÏÂÒÁÚÏ×ÁÔØ ËÌÀÞ × ÎÉÖÎÉÊ ÒÅÇÉÓÔÒ"
+msgstr "Преобразовать ключ в нижний региÑÑ‚Ñ€"
#: nss/makedb.c:63
msgid "Do not print messages while building database"
-msgstr "îÅ ÐÅÞÁÔÁÔØ ÓÏÏÂÝÅÎÉÊ ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ ÂÁÚÙ ÄÁÎÎÙÈ"
+msgstr "Ðе печатать Ñообщений при поÑтроении базы данных"
#: nss/makedb.c:65
msgid "Print content of database file, one entry a line"
-msgstr "îÁÐÅÞÁÔÁÔØ ÓÏÄÅÒÖÉÍÏÅ ÆÁÊÌÁ ÂÁÚÙ ÄÁÎÎÙÈ, ÐÏ ÏÄÎÏÊ ÚÁÐÉÓÉ × ÓÔÒÏËÕ"
+msgstr "Ðапечатать Ñодержимое файла базы данных, по одной запиÑи в Ñтроку"
#: nss/makedb.c:70
msgid "Create simple DB database from textual input."
-msgstr "ðÏÓÔÒÏÉÔØ ÐÒÏÓÔÕÀ ÂÁÚÕ ÄÁÎÎÙÈ DB ÉÚ ÔÅËÓÔÏ×ÏÇÏ ××ÏÄÁ."
+msgstr "ПоÑтроить проÑтую базу данных DB из текÑтового ввода."
#: nss/makedb.c:73
msgid ""
@@ -4250,833 +4315,927 @@ msgid ""
"-o OUTPUT-FILE INPUT-FILE\n"
"-u INPUT-FILE"
msgstr ""
-"÷èïäîïê-æáêì ÷ùèïäîïê-æáêì\n"
-"-o ÷ùèïäîïê-æáêì ÷èïäîïê-æáêì\n"
-"-u ÷èïäîïê-æáêì"
+"ВХОДÐОЙ-ФÐЙЛ ВЫХОДÐОЙ-ФÐЙЛ\n"
+"-o ВЫХОДÐОЙ-ФÐЙЛ ВХОДÐОЙ-ФÐЙЛ\n"
+"-u ВХОДÐОЙ-ФÐЙЛ"
#: nss/makedb.c:142
#, c-format
msgid "No usable database library found."
-msgstr "îÅ ÎÁÊÄÅÎÏ ÐÏÄÈÏÄÑÝÅÊ ÂÉÂÌÉÏÔÅËÉ."
+msgstr "Ðе найдено подходÑщей библиотеки."
#: nss/makedb.c:149
#, c-format
msgid "cannot open database file `%s': %s"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÂÁÚÙ ÄÁÎÎÙÈ `%s': %s"
+msgstr "невозможно открыть файл базы данных «%s»: %s"
#: nss/makedb.c:151
msgid "incorrectly formatted file"
-msgstr "ÎÅÐÒÁ×ÉÌØÎÏ ÏÔÆÏÒÍÁÔÉÒÏ×ÁÎÎÙÊ ÆÁÊÌ"
+msgstr "неправильно отформатированный файл"
#: nss/makedb.c:331
msgid "duplicate key"
-msgstr "ÄÕÂÌÉÒÏ×ÁÎÎÙÊ ËÌÀÞ"
+msgstr "дублированный ключ"
#: nss/makedb.c:337
#, c-format
msgid "while writing database file"
-msgstr "ÐÒÉ ÚÁÐÉÓÉ ÆÁÊÌÁ ÂÁÚÙ ÄÁÎÎÙÈ"
+msgstr "при запиÑи файла базы данных"
#: nss/makedb.c:348
#, c-format
msgid "problems while reading `%s'"
-msgstr "ÐÒÏÂÌÅÍÙ ÐÒÉ ÞÔÅÎÉÉ `%s'"
+msgstr "проблемы при чтении «%s»"
#: nss/makedb.c:368 nss/makedb.c:385
#, c-format
msgid "while reading database"
-msgstr "ÐÒÉ ÞÔÅÎÉÉ ÂÁÚÙ ÄÁÎÎÙÈ"
+msgstr "при чтении базы данных"
-#: posix/getconf.c:940
+#: posix/getconf.c:945
#, c-format
msgid "Usage: %s [-v specification] variable_name [pathname]\n"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [-v ÓÐÅÃÉÆÉËÁÃÉÑ] ÉÍÑ-ÐÅÒÅÍÅÎÎÏÊ [ÐÕÔØ]\n"
+msgstr "ИÑпользование: %s [-v ÑпецификациÑ] имÑ-переменной [путь]\n"
-#: posix/getconf.c:943
+#: posix/getconf.c:948
#, c-format
msgid " %s -a [pathname]\n"
-msgstr " %s -a [ÐÕÔØ]\n"
+msgstr " %s -a [путь]\n"
-#: posix/getconf.c:1062
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
+"ИÑпользование: getconf [-v СПЕЦИФИКÐЦИЯ] ИМЯ-ПЕРЕМЕÐÐОЙ\n"
+" или: getconf [-v СПЕЦИФИКÐЦИЯ] ПЕРЕМЕÐÐÐЯ-ПУТИ ПУТЬ\n"
+"\n"
+"Получить конфигурационное значение переменной ИМЯ-ПЕРЕМЕÐÐОЙ, или\n"
+"переменной ПЕРЕМЕÐÐÐЯ-ПУТИ Ð´Ð»Ñ Ð¿ÑƒÑ‚Ð¸ ПУТЬ. ЕÑли указана СПЕЦИФИКÐЦИЯ,\n"
+"то выдаютÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ, задаваемые окружением СПЕЦИФИКÐЦИЯ.\n"
+"\n"
+
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
-msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ \"%s\""
+msgstr "неизвеÑÑ‚Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Â«%s»"
-#: posix/getconf.c:1090
+#: posix/getconf.c:1109
#, c-format
msgid "Couldn't execute %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ %s"
+msgstr "Ðевозможно выполнить %s"
-#: posix/getconf.c:1130 posix/getconf.c:1146
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
-msgstr "ÎÅ ÏÐÒÅÄÅÌÅÎÏ"
+msgstr "не определено"
-#: posix/getconf.c:1168
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
-msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ `%s'"
+msgstr "ÐераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Â«%s»"
-#: posix/getopt.c:571 posix/getopt.c:587
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: ËÌÀÞ `%s' ÎÅÏÄÎÏÚÎÁÞÅÎ\n"
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: неоднозначный ключ «%s»\n"
-#: posix/getopt.c:620 posix/getopt.c:624
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: ËÌÀÞ `--%s' ÎÅÌØÚÑ ÉÓÐÏÌØÚÏ×ÁÔØ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: ключ «--%s» должен иÑпользоватьÑÑ Ð±ÐµÐ· аргумента\n"
-#: posix/getopt.c:633 posix/getopt.c:638
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr "%s: ËÌÀÞ `%c%s' ÎÅÌØÚÑ ÉÓÐÏÌØÚÏ×ÁÔØ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: ключ «%c%s» должен иÑпользоватьÑÑ Ð±ÐµÐ· аргумента\n"
-#: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
-#: posix/getopt.c:1035
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: ËÌÀÞ `%s' ÔÒÅÂÕÅÔ ÁÒÇÕÍÅÎÔ\n"
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: ключ «%s» должен иÑпользоватьÑÑ Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼\n"
-#: posix/getopt.c:738 posix/getopt.c:741
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ËÌÀÞ `--%s'\n"
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: неизвеÑтный ключ «--%s»\n"
-#: posix/getopt.c:749 posix/getopt.c:752
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ËÌÀÞ `%c%s'\n"
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: неизвеÑтный ключ «%c%s»\n"
-#: posix/getopt.c:804 posix/getopt.c:807
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ËÌÀÞ -- %c\n"
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: неверный ключ -- «%c»\n"
-#: posix/getopt.c:813 posix/getopt.c:816
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
-msgid "%s: invalid option -- %c\n"
-msgstr "%s: ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- %c\n"
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: ключ должен иÑпользоватьÑÑ Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ -- «%c»\n"
-#: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
-#: posix/getopt.c:1106
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: ËÌÀÞ ÔÒÅÂÕÅÔ ÁÒÇÕÍÅÎÔ -- %c\n"
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: неоднозначный ключ «-W %s»\n"
-#: posix/getopt.c:937 posix/getopt.c:953
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: ËÌÀÞ `-W %s' ÎÅÏÄÎÏÚÎÁÞÅÎ\n"
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: ключ «-W %s» должен иÑпользоватьÑÑ Ð±ÐµÐ· аргумента\n"
-#: posix/getopt.c:977 posix/getopt.c:995
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr "%s: ËÌÀÞ `-W %s' ÎÅÌØÚÑ ÉÓÐÏÌØÚÏ×ÁÔØ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
-
-#: posix/regcomp.c:135
+#: posix/regcomp.c:136
msgid "No match"
-msgstr "îÅÔ ÓÏ×ÐÁÄÅÎÉÑ"
+msgstr "Ðет ÑовпадениÑ"
-#: posix/regcomp.c:138
+#: posix/regcomp.c:139
msgid "Invalid regular expression"
-msgstr "îÅ×ÅÒÎÏÅ ÒÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ"
+msgstr "Ðеверное регулÑрное выражение"
-#: posix/regcomp.c:141
+#: posix/regcomp.c:142
msgid "Invalid collation character"
-msgstr "îÅ×ÅÒÎÙÊ ÚÎÁË ÓÏÒÔÉÒÏ×ËÉ"
+msgstr "Ðеверный знак Ñортировки"
-#: posix/regcomp.c:144
+#: posix/regcomp.c:145
msgid "Invalid character class name"
-msgstr "îÅ×ÅÒÎÏÅ ÉÍÑ ËÌÁÓÓÁ ÚÎÁËÏ×"
+msgstr "Ðеверное Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑа знаков"
-#: posix/regcomp.c:147
+#: posix/regcomp.c:148
msgid "Trailing backslash"
-msgstr "ïÂÒÁÔÎÁÑ ËÏÓÁÑ ÞÅÒÔÁ × ËÏÎÃÅ"
+msgstr "ÐžÐ±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÐºÐ¾ÑÐ°Ñ Ñ‡ÐµÑ€Ñ‚Ð° в конце"
-#: posix/regcomp.c:150
+#: posix/regcomp.c:151
msgid "Invalid back reference"
-msgstr "îÅ×ÅÒÎÁÑ ÓÓÙÌËÁ ÎÁÚÁÄ"
+msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка назад"
-#: posix/regcomp.c:153
+#: posix/regcomp.c:154
msgid "Unmatched [ or [^"
-msgstr "îÅÐÁÒÎÁÑ [ ÉÌÉ [^"
+msgstr "ÐÐµÐ¿Ð°Ñ€Ð½Ð°Ñ [ или [^"
-#: posix/regcomp.c:156
+#: posix/regcomp.c:157
msgid "Unmatched ( or \\("
-msgstr "îÅÐÁÒÎÁÑ ( ÉÌÉ \\("
+msgstr "ÐÐµÐ¿Ð°Ñ€Ð½Ð°Ñ ( или \\("
-#: posix/regcomp.c:159
+#: posix/regcomp.c:160
msgid "Unmatched \\{"
-msgstr "îÅÐÁÒÎÁÑ \\{"
+msgstr "ÐÐµÐ¿Ð°Ñ€Ð½Ð°Ñ \\{"
-#: posix/regcomp.c:162
+#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
-msgstr "îÅ×ÅÒÎÏÅ ÓÏÄÅÒÖÉÍÏÅ × \\{\\}"
+msgstr "Ðеверное Ñодержимое в \\{\\}"
-#: posix/regcomp.c:165
+#: posix/regcomp.c:166
msgid "Invalid range end"
-msgstr "îÅ×ÅÒÎÙÊ ËÏÎÅà ÄÉÁÐÁÚÏÎÁ"
+msgstr "Ðеверный конец диапазона"
-#: posix/regcomp.c:168
+#: posix/regcomp.c:169
msgid "Memory exhausted"
-msgstr "ðÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
+msgstr "ПамÑÑ‚ÑŒ иÑчерпана"
-#: posix/regcomp.c:171
+#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
-msgstr "îÅ×ÅÒÎÏÅ ÐÒÅÄÛÅÓÔ×ÕÀÝÅÅ ÒÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ"
+msgstr "Ðеверное предшеÑтвующее регулÑрное выражение"
-#: posix/regcomp.c:174
+#: posix/regcomp.c:175
msgid "Premature end of regular expression"
-msgstr "ðÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ"
+msgstr "Преждевременный конец регулÑрного выражениÑ"
-#: posix/regcomp.c:177
+#: posix/regcomp.c:178
msgid "Regular expression too big"
-msgstr "òÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ ÓÌÉÛËÏÍ ×ÅÌÉËÏ"
+msgstr "РегулÑрное выражение Ñлишком велико"
-#: posix/regcomp.c:180
+#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
-msgstr "îÅÐÁÒÎÁÑ ) ÉÌÉ \\)"
+msgstr "ÐÐµÐ¿Ð°Ñ€Ð½Ð°Ñ ) или \\)"
-#: posix/regcomp.c:660
+#: posix/regcomp.c:681
msgid "No previous regular expression"
-msgstr "îÅÔ ÐÒÅÄÛÅÓÔ×ÕÀÝÅÇÏ ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ"
+msgstr "Ðет предшеÑтвующего регулÑрного выражениÑ"
-#: posix/wordexp.c:1798
+#: posix/wordexp.c:1832
msgid "parameter null or not set"
-msgstr "ÐÁÒÁÍÅÔÒ ÐÕÓÔ ÉÌÉ ÎÅ ÚÁÄÁÎ"
+msgstr "параметр пуÑÑ‚ или не задан"
#: resolv/herror.c:68
msgid "Resolver Error 0 (no error)"
-msgstr "ïÛÉÂËÁ ÒÅÓÏÌ×ÅÒÁ 0 (ÎÅÔ ÏÛÉÂËÉ)"
+msgstr "Ошибка реÑолвера 0 (нет ошибки)"
#: resolv/herror.c:69
msgid "Unknown host"
-msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÈÏÓÔ"
+msgstr "ÐеизвеÑтный хоÑÑ‚"
#: resolv/herror.c:70
msgid "Host name lookup failure"
-msgstr "óÂÏÊ ÐÏÉÓËÁ ÉÍÅÎÉ ÈÏÓÔÁ"
+msgstr "Сбой поиÑка имени хоÑта"
#: resolv/herror.c:71
msgid "Unknown server error"
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ ÓÅÒ×ÅÒÁ"
+msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñервера"
#: resolv/herror.c:72
msgid "No address associated with name"
-msgstr "ó ÉÍÅÎÅÍ ÎÅ Ó×ÑÚÁÎÏ ÎÉ ÏÄÎÏÇÏ ÁÄÒÅÓÁ"
+msgstr "С именем не ÑвÑзано ни одного адреÑа"
#: resolv/herror.c:107
msgid "Resolver internal error"
-msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ ÒÅÓÏÌ×ÅÒÁ"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° реÑолвера"
#: resolv/herror.c:110
msgid "Unknown resolver error"
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ ÒÅÓÏÌ×ÅÒÁ"
+msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° реÑолвера"
#: resolv/res_hconf.c:124
#, c-format
msgid "%s: line %d: cannot specify more than %d trim domains"
-msgstr ""
+msgstr "%s: Ñтрока %d: не удалоÑÑŒ указать более %d готовых доменов"
#: resolv/res_hconf.c:145
#, c-format
msgid "%s: line %d: list delimiter not followed by domain"
-msgstr "%s: ÓÔÒÏËÁ %d: ÐÏÓÌÅ ÒÁÚÄÅÌÉÔÅÌÑ ÓÐÉÓËÁ ÎÅ ÓÔÏÉÔ ÄÏÍÅÎ"
+msgstr "%s: Ñтрока %d: поÑле Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ»Ñ ÑпиÑка не Ñтоит домен"
#: resolv/res_hconf.c:204
#, c-format
msgid "%s: line %d: expected `on' or `off', found `%s'\n"
-msgstr "%s: ÓÔÒÏËÁ %d: ÏÖÉÄÁÅÔÓÑ `on' ÉÌÉ `off', ÎÁÊÄÅÎÏ `%s'\n"
+msgstr "%s: Ñтрока %d: ожидаетÑÑ Â«on» или «off», найдено «%s»\n"
#: resolv/res_hconf.c:247
#, c-format
msgid "%s: line %d: bad command `%s'\n"
-msgstr "%s: ÓÔÒÏËÁ %d: ÎÅÐÒÁ×ÉÌØÎÁÑ ËÏÍÁÎÄÁ `%s'\n"
+msgstr "%s: Ñтрока %d: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° «%s»\n"
#: resolv/res_hconf.c:282
#, c-format
msgid "%s: line %d: ignoring trailing garbage `%s'\n"
-msgstr "%s: ÓÔÒÏËÁ %d: ÉÇÎÏÒÉÒÏ×ÁÎ ÍÕÓÏÒ × ËÏÎÃÅ `%s'\n"
+msgstr "%s: Ñтрока %d: игнорирован муÑор в конце «%s»\n"
#: stdio-common/psignal.c:51
#, c-format
msgid "%s%sUnknown signal %d\n"
-msgstr "%s%sîÅÉÚ×ÅÓÔÎÙÊ ÓÉÇÎÁÌ %d\n"
+msgstr "%s%sÐеизвеÑтный Ñигнал %d\n"
#: stdio-common/psignal.c:52
msgid "Unknown signal"
-msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÓÉÇÎÁÌ"
+msgstr "ÐеизвеÑтный Ñигнал"
#: string/_strerror.c:45 sysdeps/mach/_strerror.c:87
msgid "Unknown error "
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ "
+msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° "
#: string/strerror.c:43
msgid "Unknown error"
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ"
+msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
#: string/strsignal.c:65
#, c-format
msgid "Real-time signal %d"
-msgstr "óÉÇÎÁÌ ÒÅÁÌØÎÏÇÏ ×ÒÅÍÅÎÉ %d"
+msgstr "Сигнал реального времени %d"
#: string/strsignal.c:69
#, c-format
msgid "Unknown signal %d"
-msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÓÉÇÎÁÌ %d"
+msgstr "ÐеизвеÑтный Ñигнал %d"
-#: sunrpc/auth_unix.c:114
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create: ÎÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ\n"
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "недоÑтаточно памÑти\n"
#: sunrpc/auth_unix.c:350
-msgid "auth_none.c - Fatal marshalling problem"
-msgstr "auth_none.c -- æÁÔÁÌØÎÁÑ ÏÛÉÂËÁ ÍÁÒÛÁÌÌÉÎÇÁ"
+msgid "auth_unix.c: Fatal marshalling problem"
+msgstr "auth_unix.c: Ð¤Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° маршаллинга"
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; ÎÉÖÎÑÑ ×ÅÒÓÉÑ = %lu, ×ÅÒÈÎÑÑ ×ÅÒÓÉÑ = %lu"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s: %s; нижнÑÑ Ð²ÐµÑ€ÑÐ¸Ñ = %lu, верхнÑÑ Ð²ÐµÑ€ÑÐ¸Ñ = %lu"
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr "; ÐÒÉÞÉÎÁ = "
+#: sunrpc/clnt_perr.c:112
+#, c-format
+msgid "%s: %s; why = %s\n"
+msgstr "%s: %s; причина = %s\n"
-#: sunrpc/clnt_perr.c:132
+#: sunrpc/clnt_perr.c:114
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(ÎÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ ÁÕÔÅÎÆÉËÁÃÉÉ -- %d)"
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s: %s; причина = (неизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° аутентификации - %d)\n"
-#: sunrpc/clnt_perr.c:172
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
-msgstr "RPC: õÓÐÅÈ"
+msgstr "RPC: УÑпех"
-#: sunrpc/clnt_perr.c:175
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
-msgstr "RPC: îÅ×ÏÚÍÏÖÎÏ ÚÁËÏÄÉÒÏ×ÁÔØ ÁÒÇÕÍÅÎÔÙ"
+msgstr "RPC: Ðевозможно закодировать аргументы"
-#: sunrpc/clnt_perr.c:179
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
-msgstr "RPC: îÅ×ÏÚÍÏÖÎÏ ÒÁÓËÏÄÉÒÏ×ÁÔØ ÒÅÚÕÌØÔÁÔ"
+msgstr "RPC: Ðевозможно раÑкодировать результат"
-#: sunrpc/clnt_perr.c:183
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
-msgstr "RPC: îÅ ÕÄÁÌÏÓØ ÐÏÓÌÁÔØ"
+msgstr "RPC: Ðе удалоÑÑŒ поÑлать"
-#: sunrpc/clnt_perr.c:187
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
-msgstr "RPC: îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ"
+msgstr "RPC: Ðе удалоÑÑŒ получить"
-#: sunrpc/clnt_perr.c:191
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
-msgstr "RPC: ÷ÒÅÍÑ ÏÖÉÄÁÎÉÑ ÉÓÔÅËÌÏ"
+msgstr "RPC: Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¸Ñтекло"
-#: sunrpc/clnt_perr.c:195
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
-msgstr "RPC: îÅÓÏ×ÍÅÓÔÉÍÙÅ ×ÅÒÓÉÉ RPC"
+msgstr "RPC: ÐеÑовмеÑтимые верÑии RPC"
-#: sunrpc/clnt_perr.c:199
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
-msgstr "RPC: ïÛÉÂËÁ ÁÕÔÅÎÆÉËÁÃÉÉ"
+msgstr "RPC: Ошибка аутентификации"
-#: sunrpc/clnt_perr.c:203
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
-msgstr "RPC: ðÒÏÇÒÁÍÍÁ ÎÅÄÏÓÔÕÐÎÁ"
+msgstr "RPC: Программа недоÑтупна"
-#: sunrpc/clnt_perr.c:207
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
-msgstr "RPC: îÅÓÏ×ÐÁÄÅÎÉÅ ÐÒÏÇÒÁÍÍÙ/×ÅÒÓÉÉ"
+msgstr "RPC: ÐеÑовпадение программы/верÑии"
-#: sunrpc/clnt_perr.c:211
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
-msgstr "RPC: ðÒÏÃÅÄÕÒÁ ÎÅÄÏÓÔÕÐÎÁ"
+msgstr "RPC: Процедура недоÑтупна"
-#: sunrpc/clnt_perr.c:215
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
-msgstr "RPC: óÅÒ×ÅÒ ÎÅ ÍÏÖÅÔ ÒÁÓËÏÄÉÒÏ×ÁÔØ ÁÒÇÕÍÅÎÔÙ"
+msgstr "RPC: Сервер не может раÑкодировать аргументы"
-#: sunrpc/clnt_perr.c:219
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
-msgstr "RPC: ïÛÉÂËÁ ÕÄÁÌÅÎÎÏÊ ÓÉÓÔÅÍÙ"
+msgstr "RPC: Ошибка удаленной ÑиÑтемы"
-#: sunrpc/clnt_perr.c:223
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
-msgstr "RPC: îÅÉÚ×ÅÓÔÎÙÊ ÈÏÓÔ"
+msgstr "RPC: ÐеизвеÑтный хоÑÑ‚"
-#: sunrpc/clnt_perr.c:227
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
-msgstr "RPC: îÅÉÚ×ÅÓÔÎÙÊ ÐÒÏÔÏËÏÌ"
+msgstr "RPC: ÐеизвеÑтный протокол"
-#: sunrpc/clnt_perr.c:231
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
-msgstr "RPC: óÂÏÊ ÏÔÏÂÒÁÖÁÔÅÌÑ ÐÏÒÔÏ×"
+msgstr "RPC: Сбой Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²"
-#: sunrpc/clnt_perr.c:235
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
-msgstr "RPC: ðÒÏÇÒÁÍÍÁ ÎÅ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÎÁ"
+msgstr "RPC: Программа не зарегиÑтрирована"
-#: sunrpc/clnt_perr.c:239
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
-msgstr "RPC: óÂÏÊ (ÏÛÉÂËÁ ÎÅ ÕËÁÚÁÎÁ)"
+msgstr "RPC: Сбой (ошибка не указана)"
-#: sunrpc/clnt_perr.c:280
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
-msgstr "RPC: (ÎÅÉÚ×ÅÓÔÎÙÊ ËÏÄ ÏÛÉÂËÉ)"
+msgstr "RPC: (неизвеÑтный код ошибки)"
-#: sunrpc/clnt_perr.c:342
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
-msgstr "áÕÔÅÎÆÉËÁÃÉÑ ÕÓÐÅÛÎÁ"
+msgstr "ÐÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÑƒÑпешна"
-#: sunrpc/clnt_perr.c:345
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
-msgstr "îÅ×ÅÒÎÙÊ ÒÅË×ÉÚÉÔ ËÌÉÅÎÔÁ"
+msgstr "Ðеверный реквизит клиента"
-#: sunrpc/clnt_perr.c:349
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
-msgstr "óÅÒ×ÅÒ ÏÔ×ÅÒÇ ÒÅË×ÉÚÉÔ"
+msgstr "Сервер отверг реквизит"
-#: sunrpc/clnt_perr.c:353
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
-msgstr ""
+msgstr "Ðеверный верификатор клиента"
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
-msgstr ""
+msgstr "Сервер отверг реквизит"
-#: sunrpc/clnt_perr.c:361
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
-msgstr "òÅË×ÉÚÉÔ ËÌÉÅÎÔÁ ÓÌÉÛËÏÍ ÓÌÁÂ"
+msgstr "Реквизит клиента Ñлишком Ñлаб"
-#: sunrpc/clnt_perr.c:365
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
-msgstr ""
+msgstr "Ðеверный верификатор Ñервера"
-#: sunrpc/clnt_perr.c:369
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
-msgstr "óÂÏÊ (ÏÛÉÂËÁ ÎÅ ÕËÁÚÁÎÁ)"
+msgstr "Сбой (ошибка не указана)"
#: sunrpc/clnt_raw.c:117
-msgid "clnt_raw.c - Fatal header serialization error."
-msgstr "clnt_raw.c -- æÁÔÁÌØÎÁÑ ÏÛÉÂËÁ ÓÅÒÉÁÌÉÚÁÃÉÉ ÚÁÇÏÌÏ×ËÁ."
-
-#: sunrpc/clnt_tcp.c:131
-msgid "clnttcp_create: out of memory\n"
-msgstr "clnttcp_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
-
-#: sunrpc/clnt_udp.c:139
-msgid "clntudp_create: out of memory\n"
-msgstr "clntudp_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
-
-#: sunrpc/clnt_unix.c:128
-msgid "clntunix_create: out of memory\n"
-msgstr "clntunix_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+msgid "clnt_raw.c: fatal header serialization error"
+msgstr "clnt_raw.c: Ñ„Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñериализации заголовка"
#: sunrpc/pm_getmaps.c:83
-msgid "pmap_getmaps rpc problem"
-msgstr "ÐÒÏÂÌÅÍÁ pmap_getmaps rpc"
+msgid "pmap_getmaps.c: rpc problem"
+msgstr "pmap_getmaps.c: проблема rpc"
#: sunrpc/pmap_clnt.c:129
msgid "Cannot register service"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÔØ ÓÌÕÖÂÕ"
+msgstr "Ðевозможно зарегиÑтрировать Ñлужбу"
#: sunrpc/pmap_rmt.c:248
msgid "Cannot create socket for broadcast rpc"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÏËÅÔ ÄÌÑ ÛÉÒÏËÏ×ÅÝÁÔÅÌØÎÏÇÏ rpc"
+msgstr "Ðевозможно Ñоздать Ñокет Ð´Ð»Ñ ÑˆÐ¸Ñ€Ð¾ÐºÐ¾Ð²ÐµÑ‰Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ rpc"
#: sunrpc/pmap_rmt.c:255
msgid "Cannot set socket option SO_BROADCAST"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ×ÏÚÍÏÖÎÏÓÔØ ÓÏËÅÔÁ SO_BROADCAST"
+msgstr "Ðевозможно уÑтановить возможноÑÑ‚ÑŒ Ñокета SO_BROADCAST"
#: sunrpc/pmap_rmt.c:307
msgid "Cannot send broadcast packet"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÓÌÁÔØ ÛÉÒÏËÏ×ÅÝÁÔÅÌØÎÙÊ ÐÁËÅÔ"
+msgstr "Ðевозможно поÑлать широковещательный пакет"
#: sunrpc/pmap_rmt.c:332
msgid "Broadcast poll problem"
-msgstr "ðÒÏÂÌÅÍÁ Ó ÛÉÒÏËÏ×ÅÝÁÔÅÌØÎÙÍ ÏÐÒÏÓÏÍ"
+msgstr "Проблема Ñ ÑˆÐ¸Ñ€Ð¾ÐºÐ¾Ð²ÐµÑ‰Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼ опроÑом"
#: sunrpc/pmap_rmt.c:345
msgid "Cannot receive reply to broadcast"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÏÔ×ÅÔ ÎÁ ÛÉÒÏËÏ×ÅÝÁÔÅÌØÎÏÅ ÓÏÏÂÝÅÎÉÅ"
+msgstr "Ðевозможно получить ответ на широковещательное Ñообщение"
-#: sunrpc/rpc_main.c:286
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
-msgstr "%s: ×Ù×ÏÄ ÐÅÒÅÚÁÐÉÓÁÌ ÂÙ %s\n"
+msgstr "%s: вывод перезапиÑал бы %s\n"
-#: sunrpc/rpc_main.c:293
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
-msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ %s: %m\n"
+msgstr "%s: невозможно открыть %s: %m\n"
-#: sunrpc/rpc_main.c:305
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
-msgstr "%s: ×Ï ×ÒÅÍÑ ÚÁÐÉÓÉ ×Ù×ÏÄÁ %s: %m"
+msgstr "%s: во Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿Ð¸Ñи вывода %s: %m"
-#: sunrpc/rpc_main.c:340
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÐÒÅÐÒÏÃÅÓÓÏÒ óÉ: %s \n"
+msgstr "невозможно найти препроцеÑÑор Си: %s \n"
-#: sunrpc/rpc_main.c:348
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÎÉËÁËÏÇÏ ÐÒÅÐÒÏÃÅÓÓÏÒÁ óÉ (cpp)\n"
+msgstr "невозможно найти никакого препроцеÑÑора Си (cpp)\n"
-#: sunrpc/rpc_main.c:417
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
-msgstr "%s: ÐÒÅÐÒÏÃÅÓÓÏÒ óÉ ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÓÐÅÛÎÏ Ó ÓÉÇÎÁÌÏÍ %d\n"
+msgstr "%s: препроцеÑÑор Си завершилÑÑ Ð½Ðµ уÑпешно Ñ Ñигналом %d\n"
-#: sunrpc/rpc_main.c:420
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
-msgstr "%s: ÐÒÅÐÒÏÃÅÓÓÏÒ óÉ ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÓÐÅÛÎÏ Ó ×ÙÈÏÄÎÙÍ ËÏÄÏÍ %d\n"
+msgstr "%s: препроцеÑÑор Си завершилÑÑ Ð½Ðµ уÑпешно Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ð¼ кодом %d\n"
-#: sunrpc/rpc_main.c:460
+#: sunrpc/rpc_main.c:464
#, c-format
-msgid "illegal nettype :`%s'\n"
-msgstr "ÎÅ×ÅÒÎÙÊ nettype :`%s'\n"
+msgid "illegal nettype: `%s'\n"
+msgstr "неверный nettype:«%s»\n"
-#: sunrpc/rpc_main.c:1122
+#: sunrpc/rpc_main.c:1130
#, c-format
msgid "rpcgen: too many defines\n"
-msgstr "rpcgen: ÓÌÉÛËÏÍ ÍÎÏÇÏ ÏÐÒÅÄÅÌÅÎÉÊ\n"
+msgstr "rpcgen: Ñлишком много определений\n"
-#: sunrpc/rpc_main.c:1134
+#: sunrpc/rpc_main.c:1142
#, c-format
msgid "rpcgen: arglist coding error\n"
-msgstr "rpcgen: ÏÛÉÂËÁ ËÏÄÉÒÏ×ÁÎÉÑ ÓÐÉÓËÁ ÁÒÇÕÍÅÎÔÏ×\n"
+msgstr "rpcgen: ошибка ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑпиÑка аргументов\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1167
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
-msgstr "ÆÁÊÌ `%s' ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ É ÍÏÖÅÔ ÂÙÔØ ÐÅÒÅÚÁÐÉÓÁÎ\n"
+msgstr "файл «%s» уже ÑущеÑтвует и может быть перезапиÑан\n"
-#: sunrpc/rpc_main.c:1212
+#: sunrpc/rpc_main.c:1220
#, c-format
msgid "Cannot specify more than one input file!\n"
-msgstr "îÅÌØÚÑ ÚÁÄÁ×ÁÔØ ÂÏÌÅÅ ÏÄÎÏÇÏ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ!\n"
+msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ð²Ð°Ñ‚ÑŒ более одного входного файла!\n"
-#: sunrpc/rpc_main.c:1382
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
-msgstr ""
+msgstr "Эта Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ðµ поддерживает код нового ÑÑ‚Ð¸Ð»Ñ Ð¸Ð»Ð¸ безопаÑный многопоточный код!\n"
-#: sunrpc/rpc_main.c:1391
+#: sunrpc/rpc_main.c:1403
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÌÁÇ netid Ó ÆÌÁÇÏÍ inetd!\n"
+msgstr "Ðевозможно иÑпользовать флаг netid Ñ Ñ„Ð»Ð°Ð³Ð¾Ð¼ inetd!\n"
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÌÁÇ netid ÂÅÚ TIRPC!\n"
+msgstr "Ðевозможно иÑпользовать флаг netid без TIRPC!\n"
-#: sunrpc/rpc_main.c:1410
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
-msgstr ""
+msgstr "Ðевозможно иÑпользовать флаги таблиц Ñ Ð½Ð¾Ð²Ñ‹Ð¼ Ñтилем!\n"
-#: sunrpc/rpc_main.c:1429
+#: sunrpc/rpc_main.c:1441
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
-msgstr "ôÒÅÂÕÅÔÓÑ ÚÁÄÁÔØ \"×ÈÏÄÎÏÊ-ÆÁÊÌ\" ÄÌÑ ÆÌÁÇÏ× ÇÅÎÅÒÉÒÏ×ÁÎÉÑ ÛÁÂÌÏÎÁ.\n"
+msgstr "ТребуетÑÑ Ð·Ð°Ð´Ð°Ñ‚ÑŒ «входной-файл» Ð´Ð»Ñ Ñ„Ð»Ð°Ð³Ð¾Ð² Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°.\n"
-#: sunrpc/rpc_main.c:1434
+#: sunrpc/rpc_main.c:1446
#, c-format
msgid "Cannot have more than one file generation flag!\n"
-msgstr "îÅÌØÚÑ ÚÁÄÁ×ÁÔØ ÂÏÌÅÅ ÏÄÎÏÇÏ ÆÌÁÇÁ ÇÅÎÅÒÉÒÏ×ÁÎÉÑ ÆÁÊÌÁ!\n"
+msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ð²Ð°Ñ‚ÑŒ более одного флага Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°!\n"
-#: sunrpc/rpc_main.c:1443
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
-msgstr "ÉÓÐÏÌØÚÏ×ÁÎÉÅ: %s ×ÈÏÄÎÏÊ-ÆÁÊÌ\n"
+msgstr "иÑпользование: %s входной-файл\n"
-#: sunrpc/rpc_main.c:1444
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
-msgstr "\t%s [-abkCLNTM][-Dname[=ÚÎÁÞÅÎÉÅ]] [-i ÒÁÚÍÅÒ] [-I [-K ÓÅËÕÎÄÙ]] [-Y ÐÕÔØ] ×ÈÏÄÎÏÊ-ÆÁÊÌ\n"
+msgstr "\t%s [-abkCLNTM][-Dname[=значение]] [-i размер] [-I [-K Ñекунды]] [-Y путь] входной-файл\n"
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
-msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o ×ÙÈÏÄÎÏÊ-ÆÁÊÌ] [×ÈÏÄÎÏÊ-ÆÁÊÌ]\n"
+msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o выходной-файл] [входной-файл]\n"
# ???
-#: sunrpc/rpc_main.c:1448
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
-msgstr "\t%s [-s nettype]* [-o ×ÙÈÏÄÎÏÊ-ÆÁÊÌ] [×ÈÏÄÎÏÊ-ÆÁÊÌ]\n"
+msgstr "\t%s [-s nettype]* [-o выходной-файл] [входной-файл]\n"
-#: sunrpc/rpc_main.c:1449
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
-msgstr "\t%s [-n netid]* [-o ×ÙÈÏÄÎÏÊ-ÆÁÊÌ] [×ÈÏÄÎÏÊ-ÆÁÊÌ]\n"
+msgstr "\t%s [-n netid]* [-o выходной-файл] [входной-файл]\n"
+
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr "ключи:\n"
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr "-a\t\tгенерировать вÑе файлы, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ñ‹\n"
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr "-b\t\tрежим обратной ÑовмеÑтимоÑти (генерируетÑÑ ÐºÐ¾Ð´ Ð´Ð»Ñ SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr "-c\t\tгенерировать процедуры XDR\n"
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr "-C\t\tрежим ANSI C\n"
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr "-DимÑ[=значение]\t определить Ñимвол (тоже что и #define)\n"
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr "-h\t\tгенерировать заголовочный файл\n"
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr "-i размер\t\tразмер, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ нужно начинать вÑтраивать код\n"
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr "-I\t\tгенерировать код Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ inetd на Ñервере (Ð´Ð»Ñ SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr "-K Ñекунды\tзавершение работы Ñервера поÑле K Ñекунд проÑтоÑ\n"
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr "-l\t\tгенерировать заглушки клиентÑкой Ñтороны\n"
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr "-L\t\tвыводить ошибки Ñервера в syslog\n"
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr "-m\t\tгенерировать заглушки Ñерверной Ñтороны\n"
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr "-M\t\tгенерировать MT-безопаÑный код\n"
+
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr "-n netid\tгенерировать Ñерверный код Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ именных netid\n"
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr "-N\t\tподдержка неÑкольких аргументов и вызова-по-значению\n"
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr "-o файл-рез\tÐ¸Ð¼Ñ Ñоздаваемого файла результата\n"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr "-s nettype\tгенерировать Ñерверный код Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ именных nettype\n"
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr "-Sc\t\tгенерировать примеры клиентÑкого кода, иÑп. удалённые процедуры\n"
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr "-Ss\t\tгенерировать примеры Ñерверного кода, опред. удалённые процедуры\n"
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr "-Sm \t\tгенерировать шаблон makefile \n"
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr "-t\t\tгенерировать таблицу раÑпределений RPC\n"
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr "-T\t\tгенерировать код Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ таблиц раÑпределений RPC\n"
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr "-Y путь\t\tÐ¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка препроцеÑÑора Си (cpp)\n"
#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
-msgstr "ÏÖÉÄÁÅÔÓÑ ËÏÎÓÔÁÎÔÁ ÉÌÉ ÉÄÅÎÔÉÆÉËÁÔÏÒ"
+msgstr "ожидаетÑÑ ÐºÐ¾Ð½Ñтанта или идентификатор"
#: sunrpc/rpc_scan.c:310
msgid "illegal character in file: "
-msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË × ÆÁÊÌÅ: "
+msgstr "неверный знак в файле: "
#: sunrpc/rpc_scan.c:349 sunrpc/rpc_scan.c:375
msgid "unterminated string constant"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÓÔÒÏËÏ×ÁÑ ËÏÎÓÔÁÎÔÁ"
+msgstr "Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ ÑÑ‚Ñ€Ð¾ÐºÐ¾Ð²Ð°Ñ ÐºÐ¾Ð½Ñтанта"
#: sunrpc/rpc_scan.c:381
msgid "empty char string"
-msgstr "ÐÕÓÔÁÑ ÓÔÒÏËÁ"
+msgstr "пуÑÑ‚Ð°Ñ Ñтрока"
#: sunrpc/rpc_scan.c:523 sunrpc/rpc_scan.c:533
msgid "preprocessor error"
-msgstr "ÏÛÉÂËÁ ÐÒÅÐÒÏÃÅÓÓÏÒÁ"
+msgstr "ошибка препроцеÑÑора"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
-msgstr "ÐÒÏÇÒÁÍÍÁ %lu ÎÅÄÏÓÔÕÐÎÁ\n"
+msgstr "программа %lu недоÑтупна\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
-msgstr "ÐÒÏÇÒÁÍÍÁ %lu ×ÅÒÓÉÉ %lu ÎÅÄÏÓÔÕÐÎÁ\n"
+msgstr "программа %lu верÑии %lu недоÑтупна\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
-msgstr "ÐÒÏÇÒÁÍÍÁ %lu ×ÅÒÓÉÉ %lu ÇÏÔÏ×Á É ÖÄÅÔ\n"
+msgstr "программа %lu верÑии %lu готова и ждет\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
-msgstr "rpcinfo: ÎÅ×ÏÚÍÏÖÎÏ Ó×ÑÚÁÔØÓÑ Ó ÏÔÏÂÒÁÖÁÔÅÌÅÍ ÐÏÒÔÏ×"
+msgstr "rpcinfo: невозможно ÑвÑзатьÑÑ Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶Ð°Ñ‚ÐµÐ»ÐµÐ¼ портов"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
-msgstr "îÅÔ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÎÎÙÈ ÕÄÁÌÅÎÎÙÈ ÐÒÏÇÒÁÍÍ.\n"
+msgstr "Ðет зарегиÑтрированных удаленных программ.\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
-msgstr " ÐÒÏÇ-ÍÁ ×ÅÒÓ ÐÒÏÔÏ ÐÏÒÔ\n"
+msgstr " прог-ма Ð²ÐµÑ€Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ порт\n"
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
-msgstr "(ÎÅÉÚ×ÅÓÔÎÏ)"
+msgstr "(неизвеÑтно)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
-msgstr "rpcinfo: ÛÉÒÏËÏ×ÅÝÁÔÅÌØÎÏÅ ÓÏÏÂÝÅÎÉÅ ÎÅÕÓÐÅÛÎÏ: %s\n"
+msgstr "rpcinfo: широковещательное Ñообщение не уÑпешно: %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
-msgstr "éÚ×ÉÎÉÔÅ, ×Ù ÎÅ ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌØ.\n"
+msgstr "Извините, вы не Ñуперпользователь.\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
-msgstr "rpcinfo: îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÒÅÇÉÓÔÒÁÃÉÀ ÐÒÏÇÒÁÍÍÙ %s ×ÅÒÓÉÉ %s\n"
+msgstr "rpcinfo: Ðевозможно удалить региÑтрацию программы %s верÑии %s\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
-msgstr "Usage: rpcinfo [ -n ÎÏÍÅÒ-ÐÏÒÔÁ ] -u ÈÏÓÔ ÎÏÍÅÒ-ÐÒÏÇÒÁÍÍÙ [ ÎÏÍÅÒ-×ÅÒÓÉÉ ]\n"
+msgstr "Usage: rpcinfo [ -n номер-порта ] -u хоÑÑ‚ номер-программы [ номер-верÑии ]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
-msgstr " rpcinfo [ -n ÎÏÍÅÒ-ÐÏÒÔÁ ] -t ÈÏÓÔ ÎÏÍÅÒ-ÐÒÏÇÒÁÍÍÙ [ ÎÏÍÅÒ-×ÅÒÓÉÉ ]\n"
+msgstr " rpcinfo [ -n номер-порта ] -t хоÑÑ‚ номер-программы [ номер-верÑии ]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
-msgstr " rpcinfo -p [ ÈÏÓÔ ]\n"
+msgstr " rpcinfo -p [ хоÑÑ‚ ]\n"
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
-msgstr " rpcinfo -b ÎÏÍÅÒ-ÐÒÏÇÒÁÍÍÙ ÎÏÍÅÒ-×ÅÒÓÉÉ\n"
+msgstr " rpcinfo -b номер-программы номер-верÑии\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
-msgstr " rpcinfo -d ÎÏÍÅÒ-ÐÒÏÇÒÁÍÍÙ ÎÏÍÅÒ-×ÅÒÓÉÉ\n"
+msgstr " rpcinfo -d номер-программы номер-верÑии\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
-msgstr "rpcinfo: ÓÌÕÖÂÁ %s ÎÅÉÚ×ÅÓÔÎÁ\n"
+msgstr "rpcinfo: Ñлужба %s неизвеÑтна\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
-msgstr "rpcinfo: ÈÏÓÔ %s ÎÅÉÚ×ÅÓÔÅÎ\n"
+msgstr "rpcinfo: хоÑÑ‚ %s неизвеÑтен\n"
-#: sunrpc/svc_run.c:76
+#: sunrpc/svc_run.c:70
+msgid "svc_run: - out of memory"
+msgstr "svc_run: недоÑтаточно памÑти"
+
+#: sunrpc/svc_run.c:90
msgid "svc_run: - poll failed"
-msgstr "svc_run: -- ÏÐÒÏÓ ÎÅÕÓÐÅÛÅÎ"
+msgstr "svc_run: -- Ð¾Ð¿Ñ€Ð¾Ñ Ð½ÐµÑƒÑпешен"
#: sunrpc/svc_simple.c:87
#, c-format
msgid "can't reassign procedure number %ld\n"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÎÁÚÎÁÞÉÔØ ÎÏÍÅÒ ÐÒÏÃÅÄÕÒÙ %ld\n"
+msgstr "невозможно переназначить номер процедуры %ld\n"
#: sunrpc/svc_simple.c:97
msgid "couldn't create an rpc server\n"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÅÒ×ÅÒ rpc\n"
+msgstr "невозможно Ñоздать Ñервер rpc\n"
#: sunrpc/svc_simple.c:105
#, c-format
msgid "couldn't register prog %ld vers %ld\n"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÔØ ÐÒÏÇÒÁÍÍÕ %ld ×ÅÒÓÉÉ %ld\n"
+msgstr "невозможно зарегиÑтрировать программу %ld верÑии %ld\n"
#: sunrpc/svc_simple.c:113
msgid "registerrpc: out of memory\n"
-msgstr "registerrpc: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+msgstr "registerrpc: памÑÑ‚ÑŒ иÑчерпана\n"
#: sunrpc/svc_simple.c:173
#, c-format
msgid "trouble replying to prog %d\n"
-msgstr "ÐÒÏÂÌÅÍÙ ÐÒÉ ÏÔÐÒÁ×ËÅ ÏÔ×ÅÔÁ ÐÒÏÇÒÁÍÍÅ %d\n"
+msgstr "проблемы при отправке ответа программе %d\n"
#: sunrpc/svc_simple.c:182
#, c-format
msgid "never registered prog %d\n"
-msgstr "ÎÉ ÒÁÚÕ ÎÅ ÒÅÇÉÓÔÒÉÒÏ×ÁÎÎÁÑ ÐÒÏÇÒÁÍÍÁ %d\n"
+msgstr "ни разу не региÑÑ‚Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° %d\n"
#: sunrpc/svc_tcp.c:155
msgid "svc_tcp.c - tcp socket creation problem"
-msgstr "svc_tcp.c -- ÐÒÏÂÌÅÍÁ ÐÒÉ ÓÏÚÄÁÎÉÉ tcp-ÓÏËÅÔÁ"
+msgstr "svc_tcp.c -- проблема при Ñоздании tcp-Ñокета"
#: sunrpc/svc_tcp.c:170
msgid "svc_tcp.c - cannot getsockname or listen"
-msgstr "svc_tcp.c -- ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ getsockname ÉÌÉ listen"
-
-#: sunrpc/svc_tcp.c:179
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
-
-#: sunrpc/svc_tcp.c:218
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp: makefd_xprt: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+msgstr "svc_tcp.c -- невозможно выполнить getsockname или listen"
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
-msgstr "svcudp_create: ÐÒÏÂÌÅÍÁ ÐÒÉ ÓÏÚÄÁÎÉÉ ÓÏËÅÔÁ"
+msgstr "svcudp_create: проблема при Ñоздании Ñокета"
#: sunrpc/svc_udp.c:142
msgid "svcudp_create - cannot getsockname"
-msgstr "svcudp_create -- ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ getsockname"
+msgstr "svcudp_create -- невозможно выполнить getsockname"
-#: sunrpc/svc_udp.c:152
-msgid "svcudp_create: out of memory\n"
-msgstr "svcudp_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
-
-#: sunrpc/svc_udp.c:174
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
-msgstr "svcudp_create: xp_pad ÓÌÉÛËÏÍ ÍÁÌÏ ÄÌÑ IP_PKTINFO\n"
+msgstr "svcudp_create: xp_pad Ñлишком мало Ð´Ð»Ñ IP_PKTINFO\n"
-#: sunrpc/svc_udp.c:474
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
-msgstr "enablecache: ËÜÛ ÕÖÅ ÚÁÄÅÊÓÔ×Ï×ÁÎ"
+msgstr "enablecache: кÑш уже задейÑтвован"
-#: sunrpc/svc_udp.c:480
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
-msgstr "enablecache: ÎÅ ÕÄÁÌÏÓØ ×ÙÄÅÌÉÔØ ÍÅÓÔÏ ÐÏÄ ËÜÛ"
+msgstr "enablecache: не удалоÑÑŒ выделить меÑто под кÑш"
-#: sunrpc/svc_udp.c:489
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
-msgstr "enablecache: ÎÅ ÕÄÁÌÏÓØ ×ÙÄÅÌÉÔØ ÍÅÓÔÏ ÐÏÄ ÄÁÎÎÙÅ ËÜÛÁ"
+msgstr "enablecache: не удалоÑÑŒ выделить меÑто под данные кÑша"
-#: sunrpc/svc_udp.c:497
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
-msgstr "enablecache: ÎÅ ÕÄÁÌÏÓØ ×ÙÄÅÌÉÔØ ÍÅÓÔÏ ÐÏÄ ÏÞÅÒÅÄØ ËÜÛÁ"
+msgstr "enablecache: не удалоÑÑŒ выделить меÑто под очередь кÑша"
-#: sunrpc/svc_udp.c:532
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
-msgstr "cache_set: ÖÅÒÔ×Á ÎÅ ÎÁÊÄÅÎÁ"
+msgstr "cache_set: жертва не найдена"
-#: sunrpc/svc_udp.c:543
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
-msgstr "cache_set: ÓÂÏÊ ×ÙÄÅÌÅÎÉÑ ÐÁÍÑÔÉ ÄÌÑ ÖÅÒÔ×Ù"
+msgstr "cache_set: Ñбой Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти Ð´Ð»Ñ Ð¶ÐµÑ€Ñ‚Ð²Ñ‹"
-#: sunrpc/svc_udp.c:550
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
-msgstr "cache_set: ÎÅ ÕÄÁÌÏÓØ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ ÐÏÄ ÎÏ×ÙÊ rpc_buffer"
+msgstr "cache_set: не удалоÑÑŒ выделить памÑÑ‚ÑŒ под новый rpc_buffer"
#: sunrpc/svc_unix.c:150
msgid "svc_unix.c - AF_UNIX socket creation problem"
-msgstr "svc_unix.c -- ÐÒÏÂÌÅÍÁ ÐÒÉ ÓÏÚÄÁÎÉÉ AF_UNIX-ÓÏËÅÔÁ"
+msgstr "svc_unix.c -- проблема при Ñоздании AF_UNIX-Ñокета"
#: sunrpc/svc_unix.c:166
msgid "svc_unix.c - cannot getsockname or listen"
-msgstr "svc_unix.c -- ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ getsockname ÉÌÉ listen"
-
-#: sunrpc/svc_unix.c:176
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
-
-#: sunrpc/svc_unix.c:215
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix: makefd_xprt: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
-
-#: sunrpc/xdr.c:566
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
-
-#: sunrpc/xdr.c:718
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
-
-#: sunrpc/xdr_array.c:106
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
-
-#: sunrpc/xdr_rec.c:156
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
-
-#: sunrpc/xdr_ref.c:86
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_reference: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
+msgstr "svc_unix.c -- невозможно выполнить getsockname или listen"
#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
msgid "Hangup"
-msgstr "ïÂÒÙ× ÔÅÒÍÉÎÁÌØÎÏÊ ÌÉÎÉÉ"
+msgstr "Обрыв терминальной линии"
#: sysdeps/generic/siglist.h:30 sysdeps/unix/siglist.c:28
msgid "Interrupt"
-msgstr "ðÒÅÒÙ×ÁÎÉÅ"
+msgstr "Прерывание"
#: sysdeps/generic/siglist.h:31 sysdeps/unix/siglist.c:29
msgid "Quit"
-msgstr "÷ÙÈÏÄ"
+msgstr "Выход"
#: sysdeps/generic/siglist.h:32 sysdeps/unix/siglist.c:30
msgid "Illegal instruction"
-msgstr "îÅÄÏÐÕÓÔÉÍÁÑ ÉÎÓÔÒÕËÃÉÑ"
+msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¸Ð½ÑтрукциÑ"
#: sysdeps/generic/siglist.h:33 sysdeps/unix/siglist.c:31
msgid "Trace/breakpoint trap"
-msgstr "ìÏ×ÕÛËÁ ÔÒÁÓÓÉÒÏ×ËÉ/ÏÓÔÁÎÏ×Á"
+msgstr "Ловушка траÑÑировки/оÑтанова"
#: sysdeps/generic/siglist.h:34
msgid "Aborted"
-msgstr "á×ÁÒÉÊÎÙÊ ÏÓÔÁÎÏ×"
+msgstr "Ðварийный оÑтанов"
#: sysdeps/generic/siglist.h:35 sysdeps/unix/siglist.c:34
msgid "Floating point exception"
-msgstr "éÓËÌÀÞÅÎÉÅ × ÏÐÅÒÁÃÉÉ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ"
+msgstr "ИÑключение в операции Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой"
#: sysdeps/generic/siglist.h:36 sysdeps/unix/siglist.c:35
msgid "Killed"
-msgstr "õÂÉÔÏ"
+msgstr "Убито"
#: sysdeps/generic/siglist.h:37 sysdeps/unix/siglist.c:36
msgid "Bus error"
-msgstr "ïÛÉÂËÁ ÛÉÎÙ"
+msgstr "Ошибка шины"
#: sysdeps/generic/siglist.h:38 sysdeps/unix/siglist.c:37
msgid "Segmentation fault"
-msgstr "ïÛÉÂËÁ ÓÅÇÍÅÎÔÉÒÏ×ÁÎÉÑ"
+msgstr "Ошибка ÑегментированиÑ"
#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
#. TRANS Every library function that returns this error code also generates a
@@ -5086,110 +5245,110 @@ msgstr "ïÛÉÂËÁ ÓÅÇÍÅÎÔÉÒÏ×ÁÎÉÑ"
#: sysdeps/generic/siglist.h:39 sysdeps/gnu/errlist.c:359
#: sysdeps/unix/siglist.c:39
msgid "Broken pipe"
-msgstr "ïÂÒÙ× ËÁÎÁÌÁ"
+msgstr "Обрыв канала"
#: sysdeps/generic/siglist.h:40 sysdeps/unix/siglist.c:40
msgid "Alarm clock"
-msgstr "óÉÇÎÁÌ ÔÁÊÍÅÒÁ"
+msgstr "Сигнал таймера"
#: sysdeps/generic/siglist.h:41 sysdeps/unix/siglist.c:41
msgid "Terminated"
-msgstr "úÁ×ÅÒÛÅÎÏ"
+msgstr "Завершено"
#: sysdeps/generic/siglist.h:42 sysdeps/unix/siglist.c:42
msgid "Urgent I/O condition"
-msgstr "óÉÔÕÁÃÉÑ ÓÒÏÞÎÏÇÏ ××ÏÄÁ/×Ù×ÏÄÁ"
+msgstr "Ð¡Ð¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ Ñрочного ввода/вывода"
#: sysdeps/generic/siglist.h:43 sysdeps/unix/siglist.c:43
msgid "Stopped (signal)"
-msgstr "ïÓÔÁÎÏ×ÌÅÎÏ (ÓÉÇÎÁÌ)"
+msgstr "ОÑтановлено (Ñигнал)"
#: sysdeps/generic/siglist.h:44 sysdeps/unix/siglist.c:44
msgid "Stopped"
-msgstr "ïÓÔÁÎÏ×ÌÅÎÏ"
+msgstr "ОÑтановлено"
#: sysdeps/generic/siglist.h:45 sysdeps/unix/siglist.c:45
msgid "Continued"
-msgstr "ðÒÏÄÏÌÖÅÎÏ"
+msgstr "Продолжено"
#: sysdeps/generic/siglist.h:46 sysdeps/unix/siglist.c:46
msgid "Child exited"
-msgstr "äÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ ÚÁ×ÅÒÛÉÌÓÑ"
+msgstr "Дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ"
#: sysdeps/generic/siglist.h:47 sysdeps/unix/siglist.c:47
msgid "Stopped (tty input)"
-msgstr "ïÓÔÁÎÏ×ÌÅÎÏ (××ÏÄ Ó ÔÅÒÍÉÎÁÌÁ)"
+msgstr "ОÑтановлено (ввод Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð»Ð°)"
#: sysdeps/generic/siglist.h:48 sysdeps/unix/siglist.c:48
msgid "Stopped (tty output)"
-msgstr "ïÓÔÁÎÏ×ÌÅÎÏ (×Ù×ÏÄ ÎÁ ÔÅÒÍÉÎÁÌ)"
+msgstr "ОÑтановлено (вывод на терминал)"
#: sysdeps/generic/siglist.h:49 sysdeps/unix/siglist.c:49
msgid "I/O possible"
-msgstr "÷ÏÚÍÏÖÅÎ ××ÏÄ/×Ù×ÏÄ"
+msgstr "Возможен ввод/вывод"
#: sysdeps/generic/siglist.h:50 sysdeps/unix/siglist.c:50
msgid "CPU time limit exceeded"
-msgstr "ðÒÅ×ÙÛÅÎ ÌÉÍÉÔ ÐÒÏÃÅÓÓÏÒÎÏÇÏ ×ÒÅÍÅÎÉ"
+msgstr "Превышен лимит процеÑÑорного времени"
#: sysdeps/generic/siglist.h:51 sysdeps/unix/siglist.c:51
msgid "File size limit exceeded"
-msgstr "ðÒÅ×ÙÛÅÎ ÌÉÍÉÔ ÒÁÚÍÅÒÁ ÆÁÊÌÁ"
+msgstr "Превышен лимит размера файла"
#: sysdeps/generic/siglist.h:52 sysdeps/unix/siglist.c:52
msgid "Virtual timer expired"
-msgstr "÷ÉÒÔÕÁÌØÎÙÊ ÔÁÊÍÅÒ ÉÓÔÅË"
+msgstr "Виртуальный таймер иÑтек"
#: sysdeps/generic/siglist.h:53 sysdeps/unix/siglist.c:53
msgid "Profiling timer expired"
-msgstr "ðÒÏÆÉÌÉÒÏ×ÏÞÎÙÊ ÔÁÊÍÅÒ ÉÓÔÅË"
+msgstr "Профилировочный таймер иÑтек"
#: sysdeps/generic/siglist.h:54 sysdeps/unix/siglist.c:54
msgid "Window changed"
-msgstr "ïËÎÏ ÉÚÍÅÎÉÌÏÓØ"
+msgstr "Окно изменилоÑÑŒ"
#: sysdeps/generic/siglist.h:55 sysdeps/unix/siglist.c:56
msgid "User defined signal 1"
-msgstr "ïÐÒÅÄÅÌÑÅÍÙÊ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÓÉÇÎÁÌ 1"
+msgstr "ОпределÑемый пользователем Ñигнал 1"
#: sysdeps/generic/siglist.h:56 sysdeps/unix/siglist.c:57
msgid "User defined signal 2"
-msgstr "ïÐÒÅÄÅÌÑÅÍÙÊ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÓÉÇÎÁÌ 2"
+msgstr "ОпределÑемый пользователем Ñигнал 2"
#: sysdeps/generic/siglist.h:60 sysdeps/unix/siglist.c:33
msgid "EMT trap"
-msgstr "ìÏ×ÕÛËÁ EMT"
+msgstr "Ловушка EMT"
#: sysdeps/generic/siglist.h:63 sysdeps/unix/siglist.c:38
msgid "Bad system call"
-msgstr "îÅ×ÅÒÎÙÊ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ×"
+msgstr "Ðеверный ÑиÑтемный вызов"
#: sysdeps/generic/siglist.h:66
msgid "Stack fault"
-msgstr "ïÛÉÂËÁ ÓÔÅËÁ"
+msgstr "Ошибка Ñтека"
#: sysdeps/generic/siglist.h:69
msgid "Information request"
-msgstr "úÁÐÒÏÓ ÉÎÆÏÒÍÁÃÉÉ"
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸"
#: sysdeps/generic/siglist.h:71
msgid "Power failure"
-msgstr "óÂÏÊ ÐÉÔÁÎÉÑ"
+msgstr "Сбой питаниÑ"
#: sysdeps/generic/siglist.h:74 sysdeps/unix/siglist.c:55
msgid "Resource lost"
-msgstr "ðÏÔÅÒÑ ÒÅÓÕÒÓÁ"
+msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ñ€ÐµÑурÑа"
#. TRANS Operation not permitted; only the owner of the file (or other resource)
#. TRANS or processes with special privileges can perform the operation.
#: sysdeps/gnu/errlist.c:25
msgid "Operation not permitted"
-msgstr "ïÐÅÒÁÃÉÑ ÎÅ ÐÏÚ×ÏÌÑÅÔÓÑ"
+msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ позволÑетÑÑ"
#. TRANS No process matches the specified process ID.
#: sysdeps/gnu/errlist.c:45
msgid "No such process"
-msgstr "îÅÔ ÔÁËÏÇÏ ÐÒÏÃÅÓÓÁ"
+msgstr "Ðет такого процеÑÑа"
#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
#. TRANS completion of the call. When this happens, you should try the call
@@ -5200,12 +5359,12 @@ msgstr "îÅÔ ÔÁËÏÇÏ ÐÒÏÃÅÓÓÁ"
#. TRANS Primitives}.
#: sysdeps/gnu/errlist.c:60
msgid "Interrupted system call"
-msgstr "ðÒÅÒ×ÁÎ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ×"
+msgstr "Прерван ÑиÑтемный вызов"
#. TRANS Input/output error; usually used for physical read or write errors.
#: sysdeps/gnu/errlist.c:69
msgid "Input/output error"
-msgstr "ïÛÉÂËÁ ××ÏÄÁ/×Ù×ÏÄÁ"
+msgstr "Ошибка ввода/вывода"
#. TRANS No such device or address. The system tried to use the device
#. TRANS represented by a file you specified, and it couldn't find the device.
@@ -5214,7 +5373,7 @@ msgstr "ïÛÉÂËÁ ××ÏÄÁ/×Ù×ÏÄÁ"
#. TRANS computer.
#: sysdeps/gnu/errlist.c:82
msgid "No such device or address"
-msgstr "îÅÔ ÔÁËÏÇÏ ÕÓÔÒÏÊÓÔ×Á ÉÌÉ ÁÄÒÅÓÁ"
+msgstr "Ðет такого уÑтройÑтва или адреÑа"
#. TRANS Argument list too long; used when the arguments passed to a new program
#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
@@ -5222,27 +5381,27 @@ msgstr "îÅÔ ÔÁËÏÇÏ ÕÓÔÒÏÊÓÔ×Á ÉÌÉ ÁÄÒÅÓÁ"
#. TRANS GNU system.
#: sysdeps/gnu/errlist.c:94
msgid "Argument list too long"
-msgstr "óÌÉÛËÏÍ ÄÌÉÎÎÙÊ ÓÐÉÓÏË ÁÒÇÕÍÅÎÔÏ×"
+msgstr "Слишком длинный ÑпиÑок аргументов"
#. TRANS Invalid executable file format. This condition is detected by the
#. TRANS @code{exec} functions; see @ref{Executing a File}.
#: sysdeps/gnu/errlist.c:104
msgid "Exec format error"
-msgstr "ïÛÉÂËÁ ÆÏÒÍÁÔÁ ×ÙÐÏÌÎÑÅÍÏÇÏ ÆÁÊÌÁ"
+msgstr "Ошибка формата выполнÑемого файла"
#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
#. TRANS closed or reading from a descriptor open only for writing (or vice
#. TRANS versa).
#: sysdeps/gnu/errlist.c:115
msgid "Bad file descriptor"
-msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ"
+msgstr "Ðеправильный деÑкриптор файла"
#. TRANS There are no child processes. This error happens on operations that are
#. TRANS supposed to manipulate child processes, when there aren't any processes
#. TRANS to manipulate.
#: sysdeps/gnu/errlist.c:126
msgid "No child processes"
-msgstr "îÅÔ ÄÏÞÅÒÎÉÈ ÐÒÏÃÅÓÓÏ×"
+msgstr "Ðет дочерних процеÑÑов"
#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
#. TRANS deadlock situation. The system does not guarantee that it will notice
@@ -5250,69 +5409,69 @@ msgstr "îÅÔ ÄÏÞÅÒÎÉÈ ÐÒÏÃÅÓÓÏ×"
#. TRANS noticed; it might just hang. @xref{File Locks}, for an example.
#: sysdeps/gnu/errlist.c:138
msgid "Resource deadlock avoided"
-msgstr "ðÒÅÄÏÔ×ÒÁÝÅÎÁ ÔÕÐÉËÏ×ÁÑ ÓÉÔÕÁÃÉÑ ÐÒÉ ÏÂÒÁÝÅÎÉÉ Ë ÒÅÓÕÒÓÕ"
+msgstr "Предотвращена Ñ‚ÑƒÐ¿Ð¸ÐºÐ¾Ð²Ð°Ñ ÑÐ¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸ обращении к реÑурÑу"
#. TRANS No memory available. The system cannot allocate more virtual memory
#. TRANS because its capacity is full.
#: sysdeps/gnu/errlist.c:148
msgid "Cannot allocate memory"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÄÅÌÉÔØ ÐÁÍÑÔØ"
+msgstr "Ðевозможно выделить памÑÑ‚ÑŒ"
#. TRANS Bad address; an invalid pointer was detected.
#. TRANS In the GNU system, this error never happens; you get a signal instead.
#: sysdeps/gnu/errlist.c:167
msgid "Bad address"
-msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÁÄÒÅÓ"
+msgstr "Ðеправильный адреÑ"
#. TRANS A file that isn't a block special file was given in a situation that
#. TRANS requires one. For example, trying to mount an ordinary file as a file
#. TRANS system in Unix gives this error.
#: sysdeps/gnu/errlist.c:178
msgid "Block device required"
-msgstr "ôÒÅÂÕÅÔÓÑ ÂÌÏÞÎÏÅ ÕÓÔÒÏÊÓÔ×Ï"
+msgstr "ТребуетÑÑ Ð±Ð»Ð¾Ñ‡Ð½Ð¾Ðµ уÑтройÑтво"
#. TRANS Resource busy; a system resource that can't be shared is already in use.
#. TRANS For example, if you try to delete a file that is the root of a currently
#. TRANS mounted filesystem, you get this error.
#: sysdeps/gnu/errlist.c:189
msgid "Device or resource busy"
-msgstr "õÓÔÒÏÊÓÔ×Ï ÉÌÉ ÒÅÓÕÒÓ ÚÁÎÑÔÏ"
+msgstr "УÑтройÑтво или реÑÑƒÑ€Ñ Ð·Ð°Ð½Ñто"
#. TRANS File exists; an existing file was specified in a context where it only
#. TRANS makes sense to specify a new file.
#: sysdeps/gnu/errlist.c:199
msgid "File exists"
-msgstr "æÁÊÌ ÓÕÝÅÓÔ×ÕÅÔ"
+msgstr "Файл ÑущеÑтвует"
#. TRANS An attempt to make an improper link across file systems was detected.
#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
#: sysdeps/gnu/errlist.c:210
msgid "Invalid cross-device link"
-msgstr "îÅ×ÅÒÎÁÑ ÓÓÙÌËÁ ÍÅÖÄÕ ÕÓÔÒÏÊÓÔ×ÁÍÉ"
+msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка между уÑтройÑтвами"
#. TRANS The wrong type of device was given to a function that expects a
#. TRANS particular sort of device.
#: sysdeps/gnu/errlist.c:220
msgid "No such device"
-msgstr "îÅÔ ÔÁËÏÇÏ ÕÓÔÒÏÊÓÔ×Á"
+msgstr "Ðет такого уÑтройÑтва"
#. TRANS A file that isn't a directory was specified when a directory is required.
#: sysdeps/gnu/errlist.c:229
msgid "Not a directory"
-msgstr "üÔÏ ÎÅ ËÁÔÁÌÏÇ"
+msgstr "Это не каталог"
#. TRANS File is a directory; you cannot open a directory for writing,
#. TRANS or create or remove hard links to it.
#: sysdeps/gnu/errlist.c:239
msgid "Is a directory"
-msgstr "üÔÏ ËÁÔÁÌÏÇ"
+msgstr "Это каталог"
#. TRANS Invalid argument. This is used to indicate various kinds of problems
#. TRANS with passing the wrong argument to a library function.
#: sysdeps/gnu/errlist.c:249
msgid "Invalid argument"
-msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÁÒÇÕÍÅÎÔ"
+msgstr "ÐедопуÑтимый аргумент"
#. TRANS The current process has too many files open and can't open any more.
#. TRANS Duplicate descriptors do count toward this limit.
@@ -5323,20 +5482,20 @@ msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÁÒÇÕÍÅÎÔ"
#. TRANS @pxref{Limits on Resources}.
#: sysdeps/gnu/errlist.c:264
msgid "Too many open files"
-msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÏÔËÒÙÔÙÈ ÆÁÊÌÏ×"
+msgstr "Слишком много открытых файлов"
#. TRANS There are too many distinct file openings in the entire system. Note
#. TRANS that any number of linked channels count as just one file opening; see
#. TRANS @ref{Linked Channels}. This error never occurs in the GNU system.
#: sysdeps/gnu/errlist.c:275
msgid "Too many open files in system"
-msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÏÔËÒÙÔÙÈ ÆÁÊÌÏ× × ÓÉÓÔÅÍÅ"
+msgstr "Слишком много открытых файлов в ÑиÑтеме"
#. TRANS Inappropriate I/O control operation, such as trying to set terminal
#. TRANS modes on an ordinary file.
#: sysdeps/gnu/errlist.c:285
msgid "Inappropriate ioctl for device"
-msgstr "îÅÐÒÉÍÅÎÉÍÙÊ Ë ÄÁÎÎÏÍÕ ÕÓÔÒÏÊÓÔ×Õ ioctl"
+msgstr "Ðеприменимый к данному уÑтройÑтву ioctl"
#. TRANS An attempt to execute a file that is currently open for writing, or
#. TRANS write to a file that is currently being executed. Often using a
@@ -5345,47 +5504,47 @@ msgstr "îÅÐÒÉÍÅÎÉÍÙÊ Ë ÄÁÎÎÏÍÕ ÕÓÔÒÏÊÓÔ×Õ ioctl"
#. TRANS is not an error in the GNU system; the text is copied as necessary.
#: sysdeps/gnu/errlist.c:298
msgid "Text file busy"
-msgstr "ôÅËÓÔÏ×ÙÊ ÆÁÊÌ ÚÁÎÑÔ"
+msgstr "ТекÑтовый файл занÑÑ‚"
#. TRANS File too big; the size of a file would be larger than allowed by the system.
#: sysdeps/gnu/errlist.c:307
msgid "File too large"
-msgstr "æÁÊÌ ÓÌÉÛËÏÍ ×ÅÌÉË"
+msgstr "Файл Ñлишком велик"
#. TRANS No space left on device; write operation on a file failed because the
#. TRANS disk is full.
#: sysdeps/gnu/errlist.c:317
msgid "No space left on device"
-msgstr "îÁ ÕÓÔÒÏÊÓÔ×Å ËÏÎÞÉÌÏÓØ ÍÅÓÔÏ"
+msgstr "Ðа уÑтройÑтве кончилоÑÑŒ меÑто"
#. TRANS Invalid seek operation (such as on a pipe).
#: sysdeps/gnu/errlist.c:326
msgid "Illegal seek"
-msgstr "îÅÄÏÐÕÓÔÉÍÁÑ ÏÐÅÒÁÃÉÑ ÓÍÅÝÅÎÉÑ"
+msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ ÑмещениÑ"
#. TRANS An attempt was made to modify something on a read-only file system.
#: sysdeps/gnu/errlist.c:335
msgid "Read-only file system"
-msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÄÏÓÔÕÐÎÁ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ"
+msgstr "Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема доÑтупна только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"
#. TRANS Too many links; the link count of a single file would become too large.
#. TRANS @code{rename} can cause this error if the file being renamed already has
#. TRANS as many links as it can take (@pxref{Renaming Files}).
#: sysdeps/gnu/errlist.c:346
msgid "Too many links"
-msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÓÓÙÌÏË"
+msgstr "Слишком много ÑÑылок"
#. TRANS Domain error; used by mathematical functions when an argument value does
#. TRANS not fall into the domain over which the function is defined.
#: sysdeps/gnu/errlist.c:369
msgid "Numerical argument out of domain"
-msgstr "þÉÓÌÏ×ÏÊ ÁÒÇÕÍÅÎÔ ×ÎÅ ÏÂÌÁÓÔÉ ÏÐÒÅÄÅÌÅÎÉÑ"
+msgstr "ЧиÑловой аргумент вне облаÑти определениÑ"
#. TRANS Range error; used by mathematical functions when the result value is
#. TRANS not representable because of overflow or underflow.
#: sysdeps/gnu/errlist.c:379
msgid "Numerical result out of range"
-msgstr "þÉÓÌÏ×ÏÊ ÒÅÚÕÌØÔÁÔ ×ÎÅ ÐÒÅÄÓÔÁ×ÉÍÏÇÏ ÄÉÁÐÁÚÏÎÁ"
+msgstr "ЧиÑловой результат вне предÑтавимого диапазона"
#. TRANS Resource temporarily unavailable; the call might work if you try again
#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
@@ -5418,7 +5577,7 @@ msgstr "þÉÓÌÏ×ÏÊ ÒÅÚÕÌØÔÁÔ ×ÎÅ ÐÒÅÄÓÔÁ×ÉÍÏÇÏ ÄÉÁÐÁÚÏÎÁ"
#. TRANS @end itemize
#: sysdeps/gnu/errlist.c:416
msgid "Resource temporarily unavailable"
-msgstr "òÅÓÕÒÓ ×ÒÅÍÅÎÎÏ ÎÅÄÏÓÔÕÐÅÎ"
+msgstr "РеÑÑƒÑ€Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ недоÑтупен"
#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
#. TRANS The values are always the same, on every operating system.
@@ -5427,7 +5586,7 @@ msgstr "òÅÓÕÒÓ ×ÒÅÍÅÎÎÏ ÎÅÄÏÓÔÕÐÅÎ"
#. TRANS separate error code.
#: sysdeps/gnu/errlist.c:429
msgid "Operation would block"
-msgstr "ïÐÅÒÁÃÉÑ ÐÒÉ×ÅÄÅÔ Ë ÂÌÏËÉÒÏ×ËÅ"
+msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÑ‚ к блокировке"
#. TRANS An operation that cannot complete immediately was initiated on an object
#. TRANS that has non-blocking mode selected. Some functions that must always
@@ -5439,47 +5598,47 @@ msgstr "ïÐÅÒÁÃÉÑ ÐÒÉ×ÅÄÅÔ Ë ÂÌÏËÉÒÏ×ËÅ"
#. TRANS has completed; @pxref{Waiting for I/O}.
#: sysdeps/gnu/errlist.c:445
msgid "Operation now in progress"
-msgstr "ïÐÅÒÁÃÉÑ ×ÙÐÏÌÎÑÅÔÓÑ × ÄÁÎÎÙÊ ÍÏÍÅÎÔ"
+msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑетÑÑ Ð² данный момент"
#. TRANS An operation is already in progress on an object that has non-blocking
#. TRANS mode selected.
#: sysdeps/gnu/errlist.c:455
msgid "Operation already in progress"
-msgstr "ïÐÅÒÁÃÉÑ ÕÖÅ ×ÙÐÏÌÎÑÅÔÓÑ"
+msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ ÑƒÐ¶Ðµ выполнÑетÑÑ"
#. TRANS A file that isn't a socket was specified when a socket is required.
#: sysdeps/gnu/errlist.c:464
msgid "Socket operation on non-socket"
-msgstr "ïÐÅÒÁÃÉÑ ÄÌÑ ÓÏËÅÔÁ ÐÒÉÍÅÎÅÎÁ Ë ÎÅ-ÓÏËÅÔÕ"
+msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ñокета применена к не-Ñокету"
#. TRANS The size of a message sent on a socket was larger than the supported
#. TRANS maximum size.
#: sysdeps/gnu/errlist.c:474
msgid "Message too long"
-msgstr "óÏÏÂÝÅÎÉÅ ÓÌÉÛËÏÍ ÄÌÉÎÎÏÅ"
+msgstr "Сообщение Ñлишком длинное"
#. TRANS The socket type does not support the requested communications protocol.
#: sysdeps/gnu/errlist.c:483
msgid "Protocol wrong type for socket"
-msgstr "îÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÄÌÑ ÓÏËÅÔÁ ÔÉÐ ÐÒÏÔÏËÏÌÁ"
+msgstr "Ðеподдерживаемый Ð´Ð»Ñ Ñокета тип протокола"
#. TRANS You specified a socket option that doesn't make sense for the
#. TRANS particular protocol being used by the socket. @xref{Socket Options}.
#: sysdeps/gnu/errlist.c:493
msgid "Protocol not available"
-msgstr "ðÒÏÔÏËÏÌ ÎÅÄÏÓÔÕÐÅÎ"
+msgstr "Протокол недоÑтупен"
#. TRANS The socket domain does not support the requested communications protocol
#. TRANS (perhaps because the requested protocol is completely invalid).
#. TRANS @xref{Creating a Socket}.
#: sysdeps/gnu/errlist.c:504
msgid "Protocol not supported"
-msgstr "ðÒÏÔÏËÏÌ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+msgstr "Протокол не поддерживаетÑÑ"
#. TRANS The socket type is not supported.
#: sysdeps/gnu/errlist.c:513
msgid "Socket type not supported"
-msgstr "îÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÔÉÐ ÓÏËÅÔÁ"
+msgstr "Ðеподдерживаемый тип Ñокета"
#. TRANS The operation you requested is not supported. Some socket functions
#. TRANS don't make sense for all types of sockets, and others may not be
@@ -5489,71 +5648,71 @@ msgstr "îÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÔÉÐ ÓÏËÅÔÁ"
#. TRANS nothing to do for that call.
#: sysdeps/gnu/errlist.c:527
msgid "Operation not supported"
-msgstr "îÅÐÏÄÄÅÒÖÉ×ÁÅÍÁÑ ÏÐÅÒÁÃÉÑ"
+msgstr "ÐÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ"
#. TRANS The socket communications protocol family you requested is not supported.
#: sysdeps/gnu/errlist.c:536
msgid "Protocol family not supported"
-msgstr "îÅÐÏÄÄÅÒÖÉ×ÁÅÍÏÅ ÓÅÍÅÊÓÔ×Ï ÐÒÏÔÏËÏÌÏ×"
+msgstr "Ðеподдерживаемое ÑемейÑтво протоколов"
#. TRANS The address family specified for a socket is not supported; it is
#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}.
#: sysdeps/gnu/errlist.c:546
msgid "Address family not supported by protocol"
-msgstr "óÅÍÅÊÓÔ×Ï ÁÄÒÅÓÏ× ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÐÒÏÔÏËÏÌÏÍ"
+msgstr "СемейÑтво адреÑов не поддерживаетÑÑ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ð¾Ð¼"
#. TRANS The requested socket address is already in use. @xref{Socket Addresses}.
#: sysdeps/gnu/errlist.c:555
msgid "Address already in use"
-msgstr "áÄÒÅÓ ÕÖÅ ÉÓÐÏÌØÚÕÅÔÓÑ"
+msgstr "ÐÐ´Ñ€ÐµÑ ÑƒÐ¶Ðµ иÑпользуетÑÑ"
#. TRANS The requested socket address is not available; for example, you tried
#. TRANS to give a socket a name that doesn't match the local host name.
#. TRANS @xref{Socket Addresses}.
#: sysdeps/gnu/errlist.c:566
msgid "Cannot assign requested address"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÚÎÁÞÉÔØ ÚÁÐÒÏÛÅÎÎÙÊ ÁÄÒÅÓ"
+msgstr "Ðевозможно назначить запрошенный адреÑ"
#. TRANS A socket operation failed because the network was down.
#: sysdeps/gnu/errlist.c:575
msgid "Network is down"
-msgstr "óÅÔØ ÎÅ ÒÁÂÏÔÁÅÔ"
+msgstr "Сеть не работает"
#. TRANS A socket operation failed because the subnet containing the remote host
#. TRANS was unreachable.
#: sysdeps/gnu/errlist.c:585
msgid "Network is unreachable"
-msgstr "óÅÔØ ÎÅÄÏÓÔÕÐÎÁ"
+msgstr "Сеть недоÑтупна"
#. TRANS A network connection was reset because the remote host crashed.
#: sysdeps/gnu/errlist.c:594
msgid "Network dropped connection on reset"
-msgstr "óÅÔÅ×ÏÅ ÓÏÅÄÉÎÅÎÉÅ ÂÙÌÏ ÓÂÒÏÛÅÎÏ"
+msgstr "Сетевое Ñоединение было Ñброшено"
#. TRANS A network connection was aborted locally.
#: sysdeps/gnu/errlist.c:603
msgid "Software caused connection abort"
-msgstr "ðÒÏÇÒÁÍÍÁ ×ÙÚ×ÁÌÁ ÓÂÒÏÓ ÓÏÅÄÉÎÅÎÉÑ"
+msgstr "Программа вызвала ÑÐ±Ñ€Ð¾Ñ ÑоединениÑ"
#. TRANS A network connection was closed for reasons outside the control of the
#. TRANS local host, such as by the remote machine rebooting or an unrecoverable
#. TRANS protocol violation.
#: sysdeps/gnu/errlist.c:614
msgid "Connection reset by peer"
-msgstr "óÏÅÄÉÎÅÎÉÅ ÓÂÒÏÛÅÎÏ ÄÒÕÇÏÊ ÓÔÏÒÏÎÏÊ"
+msgstr "Соединение Ñброшено другой Ñтороной"
#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this
#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
#. TRANS other from network operations.
#: sysdeps/gnu/errlist.c:625
msgid "No buffer space available"
-msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÂÕÆÅÒÎÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á"
+msgstr "ÐедоÑтаточно буферного проÑтранÑтва"
#. TRANS You tried to connect a socket that is already connected.
#. TRANS @xref{Connecting}.
#: sysdeps/gnu/errlist.c:635
msgid "Transport endpoint is already connected"
-msgstr "ëÏÎÅÞÎÁÑ ÔÏÞËÁ ÐÅÒÅÄÁÞÉ ÕÖÅ ÐÏÄÓÏÅÄÉÎÅÎÁ"
+msgstr "ÐšÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° передачи уже подÑоединена"
#. TRANS The socket is not connected to anything. You get this error when you
#. TRANS try to transmit data over a socket, without first specifying a
@@ -5561,83 +5720,83 @@ msgstr "ëÏÎÅÞÎÁÑ ÔÏÞËÁ ÐÅÒÅÄÁÞÉ ÕÖÅ ÐÏÄÓÏÅÄÉÎÅÎÁ"
#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
#: sysdeps/gnu/errlist.c:647
msgid "Transport endpoint is not connected"
-msgstr "ëÏÎÅÞÎÁÑ ÔÏÞËÁ ÐÅÒÅÄÁÞÉ ÎÅ ÐÏÄÓÏÅÄÉÎÅÎÁ"
+msgstr "ÐšÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° передачи не подÑоединена"
#. TRANS No default destination address was set for the socket. You get this
#. TRANS error when you try to transmit data over a connectionless socket,
#. TRANS without first specifying a destination for the data with @code{connect}.
#: sysdeps/gnu/errlist.c:658
msgid "Destination address required"
-msgstr "ôÒÅÂÕÅÔÓÑ ÕËÁÚÁÔØ ÁÄÒÅÓ ÎÁÚÎÁÞÅÎÉÑ"
+msgstr "ТребуетÑÑ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ Ð°Ð´Ñ€ÐµÑ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ"
#. TRANS The socket has already been shut down.
#: sysdeps/gnu/errlist.c:667
msgid "Cannot send after transport endpoint shutdown"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÓÌÁÔØ ÄÁÎÎÙÅ ÐÏÓÌÅ ×ÙËÌÀÞÅÎÉÑ ËÏÎÅÞÎÏÊ ÔÏÞËÉ ÐÅÒÅÄÁÞÉ"
+msgstr "Ðевозможно поÑлать данные поÑле Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÐµÑ‡Ð½Ð¾Ð¹ точки передачи"
#. TRANS ???
#: sysdeps/gnu/errlist.c:676
msgid "Too many references: cannot splice"
-msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÓÓÙÌÏË: ÎÅ×ÏÚÍÏÖÎÏ ÏÂßÅÄÉÎÉÔØ"
+msgstr "Слишком много ÑÑылок: невозможно объединить"
#. TRANS A socket operation with a specified timeout received no response during
#. TRANS the timeout period.
#: sysdeps/gnu/errlist.c:686
msgid "Connection timed out"
-msgstr "÷ÒÅÍÑ ÏÖÉÄÁÎÉÑ ÓÏÅÄÉÎÅÎÉÑ ÉÓÔÅËÌÏ"
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸Ñтекло"
#. TRANS A remote host refused to allow the network connection (typically because
#. TRANS it is not running the requested service).
#: sysdeps/gnu/errlist.c:696
msgid "Connection refused"
-msgstr "÷ ÓÏÅÄÉÎÅÎÉÉ ÏÔËÁÚÁÎÏ"
+msgstr "Ð’ Ñоединении отказано"
#. TRANS Too many levels of symbolic links were encountered in looking up a file name.
#. TRANS This often indicates a cycle of symbolic links.
#: sysdeps/gnu/errlist.c:706
msgid "Too many levels of symbolic links"
-msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÕÒÏ×ÎÅÊ ÓÉÍ×ÏÌØÎÙÈ ÓÓÙÌÏË"
+msgstr "Слишком много уровней Ñимвольных ÑÑылок"
#. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for
#. TRANS Files}) or host name too long (in @code{gethostname} or
#. TRANS @code{sethostname}; @pxref{Host Identification}).
#: sysdeps/gnu/errlist.c:717
msgid "File name too long"
-msgstr "óÌÉÛËÏÍ ÄÌÉÎÎÏÅ ÉÍÑ ÆÁÊÌÁ"
+msgstr "Слишком длинное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
#. TRANS The remote host for a requested network connection is down.
#: sysdeps/gnu/errlist.c:726
msgid "Host is down"
-msgstr "èÏÓÔ ×ÙËÌÀÞÅÎ"
+msgstr "ХоÑÑ‚ выключен"
#. TRANS The remote host for a requested network connection is not reachable.
#: sysdeps/gnu/errlist.c:735
msgid "No route to host"
-msgstr "îÅÔ ÐÕÔÉ ÄÏ ÈÏÓÔÁ"
+msgstr "Ðет пути до хоÑта"
#. TRANS Directory not empty, where an empty directory was expected. Typically,
#. TRANS this error occurs when you are trying to delete a directory.
#: sysdeps/gnu/errlist.c:745
msgid "Directory not empty"
-msgstr "ëÁÔÁÌÏÇ ÎÅ ÐÕÓÔ"
+msgstr "Каталог не пуÑÑ‚"
#. TRANS This means that the per-user limit on new process would be exceeded by
#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on
#. TRANS the @code{RLIMIT_NPROC} limit.
#: sysdeps/gnu/errlist.c:756
msgid "Too many processes"
-msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÐÒÏÃÅÓÓÏ×"
+msgstr "Слишком много процеÑÑов"
#. TRANS The file quota system is confused because there are too many users.
#. TRANS @c This can probably happen in a GNU system when using NFS.
#: sysdeps/gnu/errlist.c:766
msgid "Too many users"
-msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÅÊ"
+msgstr "Слишком много пользователей"
#. TRANS The user's disk quota was exceeded.
#: sysdeps/gnu/errlist.c:775
msgid "Disk quota exceeded"
-msgstr "ðÒÅ×ÙÛÅÎÁ ÄÉÓËÏ×ÁÑ Ë×ÏÔÁ"
+msgstr "Превышена диÑÐºÐ¾Ð²Ð°Ñ ÐºÐ²Ð¾Ñ‚Ð°"
#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS
#. TRANS system which is due to file system rearrangements on the server host.
@@ -5645,7 +5804,7 @@ msgstr "ðÒÅ×ÙÛÅÎÁ ÄÉÓËÏ×ÁÑ Ë×ÏÔÁ"
#. TRANS the NFS file system on the local host.
#: sysdeps/gnu/errlist.c:787
msgid "Stale NFS file handle"
-msgstr "õÓÔÁÒÅ×ÛÉÊ ÈÜÎÄÌ ÆÁÊÌÁ NFS"
+msgstr "УÑтаревший Ñ…Ñндл файла NFS"
#. TRANS An attempt was made to NFS-mount a remote file system with a file name that
#. TRANS already specifies an NFS-mounted file.
@@ -5653,32 +5812,32 @@ msgstr "õÓÔÁÒÅ×ÛÉÊ ÈÜÎÄÌ ÆÁÊÌÁ NFS"
#. TRANS properly on the GNU system, making this error code impossible.)
#: sysdeps/gnu/errlist.c:799
msgid "Object is remote"
-msgstr "üÔÏ ÕÄÁÌÅÎÎÙÊ ÏÂßÅËÔ"
+msgstr "Это удаленный объект"
#. TRANS ???
#: sysdeps/gnu/errlist.c:808
msgid "RPC struct is bad"
-msgstr " RPC ÎÅÐÒÁ×ÉÌØÎÁÑ ÓÔÒÕËÔÕÒÁ"
+msgstr " RPC Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñтруктура"
#. TRANS ???
#: sysdeps/gnu/errlist.c:817
msgid "RPC version wrong"
-msgstr "RPC ÎÅÐÒÁ×ÉÌØÎÁÑ ×ÅÒÓÉÑ"
+msgstr "RPC Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð²ÐµÑ€ÑиÑ"
#. TRANS ???
#: sysdeps/gnu/errlist.c:826
msgid "RPC program not available"
-msgstr "RPC ÐÒÏÇÒÁÍÍÁ ÎÅÄÏÓÔÕÐÎÁ"
+msgstr "RPC программа недоÑтупна"
#. TRANS ???
#: sysdeps/gnu/errlist.c:835
msgid "RPC program version wrong"
-msgstr "RPC ÎÅÐÒÁ×ÉÌØÎÁÑ ×ÅÒÓÉÑ ÐÒÏÇÒÁÍÍÙ"
+msgstr "RPC Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹"
#. TRANS ???
#: sysdeps/gnu/errlist.c:844
msgid "RPC bad procedure for program"
-msgstr "RPC ÎÅÐÒÁ×ÉÌØÎÁÑ ÐÒÏÃÅÄÕÒÁ ÄÌÑ ÐÒÏÇÒÁÍÍÙ"
+msgstr "RPC Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹"
#. TRANS No locks available. This is used by the file locking facilities; see
#. TRANS @ref{File Locks}. This error is never generated by the GNU system, but
@@ -5686,7 +5845,7 @@ msgstr "RPC ÎÅÐÒÁ×ÉÌØÎÁÑ ÐÒÏÃÅÄÕÒÁ ÄÌÑ ÐÒÏÇÒÁÍÍÙ"
#. TRANS operating system.
#: sysdeps/gnu/errlist.c:856
msgid "No locks available"
-msgstr "îÅÔ ÄÏÓÔÕÐÎÙÈ ÂÌÏËÉÒÏ×ÏË"
+msgstr "Ðет доÑтупных блокировок"
#. TRANS Inappropriate file type or format. The file was the wrong type for the
#. TRANS operation, or a data file had the wrong format.
@@ -5695,17 +5854,17 @@ msgstr "îÅÔ ÄÏÓÔÕÐÎÙÈ ÂÌÏËÉÒÏ×ÏË"
#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
#: sysdeps/gnu/errlist.c:869
msgid "Inappropriate file type or format"
-msgstr "îÅÐÏÄÈÏÄÑÝÉÊ ÔÉÐ ÉÌÉ ÆÏÒÍÁÔ ÆÁÊÌÁ"
+msgstr "ÐеподходÑщий тип или формат файла"
#. TRANS ???
#: sysdeps/gnu/errlist.c:878
msgid "Authentication error"
-msgstr "ïÛÉÂËÁ ÁÕÔÅÎÆÉËÁÃÉÉ"
+msgstr "Ошибка аутентификации"
#. TRANS ???
#: sysdeps/gnu/errlist.c:887
msgid "Need authenticator"
-msgstr "îÅÏÂÈÏÄÉÍ ÁÕÔÅÎÆÉËÁÔÏÒ"
+msgstr "Ðеобходим аутентификатор"
#. TRANS Function not implemented. This indicates that the function called is
#. TRANS not implemented at all, either in the C library itself or in the
@@ -5714,7 +5873,7 @@ msgstr "îÅÏÂÈÏÄÉÍ ÁÕÔÅÎÆÉËÁÔÏÒ"
#. TRANS install a new version of the C library or the operating system.
#: sysdeps/gnu/errlist.c:900
msgid "Function not implemented"
-msgstr "æÕÎËÃÉÑ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ"
+msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ реализована"
#. TRANS Not supported. A function returns this error when certain parameter
#. TRANS values are valid, but the functionality they request is not available.
@@ -5730,13 +5889,13 @@ msgstr "æÕÎËÃÉÑ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ"
#. TRANS it returns @code{ENOSYS} instead.
#: sysdeps/gnu/errlist.c:920
msgid "Not supported"
-msgstr "îÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+msgstr "Ðе поддерживаетÑÑ"
#. TRANS While decoding a multibyte character the function came along an invalid
#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
#: sysdeps/gnu/errlist.c:930
msgid "Invalid or incomplete multibyte or wide character"
-msgstr "îÅ×ÅÒÎÙÊ ÉÌÉ ÎÅÐÏÌÎÙÊ ÍÕÌØÔÉÂÁÊÔÎÙÊ ÉÌÉ ÛÉÒÏËÉÊ ÚÎÁË"
+msgstr "Ðеверный или неполный мультибайтный или широкий знак"
#. TRANS In the GNU system, servers supporting the @code{term} protocol return
#. TRANS this error for certain operations when the caller is not in the
@@ -5746,14 +5905,14 @@ msgstr "îÅ×ÅÒÎÙÊ ÉÌÉ ÎÅÐÏÌÎÙÊ ÍÕÌØÔÉÂÁÊÔÎÙÊ ÉÌÉ ÛÉÒÏËÉÊ ÚÎÁË"
#. TRANS for information on process groups and these signals.
#: sysdeps/gnu/errlist.c:944
msgid "Inappropriate operation for background process"
-msgstr "îÅÐÏÄÈÏÄÑÝÁÑ ÏÐÅÒÁÃÉÑ ÄÌÑ ÆÏÎÏ×ÏÇÏ ÐÒÏÃÅÓÓÁ"
+msgstr "ÐеподходÑÑ‰Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð³Ð¾ процеÑÑа"
#. TRANS In the GNU system, opening a file returns this error when the file is
#. TRANS translated by a program and the translator program dies while starting
#. TRANS up, before it has connected to the file.
#: sysdeps/gnu/errlist.c:955
msgid "Translator died"
-msgstr "ôÒÁÎÓÌÑÔÏÒ ÕÍÅÒ"
+msgstr "ТранÑлÑтор умер"
#. TRANS The experienced user will know what is wrong.
#. TRANS @c This error code is a joke. Its perror text is part of the joke.
@@ -5765,61 +5924,61 @@ msgstr "?"
#. TRANS You did @strong{what}?
#: sysdeps/gnu/errlist.c:975
msgid "You really blew it this time"
-msgstr "îÁ ÜÔÏÔ ÒÁÚ ×Ù ×ÓÅÈ ÏÐÒÏËÉÎÕÌÉ"
+msgstr "Ðа Ñтот раз вы вÑех опрокинули"
#. TRANS Go home and have a glass of warm, dairy-fresh milk.
#: sysdeps/gnu/errlist.c:984
msgid "Computer bought the farm"
-msgstr "ëÏÍÐØÀÔÅÒ ËÕÐÉÌ ÆÅÒÍÕ"
+msgstr "Компьютер купил ферму"
#. TRANS This error code has no purpose.
#: sysdeps/gnu/errlist.c:993
msgid "Gratuitous error"
-msgstr "âÅÚ×ÏÚÍÅÚÄÎÁÑ ÏÛÉÂËÁ"
+msgstr "Ð‘ÐµÐ·Ð²Ð¾Ð·Ð¼ÐµÐ·Ð´Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
#: sysdeps/gnu/errlist.c:1001
msgid "Bad message"
-msgstr "îÅÐÒÁ×ÉÌØÎÏÅ ÓÏÏÂÝÅÎÉÅ"
+msgstr "Ðеправильное Ñообщение"
#: sysdeps/gnu/errlist.c:1009
msgid "Identifier removed"
-msgstr "éÄÅÎÔÉÆÉËÁÔÏÒ ÂÙÌ ÕÄÁÌÅÎ"
+msgstr "Идентификатор был удален"
#: sysdeps/gnu/errlist.c:1017
msgid "Multihop attempted"
-msgstr ""
+msgstr "Попытка Multihop"
#: sysdeps/gnu/errlist.c:1025
msgid "No data available"
-msgstr "îÅÔ ÄÏÓÔÕÐÎÙÈ ÄÁÎÎÙÈ"
+msgstr "Ðет доÑтупных данных"
#: sysdeps/gnu/errlist.c:1033
msgid "Link has been severed"
-msgstr "óÏÅÄÉÎÅÎÅÎÉÅ ÂÙÌÏ ÒÁÚÏÒ×ÁÎÏ"
+msgstr "Соединение было разорвано"
#: sysdeps/gnu/errlist.c:1041
msgid "No message of desired type"
-msgstr "îÅÔ ÓÏÏÂÝÅÎÉÑ ÖÅÌÁÅÍÏÇÏ ÔÉÐÁ"
+msgstr "Ðет ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¶ÐµÐ»Ð°ÐµÐ¼Ð¾Ð³Ð¾ типа"
#: sysdeps/gnu/errlist.c:1049
msgid "Out of streams resources"
-msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÐÏÔÏËÏ×ÙÈ ÒÅÓÕÒÓÏ×"
+msgstr "ÐедоÑтаточно потоковых реÑурÑов"
#: sysdeps/gnu/errlist.c:1057
msgid "Device not a stream"
-msgstr "õÓÔÒÏÊÓÔ×Ï ÎÅ Ñ×ÌÑÅÔÓÑ ÐÏÔÏËÏÍ"
+msgstr "УÑтройÑтво не ÑвлÑетÑÑ Ð¿Ð¾Ñ‚Ð¾ÐºÐ¾Ð¼"
#: sysdeps/gnu/errlist.c:1065
msgid "Value too large for defined data type"
-msgstr "úÎÁÞÅÎÉÅ ÓÌÉÛËÏÍ ×ÅÌÉËÏ ÄÌÑ ÔÁËÏÇÏ ÔÉÐÁ ÄÁÎÎÙÈ"
+msgstr "Значение Ñлишком велико Ð´Ð»Ñ Ñ‚Ð°ÐºÐ¾Ð³Ð¾ типа данных"
#: sysdeps/gnu/errlist.c:1073
msgid "Protocol error"
-msgstr "ïÛÉÂËÁ ÐÒÏÔÏËÏÌÁ"
+msgstr "Ошибка протокола"
#: sysdeps/gnu/errlist.c:1081
msgid "Timer expired"
-msgstr "ôÁÊÍÅÒ ÉÓÔÅË"
+msgstr "Таймер иÑтек"
#. TRANS Operation canceled; an asynchronous operation was canceled before it
#. TRANS completed. @xref{Asynchronous I/O}. When you call @code{aio_cancel},
@@ -5827,685 +5986,694 @@ msgstr "ôÁÊÍÅÒ ÉÓÔÅË"
#. TRANS error; @pxref{Cancel AIO Operations}.
#: sysdeps/gnu/errlist.c:1093
msgid "Operation canceled"
-msgstr "ïÐÅÒÁÃÉÑ ÏÔÍÅÎÅÎÁ"
+msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð¼ÐµÐ½ÐµÐ½Ð°"
#: sysdeps/gnu/errlist.c:1101
msgid "Interrupted system call should be restarted"
-msgstr "ðÒÅÒ×ÁÎÙÊ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ× ÓÌÅÄÕÅÔ ÐÅÒÅÚÁÐÕÓÔÉÔØ"
+msgstr "Прерванный ÑиÑтемный вызов Ñледует перезапуÑтить"
#: sysdeps/gnu/errlist.c:1109
msgid "Channel number out of range"
-msgstr "îÏÍÅÒ ËÁÎÁÌÁ ×ÎÅ ÄÉÁÐÁÚÏÎÁ"
+msgstr "Ðомер канала вне диапазона"
#: sysdeps/gnu/errlist.c:1117
msgid "Level 2 not synchronized"
-msgstr "õÒÏ×ÅÎØ 2 ÎÅ ÓÉÎÈÒÏÎÉÚÉÒÏ×ÁÎ"
+msgstr "Уровень 2 не Ñинхронизирован"
#: sysdeps/gnu/errlist.c:1125
msgid "Level 3 halted"
-msgstr "õÒÏ×ÅÎØ 3 ÏÓÔÁÎÏ×ÌÅÎ"
+msgstr "Уровень 3 оÑтановлен"
#: sysdeps/gnu/errlist.c:1133
msgid "Level 3 reset"
-msgstr "õÒÏ×ÅÎØ 3 ÓÂÒÏÛÅÎ"
+msgstr "Уровень 3 Ñброшен"
#: sysdeps/gnu/errlist.c:1141
msgid "Link number out of range"
-msgstr "þÉÓÌÏ ÓÓÙÌÏË ×ÎÅ ÄÏÐÕÓÔÉÍÏÇÏ ÄÉÁÐÁÚÏÎÁ"
+msgstr "ЧиÑло ÑÑылок вне допуÑтимого диапазона"
#: sysdeps/gnu/errlist.c:1149
msgid "Protocol driver not attached"
-msgstr "äÒÁÊ×ÅÒ ÐÒÏÔÏËÏÌÁ ÎÅ ÐÏÄÓÏÅÄÉÎÅÎ"
+msgstr "Драйвер протокола не подÑоединен"
#: sysdeps/gnu/errlist.c:1157
msgid "No CSI structure available"
-msgstr "îÅÔ ÄÏÓÔÕÐÎÏÊ CSI-ÓÔÒÕËÔÕÒÙ"
+msgstr "Ðет доÑтупной CSI-Ñтруктуры"
#: sysdeps/gnu/errlist.c:1165
msgid "Level 2 halted"
-msgstr "õÒÏ×ÅÎØ 2 ÏÓÔÁÎÏ×ÌÅÎ"
+msgstr "Уровень 2 оÑтановлен"
#: sysdeps/gnu/errlist.c:1173
msgid "Invalid exchange"
-msgstr ""
+msgstr "Ðекорректный обмен"
#: sysdeps/gnu/errlist.c:1181
msgid "Invalid request descriptor"
-msgstr "îÅ×ÅÒÎÙÊ ÄÅÓËÒÉÐÔÏÒ ÚÁÐÒÏÓÁ"
+msgstr "Ðеверный деÑкриптор запроÑа"
#: sysdeps/gnu/errlist.c:1189
msgid "Exchange full"
-msgstr ""
+msgstr "Обмен полный"
#: sysdeps/gnu/errlist.c:1197
msgid "No anode"
-msgstr ""
+msgstr "Ðет anode"
#: sysdeps/gnu/errlist.c:1205
msgid "Invalid request code"
-msgstr "îÅ×ÅÒÎÙÊ ËÏÄ ÚÁÐÒÏÓÁ"
+msgstr "Ðеверный код запроÑа"
#: sysdeps/gnu/errlist.c:1213
msgid "Invalid slot"
-msgstr ""
+msgstr "Ðекорректный Ñлот"
#: sysdeps/gnu/errlist.c:1221
msgid "File locking deadlock error"
-msgstr "ïÛÉÂËÁ: ÔÕÐÉË ÐÒÉ ÂÌÏËÉÒÏ×ËÅ ÆÁÊÌÁ"
+msgstr "Ошибка: тупик при блокировке файла"
#: sysdeps/gnu/errlist.c:1229
msgid "Bad font file format"
-msgstr "îÅ×ÅÒÎÙÊ ÆÏÒÍÁÔ ÆÁÊÌÁ ÓÏ ÛÒÉÆÔÏÍ"
+msgstr "Ðеверный формат файла Ñо шрифтом"
#: sysdeps/gnu/errlist.c:1237
msgid "Machine is not on the network"
-msgstr "íÁÛÉÎÁ ÎÅ × ÓÅÔÉ"
+msgstr "Машина не в Ñети"
#: sysdeps/gnu/errlist.c:1245
msgid "Package not installed"
-msgstr "ðÁËÅÔ ÎÅ ÕÓÔÁÎÏ×ÌÅÎ"
+msgstr "Пакет не уÑтановлен"
#: sysdeps/gnu/errlist.c:1253
msgid "Advertise error"
-msgstr ""
+msgstr "Ошибка объÑвлениÑ"
#: sysdeps/gnu/errlist.c:1261
msgid "Srmount error"
-msgstr "ïÛÉÂËÁ Srmount"
+msgstr "Ошибка Srmount"
#: sysdeps/gnu/errlist.c:1269
msgid "Communication error on send"
-msgstr "ïÛÉÂËÁ Ó×ÑÚÉ ÐÒÉ ÏÔÐÒÁ×ËÅ"
+msgstr "Ошибка ÑвÑзи при отправке"
#: sysdeps/gnu/errlist.c:1277
msgid "RFS specific error"
-msgstr "óÐÅÃÉÆÉÞÎÁÑ ÄÌÑ RFS ÏÛÉÂËÁ"
+msgstr "Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ RFS ошибка"
#: sysdeps/gnu/errlist.c:1285
msgid "Name not unique on network"
-msgstr "éÍÑ ÎÅ ÕÎÉËÁÌØÎÏ × ÓÅÔÉ"
+msgstr "Ð˜Ð¼Ñ Ð½Ðµ уникально в Ñети"
#: sysdeps/gnu/errlist.c:1293
msgid "File descriptor in bad state"
-msgstr "äÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ × ÐÌÏÈÏÍ ÓÏÓÔÏÑÎÉÉ"
+msgstr "ДеÑкриптор файла в плохом ÑоÑтоÑнии"
#: sysdeps/gnu/errlist.c:1301
msgid "Remote address changed"
-msgstr "õÄÁÌÅÎÎÙÊ ÁÄÒÅÓ ÂÙÌ ÉÚÍÅÎÅÎ"
+msgstr "Удаленный Ð°Ð´Ñ€ÐµÑ Ð±Ñ‹Ð» изменен"
#: sysdeps/gnu/errlist.c:1309
msgid "Can not access a needed shared library"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÄÏÓÔÕÐ Ë ÎÕÖÎÏÊ ÒÁÚÄÅÌÑÅÍÏÊ ÂÉÂÌÉÏÔÅËÅ"
+msgstr "Ðевозможно получить доÑтуп к нужной разделÑемой библиотеке"
#: sysdeps/gnu/errlist.c:1317
msgid "Accessing a corrupted shared library"
-msgstr "ïÂÒÁÝÅÎÉÅ Ë ÐÏ×ÒÅÖÄÅÎÎÏÊ ÒÁÚÄÅÌÑÅÍÏÊ ÂÉÂÌÉÏÔÅËÅ"
+msgstr "Обращение к поврежденной разделÑемой библиотеке"
#: sysdeps/gnu/errlist.c:1325
msgid ".lib section in a.out corrupted"
-msgstr "óÅËÃÉÑ .lib × a.out ÐÏ×ÒÅÖÄÅÎÁ"
+msgstr "Ð¡ÐµÐºÑ†Ð¸Ñ .lib в a.out повреждена"
#: sysdeps/gnu/errlist.c:1333
msgid "Attempting to link in too many shared libraries"
-msgstr "ðÏÐÙÔËÁ ÐÏÄËÌÀÞÉÔØ ÓÌÉÛËÏÍ ÍÎÏÇÏ ÒÁÚÄÅÌÑÅÍÙÊ ÂÉÂÌÉÏÔÅË"
+msgstr "Попытка подключить Ñлишком много разделÑемый библиотек"
#: sysdeps/gnu/errlist.c:1341
msgid "Cannot exec a shared library directly"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ×ÙÐÏÌÎÉÔØ ÒÁÚÄÅÌÑÅÍÕÀ ÂÉÂÌÉÏÔÅËÕ"
+msgstr "Ðевозможно непоÑредÑтвенно выполнить разделÑемую библиотеку"
#: sysdeps/gnu/errlist.c:1349
msgid "Streams pipe error"
-msgstr ""
+msgstr "Ошибка потоков канала"
#: sysdeps/gnu/errlist.c:1357
msgid "Structure needs cleaning"
-msgstr "óÔÒÕËÔÕÒÕ ÎÅÏÂÈÏÄÉÍÏ ÐÏÞÉÓÔÉÔØ"
+msgstr "Структуру необходимо почиÑтить"
#: sysdeps/gnu/errlist.c:1365
msgid "Not a XENIX named type file"
-msgstr ""
+msgstr "Тип файла не назван XENIX"
#: sysdeps/gnu/errlist.c:1373
msgid "No XENIX semaphores available"
-msgstr "óÅÍÁÆÏÒÙ XENIX ÎÅÄÏÓÔÕÐÎÙ"
+msgstr "Семафоры XENIX недоÑтупны"
#: sysdeps/gnu/errlist.c:1381
msgid "Is a named type file"
-msgstr ""
+msgstr "ЯвлÑетÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ имен типов"
#: sysdeps/gnu/errlist.c:1389
msgid "Remote I/O error"
-msgstr "ïÛÉÂËÁ ÕÄÁÌÅÎÎÏÇÏ ××ÏÄÁ/×Ù×ÏÄÁ"
+msgstr "Ошибка удаленного ввода/вывода"
#: sysdeps/gnu/errlist.c:1397
msgid "No medium found"
-msgstr "îÏÓÉÔÅÌØ ÎÅ ÎÁÊÄÅÎ"
+msgstr "ÐоÑитель не найден"
#: sysdeps/gnu/errlist.c:1405
msgid "Wrong medium type"
-msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÔÉÐ ÎÏÓÉÔÅÌÑ"
+msgstr "Ðеправильный тип ноÑителÑ"
#: sysdeps/gnu/errlist.c:1413
msgid "Required key not available"
-msgstr "ôÒÅÂÕÅÍÙÊ ËÌÀÞ ÎÅÄÏÓÔÕÐÅÎ"
+msgstr "Требуемый ключ недоÑтупен"
#: sysdeps/gnu/errlist.c:1421
msgid "Key has expired"
-msgstr "÷ÒÅÍÑ ÖÉÚÎÉ ËÌÀÞÁ ÉÓÔÅËÌÏ"
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¶Ð¸Ð·Ð½Ð¸ ключа иÑтекло"
#: sysdeps/gnu/errlist.c:1429
msgid "Key has been revoked"
-msgstr "ëÌÀÞ ÂÙÌ ÏÔÏÚ×ÁÎ"
+msgstr "Ключ был отозван"
#: sysdeps/gnu/errlist.c:1437
msgid "Key was rejected by service"
-msgstr "ëÌÀÞ ÂÙÌ ÏÔ×ÅÒÇÎÕÔ ÓÌÕÖÂÏÊ"
+msgstr "Ключ был отвергнут Ñлужбой"
#: sysdeps/gnu/errlist.c:1445
msgid "Owner died"
-msgstr "÷ÌÁÄÅÌÅà ÕÍÅÒ"
+msgstr "Владелец умер"
#: sysdeps/gnu/errlist.c:1453
msgid "State not recoverable"
-msgstr "óÏÓÔÏÑÎÉÅ ÎÅÌØÚÑ ×ÏÓÓÔÁÎÏ×ÉÔØ"
+msgstr "СоÑтоÑние Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ð¾ÑÑтановить"
#: sysdeps/mach/_strerror.c:57
msgid "Error in unknown error system: "
-msgstr "ïÛÉÂËÁ × ÎÅÉÚ×ÅÓÔÎÏÊ ÓÉÓÔÅÍÅ ÏÛÉÂÏË: "
+msgstr "Ошибка в неизвеÑтной ÑиÑтеме ошибок: "
#: sysdeps/posix/gai_strerror-strs.h:1
msgid "Address family for hostname not supported"
-msgstr "óÅÍÅÊÓÔ×Ï ÁÄÒÅÓÏ× ÎÅ ÐÏÄÄÅÒÖÉ×ÁÔÓÑ ÄÌÑ ÄÁÎÎÏÇÏ ÉÍÅÎÉ ÈÏÓÔÁ"
+msgstr "СемейÑтво адреÑов не поддерживаетÑÑ Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ имени хоÑта"
#: sysdeps/posix/gai_strerror-strs.h:2
msgid "Temporary failure in name resolution"
-msgstr "÷ÒÅÍÅÎÎÙÊ ÓÂÏÊ × ÒÁÚÒÅÛÅÎÉÉ ÉÍÅÎ"
+msgstr "Временный Ñбой в разрешении имен"
#: sysdeps/posix/gai_strerror-strs.h:3
msgid "Bad value for ai_flags"
-msgstr "îÅÐÒÁ×ÉÌØÎÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ ai_flags"
+msgstr "Ðеправильное значение Ð´Ð»Ñ ai_flags"
#: sysdeps/posix/gai_strerror-strs.h:4
msgid "Non-recoverable failure in name resolution"
-msgstr "îÅÉÓÐÒÁ×ÉÍÁÑ ÏÛÉÂËÁ × ÒÁÚÒÅÛÅÎÉÉ ÉÍÅÎ"
+msgstr "ÐеиÑÐ¿Ñ€Ð°Ð²Ð¸Ð¼Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в разрешении имен"
#: sysdeps/posix/gai_strerror-strs.h:5
msgid "ai_family not supported"
-msgstr "ai_family ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+msgstr "ai_family не поддерживаетÑÑ"
#: sysdeps/posix/gai_strerror-strs.h:6
msgid "Memory allocation failure"
-msgstr "ïÛÉÂËÁ ×ÙÄÅÌÅÎÉÑ ÐÁÍÑÔÉ"
+msgstr "Ошибка Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти"
#: sysdeps/posix/gai_strerror-strs.h:7
msgid "No address associated with hostname"
-msgstr "ó ÉÍÅÎÅÍ ÈÏÓÔÁ ÎÅ Ó×ÑÚÁÎÏ ÎÉ ÏÄÎÏÇÏ ÁÄÒÅÓÁ"
+msgstr "С именем хоÑта не ÑвÑзано ни одного адреÑа"
#: sysdeps/posix/gai_strerror-strs.h:8
msgid "Name or service not known"
-msgstr "éÍÑ ÉÌÉ ÓÌÕÖÂÁ ÎÅ ÉÚ×ÅÓÔÎÙ"
+msgstr "Ð˜Ð¼Ñ Ð¸Ð»Ð¸ Ñлужба не извеÑтны"
#: sysdeps/posix/gai_strerror-strs.h:9
msgid "Servname not supported for ai_socktype"
-msgstr "Servname ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÄÌÑ ai_socktype"
+msgstr "Servname не поддерживаетÑÑ Ð´Ð»Ñ ai_socktype"
#: sysdeps/posix/gai_strerror-strs.h:10
msgid "ai_socktype not supported"
-msgstr "ai_socktype ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+msgstr "ai_socktype не поддерживаетÑÑ"
#: sysdeps/posix/gai_strerror-strs.h:11
msgid "System error"
-msgstr "óÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ"
+msgstr "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
#: sysdeps/posix/gai_strerror-strs.h:12
msgid "Processing request in progress"
-msgstr "ïÂÒÁÂÏÔËÁ ÚÁÐÒÏÓÁ ÐÒÏÄÏÌÖÁÅÔÓÑ"
+msgstr "Обработка запроÑа продолжаетÑÑ"
#: sysdeps/posix/gai_strerror-strs.h:13
msgid "Request canceled"
-msgstr "úÁÐÒÏÓ ÏÔÍÅÎÅÎ"
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚Ð¼ÐµÐ½ÐµÐ½"
#: sysdeps/posix/gai_strerror-strs.h:14
msgid "Request not canceled"
-msgstr "úÁÐÒÏÓ ÎÅ ÏÔÍÅÎÅÎ"
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ отменен"
#: sysdeps/posix/gai_strerror-strs.h:15
msgid "All requests done"
-msgstr "÷ÓÅ ÚÁÐÒÏÓÙ ×ÙÐÏÌÎÅÎÙ"
+msgstr "Ð’Ñе запроÑÑ‹ выполнены"
#: sysdeps/posix/gai_strerror-strs.h:16
msgid "Interrupted by a signal"
-msgstr "ðÒÅÒ×ÁÎÏ ÐÏ ÓÉÇÎÁÌÕ"
+msgstr "Прервано по Ñигналу"
#: sysdeps/posix/gai_strerror-strs.h:17
msgid "Parameter string not correctly encoded"
-msgstr "îÅÐÒÁ×ÉÌØÎÏ ÚÁËÏÄÉÒÏ×ÁÎÁ ÓÔÒÏËÁ ÐÁÒÁÍÅÔÒÁ"
+msgstr "Ðеправильно закодирована Ñтрока параметра"
#: sysdeps/unix/siglist.c:26
msgid "Signal 0"
-msgstr "óÉÇÎÁÌ 0"
+msgstr "Сигнал 0"
#: sysdeps/unix/siglist.c:32
msgid "IOT trap"
-msgstr "ìÏ×ÕÛËÁ IOT"
+msgstr "Ловушка IOT"
#: sysdeps/unix/sysv/linux/i386/readelflib.c:49
#, c-format
msgid "%s is for unknown machine %d.\n"
-msgstr "%s ÐÒÅÄÎÁÚÎÁÞÅÎ ÄÌÑ ÎÅÉÚ×ÅÓÔÎÏÊ ÍÁÛÉÎÙ %d.\n"
+msgstr "%s предназначен Ð´Ð»Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтной машины %d.\n"
#: sysdeps/unix/sysv/linux/ia64/makecontext.c:63
#, c-format
msgid "makecontext: does not know how to handle more than 8 arguments\n"
-msgstr "makecontext: ÎÅÔ ×ÏÚÍÏÖÎÏÓÔÉ ÏÂÒÁÂÏÔÁÔØ ÂÏÌÅÅ ×ÏÓØÍÉ ÁÒÇÕÍÅÎÔÏ×\n"
+msgstr "makecontext: нет возможноÑти обработать более воÑьми аргументов\n"
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
+"ИÑпользование: lddlibc4 ФÐЙЛ\n"
+"\n"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
msgid "cannot open `%s'"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ `%s'"
+msgstr "невозможно открыть «%s»"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
msgid "cannot read header from `%s'"
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÚÁÇÏÌÏ×ÏË ÉÚ `%s'"
+msgstr "невозможно Ñчитать заголовок из «%s»"
-#: timezone/zdump.c:215
+#: timezone/zdump.c:210
msgid "lacks alphabetic at start"
-msgstr "×ÎÁÞÁÌÅ ÎÅÔ ÂÕË×Ù"
+msgstr "вначале нет буквы"
-#: timezone/zdump.c:217
+#: timezone/zdump.c:212
msgid "has fewer than 3 alphabetics"
-msgstr "ÓÏÄÅÒÖÉÔ ÍÅÎÅÅ 3 ÂÕË×"
+msgstr "Ñодержит менее 3 букв"
-#: timezone/zdump.c:219
+#: timezone/zdump.c:214
msgid "has more than 6 alphabetics"
-msgstr "ÓÏÄÅÒÖÉÔ ÂÏÌÅÅ 6 ÂÕË×"
+msgstr "Ñодержит более 6 букв"
-#: timezone/zdump.c:227
+#: timezone/zdump.c:222
msgid "differs from POSIX standard"
-msgstr "ÏÔÌÉÞÁÅÔÓÑ ÏÔ ÓÔÁÎÄÁÒÔÁ POSIX"
+msgstr "отличаетÑÑ Ð¾Ñ‚ Ñтандарта POSIX"
-#: timezone/zdump.c:233
+#: timezone/zdump.c:228
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
-msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÚÏÎÁ \"%s\" ÓÏËÒÁÝÅÎÉÅ \"%s\" %s\n"
+msgstr "%s: предупреждение: зона «%s» Ñокращение «%s» %s\n"
-#: timezone/zdump.c:284
+#: timezone/zdump.c:279
#, c-format
msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
-msgstr "%s: ÉÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ --version ] [ -v ] [ -c [ÐÅÒ×ÙÊ-ÇÏÄ,]ÐÏÓÌÅÄÎÉÊ-ÇÏÄ ] ÉÍÑ-ÚÏÎÙ ...\n"
+msgstr "%s: иÑпользование: %s [ --version ] [ -v ] [ -c [первый-год,]поÑледний-год ] имÑ-зоны ...\n"
-#: timezone/zdump.c:301
+#: timezone/zdump.c:296
#, c-format
msgid "%s: wild -c argument %s\n"
-msgstr ""
+msgstr "%s: не обработан аргумент -c, %s\n"
-#: timezone/zdump.c:392
+#: timezone/zdump.c:387
msgid "Error writing to standard output"
-msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ"
+msgstr "Ошибка запиÑи на Ñтандартный вывод"
-#: timezone/zdump.c:415
+#: timezone/zdump.c:410
#, c-format
msgid "%s: use of -v on system with floating time_t other than float or double\n"
-msgstr "%s: ÉÓÐÏÌØÚÏ×ÁÎÉÅ -v ÎÁ ÓÉÓÔÅÍÅ, ÇÄÅ time_t ÉÍÅÅÔ ÔÉÐ Ó ÐÌÁ×ÁÀÝÅÊ ÚÁÐÑÔÏÊ, ÏÔÌÉÞÎÙÊ ÏÔ float ÉÌÉ double\n"
+msgstr "%s: иÑпользование -v на ÑиÑтеме, где time_t имеет тип Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ запÑтой, отличный от float или double\n"
-#: timezone/zic.c:371
+#: timezone/zic.c:388
#, c-format
msgid "%s: Memory exhausted: %s\n"
-msgstr "%s: ðÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ: %s\n"
+msgstr "%s: ПамÑÑ‚ÑŒ иÑчерпана: %s\n"
-#: timezone/zic.c:430
+#: timezone/zic.c:434
#, c-format
msgid "\"%s\", line %d: %s"
-msgstr "\"%s\", ÓÔÒÏËÁ %d: %s"
+msgstr "«%s», Ñтрока %d: %s"
-#: timezone/zic.c:433
+#: timezone/zic.c:437
#, c-format
msgid " (rule from \"%s\", line %d)"
-msgstr " (ÐÒÁ×ÉÌÏ ÉÚ \"%s\", ÓÔÒÏËÁ %d)"
+msgstr " (правило из «%s», Ñтрока %d)"
-#: timezone/zic.c:445
+#: timezone/zic.c:449
msgid "warning: "
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: "
+msgstr "предупреждение: "
-#: timezone/zic.c:455
+#: timezone/zic.c:459
#, c-format
msgid ""
-"%s: usage is %s [ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
+"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
msgstr ""
-"%s: ÉÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ --version ] [ -s ] [ -v ] [ -l ÍÅÓÔÎÏÅ-×ÒÅÍÑ ] [ -p ÐÒÁ×ÉÌÁ-posix ] \\\n"
-"\t[ -d ËÁÔÁÌÏÇ ] [ -L ×ÉÓÏËÏÓÎÙÅ-ÓÅËÕÎÄÙ ] [ -y yearistype ] [ ÉÍÑ-ÆÁÊÌÁ ... ]\n"
+"%s: иÑпользование %s [ --version ] [ -v ] [ -l меÑтное-Ð²Ñ€ÐµÐ¼Ñ ] [ -p правила-posix ] \\\n"
+"\t[ -d каталог ] [ -L виÑокоÑные-Ñекунды ] [ -y yearistype ] [ имÑ-файла ... ]\n"
+
+#: timezone/zic.c:494
+msgid "wild compilation-time specification of zic_t"
+msgstr "Ð¿Ð»Ð¾Ñ…Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸ компилÑции Ð´Ð»Ñ zic_t"
-#: timezone/zic.c:503
+#: timezone/zic.c:511
#, c-format
msgid "%s: More than one -d option specified\n"
-msgstr "%s: úÁÄÁÎÏ ÂÏÌÅÅ ÏÄÎÏÇÏ ËÌÀÞÁ -d\n"
+msgstr "%s: Задано более одного ключа -d\n"
-#: timezone/zic.c:513
+#: timezone/zic.c:521
#, c-format
msgid "%s: More than one -l option specified\n"
-msgstr "%s: úÁÄÁÎÏ ÂÏÌÅÅ ÏÄÎÏÇÏ ËÌÀÞÁ -l\n"
+msgstr "%s: Задано более одного ключа -l\n"
-#: timezone/zic.c:523
+#: timezone/zic.c:531
#, c-format
msgid "%s: More than one -p option specified\n"
-msgstr "%s: úÁÄÁÎÏ ÂÏÌÅÅ ÏÄÎÏÇÏ ËÌÀÞÁ -p\n"
+msgstr "%s: Задано более одного ключа -p\n"
-#: timezone/zic.c:533
+#: timezone/zic.c:541
#, c-format
msgid "%s: More than one -y option specified\n"
-msgstr "%s: úÁÄÁÎÏ ÂÏÌÅÅ ÏÄÎÏÇÏ ËÌÀÞÁ -y\n"
+msgstr "%s: Задано более одного ключа -y\n"
-#: timezone/zic.c:543
+#: timezone/zic.c:551
#, c-format
msgid "%s: More than one -L option specified\n"
-msgstr "%s: úÁÄÁÎÏ ÂÏÌÅÅ ÏÄÎÏÇÏ ËÌÀÞÁ -L\n"
+msgstr "%s: Задано более одного ключа -L\n"
-#: timezone/zic.c:592
+#: timezone/zic.c:600
msgid "link to link"
-msgstr "ÓÓÙÌËÁ ÎÁ ÓÓÙÌËÕ"
+msgstr "ÑÑылка на ÑÑылку"
-#: timezone/zic.c:657
+#: timezone/zic.c:665
msgid "hard link failed, symbolic link used"
-msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÄÅÌÁÔØ ÖÅÓÔËÕÀ ÓÓÙÌËÕ, ÉÓÐÏÌØÚÕÅÔÓÑ ÓÉÍ×ÏÌØÎÁÑ"
+msgstr "не удалоÑÑŒ Ñделать жеÑткую ÑÑылку, иÑпользуетÑÑ ÑимвольнаÑ"
-#: timezone/zic.c:665
+#: timezone/zic.c:673
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
-msgstr "%s: îÅ×ÏÚÍÏÖÎÏ ÓÄÅÌÁÔØ ÓÓÙÌËÕ Ó %s ÎÁ %s: %s\n"
+msgstr "%s: Ðевозможно Ñделать ÑÑылку Ñ %s на %s: %s\n"
-#: timezone/zic.c:774 timezone/zic.c:776
+#: timezone/zic.c:745 timezone/zic.c:747
msgid "same rule name in multiple files"
-msgstr "ÏÄÉÎÁËÏ×ÏÅ ÉÍÑ ÐÒÁ×ÉÌÁ × ÎÅÓËÏÌØËÉÈ ÆÁÊÌÁÈ"
+msgstr "одинаковое Ð¸Ð¼Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° в неÑкольких файлах"
-#: timezone/zic.c:817
+#: timezone/zic.c:788
msgid "unruly zone"
-msgstr "ÎÅ ÐÏÄÞÉÎÑÀÝÁÑÓÑ ÐÒÁ×ÉÌÁÍ ÚÏÎÁ"
+msgstr "не подчинÑющаÑÑÑ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð°Ð¼ зона"
-#: timezone/zic.c:824
+#: timezone/zic.c:795
#, c-format
msgid "%s in ruleless zone"
-msgstr "%s × ÚÏÎÅ ÂÅÚ ÐÒÁ×ÉÌ"
+msgstr "%s в зоне без правил"
-#: timezone/zic.c:845
+#: timezone/zic.c:816
msgid "standard input"
-msgstr "ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ"
+msgstr "Ñтандартный ввод"
-#: timezone/zic.c:850
+#: timezone/zic.c:821
#, c-format
msgid "%s: Can't open %s: %s\n"
-msgstr "%s: îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ %s: %s\n"
+msgstr "%s: Ðевозможно открыть %s: %s\n"
-#: timezone/zic.c:861
+#: timezone/zic.c:832
msgid "line too long"
-msgstr "ÓÔÒÏËÁ ÓÌÉÛËÏÍ ÄÌÉÎÎÁÑ"
+msgstr "Ñтрока Ñлишком длиннаÑ"
-#: timezone/zic.c:881
+#: timezone/zic.c:852
msgid "input line of unknown type"
-msgstr "×ÈÏÄÎÁÑ ÓÔÒÏËÁ ÎÅÉÚ×ÅÓÔÎÏÇÏ ÔÉÐÁ"
+msgstr "Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ Ñтрока неизвеÑтного типа"
-#: timezone/zic.c:897
+#: timezone/zic.c:868
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
-msgstr "%s: ÷ÉÓÏËÏÓÎÁÑ ÓÔÒÏËÁ ×ÅË ÆÁÊÌÁ ×ÉÓÏËÏÓÎÙÈ ÓÅËÕÎÄ %s\n"
+msgstr "%s: ВиÑокоÑÐ½Ð°Ñ Ñтрока век файла виÑокоÑных Ñекунд %s\n"
-#: timezone/zic.c:904 timezone/zic.c:1325 timezone/zic.c:1350
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
-msgstr "%s: ÐÁÎÉËÁ: îÅÄÏÐÕÓÔÉÍÏÅ l_value %d\n"
+msgstr "%s: паника: ÐедопуÑтимое l_value %d\n"
-#: timezone/zic.c:912
+#: timezone/zic.c:883
#, c-format
msgid "%s: Error reading %s\n"
-msgstr "%s: ïÛÉÂËÁ ÞÔÅÎÉÑ %s\n"
+msgstr "%s: Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s\n"
-#: timezone/zic.c:919
+#: timezone/zic.c:890
#, c-format
msgid "%s: Error closing %s: %s\n"
-msgstr "%s: ïÛÉÂËÁ ÚÁËÒÙÔÉÑ %s: %s\n"
+msgstr "%s: Ошибка Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ %s: %s\n"
-#: timezone/zic.c:924
+#: timezone/zic.c:895
msgid "expected continuation line not found"
-msgstr "ÏÖÉÄÁÅÍÁÑ ÓÔÒÏËÁ ÐÒÏÄÏÌÖÅÎÉÑ ÎÅ ÎÁÊÄÅÎÁ"
+msgstr "Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð°Ñ Ñтрока Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ найдена"
-#: timezone/zic.c:968
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
+msgid "time overflow"
+msgstr "переполнение времени"
+
+#: timezone/zic.c:943
msgid "24:00 not handled by pre-1998 versions of zic"
-msgstr "24:00 ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ×ÅÒÓÉÑÍÉ zic ÓÔÁÒÛÅ 1998 ÇÏÄÁ"
+msgstr "24:00 не поддерживаетÑÑ Ð²ÐµÑ€ÑиÑми zic Ñтарше 1998 года"
+
+#: timezone/zic.c:946
+msgid "values over 24 hours not handled by pre-2007 versions of zic"
+msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐµ 24 чаÑов не поддерживаетÑÑ Ð²ÐµÑ€ÑиÑми zic Ñтарше 2007 года"
-#: timezone/zic.c:982
+#: timezone/zic.c:959
msgid "wrong number of fields on Rule line"
-msgstr "ÎÅÐÒÁ×ÉÌØÎÏÅ ÞÉÓÌÏ ÐÏÌÅÊ × ÓÔÒÏËÅ Rule"
+msgstr "неправильное чиÑло полей в Ñтроке Rule"
-#: timezone/zic.c:986
+#: timezone/zic.c:963
msgid "nameless rule"
-msgstr "ÂÅÚÙÍÑÎÎÏÅ ÐÒÁ×ÉÌÏ"
+msgstr "безымÑнное правило"
-#: timezone/zic.c:991
+#: timezone/zic.c:968
msgid "invalid saved time"
-msgstr "ÎÅ×ÅÒÎÏÅ ÓÏÈÒÁÎÅÎÎÏÅ ×ÒÅÍÑ"
+msgstr "неверное Ñохраненное времÑ"
-#: timezone/zic.c:1010
+#: timezone/zic.c:989
msgid "wrong number of fields on Zone line"
-msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÏÌÅÊ × ÓÔÒÏËÅ Zone"
+msgstr "неверное чиÑло полей в Ñтроке Zone"
-#: timezone/zic.c:1016
+#: timezone/zic.c:995
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
-msgstr "ÓÔÒÏËÁ \"Zone %s\" É ËÌÀÞ -l ×ÚÁÉÍÎÏ ÉÓËÌÀÞÁÀÔÓÑ"
+msgstr "Ñтрока «Zone %s» и ключ -l взаимно иÑключаютÑÑ"
-#: timezone/zic.c:1024
+#: timezone/zic.c:1003
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
-msgstr "ÓÔÒÏËÁ \"Zone %s\" É ËÌÀÞ -p ×ÚÁÉÍÎÏ ÉÓËÌÀÞÁÀÔÓÑ"
+msgstr "Ñтрока «Zone %s» и ключ -p взаимно иÑключаютÑÑ"
-#: timezone/zic.c:1036
+#: timezone/zic.c:1015
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
-msgstr "ÐÏ×ÔÏÒÎÏÅ ÉÍÑ ÚÏÎÙ %s (ÆÁÊÌ \"%s\", ÓÔÒÏËÁ %d)"
+msgstr "повторное Ð¸Ð¼Ñ Ð·Ð¾Ð½Ñ‹ %s (файл «%s», Ñтрока %d)"
-#: timezone/zic.c:1052
+#: timezone/zic.c:1031
msgid "wrong number of fields on Zone continuation line"
-msgstr "ÎÅÐÒÁ×ÉÌØÎÏÅ ÞÉÓÌÏ ÐÏÌÅÊ × ÓÔÒÏËÅ ÐÒÏÄÏÌÖÅÎÉÑ Zone"
+msgstr "неправильное чиÑло полей в Ñтроке Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Zone"
-#: timezone/zic.c:1092
+#: timezone/zic.c:1071
msgid "invalid UTC offset"
-msgstr "ÎÅ×ÅÒÎÏÅ ÓÍÅÝÅÎÉÅ ÏÔ UTC"
+msgstr "неверное Ñмещение от UTC"
-#: timezone/zic.c:1095
+#: timezone/zic.c:1074
msgid "invalid abbreviation format"
-msgstr "ÎÅ×ÅÒÎÙÊ ÆÏÒÍÁÔ ÓÏËÒÁÝÅÎÉÑ"
+msgstr "неверный формат ÑокращениÑ"
-#: timezone/zic.c:1122
+#: timezone/zic.c:1103
msgid "Zone continuation line end time is not after end time of previous line"
-msgstr "ËÏÎÅÞÎÏÅ ×ÒÅÍÑ × ÓÔÒÏËÅ ÐÒÏÄÏÌÖÅÎÉÑ Zone ÎÅ ÐÏÚÄÎÅÅ ËÏÎÅÞÎÏÇÏ ×ÒÅÍÅÎÉ × ÐÒÅÄÙÄÕÝÅÊ ÓÔÒÏËÅ"
+msgstr "конечное Ð²Ñ€ÐµÐ¼Ñ Ð² Ñтроке Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Zone не позднее конечного времени в предыдущей Ñтроке"
-#: timezone/zic.c:1150
+#: timezone/zic.c:1131
msgid "wrong number of fields on Leap line"
-msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÏÌÅÊ × ÓÔÒÏËÅ Leap"
+msgstr "неверное чиÑло полей в Ñтроке Leap"
-#: timezone/zic.c:1159
+#: timezone/zic.c:1140
msgid "invalid leaping year"
-msgstr "ÎÅ×ÅÒÎÙÊ ×ÉÓÏËÏÓÎÙÊ ÇÏÄ"
+msgstr "неверный виÑокоÑный год"
-#: timezone/zic.c:1174 timezone/zic.c:1280
+#: timezone/zic.c:1160 timezone/zic.c:1266
msgid "invalid month name"
-msgstr "ÎÅ×ÅÒÎÏÅ ÎÁÚ×ÁÎÉÅ ÍÅÓÑÃÁ"
+msgstr "неверное название меÑÑца"
-#: timezone/zic.c:1187 timezone/zic.c:1402 timezone/zic.c:1416
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
msgid "invalid day of month"
-msgstr "ÎÅ×ÅÒÎÙÊ ÄÅÎØ ÍÅÓÑÃÁ"
+msgstr "неверный день меÑÑца"
-#: timezone/zic.c:1192
+#: timezone/zic.c:1178
msgid "time before zero"
-msgstr "×ÒÅÍÑ ÄÏ ÎÕÌÑ"
+msgstr "Ð²Ñ€ÐµÐ¼Ñ Ð´Ð¾ нулÑ"
-#: timezone/zic.c:1196
+#: timezone/zic.c:1182
msgid "time too small"
-msgstr "×ÒÅÍÑ ÓÌÉÛËÏÍ ÍÁÌÏ"
+msgstr "Ð²Ñ€ÐµÐ¼Ñ Ñлишком мало"
-#: timezone/zic.c:1200
+#: timezone/zic.c:1186
msgid "time too large"
-msgstr "×ÒÅÍÑ ÓÌÉÛËÏÍ ×ÅÌÉËÏ"
+msgstr "Ð²Ñ€ÐµÐ¼Ñ Ñлишком велико"
-#: timezone/zic.c:1204 timezone/zic.c:1309
+#: timezone/zic.c:1190 timezone/zic.c:1295
msgid "invalid time of day"
-msgstr "ÎÅ×ÅÒÎÏÅ ×ÒÅÍÑ ÄÎÑ"
+msgstr "неверное Ð²Ñ€ÐµÐ¼Ñ Ð´Ð½Ñ"
-#: timezone/zic.c:1223
+#: timezone/zic.c:1209
msgid "illegal CORRECTION field on Leap line"
-msgstr "ÎÅ×ÅÒÎÏÅ ÐÏÌÅ CORRECTION × ÓÔÒÏËÅ Leap"
+msgstr "неверное поле CORRECTION в Ñтроке Leap"
-#: timezone/zic.c:1228
+#: timezone/zic.c:1214
msgid "illegal Rolling/Stationary field on Leap line"
-msgstr "ÎÅ×ÅÒÎÏÅ ÐÏÌÅ Rolling/Stationary × ÓÔÒÏËÅ Leap"
+msgstr "неверное поле Rolling/Stationary в Ñтроке Leap"
-#: timezone/zic.c:1244
+#: timezone/zic.c:1230
msgid "wrong number of fields on Link line"
-msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÏÌÅÊ × ÓÔÒÏËÅ Link"
+msgstr "неверное чиÑло полей в Ñтроке Link"
-#: timezone/zic.c:1248
+#: timezone/zic.c:1234
msgid "blank FROM field on Link line"
-msgstr "ÐÕÓÔÏÅ ÐÏÌÅ FROM × ÓÔÒÏËÅ Link"
+msgstr "пуÑтое поле FROM в Ñтроке Link"
-#: timezone/zic.c:1252
+#: timezone/zic.c:1238
msgid "blank TO field on Link line"
-msgstr "ÐÕÓÔÏÅ ÐÏÌÅ TO × ÓÔÒÏËÅ Link"
+msgstr "пуÑтое поле TO в Ñтроке Link"
-#: timezone/zic.c:1329
+#: timezone/zic.c:1316
msgid "invalid starting year"
-msgstr "ÎÅ×ÅÒÎÙÊ ÎÁÞÁÌØÎÙÊ ÇÏÄ"
+msgstr "неверный начальный год"
-#: timezone/zic.c:1333
-msgid "starting year too low to be represented"
-msgstr "ÎÁÞÁÌØÎÙÊ ÇÏÄ ÓÌÉÛËÏÍ ÍÁÌ É ÅÇÏ ÎÅ×ÏÚÍÏÖÎÏ ÍÁÛÉÎÎÏ ÐÒÅÄÓÔÁ×ÉÔØ"
-
-#: timezone/zic.c:1335
-msgid "starting year too high to be represented"
-msgstr "ÎÁÞÁÌØÎÙÊ ÇÏÄ ÓÌÉÛËÏÍ ×ÅÌÉË É ÅÇÏ ÎÅ×ÏÚÍÏÖÎÏ ÍÁÛÉÎÎÏ ÐÒÅÄÓÔÁ×ÉÔØ"
-
-#: timezone/zic.c:1354
+#: timezone/zic.c:1338
msgid "invalid ending year"
-msgstr "ÎÅ×ÅÒÎÙÊ ËÏÎÅÞÎÙÊ ÇÏÄ"
-
-#: timezone/zic.c:1358
-msgid "ending year too low to be represented"
-msgstr "ËÏÎÅÞÎÙÊ ÇÏÄ ÓÌÉÛËÏÍ ÍÁÌ É ÅÇÏ ÎÅ×ÏÚÍÏÖÎÏ ÍÁÛÉÎÎÏ ÐÒÅÄÓÔÁ×ÉÔØ"
+msgstr "неверный конечный год"
-#: timezone/zic.c:1360
-msgid "ending year too high to be represented"
-msgstr "ËÏÎÅÞÎÙÊ ÇÏÄ ÓÌÉÛËÏÍ ×ÅÌÉË É ÅÇÏ ÎÅ×ÏÚÍÏÖÎÏ ÍÁÛÉÎÎÏ ÐÒÅÄÓÔÁ×ÉÔØ"
-
-#: timezone/zic.c:1363
+#: timezone/zic.c:1342
msgid "starting year greater than ending year"
-msgstr "ÎÁÞÁÌØÎÙÊ ÇÏÄ ÂÏÌØÛÅ ËÏÎÅÞÎÏÇÏ"
+msgstr "начальный год больше конечного"
-#: timezone/zic.c:1370
+#: timezone/zic.c:1349
msgid "typed single year"
-msgstr "ÏÄÉÎ ÔÉÐÉÚÉÒÏ×ÁÎÎÙÊ ÇÏÄ"
+msgstr "один типизированный год"
-#: timezone/zic.c:1407
+#: timezone/zic.c:1384
msgid "invalid weekday name"
-msgstr "ÎÅ×ÅÒÎÏÅ ÎÁÚ×ÁÎÉÑ ÄÎÑ ÎÅÄÅÌÉ"
+msgstr "неверное Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð´Ð½Ñ Ð½ÐµÐ´ÐµÐ»Ð¸"
-#: timezone/zic.c:1521
+#: timezone/zic.c:1562
#, c-format
msgid "%s: Can't remove %s: %s\n"
-msgstr "%s: îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ %s: %s\n"
+msgstr "%s: Ðевозможно удалить %s: %s\n"
-#: timezone/zic.c:1531
+#: timezone/zic.c:1572
#, c-format
msgid "%s: Can't create %s: %s\n"
-msgstr "%s: îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ %s: %s\n"
+msgstr "%s: Ðевозможно Ñоздать %s: %s\n"
-#: timezone/zic.c:1598
+#: timezone/zic.c:1722
#, c-format
msgid "%s: Error writing %s\n"
-msgstr "%s: ïÛÉÂËÁ ÚÁÐÉÓÉ %s\n"
+msgstr "%s: Ошибка запиÑи %s\n"
+
+#: timezone/zic.c:2015
+msgid "no POSIX environment variable for zone"
+msgstr "нет переменной Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ POSIX Ð´Ð»Ñ Ñ‡Ð°Ñового поÑÑа"
-#: timezone/zic.c:1789
+#: timezone/zic.c:2172
msgid "can't determine time zone abbreviation to use just after until time"
-msgstr ""
+msgstr "не удалоÑÑŒ определить аббревиатуру чаÑового поÑÑа Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñразу поÑле прошедшего времени "
-#: timezone/zic.c:1832
+#: timezone/zic.c:2218
msgid "too many transitions?!"
-msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÐÅÒÅÈÏÄÏ×?!"
+msgstr "Ñлишком много переходов?!"
-#: timezone/zic.c:1851
+#: timezone/zic.c:2237
msgid "internal error - addtype called with bad isdst"
-msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ -- addtype ×ÙÚ×ÁÎÁ Ó ÎÅÐÒÁ×ÉÌØÎÙÍ isdst"
+msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° -- addtype вызвана Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ isdst"
-#: timezone/zic.c:1855
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad ttisstd"
-msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ -- addtype ×ÙÚ×ÁÎÁ Ó ÎÅÐÒÁ×ÉÌØÎÙÍ ttisstd"
+msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° -- addtype вызвана Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ ttisstd"
-#: timezone/zic.c:1859
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisgmt"
-msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ -- addtype ×ÙÚ×ÁÎÁ Ó ÎÅÐÒÁ×ÉÌØÎÙÍ ttisgmt"
+msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° -- addtype вызвана Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ ttisgmt"
-#: timezone/zic.c:1878
+#: timezone/zic.c:2264
msgid "too many local time types"
-msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÔÉÐÏ× ÍÅÓÔÎÏÇÏ ×ÒÅÍÅÎÉ"
+msgstr "Ñлишком много типов меÑтного времени"
+
+#: timezone/zic.c:2268
+msgid "UTC offset out of range"
+msgstr "Ñдвиг UTC вне диапазона"
-#: timezone/zic.c:1906
+#: timezone/zic.c:2296
msgid "too many leap seconds"
-msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ×ÉÓÏËÏÓÎÙÈ ÓÅËÕÎÄ"
+msgstr "Ñлишком много виÑокоÑных Ñекунд"
-#: timezone/zic.c:1912
+#: timezone/zic.c:2302
msgid "repeated leap second moment"
-msgstr "ÐÏ×ÔÏÒÑÀÝÉÊÓÑ ÍÏÍÅÎÔ ×ÉÓÏËÏÓÎÏÊ ÓÅËÕÎÄÙ"
+msgstr "повторÑющийÑÑ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚ виÑокоÑной Ñекунды"
-#: timezone/zic.c:1964
+#: timezone/zic.c:2354
msgid "Wild result from command execution"
-msgstr "îÅÁÄÅË×ÁÔÎÙÊ ÒÅÚÕÌØÔÁÔ ×ÙÐÏÌÎÅÎÉÑ ËÏÍÁÎÄÙ"
+msgstr "Ðеадекватный результат Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹"
-#: timezone/zic.c:1965
+#: timezone/zic.c:2355
#, c-format
msgid "%s: command was '%s', result was %d\n"
-msgstr "%s: ËÏÍÁÎÄÁ ÂÙÌÁ '%s', ÒÅÚÕÌØÔÁÔ ÂÙÌ %d\n"
+msgstr "%s: команда была »%s», результат был %d\n"
-#: timezone/zic.c:2062
+#: timezone/zic.c:2453
msgid "Odd number of quotation marks"
-msgstr "îÅÞÅÔÎÏÅ ÞÉÓÌÏ ËÁ×ÙÞÅË"
+msgstr "Ðечетное чиÑло кавычек"
-#: timezone/zic.c:2083 timezone/zic.c:2102
-msgid "time overflow"
-msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ×ÒÅÍÅÎÉ"
-
-#: timezone/zic.c:2149
+#: timezone/zic.c:2542
msgid "use of 2/29 in non leap-year"
-msgstr "ÉÓÐÏÌØÚÏ×ÁÎÉÅ 29 ÆÅ×ÒÁÌÑ × ÎÅ×ÉÓÏËÏÓÎÏÍ ÇÏÄÕ"
+msgstr "иÑпользование 29 Ñ„ÐµÐ²Ñ€Ð°Ð»Ñ Ð² не-виÑокоÑном году"
-#: timezone/zic.c:2184
+#: timezone/zic.c:2577
msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
-msgstr "ÐÒÁ×ÉÌÏ ÐÅÒÅÈÏÄÉÔ ÚÁ ÎÁÞÁÌÏ/ËÏÎÅà ÍÅÓÑÃÁ -- ÜÔÏ ÎÅ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ × ×ÅÒÓÉÑÈ zic ÓÔÁÒÛÅ 2004 ÇÏÄÁ"
+msgstr "правило переходит за начало/конец меÑÑца -- Ñто не будет работать в верÑиÑÑ… zic Ñтарше 2004 года"
-#: timezone/zic.c:2218
+#: timezone/zic.c:2609
msgid "time zone abbreviation lacks alphabetic at start"
-msgstr "ÓÏËÒÁÝÅÎÉÅ ÞÁÓÏ×ÏÇÏ ÐÏÑÓÁ ÎÅ ÎÁÞÉÎÁÅÔÓÑ Ó ÂÕË×Ù"
+msgstr "Ñокращение чаÑового поÑÑа не начинаетÑÑ Ñ Ð±ÑƒÐºÐ²Ñ‹"
-#: timezone/zic.c:2220
+#: timezone/zic.c:2611
msgid "time zone abbreviation has more than 3 alphabetics"
-msgstr "ÓÏËÒÁÝÅÎÉÅ ÞÁÓÏ×ÏÇÏ ÐÏÑÓÁ ÓÏÄÅÒÖÉÔ ÂÏÌÅÅ ÔÒÅÈ ÂÕË×"
+msgstr "Ñокращение чаÑового поÑÑа Ñодержит более трех букв"
-#: timezone/zic.c:2222
+#: timezone/zic.c:2613
msgid "time zone abbreviation has too many alphabetics"
-msgstr "ÓÏËÒÁÝÅÎÉÅ ÞÁÓÏ×ÏÇÏ ÐÏÑÓÁ ÓÏÄÅÒÖÉÔ ÓÌÉÛËÏÍ ÍÎÏÇÏ ÂÕË×"
+msgstr "Ñокращение чаÑового поÑÑа Ñодержит Ñлишком много букв"
-#: timezone/zic.c:2232
+#: timezone/zic.c:2623
msgid "time zone abbreviation differs from POSIX standard"
-msgstr "ÓÏËÒÁÝÅÎÉÅ ÞÁÓÏ×ÏÇÏ ÐÏÑÓÁ ÏÔÌÉÞÁÅÔÓÑ ÏÔ ÓÔÁÎÄÁÒÔÁ POSIX"
+msgstr "Ñокращение чаÑового поÑÑа отличаетÑÑ Ð¾Ñ‚ Ñтандарта POSIX"
-#: timezone/zic.c:2244
+#: timezone/zic.c:2635
msgid "too many, or too long, time zone abbreviations"
-msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏËÒÁÝÅÎÉÊ ÞÁÓÏ×ÙÈ ÐÏÑÓÏ× ÉÌÉ ÏÎÉ ÓÌÉÛËÏÍ ÄÌÉÎÎÙÅ"
+msgstr "Ñлишком много Ñокращений чаÑовых поÑÑов или они Ñлишком длинные"
-#: timezone/zic.c:2285
+#: timezone/zic.c:2676
#, c-format
msgid "%s: Can't create directory %s: %s\n"
-msgstr "%s: îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ %s: %s\n"
+msgstr "%s: Ðевозможно Ñоздать каталог %s: %s\n"
-#: timezone/zic.c:2307
+#: timezone/zic.c:2698
#, c-format
msgid "%s: %d did not sign extend correctly\n"
-msgstr "%s: %d ÎÅ ÓÏÈÒÁÎÉÌÏ ÚÎÁË ÐÒÉ ÒÁÓÛÉÒÅÎÉÉ\n"
+msgstr "%s: %d не Ñохранило знак при раÑширении\n"
diff --git a/po/sv.po b/po/sv.po
index dcbe90258d..8ff80e491e 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,14 +1,14 @@
-# GNU libc message catalog for swedish
-# Copyright © 1996, 1998, 2001, 2002, 2003, 2006, 2008 Free Software Foundation, Inc.
+# GNU libc message catalog for Swedish
+# Copyright © 1996, 1998, 2001, 2002, 2003, 2006, 2008, 2009 Free Software Foundation, Inc.
# This file is distributed under the same license as the glibc package.
-# Jan Djärv <jan.h.d@swipnet.se>, 1996, 1998, 2001, 2002, 2003, 2006, 2007, 2008
-# Revision: 1.59
+# Jan Djärv <jan.h.d@swipnet.se>, 1996, 1998, 2001, 2002, 2003, 2006, 2007, 2008, 2009
+# Revision: 1.61
#
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.7\n"
-"POT-Creation-Date: 2007-10-15 21:18-0700\n"
-"PO-Revision-Date: 2008-09-29 07:26+0200\n"
+"Project-Id-Version: libc 2.9.90\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-06-14 20:41+0200\n"
"Last-Translator: Jan Djärv <jan.h.d@swipnet.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"MIME-Version: 1.0\n"
@@ -101,7 +101,7 @@ msgstr "%s%s%s:%u: %s%sOväntat fel: %s.\n"
msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
msgstr "%s%s%s:%u: %s%sFörsäkran \"%s\" falsk.\n"
-#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
msgid "NAME"
msgstr "NAMN"
@@ -133,9 +133,15 @@ msgstr ""
"-o UTFIL [INFIL]...\n"
"[UTFIL [INFIL]...]"
-#: catgets/gencat.c:232 debug/pcprofiledump.c:204 iconv/iconv_prog.c:411
-#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
-#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
@@ -144,12 +150,13 @@ msgstr ""
"<http://www.gnu.org/software/libc/bugs.html>.\n"
"Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
-#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:296
-#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:426
-#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
-#: posix/getconf.c:1012
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -161,10 +168,12 @@ msgstr ""
"INGEN garanti; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT\n"
"ÄNDAMÅL.\n"
-#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:301 elf/sprof.c:361
-#: iconv/iconv_prog.c:431 iconv/iconvconfig.c:400 locale/programs/locale.c:280
-#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
-#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
#, c-format
msgid "Written by %s.\n"
msgstr "Skrivet av %s.\n"
@@ -173,7 +182,7 @@ msgstr "Skrivet av %s.\n"
msgid "*standard input*"
msgstr "*standard in*"
-#: catgets/gencat.c:288 iconv/iconv_charmap.c:158 iconv/iconv_prog.c:298
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
#: nss/makedb.c:170
#, c-format
msgid "cannot open input file `%s'"
@@ -265,17 +274,17 @@ msgstr "Visa information genererad av PC-profilering."
msgid "[FILE]"
msgstr "[FIL]"
-#: debug/pcprofiledump.c:104
+#: debug/pcprofiledump.c:108
#, c-format
msgid "cannot open input file"
msgstr "kan inte öppna infil"
-#: debug/pcprofiledump.c:111
+#: debug/pcprofiledump.c:115
#, c-format
msgid "cannot read header"
msgstr "kan inte läsa huvud"
-#: debug/pcprofiledump.c:175
+#: debug/pcprofiledump.c:179
#, c-format
msgid "invalid pointer size"
msgstr "ogiltig pekarstorlek"
@@ -286,11 +295,11 @@ msgstr "Användning: xtrace [FLAGGA]... PROGRAM [PROGRAMFLAGGA}...\\n"
#: debug/xtrace.sh:33
msgid "Try \\`xtrace --help' for more information.\\n"
-msgstr "Försök med \\\"xtrace --help\\\" för mer information\\n"
+msgstr "Försök med \"xtrace --help\" för mer information\\n"
#: debug/xtrace.sh:39
msgid "xtrace: option \\`$1' requires an argument.\\n"
-msgstr "xtrace: flaggan \\\"$1\\\" behöver ett argument\\n"
+msgstr "xtrace: flaggan \"$1\" behöver ett argument\\n"
#: debug/xtrace.sh:46
msgid ""
@@ -305,8 +314,6 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
"Spåra exekvering av ett program genom att skriva ut funktionen som exekveras.\n"
"\n"
@@ -318,28 +325,24 @@ msgstr ""
"\n"
"Obligatoriska argument för långa flaggor är obligatoriska även för\n"
"motsvarande korta.\n"
-"\n"
-"För felrapporteringsinstruktioner, se:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-"Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\\n"
-#: debug/xtrace.sh:125
+#: debug/xtrace.sh:127
msgid "xtrace: unrecognized option \\`$1'\\n"
-msgstr "xtrace: okänd flagga \\\"$1\\\"\\n"
+msgstr "xtrace: okänd flagga \"$1\"\\n"
-#: debug/xtrace.sh:138
+#: debug/xtrace.sh:140
msgid "No program name given\\n"
msgstr "Inget programnamn givet\\n"
-#: debug/xtrace.sh:146
+#: debug/xtrace.sh:148
#, sh-format
msgid "executable \\`$program' not found\\n"
-msgstr "program \\\"$program\\\" hittades inte\\n"
+msgstr "program \"$program\" hittades inte\\n"
-#: debug/xtrace.sh:150
+#: debug/xtrace.sh:152
#, sh-format
msgid "\\`$program' is no executable\\n"
-msgstr "\\\"$program\\\" är inte en körbar binär\\n"
+msgstr "\"$program\" är inte en körbar binär\\n"
#: dlfcn/dlinfo.c:64
msgid "RTLD_SELF used in code not dynamically loaded"
@@ -357,7 +360,7 @@ msgstr "ogiltig namnrymd"
msgid "invalid mode"
msgstr "ogiltigt läge"
-#: dlfcn/dlopen.c:64
+#: dlfcn/dlopen.c:65
msgid "invalid mode parameter"
msgstr "ogiltig lägesparameter"
@@ -374,7 +377,7 @@ msgstr "Okänt OS"
msgid ", OS ABI: %s %d.%d.%d"
msgstr ", OS ABI: %s %d.%d.%d"
-#: elf/cache.c:134 elf/ldconfig.c:1270
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
msgid "Can't open cache file %s\n"
msgstr "Kan inte öppna cache-fil \"%s\"\n"
@@ -418,7 +421,7 @@ msgstr "Namnbyte på %s till %s misslyckades"
msgid "cannot create scope list"
msgstr "kan inte skapa omfångslista"
-#: elf/dl-close.c:724
+#: elf/dl-close.c:725
msgid "shared object not open"
msgstr "delat objekt är inte öppnat"
@@ -493,11 +496,11 @@ msgstr "kan inte ta status på delat objekt"
msgid "cannot open zero fill device"
msgstr "kan inte öppna nollfyllnadsenhet"
-#: elf/dl-load.c:979 elf/dl-load.c:2224
+#: elf/dl-load.c:979 elf/dl-load.c:2215
msgid "cannot create shared object descriptor"
msgstr "kan inte skapa delad objektdeskriptor"
-#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
msgid "cannot read file data"
msgstr "kan inte läsa fildata"
@@ -561,63 +564,59 @@ msgstr "kan inte skapa exekverbar stack som delat objekt kräver"
msgid "cannot close file descriptor"
msgstr "kan inte stänga filidentifierare"
-#: elf/dl-load.c:1478
-msgid "cannot create searchlist"
-msgstr "kan inte skapa söklista"
-
-#: elf/dl-load.c:1656
+#: elf/dl-load.c:1647
msgid "file too short"
msgstr "fil för kort"
-#: elf/dl-load.c:1685
+#: elf/dl-load.c:1676
msgid "invalid ELF header"
msgstr "ogiltigt ELF-huvud"
-#: elf/dl-load.c:1697
+#: elf/dl-load.c:1688
msgid "ELF file data encoding not big-endian"
msgstr "Kodning för ELF-fildata är inte rak byteordning"
-#: elf/dl-load.c:1699
+#: elf/dl-load.c:1690
msgid "ELF file data encoding not little-endian"
msgstr "Kodning för ELF-fildata är inte omvänd byteordning"
-#: elf/dl-load.c:1703
+#: elf/dl-load.c:1694
msgid "ELF file version ident does not match current one"
msgstr "ELF-filens versionsidentitet stämmer inte med nuvarande"
-#: elf/dl-load.c:1707
+#: elf/dl-load.c:1698
msgid "ELF file OS ABI invalid"
msgstr "ELF-fil har felaktig version på OS-ABI"
-#: elf/dl-load.c:1709
+#: elf/dl-load.c:1700
msgid "ELF file ABI version invalid"
msgstr "ELF-fil har felaktig version på ABI"
-#: elf/dl-load.c:1712
+#: elf/dl-load.c:1703
msgid "internal error"
msgstr "internt fel"
-#: elf/dl-load.c:1719
+#: elf/dl-load.c:1710
msgid "ELF file version does not match current one"
msgstr "ELF-filens version stämmer inte med nuvarande"
-#: elf/dl-load.c:1727
+#: elf/dl-load.c:1718
msgid "only ET_DYN and ET_EXEC can be loaded"
msgstr "bara ET_DYN och ET_EXEC kan laddas"
-#: elf/dl-load.c:1733
+#: elf/dl-load.c:1724
msgid "ELF file's phentsize not the expected size"
msgstr "ELF-filens värde på \"phentsize\" är inte den förväntade"
-#: elf/dl-load.c:2240
+#: elf/dl-load.c:2231
msgid "wrong ELF class: ELFCLASS64"
msgstr "fel ELF-klass: ELFCLASS64"
-#: elf/dl-load.c:2241
+#: elf/dl-load.c:2232
msgid "wrong ELF class: ELFCLASS32"
msgstr "fel ELF-klass: ELFCLASS32"
-#: elf/dl-load.c:2244
+#: elf/dl-load.c:2235
msgid "cannot open shared object file"
msgstr "kan inte öppna delad objektfil"
@@ -649,11 +648,11 @@ msgstr "inga fler namnrymder tillgängliga för dlmopen()"
msgid "invalid target namespace in dlmopen()"
msgstr "ogiltig målnamnrymd för dlmopen()"
-#: elf/dl-reloc.c:54
+#: elf/dl-reloc.c:121
msgid "cannot allocate memory in static TLS block"
msgstr "kan inte allokera minne i statiskt TLS-block"
-#: elf/dl-reloc.c:196
+#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
msgstr "kan inte göra segment skrivbart för relokering"
@@ -679,11 +678,11 @@ msgstr "kan inte applicera extra minnesskydd efter relokering"
msgid "RTLD_NEXT used in code not dynamically loaded"
msgstr "RTLD_NEXT används i kod som inte är dynamiskt laddad"
-#: elf/dl-sysdep.c:469 elf/dl-sysdep.c:481
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
msgid "cannot create capability list"
msgstr "kan inte skapa egenskapslista"
-#: elf/dl-tls.c:825
+#: elf/dl-tls.c:864
msgid "cannot create TLS data structures"
msgstr "kan inte skapa datastrukturer för TLS"
@@ -691,220 +690,220 @@ msgstr "kan inte skapa datastrukturer för TLS"
msgid "cannot allocate version reference table"
msgstr "kan inte allokera tabell för versionsreferenser"
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:141
msgid "Print cache"
msgstr "Visa cache"
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:142
msgid "Generate verbose messages"
msgstr "Använd utförligare meddelanden"
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:143
msgid "Don't build cache"
msgstr "Bygg inte cache"
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:144
msgid "Don't generate links"
msgstr "Generera inte länkar"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "Change to and use ROOT as root directory"
msgstr "Byt till och använd ROT som rotkatalog"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "ROOT"
msgstr "ROT"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "CACHE"
msgstr "CACHE"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "Use CACHE as cache file"
msgstr "Använd CACHE som cache-fil"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "CONF"
msgstr "CONF"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "Use CONF as configuration file"
msgstr "Använd CONF som konfigurationsfil"
-#: elf/ldconfig.c:145
+#: elf/ldconfig.c:148
msgid "Only process directories specified on the command line. Don't build cache."
msgstr "Behandla endast kataloger givna som argument. Bygg inte cache."
-#: elf/ldconfig.c:146
+#: elf/ldconfig.c:149
msgid "Manually link individual libraries."
msgstr "Länka enskilda bibliotek manuellt."
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "FORMAT"
msgstr "FORMAT"
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "Format to use: new, old or compat (default)"
msgstr "Format att använda: \"new\", \"old\" eller \"compat\" (standardvärde)"
-#: elf/ldconfig.c:148
+#: elf/ldconfig.c:151
msgid "Ignore auxiliary cache file"
msgstr "Ignorera hjälpcachefilen"
-#: elf/ldconfig.c:156
+#: elf/ldconfig.c:159
msgid "Configure Dynamic Linker Run Time Bindings."
msgstr "Konfigurera bindningar för den dynamiska länkaren."
-#: elf/ldconfig.c:319
+#: elf/ldconfig.c:339
#, c-format
msgid "Path `%s' given more than once"
msgstr "Sökväg \"%s\" given mer än en gång"
-#: elf/ldconfig.c:359
+#: elf/ldconfig.c:379
#, c-format
msgid "%s is not a known library type"
msgstr "%s är inte en känd bibliotekstyp"
-#: elf/ldconfig.c:384
+#: elf/ldconfig.c:404
#, c-format
msgid "Can't stat %s"
msgstr "Kan inte ta status på %s"
-#: elf/ldconfig.c:458
+#: elf/ldconfig.c:478
#, c-format
msgid "Can't stat %s\n"
msgstr "Kan inte ta status på %s\n"
-#: elf/ldconfig.c:468
+#: elf/ldconfig.c:488
#, c-format
msgid "%s is not a symbolic link\n"
msgstr "%s är inte en symbolisk länk\n"
-#: elf/ldconfig.c:487
+#: elf/ldconfig.c:507
#, c-format
msgid "Can't unlink %s"
msgstr "Kan inte ta bort (unlink) %s"
-#: elf/ldconfig.c:493
+#: elf/ldconfig.c:513
#, c-format
msgid "Can't link %s to %s"
msgstr "Kan inte länka %s till %s"
-#: elf/ldconfig.c:499
+#: elf/ldconfig.c:519
msgid " (changed)\n"
msgstr " (ändrad)\n"
-#: elf/ldconfig.c:501
+#: elf/ldconfig.c:521
msgid " (SKIPPED)\n"
msgstr " (HOPPAR ÖVER)\n"
-#: elf/ldconfig.c:556
+#: elf/ldconfig.c:576
#, c-format
msgid "Can't find %s"
msgstr "Kan inte hitta %s"
-#: elf/ldconfig.c:572 elf/ldconfig.c:745 elf/ldconfig.c:793 elf/ldconfig.c:827
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
msgid "Cannot lstat %s"
msgstr "Kan inte ta status (lstat) på %s"
-#: elf/ldconfig.c:579
+#: elf/ldconfig.c:599
#, c-format
msgid "Ignored file %s since it is not a regular file."
msgstr "Ignorerar fil %s eftersom den inte är en vanlig fil"
-#: elf/ldconfig.c:588
+#: elf/ldconfig.c:608
#, c-format
msgid "No link created since soname could not be found for %s"
msgstr "Ingen länk skapad eftersom \"soname\" inte hittades för %s"
-#: elf/ldconfig.c:671
+#: elf/ldconfig.c:691
#, c-format
msgid "Can't open directory %s"
msgstr "Kan inte öppna katalog %s"
-#: elf/ldconfig.c:759
+#: elf/ldconfig.c:779
#, c-format
msgid "Cannot stat %s"
msgstr "Kan inte ta status på %s"
-#: elf/ldconfig.c:814 elf/readlib.c:91
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
msgid "Input file %s not found.\n"
msgstr "Hittar inte infil %s.\n"
-#: elf/ldconfig.c:888
+#: elf/ldconfig.c:908
#, c-format
msgid "libc5 library %s in wrong directory"
msgstr "libc5-bibliotek %s i fel katalog"
-#: elf/ldconfig.c:891
+#: elf/ldconfig.c:911
#, c-format
msgid "libc6 library %s in wrong directory"
msgstr "libc6-bibliotek %s i fel katalog"
-#: elf/ldconfig.c:894
+#: elf/ldconfig.c:914
#, c-format
msgid "libc4 library %s in wrong directory"
msgstr "libc4-bibliotek %s i fel katalog"
-#: elf/ldconfig.c:922
+#: elf/ldconfig.c:942
#, c-format
msgid "libraries %s and %s in directory %s have same soname but different type."
msgstr "bibliotek %s och %s i katalog %s har samma \"soname\" men olika typ."
-#: elf/ldconfig.c:1031
+#: elf/ldconfig.c:1051
#, c-format
msgid "Can't open configuration file %s"
msgstr "Kan inte öppna konfigurationsfil %s"
-#: elf/ldconfig.c:1095
+#: elf/ldconfig.c:1115
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
msgstr "%s:%u: ogiltig syntax på hwcap-raden"
-#: elf/ldconfig.c:1101
+#: elf/ldconfig.c:1121
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
msgstr "%s:%u: hwcap-index %lu är större än maximum %u"
-#: elf/ldconfig.c:1108 elf/ldconfig.c:1116
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
msgstr "%s:%u: hwcap-index %lu redan definierat som %s"
-#: elf/ldconfig.c:1119
+#: elf/ldconfig.c:1139
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
msgstr "%s:%u: duplicerad hwcap %lu %s"
-#: elf/ldconfig.c:1141
+#: elf/ldconfig.c:1161
#, c-format
msgid "need absolute file name for configuration file when using -r"
msgstr "behöver absolut filnamn för konfigurationsfil när -r används"
-#: elf/ldconfig.c:1148 locale/programs/xmalloc.c:70 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
msgid "memory exhausted"
msgstr "minne slut"
-#: elf/ldconfig.c:1178
+#: elf/ldconfig.c:1198
#, c-format
msgid "%s:%u: cannot read directory %s"
msgstr "%s:%u: kan inte läsa katalog %s"
-#: elf/ldconfig.c:1223
+#: elf/ldconfig.c:1242
#, c-format
msgid "relative path `%s' used to build cache"
msgstr "relativ sökväg \"%s\" använd för att bygga cache"
-#: elf/ldconfig.c:1249
+#: elf/ldconfig.c:1268
#, c-format
msgid "Can't chdir to /"
msgstr "Kan inte byta katalog till /"
-#: elf/ldconfig.c:1291
+#: elf/ldconfig.c:1310
#, c-format
msgid "Can't open cache file directory %s\n"
msgstr "Kan inte läsa cache-filkatalog \"%s\"\n"
@@ -922,8 +921,6 @@ msgid ""
" -r, --function-relocs process data and function relocations\n"
" -u, --unused print unused direct dependencies\n"
" -v, --verbose print all information\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Användning: ldd [OPTION]... FILE...\n"
" --help visa denna hjälptext och avsluta\n"
@@ -932,50 +929,47 @@ msgstr ""
" -r, --function-relocs bearbeta data- och funktionsrelokeringar\n"
" -u, --unused skriv ut oanvända direkta beroenden\n"
" -v, --verbose skriv all information\n"
-"För felrapporteringsinstruktioner, se:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-"Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>."
-#: elf/ldd.bash.in:80
+#: elf/ldd.bash.in:82
msgid "ldd: option \\`$1' is ambiguous"
-msgstr "ldd: flaggan \\\"$1\\\" är tvetydig"
+msgstr "ldd: flaggan \"$1\" är tvetydig"
-#: elf/ldd.bash.in:87
+#: elf/ldd.bash.in:89
msgid "unrecognized option"
msgstr "okänd flagga"
-#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
msgid "Try \\`ldd --help' for more information."
-msgstr "Försök med \\\"ldd --help\\\" för mer information"
+msgstr "Försök med \"ldd --help\" för mer information"
-#: elf/ldd.bash.in:125
+#: elf/ldd.bash.in:127
msgid "missing file arguments"
msgstr "filargument saknas"
#. TRANS No such file or directory. This is a ``file doesn't exist'' error
#. TRANS for ordinary files that are referenced in contexts where they are
#. TRANS expected to already exist.
-#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
msgstr "Filen eller katalogen finns inte"
-#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
msgid "not regular file"
msgstr "inte en normal fil"
-#: elf/ldd.bash.in:154
+#: elf/ldd.bash.in:156
msgid "warning: you do not have execution permission for"
msgstr "varning: du har inte exekveringsrättighet för"
-#: elf/ldd.bash.in:183
+#: elf/ldd.bash.in:185
msgid "\tnot a dynamic executable"
msgstr "\tinte en dynamisk körbar binär"
-#: elf/ldd.bash.in:191
+#: elf/ldd.bash.in:193
msgid "exited with unknown exit code"
msgstr "avslutade med okänd slutstatus"
-#: elf/ldd.bash.in:196
+#: elf/ldd.bash.in:198
msgid "error: you do not have read permission for"
msgstr "fel: du har inte läsrättigheter för"
@@ -1034,6 +1028,46 @@ msgstr "Kan inte minnesmappa (mmap) fil %s.\n"
msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
msgstr "%s är inte en ELF-fil, den har inte rätt magiskt tal i början.\n"
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+"Användning: sln källa mål|fil\n"
+"\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s: fel när fil öppnades: %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "Inget mål på rad %d\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s: målet måste inte vara en katalog\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr "%s: misslyckades med att ta bort det gamla målet\n"
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s: ogiltigt mål: %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "Ogiltig länk från \"%s\" till \"%s\": %s\n"
+
#: elf/sprof.c:77
msgid "Output selection:"
msgstr "Val av utdata:"
@@ -1051,130 +1085,130 @@ msgid "generate call graph"
msgstr "generera anropsgraf"
#: elf/sprof.c:89
-msgid ""
-"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Läs och visa profildata för delat objekt.\vFör felrapporteringsinstruktioner, se:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-"Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
+msgid "Read and display shared object profiling data."
+msgstr "Läs och visa profildata för delat objekt"
#: elf/sprof.c:94
msgid "SHOBJ [PROFDATA]"
msgstr "SHOBJ [PROFDATA]"
-#: elf/sprof.c:400
+#: elf/sprof.c:420
#, c-format
msgid "failed to load shared object `%s'"
msgstr "misslyckades med att ladda delat objekt \"%s\""
-#: elf/sprof.c:409
+#: elf/sprof.c:429
#, c-format
msgid "cannot create internal descriptors"
msgstr "kan inte skapa interna deskriptorer"
-#: elf/sprof.c:528
+#: elf/sprof.c:548
#, c-format
msgid "Reopening shared object `%s' failed"
msgstr "Öppna delat object \"%s\" igen misslyckades"
-#: elf/sprof.c:535 elf/sprof.c:629
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
msgid "reading of section headers failed"
msgstr "läsning av sektionshuvud misslyckades"
-#: elf/sprof.c:543 elf/sprof.c:637
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
msgid "reading of section header string table failed"
msgstr "läsning av sektionshuvuds strängtabell misslyckades"
-#: elf/sprof.c:569
+#: elf/sprof.c:589
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
msgstr "*** Kan inte läsa fil med felsökningsinformation: %m\n"
-#: elf/sprof.c:589
+#: elf/sprof.c:609
#, c-format
msgid "cannot determine file name"
msgstr "kan inte avgöra filnamn"
-#: elf/sprof.c:622
+#: elf/sprof.c:642
#, c-format
msgid "reading of ELF header failed"
msgstr "läsning av ELF-huvud misslyckades"
-#: elf/sprof.c:658
+#: elf/sprof.c:678
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
msgstr "*** Filen \"%s\" är strippad: ingen detaljerad analys är möjlig\n"
-#: elf/sprof.c:688
+#: elf/sprof.c:708
#, c-format
msgid "failed to load symbol data"
msgstr "misslyckades att ladda symboldata"
-#: elf/sprof.c:755
+#: elf/sprof.c:775
#, c-format
msgid "cannot load profiling data"
msgstr "kan inte läsa profildata"
-#: elf/sprof.c:764
+#: elf/sprof.c:784
#, c-format
msgid "while stat'ing profiling data file"
msgstr "när status togs på profildatafilen"
-#: elf/sprof.c:772
+#: elf/sprof.c:792
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
msgstr "profildatafil \"%s\" stämmer inte för delat objekt \"%s\""
-#: elf/sprof.c:783
+#: elf/sprof.c:803
#, c-format
msgid "failed to mmap the profiling data file"
msgstr "misslyckades att mappa (mmap) profildatafilen"
-#: elf/sprof.c:791
+#: elf/sprof.c:811
#, c-format
msgid "error while closing the profiling data file"
msgstr "fel vid stängning av profildatafilen"
-#: elf/sprof.c:800 elf/sprof.c:870
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
msgid "cannot create internal descriptor"
msgstr "kan inte skapa intern deskriptor"
-#: elf/sprof.c:846
+#: elf/sprof.c:866
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
msgstr "\"%s\" är inte en korrekt profildatafil för \"%s\""
-#: elf/sprof.c:1027 elf/sprof.c:1085
+#: elf/sprof.c:1047 elf/sprof.c:1105
#, c-format
msgid "cannot allocate symbol data"
msgstr "kan inte allokera symboldata"
-#: iconv/iconv_charmap.c:176 iconv/iconv_prog.c:316
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "kan inte öppna utfil"
+
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
msgstr "fel vid stängning av indata \"%s\""
-#: iconv/iconv_charmap.c:450
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
msgstr "otillåten indatasekvens vid position %Zd"
-#: iconv/iconv_charmap.c:469 iconv/iconv_prog.c:526
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
#, c-format
msgid "incomplete character or shift sequence at end of buffer"
msgstr "ofullständigt tecken eller skift-sekvens i slutet på buffert"
-#: iconv/iconv_charmap.c:514 iconv/iconv_charmap.c:550 iconv/iconv_prog.c:569
-#: iconv/iconv_prog.c:605
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
#, c-format
msgid "error while reading the input"
msgstr "fel när indata lästes"
-#: iconv/iconv_charmap.c:532 iconv/iconv_prog.c:587
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
#, c-format
msgid "unable to allocate buffer for input"
msgstr "kan inte allokera buffert för indata"
@@ -1227,62 +1261,57 @@ msgstr "Konvertera kodning i angivna infiler från en kodning till en annan."
msgid "[FILE...]"
msgstr "[FIL...]"
-#: iconv/iconv_prog.c:200
-#, c-format
-msgid "cannot open output file"
-msgstr "kan inte öppna utfil"
-
-#: iconv/iconv_prog.c:242
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
msgstr "konvertering från \"%s\" och till \"%s\" stöds ej"
-#: iconv/iconv_prog.c:247
+#: iconv/iconv_prog.c:239
#, c-format
msgid "conversion from `%s' is not supported"
msgstr "konvertering från \"%s\" stöds ej"
-#: iconv/iconv_prog.c:254
+#: iconv/iconv_prog.c:246
#, c-format
msgid "conversion to `%s' is not supported"
msgstr "konvertering till \"%s\" stöds ej"
-#: iconv/iconv_prog.c:258
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
msgstr "konvertering från \"%s\" till \"%s\" stöds ej"
-#: iconv/iconv_prog.c:268
+#: iconv/iconv_prog.c:260
#, c-format
msgid "failed to start conversion processing"
msgstr "misslyckades att starta konverteringsprocessen"
-#: iconv/iconv_prog.c:362
+#: iconv/iconv_prog.c:358
#, c-format
msgid "error while closing output file"
msgstr "fel vid stängning av utfilen"
-#: iconv/iconv_prog.c:471 iconv/iconv_prog.c:497
+#: iconv/iconv_prog.c:456
#, c-format
msgid "conversion stopped due to problem in writing the output"
msgstr "konvertering avslutades på grund av problem med att skriva resultatet"
-#: iconv/iconv_prog.c:522
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
msgstr "otillåten indatasekvens vid position %ld"
-#: iconv/iconv_prog.c:530
+#: iconv/iconv_prog.c:541
#, c-format
msgid "internal error (illegal descriptor)"
msgstr "internt fel (otillåten deskriptor)"
-#: iconv/iconv_prog.c:533
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
msgstr "okänt fel från iconv() %d"
-#: iconv/iconv_prog.c:779
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -1518,7 +1547,7 @@ msgstr "för många tecken i teckenkodning"
msgid "no symbolic name given for end of range"
msgstr "inget symboliskt namn givet för slutet av intervallet"
-#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
#: locale/programs/ld-identification.c:452
@@ -1545,8 +1574,8 @@ msgstr "värdet på %s måste vara heltal"
msgid "%s: error in state machine"
msgstr "%s: fel i tillståndsmaskin"
-#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
-#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4115
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
#: locale/programs/ld-identification.c:468
#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
@@ -1570,7 +1599,7 @@ msgstr ""
"antal byte för bytesekvens angivet i början respektive slutet av intervallet\n"
"skiljer sig: %d respektive %d"
-#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3047
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
msgstr "ogiltiga namn för teckenintervall"
@@ -1592,7 +1621,7 @@ msgstr "övre gräns i intervall är mindre än undre gräns"
msgid "resulting bytes for range not representable."
msgstr "resulterande byte för intervall är inte representerbara."
-#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
@@ -1602,10 +1631,10 @@ msgstr "resulterande byte för intervall är inte representerbara."
msgid "No definition for %s category found"
msgstr "Hittade ingen definition för kategori %s"
-#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
-#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
-#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
-#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
@@ -1618,46 +1647,46 @@ msgstr "Hittade ingen definition för kategori %s"
msgid "%s: field `%s' not defined"
msgstr "%s: fält \"%s\" är inte definierat"
-#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
-#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
msgstr "%s: fält \"%s\" får inte vara tomt"
-#: locale/programs/ld-address.c:168
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
msgstr "%s: ogiltig kontrollsekvens \"%%%c\" i fält \"%s\" "
-#: locale/programs/ld-address.c:219
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
msgstr "%s: terminologispråkkod \"%s\" inte definierad"
-#: locale/programs/ld-address.c:244
+#: locale/programs/ld-address.c:246
#, c-format
msgid "%s: field `%s' must not be defined"
msgstr "%s: fält \"%s\" får inte definieras"
-#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
msgstr "%s: språkförkortning \"%s\" inte definierad"
-#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
-#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
msgstr "%s: värdet på \"%s\" stämmer inte med värdet på \"%s\""
-#: locale/programs/ld-address.c:312
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
msgstr "%s: numerisk landkod \"%d\" är inte giltig"
-#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
-#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
#: locale/programs/ld-identification.c:364
#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
@@ -1669,7 +1698,7 @@ msgstr "%s: numerisk landkod \"%d\" är inte giltig"
msgid "%s: field `%s' declared more than once"
msgstr "%s: fält \"%s\" är deklarerad mer än en gång"
-#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
@@ -1679,7 +1708,7 @@ msgstr "%s: fält \"%s\" är deklarerad mer än en gång"
msgid "%s: unknown character in field `%s'"
msgstr "%s: okänt tecken i fält \"%s\""
-#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
@@ -1689,10 +1718,10 @@ msgstr "%s: okänt tecken i fält \"%s\""
msgid "%s: incomplete `END' line"
msgstr "%s: ofullständig \"END\"-rad"
-#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:542
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
-#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4105
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
#: locale/programs/ld-identification.c:459
@@ -1835,7 +1864,7 @@ msgstr "ingen definition av \"UNDEFINED\""
msgid "too many errors; giving up"
msgstr "för många fel, ger upp"
-#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4044
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
#, c-format
msgid "%s: nested conditionals not supported"
msgstr "%s: nästlade villkor stöds inte"
@@ -1855,27 +1884,27 @@ msgstr "%s: dubbla definitioner av \"%s\""
msgid "%s: duplicate declaration of section `%s'"
msgstr "%s: dubbla deklarationer för sektion \"%s\""
-#: locale/programs/ld-collate.c:3027
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
msgstr "%s: okänt tecken i namn för kollationssymbol"
-#: locale/programs/ld-collate.c:3159
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
msgstr "%s: okänt tecken i namnet i ekvivalensdefinitionen"
-#: locale/programs/ld-collate.c:3172
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
msgstr "%s: okänt tecken i värdet i ekvivalensdefinitionen"
-#: locale/programs/ld-collate.c:3182
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
msgstr "%s: okänd symbol \"%s\" i ekvivalensdefinition"
-#: locale/programs/ld-collate.c:3191
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
msgstr "fel när ekvivalent kollationssymbol lades till"
@@ -1955,12 +1984,12 @@ msgstr "%s: tom kategoribeskrivning är inte tillåtet"
msgid "%s: missing `reorder-sections-end' keyword"
msgstr "%s: nyckelord \"reorder-sections-end\" saknas"
-#: locale/programs/ld-collate.c:4077
+#: locale/programs/ld-collate.c:4079
#, c-format
msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
msgstr "%s: \"%s\" utan matchande \"ifdef\" eller \"ifndef\""
-#: locale/programs/ld-collate.c:4095
+#: locale/programs/ld-collate.c:4097
#, c-format
msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
msgstr "%s: \"endif\" utan matchande \"ifdef\" eller \"ifndef\""
@@ -2284,7 +2313,7 @@ msgstr "%s: skräp i slutet av startdatum i sträng %Zd i \"era\"-fält"
msgid "%s: starting date is invalid in string %Zd in `era' field"
msgstr "%s: startdatum är ogiltigt i sträng %Zd i \"era\"-fält"
-#: locale/programs/ld-time.c:407
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
msgstr "%s: ogiltigt slutdatum i sträng %Zd i \"era\"-fält"
@@ -2294,11 +2323,6 @@ msgstr "%s: ogiltigt slutdatum i sträng %Zd i \"era\"-fält"
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
msgstr "%s: skräp i slutet av slutdatum i sträng %Zd i \"era\"-fält"
-#: locale/programs/ld-time.c:435
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s: slutdatum är ogiltigt i sträng %Zd i \"era\"-fält"
-
#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
@@ -2401,15 +2425,10 @@ msgid "Print more information"
msgstr "Skriv mer information"
#: locale/programs/locale.c:87
-msgid ""
-"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Hämta lokalspecifik information.\vFör felrapporteringsinstruktioner, se:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-"Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
+msgid "Get locale-specific information."
+msgstr "Hämta lokalspecifik information"
-#: locale/programs/locale.c:92
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
@@ -2417,27 +2436,27 @@ msgstr ""
"NAMN\n"
"[-a|-m]"
-#: locale/programs/locale.c:193
+#: locale/programs/locale.c:194
#, c-format
msgid "Cannot set LC_CTYPE to default locale"
msgstr "Kan inte sätta LC_CTYPE till standardlokalen"
-#: locale/programs/locale.c:195
+#: locale/programs/locale.c:196
#, c-format
msgid "Cannot set LC_MESSAGES to default locale"
msgstr "Kan inte sätta LC_MESSAGES till standardlokalen"
-#: locale/programs/locale.c:208
+#: locale/programs/locale.c:209
#, c-format
msgid "Cannot set LC_COLLATE to default locale"
msgstr "Kan inte sätta LC_COLLATE till standardlokalen"
-#: locale/programs/locale.c:224
+#: locale/programs/locale.c:225
#, c-format
msgid "Cannot set LC_ALL to default locale"
msgstr "Kan inte sätta LC_ALL till standardlokalen"
-#: locale/programs/locale.c:500
+#: locale/programs/locale.c:518
#, c-format
msgid "while preparing output"
msgstr "när utdata förbereddes"
@@ -2721,7 +2740,7 @@ msgid "cannot create output file `%s' for category `%s'"
msgstr "kan inte skapa utfil \"%s\" för kategori \"%s\""
#: locale/programs/locfile.c:782
-msgid "expect string argument for `copy'"
+msgid "expecting string argument for `copy'"
msgstr "förväntar strängargument för \"copy\""
#: locale/programs/locfile.c:786
@@ -2805,11 +2824,11 @@ msgstr "felaktig mcheck_status, biblioteket är felaktigt\n"
#: malloc/memusage.sh:27
msgid "Try \\`memusage --help' for more information."
-msgstr "Försök med \\\"memusage --help\\\" för mer information"
+msgstr "Försök med \"memusage --help\" för mer information"
#: malloc/memusage.sh:33
msgid "memusage: option \\`$1' requires an argument"
-msgstr "memusage: flaggan \\\"$1\\\" behöver ett argument"
+msgstr "memusage: flaggan \"$1\" behöver ett argument"
#: malloc/memusage.sh:39
msgid ""
@@ -2838,8 +2857,6 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Användning: memusage [FLAGGA]... PROGRAM [PROGRAMFLAGGA]...\n"
"Spåra minnesanvändning för PROGRAM.\n"
@@ -2865,12 +2882,8 @@ msgstr ""
"\n"
"Obligatoriska argument för långa flaggor är obligatoriska även för\n"
"motsvarande korta.\n"
-"\n"
-"För felrapporteringsinstruktioner, se:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-"Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>."
-#: malloc/memusage.sh:99
+#: malloc/memusage.sh:101
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
@@ -2882,51 +2895,51 @@ msgstr ""
" [--title=STRÄNG] [--x-size=ANTAL] [--y-size=ANTAL]\n"
" PROGRAM [PROGRAMFLAGGA]..."
-#: malloc/memusage.sh:191
+#: malloc/memusage.sh:193
msgid "memusage: option \\`${1##*=}' is ambiguous"
-msgstr "memusage: flaggan \\\"${1##*=}\\\" är tvetydig"
+msgstr "memusage: flaggan \"${1##*=}\" är tvetydig"
-#: malloc/memusage.sh:200
+#: malloc/memusage.sh:202
msgid "memusage: unrecognized option \\`$1'"
-msgstr "memusage: okänd flagga \\\"$1\\\""
+msgstr "memusage: okänd flagga \"$1\""
-#: malloc/memusage.sh:213
+#: malloc/memusage.sh:215
msgid "No program name given"
msgstr "Inget programnamn givet"
-#: malloc/memusagestat.c:54
+#: malloc/memusagestat.c:57
msgid "Name output file"
msgstr "Namnresultatfil"
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:58
msgid "Title string used in output graphic"
msgstr "Titelsträng att använda i resultatgrafiken"
-#: malloc/memusagestat.c:56
+#: malloc/memusagestat.c:59
msgid "Generate output linear to time (default is linear to number of function calls)"
msgstr "Generera utdata linjär i tiden (standardvärde är linjär mot antal funktionsanrop)"
-#: malloc/memusagestat.c:58
+#: malloc/memusagestat.c:61
msgid "Also draw graph for total memory consumption"
msgstr "Visa också en graf av totala minnesåtgången"
-#: malloc/memusagestat.c:59
+#: malloc/memusagestat.c:62
msgid "Make output graphic VALUE pixels wide"
msgstr "Gör resultatgrafiken ANTAL pixlar bred"
-#: malloc/memusagestat.c:60
+#: malloc/memusagestat.c:63
msgid "Make output graphic VALUE pixels high"
msgstr "Gör resultatgrafiken ANTAL pixlar hög"
-#: malloc/memusagestat.c:65
+#: malloc/memusagestat.c:68
msgid "Generate graphic from memory profiling data"
msgstr "Generera grafik från data från minnesprofilering"
-#: malloc/memusagestat.c:68
+#: malloc/memusagestat.c:71
msgid "DATAFILE [OUTFILE]"
msgstr "DATAFIL [UTFIL]"
-#: misc/error.c:118 timezone/zic.c:417
+#: misc/error.c:118
msgid "Unknown system error"
msgstr "Okänt systemfel"
@@ -2934,7 +2947,7 @@ msgstr "Okänt systemfel"
msgid "unable to free arguments"
msgstr "kan inte avallokera argument"
-#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr "Lyckat"
@@ -2976,7 +2989,7 @@ msgid "First/next chain broken"
msgstr "Första/Nästa-kedja bruten"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
msgstr "Ã…tkomst nekas"
@@ -3450,7 +3463,7 @@ msgstr "DES-post för nätnamn %s är inte unikt\n"
#: nis/nss_nisplus/nisplus-publickey.c:220
#, c-format
msgid "netname2user: missing group id list in `%s'"
-msgstr "netname2user: gruppid-lista saknas i \"%s\"."
+msgstr "netname2user: gruppid-lista saknas i \"%s\""
#: nis/nss_nisplus/nisplus-publickey.c:302
#: nis/nss_nisplus/nisplus-publickey.c:308
@@ -3479,433 +3492,472 @@ msgstr "netname2user: LOCAL-post för %s i katalog %s är inte unik"
msgid "netname2user: should not have uid 0"
msgstr "netname2user: borde inte ha uid 0"
-#: nis/ypclnt.c:825
+#: nis/ypclnt.c:836
msgid "Request arguments bad"
msgstr "Argument för förfrågan felaktiga"
-#: nis/ypclnt.c:828
+#: nis/ypclnt.c:839
msgid "RPC failure on NIS operation"
msgstr "RPC-fel vid NIS-operation"
-#: nis/ypclnt.c:831
+#: nis/ypclnt.c:842
msgid "Can't bind to server which serves this domain"
msgstr "Kan inte ansluta till servern som betjänar denna domän"
-#: nis/ypclnt.c:834
+#: nis/ypclnt.c:845
msgid "No such map in server's domain"
msgstr "Ingen sådan tabell i serverns domän"
-#: nis/ypclnt.c:837
+#: nis/ypclnt.c:848
msgid "No such key in map"
msgstr "Ingen sådan nyckel i tabellen"
-#: nis/ypclnt.c:840
+#: nis/ypclnt.c:851
msgid "Internal NIS error"
msgstr "Internt NIS-fel"
-#: nis/ypclnt.c:843
+#: nis/ypclnt.c:854
msgid "Local resource allocation failure"
msgstr "Allokeringsfel för lokal resurs"
-#: nis/ypclnt.c:846
+#: nis/ypclnt.c:857
msgid "No more records in map database"
msgstr "Inga fler poster i tabelldatabasen"
-#: nis/ypclnt.c:849
+#: nis/ypclnt.c:860
msgid "Can't communicate with portmapper"
msgstr "Kan inte kommunicera med portmapper"
-#: nis/ypclnt.c:852
+#: nis/ypclnt.c:863
msgid "Can't communicate with ypbind"
msgstr "Kan inte kommunicera med ypbind"
-#: nis/ypclnt.c:855
+#: nis/ypclnt.c:866
msgid "Can't communicate with ypserv"
msgstr "Kan inte kommunicera med ypserv"
-#: nis/ypclnt.c:858
+#: nis/ypclnt.c:869
msgid "Local domain name not set"
msgstr "Lokalt domännamn inte satt"
-#: nis/ypclnt.c:861
+#: nis/ypclnt.c:872
msgid "NIS map database is bad"
msgstr "NIS tabelldatabas är felaktig"
-#: nis/ypclnt.c:864
+#: nis/ypclnt.c:875
msgid "NIS client/server version mismatch - can't supply service"
msgstr "NIS versionsskillnad klient/server - kan inte betjäna"
-#: nis/ypclnt.c:870
+#: nis/ypclnt.c:881
msgid "Database is busy"
msgstr "Databasen är upptagen"
-#: nis/ypclnt.c:873
+#: nis/ypclnt.c:884
msgid "Unknown NIS error code"
msgstr "Okänd NIS-felkod"
-#: nis/ypclnt.c:913
+#: nis/ypclnt.c:924
msgid "Internal ypbind error"
msgstr "Internt ypbind-fel"
-#: nis/ypclnt.c:916
+#: nis/ypclnt.c:927
msgid "Domain not bound"
msgstr "Domän inte bunden"
-#: nis/ypclnt.c:919
+#: nis/ypclnt.c:930
msgid "System resource allocation failure"
msgstr "Allokeringsfel för systemresurs"
-#: nis/ypclnt.c:922
+#: nis/ypclnt.c:933
msgid "Unknown ypbind error"
msgstr "Okänt ypbind-fel"
-#: nis/ypclnt.c:963
+#: nis/ypclnt.c:974
msgid "yp_update: cannot convert host to netname\n"
msgstr "yp_update: kan inte omvandla värd till nätnamn\n"
-#: nis/ypclnt.c:981
+#: nis/ypclnt.c:992
msgid "yp_update: cannot get server address\n"
msgstr "yp_update: kan inte hämta serveradress\n"
-#: nscd/aicache.c:77 nscd/hstcache.c:468
+#: nscd/aicache.c:82 nscd/hstcache.c:481
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
msgstr "Hittar inte \"%s\" i värdcache!"
-#: nscd/aicache.c:79 nscd/hstcache.c:470
+#: nscd/aicache.c:84 nscd/hstcache.c:483
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
msgstr "Omladdar \"%s\" i värdcache!"
-#: nscd/cache.c:146
+#: nscd/cache.c:150
#, c-format
msgid "add new entry \"%s\" of type %s for %s to cache%s"
msgstr "lägg till ny post \"%s\" av typen %s för %s till cache%s"
-#: nscd/cache.c:148
+#: nscd/cache.c:152
msgid " (first)"
msgstr " (första)"
-#: nscd/cache.c:256 nscd/connections.c:810
+#: nscd/cache.c:286 nscd/connections.c:866
#, c-format
msgid "cannot stat() file `%s': %s"
msgstr "kan inte ta status på fil \"%s\": %s"
-#: nscd/cache.c:285
+#: nscd/cache.c:328
#, c-format
msgid "pruning %s cache; time %ld"
msgstr "beskär %s cache; tid %ld"
-#: nscd/cache.c:312
+#: nscd/cache.c:357
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
msgstr "överväger %s-post \"%s\", tidsgräns %<PRIu64>"
-#: nscd/connections.c:521 nscd/connections.c:533 nscd/connections.c:545
-#: nscd/connections.c:564
+#: nscd/connections.c:570
#, c-format
msgid "invalid persistent database file \"%s\": %s"
msgstr "ogiltig persistent databasfil \"%s\": %s"
-#: nscd/connections.c:535
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr "oinitierat huvud"
+
+#: nscd/connections.c:583
msgid "header size does not match"
msgstr "huvudstorlek stämmer inte"
-#: nscd/connections.c:547
+#: nscd/connections.c:593
msgid "file size does not match"
msgstr "filstorlek stämmer inte"
-#: nscd/connections.c:566
+#: nscd/connections.c:610
msgid "verification failed"
msgstr "verifikation misslyckades"
-#: nscd/connections.c:580
+#: nscd/connections.c:624
#, c-format
msgid "suggested size of table for database %s larger than the persistent database's table"
msgstr "föreslagen storlek på tabellen för databas %s är större än den persistenta databasens tabell"
-#: nscd/connections.c:591 nscd/connections.c:673
+#: nscd/connections.c:635 nscd/connections.c:720
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
msgstr "kan inte skapa läsbar filidentifierare för \"%s\", ingen mmap"
-#: nscd/connections.c:652
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr "kan inte komma åt \"%s\""
+
+#: nscd/connections.c:699
#, c-format
msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
msgstr "databas för %s korrupt eller använd av flera samtidigt; ta bort %s manuellt om det behövs och starta om"
-#: nscd/connections.c:659
+#: nscd/connections.c:706
#, c-format
msgid "cannot create %s; no persistent database used"
msgstr "kan inte skapa %s; ingen persistent databas används"
-#: nscd/connections.c:662
+#: nscd/connections.c:709
#, c-format
msgid "cannot create %s; no sharing possible"
msgstr "kan inte skapa %s; ingen delning möjlig"
-#: nscd/connections.c:733
+#: nscd/connections.c:780
#, c-format
msgid "cannot write to database file %s: %s"
msgstr "kan inte skriva till databasfil %s: %s"
-#: nscd/connections.c:772
+#: nscd/connections.c:819
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
msgstr "kan inte sätta uttag (socket) att stängas vid programstart: %s; kopplar ur paranoialäge"
-#: nscd/connections.c:823
+#: nscd/connections.c:902
#, c-format
msgid "cannot open socket: %s"
msgstr "kan inte öppna uttag (socket): %s"
-#: nscd/connections.c:840
+#: nscd/connections.c:922
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
msgstr "kan inte ändra uttag (socket) till icke-blockerande: %s"
-#: nscd/connections.c:848
+#: nscd/connections.c:930
#, c-format
msgid "cannot set socket to close on exec: %s"
msgstr "kan inte sätta uttag (socket) att stängas vid programstart: %s"
-#: nscd/connections.c:859
+#: nscd/connections.c:943
#, c-format
msgid "cannot enable socket to accept connections: %s"
msgstr "kan inte få uttag (socket) att acceptera förbindelser: %s"
-#: nscd/connections.c:955
+#: nscd/connections.c:1043
#, c-format
msgid "provide access to FD %d, for %s"
msgstr "ge åtkomst till FD %d, för %s"
-#: nscd/connections.c:967
+#: nscd/connections.c:1055
#, c-format
msgid "cannot handle old request version %d; current version is %d"
msgstr "kan inte hantera äldre förfrågansversion %d, nuvarande version är %d"
-#: nscd/connections.c:1009 nscd/connections.c:1062
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr "begäran från %ld inte hanterad för att rättigheter saknas"
+
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr "begäran från \"%s\" [%ld] inte hanterad för att rättigheter saknas"
+
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr "begäran inte hanterad för att rättigheter saknas"
+
+#: nscd/connections.c:1125 nscd/connections.c:1178
#, c-format
msgid "cannot write result: %s"
msgstr "kan inte skriva resultat: %s"
-#: nscd/connections.c:1145
+#: nscd/connections.c:1261
#, c-format
msgid "error getting caller's id: %s"
msgstr "kunde inte hämta anropandes identitet: %s"
-#: nscd/connections.c:1204
+#: nscd/connections.c:1320
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "kan inte öppna /proc/slef/cmdline: %s, kopplar ur paranoialäge"
-#: nscd/connections.c:1218
+#: nscd/connections.c:1334
#, c-format
msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "kan inte läsa /proc/self/cmdline: %s, kopplar ur paranoialäge"
-#: nscd/connections.c:1258
+#: nscd/connections.c:1374
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
msgstr "kan inte byta till föregående UID: %s; kopplar ur paranoialäge"
-#: nscd/connections.c:1268
+#: nscd/connections.c:1384
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
msgstr "kan inte byta till föregående GID: %s; kopplar ur paranoialäge"
-#: nscd/connections.c:1281
+#: nscd/connections.c:1397
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
msgstr "kan inte byta till föregående arbetskatalog: %s; kopplar ur paranoialäge"
-#: nscd/connections.c:1310
+#: nscd/connections.c:1429
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
msgstr "återstart misslyckades: %s; kopplar ur paranoialäge"
-#: nscd/connections.c:1319
+#: nscd/connections.c:1438
#, c-format
msgid "cannot change current working directory to \"/\": %s"
msgstr "kan inte byta aktuell katalog to \"/\": %s"
-#: nscd/connections.c:1437
+#: nscd/connections.c:1644
#, c-format
msgid "short read while reading request: %s"
msgstr "fattas data vid läsning av begäran: %s"
-#: nscd/connections.c:1468
+#: nscd/connections.c:1677
#, c-format
msgid "key length in request too long: %d"
msgstr "nyckellängd i begäran för lång: %d"
-#: nscd/connections.c:1481
+#: nscd/connections.c:1690
#, c-format
msgid "short read while reading request key: %s"
msgstr "fattas data vid läsning av begäransnyckel: %s"
-#: nscd/connections.c:1490
+#: nscd/connections.c:1699
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
msgstr "handle_request: begäran mottagen (Version = %d) från PID %ld"
-#: nscd/connections.c:1495
+#: nscd/connections.c:1704
#, c-format
msgid "handle_request: request received (Version = %d)"
msgstr "handle_request: begäran mottagen (Version = %d)"
-#: nscd/connections.c:1856
+#: nscd/connections.c:1903 nscd/connections.c:2101
#, c-format
-msgid "could only start %d threads; terminating"
-msgstr "kunde bara starta %d trådar; avslutar"
+msgid "disabled inotify after read error %d"
+msgstr "inaktiverade inotify efter läsfel %d"
+
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr "kan inte initiera villkorsvariabel"
+
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr "kunde inte starta städtråd; avslutar"
+
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr "kunde inte starta någon arbetstråd; avslutar"
-#: nscd/connections.c:1904 nscd/connections.c:1905 nscd/connections.c:1922
-#: nscd/connections.c:1931 nscd/connections.c:1949 nscd/connections.c:1960
-#: nscd/connections.c:1971
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
#, c-format
msgid "Failed to run nscd as user '%s'"
msgstr "Misslyckades att köra nscd som användare \"%s\""
-#: nscd/connections.c:1923
+#: nscd/connections.c:2322
#, c-format
msgid "initial getgrouplist failed"
msgstr "första getgrouplist misslyckades"
-#: nscd/connections.c:1932
+#: nscd/connections.c:2331
#, c-format
msgid "getgrouplist failed"
msgstr "getgrouplist misslyckades"
-#: nscd/connections.c:1950
+#: nscd/connections.c:2349
#, c-format
msgid "setgroups failed"
msgstr "setgroups misslyckades"
-#: nscd/grpcache.c:402 nscd/hstcache.c:418 nscd/initgrcache.c:412
-#: nscd/pwdcache.c:397 nscd/servicescache.c:343
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
#, c-format
msgid "short write in %s: %s"
msgstr "ofullständig skrivning i %s: %s"
-#: nscd/grpcache.c:445 nscd/initgrcache.c:78
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
msgstr "Hittar inte \"%s\" i gruppcache!"
-#: nscd/grpcache.c:447 nscd/initgrcache.c:80
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
msgstr "Omladdar \"%s\" i gruppcache!"
-#: nscd/grpcache.c:524
+#: nscd/grpcache.c:517
#, c-format
msgid "Invalid numeric gid \"%s\"!"
msgstr "Ogiltigt numeriskt gruppid (gid) \"%s\"!"
-#: nscd/mem.c:383
+#: nscd/mem.c:457
#, c-format
msgid "freed %zu bytes in %s cache"
msgstr "frigorde %zu byte i %s cache"
-#: nscd/mem.c:512
+#: nscd/mem.c:594
#, c-format
msgid "no more memory for database '%s'"
msgstr "inget mer minne för databas \"%s\""
-#: nscd/nscd.c:98
+#: nscd/nscd.c:101
msgid "Read configuration data from NAME"
msgstr "Läs konfigurationsdata från NAMN"
-#: nscd/nscd.c:100
+#: nscd/nscd.c:103
msgid "Do not fork and display messages on the current tty"
msgstr "Skapa inte barnprocess, visa meddelanden på nuvarande tty"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "NUMBER"
msgstr "ANTAL"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "Start NUMBER threads"
msgstr "Starta ANTAL trådar"
-#: nscd/nscd.c:102
+#: nscd/nscd.c:105
msgid "Shut the server down"
msgstr "Avsluta servern"
-#: nscd/nscd.c:103
-msgid "Print current configuration statistic"
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
msgstr "Skriv ut nuvarande konfigurationsstatistik"
-#: nscd/nscd.c:104
+#: nscd/nscd.c:107
msgid "TABLE"
msgstr "TABELL"
-#: nscd/nscd.c:105
+#: nscd/nscd.c:108
msgid "Invalidate the specified cache"
msgstr "Invalidera den angivna cachen"
-#: nscd/nscd.c:106
+#: nscd/nscd.c:109
msgid "TABLE,yes"
msgstr "TABELL,ja"
-#: nscd/nscd.c:107
+#: nscd/nscd.c:110
msgid "Use separate cache for each user"
msgstr "Använd separat cache för varje användare"
-#: nscd/nscd.c:112
+#: nscd/nscd.c:115
msgid "Name Service Cache Daemon."
msgstr "Namntjänst cache-demon"
-#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
#, c-format
msgid "wrong number of arguments"
msgstr "fel antal argument"
-#: nscd/nscd.c:154
+#: nscd/nscd.c:157
#, c-format
msgid "failure while reading configuration file; this is fatal"
msgstr "kan inte läsa konfigurationsdata, detta är fatalt"
-#: nscd/nscd.c:163
+#: nscd/nscd.c:166
#, c-format
msgid "already running"
msgstr "kör redan"
-#: nscd/nscd.c:178 nscd/nscd.c:233
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
msgid "cannot fork"
msgstr "kan inte skapa barnprocess"
-#: nscd/nscd.c:241
+#: nscd/nscd.c:244
#, c-format
msgid "cannot change current working directory to \"/\""
msgstr "kan inte byta aktuell katalog till \"/\""
-#: nscd/nscd.c:249
+#: nscd/nscd.c:252
msgid "Could not create log file"
msgstr "Kunde inte skapa loggfil"
-#: nscd/nscd.c:302 nscd/nscd.c:327 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
msgid "Only root is allowed to use this option!"
msgstr "Bara root har tillåtelse att använda denna operation!"
-#: nscd/nscd.c:364 nscd/nscd_stat.c:191
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr "\"%s\" är inte en känd databas"
+
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
msgid "write incomplete"
msgstr "ofullständing skrivning"
-#: nscd/nscd.c:375
+#: nscd/nscd.c:381
#, c-format
msgid "cannot read invalidate ACK"
msgstr "kan inte läsa ogiltigförklarings-ACK"
-#: nscd/nscd.c:381
+#: nscd/nscd.c:387
#, c-format
msgid "invalidation failed"
msgstr "ogiltigförklaring misslyckades"
-#: nscd/nscd.c:391
+#: nscd/nscd.c:397
#, c-format
msgid "secure services not implemented anymore"
msgstr "säkra tjänster är inte implementerade längre"
@@ -3920,37 +3972,37 @@ msgstr "databas \"%s\" stöds ej"
msgid "Parse error: %s"
msgstr "Parsfel: %s"
-#: nscd/nscd_conf.c:193
+#: nscd/nscd_conf.c:194
#, c-format
msgid "Must specify user name for server-user option"
msgstr "Användarnamn krävs för \"server-user\"-flaggan"
-#: nscd/nscd_conf.c:200
+#: nscd/nscd_conf.c:201
#, c-format
msgid "Must specify user name for stat-user option"
msgstr "Användarnamn krävs för \"stat-user\"-flaggan"
-#: nscd/nscd_conf.c:244
+#: nscd/nscd_conf.c:245
#, c-format
msgid "invalid value for 'reload-count': %u"
msgstr "ogiltigt värde för \"reload-count\": %u"
-#: nscd/nscd_conf.c:259
+#: nscd/nscd_conf.c:260
#, c-format
msgid "Must specify value for restart-interval option"
msgstr "Måste ge värde för \"restart-interval\"-flaggan"
-#: nscd/nscd_conf.c:273
+#: nscd/nscd_conf.c:274
#, c-format
msgid "Unknown option: %s %s %s"
msgstr "Okänd flagga: %s %s %s"
-#: nscd/nscd_conf.c:286
+#: nscd/nscd_conf.c:287
#, c-format
msgid "cannot get current working directory: %s; disabling paranoia mode"
msgstr "kan inte hämta aktuell katalog: %s; kopplar ut paranoialäge"
-#: nscd/nscd_conf.c:306
+#: nscd/nscd_conf.c:307
#, c-format
msgid "maximum file size for %s database too small"
msgstr "maximal filstorlek för \"%s\"-databasen är för liten"
@@ -4080,17 +4132,17 @@ msgstr ""
"%15<PRIuMAX> antal misslyckade minnesallokeringar\n"
"%15s kontrollera /etc/%s för ändringar\n"
-#: nscd/pwdcache.c:440
+#: nscd/pwdcache.c:443
#, c-format
msgid "Haven't found \"%s\" in password cache!"
msgstr "Hittar inte \"%s\" i lösenordscache!"
-#: nscd/pwdcache.c:442
+#: nscd/pwdcache.c:445
#, c-format
msgid "Reloading \"%s\" in password cache!"
msgstr "Omladdar \"%s\" i lösenordscache!"
-#: nscd/pwdcache.c:520
+#: nscd/pwdcache.c:523
#, c-format
msgid "Invalid numeric uid \"%s\"!"
msgstr "Ogiltigt numeriskt användarid (uid) \"%s\"!"
@@ -4166,7 +4218,11 @@ msgstr "Kunde inte hämta kontext för nscd"
msgid "Error getting sid from context"
msgstr "Kunde inte hämta \"sid\" från kontext"
-#: nscd/selinux.c:399
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr "inkompilerat stöd för databaspolicy saknas"
+
+#: nscd/selinux.c:407
#, c-format
msgid ""
"\n"
@@ -4212,29 +4268,24 @@ msgid "Service configuration to be used"
msgstr "Tjänstekonfiguration som ska användas"
#: nss/getent.c:62
-msgid ""
-"Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Hämta poster från den administrativa databasen\vFör felrapporteringsinstruktioner, se:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-"Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
+msgid "Get entries from administrative database."
+msgstr "Hämta poster från den administrativa databasen"
-#: nss/getent.c:145 nss/getent.c:394
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
msgid "Enumeration not supported on %s\n"
msgstr "Uppräkning stöds inte på %s\n"
-#: nss/getent.c:782
+#: nss/getent.c:794
#, c-format
msgid "Unknown database name"
msgstr "Okänt databasnamn"
-#: nss/getent.c:808
+#: nss/getent.c:820
msgid "Supported databases:\n"
msgstr "Databaser som stöds:\n"
-#: nss/getent.c:868
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
msgstr "Okänd databas: %s\n"
@@ -4308,151 +4359,165 @@ msgstr "Användning: %s [-v specifikation] variabelnamn [sökväg]\n"
msgid " %s -a [pathname]\n"
msgstr " %s -a [sökväg]\n"
-#: posix/getconf.c:1067
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
+"Användning: getconf [-v SPEC] VAR\n"
+" eller: getconf [-v SPEC] VÄG_VAR VÄG\n"
+"\n"
+"Hämta konfigureringsvärdet för variabeln VAR, eller för variabeln VÄG_VAR\n"
+"för sökväg VÄG. Om SPEC är given hämta värden för kompileringsspecifikationen\n"
+"SPEC.\n"
+"\n"
+
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
msgstr "okänd specifikation \"%s\""
-#: posix/getconf.c:1095
+#: posix/getconf.c:1109
#, c-format
msgid "Couldn't execute %s"
msgstr "Kunde inte exekvera %s"
-#: posix/getconf.c:1135 posix/getconf.c:1151
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
msgstr "odefinierad"
-#: posix/getconf.c:1173
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
msgstr "Okänd variabel \"%s\""
-#: posix/getopt.c:571 posix/getopt.c:587
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
-msgid "%s: option `%s' is ambiguous\n"
+msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: flaggan \"%s\" är tvetydig\n"
-#: posix/getopt.c:620 posix/getopt.c:624
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: flaggan \"--%s\" tar inget argument\n"
-#: posix/getopt.c:633 posix/getopt.c:638
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: flaggan \"%c%s\" tar inget argument\n"
-#: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
-#: posix/getopt.c:1035
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
-msgid "%s: option `%s' requires an argument\n"
+msgid "%s: option '%s' requires an argument\n"
msgstr "%s: flaggan \"%s\" behöver ett argument\n"
-#: posix/getopt.c:738 posix/getopt.c:741
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: okänd flagga \"--%s\"\n"
-#: posix/getopt.c:749 posix/getopt.c:752
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: okänd flagga \"%c%s\"\n"
-#: posix/getopt.c:804 posix/getopt.c:807
-#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr "%s: otillåten flagga -- %c\n"
-
-#: posix/getopt.c:813 posix/getopt.c:816
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
-msgid "%s: invalid option -- %c\n"
-msgstr "%s: ogiltig flagga -- %c\n"
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: ogiltig flagga -- \"%c\"\n"
-#: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
-#: posix/getopt.c:1106
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: flaggan behöver ett argument -- %c\n"
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: flaggan behöver ett argument -- \"%c\"\n"
-#: posix/getopt.c:937 posix/getopt.c:953
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
-#: posix/getopt.c:977 posix/getopt.c:995
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: flaggan \"-W %s\" tar inget argument\n"
-#: posix/regcomp.c:135
+#: posix/regcomp.c:136
msgid "No match"
msgstr "Ingen träff"
-#: posix/regcomp.c:138
+#: posix/regcomp.c:139
msgid "Invalid regular expression"
msgstr "Ogiltigt reguljärt uttryck"
-#: posix/regcomp.c:141
+#: posix/regcomp.c:142
msgid "Invalid collation character"
msgstr "Ogiltigt kollationeringstecken"
-#: posix/regcomp.c:144
+#: posix/regcomp.c:145
msgid "Invalid character class name"
msgstr "Ogiltigt teckenklassnamn"
-#: posix/regcomp.c:147
+#: posix/regcomp.c:148
msgid "Trailing backslash"
msgstr "Avslutande omvänt snedstreck"
-#: posix/regcomp.c:150
+#: posix/regcomp.c:151
msgid "Invalid back reference"
msgstr "Ogiltig bakåtreferens"
-#: posix/regcomp.c:153
+#: posix/regcomp.c:154
msgid "Unmatched [ or [^"
msgstr "Obalanserade [ eller [^"
-#: posix/regcomp.c:156
+#: posix/regcomp.c:157
msgid "Unmatched ( or \\("
msgstr "Obalanserade ( eller \\("
-#: posix/regcomp.c:159
+#: posix/regcomp.c:160
msgid "Unmatched \\{"
msgstr "Obalanserad \\{"
-#: posix/regcomp.c:162
+#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
msgstr "Ogiltigt innehåll i \\{\\}"
-#: posix/regcomp.c:165
+#: posix/regcomp.c:166
msgid "Invalid range end"
msgstr "Ogiltigt intervallslut"
-#: posix/regcomp.c:168
+#: posix/regcomp.c:169
msgid "Memory exhausted"
msgstr "Minnet slut"
-#: posix/regcomp.c:171
+#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
msgstr "Ogiltigt föregående reguljärt uttryck"
-#: posix/regcomp.c:174
+#: posix/regcomp.c:175
msgid "Premature end of regular expression"
msgstr "För tidigt slut på reguljärt uttryck"
-#: posix/regcomp.c:177
+#: posix/regcomp.c:178
msgid "Regular expression too big"
msgstr "Reguljärt uttryck för stort"
-#: posix/regcomp.c:180
+#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
msgstr "Obalanserade ) eller \\)"
-#: posix/regcomp.c:660
+#: posix/regcomp.c:681
msgid "No previous regular expression"
msgstr "Inget föregående reguljärt uttryck"
-#: posix/wordexp.c:1798
+#: posix/wordexp.c:1832
msgid "parameter null or not set"
msgstr "parameter är tom eller inte satt"
@@ -4536,133 +4601,138 @@ msgstr "Realtidssignal %d"
msgid "Unknown signal %d"
msgstr "Okänd signal %d"
-#: sunrpc/auth_unix.c:114
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create: minnet slut\n"
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "minnet slut\n"
#: sunrpc/auth_unix.c:350
msgid "auth_unix.c: Fatal marshalling problem"
-msgstr "auth_unix.c - Fatalt kodningsproblem"
+msgstr "auth_unix.c: Fatalt kodningsproblem"
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; undre version = %lu, övre version = %lu"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s: %s; undre version = %lu, övre version = %lu"
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr "; varför = "
+#: sunrpc/clnt_perr.c:112
+#, c-format
+msgid "%s: %s; why = %s\n"
+msgstr "%s: %s; varför = %s\n"
-#: sunrpc/clnt_perr.c:132
+#: sunrpc/clnt_perr.c:114
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(okänt fel vid äkthetskontroll - %d)"
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s: %s; varför = (okänt fel vid äkthetskontroll - %d)\n"
-#: sunrpc/clnt_perr.c:172
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
msgstr "RPC: Lyckat"
-#: sunrpc/clnt_perr.c:175
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
msgstr "RPC: Kan inte koda argumentet"
-#: sunrpc/clnt_perr.c:179
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
msgstr "RPC: Kan inte avkoda resultatet"
-#: sunrpc/clnt_perr.c:183
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
msgstr "RPC: Kan inte skicka"
-#: sunrpc/clnt_perr.c:187
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
msgstr "RPC: Kan inte ta emot"
-#: sunrpc/clnt_perr.c:191
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
msgstr "RPC: Tiden löpte ut"
-#: sunrpc/clnt_perr.c:195
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
msgstr "RPC: Inkompatibla versioner av RPC"
-#: sunrpc/clnt_perr.c:199
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
msgstr "RPC: Fel vid äkthetskontroll"
-#: sunrpc/clnt_perr.c:203
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
msgstr "RPC: Programmet otillgängligt"
-#: sunrpc/clnt_perr.c:207
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
msgstr "RPC: Program/version-inkompatibilitet"
-#: sunrpc/clnt_perr.c:211
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
msgstr "RPC: Procedur inte tillgänglig"
-#: sunrpc/clnt_perr.c:215
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
msgstr "RPC: Server kan inte avkoda argumenten"
-#: sunrpc/clnt_perr.c:219
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
msgstr "RPC: Fjärrsystemsfel"
-#: sunrpc/clnt_perr.c:223
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
msgstr "RPC: Okänd värdmaskin"
-#: sunrpc/clnt_perr.c:227
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
msgstr "RPC: Okänt protokoll"
-#: sunrpc/clnt_perr.c:231
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
msgstr "RPC: Fel i portöversättare"
-#: sunrpc/clnt_perr.c:235
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
msgstr "RPC: Programmet inte registrerat"
-#: sunrpc/clnt_perr.c:239
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
msgstr "RPC: Misslyckades (ospecificerat fel)"
-#: sunrpc/clnt_perr.c:280
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
msgstr "RPC: (okänd felkod)"
-#: sunrpc/clnt_perr.c:342
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
msgstr "Äkthetskontroll OK"
-#: sunrpc/clnt_perr.c:345
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
msgstr "Ogiltiga klientreferenser"
-#: sunrpc/clnt_perr.c:349
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
msgstr "Server förkastade kreditiv"
-#: sunrpc/clnt_perr.c:353
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
msgstr "Ogiltig klientverifierare"
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
msgstr "Server förkastade verifierare"
-#: sunrpc/clnt_perr.c:361
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
msgstr "Klientens referenser är för svaga"
-#: sunrpc/clnt_perr.c:365
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
msgstr "Ogiltig serververifierare"
-#: sunrpc/clnt_perr.c:369
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
msgstr "Misslyckades (ospecificerat fel)"
@@ -4670,18 +4740,6 @@ msgstr "Misslyckades (ospecificerat fel)"
msgid "clnt_raw.c: fatal header serialization error"
msgstr "clnt_raw.c: fatalt fel vid serialisering"
-#: sunrpc/clnt_tcp.c:131
-msgid "clnttcp_create: out of memory\n"
-msgstr "clnttcp_create: minnet slut\n"
-
-#: sunrpc/clnt_udp.c:139
-msgid "clntudp_create: out of memory\n"
-msgstr "clntudp_create: minnet slut\n"
-
-#: sunrpc/clnt_unix.c:128
-msgid "clntunix_create: out of memory\n"
-msgstr "clntunix_create: minnet slut\n"
-
#: sunrpc/pm_getmaps.c:83
msgid "pmap_getmaps.c: rpc problem"
msgstr "pmap_getmaps.c rpc problem"
@@ -4710,119 +4768,242 @@ msgstr "Problem med poll vid utsändning"
msgid "Cannot receive reply to broadcast"
msgstr "Kan inte ta emot svar på utsändning"
-#: sunrpc/rpc_main.c:286
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr "%s: utdata skulle skriva över %s\n"
-#: sunrpc/rpc_main.c:293
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr "%s: kan inte öppna %s: %m\n"
-#: sunrpc/rpc_main.c:305
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
msgstr "%s: när resultatet %s skrevs: %m"
-#: sunrpc/rpc_main.c:340
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
msgstr "kan inte hitta C preprocessor: %s \n"
-#: sunrpc/rpc_main.c:348
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
msgstr "kan inte hitta någon C preprocessor (cpp)\n"
-#: sunrpc/rpc_main.c:417
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
msgstr "%s: C preprocessorn avslutades med signal %d\n"
-#: sunrpc/rpc_main.c:420
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
msgstr "%s: C preprocessorn avslutades med slutstatus %d\n"
-#: sunrpc/rpc_main.c:460
+#: sunrpc/rpc_main.c:464
#, c-format
msgid "illegal nettype: `%s'\n"
msgstr "ogiltig nättyp: \"%s\"\n"
-#: sunrpc/rpc_main.c:1122
+#: sunrpc/rpc_main.c:1130
#, c-format
msgid "rpcgen: too many defines\n"
msgstr "rpcgen: för många \"define\"\n"
-#: sunrpc/rpc_main.c:1134
+#: sunrpc/rpc_main.c:1142
#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr "rpcgen: arglist kodningsfel\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1167
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
msgstr "fil \"%s\" finns redan och kan bli överskriven\n"
-#: sunrpc/rpc_main.c:1212
+#: sunrpc/rpc_main.c:1220
#, c-format
msgid "Cannot specify more than one input file!\n"
msgstr "Kan inte ange mer än en infil!\n"
-#: sunrpc/rpc_main.c:1382
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
msgstr "Denna implementation stödjer inte \"newstyle\" eller trådsäker kod!\n"
-#: sunrpc/rpc_main.c:1391
+#: sunrpc/rpc_main.c:1403
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
msgstr "Kan inte ange netid-flaggan tillsammans med inetd-flaggan!\n"
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
msgstr "Kan inte ange netid-flaggan utan TIRPC!\n"
-#: sunrpc/rpc_main.c:1410
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
msgstr "Kan inte ange tabellflaggor med ny stil\n"
-#: sunrpc/rpc_main.c:1429
+#: sunrpc/rpc_main.c:1441
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
msgstr "\"infil\" är obligatorisk för mallgenereringsflaggor.\n"
-#: sunrpc/rpc_main.c:1434
+#: sunrpc/rpc_main.c:1446
#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr "Kan inte ha mer än en filgenereringsflagga!\n"
-#: sunrpc/rpc_main.c:1443
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
msgstr "användning: %s infil\n"
-#: sunrpc/rpc_main.c:1444
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
msgstr "\t%s [-abkCLNTM][-Dnamn[=värde]] [-i storlek] [-I [-K sekunder]] [-Y sökväg] infil\n"
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o utfil] [infil]\n"
-#: sunrpc/rpc_main.c:1448
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
msgstr "\t%s [-s nättyp]* [-o utfil] [infil]\n"
-#: sunrpc/rpc_main.c:1449
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
msgstr "\t%s [-n nätid]* [-o utfil] [infil]\n"
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr "flaggor:\n"
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr "-a\t\tgenerera alla filer, inklusive exempel\n"
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr "-b\t\tbakåtkompatibelt läge (genererar kod för SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr "'-c\t\tgenerera XDR-funktioner\n"
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr "-C\t\tANSI C-läge\n"
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr "-Dnamn[=värde]\tdefiniera en symbol (samma som #define)\n"
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr "-h\t\tgenerera huvudfil\n"
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr "-i storlek\t\tstorlek när inline-kod börjar genereras\n"
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr "-I\t\tgenerera kod för inetd-stöd i servern (för SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr "-K sekunder\tserver avslutar efter så här många sekunders inaktivitet\n"
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr "-l\t\tgenerera stubbar för klienten\n"
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr "-L\t\tserverfel loggas till syslog\n"
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr "-m\t\tgenerera stubbar för servern\n"
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr "-M\t\tgenerera trådsäker kod\n"
+
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr "-n netid\tgenerera serverkod som stödjer namngiven netid\n"
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr "-N\t\tstöd multipla argument och anrop-via-värde\n"
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr "-o utfil\tnamn på utfilen\n"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr "-s nättyp\t\tgenerera serverkod som stödjer namngiven nättyp\n"
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr "-Sc\t\tgenerera exempelkod för klienten som använder fjärrprocedurer\n"
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr "-Ss\t\tgenerera exempelkod för server som definierar fjärrprocedurer\n"
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr "-Sm\t\tgenerera makefile-mall\n"
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr "-t\t\tgenerera en RPC-hopptabell\n"
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr "-T\t\tgenerera kod för att stödja RPC-hopptabeller\n"
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr "-Y sökväg\t\tkatalog för att hitta C preprocessorn (cpp)\n"
+
#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
msgstr "konstant eller identifierare förväntad"
@@ -4843,79 +5024,79 @@ msgstr "tom teckensträng"
msgid "preprocessor error"
msgstr "preprocessorfel"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
msgstr "program %lu är inte tillgängligt\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
msgstr "program %lu version %lu är inte tillgängligt\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr "program %lu version %lu redo och väntar\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
msgstr "rpcinfo: kan inte kontakta portmapper"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
msgstr "Inga fjärrprogram registrerade.\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
msgstr " program vers proto port\n"
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
msgstr "(okänt)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
msgstr "rpcinfo: utsändning misslyckades: %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
msgstr "Tyvärr, du är inte root\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
msgstr "rpcinfo: Kunde inte ta bort registrering av prog %s version %s\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
msgstr "Användning: rpcinfo [ -n portnr ] -u värd prognr [ versnr ]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr " rpcinfo [ -n portnr ] -t värd prognr [ versnr ]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
msgstr " rpcinfo -p [ värd ]\n"
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
msgstr " rpcinfo -b prognr versnr\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
msgstr " rpcinfo -d prognr versnr\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr "rpcinfo: %s är en okänd tjänst\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
msgstr "rpcinfo: %s är en okänd värd\n"
@@ -4964,14 +5145,6 @@ msgstr "svc_tcp.c - problem att skapa tcp-uttag (socket)"
msgid "svc_tcp.c - cannot getsockname or listen"
msgstr "svc_tcp.c - kan inte anropa getsockname eller listen"
-#: sunrpc/svc_tcp.c:179
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create: minnet slut\n"
-
-#: sunrpc/svc_tcp.c:218
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp: makefd_xprt: minnet slut\n"
-
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
msgstr "svcudp_create: problem att skapa uttag (socket)"
@@ -4980,39 +5153,35 @@ msgstr "svcudp_create: problem att skapa uttag (socket)"
msgid "svcudp_create - cannot getsockname"
msgstr "svcudp_create - kan inte anropa getsockname"
-#: sunrpc/svc_udp.c:152
-msgid "svcudp_create: out of memory\n"
-msgstr "svcudb_create: minnet slut\n"
-
-#: sunrpc/svc_udp.c:174
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
msgstr "svcudp_create: xp_pad är för liten för IP_PKTINFO\n"
-#: sunrpc/svc_udp.c:474
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
msgstr "enablecache: cache redan påslagen"
-#: sunrpc/svc_udp.c:480
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
msgstr "enablecache: kunde inte allokera cache"
-#: sunrpc/svc_udp.c:489
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
msgstr "enablecache: kunde inte allokera cache-data"
-#: sunrpc/svc_udp.c:497
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
msgstr "enablecache: kunde inte allokera cache-fifo"
-#: sunrpc/svc_udp.c:532
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
msgstr "cache_set: offer hittades inte"
-#: sunrpc/svc_udp.c:543
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
msgstr "cache_set: offerallokering misslyckades"
-#: sunrpc/svc_udp.c:550
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
msgstr "cache_set: kunde inte allokera ny rpc-buffert"
@@ -5024,34 +5193,6 @@ msgstr "svc_unix.c - problem att skapa AF_UNIX uttag (socket)"
msgid "svc_unix.c - cannot getsockname or listen"
msgstr "svc_unix.c - kan inte anropa getsockname eller listen"
-#: sunrpc/svc_unix.c:176
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create: minnet slut\n"
-
-#: sunrpc/svc_unix.c:215
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix: makefd_xprt: minnet slut\n"
-
-#: sunrpc/xdr.c:566
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes: minnet slut\n"
-
-#: sunrpc/xdr.c:718
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string: minnet slut\n"
-
-#: sunrpc/xdr_array.c:106
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array: minnet slut\n"
-
-#: sunrpc/xdr_rec.c:156
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create: minnet slut\n"
-
-#: sunrpc/xdr_ref.c:86
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_reference: minnet slut\n"
-
#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
msgid "Hangup"
msgstr "Avringd"
@@ -6113,76 +6254,85 @@ msgstr "%s är för en okänd maskin %d.\n"
msgid "makecontext: does not know how to handle more than 8 arguments\n"
msgstr "makecontext: kan inte hantera mer än 8 argument\n"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
+"Användning: lddlibc4 FIL\n"
+"\n"
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
msgid "cannot open `%s'"
msgstr "kan inte öppna \"%s\""
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
msgid "cannot read header from `%s'"
msgstr "kan inte läsa huvud från \"%s\""
-#: timezone/zdump.c:211
+#: timezone/zdump.c:210
msgid "lacks alphabetic at start"
msgstr "saknar alfabetiskt tecken i början"
-#: timezone/zdump.c:213
+#: timezone/zdump.c:212
msgid "has fewer than 3 alphabetics"
msgstr "har färre än 3 alfabetiska tecken"
-#: timezone/zdump.c:215
+#: timezone/zdump.c:214
msgid "has more than 6 alphabetics"
msgstr "har fler än 6 alfabetiska tecken"
-#: timezone/zdump.c:223
+#: timezone/zdump.c:222
msgid "differs from POSIX standard"
msgstr "skiljer sig från POSIX-standard"
-#: timezone/zdump.c:229
+#: timezone/zdump.c:228
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
msgstr "%s: varning: zon \"%s\" förkortning \"%s\": %s\n"
-#: timezone/zdump.c:280
+#: timezone/zdump.c:279
#, c-format
msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
msgstr "%s: användning är %s [ --version ] [ -v ] [ -c [startår,}slutår ] zonnamn ...\n"
-#: timezone/zdump.c:297
+#: timezone/zdump.c:296
#, c-format
msgid "%s: wild -c argument %s\n"
msgstr "%s: argument \"%s\" till flaggan -c har fel format\n"
-#: timezone/zdump.c:388
+#: timezone/zdump.c:387
msgid "Error writing to standard output"
msgstr "Fel vid skrivning till standard ut"
-#: timezone/zdump.c:411
+#: timezone/zdump.c:410
#, c-format
msgid "%s: use of -v on system with floating time_t other than float or double\n"
msgstr "%s: använder -v på ett system där time_t är ett annat flyttal än \"float\" eller \"double\"\n"
-#: timezone/zic.c:392
+#: timezone/zic.c:388
#, c-format
msgid "%s: Memory exhausted: %s\n"
msgstr "%s: Minnet slut: %s\n"
-#: timezone/zic.c:451
+#: timezone/zic.c:434
#, c-format
msgid "\"%s\", line %d: %s"
msgstr "\"%s\", rad %d: %s"
-#: timezone/zic.c:454
+#: timezone/zic.c:437
#, c-format
msgid " (rule from \"%s\", line %d)"
msgstr " (regel från \"%s\", rad %d)"
-#: timezone/zic.c:466
+#: timezone/zic.c:449
msgid "warning: "
msgstr "varning: "
-#: timezone/zic.c:476
+#: timezone/zic.c:459
#, c-format
msgid ""
"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
@@ -6191,335 +6341,335 @@ msgstr ""
"%s: användning är %s [ --version ] [ -v ] [ -l lokaltid ] [ -p posixregler ] \\\n"
"\t[ -d katalog ] [ -L skottsekunder ] [ -y årkontrollprogram ] [ filnamn ... ]\n"
-#: timezone/zic.c:511
+#: timezone/zic.c:494
msgid "wild compilation-time specification of zic_t"
msgstr "definitionen av zic_t vid kompilering är orimlig"
-#: timezone/zic.c:528
+#: timezone/zic.c:511
#, c-format
msgid "%s: More than one -d option specified\n"
msgstr "%s: Flaggan -d given mer än en gång\n"
-#: timezone/zic.c:538
+#: timezone/zic.c:521
#, c-format
msgid "%s: More than one -l option specified\n"
msgstr "%s: Flaggan -l given mer än en gång\n"
-#: timezone/zic.c:548
+#: timezone/zic.c:531
#, c-format
msgid "%s: More than one -p option specified\n"
msgstr "%s: Flaggan -p given mer än en gång\n"
-#: timezone/zic.c:558
+#: timezone/zic.c:541
#, c-format
msgid "%s: More than one -y option specified\n"
msgstr "%s: Flaggan -y given mer än en gång\n"
-#: timezone/zic.c:568
+#: timezone/zic.c:551
#, c-format
msgid "%s: More than one -L option specified\n"
msgstr "%s: Flaggan -L given mer än en gång\n"
-#: timezone/zic.c:617
+#: timezone/zic.c:600
msgid "link to link"
msgstr "länk till länk"
-#: timezone/zic.c:682
+#: timezone/zic.c:665
msgid "hard link failed, symbolic link used"
msgstr "hård länk misslyckades, använder symbolisk länk"
-#: timezone/zic.c:690
+#: timezone/zic.c:673
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
msgstr "%s: Kan inte länka från %s till %s: %s\n"
-#: timezone/zic.c:762 timezone/zic.c:764
+#: timezone/zic.c:745 timezone/zic.c:747
msgid "same rule name in multiple files"
msgstr "samma regelnamn i flera filer"
-#: timezone/zic.c:805
+#: timezone/zic.c:788
msgid "unruly zone"
msgstr "besvärlig zon"
-#: timezone/zic.c:812
+#: timezone/zic.c:795
#, c-format
msgid "%s in ruleless zone"
msgstr "%s i zon utan regler"
-#: timezone/zic.c:833
+#: timezone/zic.c:816
msgid "standard input"
msgstr "standard in"
-#: timezone/zic.c:838
+#: timezone/zic.c:821
#, c-format
msgid "%s: Can't open %s: %s\n"
msgstr "%s: Kan inte öppna %s: %s\n"
-#: timezone/zic.c:849
+#: timezone/zic.c:832
msgid "line too long"
msgstr "för lång rad"
-#: timezone/zic.c:869
+#: timezone/zic.c:852
msgid "input line of unknown type"
msgstr "inrad av okänd typ"
-#: timezone/zic.c:885
+#: timezone/zic.c:868
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
msgstr "%s: \"Leap\"-rad i fil %s som inte är skottsekundsfil\n"
-#: timezone/zic.c:892 timezone/zic.c:1329 timezone/zic.c:1351
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
msgstr "%s: panik: Ogiltigt l_value %d\n"
-#: timezone/zic.c:900
+#: timezone/zic.c:883
#, c-format
msgid "%s: Error reading %s\n"
msgstr "%s: Fel vid läsning från %s\n"
-#: timezone/zic.c:907
+#: timezone/zic.c:890
#, c-format
msgid "%s: Error closing %s: %s\n"
msgstr "%s: Fel vid stängning av %s: %s\n"
-#: timezone/zic.c:912
+#: timezone/zic.c:895
msgid "expected continuation line not found"
msgstr "förväntad fortsättningsrad inte funnen"
-#: timezone/zic.c:956 timezone/zic.c:2489 timezone/zic.c:2508
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
msgid "time overflow"
msgstr "för stort tidsvärde"
-#: timezone/zic.c:960
+#: timezone/zic.c:943
msgid "24:00 not handled by pre-1998 versions of zic"
msgstr "24:00 hanteras inte av zic-versioner före 1998"
-#: timezone/zic.c:963
+#: timezone/zic.c:946
msgid "values over 24 hours not handled by pre-2007 versions of zic"
msgstr "värden större än 24 timmar hanteras inte av zic-versioner före 2007"
-#: timezone/zic.c:976
+#: timezone/zic.c:959
msgid "wrong number of fields on Rule line"
msgstr "fel antal fält på \"Rule\"-rad"
-#: timezone/zic.c:980
+#: timezone/zic.c:963
msgid "nameless rule"
msgstr "namnlös regel"
-#: timezone/zic.c:985
+#: timezone/zic.c:968
msgid "invalid saved time"
msgstr "ogiltig sparad tid"
-#: timezone/zic.c:1006
+#: timezone/zic.c:989
msgid "wrong number of fields on Zone line"
msgstr "fel antal fält på \"Zone\"-rad"
-#: timezone/zic.c:1012
+#: timezone/zic.c:995
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
msgstr "\"Zone %s\"-rad och flaggan -l är ömsesidigt uteslutande"
-#: timezone/zic.c:1020
+#: timezone/zic.c:1003
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
msgstr "\"Zone %s\"-rad och flaggan -p är ömsesidigt uteslutande"
-#: timezone/zic.c:1032
+#: timezone/zic.c:1015
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
msgstr "dubblerat zonnamn %s (fil \"%s\", rad %d)"
-#: timezone/zic.c:1048
+#: timezone/zic.c:1031
msgid "wrong number of fields on Zone continuation line"
msgstr "fel antal fält på \"Zone\"-fortsättningsrad"
-#: timezone/zic.c:1088
+#: timezone/zic.c:1071
msgid "invalid UTC offset"
msgstr "ogiltigt UTC-tillägg"
-#: timezone/zic.c:1091
+#: timezone/zic.c:1074
msgid "invalid abbreviation format"
msgstr "ogiltigt förkortningsformat"
-#: timezone/zic.c:1120
+#: timezone/zic.c:1103
msgid "Zone continuation line end time is not after end time of previous line"
msgstr "Zon-fortsättningsradens sluttid är inte efter sluttiden på föregående rad"
-#: timezone/zic.c:1148
+#: timezone/zic.c:1131
msgid "wrong number of fields on Leap line"
msgstr "fel antal fält på \"Leap\"-rad"
-#: timezone/zic.c:1157
+#: timezone/zic.c:1140
msgid "invalid leaping year"
msgstr "ogiltigt skottår"
-#: timezone/zic.c:1177 timezone/zic.c:1283
+#: timezone/zic.c:1160 timezone/zic.c:1266
msgid "invalid month name"
msgstr "ogiltigt månadsnamn"
-#: timezone/zic.c:1190 timezone/zic.c:1396 timezone/zic.c:1410
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
msgid "invalid day of month"
msgstr "ogiltig dag i månaden"
-#: timezone/zic.c:1195
+#: timezone/zic.c:1178
msgid "time before zero"
msgstr "tid före noll"
-#: timezone/zic.c:1199
+#: timezone/zic.c:1182
msgid "time too small"
msgstr "tid för kort"
-#: timezone/zic.c:1203
+#: timezone/zic.c:1186
msgid "time too large"
msgstr "tid för lång"
-#: timezone/zic.c:1207 timezone/zic.c:1312
+#: timezone/zic.c:1190 timezone/zic.c:1295
msgid "invalid time of day"
msgstr "ogiltig tid på dagen"
-#: timezone/zic.c:1226
+#: timezone/zic.c:1209
msgid "illegal CORRECTION field on Leap line"
msgstr "otillåtet \"CORRECTION\"-fält på \"Leap\"-rad"
-#: timezone/zic.c:1231
+#: timezone/zic.c:1214
msgid "illegal Rolling/Stationary field on Leap line"
msgstr "otillåtet \"Rolling/Stationary\"-fält på \"Leap\"-rad"
-#: timezone/zic.c:1247
+#: timezone/zic.c:1230
msgid "wrong number of fields on Link line"
msgstr "fel antal fält på \"Link\"-rad"
-#: timezone/zic.c:1251
+#: timezone/zic.c:1234
msgid "blank FROM field on Link line"
msgstr "tomt \"FROM\"-fält på \"Link\"-rad"
-#: timezone/zic.c:1255
+#: timezone/zic.c:1238
msgid "blank TO field on Link line"
msgstr "tomt \"TO\"-fält på \"Link\"-rad"
-#: timezone/zic.c:1333
+#: timezone/zic.c:1316
msgid "invalid starting year"
msgstr "ogiltigt startår"
-#: timezone/zic.c:1355
+#: timezone/zic.c:1338
msgid "invalid ending year"
msgstr "ogiltigt slutår"
-#: timezone/zic.c:1359
+#: timezone/zic.c:1342
msgid "starting year greater than ending year"
msgstr "startår är större än slutår"
-#: timezone/zic.c:1366
+#: timezone/zic.c:1349
msgid "typed single year"
msgstr "satte typ på endast ett år"
-#: timezone/zic.c:1401
+#: timezone/zic.c:1384
msgid "invalid weekday name"
msgstr "ogiltigt veckodagsnamn"
-#: timezone/zic.c:1579
+#: timezone/zic.c:1562
#, c-format
msgid "%s: Can't remove %s: %s\n"
msgstr "%s: Kan inte ta bort %s: %s\n"
-#: timezone/zic.c:1589
+#: timezone/zic.c:1572
#, c-format
msgid "%s: Can't create %s: %s\n"
msgstr "%s: Kan inte skapa %s: %s\n"
-#: timezone/zic.c:1739
+#: timezone/zic.c:1722
#, c-format
msgid "%s: Error writing %s\n"
msgstr "%s: Fel vid skrivning till %s\n"
-#: timezone/zic.c:2031
+#: timezone/zic.c:2015
msgid "no POSIX environment variable for zone"
msgstr "ingen POSIX-miljövariabel för zon"
-#: timezone/zic.c:2185
+#: timezone/zic.c:2172
msgid "can't determine time zone abbreviation to use just after until time"
msgstr "kan inte avgöra tidszonsförkortning att använda just efter \"until\"-tid"
-#: timezone/zic.c:2231
+#: timezone/zic.c:2218
msgid "too many transitions?!"
msgstr "för många övergångar?!"
-#: timezone/zic.c:2250
+#: timezone/zic.c:2237
msgid "internal error - addtype called with bad isdst"
msgstr "internt fel - addtype anropad med felaktig isdst"
-#: timezone/zic.c:2254
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad ttisstd"
msgstr "internt fel - addtype anropad med felaktig ttisstd"
-#: timezone/zic.c:2258
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisgmt"
msgstr "internt fel - addtype anropad med felaktig ttisgmt"
-#: timezone/zic.c:2277
+#: timezone/zic.c:2264
msgid "too many local time types"
msgstr "för många lokala tidstyper"
-#: timezone/zic.c:2281
+#: timezone/zic.c:2268
msgid "UTC offset out of range"
msgstr "UTC-offset utanför giltigt intervall"
-#: timezone/zic.c:2309
+#: timezone/zic.c:2296
msgid "too many leap seconds"
msgstr "för många skottsekunder"
-#: timezone/zic.c:2315
+#: timezone/zic.c:2302
msgid "repeated leap second moment"
msgstr "upprepat skottsekundstillfälle"
-#: timezone/zic.c:2367
+#: timezone/zic.c:2354
msgid "Wild result from command execution"
msgstr "Vilt resultat från kommandokörning"
-#: timezone/zic.c:2368
+#: timezone/zic.c:2355
#, c-format
msgid "%s: command was '%s', result was %d\n"
msgstr "%s: kommandot var \"%s\", resultatet blev %d\n"
-#: timezone/zic.c:2466
+#: timezone/zic.c:2453
msgid "Odd number of quotation marks"
msgstr "Ojämnt antal citationstecken"
-#: timezone/zic.c:2555
+#: timezone/zic.c:2542
msgid "use of 2/29 in non leap-year"
msgstr "använder 29/2 i icke-skottår"
-#: timezone/zic.c:2590
+#: timezone/zic.c:2577
msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
msgstr "regeln går utanför start/slut på månad, fungerar inte på zic-versioner före 2004"
-#: timezone/zic.c:2622
+#: timezone/zic.c:2609
msgid "time zone abbreviation lacks alphabetic at start"
msgstr "tidszonsförkortning saknar alfabetiskt tecken i början"
-#: timezone/zic.c:2624
+#: timezone/zic.c:2611
msgid "time zone abbreviation has more than 3 alphabetics"
msgstr "tidszonsförkortning har fler än 3 alafabetiska tecken"
-#: timezone/zic.c:2626
+#: timezone/zic.c:2613
msgid "time zone abbreviation has too many alphabetics"
msgstr "tidszonsförkortning har för många alabetiska tecken"
-#: timezone/zic.c:2636
+#: timezone/zic.c:2623
msgid "time zone abbreviation differs from POSIX standard"
msgstr "tidszonsförkortning skiljer sig från POSIX-standarden"
-#: timezone/zic.c:2648
+#: timezone/zic.c:2635
msgid "too many, or too long, time zone abbreviations"
msgstr "för många eller för långa tidszonförkortningar"
-#: timezone/zic.c:2689
+#: timezone/zic.c:2676
#, c-format
msgid "%s: Can't create directory %s: %s\n"
msgstr "%s: Kan inte skapa katalog %s: %s\n"
-#: timezone/zic.c:2711
+#: timezone/zic.c:2698
#, c-format
msgid "%s: %d did not sign extend correctly\n"
msgstr "%s: %d teckenexpanderades inte korrekt\n"
diff --git a/po/vi.po b/po/vi.po
index 3b789463ad..1f85f7917c 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -1,21 +1,21 @@
# Vietnamese translation for LibC.
-# Copyright © 2008 Free Software Foundation, Inc.
-# This file is distributed under the same license as the glibc-2.7 package.
-# Clytie Siddall <clytie@riverland.net.au>, 2008
+# Copyright © 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the glibc package.
+# Clytie Siddall <clytie@riverland.net.au>, 2008-2009.
#
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.7\n"
+"Project-Id-Version: libc 2.10.1\n"
"Report-Msgid-Bugs-To: http://www.gnu.org/software/libc/bugs.html\n"
-"POT-Creation-Date: 2007-10-15 21:18-0700\n"
-"PO-Revision-Date: 2008-03-23 15:49+1030\n"
+"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"PO-Revision-Date: 2009-09-19 18:50+0930\n"
"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: LocFactoryEditor 1.7b3\n"
+"X-Generator: LocFactoryEditor 1.8\n"
#: argp/argp-help.c:228
#, c-format
@@ -101,7 +101,7 @@ msgstr "%s%s%s:%u: %s%sGặp lá»—i bất thÆ°á»ng: %s.\n"
msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
msgstr "%s%s%s:%u: %s%sKhẳng định « %s » bị lỗi.\n"
-#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
msgid "NAME"
msgstr "TÊN"
@@ -134,9 +134,15 @@ msgstr ""
"-o TẬP_TIN_XUẤT [TẬP_TIN_NHẬP]...\n"
"[TẬP_TIN_XUẤT [TẬP_TIN_NHẬP]...]"
-#: catgets/gencat.c:232 debug/pcprofiledump.c:204 iconv/iconv_prog.c:411
-#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
-#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
+#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
+#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
+#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
+#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
+#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: sysdeps/unix/sysv/linux/lddlibc4.c:62
+#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
@@ -144,12 +150,13 @@ msgstr ""
"Äể tìm hÆ°á»›ng dẫn vá» thông báo lá»—i, thăm địa chỉ:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
-#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:296
-#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:426
-#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
-#: posix/getconf.c:1012
+#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
+#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -161,10 +168,12 @@ msgstr ""
"KHÔNG CÓ BẢO HÀNH GÃŒ CẢ, THẬM CHà KHÔNG CÓ BẢO ÄẢM ÄƯỢC NGỤ Ã\n"
"KHẢ NÄ‚NG BÃN HAY KHẢ NÄ‚NG LÀM ÄƯỢC VIỆC DỨT KHOÃT.\n"
-#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:301 elf/sprof.c:361
-#: iconv/iconv_prog.c:431 iconv/iconvconfig.c:400 locale/programs/locale.c:280
-#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
-#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
+#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
+#: locale/programs/localedef.c:392 malloc/memusage.sh:77
+#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
+#: posix/getconf.c:1017
#, c-format
msgid "Written by %s.\n"
msgstr "Tác giả: %s.\n"
@@ -173,7 +182,7 @@ msgstr "Tác giả: %s.\n"
msgid "*standard input*"
msgstr "*đầu vào tiêu chuẩn*"
-#: catgets/gencat.c:288 iconv/iconv_charmap.c:158 iconv/iconv_prog.c:298
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:170 iconv/iconv_prog.c:294
#: nss/makedb.c:170
#, c-format
msgid "cannot open input file `%s'"
@@ -265,17 +274,17 @@ msgstr "Äổ thông tin được tạo khi Ä‘o hiệu năng sá»­ dụng PC "
msgid "[FILE]"
msgstr "TẬP TIN]"
-#: debug/pcprofiledump.c:104
+#: debug/pcprofiledump.c:108
#, c-format
msgid "cannot open input file"
msgstr "không thể mở tập tin nhập vào"
-#: debug/pcprofiledump.c:111
+#: debug/pcprofiledump.c:115
#, c-format
msgid "cannot read header"
msgstr "không thể Ä‘á»c phần đầu"
-#: debug/pcprofiledump.c:175
+#: debug/pcprofiledump.c:179
#, c-format
msgid "invalid pointer size"
msgstr "kích cỡ con trỠkhông hợp lệ"
@@ -305,8 +314,6 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
"Dò tìm Ä‘Æ°á»ng khi thá»±c hiện chÆ°Æ¡ng trình bằng cách in hàm Ä‘ang được chạy.\n"
"\n"
@@ -319,23 +326,21 @@ msgstr ""
"Má»i đối số bắt buá»™c phải sá»­ dụng vá»›i tùy chá»n dài\n"
"cÅ©ng bắt buá»™c vá»›i bất kỳ tùy chá»n ngắn tÆ°Æ¡ng ứng.\n"
"\n"
-"Äể tìm hÆ°á»›ng dẫn vá» thông báo lá»—i, thăm địa chỉ:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\\n"
-#: debug/xtrace.sh:125
+#: debug/xtrace.sh:127
msgid "xtrace: unrecognized option \\`$1'\\n"
msgstr "xtrace: không nhận ra tùy chá»n « $1 »\\n"
-#: debug/xtrace.sh:138
+#: debug/xtrace.sh:140
msgid "No program name given\\n"
msgstr "Chưa nhập tên chương trình\\n"
-#: debug/xtrace.sh:146
+#: debug/xtrace.sh:148
#, sh-format
msgid "executable \\`$program' not found\\n"
msgstr "không tìm thấy tập tin thực hiện được « $program »\\n"
-#: debug/xtrace.sh:150
+#: debug/xtrace.sh:152
#, sh-format
msgid "\\`$program' is no executable\\n"
msgstr "« $program » không có khả năng thực hiện\\n"
@@ -356,7 +361,7 @@ msgstr "miá»n tên không hợp lệ"
msgid "invalid mode"
msgstr "chế độ không hợp lệ"
-#: dlfcn/dlopen.c:64
+#: dlfcn/dlopen.c:65
msgid "invalid mode parameter"
msgstr "tham số chế độ không hợp lệ"
@@ -373,7 +378,7 @@ msgstr "Hệ Ä‘iá»u hành không rõ"
msgid ", OS ABI: %s %d.%d.%d"
msgstr ", OS ABI: %s %d.%d.%d"
-#: elf/cache.c:134 elf/ldconfig.c:1270
+#: elf/cache.c:134 elf/ldconfig.c:1289
#, c-format
msgid "Can't open cache file %s\n"
msgstr "Không thể mở tập tin nhớ tạm %s\n"
@@ -417,7 +422,7 @@ msgstr "Lỗi thay đổi tên %s thành %s"
msgid "cannot create scope list"
msgstr "không thể tạo danh sách phạm vi"
-#: elf/dl-close.c:724
+#: elf/dl-close.c:725
msgid "shared object not open"
msgstr "chưa mở đối tượng dùng chung"
@@ -490,11 +495,11 @@ msgstr "không thể lấy trạng thái vỠđối tượng dùng chung"
msgid "cannot open zero fill device"
msgstr "không thể mở thiết bị Ä‘iá»n số không"
-#: elf/dl-load.c:979 elf/dl-load.c:2224
+#: elf/dl-load.c:979 elf/dl-load.c:2215
msgid "cannot create shared object descriptor"
msgstr "không thể tạo bộ mô tả đối tượng dùng chung"
-#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
msgid "cannot read file data"
msgstr "không thể Ä‘á»c dữ liệu tập tin"
@@ -558,63 +563,59 @@ msgstr "không thể hiệu lực đống thực hiện được theo yêu cầu
msgid "cannot close file descriptor"
msgstr "không thể đóng bộ mô tả tập tin"
-#: elf/dl-load.c:1478
-msgid "cannot create searchlist"
-msgstr "không thể tạo danh sách tìm kiếm"
-
-#: elf/dl-load.c:1656
+#: elf/dl-load.c:1647
msgid "file too short"
msgstr "tập tin quá ngắn"
-#: elf/dl-load.c:1685
+#: elf/dl-load.c:1676
msgid "invalid ELF header"
msgstr "phần đầu ELF không hợp lệ"
-#: elf/dl-load.c:1697
+#: elf/dl-load.c:1688
msgid "ELF file data encoding not big-endian"
msgstr "Bảng mã dữ liệu tập tin ELF không có kiểu vỠcuối lớn"
-#: elf/dl-load.c:1699
+#: elf/dl-load.c:1690
msgid "ELF file data encoding not little-endian"
msgstr "Bảng mã dữ liệu tập tin ELF không có kiểu vá» cuối nhá»"
-#: elf/dl-load.c:1703
+#: elf/dl-load.c:1694
msgid "ELF file version ident does not match current one"
msgstr "ident của phiên bản tập tin ELF không tÆ°Æ¡ng ứng vá»›i Ä‘iá»u hiện thá»i"
-#: elf/dl-load.c:1707
+#: elf/dl-load.c:1698
msgid "ELF file OS ABI invalid"
msgstr "Hệ Ä‘iá»u hành ABI của tập tin ELF không phải hợp lệ"
-#: elf/dl-load.c:1709
+#: elf/dl-load.c:1700
msgid "ELF file ABI version invalid"
msgstr "Phiên bản ABI của tập tin ELF không phải hợp lệ"
-#: elf/dl-load.c:1712
+#: elf/dl-load.c:1703
msgid "internal error"
msgstr "lá»—i ná»™i bá»™"
-#: elf/dl-load.c:1719
+#: elf/dl-load.c:1710
msgid "ELF file version does not match current one"
msgstr "Phiên bản tập tin ELF không tÆ°Æ¡ng ứng vá»›i Ä‘iá»u hiện thá»i"
-#: elf/dl-load.c:1727
+#: elf/dl-load.c:1718
msgid "only ET_DYN and ET_EXEC can be loaded"
msgstr "chỉ có thể nạp ET_DYN và ET_EXEC"
-#: elf/dl-load.c:1733
+#: elf/dl-load.c:1724
msgid "ELF file's phentsize not the expected size"
msgstr "kích cỡ phentsize của tập tin ELF là bất thÆ°á»ng"
-#: elf/dl-load.c:2240
+#: elf/dl-load.c:2231
msgid "wrong ELF class: ELFCLASS64"
msgstr "hạng ELF không đúng: ELFCLASS64"
-#: elf/dl-load.c:2241
+#: elf/dl-load.c:2232
msgid "wrong ELF class: ELFCLASS32"
msgstr "hạng ELF không đúng: ELFCLASS32"
-#: elf/dl-load.c:2244
+#: elf/dl-load.c:2235
msgid "cannot open shared object file"
msgstr "không thể mở tập tin đối tượng dùng chung"
@@ -646,11 +647,11 @@ msgstr "không có sẵn miá»n tên thêm nữa đối vá»›i dlmopen()"
msgid "invalid target namespace in dlmopen()"
msgstr "miá»n tên đích không hợp lệ trong dlmopen()"
-#: elf/dl-reloc.c:54
+#: elf/dl-reloc.c:121
msgid "cannot allocate memory in static TLS block"
msgstr "không thể cấp phát bộ nhớ trong khối TLS tĩnh."
-#: elf/dl-reloc.c:196
+#: elf/dl-reloc.c:211
msgid "cannot make segment writable for relocation"
msgstr "không thể làm cho đoạn có khả năng ghi để định vị lại"
@@ -676,11 +677,11 @@ msgstr "không thể áp dụng sự bảo vệ bộ nhớ thêm sau khi định
msgid "RTLD_NEXT used in code not dynamically loaded"
msgstr "RTLD_NEXT được dùng trong mã không phải được nạp động"
-#: elf/dl-sysdep.c:469 elf/dl-sysdep.c:481
+#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
msgid "cannot create capability list"
msgstr "không thể tạo danh sách khả năng"
-#: elf/dl-tls.c:825
+#: elf/dl-tls.c:864
msgid "cannot create TLS data structures"
msgstr "không thể tạo các cấu trúc dữ liệu TLS"
@@ -688,59 +689,59 @@ msgstr "không thể tạo các cấu trúc dữ liệu TLS"
msgid "cannot allocate version reference table"
msgstr "không thể cấp phát bảng tham chiếu phiên bản"
-#: elf/ldconfig.c:138
+#: elf/ldconfig.c:141
msgid "Print cache"
msgstr "In bá»™ nhá»›"
-#: elf/ldconfig.c:139
+#: elf/ldconfig.c:142
msgid "Generate verbose messages"
msgstr "Tạo thông điệp chi tiết"
-#: elf/ldconfig.c:140
+#: elf/ldconfig.c:143
msgid "Don't build cache"
msgstr "Äừng xây dá»±ng bá»™ nhá»› tạm"
-#: elf/ldconfig.c:141
+#: elf/ldconfig.c:144
msgid "Don't generate links"
msgstr "Äừng tạo liên kết"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "Change to and use ROOT as root directory"
msgstr "Chuyển đổi và dùng Gá»C làm thÆ° mục gốc"
-#: elf/ldconfig.c:142
+#: elf/ldconfig.c:145
msgid "ROOT"
msgstr "Gá»C"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "CACHE"
msgstr "NHỚ_TẠM"
-#: elf/ldconfig.c:143
+#: elf/ldconfig.c:146
msgid "Use CACHE as cache file"
msgstr "Dùng NHỚ_TẠM làm tập tin nhớ tạm"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "CONF"
msgstr "CẤU_HÌNH"
-#: elf/ldconfig.c:144
+#: elf/ldconfig.c:147
msgid "Use CONF as configuration file"
msgstr "Dùng CẤU_HÌNH làm tập tin cấu hình"
-#: elf/ldconfig.c:145
+#: elf/ldconfig.c:148
msgid "Only process directories specified on the command line. Don't build cache."
msgstr "Chỉ xá»­ lý các thÆ° mục được ghi rõ trên dòng lệnh. Äừng xây dá»±ng bá»™ nhá»› tạm."
-#: elf/ldconfig.c:146
+#: elf/ldconfig.c:149
msgid "Manually link individual libraries."
msgstr "Liên kết bằng tay các thư viện riêng."
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "FORMAT"
msgstr "ÄỊNH_DẠNG"
-#: elf/ldconfig.c:147
+#: elf/ldconfig.c:150
msgid "Format to use: new, old or compat (default)"
msgstr ""
"ÄÆ°á»ng dẫn cần dùng:\n"
@@ -748,164 +749,164 @@ msgstr ""
" • old\tcũ\n"
" • compat\ttương thích (mặc định)"
-#: elf/ldconfig.c:148
+#: elf/ldconfig.c:151
msgid "Ignore auxiliary cache file"
msgstr "BỠqua tập tin nhớ tạm bổ trợ"
-#: elf/ldconfig.c:156
+#: elf/ldconfig.c:159
msgid "Configure Dynamic Linker Run Time Bindings."
msgstr "Cấu hình các tổ hợp lúc chạy liên kết động."
-#: elf/ldconfig.c:319
+#: elf/ldconfig.c:339
#, c-format
msgid "Path `%s' given more than once"
msgstr "ÄÆ°á»ng dẫn « %s » được Ä‘Æ°a ra nhiá»u lần"
-#: elf/ldconfig.c:359
+#: elf/ldconfig.c:379
#, c-format
msgid "%s is not a known library type"
msgstr "« %s » không phải là kiểu thư viện đã biết"
-#: elf/ldconfig.c:384
+#: elf/ldconfig.c:404
#, c-format
msgid "Can't stat %s"
msgstr "Không thể lấy trạng thái vỠ%s"
-#: elf/ldconfig.c:458
+#: elf/ldconfig.c:478
#, c-format
msgid "Can't stat %s\n"
msgstr "Không thể lấy trạng thái vỠ%s\n"
-#: elf/ldconfig.c:468
+#: elf/ldconfig.c:488
#, c-format
msgid "%s is not a symbolic link\n"
msgstr "%s không phải là một liên kết tượng trưng\n"
-#: elf/ldconfig.c:487
+#: elf/ldconfig.c:507
#, c-format
msgid "Can't unlink %s"
msgstr "Không thể bỠliên kết %s"
-#: elf/ldconfig.c:493
+#: elf/ldconfig.c:513
#, c-format
msgid "Can't link %s to %s"
msgstr "Không thể liên kết %s tới %s"
-#: elf/ldconfig.c:499
+#: elf/ldconfig.c:519
msgid " (changed)\n"
msgstr " (đã thay đổi)\n"
-#: elf/ldconfig.c:501
+#: elf/ldconfig.c:521
msgid " (SKIPPED)\n"
msgstr " (BỊ BỎ QUA)\n"
-#: elf/ldconfig.c:556
+#: elf/ldconfig.c:576
#, c-format
msgid "Can't find %s"
msgstr "Không tìm thấy %s"
-#: elf/ldconfig.c:572 elf/ldconfig.c:745 elf/ldconfig.c:793 elf/ldconfig.c:827
+#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
#, c-format
msgid "Cannot lstat %s"
msgstr "Không thể lstat %s"
-#: elf/ldconfig.c:579
+#: elf/ldconfig.c:599
#, c-format
msgid "Ignored file %s since it is not a regular file."
msgstr "Äã bá» qua tập tin %s vì nó không phải là tập tin chuẩn."
-#: elf/ldconfig.c:588
+#: elf/ldconfig.c:608
#, c-format
msgid "No link created since soname could not be found for %s"
msgstr "Chưa tạo liên kết vì không tìm thấy soname đối với %s"
-#: elf/ldconfig.c:671
+#: elf/ldconfig.c:691
#, c-format
msgid "Can't open directory %s"
msgstr "Không thể mở thư mục %s"
-#: elf/ldconfig.c:759
+#: elf/ldconfig.c:779
#, c-format
msgid "Cannot stat %s"
msgstr "Không thể lấy trạng thái vỠ%s"
-#: elf/ldconfig.c:814 elf/readlib.c:91
+#: elf/ldconfig.c:834 elf/readlib.c:91
#, c-format
msgid "Input file %s not found.\n"
msgstr "Không tìm thấy tập tin nhập vào %s.\n"
-#: elf/ldconfig.c:888
+#: elf/ldconfig.c:908
#, c-format
msgid "libc5 library %s in wrong directory"
msgstr "thư viện libc5 %s nằm trong thư mục không đúng"
-#: elf/ldconfig.c:891
+#: elf/ldconfig.c:911
#, c-format
msgid "libc6 library %s in wrong directory"
msgstr "thư viện libc6 %s nằm trong thư mục không đúng"
-#: elf/ldconfig.c:894
+#: elf/ldconfig.c:914
#, c-format
msgid "libc4 library %s in wrong directory"
msgstr "thư viện libc4 %s nằm trong thư mục không đúng"
-#: elf/ldconfig.c:922
+#: elf/ldconfig.c:942
#, c-format
msgid "libraries %s and %s in directory %s have same soname but different type."
msgstr "thư viện %s và %s trong thư mục %s có cùng một soname còn có kiểu khác nhau."
-#: elf/ldconfig.c:1031
+#: elf/ldconfig.c:1051
#, c-format
msgid "Can't open configuration file %s"
msgstr "Không thể mở tập tin cấu hình %s"
-#: elf/ldconfig.c:1095
+#: elf/ldconfig.c:1115
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
msgstr "%s:%u: cú pháp sai trong dòng hwcap"
-#: elf/ldconfig.c:1101
+#: elf/ldconfig.c:1121
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
msgstr "%s:%u: chỉ mục hwcap %lu vượt quá tối đa %u"
-#: elf/ldconfig.c:1108 elf/ldconfig.c:1116
+#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
msgstr "%s:%u: chỉ mục hwcap %lu đã được xác định là %s"
-#: elf/ldconfig.c:1119
+#: elf/ldconfig.c:1139
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
msgstr "%s:%u: hwcap trùng %lu %s"
-#: elf/ldconfig.c:1141
+#: elf/ldconfig.c:1161
#, c-format
msgid "need absolute file name for configuration file when using -r"
msgstr "dùng tùy chá»n « -r » thì cÅ©ng cần tên tập tin tuyệt đối cho tập tin cấu hình"
-#: elf/ldconfig.c:1148 locale/programs/xmalloc.c:70 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
#, c-format
msgid "memory exhausted"
msgstr "cạn bộ nhớ"
-#: elf/ldconfig.c:1178
+#: elf/ldconfig.c:1198
#, c-format
msgid "%s:%u: cannot read directory %s"
msgstr "%s:%u: không thể Ä‘á»c thÆ° mục %s"
-#: elf/ldconfig.c:1223
+#: elf/ldconfig.c:1242
#, c-format
msgid "relative path `%s' used to build cache"
msgstr "Ä‘Æ°á»ng dẫn tÆ°Æ¡ng đối « %s » được dùng để xây dá»±ng bá»™ nhá»› tạm"
-#: elf/ldconfig.c:1249
+#: elf/ldconfig.c:1268
#, c-format
msgid "Can't chdir to /"
msgstr "Không thể chuyển đổi thư mục (chdir) sang /"
-#: elf/ldconfig.c:1291
+#: elf/ldconfig.c:1310
#, c-format
msgid "Can't open cache file directory %s\n"
msgstr "Không thể mở thư mục nhớ tạm %s\n"
@@ -923,8 +924,6 @@ msgid ""
" -r, --function-relocs process data and function relocations\n"
" -u, --unused print unused direct dependencies\n"
" -v, --verbose print all information\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Sử dụng: ldd [TÙY_CHỌN]... TẬP_TIN...\n"
" --help in trợ giúp này rồi thoát\n"
@@ -933,49 +932,47 @@ msgstr ""
" -r, --function-relocs xử lý các sự định vị lại dữ liệu và hàm\n"
" -u, --unused in các quan hệ phụ thuộc trực tiếp không dùng\n"
" -v, --verbose in má»i thông tin\n"
-"Äể tìm hÆ°á»›ng dẫn vá» thông báo lá»—i, thăm địa chỉ:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
-#: elf/ldd.bash.in:80
+#: elf/ldd.bash.in:82
msgid "ldd: option \\`$1' is ambiguous"
msgstr "ldd: tùy chá»n « $1 » là mÆ¡ hồ"
-#: elf/ldd.bash.in:87
+#: elf/ldd.bash.in:89
msgid "unrecognized option"
msgstr "không nhận ra tùy chá»n"
-#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+#: elf/ldd.bash.in:90 elf/ldd.bash.in:128
msgid "Try \\`ldd --help' for more information."
msgstr "Hãy thử lệnh trợ giúp « ldd --help » để xem thông tin thêm."
-#: elf/ldd.bash.in:125
+#: elf/ldd.bash.in:127
msgid "missing file arguments"
msgstr "đối số tập tin còn thiếu"
#. TRANS No such file or directory. This is a ``file doesn't exist'' error
#. TRANS for ordinary files that are referenced in contexts where they are
#. TRANS expected to already exist.
-#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+#: elf/ldd.bash.in:150 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
msgstr "Không có tập tin hoặc thư mục như vậy"
-#: elf/ldd.bash.in:151 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:483
msgid "not regular file"
msgstr "không phải tập tin chuẩn"
-#: elf/ldd.bash.in:154
+#: elf/ldd.bash.in:156
msgid "warning: you do not have execution permission for"
msgstr "cảnh báo : bạn không có quyá»n thá»±c hiện"
-#: elf/ldd.bash.in:183
+#: elf/ldd.bash.in:185
msgid "\tnot a dynamic executable"
msgstr "\tkhông phải một tập tin thực hiện được kiểu động"
-#: elf/ldd.bash.in:191
+#: elf/ldd.bash.in:193
msgid "exited with unknown exit code"
msgstr "đã thoát với mã thoát không rõ"
-#: elf/ldd.bash.in:196
+#: elf/ldd.bash.in:198
msgid "error: you do not have read permission for"
msgstr "lá»—i: bạn không có quyá»n Ä‘á»c"
@@ -1034,6 +1031,45 @@ msgstr "Không thể mmap tập tin %s.\n"
msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
msgstr "%s không phải là tập tin ELF — có những byte ma thuật không đúng tại đầu nó.\n"
+#: elf/sln.c:85
+#, c-format
+msgid ""
+"Usage: sln src dest|file\n"
+"\n"
+msgstr ""
+"Sử dụng: sln nguồn đích|tập_tin\n"
+"\n"
+
+#: elf/sln.c:110
+#, c-format
+msgid "%s: file open error: %m\n"
+msgstr "%s: lỗi mở tập tin: %m\n"
+
+#: elf/sln.c:147
+#, c-format
+msgid "No target in line %d\n"
+msgstr "Không có đích trên dòng %d\n"
+
+#: elf/sln.c:179
+#, c-format
+msgid "%s: destination must not be a directory\n"
+msgstr "%s: đích không thể là thư mục\n"
+
+#: elf/sln.c:185
+#, c-format
+msgid "%s: failed to remove the old destination\n"
+msgstr "%s: không gỡ bỠđược đích cũ\n"
+
+#: elf/sln.c:193
+#, c-format
+msgid "%s: invalid destination: %s\n"
+msgstr "%s: đích không hợp lệ: %s\n"
+
+#: elf/sln.c:208 elf/sln.c:217
+#, c-format
+msgid "Invalid link from \"%s\" to \"%s\": %s\n"
+msgstr "liên kết không hợp lệ từ « %s » đến « %s »: %s\n"
+
#: elf/sprof.c:77
msgid "Output selection:"
msgstr "Xuất vùng chá»n:"
@@ -1051,130 +1087,130 @@ msgid "generate call graph"
msgstr "tạo đồ thị gá»i"
#: elf/sprof.c:89
-msgid ""
-"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Äá»c và hiển thị dữ liệu Ä‘o hiệu năng sá»­ dụng Ä‘Æ°á»ng dẫn dùng chung.\n"
-"Äể tìm hÆ°á»›ng dẫn vá» thông báo lá»—i, thăm địa chỉ:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Read and display shared object profiling data."
+msgstr "Äá»c và hiển thị dữ liệu theo dõi cách sá»­ dụng tiá»m năng hệ thống của đối tượng chia sẻ."
#: elf/sprof.c:94
msgid "SHOBJ [PROFDATA]"
msgstr "SHOBJ [Dá»®_LIỆU_ÄO_HIỆU_NÄ‚NG]"
-#: elf/sprof.c:400
+#: elf/sprof.c:420
#, c-format
msgid "failed to load shared object `%s'"
msgstr "lỗi nạp đối tượng dùng chung « %s »"
-#: elf/sprof.c:409
+#: elf/sprof.c:429
#, c-format
msgid "cannot create internal descriptors"
msgstr "không thể tạo bộ mô tả nội bộ"
-#: elf/sprof.c:528
+#: elf/sprof.c:548
#, c-format
msgid "Reopening shared object `%s' failed"
msgstr "Lỗi mở lại đối tượng dùng chung « %s »"
-#: elf/sprof.c:535 elf/sprof.c:629
+#: elf/sprof.c:555 elf/sprof.c:649
#, c-format
msgid "reading of section headers failed"
msgstr "lá»—i Ä‘á»c phần đầu của phần"
-#: elf/sprof.c:543 elf/sprof.c:637
+#: elf/sprof.c:563 elf/sprof.c:657
#, c-format
msgid "reading of section header string table failed"
msgstr "lá»—i Ä‘á»c bảng chuá»—i phần đầu của phần"
-#: elf/sprof.c:569
+#: elf/sprof.c:589
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
msgstr "*** Không thể Ä‘á»c tên tập tin chứa thông tin gỡ lá»—i: %m\n"
-#: elf/sprof.c:589
+#: elf/sprof.c:609
#, c-format
msgid "cannot determine file name"
msgstr "không thể quyết định tên tập tin"
-#: elf/sprof.c:622
+#: elf/sprof.c:642
#, c-format
msgid "reading of ELF header failed"
msgstr "lá»—i Ä‘á»c phần đầu ELF"
-#: elf/sprof.c:658
+#: elf/sprof.c:678
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
msgstr "*** Tập tin « %s » bị tước nên không thể phân tích chi tiết\n"
-#: elf/sprof.c:688
+#: elf/sprof.c:708
#, c-format
msgid "failed to load symbol data"
msgstr "lỗi nạp dữ liệu ký hiệu"
-#: elf/sprof.c:755
+#: elf/sprof.c:775
#, c-format
msgid "cannot load profiling data"
msgstr "không thể nạp dữ liệu đo hiệu năng sử dụng"
-#: elf/sprof.c:764
+#: elf/sprof.c:784
#, c-format
msgid "while stat'ing profiling data file"
msgstr "trong khi lấy trạng thái vỠtập tin dữ liệu do hiệu năng sử dụng"
-#: elf/sprof.c:772
+#: elf/sprof.c:792
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
msgstr "tập tin dữ liệu do hiệu năng sử dụng « %s » không tương ứng với đối tượng dùng chung « %s »"
-#: elf/sprof.c:783
+#: elf/sprof.c:803
#, c-format
msgid "failed to mmap the profiling data file"
msgstr "lỗi mmap tập tin dữ liệu do hiệu năng sử dụng"
-#: elf/sprof.c:791
+#: elf/sprof.c:811
#, c-format
msgid "error while closing the profiling data file"
msgstr "gặp lỗi khi đóng tập tin dữ liệu do hiệu năng sử dụng"
-#: elf/sprof.c:800 elf/sprof.c:870
+#: elf/sprof.c:820 elf/sprof.c:890
#, c-format
msgid "cannot create internal descriptor"
msgstr "không thể tạo bộ mô tả nội bộ"
-#: elf/sprof.c:846
+#: elf/sprof.c:866
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
msgstr "« %s » không phải là tập tin dữ liệu do hiệu năng sử dụng đúng đối với « %s »"
-#: elf/sprof.c:1027 elf/sprof.c:1085
+#: elf/sprof.c:1047 elf/sprof.c:1105
#, c-format
msgid "cannot allocate symbol data"
msgstr "không thể cấp phát dữ liệu ký hiệu"
-#: iconv/iconv_charmap.c:176 iconv/iconv_prog.c:316
+#: iconv/iconv_charmap.c:142 iconv/iconv_prog.c:446
+#, c-format
+msgid "cannot open output file"
+msgstr "không thể mở tập tin kết xuất"
+
+#: iconv/iconv_charmap.c:188 iconv/iconv_prog.c:312
#, c-format
msgid "error while closing input `%s'"
msgstr "gặp lỗi khi đóng dữ liệu nhập vào « %s »"
-#: iconv/iconv_charmap.c:450
+#: iconv/iconv_charmap.c:462
#, c-format
msgid "illegal input sequence at position %Zd"
msgstr "dãy nhập vào cấm ở vị trí %Zd"
-#: iconv/iconv_charmap.c:469 iconv/iconv_prog.c:526
+#: iconv/iconv_charmap.c:481 iconv/iconv_prog.c:537
#, c-format
msgid "incomplete character or shift sequence at end of buffer"
msgstr "dây ký tá»± hoặc dá»i chÆ°a hoàn toàn ở kết thúc của bá»™ đệm"
-#: iconv/iconv_charmap.c:514 iconv/iconv_charmap.c:550 iconv/iconv_prog.c:569
-#: iconv/iconv_prog.c:605
+#: iconv/iconv_charmap.c:526 iconv/iconv_charmap.c:562 iconv/iconv_prog.c:580
+#: iconv/iconv_prog.c:616
#, c-format
msgid "error while reading the input"
msgstr "gặp lá»—i khi Ä‘á»c dữ liệu nhập vào"
-#: iconv/iconv_charmap.c:532 iconv/iconv_prog.c:587
+#: iconv/iconv_charmap.c:544 iconv/iconv_prog.c:598
#, c-format
msgid "unable to allocate buffer for input"
msgstr "không thể cấp phát bộ đệm cho dữ liệu nhập vào"
@@ -1227,62 +1263,57 @@ msgstr "Chuyển đổi bảng mã của các tập tin đã đưa ra từ bản
msgid "[FILE...]"
msgstr "[TẬP_TIN...]"
-#: iconv/iconv_prog.c:200
-#, c-format
-msgid "cannot open output file"
-msgstr "không thể mở tập tin kết xuất"
-
-#: iconv/iconv_prog.c:242
+#: iconv/iconv_prog.c:234
#, c-format
msgid "conversions from `%s' and to `%s' are not supported"
msgstr "không hỗ trợ chức năng chuyển đổi từ « %s » hoặc đến « %s »"
-#: iconv/iconv_prog.c:247
+#: iconv/iconv_prog.c:239
#, c-format
msgid "conversion from `%s' is not supported"
msgstr "không hỗ trợ chức năng chuyển đổi từ « %s »"
-#: iconv/iconv_prog.c:254
+#: iconv/iconv_prog.c:246
#, c-format
msgid "conversion to `%s' is not supported"
msgstr "không hỗ trợ chức năng chuyển đổi đến « %s »"
-#: iconv/iconv_prog.c:258
+#: iconv/iconv_prog.c:250
#, c-format
msgid "conversion from `%s' to `%s' is not supported"
msgstr "không hỗ trợ chức năng chuyển đổi từ « %s » đến « %s »"
-#: iconv/iconv_prog.c:268
+#: iconv/iconv_prog.c:260
#, c-format
msgid "failed to start conversion processing"
msgstr "lỗi bắt đầu tiến trình chuyển đổi"
-#: iconv/iconv_prog.c:362
+#: iconv/iconv_prog.c:358
#, c-format
msgid "error while closing output file"
msgstr "gặp lỗi khi đóng tập tin kết xuất"
-#: iconv/iconv_prog.c:471 iconv/iconv_prog.c:497
+#: iconv/iconv_prog.c:456
#, c-format
msgid "conversion stopped due to problem in writing the output"
msgstr "tiến trình chuyển đổi bị dừng chạy do vấn đỠkhi ghi kết xuất"
-#: iconv/iconv_prog.c:522
+#: iconv/iconv_prog.c:533
#, c-format
msgid "illegal input sequence at position %ld"
msgstr "dãy nhập vào không hợp lệ ở vị trí %ld"
-#: iconv/iconv_prog.c:530
+#: iconv/iconv_prog.c:541
#, c-format
msgid "internal error (illegal descriptor)"
msgstr "gặp lỗi nội bộ (bộ mô tả cấm)"
-#: iconv/iconv_prog.c:533
+#: iconv/iconv_prog.c:544
#, c-format
msgid "unknown iconv() error %d"
msgstr "không rõ lỗi iconv() %d"
-#: iconv/iconv_prog.c:779
+#: iconv/iconv_prog.c:790
msgid ""
"The following list contain all the coded character sets known. This does\n"
"not necessarily mean that all combinations of these names can be used for\n"
@@ -1518,7 +1549,7 @@ msgstr "bảng mã ký tá»± chứa quá nhiá»u byte"
msgid "no symbolic name given for end of range"
msgstr "chưa đưa ra tên tượng trưng cho kết thúc phạm vi"
-#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
#: locale/programs/ld-identification.c:452
@@ -1545,8 +1576,8 @@ msgstr "giá trị cho %s phải là số nguyên"
msgid "%s: error in state machine"
msgstr "%s: lỗi trong cơ chế tình trạng"
-#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
-#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4115
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
+#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
#: locale/programs/ld-identification.c:468
#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
@@ -1568,7 +1599,7 @@ msgstr "không rõ ký tự « %s »"
msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
msgstr "số byte cho dãy byte ở đầu và cuối của phạm vi không phải là trùng: %d so với %d"
-#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3047
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
msgstr "tên không hợp lệ cho phạm vi ký tự"
@@ -1590,7 +1621,7 @@ msgstr "giới hạn trên của phạm vi là nhỠhơn giới hạn dưới"
msgid "resulting bytes for range not representable."
msgstr "không thể đại diện số byte kết quả cho phạm vi."
-#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1556
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
@@ -1600,10 +1631,10 @@ msgstr "không thể đại diện số byte kết quả cho phạm vi."
msgid "No definition for %s category found"
msgstr "Không tìm thấy lá»i xác định cho phân loại %s"
-#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
-#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
-#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
-#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-address.c:146 locale/programs/ld-address.c:184
+#: locale/programs/ld-address.c:202 locale/programs/ld-address.c:231
+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:322
+#: locale/programs/ld-address.c:335 locale/programs/ld-identification.c:146
#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
@@ -1616,46 +1647,46 @@ msgstr "Không tìm thấy lá»i xác định cho phân loại %s"
msgid "%s: field `%s' not defined"
msgstr "%s: chÆ°a xác định trÆ°á»ng « %s »"
-#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
-#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-address.c:158 locale/programs/ld-address.c:210
+#: locale/programs/ld-address.c:240 locale/programs/ld-address.c:278
#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
#, c-format
msgid "%s: field `%s' must not be empty"
msgstr "%s: trÆ°á»ng « %s » không thể là rá»—ng"
-#: locale/programs/ld-address.c:168
+#: locale/programs/ld-address.c:170
#, c-format
msgid "%s: invalid escape `%%%c' sequence in field `%s'"
msgstr "%s: dây thoát không hợp lệ: « %%%c » trong trÆ°á»ng « %s »"
-#: locale/programs/ld-address.c:219
+#: locale/programs/ld-address.c:221
#, c-format
msgid "%s: terminology language code `%s' not defined"
msgstr "%s: chưa xác định mã ngôn ngữ thuật ngữ « %s »"
-#: locale/programs/ld-address.c:244
+#: locale/programs/ld-address.c:246
#, c-format
msgid "%s: field `%s' must not be defined"
msgstr "%s: trÆ°á»ng « %s » không nên được xác định"
-#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#: locale/programs/ld-address.c:260 locale/programs/ld-address.c:289
#, c-format
msgid "%s: language abbreviation `%s' not defined"
msgstr "%s: chưa xác định từ viết tắt ngôn ngữ « %s »"
-#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
-#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#: locale/programs/ld-address.c:267 locale/programs/ld-address.c:295
+#: locale/programs/ld-address.c:329 locale/programs/ld-address.c:341
#, c-format
msgid "%s: `%s' value does not match `%s' value"
msgstr "%s: giá trị « %s » không tương ứng với giá trị « %s »"
-#: locale/programs/ld-address.c:312
+#: locale/programs/ld-address.c:314
#, c-format
msgid "%s: numeric country code `%d' not valid"
msgstr "%s: mã quốc gia thuộc số « %d » không phải hợp lệ"
-#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
-#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
#: locale/programs/ld-identification.c:364
#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
@@ -1667,7 +1698,7 @@ msgstr "%s: mã quốc gia thuộc số « %d » không phải hợp lệ"
msgid "%s: field `%s' declared more than once"
msgstr "%s: trÆ°á»ng « %s » được tuyên bố nhiá»u lần"
-#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-address.c:514 locale/programs/ld-address.c:552
#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
@@ -1677,7 +1708,7 @@ msgstr "%s: trÆ°á»ng « %s » được tuyên bố nhiá»u lần"
msgid "%s: unknown character in field `%s'"
msgstr "%s: không rõ ký tá»± trong trÆ°á»ng « %s »"
-#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3922
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
@@ -1687,10 +1718,10 @@ msgstr "%s: không rõ ký tá»± trong trÆ°á»ng « %s »"
msgid "%s: incomplete `END' line"
msgstr "%s: dòng « END » chưa hoàn toàn"
-#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:542
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
-#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4105
+#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
#: locale/programs/ld-identification.c:459
@@ -1833,7 +1864,7 @@ msgstr "chưa xác định « UNDEFINED »"
msgid "too many errors; giving up"
msgstr "quá nhiá»u lá»—i nên chịu thua"
-#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4044
+#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
#, c-format
msgid "%s: nested conditionals not supported"
msgstr "%s: không há»— trợ Ä‘iá»u kiện nhúng"
@@ -1853,27 +1884,27 @@ msgstr "%s: lá»i xác định « %s » trùng"
msgid "%s: duplicate declaration of section `%s'"
msgstr "%s: lá»i xác định phần « %s » trùng"
-#: locale/programs/ld-collate.c:3027
+#: locale/programs/ld-collate.c:3024
#, c-format
msgid "%s: unknown character in collating symbol name"
msgstr "%s: không rõ ký tự trong tên ký hiệu đối chiếu"
-#: locale/programs/ld-collate.c:3159
+#: locale/programs/ld-collate.c:3153
#, c-format
msgid "%s: unknown character in equivalent definition name"
msgstr "%s: không rõ ký tá»± trong tên lá»i xác định tÆ°Æ¡ng Ä‘Æ°Æ¡ng"
-#: locale/programs/ld-collate.c:3172
+#: locale/programs/ld-collate.c:3164
#, c-format
msgid "%s: unknown character in equivalent definition value"
msgstr "%s: không rõ ký tá»± trong giá trị lá»i xác định tÆ°Æ¡ng Ä‘Æ°Æ¡ng"
-#: locale/programs/ld-collate.c:3182
+#: locale/programs/ld-collate.c:3174
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
msgstr "%s: không rõ ký hiệu « %s » trong lá»i xác định tÆ°Æ¡ng Ä‘Æ°Æ¡ng"
-#: locale/programs/ld-collate.c:3191
+#: locale/programs/ld-collate.c:3183
msgid "error while adding equivalent collating symbol"
msgstr "gặp lỗi khi thêm ký hiệu đối chiếu tương đương"
@@ -1953,12 +1984,12 @@ msgstr "%s: không cho phép mô tả phân loại rỗng"
msgid "%s: missing `reorder-sections-end' keyword"
msgstr "%s: thiếu từ khoá « reorder-sections-end »"
-#: locale/programs/ld-collate.c:4077
+#: locale/programs/ld-collate.c:4079
#, c-format
msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
msgstr "%s: « %s » không có « ifdef » hoặc « ifndef » tương ứng"
-#: locale/programs/ld-collate.c:4095
+#: locale/programs/ld-collate.c:4097
#, c-format
msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
msgstr "%s: « endif » không có « ifdef » hoặc « ifndef » tương ứng"
@@ -2282,7 +2313,7 @@ msgstr "%s: gặp rác ở kết thúc của ngày bắt đầu trong chuỗi %Z
msgid "%s: starting date is invalid in string %Zd in `era' field"
msgstr "%s: ngày bắt đầu không hợp lệ trong chuá»—i %Zd trong trÆ°á»ng « era »"
-#: locale/programs/ld-time.c:407
+#: locale/programs/ld-time.c:407 locale/programs/ld-time.c:435
#, c-format
msgid "%s: invalid stopping date in string %Zd in `era' field"
msgstr "%s: ngày kết thúc không hợp lệ trong chuá»—i %Zd trong trÆ°á»ng « era »"
@@ -2292,11 +2323,6 @@ msgstr "%s: ngày kết thúc không hợp lệ trong chuá»—i %Zd trong trÆ°á»n
msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
msgstr "%s: gặp rác ở kết thúc của ngày kết thúc trong chuá»—i %Zd trong trÆ°á»ng « era »"
-#: locale/programs/ld-time.c:435
-#, c-format
-msgid "%s: stopping date is invalid in string %Zd in `era' field"
-msgstr "%s: ngày kết thúc không hợp lệ trong chuá»—i %Zd trong trÆ°á»ng « era »"
-
#: locale/programs/ld-time.c:444
#, c-format
msgid "%s: missing era name in string %Zd in `era' field"
@@ -2399,15 +2425,10 @@ msgid "Print more information"
msgstr "In thêm thông tin"
#: locale/programs/locale.c:87
-msgid ""
-"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Lấy thông tin đặc trÆ°ng cho miá»n địa phÆ°Æ¡ng.\n"
-"Äể tìm hÆ°á»›ng dẫn vá» thông báo lá»—i, thăm địa chỉ:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get locale-specific information."
+msgstr "Lấy thông tin đặc trÆ°ng cho miá»n địa phÆ°Æ¡ng."
-#: locale/programs/locale.c:92
+#: locale/programs/locale.c:90
msgid ""
"NAME\n"
"[-a|-m]"
@@ -2415,27 +2436,27 @@ msgstr ""
"TÊN\n"
"[-a|-m]"
-#: locale/programs/locale.c:193
+#: locale/programs/locale.c:194
#, c-format
msgid "Cannot set LC_CTYPE to default locale"
msgstr "Không thể đặt LC_TYPE thành miá»n địa phÆ°Æ¡ng mặc định"
-#: locale/programs/locale.c:195
+#: locale/programs/locale.c:196
#, c-format
msgid "Cannot set LC_MESSAGES to default locale"
msgstr "Không thể đặt LC_MESSAGES thành miá»n địa phÆ°Æ¡ng mặc định"
-#: locale/programs/locale.c:208
+#: locale/programs/locale.c:209
#, c-format
msgid "Cannot set LC_COLLATE to default locale"
msgstr "Không thể đặt LC_COLLATE thành miá»n địa phÆ°Æ¡ng mặc định"
-#: locale/programs/locale.c:224
+#: locale/programs/locale.c:225
#, c-format
msgid "Cannot set LC_ALL to default locale"
msgstr "Không thể đặt LC_ALL thành miá»n địa phÆ°Æ¡ng mặc định"
-#: locale/programs/locale.c:500
+#: locale/programs/locale.c:518
#, c-format
msgid "while preparing output"
msgstr "trong khi chuẩn bị kết xuất"
@@ -2719,8 +2740,8 @@ msgid "cannot create output file `%s' for category `%s'"
msgstr "không thể tạo tập tin kết xuất « %s » cho phân loại « %s »"
#: locale/programs/locfile.c:782
-msgid "expect string argument for `copy'"
-msgstr "đợi đối số chuỗi cho « copy » (sao chép)"
+msgid "expecting string argument for `copy'"
+msgstr "mong đợi đối số chuỗi cho « copy » (sao chép)"
#: locale/programs/locfile.c:786
msgid "locale name should consist only of portable characters"
@@ -2838,8 +2859,6 @@ msgid ""
"Mandatory arguments to long options are also mandatory for any corresponding\n"
"short options.\n"
"\n"
-"For bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
msgstr ""
"Sử dụng: memusage [TÙY_CHỌN]... CHƯƠNG_TRÌNH [TÙY_CHỌN_CHƯƠNG_TRÌNH]...\n"
"Äo hiệu năng sá»­ dụng bá»™ nhá»› của CHƯƠNG_TRÃŒNH.\n"
@@ -2865,10 +2884,9 @@ msgstr ""
"\n"
"Má»i đối số bắt buá»™c phải sá»­ dụng vá»›i tùy chá»n dài cÅ©ng bắt buá»™c\n"
"vá»›i tùy chá»n ngắn tÆ°Æ¡ng ứng.\n"
-"Äể tìm hÆ°á»›ng dẫn vá» thông báo lá»—i, thăm địa chỉ:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
+"\n"
-#: malloc/memusage.sh:99
+#: malloc/memusage.sh:101
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--unbuffered]\n"
" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
@@ -2880,51 +2898,51 @@ msgstr ""
" [--title=CHUá»–I] [--x-size=Cá» ] [--y-size=Cá» ]\n"
" CHƯƠNG_TRÌNH [TÙY_CHỌN_CHƯƠNG_TRÌNH]..."
-#: malloc/memusage.sh:191
+#: malloc/memusage.sh:193
msgid "memusage: option \\`${1##*=}' is ambiguous"
msgstr "memusage: tùy chá»n « ${1##*=} » là mÆ¡ hồ"
-#: malloc/memusage.sh:200
+#: malloc/memusage.sh:202
msgid "memusage: unrecognized option \\`$1'"
msgstr "memusage: không nhận ra tùy chá»n « $1 »"
-#: malloc/memusage.sh:213
+#: malloc/memusage.sh:215
msgid "No program name given"
msgstr "Chưa đưa ra tên chương trình"
-#: malloc/memusagestat.c:54
+#: malloc/memusagestat.c:57
msgid "Name output file"
msgstr "Äặt tên của tập tin kết xuất"
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:58
msgid "Title string used in output graphic"
msgstr "Chuá»—i tá»±a đỠđược dùng trong đồ há»a kết xuất"
-#: malloc/memusagestat.c:56
+#: malloc/memusagestat.c:59
msgid "Generate output linear to time (default is linear to number of function calls)"
msgstr "Tạo đồ thị Ä‘Æ°á»ng theo thá»i gian (mặc định là đồ thị Ä‘Æ°á»ng theo số cuá»™c gá»i hàm)"
-#: malloc/memusagestat.c:58
+#: malloc/memusagestat.c:61
msgid "Also draw graph for total memory consumption"
msgstr "Cũng vẽ đồ thị đại diện tổng số tiêu hao bộ nhớ"
-#: malloc/memusagestat.c:59
+#: malloc/memusagestat.c:62
msgid "Make output graphic VALUE pixels wide"
msgstr "Äặt đồ há»a kết xuất có chiá»u rá»™ng GIÃ_TRỊ (theo Ä‘iểm ảnh)"
-#: malloc/memusagestat.c:60
+#: malloc/memusagestat.c:63
msgid "Make output graphic VALUE pixels high"
msgstr "Äặt đồ há»a kết xuất có chiá»u cao GIÃ_TRỊ (theo Ä‘iểm ảnh)"
-#: malloc/memusagestat.c:65
+#: malloc/memusagestat.c:68
msgid "Generate graphic from memory profiling data"
msgstr "Tạo đồ há»a từ dữ liệu Ä‘o hiệu năng sá»­ dụng bá»™ nhá»›"
-#: malloc/memusagestat.c:68
+#: malloc/memusagestat.c:71
msgid "DATAFILE [OUTFILE]"
msgstr "TẬP_TIN_DỮ_LIỆU [TẬP_TIN_XUẤT]"
-#: misc/error.c:118 timezone/zic.c:417
+#: misc/error.c:118
msgid "Unknown system error"
msgstr "Gặp lỗi hệ thống không rõ"
@@ -2932,7 +2950,7 @@ msgstr "Gặp lỗi hệ thống không rõ"
msgid "unable to free arguments"
msgstr "không thể giải phóng đối số"
-#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr "Thành công"
@@ -2974,7 +2992,7 @@ msgid "First/next chain broken"
msgstr "Dây thứ nhất/kế tiếp bị ngắt"
#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+#: nis/nis_error.h:11 nis/ypclnt.c:878 sysdeps/gnu/errlist.c:157
msgid "Permission denied"
msgstr "Không đủ quyá»n truy cập"
@@ -3478,433 +3496,472 @@ msgstr "netname2user: mục nhập LOCAL cho %s trong thư mục %s không phả
msgid "netname2user: should not have uid 0"
msgstr "netname2user: không nên có UID 0"
-#: nis/ypclnt.c:825
+#: nis/ypclnt.c:836
msgid "Request arguments bad"
msgstr "Sai đối số yêu cầu"
-#: nis/ypclnt.c:828
+#: nis/ypclnt.c:839
msgid "RPC failure on NIS operation"
msgstr "Lỗi RPC trên thao tác NIS"
-#: nis/ypclnt.c:831
+#: nis/ypclnt.c:842
msgid "Can't bind to server which serves this domain"
msgstr "Không thể đóng kết vá»›i máy có phục vụ miá»n này"
-#: nis/ypclnt.c:834
+#: nis/ypclnt.c:845
msgid "No such map in server's domain"
msgstr "Không có sÆ¡ đồ nhÆ° vậy trong miá»n của máy phục vụ"
-#: nis/ypclnt.c:837
+#: nis/ypclnt.c:848
msgid "No such key in map"
msgstr "Không có khoá như vậy trong sơ đồ"
-#: nis/ypclnt.c:840
+#: nis/ypclnt.c:851
msgid "Internal NIS error"
msgstr "Lá»—i NIS ná»™i bá»™"
-#: nis/ypclnt.c:843
+#: nis/ypclnt.c:854
msgid "Local resource allocation failure"
msgstr "Lỗi cấp phát tài nguyên cục bộ"
-#: nis/ypclnt.c:846
+#: nis/ypclnt.c:857
msgid "No more records in map database"
msgstr "Không có mục ghi thêm nữa trong cơ sở dữ liệu sơ đồ"
-#: nis/ypclnt.c:849
+#: nis/ypclnt.c:860
msgid "Can't communicate with portmapper"
msgstr "Không thể liên lạc với portmapper"
-#: nis/ypclnt.c:852
+#: nis/ypclnt.c:863
msgid "Can't communicate with ypbind"
msgstr "Không thể liên lạc với ypbind"
-#: nis/ypclnt.c:855
+#: nis/ypclnt.c:866
msgid "Can't communicate with ypserv"
msgstr "Không thể liên lạc với ypserv"
-#: nis/ypclnt.c:858
+#: nis/ypclnt.c:869
msgid "Local domain name not set"
msgstr "ChÆ°a đặt tên miá»n cục bá»™"
-#: nis/ypclnt.c:861
+#: nis/ypclnt.c:872
msgid "NIS map database is bad"
msgstr "Cơ sở dữ liệu sơ đồ NIS là sai"
-#: nis/ypclnt.c:864
+#: nis/ypclnt.c:875
msgid "NIS client/server version mismatch - can't supply service"
msgstr "Sai khớp trình khách/phục vụ NIS nên không thể cung cấp dịch vụ"
-#: nis/ypclnt.c:870
+#: nis/ypclnt.c:881
msgid "Database is busy"
msgstr "Cơ sở dữ liệu đang bận"
-#: nis/ypclnt.c:873
+#: nis/ypclnt.c:884
msgid "Unknown NIS error code"
msgstr "Mã lỗi NIS không rõ"
-#: nis/ypclnt.c:913
+#: nis/ypclnt.c:924
msgid "Internal ypbind error"
msgstr "Lá»—i ypbind ná»™i bá»™"
-#: nis/ypclnt.c:916
+#: nis/ypclnt.c:927
msgid "Domain not bound"
msgstr "Không tìm thấy miá»n"
-#: nis/ypclnt.c:919
+#: nis/ypclnt.c:930
msgid "System resource allocation failure"
msgstr "Lỗi cấp phát tài nguyên hệ thống"
-#: nis/ypclnt.c:922
+#: nis/ypclnt.c:933
msgid "Unknown ypbind error"
msgstr "Lỗi ypbind không rõ"
-#: nis/ypclnt.c:963
+#: nis/ypclnt.c:974
msgid "yp_update: cannot convert host to netname\n"
msgstr "yp_update: không thể chuyển đổi máy sang netname\n"
-#: nis/ypclnt.c:981
+#: nis/ypclnt.c:992
msgid "yp_update: cannot get server address\n"
msgstr "yp_update: không thể lấy địa chỉ của máy phục vụ\n"
-#: nscd/aicache.c:77 nscd/hstcache.c:468
+#: nscd/aicache.c:82 nscd/hstcache.c:481
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
msgstr "Không tìm thấy « %s » trong bộ nhớ tạm các máy phục vụ !"
-#: nscd/aicache.c:79 nscd/hstcache.c:470
+#: nscd/aicache.c:84 nscd/hstcache.c:483
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
msgstr "Äang nạp lại « %s » trong bá»™ nhá»› tạm các máy phục vụ !"
-#: nscd/cache.c:146
+#: nscd/cache.c:150
#, c-format
msgid "add new entry \"%s\" of type %s for %s to cache%s"
msgstr "thêm mục nhập mới « %s » có kiểu %s cho %s nhớ tạm %s"
-#: nscd/cache.c:148
+#: nscd/cache.c:152
msgid " (first)"
msgstr " (thứ nhất)"
-#: nscd/cache.c:256 nscd/connections.c:810
+#: nscd/cache.c:286 nscd/connections.c:866
#, c-format
msgid "cannot stat() file `%s': %s"
msgstr "không thể stat() tập tin « %s »: %s"
-#: nscd/cache.c:285
+#: nscd/cache.c:328
#, c-format
msgid "pruning %s cache; time %ld"
msgstr "Ä‘ang xén bá»™ nhá»› tạm %s; thá»i gian %ld"
-#: nscd/cache.c:312
+#: nscd/cache.c:357
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
msgstr "Ä‘ang suy xét mục nhập %s « %s », thá»i hạn %<PRIu64>"
-#: nscd/connections.c:521 nscd/connections.c:533 nscd/connections.c:545
-#: nscd/connections.c:564
+#: nscd/connections.c:570
#, c-format
msgid "invalid persistent database file \"%s\": %s"
msgstr "tập tin cÆ¡ sở dữ liệu bá»n bỉ không hợp lệ « %s »: %s"
-#: nscd/connections.c:535
+#: nscd/connections.c:578
+msgid "uninitialized header"
+msgstr "phần đầu chưa sơ khởi"
+
+#: nscd/connections.c:583
msgid "header size does not match"
msgstr "kích cỡ phần đầu không tương ứng"
-#: nscd/connections.c:547
+#: nscd/connections.c:593
msgid "file size does not match"
msgstr "kích cỡ tập tin không tương ứng"
-#: nscd/connections.c:566
+#: nscd/connections.c:610
msgid "verification failed"
msgstr "lỗi thẩm tra"
-#: nscd/connections.c:580
+#: nscd/connections.c:624
#, c-format
msgid "suggested size of table for database %s larger than the persistent database's table"
msgstr "kích cỡ bảng đã đệ nghị cho cÆ¡ sở dữ liệu %s vẫn lá»›n hÆ¡n bảng của cÆ¡ sở dữ liệu bá»n bỉ"
-#: nscd/connections.c:591 nscd/connections.c:673
+#: nscd/connections.c:635 nscd/connections.c:720
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
msgstr "không thể tạo bá»™ mô tả chỉ-Ä‘á»c cho « %s »; không có mmap"
-#: nscd/connections.c:652
+#: nscd/connections.c:651
+#, c-format
+msgid "cannot access '%s'"
+msgstr "không thể truy cập đến « %s »"
+
+#: nscd/connections.c:699
#, c-format
msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
msgstr "cÆ¡ sở dữ liệu cho %s bị há»ng hoặc được dùng đồng thá»i; bạn hãy tá»± gỡ bá» %s nếu cần, rồi khởi chạy lại"
-#: nscd/connections.c:659
+#: nscd/connections.c:706
#, c-format
msgid "cannot create %s; no persistent database used"
msgstr "không thể tạo %s; không có cÆ¡ sở dữ liệu bá»n bỉ được dùng"
-#: nscd/connections.c:662
+#: nscd/connections.c:709
#, c-format
msgid "cannot create %s; no sharing possible"
msgstr "không thể tạo %s; không thể dùng chung"
-#: nscd/connections.c:733
+#: nscd/connections.c:780
#, c-format
msgid "cannot write to database file %s: %s"
msgstr "không thể ghi vào tập tin cơ sở dữ liệu %s: %s"
-#: nscd/connections.c:772
+#: nscd/connections.c:819
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
msgstr "không thể đặt ổ cắm sẽ đóng khi thực hiện: %s; đang tắt chế độ rất cẩn thận"
-#: nscd/connections.c:823
+#: nscd/connections.c:902
#, c-format
msgid "cannot open socket: %s"
msgstr "không thể mở ổ cắm: %s"
-#: nscd/connections.c:840
+#: nscd/connections.c:922
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
msgstr "không thể chuyển đổi ổ cắm sang chế độ không chặn: %s"
-#: nscd/connections.c:848
+#: nscd/connections.c:930
#, c-format
msgid "cannot set socket to close on exec: %s"
msgstr "không thể đặt ổ cắm sẽ đóng khi thực hiện: %s"
-#: nscd/connections.c:859
+#: nscd/connections.c:943
#, c-format
msgid "cannot enable socket to accept connections: %s"
msgstr "không thể hiệu lực ổ cắm chấp nhận kết nối: %s"
-#: nscd/connections.c:955
+#: nscd/connections.c:1043
#, c-format
msgid "provide access to FD %d, for %s"
msgstr "cung cấp truy cập vào FD %d, cho %s"
-#: nscd/connections.c:967
+#: nscd/connections.c:1055
#, c-format
msgid "cannot handle old request version %d; current version is %d"
msgstr "không thể quản lý phiên bản yêu cầu cÅ© %d; phiên bản hiện thá»i là %d"
-#: nscd/connections.c:1009 nscd/connections.c:1062
+#: nscd/connections.c:1077
+#, c-format
+msgid "request from %ld not handled due to missing permission"
+msgstr "yêu cầu từ %ld không được xá»­ lý do quyá»n truy cập bị thiếu"
+
+#: nscd/connections.c:1082
+#, c-format
+msgid "request from '%s' [%ld] not handled due to missing permission"
+msgstr "yêu cầu từ « %s » [%ld] không được xá»­ lý do quyá»n truy cập bị thiếu"
+
+#: nscd/connections.c:1087
+msgid "request not handled due to missing permission"
+msgstr "yêu cầu không được xá»­ lý do quyá»n truy cập bị thiếu"
+
+#: nscd/connections.c:1125 nscd/connections.c:1178
#, c-format
msgid "cannot write result: %s"
msgstr "không thể ghi kết quả: %s"
-#: nscd/connections.c:1145
+#: nscd/connections.c:1261
#, c-format
msgid "error getting caller's id: %s"
msgstr "gặp lá»—i khi lấy mã số gá»i: %s"
-#: nscd/connections.c:1204
+#: nscd/connections.c:1320
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "không thể mở « /proc/self/cmdline »: %s; đang tắt chế độ rất cẩn thận"
-#: nscd/connections.c:1218
+#: nscd/connections.c:1334
#, c-format
msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
msgstr "không thể Ä‘á»c « /proc/self/cmdline »: %s; Ä‘ang tắt chế Ä‘á»™ rất cẩn thận"
-#: nscd/connections.c:1258
+#: nscd/connections.c:1374
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
msgstr "không thể chuyển đổi sang UID cũ: %s; đang tắt chế độ rất cẩn thận"
-#: nscd/connections.c:1268
+#: nscd/connections.c:1384
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
msgstr "không thể chuyển đổi sang GID cũ: %s; đang tắt chế độ rất cẩn thận"
-#: nscd/connections.c:1281
+#: nscd/connections.c:1397
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
msgstr "không thể chuyển đổi sang thư mục hoạt động cũ : %s; đang tắt chế độ rất cẩn thận"
-#: nscd/connections.c:1310
+#: nscd/connections.c:1429
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
msgstr "lỗi thực hiện lại: %s; đang tắt chế độ rất cẩn thận"
-#: nscd/connections.c:1319
+#: nscd/connections.c:1438
#, c-format
msgid "cannot change current working directory to \"/\": %s"
msgstr "không thể chuyển đổi thÆ° mục hoạt Ä‘á»™ng hiện thá»i sang « / »: %s"
-#: nscd/connections.c:1437
+#: nscd/connections.c:1644
#, c-format
msgid "short read while reading request: %s"
msgstr "Ä‘á»c ngắn khi Ä‘á»c yêu cầu : %s"
-#: nscd/connections.c:1468
+#: nscd/connections.c:1677
#, c-format
msgid "key length in request too long: %d"
msgstr "chiá»u dài khoá quá dài trong yêu cầu : %d"
-#: nscd/connections.c:1481
+#: nscd/connections.c:1690
#, c-format
msgid "short read while reading request key: %s"
msgstr "Ä‘á»c ngắn khi Ä‘á»c khoá yêu cầu : %s"
-#: nscd/connections.c:1490
+#: nscd/connections.c:1699
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
msgstr "handle_request: (quản lý yêu cầu) nhận được yêu cầu (Phiên bản = %d) từ PID %ld"
-#: nscd/connections.c:1495
+#: nscd/connections.c:1704
#, c-format
msgid "handle_request: request received (Version = %d)"
msgstr "handle_request: (quản lý yêu cầu) nhận được yêu cầu (Phiên bản = %d)"
-#: nscd/connections.c:1856
+#: nscd/connections.c:1903 nscd/connections.c:2101
#, c-format
-msgid "could only start %d threads; terminating"
-msgstr "chỉ có thể khởi chạy %d mạch nên chấm dứt"
+msgid "disabled inotify after read error %d"
+msgstr "đã tắt inotify sau khi gặp lá»—i Ä‘á»c %d"
+
+#: nscd/connections.c:2230
+msgid "could not initialize conditional variable"
+msgstr "không thể sÆ¡ khởi biến Ä‘iá»u kiện"
+
+#: nscd/connections.c:2238
+msgid "could not start clean-up thread; terminating"
+msgstr "không thể bắt đầu nhánh làm sạch nên chấm dứt"
-#: nscd/connections.c:1904 nscd/connections.c:1905 nscd/connections.c:1922
-#: nscd/connections.c:1931 nscd/connections.c:1949 nscd/connections.c:1960
-#: nscd/connections.c:1971
+#: nscd/connections.c:2252
+msgid "could not start any worker thread; terminating"
+msgstr "không thể bắt đầu bất cứ nhánh làm việc nào nên chấm dứt"
+
+#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
+#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
+#: nscd/connections.c:2370
#, c-format
msgid "Failed to run nscd as user '%s'"
msgstr "Lá»—i chạy nscd dÆ°á»›i ngÆ°á»i dùng « %s »"
-#: nscd/connections.c:1923
+#: nscd/connections.c:2322
#, c-format
msgid "initial getgrouplist failed"
msgstr "getgrouplist (lấy danh sách nhóm) đầu tiên bị lỗi"
-#: nscd/connections.c:1932
+#: nscd/connections.c:2331
#, c-format
msgid "getgrouplist failed"
msgstr "getgrouplist (lấy danh sách nhóm) bị lỗi"
-#: nscd/connections.c:1950
+#: nscd/connections.c:2349
#, c-format
msgid "setgroups failed"
msgstr "setgroups (đặt các nhóm) bị lỗi"
-#: nscd/grpcache.c:402 nscd/hstcache.c:418 nscd/initgrcache.c:412
-#: nscd/pwdcache.c:397 nscd/servicescache.c:343
+#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
+#: nscd/pwdcache.c:400 nscd/servicescache.c:343
#, c-format
msgid "short write in %s: %s"
msgstr "ghi ngắn trong %s: %s"
-#: nscd/grpcache.c:445 nscd/initgrcache.c:78
+#: nscd/grpcache.c:438 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
msgstr "Không tìm thấy « %s » trong bộ nhớ tạm nhóm !"
-#: nscd/grpcache.c:447 nscd/initgrcache.c:80
+#: nscd/grpcache.c:440 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
msgstr "Äang nạp lại « %s » trong bá»™ nhá»› tạm nhóm !"
-#: nscd/grpcache.c:524
+#: nscd/grpcache.c:517
#, c-format
msgid "Invalid numeric gid \"%s\"!"
msgstr "GID thuộc số không hợp lệ « %s » !"
-#: nscd/mem.c:383
+#: nscd/mem.c:457
#, c-format
msgid "freed %zu bytes in %s cache"
msgstr "đã giải phóng %zu byte trong bộ nhớ tạm %s"
-#: nscd/mem.c:512
+#: nscd/mem.c:594
#, c-format
msgid "no more memory for database '%s'"
msgstr "không có bộ nhớ còn lại cho cơ sở dữ liệu « %s »"
-#: nscd/nscd.c:98
+#: nscd/nscd.c:101
msgid "Read configuration data from NAME"
msgstr "Äá»c tập tin cấu hình từ TÊN"
-#: nscd/nscd.c:100
+#: nscd/nscd.c:103
msgid "Do not fork and display messages on the current tty"
msgstr "Dòng tạo lại và hiển thị thông Ä‘iệp trên TTY hiện thá»i"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "NUMBER"
msgstr "Sá»"
-#: nscd/nscd.c:101
+#: nscd/nscd.c:104
msgid "Start NUMBER threads"
msgstr "Khởi chạy SỠmạch"
-#: nscd/nscd.c:102
+#: nscd/nscd.c:105
msgid "Shut the server down"
msgstr "Tắt máy phục vụ"
-#: nscd/nscd.c:103
-msgid "Print current configuration statistic"
+#: nscd/nscd.c:106
+msgid "Print current configuration statistics"
msgstr "In thống kê cấu hình hiện thá»i"
-#: nscd/nscd.c:104
+#: nscd/nscd.c:107
msgid "TABLE"
msgstr "BẢNG"
-#: nscd/nscd.c:105
+#: nscd/nscd.c:108
msgid "Invalidate the specified cache"
msgstr "Làm mất hiệu lực bộ nhớ tạm đã ghi rõ"
-#: nscd/nscd.c:106
+#: nscd/nscd.c:109
msgid "TABLE,yes"
msgstr "BẢNG,có"
-#: nscd/nscd.c:107
+#: nscd/nscd.c:110
msgid "Use separate cache for each user"
msgstr "Dùng bá»™ nhá»› tạm riêng cho má»—i ngÆ°á»i dùng"
-#: nscd/nscd.c:112
+#: nscd/nscd.c:115
msgid "Name Service Cache Daemon."
msgstr "Trình ná»n nhá»› tạm dịch vụ tên."
-#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
+#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
#, c-format
msgid "wrong number of arguments"
msgstr "số đối số không đúng"
-#: nscd/nscd.c:154
+#: nscd/nscd.c:157
#, c-format
msgid "failure while reading configuration file; this is fatal"
msgstr "gặp lá»—i khi Ä‘á»c tập tin cấu hình: đây là má»™t lá»—i nghiêm trá»ng"
-#: nscd/nscd.c:163
+#: nscd/nscd.c:166
#, c-format
msgid "already running"
msgstr "đang chạy"
-#: nscd/nscd.c:178 nscd/nscd.c:233
+#: nscd/nscd.c:181 nscd/nscd.c:236
#, c-format
msgid "cannot fork"
msgstr "không thể tạo tiến trình con"
-#: nscd/nscd.c:241
+#: nscd/nscd.c:244
#, c-format
msgid "cannot change current working directory to \"/\""
msgstr "không thể chuyển đổi thÆ° mục hoạt Ä‘á»™ng hiện thá»i sang « / »"
-#: nscd/nscd.c:249
+#: nscd/nscd.c:252
msgid "Could not create log file"
msgstr "Không thể tạo tập tin ghi lưu"
-#: nscd/nscd.c:302 nscd/nscd.c:327 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
#, c-format
msgid "Only root is allowed to use this option!"
msgstr "Chỉ cho phép ngÆ°Æ¡i chủ (root) dùng tùy chá»n này !"
-#: nscd/nscd.c:364 nscd/nscd_stat.c:191
+#: nscd/nscd.c:345
+#, c-format
+msgid "'%s' is not a known database"
+msgstr "« %s » không phải là kiểu cơ sở dữ liệu đã biết"
+
+#: nscd/nscd.c:370 nscd/nscd_stat.c:191
#, c-format
msgid "write incomplete"
msgstr "chÆ°a ghi xong"
-#: nscd/nscd.c:375
+#: nscd/nscd.c:381
#, c-format
msgid "cannot read invalidate ACK"
msgstr "không thể làm mất hiệu lực ACK"
-#: nscd/nscd.c:381
+#: nscd/nscd.c:387
#, c-format
msgid "invalidation failed"
msgstr "gặp lỗi khi thử làm mất hiệu lực"
-#: nscd/nscd.c:391
+#: nscd/nscd.c:397
#, c-format
msgid "secure services not implemented anymore"
msgstr "không còn thực hiện lại dịch vụ bảo mật"
@@ -3919,37 +3976,37 @@ msgstr "cơ sở dữ liệu %s không được hỗ trợ"
msgid "Parse error: %s"
msgstr "Lỗi phân tích: %s"
-#: nscd/nscd_conf.c:193
+#: nscd/nscd_conf.c:194
#, c-format
msgid "Must specify user name for server-user option"
msgstr "Phải ghi rõ tên ngÆ°á»i dùng cho tùy chá»n server-user (ngÆ°á»i dùng máy phục vụ)"
-#: nscd/nscd_conf.c:200
+#: nscd/nscd_conf.c:201
#, c-format
msgid "Must specify user name for stat-user option"
msgstr "Phải ghi rõ tên ngÆ°á»i dùng cho tùy chá»n stat-user (ngÆ°á»i dùng thống kê ?)"
-#: nscd/nscd_conf.c:244
+#: nscd/nscd_conf.c:245
#, c-format
msgid "invalid value for 'reload-count': %u"
msgstr "Giá trị không hợp lệ cho « reload-count » (đếm lần nạp lại): %u"
-#: nscd/nscd_conf.c:259
+#: nscd/nscd_conf.c:260
#, c-format
msgid "Must specify value for restart-interval option"
msgstr "Phải ghi rõ giá trị cho tùy chá»n restart-interval (khoảng khởi chạy lại)"
-#: nscd/nscd_conf.c:273
+#: nscd/nscd_conf.c:274
#, c-format
msgid "Unknown option: %s %s %s"
msgstr "Không rõ tùy chá»n %s %s %s"
-#: nscd/nscd_conf.c:286
+#: nscd/nscd_conf.c:287
#, c-format
msgid "cannot get current working directory: %s; disabling paranoia mode"
msgstr "không thể lấy thÆ° mục hoạt Ä‘á»™ng hiện thá»i: %s; Ä‘ang tắt chế Ä‘á»™ rất cẩn thận"
-#: nscd/nscd_conf.c:306
+#: nscd/nscd_conf.c:307
#, c-format
msgid "maximum file size for %s database too small"
msgstr "kích cỡ tập tin tối đa quá nhỠcho cơ sở dữ liệu %s"
@@ -4079,17 +4136,17 @@ msgstr ""
"%15<PRIuMAX> lỗi cấp phát bộ nhớ\n"
"%15s kiểm tra « /etc/%s » để tìm thay đổi\n"
-#: nscd/pwdcache.c:440
+#: nscd/pwdcache.c:443
#, c-format
msgid "Haven't found \"%s\" in password cache!"
msgstr "Không tìm thấy « %s » trong bộ nhớ tạm mật khẩu !"
-#: nscd/pwdcache.c:442
+#: nscd/pwdcache.c:445
#, c-format
msgid "Reloading \"%s\" in password cache!"
msgstr "Äang nạp lại « %s » trong bá»™ nhá»› tạm mật khẩu !"
-#: nscd/pwdcache.c:520
+#: nscd/pwdcache.c:523
#, c-format
msgid "Invalid numeric uid \"%s\"!"
msgstr "UID thuộc số không hợp lệ « %s » !"
@@ -4165,7 +4222,11 @@ msgstr "Gặp lỗi khi lấy ngữ cảnh của nscd"
msgid "Error getting sid from context"
msgstr "Gặp lỗi khi lấy sid từ ngữ cảnh"
-#: nscd/selinux.c:399
+#: nscd/selinux.c:374
+msgid "compile-time support for database policy missing"
+msgstr "thiếu khả năng hỗ trợ lúc biên dịch chính sách cơ sở dữ liệu"
+
+#: nscd/selinux.c:407
#, c-format
msgid ""
"\n"
@@ -4211,29 +4272,24 @@ msgid "Service configuration to be used"
msgstr "Cấu hình dịch vụ cần dùng"
#: nss/getent.c:62
-msgid ""
-"Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
-msgstr ""
-"Lấy mục nhập từ cơ sở dữ liệu quản trị.\n"
-"Äể tìm hÆ°á»›ng dẫn vá» thông báo lá»—i, thăm địa chỉ:\n"
-"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgid "Get entries from administrative database."
+msgstr "Lấy các mục nhập từ cơ sở dữ liệu quản trị."
-#: nss/getent.c:145 nss/getent.c:394
+#: nss/getent.c:143 nss/getent.c:408
#, c-format
msgid "Enumeration not supported on %s\n"
msgstr "Chức năng đếm không được hỗ trợ trên %s\n"
-#: nss/getent.c:782
+#: nss/getent.c:794
#, c-format
msgid "Unknown database name"
msgstr "Không rõ tên cơ sở dữ liệu"
-#: nss/getent.c:808
+#: nss/getent.c:820
msgid "Supported databases:\n"
msgstr "Các cơ sở dữ liệu được hỗ trợ :\n"
-#: nss/getent.c:868
+#: nss/getent.c:886
#, c-format
msgid "Unknown database: %s\n"
msgstr "Không rõ cơ sở dữ liệu : %s\n"
@@ -4307,151 +4363,165 @@ msgstr "Sá»­ dụng: %s [-v đặc_tả] tên_biến [Ä‘Æ°á»ng_dẫn]\n"
msgid " %s -a [pathname]\n"
msgstr " %s -a [Ä‘Æ°á»ng_dẫn]\n"
-#: posix/getconf.c:1067
+#: posix/getconf.c:1023
+#, c-format
+msgid ""
+"Usage: getconf [-v SPEC] VAR\n"
+" or: getconf [-v SPEC] PATH_VAR PATH\n"
+"\n"
+"Get the configuration value for variable VAR, or for variable PATH_VAR\n"
+"for path PATH. If SPEC is given, give values for compilation\n"
+"environment SPEC.\n"
+"\n"
+msgstr ""
+"Sá»­ dụng: getconf [-v ÄẶC_TẢ] BIẾN\n"
+" hoặc: getconf [-v ÄẶC_TẢ] BIẾN_ÄƯỜNG_DẪN ÄƯỜNG_DẪN\n"
+"\n"
+"Lấy giá trị cấu hình của BIẾN, hay của BIẾN_ÄƯỜNG_DẪN\n"
+"cho Ä‘Æ°á»ng dẫn ÄƯỜNG_DẪN.\n"
+"ÄÆ°a ra ÄẶC_TẢ thì xuất giá trị cho môi trÆ°á»ng biên dịch ÄẶC_TẢ.\n"
+"\n"
+
+#: posix/getconf.c:1081
#, c-format
msgid "unknown specification \"%s\""
msgstr "không rõ đặc tả « %s »"
-#: posix/getconf.c:1095
+#: posix/getconf.c:1109
#, c-format
msgid "Couldn't execute %s"
msgstr "Không thể thực hiện %s"
-#: posix/getconf.c:1135 posix/getconf.c:1151
+#: posix/getconf.c:1149 posix/getconf.c:1165
msgid "undefined"
msgstr "chưa xác định"
-#: posix/getconf.c:1173
+#: posix/getconf.c:1187
#, c-format
msgid "Unrecognized variable `%s'"
msgstr "Không nhận ra biến « %s »"
-#: posix/getopt.c:571 posix/getopt.c:587
+#: posix/getopt.c:570 posix/getopt.c:586
#, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: tùy chá»n « %s » là mÆ¡ hồ\n"
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: tùy chá»n « %s » vẫn mÆ¡ hồ\n"
-#: posix/getopt.c:620 posix/getopt.c:624
+#: posix/getopt.c:619 posix/getopt.c:623
#, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: tùy chá»n « --%s » không cho phép đối số\n"
-#: posix/getopt.c:633 posix/getopt.c:638
+#: posix/getopt.c:632 posix/getopt.c:637
#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: tùy chá»n « %c%s » không cho phép đối số\n"
-#: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
-#: posix/getopt.c:1035
+#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
+#: posix/getopt.c:1021
#, c-format
-msgid "%s: option `%s' requires an argument\n"
+msgid "%s: option '%s' requires an argument\n"
msgstr "%s: tùy chá»n « %s » cần thiết đối số\n"
-#: posix/getopt.c:738 posix/getopt.c:741
+#: posix/getopt.c:737 posix/getopt.c:740
#, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: không nhận diện tùy chá»n « --%s »\n"
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: không nhận ra tùy chá»n « --%s »\n"
-#: posix/getopt.c:749 posix/getopt.c:752
+#: posix/getopt.c:748 posix/getopt.c:751
#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: không nhận diện tùy chá»n « %c%s »\n"
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: không nhận ra tùy chá»n « %c%s »\n"
-#: posix/getopt.c:804 posix/getopt.c:807
+#: posix/getopt.c:800 posix/getopt.c:803
#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr "%s: tùy chá»n không được phép -- %c\n"
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: tùy chá»n không hợp lệ -- « %c »\n"
-#: posix/getopt.c:813 posix/getopt.c:816
+#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
+#: posix/getopt.c:1091
#, c-format
-msgid "%s: invalid option -- %c\n"
-msgstr "%s: tùy chá»n không hợp lệ -- %c\n"
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: tùy chá»n cần thiết đối số -- « %c »\n"
-#: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
-#: posix/getopt.c:1106
+#: posix/getopt.c:923 posix/getopt.c:939
#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: tùy chá»n cần thiết đối số -- %c\n"
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: tùy chá»n « -W %s » vẫn mÆ¡ hồ\n"
-#: posix/getopt.c:937 posix/getopt.c:953
+#: posix/getopt.c:963 posix/getopt.c:981
#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: tùy chá»n « -W %s » là mÆ¡ hồ\n"
-
-#: posix/getopt.c:977 posix/getopt.c:995
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: tùy chá»n « -W %s » không cho phép đối số\n"
-#: posix/regcomp.c:135
+#: posix/regcomp.c:136
msgid "No match"
msgstr "Không khớp"
-#: posix/regcomp.c:138
+#: posix/regcomp.c:139
msgid "Invalid regular expression"
msgstr "Biểu thức chính quy không hợp lệ"
-#: posix/regcomp.c:141
+#: posix/regcomp.c:142
msgid "Invalid collation character"
msgstr "Ký tự đối chiếu không hợp lệ"
-#: posix/regcomp.c:144
+#: posix/regcomp.c:145
msgid "Invalid character class name"
msgstr "Tên loại ký tự không hợp lệ"
-#: posix/regcomp.c:147
+#: posix/regcomp.c:148
msgid "Trailing backslash"
msgstr "Có gạch chéo ngược theo sau"
-#: posix/regcomp.c:150
+#: posix/regcomp.c:151
msgid "Invalid back reference"
msgstr "Tham chiếu ngược không hợp lệ"
-#: posix/regcomp.c:153
+#: posix/regcomp.c:154
msgid "Unmatched [ or [^"
msgstr "Chưa khớp ký tự « [ » hay « [^ »"
-#: posix/regcomp.c:156
+#: posix/regcomp.c:157
msgid "Unmatched ( or \\("
msgstr "Chưa khớp ký tự « ( » hay « \\( »"
-#: posix/regcomp.c:159
+#: posix/regcomp.c:160
msgid "Unmatched \\{"
msgstr "Chưa khớp ký tự « \\{ »"
-#: posix/regcomp.c:162
+#: posix/regcomp.c:163
msgid "Invalid content of \\{\\}"
msgstr "Nội dụng « \\{\\} » không hợp lệ"
-#: posix/regcomp.c:165
+#: posix/regcomp.c:166
msgid "Invalid range end"
msgstr "Sai kết thúc phạm vi"
-#: posix/regcomp.c:168
+#: posix/regcomp.c:169
msgid "Memory exhausted"
msgstr "Cạn bộ nhớ"
-#: posix/regcomp.c:171
+#: posix/regcomp.c:172
msgid "Invalid preceding regular expression"
msgstr "Biểu thức chính quy đi trước không hợp lệ"
-#: posix/regcomp.c:174
+#: posix/regcomp.c:175
msgid "Premature end of regular expression"
msgstr "Biểu thức chính quy kết thúc quá sớm"
-#: posix/regcomp.c:177
+#: posix/regcomp.c:178
msgid "Regular expression too big"
msgstr "Biểu thức chính quy quá lớn"
-#: posix/regcomp.c:180
+#: posix/regcomp.c:181
msgid "Unmatched ) or \\)"
msgstr "Chưa khớp ký tự « ) » hay « \\) »"
-#: posix/regcomp.c:660
+#: posix/regcomp.c:681
msgid "No previous regular expression"
msgstr "Không có biểu thức chính quy đi trước"
-#: posix/wordexp.c:1798
+#: posix/wordexp.c:1832
msgid "parameter null or not set"
msgstr "tham số vô giá trị hoặc chưa được đặt"
@@ -4535,133 +4605,138 @@ msgstr "Tín hiệu thá»i gian thá»±c %d"
msgid "Unknown signal %d"
msgstr "Tín hiệu không rõ %d"
-#: sunrpc/auth_unix.c:114
-msgid "authunix_create: out of memory\n"
-msgstr "authunix_create: tràn bộ nhớ\n"
+#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
+#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
+#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+msgid "out of memory\n"
+msgstr "không đủ bộ nhớ\n"
#: sunrpc/auth_unix.c:350
msgid "auth_unix.c: Fatal marshalling problem"
msgstr "auth_unix.c: lá»—i nghiêm trá»ng khi sắp đặt vào hàng ngÅ©"
-#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
#, c-format
-msgid "; low version = %lu, high version = %lu"
-msgstr "; phiên bản dưới = %lu, phiên bản trên = %lu"
+msgid "%s: %s; low version = %lu, high version = %lu"
+msgstr "%s:%s; phiên bản dưới = %lu, phiên bản trên = %lu"
-#: sunrpc/clnt_perr.c:125
-msgid "; why = "
-msgstr "; tại vì = "
+#: sunrpc/clnt_perr.c:112
+#, c-format
+msgid "%s: %s; why = %s\n"
+msgstr "%s:%s; tại vì = %s\n"
-#: sunrpc/clnt_perr.c:132
+#: sunrpc/clnt_perr.c:114
#, c-format
-msgid "(unknown authentication error - %d)"
-msgstr "(không rõ lỗi xác thực - %d)"
+msgid "%s: %s; why = (unknown authentication error - %d)\n"
+msgstr "%s:%s; tại vì = (không rõ lỗi xác thực - %d)\n"
-#: sunrpc/clnt_perr.c:172
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Success"
msgstr "RPC: Thành công"
-#: sunrpc/clnt_perr.c:175
+#: sunrpc/clnt_perr.c:162
msgid "RPC: Can't encode arguments"
msgstr "RPC: Không thể mã hoá đối số"
-#: sunrpc/clnt_perr.c:179
+#: sunrpc/clnt_perr.c:166
msgid "RPC: Can't decode result"
msgstr "RPC: Không thể giải mã kết quả"
-#: sunrpc/clnt_perr.c:183
+#: sunrpc/clnt_perr.c:170
msgid "RPC: Unable to send"
msgstr "RPC: Không thể gửi"
-#: sunrpc/clnt_perr.c:187
+#: sunrpc/clnt_perr.c:174
msgid "RPC: Unable to receive"
msgstr "RPC: Không thể nhận"
-#: sunrpc/clnt_perr.c:191
+#: sunrpc/clnt_perr.c:178
msgid "RPC: Timed out"
msgstr "RPC: Quá hạn"
-#: sunrpc/clnt_perr.c:195
+#: sunrpc/clnt_perr.c:182
msgid "RPC: Incompatible versions of RPC"
msgstr "RPC: Các phiên bản RPC không tương thích với nhau"
-#: sunrpc/clnt_perr.c:199
+#: sunrpc/clnt_perr.c:186
msgid "RPC: Authentication error"
msgstr "RPC: Lỗi xác thực"
-#: sunrpc/clnt_perr.c:203
+#: sunrpc/clnt_perr.c:190
msgid "RPC: Program unavailable"
msgstr "RPC: Chương trình không sẵn sàng"
-#: sunrpc/clnt_perr.c:207
+#: sunrpc/clnt_perr.c:194
msgid "RPC: Program/version mismatch"
msgstr "RPC: Sai khớp chương trình và phiên bản"
-#: sunrpc/clnt_perr.c:211
+#: sunrpc/clnt_perr.c:198
msgid "RPC: Procedure unavailable"
msgstr "RPC: Thủ tục không sẵn sàng"
-#: sunrpc/clnt_perr.c:215
+#: sunrpc/clnt_perr.c:202
msgid "RPC: Server can't decode arguments"
msgstr "RPC: Trình phục vụ không thể giải mã đối số"
-#: sunrpc/clnt_perr.c:219
+#: sunrpc/clnt_perr.c:206
msgid "RPC: Remote system error"
msgstr "RPC: Lỗi hệ thống ở xa"
-#: sunrpc/clnt_perr.c:223
+#: sunrpc/clnt_perr.c:210
msgid "RPC: Unknown host"
msgstr "RPC: Máy lạ"
-#: sunrpc/clnt_perr.c:227
+#: sunrpc/clnt_perr.c:214
msgid "RPC: Unknown protocol"
msgstr "RPC: Không rõ giao thức"
-#: sunrpc/clnt_perr.c:231
+#: sunrpc/clnt_perr.c:218
msgid "RPC: Port mapper failure"
msgstr "RPC: Lỗi ánh xạ cổng"
-#: sunrpc/clnt_perr.c:235
+#: sunrpc/clnt_perr.c:222
msgid "RPC: Program not registered"
msgstr "RPC: Chưa đăng ký chương trình"
-#: sunrpc/clnt_perr.c:239
+#: sunrpc/clnt_perr.c:226
msgid "RPC: Failed (unspecified error)"
msgstr "RPC: Lỗi chưa xác định"
-#: sunrpc/clnt_perr.c:280
+#: sunrpc/clnt_perr.c:267
msgid "RPC: (unknown error code)"
msgstr "RPC: (mã lỗi không rõ)"
-#: sunrpc/clnt_perr.c:342
+#: sunrpc/clnt_perr.c:330
msgid "Authentication OK"
msgstr "Xác thực được"
-#: sunrpc/clnt_perr.c:345
+#: sunrpc/clnt_perr.c:333
msgid "Invalid client credential"
msgstr "Thông tin xác thực trình khách không hợp lệ"
-#: sunrpc/clnt_perr.c:349
+#: sunrpc/clnt_perr.c:337
msgid "Server rejected credential"
msgstr "Trình phục vụ đã từ chối thông tin xác thực"
-#: sunrpc/clnt_perr.c:353
+#: sunrpc/clnt_perr.c:341
msgid "Invalid client verifier"
msgstr "Äồ thẩm tra trình khách không hợp lệ"
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:345
msgid "Server rejected verifier"
msgstr "Trình phục vụ đã từ chối đồ thẩm tra"
-#: sunrpc/clnt_perr.c:361
+#: sunrpc/clnt_perr.c:349
msgid "Client credential too weak"
msgstr "Thông tin xác thực của trình khách quá yếu"
-#: sunrpc/clnt_perr.c:365
+#: sunrpc/clnt_perr.c:353
msgid "Invalid server verifier"
msgstr "Äồ thẩm tra trình phục vụ không hợp lệ"
-#: sunrpc/clnt_perr.c:369
+#: sunrpc/clnt_perr.c:357
msgid "Failed (unspecified error)"
msgstr "Lỗi chưa xác định"
@@ -4669,18 +4744,6 @@ msgstr "Lỗi chưa xác định"
msgid "clnt_raw.c: fatal header serialization error"
msgstr "clnt_raw.c: lá»—i nghiêm trá»ng khi xếp theo thứ tá»±"
-#: sunrpc/clnt_tcp.c:131
-msgid "clnttcp_create: out of memory\n"
-msgstr "clnttcp_create: tràn bộ nhớ\n"
-
-#: sunrpc/clnt_udp.c:139
-msgid "clntudp_create: out of memory\n"
-msgstr "clntudp_create: tràn bộ nhớ\n"
-
-#: sunrpc/clnt_unix.c:128
-msgid "clntunix_create: out of memory\n"
-msgstr "clntunix_create: tràn bộ nhớ\n"
-
#: sunrpc/pm_getmaps.c:83
msgid "pmap_getmaps.c: rpc problem"
msgstr "pmap_getmaps.c: lá»—i RPC"
@@ -4709,119 +4772,242 @@ msgstr "Vấn đỠthăm dò quảng bá"
msgid "Cannot receive reply to broadcast"
msgstr "Không thể nhận đáp ứng quảng bá"
-#: sunrpc/rpc_main.c:286
+#: sunrpc/rpc_main.c:290
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr "%s: kết xuất sẽ ghi đè lên %s\n"
-#: sunrpc/rpc_main.c:293
+#: sunrpc/rpc_main.c:297
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr "%s: không thể mở %s: %m\n"
-#: sunrpc/rpc_main.c:305
+#: sunrpc/rpc_main.c:309
#, c-format
msgid "%s: while writing output %s: %m"
msgstr "%s: khi ghi kết xuất %s: %m"
-#: sunrpc/rpc_main.c:340
+#: sunrpc/rpc_main.c:344
#, c-format
msgid "cannot find C preprocessor: %s \n"
msgstr "không tìm thấy bá»™ tiá»n xá»­ lý C: %s\n"
-#: sunrpc/rpc_main.c:348
+#: sunrpc/rpc_main.c:352
msgid "cannot find any C preprocessor (cpp)\n"
msgstr "không tìm thấy bá»™ tiá»n xá»­ lý C (cpp)\n"
-#: sunrpc/rpc_main.c:417
+#: sunrpc/rpc_main.c:421
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
msgstr "%s: bá»™ tiá»n xá»­ lý C bị lá»—i vá»›i tín hiệu %d\n"
-#: sunrpc/rpc_main.c:420
+#: sunrpc/rpc_main.c:424
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
msgstr "%s: bá»™ tiá»n xá»­ lý C bị lá»—i vá»›i mã thoát %d\n"
-#: sunrpc/rpc_main.c:460
+#: sunrpc/rpc_main.c:464
#, c-format
msgid "illegal nettype: `%s'\n"
msgstr "nettype cấm: « %s »\n"
-#: sunrpc/rpc_main.c:1122
+#: sunrpc/rpc_main.c:1130
#, c-format
msgid "rpcgen: too many defines\n"
msgstr "rpcgen: quá nhiá»u lần xác định\n"
-#: sunrpc/rpc_main.c:1134
+#: sunrpc/rpc_main.c:1142
#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr "rpcgen: lỗi mã hoá danh sách đối số\n"
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1167
+#: sunrpc/rpc_main.c:1175
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
msgstr "tập tin « %s » đã có và có thể được ghi đè\n"
-#: sunrpc/rpc_main.c:1212
+#: sunrpc/rpc_main.c:1220
#, c-format
msgid "Cannot specify more than one input file!\n"
msgstr "Không thể ghi rõ nhiá»u hÆ¡n má»™t tập tin nhập vào !\n"
-#: sunrpc/rpc_main.c:1382
+#: sunrpc/rpc_main.c:1394
+#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
msgstr "Bản thực hiện này không hỗ trợ mã kiểu mới hoặc mã an toàn với MT !\n"
-#: sunrpc/rpc_main.c:1391
+#: sunrpc/rpc_main.c:1403
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
msgstr "Không thể sư dụng cỠnetid với cỠinetd !\n"
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1415
+#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
msgstr "Không thể sư dụng cỠnetid khi không có TIRPC !\n"
-#: sunrpc/rpc_main.c:1410
+#: sunrpc/rpc_main.c:1422
+#, c-format
msgid "Cannot use table flags with newstyle!\n"
msgstr "Không thể sử dụng cỠbảng với mã kiểu mới !\n"
-#: sunrpc/rpc_main.c:1429
+#: sunrpc/rpc_main.c:1441
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
msgstr "« tập_tin_nhập » cần thiết cho cỠtạo mẫu.\n"
-#: sunrpc/rpc_main.c:1434
+#: sunrpc/rpc_main.c:1446
#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr "Không cho phép nhiá»u hÆ¡n má»™t cá» tạo tập tin !\n"
-#: sunrpc/rpc_main.c:1443
+#: sunrpc/rpc_main.c:1455
#, c-format
msgid "usage: %s infile\n"
msgstr "sử dụng: %s tập_tin_nhập\n"
-#: sunrpc/rpc_main.c:1444
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
msgstr "\t%s [-abkCLNTM][-Dname[=giá_trị]] [-i cỡ] [-I [-K giây]] [-Y Ä‘Æ°á»ng_dẫn] tập_tin_nhập\n"
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o tập_tin_xuất] [tập_tin_nhập]\n"
-#: sunrpc/rpc_main.c:1448
+#: sunrpc/rpc_main.c:1460
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
msgstr "\t%s [-s nettype]* [-o tập_tin_xuất] [tập_tin_nhập]\n"
-#: sunrpc/rpc_main.c:1449
+#: sunrpc/rpc_main.c:1461
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
msgstr "\t%s [-n netid]* [-o tập_tin_xuất] [tập_tin_nhập]\n"
+#: sunrpc/rpc_main.c:1469
+#, c-format
+msgid "options:\n"
+msgstr "tuỳ chá»n:\n"
+
+#: sunrpc/rpc_main.c:1470
+#, c-format
+msgid "-a\t\tgenerate all files, including samples\n"
+msgstr "-a\t\ttạo ra tất cả các tập tin, gồm có mẫu\n"
+
+#: sunrpc/rpc_main.c:1471
+#, c-format
+msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
+msgstr "-b\t\tchế Ä‘á»™ tÆ°Æ¡ng thích ngược (tạo ra mã cho hệ Ä‘iá»u hành SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1472
+#, c-format
+msgid "-c\t\tgenerate XDR routines\n"
+msgstr "-c\t\ttạo ra các hàm XDR\n"
+
+#: sunrpc/rpc_main.c:1473
+#, c-format
+msgid "-C\t\tANSI C mode\n"
+msgstr "-C\t\tchế độ ANSI C\n"
+
+#: sunrpc/rpc_main.c:1474
+#, c-format
+msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
+msgstr "-Dtên[=giá_trị]\txác định một ký hiệu (giống « #define »)\n"
+
+#: sunrpc/rpc_main.c:1475
+#, c-format
+msgid "-h\t\tgenerate header file\n"
+msgstr "-h\t\ttạo ra tập tin phần đầu\n"
+
+#: sunrpc/rpc_main.c:1476
+#, c-format
+msgid "-i size\t\tsize at which to start generating inline code\n"
+msgstr "-i cỡ\t\tkích cỡ ở đó cần băt đầu tạo ra mã trực tiếp\n"
+
+#: sunrpc/rpc_main.c:1477
+#, c-format
+msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
+msgstr "-l\t\ttạo ra mã cho há»— trợ inetd trong trình phục vụ (cho hệ Ä‘iá»u hành SunOS 4.1)\n"
+
+#: sunrpc/rpc_main.c:1478
+#, c-format
+msgid "-K seconds\tserver exits after K seconds of inactivity\n"
+msgstr "-K giây\ttrình phục vụ thoát sau K giây nghỉ\n"
+
+#: sunrpc/rpc_main.c:1479
+#, c-format
+msgid "-l\t\tgenerate client side stubs\n"
+msgstr "-l\t\ttạo ra mẩu bên ứng dụng khách\n"
+
+#: sunrpc/rpc_main.c:1480
+#, c-format
+msgid "-L\t\tserver errors will be printed to syslog\n"
+msgstr "-L\t\tcác lỗi trình phục vụ sẽ được in ra bản ghi hệ thống syslog\n"
+
+#: sunrpc/rpc_main.c:1481
+#, c-format
+msgid "-m\t\tgenerate server side stubs\n"
+msgstr "-m\t\ttạo ra mẩu bên trình phục vụ\n"
+
+#: sunrpc/rpc_main.c:1482
+#, c-format
+msgid "-M\t\tgenerate MT-safe code\n"
+msgstr "-M\t\ttạo ra mã an toàn với MT\n"
+
+#: sunrpc/rpc_main.c:1483
+#, c-format
+msgid "-n netid\tgenerate server code that supports named netid\n"
+msgstr "-n netid\ttạo ra mã trình phục vụ mà hỗ trợ netid đặt tên\n"
+
+#: sunrpc/rpc_main.c:1484
+#, c-format
+msgid "-N\t\tsupports multiple arguments and call-by-value\n"
+msgstr "-N\t\thá»— trợ nhiá»u đối số và gá»i-theo-giá_trị\n"
+
+#: sunrpc/rpc_main.c:1485
+#, c-format
+msgid "-o outfile\tname of the output file\n"
+msgstr "-o tập_tin_xuất\ttên của tập tin kết xuất\n"
+
+#: sunrpc/rpc_main.c:1486
+#, c-format
+msgid "-s nettype\tgenerate server code that supports named nettype\n"
+msgstr "-s nettype\ttạo ra mã trình phục vụ mà hỗ trợ nettype đặt tên\n"
+
+#: sunrpc/rpc_main.c:1487
+#, c-format
+msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
+msgstr "-Sc\t\ttạo ra mã ứng dụng khách mẫu mà sử dụng thủ tục từ xa\n"
+
+#: sunrpc/rpc_main.c:1488
+#, c-format
+msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
+msgstr "-Ss\t\ttạo ra mã trình phục vụ mẫu mà xác định thủ tục từ xa\n"
+
+#: sunrpc/rpc_main.c:1489
+#, c-format
+msgid "-Sm \t\tgenerate makefile template \n"
+msgstr "-Sm\t\ttạo ra mẫu makefile\n"
+
+#: sunrpc/rpc_main.c:1490
+#, c-format
+msgid "-t\t\tgenerate RPC dispatch table\n"
+msgstr "-t\t\ttạo ra bảng Ä‘iá»u vận RPC\n"
+
+#: sunrpc/rpc_main.c:1491
+#, c-format
+msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
+msgstr "-T\t\ttạo ra mã để há»— trợ bảng Ä‘iá»u vận RPC\n"
+
+#: sunrpc/rpc_main.c:1492
+#, c-format
+msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
+msgstr "-Y Ä‘Æ°á»ng_dẫn\ttên thÆ° mục để tìm bá»™ tiá»n xá»­ lý C (cpp)\n"
+
#: sunrpc/rpc_scan.c:114
msgid "constant or identifier expected"
msgstr "đợi bộ nhận diện hoặc hằng"
@@ -4842,79 +5028,79 @@ msgstr "chuỗi ký tự trống"
msgid "preprocessor error"
msgstr "lá»—i tiá»n xá»­ lý"
-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
#, c-format
msgid "program %lu is not available\n"
msgstr "chương trình %lu không sẵn sàng\n"
-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-#: sunrpc/rpcinfo.c:510
+#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
+#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
+#: sunrpc/rpcinfo.c:527
#, c-format
msgid "program %lu version %lu is not available\n"
msgstr "chương trình %lu phiên bản %lu không sẵn sàng\n"
-#: sunrpc/rpcinfo.c:515
+#: sunrpc/rpcinfo.c:532
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr "chương trình %lu phiên bản %lu sẵn sàng và đợi\n"
-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
msgid "rpcinfo: can't contact portmapper"
msgstr "rpcinfo: không thể liên lạc với portmapper"
-#: sunrpc/rpcinfo.c:570
+#: sunrpc/rpcinfo.c:587
msgid "No remote programs registered.\n"
msgstr "Không có chương trình ở xa đã đăng ký.\n"
-#: sunrpc/rpcinfo.c:574
+#: sunrpc/rpcinfo.c:591
msgid " program vers proto port\n"
msgstr " trình pbản gthức cổng\n"
-#: sunrpc/rpcinfo.c:613
+#: sunrpc/rpcinfo.c:630
msgid "(unknown)"
msgstr "(không rõ)"
-#: sunrpc/rpcinfo.c:637
+#: sunrpc/rpcinfo.c:654
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
msgstr "rpcinfo: lỗi quảng bá %s\n"
-#: sunrpc/rpcinfo.c:658
+#: sunrpc/rpcinfo.c:675
msgid "Sorry. You are not root\n"
msgstr "Tiếc là bạn không phải ngÆ°á»i chủ\n"
-#: sunrpc/rpcinfo.c:665
+#: sunrpc/rpcinfo.c:682
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
msgstr "rpcinfo: Không thể xoá sự đăng ký đối với chương trình %s phiên bản %s\n"
-#: sunrpc/rpcinfo.c:674
+#: sunrpc/rpcinfo.c:691
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
msgstr "Sử dụng: rpcinfo [ -n số_cổng ] -u máy số_chương_trình [ số_phiên_bản ]\n"
-#: sunrpc/rpcinfo.c:676
+#: sunrpc/rpcinfo.c:693
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr " rpcinfo [ -n số_cổng ] -t máy số_chương_trình [ số_phiên_bản ]\n"
-#: sunrpc/rpcinfo.c:678
+#: sunrpc/rpcinfo.c:695
msgid " rpcinfo -p [ host ]\n"
msgstr " rpcinfo -p [ máy ]\n"
-#: sunrpc/rpcinfo.c:679
+#: sunrpc/rpcinfo.c:696
msgid " rpcinfo -b prognum versnum\n"
msgstr " rpcinfo -b số_chương_trình số_phiên_bản\n"
-#: sunrpc/rpcinfo.c:680
+#: sunrpc/rpcinfo.c:697
msgid " rpcinfo -d prognum versnum\n"
msgstr " rpcinfo -d số_chương_trình số_phiên_bản\n"
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:722
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr "rpcinfo: %s là dịch vụ không rõ\n"
-#: sunrpc/rpcinfo.c:732
+#: sunrpc/rpcinfo.c:759
#, c-format
msgid "rpcinfo: %s is unknown host\n"
msgstr "rpcinfo: %s là máy không rõ\n"
@@ -4963,14 +5149,6 @@ msgstr "svc_tcp.c — vấn đỠtạo ổ cắm TCP"
msgid "svc_tcp.c - cannot getsockname or listen"
msgstr "svc_tcp.c — không thể getsockname (lấy tên ổ cắm) hoặc lắng nghe"
-#: sunrpc/svc_tcp.c:179
-msgid "svctcp_create: out of memory\n"
-msgstr "svctcp_create: tràn bộ nhớ\n"
-
-#: sunrpc/svc_tcp.c:218
-msgid "svc_tcp: makefd_xprt: out of memory\n"
-msgstr "svc_tcp: makefd_xprt: tràn bộ nhớ\n"
-
#: sunrpc/svc_udp.c:128
msgid "svcudp_create: socket creation problem"
msgstr "svcudp_create: vấn đỠtạo ổ cắm"
@@ -4979,39 +5157,35 @@ msgstr "svcudp_create: vấn đỠtạo ổ cắm"
msgid "svcudp_create - cannot getsockname"
msgstr "svcudp_create — không thể getsockname (lấy tên ổ cắm)"
-#: sunrpc/svc_udp.c:152
-msgid "svcudp_create: out of memory\n"
-msgstr "svcudp_create: tràn bộ nhớ\n"
-
-#: sunrpc/svc_udp.c:174
+#: sunrpc/svc_udp.c:175
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
msgstr "svcudp_create: xp_pad quá nhỠcho IP_PKTINFO\n"
-#: sunrpc/svc_udp.c:474
+#: sunrpc/svc_udp.c:475
msgid "enablecache: cache already enabled"
msgstr "enablecache: bộ nhớ tạm đã được hiệu lực"
-#: sunrpc/svc_udp.c:480
+#: sunrpc/svc_udp.c:481
msgid "enablecache: could not allocate cache"
msgstr "enablecache: không thể cấp phát bộ nhớ tạm"
-#: sunrpc/svc_udp.c:489
+#: sunrpc/svc_udp.c:490
msgid "enablecache: could not allocate cache data"
msgstr "enablecache: không thể cấp phát dữ liệu của bộ nhớ tạm"
-#: sunrpc/svc_udp.c:497
+#: sunrpc/svc_udp.c:498
msgid "enablecache: could not allocate cache fifo"
msgstr "enablecache: không thể cấp phát FIFO (vào trước, ra trước) của bộ nhớ tạm"
-#: sunrpc/svc_udp.c:532
+#: sunrpc/svc_udp.c:533
msgid "cache_set: victim not found"
msgstr "cache_set: không tìm thấy victim"
-#: sunrpc/svc_udp.c:543
+#: sunrpc/svc_udp.c:544
msgid "cache_set: victim alloc failed"
msgstr "cache_set: lỗi cấp phát victim"
-#: sunrpc/svc_udp.c:550
+#: sunrpc/svc_udp.c:551
msgid "cache_set: could not allocate new rpc_buffer"
msgstr "cache_set: không thể cấp phát bộ đệm RPC (rpc_buffer) mới"
@@ -5023,34 +5197,6 @@ msgstr "svc_unix.c — vấn đỠtạo ổ cắm AF_UNIX"
msgid "svc_unix.c - cannot getsockname or listen"
msgstr "svc_unix.c — không thể getsockname (lấy tên ổ cắm) hoặc lắng nghe"
-#: sunrpc/svc_unix.c:176
-msgid "svcunix_create: out of memory\n"
-msgstr "svcunix_create: tràn bộ nhớ\n"
-
-#: sunrpc/svc_unix.c:215
-msgid "svc_unix: makefd_xprt: out of memory\n"
-msgstr "svc_unix: makefd_xprt: tràn bộ nhớ\n"
-
-#: sunrpc/xdr.c:566
-msgid "xdr_bytes: out of memory\n"
-msgstr "xdr_bytes: tràn bộ nhớ\n"
-
-#: sunrpc/xdr.c:718
-msgid "xdr_string: out of memory\n"
-msgstr "xdr_string: tràn bộ nhớ\n"
-
-#: sunrpc/xdr_array.c:106
-msgid "xdr_array: out of memory\n"
-msgstr "xdr_array: tràn bộ nhớ\n"
-
-#: sunrpc/xdr_rec.c:156
-msgid "xdrrec_create: out of memory\n"
-msgstr "xdrrec_create: tràn bộ nhớ\n"
-
-#: sunrpc/xdr_ref.c:86
-msgid "xdr_reference: out of memory\n"
-msgstr "xdr_reference: tràn bộ nhớ\n"
-
#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
msgid "Hangup"
msgstr "Ngừng nói"
@@ -6112,76 +6258,85 @@ msgstr "%s là cho máy không rõ %d.\n"
msgid "makecontext: does not know how to handle more than 8 arguments\n"
msgstr "makecontext: không biết cách xá»­ lý nhiá»u hÆ¡n 8 đối số\n"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#: sysdeps/unix/sysv/linux/lddlibc4.c:61
+#, c-format
+msgid ""
+"Usage: lddlibc4 FILE\n"
+"\n"
+msgstr ""
+"Sử dụng: lddlibc4 TẬP_TIN\n"
+"\n"
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:82
#, c-format
msgid "cannot open `%s'"
msgstr "không thể mở « %s »"
-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#: sysdeps/unix/sysv/linux/lddlibc4.c:86
#, c-format
msgid "cannot read header from `%s'"
msgstr "không thể Ä‘á»c phần đầu từ « %s »"
-#: timezone/zdump.c:211
+#: timezone/zdump.c:210
msgid "lacks alphabetic at start"
msgstr "thiếu chữ cái ở đầu"
-#: timezone/zdump.c:213
+#: timezone/zdump.c:212
msgid "has fewer than 3 alphabetics"
msgstr "có ít hơn 3 chữ cái"
-#: timezone/zdump.c:215
+#: timezone/zdump.c:214
msgid "has more than 6 alphabetics"
msgstr "có nhiá»u hÆ¡n 6 chữ cái"
-#: timezone/zdump.c:223
+#: timezone/zdump.c:222
msgid "differs from POSIX standard"
msgstr "khác với tiêu chuẩn POSIX"
-#: timezone/zdump.c:229
+#: timezone/zdump.c:228
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
msgstr "%s: cảnh báo : múi giỠ« %s » viết tắt « %s » %s\n"
-#: timezone/zdump.c:280
+#: timezone/zdump.c:279
#, c-format
msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
msgstr "%s: sử dụng: %s [ --version ] [ -v ] [ -c [năm_trên,]năm_dưới ] tên_múi_giỠ...\n"
-#: timezone/zdump.c:297
+#: timezone/zdump.c:296
#, c-format
msgid "%s: wild -c argument %s\n"
msgstr "%s: đối số « -c » đại diện %s\n"
-#: timezone/zdump.c:388
+#: timezone/zdump.c:387
msgid "Error writing to standard output"
msgstr "Gặp lỗi khi ghi vào đầu ra tiêu chuẩn"
-#: timezone/zdump.c:411
+#: timezone/zdump.c:410
#, c-format
msgid "%s: use of -v on system with floating time_t other than float or double\n"
msgstr "%s: dùng « -v » trên hệ thống có time_t nổi khác với nổi hoặc đôi\n"
-#: timezone/zic.c:392
+#: timezone/zic.c:388
#, c-format
msgid "%s: Memory exhausted: %s\n"
msgstr "%s: Cạn bộ nhớ : %s\n"
-#: timezone/zic.c:451
+#: timezone/zic.c:434
#, c-format
msgid "\"%s\", line %d: %s"
msgstr "« %s », dòng %d: %s"
-#: timezone/zic.c:454
+#: timezone/zic.c:437
#, c-format
msgid " (rule from \"%s\", line %d)"
msgstr " (quy tắc từ « %s », dòng %d)"
-#: timezone/zic.c:466
+#: timezone/zic.c:449
msgid "warning: "
msgstr "cảnh báo : "
-#: timezone/zic.c:476
+#: timezone/zic.c:459
#, c-format
msgid ""
"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
@@ -6190,335 +6345,335 @@ msgstr ""
"%s: sá»­ dụng: %s [ --version ] [ -v ] [ -l giá»_địa_phÆ°Æ¡ng ] [ -p quy_tắc_POSIX ] \\\n"
"\t[ -d thư_mục ] [ -L giây_năm_nhuận ] [ -y kiểu_năm ] [ tên_tập_tin ... ]\n"
-#: timezone/zic.c:511
+#: timezone/zic.c:494
msgid "wild compilation-time specification of zic_t"
msgstr "đặc tả thá»i gian biên dịch đại diện của zic_t"
-#: timezone/zic.c:528
+#: timezone/zic.c:511
#, c-format
msgid "%s: More than one -d option specified\n"
msgstr "%s: Ghi rõ nhiá»u hÆ¡n má»™t tùy chá»n « -d »\n"
-#: timezone/zic.c:538
+#: timezone/zic.c:521
#, c-format
msgid "%s: More than one -l option specified\n"
msgstr "%s: Ghi rõ nhiá»u hÆ¡n má»™t tùy chá»n « -l »\n"
-#: timezone/zic.c:548
+#: timezone/zic.c:531
#, c-format
msgid "%s: More than one -p option specified\n"
msgstr "%s: Ghi rõ nhiá»u hÆ¡n má»™t tùy chá»n « -p »\n"
-#: timezone/zic.c:558
+#: timezone/zic.c:541
#, c-format
msgid "%s: More than one -y option specified\n"
msgstr "%s: Ghi rõ nhiá»u hÆ¡n má»™t tùy chá»n « -y »\n"
-#: timezone/zic.c:568
+#: timezone/zic.c:551
#, c-format
msgid "%s: More than one -L option specified\n"
msgstr "%s: Ghi rõ nhiá»u hÆ¡n má»™t tùy chá»n « -L »\n"
-#: timezone/zic.c:617
+#: timezone/zic.c:600
msgid "link to link"
msgstr "liên kết đến liên kết"
-#: timezone/zic.c:682
+#: timezone/zic.c:665
msgid "hard link failed, symbolic link used"
msgstr "lỗi cứng không thành công nên dùng liên kết tượng trưng"
-#: timezone/zic.c:690
+#: timezone/zic.c:673
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
msgstr "%s: không thể liên kết từ %s đến %s: %s\n"
-#: timezone/zic.c:762 timezone/zic.c:764
+#: timezone/zic.c:745 timezone/zic.c:747
msgid "same rule name in multiple files"
msgstr "nhiá»u tập tin chứa cùng má»™t tên quy tắc"
-#: timezone/zic.c:805
+#: timezone/zic.c:788
msgid "unruly zone"
msgstr "múi giỠphóng túng"
-#: timezone/zic.c:812
+#: timezone/zic.c:795
#, c-format
msgid "%s in ruleless zone"
msgstr "%s trong múi giỠkhông có quy tắc"
-#: timezone/zic.c:833
+#: timezone/zic.c:816
msgid "standard input"
msgstr "đầu vào tiêu chuẩn"
-#: timezone/zic.c:838
+#: timezone/zic.c:821
#, c-format
msgid "%s: Can't open %s: %s\n"
msgstr "%s: Không thể mở %s: %s\n"
-#: timezone/zic.c:849
+#: timezone/zic.c:832
msgid "line too long"
msgstr "dòng quá dài"
-#: timezone/zic.c:869
+#: timezone/zic.c:852
msgid "input line of unknown type"
msgstr "dòng nhập vào có kiểu không rõ"
-#: timezone/zic.c:885
+#: timezone/zic.c:868
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
msgstr "%s: dòng năm nhuận nằm trong tập tin giây không phải năm nhuận %s\n"
-#: timezone/zic.c:892 timezone/zic.c:1329 timezone/zic.c:1351
+#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
msgstr "%s: không thể phục hồi: giá trị l_value không hợp lệ %d\n"
-#: timezone/zic.c:900
+#: timezone/zic.c:883
#, c-format
msgid "%s: Error reading %s\n"
msgstr "%s: Lá»—i Ä‘á»c %s\n"
-#: timezone/zic.c:907
+#: timezone/zic.c:890
#, c-format
msgid "%s: Error closing %s: %s\n"
msgstr "%s: Lỗi đóng %s: %s\n"
-#: timezone/zic.c:912
+#: timezone/zic.c:895
msgid "expected continuation line not found"
msgstr "không tìm thấy Ä‘Æ°á»ng tiếp tục mong đợi"
-#: timezone/zic.c:956 timezone/zic.c:2489 timezone/zic.c:2508
+#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
msgid "time overflow"
msgstr "tràn thá»i gian"
-#: timezone/zic.c:960
+#: timezone/zic.c:943
msgid "24:00 not handled by pre-1998 versions of zic"
msgstr "24:00 không được xử lý bởi phiên bản zlc trước năm 1998"
-#: timezone/zic.c:963
+#: timezone/zic.c:946
msgid "values over 24 hours not handled by pre-2007 versions of zic"
msgstr "giá trị nhiá»u hÆ¡n 24 giá» không được xá»­ lý bởi phiên bản zlc trÆ°á»›c năm 2007"
-#: timezone/zic.c:976
+#: timezone/zic.c:959
msgid "wrong number of fields on Rule line"
msgstr "số trÆ°á»ng không đúng trên dòng Quy tắc (Rule)"
-#: timezone/zic.c:980
+#: timezone/zic.c:963
msgid "nameless rule"
msgstr "quy tắc không tên"
-#: timezone/zic.c:985
+#: timezone/zic.c:968
msgid "invalid saved time"
msgstr "thá»i gian đã lÆ°u không hợp lệ"
-#: timezone/zic.c:1006
+#: timezone/zic.c:989
msgid "wrong number of fields on Zone line"
msgstr "số trÆ°á»ng không đúng trên dòng Múi Giá» (Zone)"
-#: timezone/zic.c:1012
+#: timezone/zic.c:995
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
msgstr "Dòng « Zone %s » và tùy chá»n « -l » loại từ lẫn nhau"
-#: timezone/zic.c:1020
+#: timezone/zic.c:1003
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
msgstr "Dòng « Zone %s » và tùy chá»n « -p » loại từ lẫn nhau"
-#: timezone/zic.c:1032
+#: timezone/zic.c:1015
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
msgstr "tên múi giỠtrùng %s (tập tin « %s », dòng %d)"
-#: timezone/zic.c:1048
+#: timezone/zic.c:1031
msgid "wrong number of fields on Zone continuation line"
msgstr "số trÆ°á»ng không đúng trên dòng tiếp tục Múi Giá» (Zone)"
-#: timezone/zic.c:1088
+#: timezone/zic.c:1071
msgid "invalid UTC offset"
msgstr "khoảng bù UTC không hợp lệ"
-#: timezone/zic.c:1091
+#: timezone/zic.c:1074
msgid "invalid abbreviation format"
msgstr "định dạng viết tắt không hợp lệ"
-#: timezone/zic.c:1120
+#: timezone/zic.c:1103
msgid "Zone continuation line end time is not after end time of previous line"
msgstr "GiỠkết thúc dòng tiếp tục Múi GiỠkhông nằm sau giỠkết thúc của dòng trước"
-#: timezone/zic.c:1148
+#: timezone/zic.c:1131
msgid "wrong number of fields on Leap line"
msgstr "số trÆ°á»ng không đúng trên dòng Leap (năm nhuận)"
-#: timezone/zic.c:1157
+#: timezone/zic.c:1140
msgid "invalid leaping year"
msgstr "năm nhuận không hợp lệ"
-#: timezone/zic.c:1177 timezone/zic.c:1283
+#: timezone/zic.c:1160 timezone/zic.c:1266
msgid "invalid month name"
msgstr "tên tháng không hợp lệ"
-#: timezone/zic.c:1190 timezone/zic.c:1396 timezone/zic.c:1410
+#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
msgid "invalid day of month"
msgstr "ngày tháng không hợp lệ"
-#: timezone/zic.c:1195
+#: timezone/zic.c:1178
msgid "time before zero"
msgstr "thá»i gian nằm trÆ°á»›c số không"
-#: timezone/zic.c:1199
+#: timezone/zic.c:1182
msgid "time too small"
msgstr "thá»i gian quá nhá»"
-#: timezone/zic.c:1203
+#: timezone/zic.c:1186
msgid "time too large"
msgstr "thá»i gian quá lá»›n"
-#: timezone/zic.c:1207 timezone/zic.c:1312
+#: timezone/zic.c:1190 timezone/zic.c:1295
msgid "invalid time of day"
msgstr "giỠngày không hợp lệ"
-#: timezone/zic.c:1226
+#: timezone/zic.c:1209
msgid "illegal CORRECTION field on Leap line"
msgstr "trÆ°á»ng CORRECTION (sá»­a lá»—i) cấm trên dòng Leap (năm nhuận)"
-#: timezone/zic.c:1231
+#: timezone/zic.c:1214
msgid "illegal Rolling/Stationary field on Leap line"
msgstr "trÆ°á»ng Rolling/Stationary (Ä‘ang lăn/không di chuyển) cấm trên dòng Leap (năm nhuận)"
-#: timezone/zic.c:1247
+#: timezone/zic.c:1230
msgid "wrong number of fields on Link line"
msgstr "số trÆ°á»ng không đúng trên dòng Link (liên kết)"
-#: timezone/zic.c:1251
+#: timezone/zic.c:1234
msgid "blank FROM field on Link line"
msgstr "trÆ°á»ng FROM (từ) rá»—ng trên dòng Link (liên kết)"
-#: timezone/zic.c:1255
+#: timezone/zic.c:1238
msgid "blank TO field on Link line"
msgstr "trÆ°á»ng TO (đến) rá»—ng trên dòng Link (liên kết)"
-#: timezone/zic.c:1333
+#: timezone/zic.c:1316
msgid "invalid starting year"
msgstr "năm bắt đầu không hợp lệ"
-#: timezone/zic.c:1355
+#: timezone/zic.c:1338
msgid "invalid ending year"
msgstr "năm kết thúc không hợp lệ"
-#: timezone/zic.c:1359
+#: timezone/zic.c:1342
msgid "starting year greater than ending year"
msgstr "năm bắt đầu nằm sau nằm kết thúc"
-#: timezone/zic.c:1366
+#: timezone/zic.c:1349
msgid "typed single year"
msgstr "đã gõ năm riêng lẻ"
-#: timezone/zic.c:1401
+#: timezone/zic.c:1384
msgid "invalid weekday name"
msgstr "tên ngày tuần không hợp lệ"
-#: timezone/zic.c:1579
+#: timezone/zic.c:1562
#, c-format
msgid "%s: Can't remove %s: %s\n"
msgstr "%s: Không thể gỡ bỠ%s: %s\n"
-#: timezone/zic.c:1589
+#: timezone/zic.c:1572
#, c-format
msgid "%s: Can't create %s: %s\n"
msgstr "%s: Không thể tạo %s: %s\n"
-#: timezone/zic.c:1739
+#: timezone/zic.c:1722
#, c-format
msgid "%s: Error writing %s\n"
msgstr "%s: Lá»—i ghi %s\n"
-#: timezone/zic.c:2031
+#: timezone/zic.c:2015
msgid "no POSIX environment variable for zone"
msgstr "chÆ°a đặt biến môi trÆ°á»ng POSIX cho múi giá»"
-#: timezone/zic.c:2185
+#: timezone/zic.c:2172
msgid "can't determine time zone abbreviation to use just after until time"
msgstr "không thể quyết định từ viết tắt múi giá» cần dùng đúng sau thá»i gian đích đến"
-#: timezone/zic.c:2231
+#: timezone/zic.c:2218
msgid "too many transitions?!"
msgstr "quá nhiá»u lần chuyển tiếp ?!"
-#: timezone/zic.c:2250
+#: timezone/zic.c:2237
msgid "internal error - addtype called with bad isdst"
msgstr "gặp lá»—i ná»™i bá»™ — addtype (thêm loại) được gá»i vá»›i isdst sai"
-#: timezone/zic.c:2254
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad ttisstd"
msgstr "gặp lá»—i ná»™i bá»™ — addtype (thêm loại) được gá»i vá»›i ttisstd sai"
-#: timezone/zic.c:2258
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisgmt"
msgstr "gặp lá»—i ná»™i bá»™ — addtype (thêm loại) được gá»i vá»›i ttisgmt sai"
-#: timezone/zic.c:2277
+#: timezone/zic.c:2264
msgid "too many local time types"
msgstr "quá nhiá»u kiểu thá»i gian địa phÆ°Æ¡ng"
-#: timezone/zic.c:2281
+#: timezone/zic.c:2268
msgid "UTC offset out of range"
msgstr "khoảng bù UTC ở ngoại phạm vi"
-#: timezone/zic.c:2309
+#: timezone/zic.c:2296
msgid "too many leap seconds"
msgstr "quá nhiá»u giây năm nhuận"
-#: timezone/zic.c:2315
+#: timezone/zic.c:2302
msgid "repeated leap second moment"
msgstr "lúc giây năm nhuận đã lặp lại"
-#: timezone/zic.c:2367
+#: timezone/zic.c:2354
msgid "Wild result from command execution"
msgstr "Kết quả rất lạ khi thực hiện câu lệnh"
-#: timezone/zic.c:2368
+#: timezone/zic.c:2355
#, c-format
msgid "%s: command was '%s', result was %d\n"
msgstr "%s: câu lệnh là « %s », kết quả là %d\n"
-#: timezone/zic.c:2466
+#: timezone/zic.c:2453
msgid "Odd number of quotation marks"
msgstr "Số lẻ các dấu trích dẫn"
-#: timezone/zic.c:2555
+#: timezone/zic.c:2542
msgid "use of 2/29 in non leap-year"
msgstr "dùng 2/29 trong năm không phải năm nhuận"
-#: timezone/zic.c:2590
+#: timezone/zic.c:2577
msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
msgstr "quy tắc vượt quá kết thúc của tháng nên không hoạt động được với phiên bản zlc được phát hành trước năm 2004"
-#: timezone/zic.c:2622
+#: timezone/zic.c:2609
msgid "time zone abbreviation lacks alphabetic at start"
msgstr "từ viết tắt múi giỠthiếu chữ cái ở đầu"
-#: timezone/zic.c:2624
+#: timezone/zic.c:2611
msgid "time zone abbreviation has more than 3 alphabetics"
msgstr "từ viết tắt múi giá» chứa nhiá»u hÆ¡n 3 chữ cái"
-#: timezone/zic.c:2626
+#: timezone/zic.c:2613
msgid "time zone abbreviation has too many alphabetics"
msgstr "từ viết tắt múi giá» chứa quá nhiá»u chữ cái"
-#: timezone/zic.c:2636
+#: timezone/zic.c:2623
msgid "time zone abbreviation differs from POSIX standard"
msgstr "từ viết tắt múi giỠkhông tùy theo tiêu chuẩn POSIX"
-#: timezone/zic.c:2648
+#: timezone/zic.c:2635
msgid "too many, or too long, time zone abbreviations"
msgstr "quá nhiá»u hoặc quá dài các từ viết tắt múi giá»"
-#: timezone/zic.c:2689
+#: timezone/zic.c:2676
#, c-format
msgid "%s: Can't create directory %s: %s\n"
msgstr "%s: Không thể tạo thư mục %s: %s\n"
-#: timezone/zic.c:2711
+#: timezone/zic.c:2698
#, c-format
msgid "%s: %d did not sign extend correctly\n"
msgstr "%s: %d chưa ký đúng đồ kéo dài\n"
diff --git a/posix/.cvsignore b/posix/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/posix/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/posix/Makefile b/posix/Makefile
index c904636411..2a467a8f7b 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-1999, 2000-2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 1991-1999, 2000-2006, 2007, 2009 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
@@ -43,7 +43,7 @@ routines := \
wait waitpid wait3 wait4 waitid \
alarm sleep pause nanosleep \
fork vfork _exit \
- execve fexecve execv execle execl execvp execlp \
+ execve fexecve execv execle execl execvp execlp execvpe \
getpid getppid \
getuid geteuid getgid getegid getgroups setuid setgid group_member \
getpgid setpgid getpgrp bsd-getpgrp setpgrp getsid setsid \
@@ -82,6 +82,7 @@ tests := tstgetopt testfnm runtests runptests \
bug-regex17 bug-regex18 bug-regex19 bug-regex20 \
bug-regex21 bug-regex22 bug-regex23 bug-regex24 \
bug-regex25 bug-regex26 bug-regex27 bug-regex28 \
+ bug-regex29 bug-regex30 \
tst-nice tst-nanosleep tst-regex2 \
transbug tst-rxspencer tst-pcre tst-boost \
bug-ga1 tst-vfork1 tst-vfork2 tst-vfork3 tst-waitid \
@@ -194,6 +195,7 @@ bug-regex22-ENV = LOCPATH=$(common-objpfx)localedata
bug-regex23-ENV = LOCPATH=$(common-objpfx)localedata
bug-regex25-ENV = LOCPATH=$(common-objpfx)localedata
bug-regex26-ENV = LOCPATH=$(common-objpfx)localedata
+bug-regex30-ENV = LOCPATH=$(common-objpfx)localedata
tst-rxspencer-ARGS = --utf8 rxspencer/tests
tst-rxspencer-ENV = LOCPATH=$(common-objpfx)localedata
tst-pcre-ARGS = PCRE.tests
@@ -304,7 +306,11 @@ $(inst_libexecdir)/getconf: $(inst_bindir)/getconf \
$(objpfx)getconf.speclist: $(objpfx)getconf
ifeq (no,$(cross-compiling))
LC_ALL=C GETCONF_DIR=/dev/null \
- $(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS > $@.new
+ $(run-program-prefix) $< _POSIX_V7_WIDTH_RESTRICTED_ENVS > $@.new
+ LC_ALL=C GETCONF_DIR=/dev/null \
+ $(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS >> $@.new
+ LC_ALL=C GETCONF_DIR=/dev/null \
+ $(run-program-prefix) $< _XBS5_WIDTH_RESTRICTED_ENVS >> $@.new
else
> $@.new
endif
diff --git a/posix/Versions b/posix/Versions
index f73ff4a85a..686c446bcd 100644
--- a/posix/Versions
+++ b/posix/Versions
@@ -128,6 +128,12 @@ libc {
GLIBC_2.7 {
__sched_cpualloc; __sched_cpufree;
}
+ GLIBC_2.10 {
+ __posix_getopt;
+ }
+ GLIBC_2.11 {
+ execvpe;
+ }
GLIBC_PRIVATE {
__libc_fork; __libc_pwrite;
}
diff --git a/posix/bits/posix1_lim.h b/posix/bits/posix1_lim.h
index 71c58f7605..a0eb4329cb 100644
--- a/posix/bits/posix1_lim.h
+++ b/posix/bits/posix1_lim.h
@@ -87,9 +87,11 @@
# define _POSIX_OPEN_MAX 16
#endif
+#if !defined __USE_XOPEN2K || defined __USE_GNU
/* Number of descriptors that a process may examine with `pselect' or
`select'. */
-#define _POSIX_FD_SETSIZE _POSIX_OPEN_MAX
+# define _POSIX_FD_SETSIZE _POSIX_OPEN_MAX
+#endif
/* Number of bytes in a pathname. */
#define _POSIX_PATH_MAX 256
@@ -135,15 +137,17 @@
/* Maximum length of a timezone name (element of `tzname'). */
#define _POSIX_TZNAME_MAX 6
+#if !defined __USE_XOPEN2K || defined __USE_GNU
/* Maximum number of connections that can be queued on a socket. */
-#define _POSIX_QLIMIT 1
+# define _POSIX_QLIMIT 1
/* Maximum number of bytes that can be buffered on a socket for send
or receive. */
-#define _POSIX_HIWAT _POSIX_PIPE_BUF
+# define _POSIX_HIWAT _POSIX_PIPE_BUF
/* Maximum number of elements in an `iovec' array. */
-#define _POSIX_UIO_MAXIOV 16
+# define _POSIX_UIO_MAXIOV 16
+#endif
/* Maximum clock resolution in nanoseconds. */
#define _POSIX_CLOCKRES_MIN 20000000
diff --git a/posix/bug-regex17.c b/posix/bug-regex17.c
index b42f9b6c12..1c11a1d98d 100644
--- a/posix/bug-regex17.c
+++ b/posix/bug-regex17.c
@@ -1,5 +1,5 @@
-/* Turkish regular expression tests.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* German regular expression tests.
+ Copyright (C) 2002, 2003, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
@@ -33,10 +33,10 @@ struct
int flags, nmatch;
regmatch_t rm[5];
} tests[] = {
- /* \xc3\x84 LATIN CAPITAL LETTER A WITH DIAERESIS
- \xc3\x96 LATIN CAPITAL LETTER O WITH DIAERESIS
- \xc3\xa4 LATIN SMALL LETTER A WITH DIAERESIS
- \xc3\xb6 LATIN SMALL LETTER O WITH DIAERESIS */
+ /* U+00C4 \xc3\x84 LATIN CAPITAL LETTER A WITH DIAERESIS
+ U+00D6 \xc3\x96 LATIN CAPITAL LETTER O WITH DIAERESIS
+ U+00E4 \xc3\xa4 LATIN SMALL LETTER A WITH DIAERESIS
+ U+00F6 \xc3\xb6 LATIN SMALL LETTER O WITH DIAERESIS */
{ "\xc3\x84\xc3\x96*\xc3\xb6$", "aB\xc3\xa4\xc3\xb6\xc3\xb6\xc3\x96", REG_ICASE, 2,
{ { 2, 10 }, { -1, -1 } } },
{ "[\xc3\x84x]\xc3\x96*\xc3\xb6$", "aB\xc3\x84\xc3\xb6\xc3\xb6\xc3\x96", REG_ICASE, 2,
@@ -45,10 +45,22 @@ struct
{ { 2, 10 }, { -1, -1 } } },
{ "[^x]\xc3\x96*\xc3\xb6$", "aB\xc3\xa4\xc3\xb6\xc3\xb6\xc3\x96", REG_ICASE, 2,
{ { 2, 10 }, { -1, -1 } } },
+
+ /* Tests for bug 9697:
+ U+00DF \xc3\x9f LATIN SMALL LETTER SHARP S
+ U+02DA \xcb\x9a RING ABOVE
+ U+02E2 \xcb\xa2 MODIFIER LETTER SMALL S */
+ { "[a-z]|[^a-z]", "\xcb\xa2", REG_EXTENDED, 2,
+ { { 0, 2 }, { -1, -1 } } },
+ { "[a-z]", "\xc3\x9f", REG_EXTENDED, 2,
+ { { 0, 2 }, { -1, -1 } } },
+ { "[^a-z]", "\xcb\x9a", REG_EXTENDED, 2,
+ { { 0, 2 }, { -1, -1 } } },
};
-int
-main (void)
+
+static int
+do_test (void)
{
regex_t re;
regmatch_t rm[5];
@@ -93,3 +105,6 @@ main (void)
return ret;
}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/bug-regex29.c b/posix/bug-regex29.c
new file mode 100644
index 0000000000..cfc9f99dbc
--- /dev/null
+++ b/posix/bug-regex29.c
@@ -0,0 +1,23 @@
+#include <regex.h>
+#include <stdio.h>
+
+static int
+do_test (void)
+{
+ regex_t r;
+ int e = regcomp(&r, "xy\\{4,5,7\\}zabc", 0);
+ char buf[100];
+ regerror(e, &r, buf, sizeof (buf));
+ printf ("e = %d (%s)\n", e, buf);
+ int res = e != REG_BADBR;
+
+ e = regcomp(&r, "xy\\{4,5a\\}zabc", 0);
+ regerror(e, &r, buf, sizeof (buf));
+ printf ("e = %d (%s)\n", e, buf);
+ res |= e != REG_BADBR;
+
+ return res;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/bug-regex30.c b/posix/bug-regex30.c
new file mode 100644
index 0000000000..43df64d9d3
--- /dev/null
+++ b/posix/bug-regex30.c
@@ -0,0 +1,103 @@
+/* Russian regular expression tests.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Paolo Bonzini <pbonzini@redhat.com>, 2009.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sys/types.h>
+#include <mcheck.h>
+#include <regex.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <locale.h>
+
+/* Tests supposed to match. */
+struct
+{
+ const char *pattern;
+ const char *string;
+ int flags, nmatch;
+ regmatch_t rm[5];
+} tests[] = {
+ /* U+0413 \xd0\x93 CYRILLIC CAPITAL LETTER GHE
+ U+0420 \xd0\xa0 CYRILLIC CAPITAL LETTER ER
+ U+0430 \xd0\xb0 CYRILLIC SMALL LETTER A
+ U+0433 \xd0\xb3 CYRILLIC SMALL LETTER GHE
+ U+0440 \xd1\x80 CYRILLIC SMALL LETTER ER
+ U+044F \xd1\x8f CYRILLIC SMALL LETTER YA */
+ { "[\xd0\xb0-\xd1\x8f]", "\xd0\xb3", 0, 1,
+ { { 0, 2 } } },
+ { "[\xd0\xb0-\xd1\x8f]", "\xd0\x93", REG_ICASE, 1,
+ { { 0, 2 } } },
+ { "[\xd1\x80-\xd1\x8f]", "\xd0\xa0", REG_ICASE, 1,
+ { { 0, 2 } } },
+};
+
+
+static int
+do_test (void)
+{
+ if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL)
+ {
+ puts ("setlocale failed");
+ return 1;
+ }
+
+ int ret = 0;
+
+ for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i)
+ {
+ regex_t re;
+ regmatch_t rm[5];
+ int n = regcomp (&re, tests[i].pattern, tests[i].flags);
+ if (n != 0)
+ {
+ char buf[500];
+ regerror (n, &re, buf, sizeof (buf));
+ printf ("regcomp %zd failed: %s\n", i, buf);
+ ret = 1;
+ continue;
+ }
+
+ if (regexec (&re, tests[i].string, tests[i].nmatch, rm, 0))
+ {
+ printf ("regexec %zd failed\n", i);
+ ret = 1;
+ regfree (&re);
+ continue;
+ }
+
+ for (n = 0; n < tests[i].nmatch; ++n)
+ if (rm[n].rm_so != tests[i].rm[n].rm_so
+ || rm[n].rm_eo != tests[i].rm[n].rm_eo)
+ {
+ if (tests[i].rm[n].rm_so == -1 && tests[i].rm[n].rm_eo == -1)
+ break;
+ printf ("regexec match failure rm[%d] %d..%d\n",
+ n, rm[n].rm_so, rm[n].rm_eo);
+ ret = 1;
+ break;
+ }
+
+ regfree (&re);
+ }
+
+ return ret;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/confstr.c b/posix/confstr.c
index 26b0fa875b..5553f4b28a 100644
--- a/posix/confstr.c
+++ b/posix/confstr.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 1991, 1996, 1997, 2000-2002, 2003, 2004
- Free Software Foundation, Inc.
+/* Copyright (C) 1991,1996,1997,2000-2004,2009,2010 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
@@ -46,6 +46,69 @@ confstr (name, buf, len)
}
break;
+ case _CS_V7_WIDTH_RESTRICTED_ENVS:
+ /* We have to return a newline-separated list of named of
+ programming environements in which the widths of blksize_t,
+ cc_t, mode_t, nfds_t, pid_t, ptrdiff_t, size_t, speed_t,
+ ssize_t, suseconds_t, tcflag_t, useconds_t, wchar_t, and
+ wint_t types are no greater than the width of type long.
+
+ Currently this means all environment which the system allows. */
+ {
+ char restenvs[4 * sizeof "POSIX_V7_LPBIG_OFFBIG"];
+
+ string_len = 0;
+#ifndef _POSIX_V7_ILP32_OFF32
+ if (__sysconf (_SC_V7_ILP32_OFF32) > 0)
+#endif
+#if !defined _POSIX_V7_ILP32_OFF32 || _POSIX_V7_ILP32_OFF32 > 0
+ {
+ memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFF32",
+ sizeof "POSIX_V7_ILP32_OFF32" - 1);
+ string_len += sizeof "POSIX_V7_ILP32_OFF32" - 1;
+ }
+#endif
+#ifndef _POSIX_V7_ILP32_OFFBIG
+ if (__sysconf (_SC_V7_ILP32_OFFBIG) > 0)
+#endif
+#if !defined _POSIX_V7_ILP32_OFFBIG || _POSIX_V7_ILP32_OFFBIG > 0
+ {
+ if (string_len)
+ restenvs[string_len++] = '\n';
+ memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFFBIG",
+ sizeof "POSIX_V7_ILP32_OFFBIG" - 1);
+ string_len += sizeof "POSIX_V7_ILP32_OFFBIG" - 1;
+ }
+#endif
+#ifndef _POSIX_V7_LP64_OFF64
+ if (__sysconf (_SC_V7_LP64_OFF64) > 0)
+#endif
+#if !defined _POSIX_V7_LP64_OFF64 || _POSIX_V7_LP64_OFF64 > 0
+ {
+ if (string_len)
+ restenvs[string_len++] = '\n';
+ memcpy (restenvs + string_len, "POSIX_V7_LP64_OFF64",
+ sizeof "POSIX_V7_LP64_OFF64" - 1);
+ string_len += sizeof "POSIX_V7_LP64_OFF64" - 1;
+ }
+#endif
+#ifndef _POSIX_V7_LPBIG_OFFBIG
+ if (__sysconf (_SC_V7_LPBIG_OFFBIG) > 0)
+#endif
+#if !defined _POSIX_V7_LPBIG_OFFBIG || _POSIX_V7_LPBIG_OFFBIG > 0
+ {
+ if (string_len)
+ restenvs[string_len++] = '\n';
+ memcpy (restenvs + string_len, "POSIX_V7_LPBIG_OFFBIG",
+ sizeof "POSIX_V7_LPBIG_OFFBIG" - 1);
+ string_len += sizeof "POSIX_V7_LPBIG_OFFBIG" - 1;
+ }
+#endif
+ restenvs[string_len++] = '\0';
+ string = restenvs;
+ }
+ break;
+
case _CS_V6_WIDTH_RESTRICTED_ENVS:
/* We have to return a newline-separated list of named of
programming environements in which the widths of blksize_t,
@@ -59,64 +122,128 @@ confstr (name, buf, len)
string_len = 0;
#ifndef _POSIX_V6_ILP32_OFF32
- if (__sysconf (_SC_V6_ILP32_OFF32) > 0)
+ if (__sysconf (_SC_V6_ILP32_OFF32) > 0)
#endif
#if !defined _POSIX_V6_ILP32_OFF32 || _POSIX_V6_ILP32_OFF32 > 0
- {
- memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFF32",
- sizeof "POSIX_V6_ILP32_OFF32" - 1);
- string_len += sizeof "POSIX_V6_ILP32_OFF32" - 1;
- }
+ {
+ memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFF32",
+ sizeof "POSIX_V6_ILP32_OFF32" - 1);
+ string_len += sizeof "POSIX_V6_ILP32_OFF32" - 1;
+ }
#endif
#ifndef _POSIX_V6_ILP32_OFFBIG
- if (__sysconf (_SC_V6_ILP32_OFFBIG) > 0)
+ if (__sysconf (_SC_V6_ILP32_OFFBIG) > 0)
#endif
#if !defined _POSIX_V6_ILP32_OFFBIG || _POSIX_V6_ILP32_OFFBIG > 0
- {
- if (string_len)
- restenvs[string_len++] = '\n';
- memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFFBIG",
- sizeof "POSIX_V6_ILP32_OFFBIG" - 1);
- string_len += sizeof "POSIX_V6_ILP32_OFFBIG" - 1;
- }
+ {
+ if (string_len)
+ restenvs[string_len++] = '\n';
+ memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFFBIG",
+ sizeof "POSIX_V6_ILP32_OFFBIG" - 1);
+ string_len += sizeof "POSIX_V6_ILP32_OFFBIG" - 1;
+ }
#endif
#ifndef _POSIX_V6_LP64_OFF64
- if (__sysconf (_SC_V6_LP64_OFF64) > 0)
+ if (__sysconf (_SC_V6_LP64_OFF64) > 0)
#endif
#if !defined _POSIX_V6_LP64_OFF64 || _POSIX_V6_LP64_OFF64 > 0
- {
- if (string_len)
- restenvs[string_len++] = '\n';
- memcpy (restenvs + string_len, "POSIX_V6_LP64_OFF64",
- sizeof "POSIX_V6_LP64_OFF64" - 1);
- string_len += sizeof "POSIX_V6_LP64_OFF64" - 1;
- }
+ {
+ if (string_len)
+ restenvs[string_len++] = '\n';
+ memcpy (restenvs + string_len, "POSIX_V6_LP64_OFF64",
+ sizeof "POSIX_V6_LP64_OFF64" - 1);
+ string_len += sizeof "POSIX_V6_LP64_OFF64" - 1;
+ }
#endif
#ifndef _POSIX_V6_LPBIG_OFFBIG
- if (__sysconf (_SC_V6_LPBIG_OFFBIG) > 0)
+ if (__sysconf (_SC_V6_LPBIG_OFFBIG) > 0)
#endif
#if !defined _POSIX_V6_LPBIG_OFFBIG || _POSIX_V6_LPBIG_OFFBIG > 0
- {
- if (string_len)
- restenvs[string_len++] = '\n';
- memcpy (restenvs + string_len, "POSIX_V6_LPBIG_OFFBIG",
- sizeof "POSIX_V6_LPBIG_OFFBIG" - 1);
- string_len += sizeof "POSIX_V6_LPBIG_OFFBIG" - 1;
- }
-#endif
- restenvs[string_len++] = '\0';
+ {
+ if (string_len)
+ restenvs[string_len++] = '\n';
+ memcpy (restenvs + string_len, "POSIX_V6_LPBIG_OFFBIG",
+ sizeof "POSIX_V6_LPBIG_OFFBIG" - 1);
+ string_len += sizeof "POSIX_V6_LPBIG_OFFBIG" - 1;
+ }
+#endif
+ restenvs[string_len++] = '\0';
+ string = restenvs;
+ }
+ break;
+
+ case _CS_V5_WIDTH_RESTRICTED_ENVS:
+ /* We have to return a newline-separated list of named of
+ programming environements in which the widths of blksize_t,
+ cc_t, mode_t, nfds_t, pid_t, ptrdiff_t, size_t, speed_t,
+ ssize_t, suseconds_t, tcflag_t, useconds_t, wchar_t, and
+ wint_t types are no greater than the width of type long.
+
+ Currently this means all environment which the system allows. */
+ {
+ char restenvs[4 * sizeof "XBS5_LPBIG_OFFBIG"];
+
+ string_len = 0;
+#ifndef _XBS5_ILP32_OFF32
+ if (__sysconf (_SC_XBS5_ILP32_OFF32) > 0)
+#endif
+#if !defined _XBS5_ILP32_OFF32 || _XBS5_ILP32_OFF32 > 0
+ {
+ memcpy (restenvs + string_len, "XBS5_ILP32_OFF32",
+ sizeof "XBS5_ILP32_OFF32" - 1);
+ string_len += sizeof "XBS5_ILP32_OFF32" - 1;
+ }
+#endif
+#ifndef _XBS5_ILP32_OFFBIG
+ if (__sysconf (_SC_XBS5_ILP32_OFFBIG) > 0)
+#endif
+#if !defined _XBS5_ILP32_OFFBIG || _XBS5_ILP32_OFFBIG > 0
+ {
+ if (string_len)
+ restenvs[string_len++] = '\n';
+ memcpy (restenvs + string_len, "XBS5_ILP32_OFFBIG",
+ sizeof "XBS5_ILP32_OFFBIG" - 1);
+ string_len += sizeof "XBS5_ILP32_OFFBIG" - 1;
+ }
+#endif
+#ifndef _XBS5_LP64_OFF64
+ if (__sysconf (_SC_XBS5_LP64_OFF64) > 0)
+#endif
+#if !defined _XBS5_LP64_OFF64 || _XBS5_LP64_OFF64 > 0
+ {
+ if (string_len)
+ restenvs[string_len++] = '\n';
+ memcpy (restenvs + string_len, "XBS5_LP64_OFF64",
+ sizeof "XBS5_LP64_OFF64" - 1);
+ string_len += sizeof "XBS5_LP64_OFF64" - 1;
+ }
+#endif
+#ifndef _XBS5_LPBIG_OFFBIG
+ if (__sysconf (_SC_XBS5_LPBIG_OFFBIG) > 0)
+#endif
+#if !defined _XBS5_LPBIG_OFFBIG || _XBS5_LPBIG_OFFBIG > 0
+ {
+ if (string_len)
+ restenvs[string_len++] = '\n';
+ memcpy (restenvs + string_len, "XBS5_LPBIG_OFFBIG",
+ sizeof "XBS5_LPBIG_OFFBIG" - 1);
+ string_len += sizeof "XBS5_LPBIG_OFFBIG" - 1;
+ }
+#endif
+ restenvs[string_len++] = '\0';
string = restenvs;
}
break;
case _CS_XBS5_ILP32_OFF32_CFLAGS:
case _CS_POSIX_V6_ILP32_OFF32_CFLAGS:
+ case _CS_POSIX_V7_ILP32_OFF32_CFLAGS:
#ifdef __ILP32_OFF32_CFLAGS
-# if _POSIX_V6_ILP32_OFF32 == -1
+# if _POSIX_V7_ILP32_OFF32 == -1
# error "__ILP32_OFF32_CFLAGS should not be defined"
-# elif !defined _POSIX_V6_ILP32_OFF32
- if (__sysconf (_SC_V6_ILP32_OFF32) < 0)
- break;
+# elif !defined _POSIX_V7_ILP32_OFF32
+ if (__sysconf (_SC_V7_ILP32_OFF32) < 0)
+ break;
# endif
string = __ILP32_OFF32_CFLAGS;
string_len = sizeof (__ILP32_OFF32_CFLAGS);
@@ -125,12 +252,13 @@ confstr (name, buf, len)
case _CS_XBS5_ILP32_OFFBIG_CFLAGS:
case _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS:
+ case _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS:
#ifdef __ILP32_OFFBIG_CFLAGS
-# if _POSIX_V6_ILP32_OFFBIG == -1
+# if _POSIX_V7_ILP32_OFFBIG == -1
# error "__ILP32_OFFBIG_CFLAGS should not be defined"
-# elif !defined _POSIX_V6_ILP32_OFFBIG
- if (__sysconf (_SC_V6_ILP32_OFFBIG) < 0)
- break;
+# elif !defined _POSIX_V7_ILP32_OFFBIG
+ if (__sysconf (_SC_V7_ILP32_OFFBIG) < 0)
+ break;
# endif
string = __ILP32_OFFBIG_CFLAGS;
string_len = sizeof (__ILP32_OFFBIG_CFLAGS);
@@ -139,12 +267,13 @@ confstr (name, buf, len)
case _CS_XBS5_LP64_OFF64_CFLAGS:
case _CS_POSIX_V6_LP64_OFF64_CFLAGS:
+ case _CS_POSIX_V7_LP64_OFF64_CFLAGS:
#ifdef __LP64_OFF64_CFLAGS
-# if _POSIX_V6_LP64_OFF64 == -1
+# if _POSIX_V7_LP64_OFF64 == -1
# error "__LP64_OFF64_CFLAGS should not be defined"
-# elif !defined _POSIX_V6_LP64_OFF64
- if (__sysconf (_SC_V6_LP64_OFF64) < 0)
- break;
+# elif !defined _POSIX_V7_LP64_OFF64
+ if (__sysconf (_SC_V7_LP64_OFF64) < 0)
+ break;
# endif
string = __LP64_OFF64_CFLAGS;
string_len = sizeof (__LP64_OFF64_CFLAGS);
@@ -153,12 +282,13 @@ confstr (name, buf, len)
case _CS_XBS5_ILP32_OFF32_LDFLAGS:
case _CS_POSIX_V6_ILP32_OFF32_LDFLAGS:
+ case _CS_POSIX_V7_ILP32_OFF32_LDFLAGS:
#ifdef __ILP32_OFF32_LDFLAGS
-# if _POSIX_V6_ILP32_OFF32 == -1
+# if _POSIX_V7_ILP32_OFF32 == -1
# error "__ILP32_OFF32_LDFLAGS should not be defined"
-# elif !defined _POSIX_V6_ILP32_OFF32
- if (__sysconf (_SC_V6_ILP32_OFF32) < 0)
- break;
+# elif !defined _POSIX_V7_ILP32_OFF32
+ if (__sysconf (_SC_V7_ILP32_OFF32) < 0)
+ break;
# endif
string = __ILP32_OFF32_LDFLAGS;
string_len = sizeof (__ILP32_OFF32_LDFLAGS);
@@ -167,12 +297,13 @@ confstr (name, buf, len)
case _CS_XBS5_ILP32_OFFBIG_LDFLAGS:
case _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS:
+ case _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS:
#ifdef __ILP32_OFFBIG_LDFLAGS
-# if _POSIX_V6_ILP32_OFFBIG == -1
+# if _POSIX_V7_ILP32_OFFBIG == -1
# error "__ILP32_OFFBIG_LDFLAGS should not be defined"
-# elif !defined _POSIX_V6_ILP32_OFFBIG
- if (__sysconf (_SC_V6_ILP32_OFFBIG) < 0)
- break;
+# elif !defined _POSIX_V7_ILP32_OFFBIG
+ if (__sysconf (_SC_V7_ILP32_OFFBIG) < 0)
+ break;
# endif
string = __ILP32_OFFBIG_LDFLAGS;
string_len = sizeof (__ILP32_OFFBIG_LDFLAGS);
@@ -181,12 +312,13 @@ confstr (name, buf, len)
case _CS_XBS5_LP64_OFF64_LDFLAGS:
case _CS_POSIX_V6_LP64_OFF64_LDFLAGS:
+ case _CS_POSIX_V7_LP64_OFF64_LDFLAGS:
#ifdef __LP64_OFF64_LDFLAGS
-# if _POSIX_V6_LP64_OFF64 == -1
+# if _POSIX_V7_LP64_OFF64 == -1
# error "__LP64_OFF64_LDFLAGS should not be defined"
-# elif !defined _POSIX_V6_LP64_OFF64
- if (__sysconf (_SC_V6_LP64_OFF64) < 0)
- break;
+# elif !defined _POSIX_V7_LP64_OFF64
+ if (__sysconf (_SC_V7_LP64_OFF64) < 0)
+ break;
# endif
string = __LP64_OFF64_LDFLAGS;
string_len = sizeof (__LP64_OFF64_LDFLAGS);
@@ -241,6 +373,17 @@ confstr (name, buf, len)
case _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS:
case _CS_POSIX_V6_LPBIG_OFFBIG_LIBS:
case _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS:
+
+ case _CS_POSIX_V7_ILP32_OFF32_LIBS:
+ case _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS:
+ case _CS_POSIX_V7_ILP32_OFFBIG_LIBS:
+ case _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS:
+ case _CS_POSIX_V7_LP64_OFF64_LIBS:
+ case _CS_POSIX_V7_LP64_OFF64_LINTFLAGS:
+ case _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS:
+ case _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS:
+ case _CS_POSIX_V7_LPBIG_OFFBIG_LIBS:
+ case _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS:
/* GNU libc does not require special actions to use LFS functions. */
break;
@@ -260,6 +403,13 @@ confstr (name, buf, len)
return 0;
#endif
+ case _CS_V6_ENV:
+ case _CS_V7_ENV:
+ /* Maybe something else is needed in future. */
+ string = "POSIXLY_CORRECT=1";
+ string_len = sizeof ("POSIXLY_CORRECT=1");
+ break;
+
default:
__set_errno (EINVAL);
return 0;
diff --git a/posix/execvp.c b/posix/execvp.c
index 887379e3a2..81e6d589f1 100644
--- a/posix/execvp.c
+++ b/posix/execvp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92, 1995-99, 2002, 2004, 2005, 2007
+/* Copyright (C) 1991,92, 1995-99, 2002, 2004, 2005, 2007, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -17,31 +17,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <alloca.h>
#include <unistd.h>
-#include <stdarg.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <paths.h>
-
-
-/* The file is accessible but it is not an executable file. Invoke
- the shell to interpret it as a script. */
-static void
-internal_function
-scripts_argv (const char *file, char *const argv[], int argc, char **new_argv)
-{
- /* Construct an argument list for the shell. */
- new_argv[0] = (char *) _PATH_BSHELL;
- new_argv[1] = (char *) file;
- while (argc > 1)
- {
- new_argv[argc] = argv[argc - 1];
- --argc;
- }
-}
/* Execute FILE, searching in the `PATH' environment variable if it contains
@@ -51,170 +27,6 @@ execvp (file, argv)
const char *file;
char *const argv[];
{
- if (*file == '\0')
- {
- /* We check the simple case first. */
- __set_errno (ENOENT);
- return -1;
- }
-
- if (strchr (file, '/') != NULL)
- {
- /* Don't search when it contains a slash. */
- __execve (file, argv, __environ);
-
- if (errno == ENOEXEC)
- {
- /* Count the arguments. */
- int argc = 0;
- while (argv[argc++])
- ;
- size_t len = (argc + 1) * sizeof (char *);
- char **script_argv;
- void *ptr = NULL;
- if (__libc_use_alloca (len))
- script_argv = alloca (len);
- else
- script_argv = ptr = malloc (len);
-
- if (script_argv != NULL)
- {
- scripts_argv (file, argv, argc, script_argv);
- __execve (script_argv[0], script_argv, __environ);
-
- free (ptr);
- }
- }
- }
- else
- {
- size_t pathlen;
- size_t alloclen = 0;
- char *path = getenv ("PATH");
- if (path == NULL)
- {
- pathlen = confstr (_CS_PATH, (char *) NULL, 0);
- alloclen = pathlen + 1;
- }
- else
- pathlen = strlen (path);
-
- size_t len = strlen (file) + 1;
- alloclen += pathlen + len + 1;
-
- char *name;
- char *path_malloc = NULL;
- if (__libc_use_alloca (alloclen))
- name = alloca (alloclen);
- else
- {
- path_malloc = name = malloc (alloclen);
- if (name == NULL)
- return -1;
- }
-
- if (path == NULL)
- {
- /* There is no `PATH' in the environment.
- The default search path is the current directory
- followed by the path `confstr' returns for `_CS_PATH'. */
- path = name + pathlen + len + 1;
- path[0] = ':';
- (void) confstr (_CS_PATH, path + 1, pathlen);
- }
-
- /* Copy the file name at the top. */
- name = (char *) memcpy (name + pathlen + 1, file, len);
- /* And add the slash. */
- *--name = '/';
-
- char **script_argv = NULL;
- void *script_argv_malloc = NULL;
- bool got_eacces = false;
- char *p = path;
- do
- {
- char *startp;
-
- path = p;
- p = __strchrnul (path, ':');
-
- if (p == path)
- /* Two adjacent colons, or a colon at the beginning or the end
- of `PATH' means to search the current directory. */
- startp = name + 1;
- else
- startp = (char *) memcpy (name - (p - path), path, p - path);
-
- /* Try to execute this name. If it works, execve will not return. */
- __execve (startp, argv, __environ);
-
- if (errno == ENOEXEC)
- {
- if (script_argv == NULL)
- {
- /* Count the arguments. */
- int argc = 0;
- while (argv[argc++])
- ;
- size_t arglen = (argc + 1) * sizeof (char *);
- if (__libc_use_alloca (alloclen + arglen))
- script_argv = alloca (arglen);
- else
- script_argv = script_argv_malloc = malloc (arglen);
- if (script_argv == NULL)
- {
- /* A possible EACCES error is not as important as
- the ENOMEM. */
- got_eacces = false;
- break;
- }
- scripts_argv (startp, argv, argc, script_argv);
- }
-
- __execve (script_argv[0], script_argv, __environ);
- }
-
- switch (errno)
- {
- case EACCES:
- /* Record the we got a `Permission denied' error. If we end
- up finding no executable we can use, we want to diagnose
- that we did find one but were denied access. */
- got_eacces = true;
- case ENOENT:
- case ESTALE:
- case ENOTDIR:
- /* Those errors indicate the file is missing or not executable
- by us, in which case we want to just try the next path
- directory. */
- case ENODEV:
- case ETIMEDOUT:
- /* Some strange filesystems like AFS return even
- stranger error numbers. They cannot reasonably mean
- anything else so ignore those, too. */
- break;
-
- default:
- /* Some other error means we found an executable file, but
- something went wrong executing it; return the error to our
- caller. */
- return -1;
- }
- }
- while (*p++ != '\0');
-
- /* We tried every element and none of them worked. */
- if (got_eacces)
- /* At least one failure was due to permissions, so report that
- error. */
- __set_errno (EACCES);
-
- free (script_argv_malloc);
- free (path_malloc);
- }
-
- /* Return the error from the last attempt (probably ENOENT). */
- return -1;
+ return __execvpe (file, argv, __environ);
}
libc_hidden_def (execvp)
diff --git a/posix/execvpe.c b/posix/execvpe.c
new file mode 100644
index 0000000000..b4f40d3a7c
--- /dev/null
+++ b/posix/execvpe.c
@@ -0,0 +1,221 @@
+/* Copyright (C) 1991,92, 1995-99, 2002, 2004, 2005, 2007, 2009
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <alloca.h>
+#include <unistd.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <paths.h>
+
+
+/* The file is accessible but it is not an executable file. Invoke
+ the shell to interpret it as a script. */
+static void
+internal_function
+scripts_argv (const char *file, char *const argv[], int argc, char **new_argv)
+{
+ /* Construct an argument list for the shell. */
+ new_argv[0] = (char *) _PATH_BSHELL;
+ new_argv[1] = (char *) file;
+ while (argc > 1)
+ {
+ new_argv[argc] = argv[argc - 1];
+ --argc;
+ }
+}
+
+
+/* Execute FILE, searching in the `PATH' environment variable if it contains
+ no slashes, with arguments ARGV and environment from ENVP. */
+int
+__execvpe (file, argv, envp)
+ const char *file;
+ char *const argv[];
+ char *const envp[];
+{
+ if (*file == '\0')
+ {
+ /* We check the simple case first. */
+ __set_errno (ENOENT);
+ return -1;
+ }
+
+ if (strchr (file, '/') != NULL)
+ {
+ /* Don't search when it contains a slash. */
+ __execve (file, argv, envp);
+
+ if (errno == ENOEXEC)
+ {
+ /* Count the arguments. */
+ int argc = 0;
+ while (argv[argc++])
+ ;
+ size_t len = (argc + 1) * sizeof (char *);
+ char **script_argv;
+ void *ptr = NULL;
+ if (__libc_use_alloca (len))
+ script_argv = alloca (len);
+ else
+ script_argv = ptr = malloc (len);
+
+ if (script_argv != NULL)
+ {
+ scripts_argv (file, argv, argc, script_argv);
+ __execve (script_argv[0], script_argv, envp);
+
+ free (ptr);
+ }
+ }
+ }
+ else
+ {
+ size_t pathlen;
+ size_t alloclen = 0;
+ char *path = getenv ("PATH");
+ if (path == NULL)
+ {
+ pathlen = confstr (_CS_PATH, (char *) NULL, 0);
+ alloclen = pathlen + 1;
+ }
+ else
+ pathlen = strlen (path);
+
+ size_t len = strlen (file) + 1;
+ alloclen += pathlen + len + 1;
+
+ char *name;
+ char *path_malloc = NULL;
+ if (__libc_use_alloca (alloclen))
+ name = alloca (alloclen);
+ else
+ {
+ path_malloc = name = malloc (alloclen);
+ if (name == NULL)
+ return -1;
+ }
+
+ if (path == NULL)
+ {
+ /* There is no `PATH' in the environment.
+ The default search path is the current directory
+ followed by the path `confstr' returns for `_CS_PATH'. */
+ path = name + pathlen + len + 1;
+ path[0] = ':';
+ (void) confstr (_CS_PATH, path + 1, pathlen);
+ }
+
+ /* Copy the file name at the top. */
+ name = (char *) memcpy (name + pathlen + 1, file, len);
+ /* And add the slash. */
+ *--name = '/';
+
+ char **script_argv = NULL;
+ void *script_argv_malloc = NULL;
+ bool got_eacces = false;
+ char *p = path;
+ do
+ {
+ char *startp;
+
+ path = p;
+ p = __strchrnul (path, ':');
+
+ if (p == path)
+ /* Two adjacent colons, or a colon at the beginning or the end
+ of `PATH' means to search the current directory. */
+ startp = name + 1;
+ else
+ startp = (char *) memcpy (name - (p - path), path, p - path);
+
+ /* Try to execute this name. If it works, execve will not return. */
+ __execve (startp, argv, envp);
+
+ if (errno == ENOEXEC)
+ {
+ if (script_argv == NULL)
+ {
+ /* Count the arguments. */
+ int argc = 0;
+ while (argv[argc++])
+ ;
+ size_t arglen = (argc + 1) * sizeof (char *);
+ if (__libc_use_alloca (alloclen + arglen))
+ script_argv = alloca (arglen);
+ else
+ script_argv = script_argv_malloc = malloc (arglen);
+ if (script_argv == NULL)
+ {
+ /* A possible EACCES error is not as important as
+ the ENOMEM. */
+ got_eacces = false;
+ break;
+ }
+ scripts_argv (startp, argv, argc, script_argv);
+ }
+
+ __execve (script_argv[0], script_argv, envp);
+ }
+
+ switch (errno)
+ {
+ case EACCES:
+ /* Record the we got a `Permission denied' error. If we end
+ up finding no executable we can use, we want to diagnose
+ that we did find one but were denied access. */
+ got_eacces = true;
+ case ENOENT:
+ case ESTALE:
+ case ENOTDIR:
+ /* Those errors indicate the file is missing or not executable
+ by us, in which case we want to just try the next path
+ directory. */
+ case ENODEV:
+ case ETIMEDOUT:
+ /* Some strange filesystems like AFS return even
+ stranger error numbers. They cannot reasonably mean
+ anything else so ignore those, too. */
+ break;
+
+ default:
+ /* Some other error means we found an executable file, but
+ something went wrong executing it; return the error to our
+ caller. */
+ return -1;
+ }
+ }
+ while (*p++ != '\0');
+
+ /* We tried every element and none of them worked. */
+ if (got_eacces)
+ /* At least one failure was due to permissions, so report that
+ error. */
+ __set_errno (EACCES);
+
+ free (script_argv_malloc);
+ free (path_malloc);
+ }
+
+ /* Return the error from the last attempt (probably ENOENT). */
+ return -1;
+}
+weak_alias (__execvpe, execvpe)
diff --git a/posix/getconf.c b/posix/getconf.c
index 6184292202..d9d90e44f7 100644
--- a/posix/getconf.c
+++ b/posix/getconf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 1995-2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 1995-2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software; you can redistribute it and/or modify
@@ -355,6 +355,14 @@ static const struct conf vars[] =
#ifdef _SC_THREAD_PRIO_PROTECT
{ "_POSIX_THREAD_PRIO_PROTECT", _SC_THREAD_PRIO_PROTECT, SYSCONF },
#endif
+#ifdef _SC_THREAD_ROBUST_PRIO_INHERIT
+ { "_POSIX_THREAD_ROBUST_PRIO_INHERIT", _SC_THREAD_ROBUST_PRIO_INHERIT,
+ SYSCONF },
+#endif
+#ifdef _SC_THREAD_ROBUST_PRIO_PROTECT
+ { "_POSIX_THREAD_ROBUST_PRIO_PROTECT", _SC_THREAD_ROBUST_PRIO_PROTECT,
+ SYSCONF },
+#endif
#ifdef _SC_THREAD_PROCESS_SHARED
{ "_POSIX_THREAD_PROCESS_SHARED", _SC_THREAD_PROCESS_SHARED, SYSCONF },
#endif
@@ -476,6 +484,7 @@ static const struct conf vars[] =
#endif
#ifdef _SC_LINE_MAX
{ "_POSIX2_LINE_MAX", _SC_LINE_MAX, SYSCONF },
+ { "POSIX2_LINE_MAX", _SC_LINE_MAX, SYSCONF },
#endif
#ifdef _SC_2_LOCALEDEF
{ "POSIX2_LOCALEDEF", _SC_2_LOCALEDEF, SYSCONF },
@@ -528,6 +537,11 @@ static const struct conf vars[] =
#endif
/* Programming environments. */
+#ifdef _CS_V5_WIDTH_RESTRICTED_ENVS
+ { "_XBS5_WIDTH_RESTRICTED_ENVS", _CS_V5_WIDTH_RESTRICTED_ENVS, CONFSTR },
+ { "XBS5_WIDTH_RESTRICTED_ENVS", _CS_V5_WIDTH_RESTRICTED_ENVS, CONFSTR },
+#endif
+
#ifdef _SC_XBS5_ILP32_OFF32
{ "_XBS5_ILP32_OFF32", _SC_XBS5_ILP32_OFF32, SYSCONF },
#endif
@@ -661,6 +675,75 @@ static const struct conf vars[] =
{ "POSIX_V6_LPBIG_OFFBIG_LINTFLAGS", _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, CONFSTR },
#endif
+#ifdef _SC_V7_ILP32_OFF32
+ { "_POSIX_V7_ILP32_OFF32", _SC_V7_ILP32_OFF32, SYSCONF },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFF32_CFLAGS
+ { "POSIX_V7_ILP32_OFF32_CFLAGS", _CS_POSIX_V7_ILP32_OFF32_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
+ { "POSIX_V7_ILP32_OFF32_LDFLAGS", _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFF32_LIBS
+ { "POSIX_V7_ILP32_OFF32_LIBS", _CS_POSIX_V7_ILP32_OFF32_LIBS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS
+ { "POSIX_V7_ILP32_OFF32_LINTFLAGS", _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _CS_V7_WIDTH_RESTRICTED_ENVS
+ { "_POSIX_V7_WIDTH_RESTRICTED_ENVS", _CS_V7_WIDTH_RESTRICTED_ENVS, CONFSTR },
+ { "POSIX_V7_WIDTH_RESTRICTED_ENVS", _CS_V7_WIDTH_RESTRICTED_ENVS, CONFSTR },
+#endif
+
+#ifdef _SC_V7_ILP32_OFFBIG
+ { "_POSIX_V7_ILP32_OFFBIG", _SC_V7_ILP32_OFFBIG, SYSCONF },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
+ { "POSIX_V7_ILP32_OFFBIG_CFLAGS", _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
+ { "POSIX_V7_ILP32_OFFBIG_LDFLAGS", _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFFBIG_LIBS
+ { "POSIX_V7_ILP32_OFFBIG_LIBS", _CS_POSIX_V7_ILP32_OFFBIG_LIBS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS
+ { "POSIX_V7_ILP32_OFFBIG_LINTFLAGS", _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _SC_V7_LP64_OFF64
+ { "_POSIX_V7_LP64_OFF64", _SC_V7_LP64_OFF64, SYSCONF },
+#endif
+#ifdef _CS_POSIX_V7_LP64_OFF64_CFLAGS
+ { "POSIX_V7_LP64_OFF64_CFLAGS", _CS_POSIX_V7_LP64_OFF64_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_LP64_OFF64_LDFLAGS
+ { "POSIX_V7_LP64_OFF64_LDFLAGS", _CS_POSIX_V7_LP64_OFF64_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_LP64_OFF64_LIBS
+ { "POSIX_V7_LP64_OFF64_LIBS", _CS_POSIX_V7_LP64_OFF64_LIBS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_LP64_OFF64_LINTFLAGS
+ { "POSIX_V7_LP64_OFF64_LINTFLAGS", _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _SC_V7_LPBIG_OFFBIG
+ { "_POSIX_V7_LPBIG_OFFBIG", _SC_V7_LPBIG_OFFBIG, SYSCONF },
+#endif
+#ifdef _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
+ { "POSIX_V7_LPBIG_OFFBIG_CFLAGS", _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
+ { "POSIX_V7_LPBIG_OFFBIG_LDFLAGS", _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
+ { "POSIX_V7_LPBIG_OFFBIG_LIBS", _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
+ { "POSIX_V7_LPBIG_OFFBIG_LINTFLAGS", _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, CONFSTR },
+#endif
+
#ifdef _SC_ADVISORY_INFO
{ "_POSIX_ADVISORY_INFO", _SC_ADVISORY_INFO, SYSCONF },
#endif
@@ -926,12 +1009,20 @@ static const struct conf vars[] =
};
-static struct { const char *name; int num; } specs[] =
+static const struct { const char *name; int num; } specs[] =
{
+ { "XBS5_ILP32_OFF32", _SC_XBS5_ILP32_OFF32 },
+ { "XBS5_ILP32_OFFBIG", _SC_XBS5_ILP32_OFFBIG },
+ { "XBS5_LP64_OFF64", _SC_XBS5_LP64_OFF64 },
+ { "XBS5_LPBIG_OFFBIG", _SC_XBS5_LPBIG_OFFBIG },
{ "POSIX_V6_ILP32_OFF32", _SC_V6_ILP32_OFF32 },
{ "POSIX_V6_ILP32_OFFBIG", _SC_V6_ILP32_OFFBIG },
{ "POSIX_V6_LP64_OFF64", _SC_V6_LP64_OFF64 },
- { "POSIX_V6_LPBIG_OFFBIG", _SC_V6_LPBIG_OFFBIG }
+ { "POSIX_V6_LPBIG_OFFBIG", _SC_V6_LPBIG_OFFBIG },
+ { "POSIX_V7_ILP32_OFF32", _SC_V7_ILP32_OFF32 },
+ { "POSIX_V7_ILP32_OFFBIG", _SC_V7_ILP32_OFFBIG },
+ { "POSIX_V7_LP64_OFF64", _SC_V7_LP64_OFF64 },
+ { "POSIX_V7_LPBIG_OFFBIG", _SC_V7_LPBIG_OFFBIG },
};
static const int nspecs = sizeof (specs) / sizeof (specs[0]);
@@ -949,6 +1040,7 @@ usage (void)
exit (2);
}
+
static void
print_all (const char *path)
{
@@ -960,34 +1052,34 @@ print_all (const char *path)
printf("%-35s", c->name);
switch (c->call) {
case PATHCONF:
- value = pathconf (path, c->call_name);
- if (value != -1) {
- printf("%ld", value);
- }
- printf("\n");
- break;
+ value = pathconf (path, c->call_name);
+ if (value != -1) {
+ printf("%ld", value);
+ }
+ printf("\n");
+ break;
case SYSCONF:
- value = sysconf (c->call_name);
- if (value == -1l) {
- if (c->call_name == _SC_UINT_MAX
- || c->call_name == _SC_ULONG_MAX)
- printf ("%lu", value);
- }
- else {
- printf ("%ld", value);
- }
- printf ("\n");
- break;
+ value = sysconf (c->call_name);
+ if (value == -1l) {
+ if (c->call_name == _SC_UINT_MAX
+ || c->call_name == _SC_ULONG_MAX)
+ printf ("%lu", value);
+ }
+ else {
+ printf ("%ld", value);
+ }
+ printf ("\n");
+ break;
case CONFSTR:
- clen = confstr (c->call_name, (char *) NULL, 0);
- cvalue = (char *) malloc (clen);
- if (cvalue == NULL)
- error (3, 0, _("memory exhausted"));
- if (confstr (c->call_name, cvalue, clen) != clen)
- error (3, errno, "confstr");
- printf ("%.*s\n", (int) clen, cvalue);
+ clen = confstr (c->call_name, (char *) NULL, 0);
+ cvalue = (char *) malloc (clen);
+ if (cvalue == NULL)
+ error (3, 0, _("memory exhausted"));
+ if (confstr (c->call_name, cvalue, clen) != clen)
+ error (3, errno, "confstr");
+ printf ("%.*s\n", (int) clen, cvalue);
free (cvalue);
- break;
+ break;
}
}
exit (0);
@@ -1008,13 +1100,27 @@ main (int argc, char *argv[])
if (argc > 1 && strcmp (argv[1], "--version") == 0)
{
- fprintf (stderr, "getconf (GNU %s) %s\n", PACKAGE, VERSION);
- fprintf (stderr, gettext ("\
+ printf ("getconf (GNU %s) %s\n", PACKAGE, VERSION);
+ printf (gettext ("\
Copyright (C) %s Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2008");
- fprintf (stderr, gettext ("Written by %s.\n"), "Roland McGrath");
+"), "2009");
+ printf (gettext ("Written by %s.\n"), "Roland McGrath");
+ return 0;
+ }
+
+ if (argc > 1 && strcmp (argv[1], "--help") == 0)
+ {
+ printf (gettext ("\
+Usage: getconf [-v SPEC] VAR\n\
+ or: getconf [-v SPEC] PATH_VAR PATH\n\
+\n\
+Get the configuration value for variable VAR, or for variable PATH_VAR\n\
+for path PATH. If SPEC is given, give values for compilation\n\
+environment SPEC.\n\n"));
+ fputs (gettext ("For bug reporting instructions, please see:\n\
+<http://www.gnu.org/software/libc/bugs.html>.\n"), stdout);
return 0;
}
@@ -1068,6 +1174,18 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
switch (specs[i].num)
{
+#ifndef _XBS5_ILP32_OFF32
+ case _SC_XBS5_ILP32_OFF32:
+#endif
+#ifndef _XBS5_ILP32_OFFBIG
+ case _SC_XBS5_ILP32_OFFBIG:
+#endif
+#ifndef _XBS5_LP64_OFF64
+ case _SC_XBS5_LP64_OFF64:
+#endif
+#ifndef _XBS5_LPBIG_OFFBIG
+ case _SC_XBS5_LPBIG_OFFBIG:
+#endif
#ifndef _POSIX_V6_ILP32_OFF32
case _SC_V6_ILP32_OFF32:
#endif
@@ -1080,6 +1198,18 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
#ifndef _POSIX_V6_LPBIG_OFFBIG
case _SC_V6_LPBIG_OFFBIG:
#endif
+#ifndef _POSIX_V7_ILP32_OFF32
+ case _SC_V7_ILP32_OFF32:
+#endif
+#ifndef _POSIX_V7_ILP32_OFFBIG
+ case _SC_V7_ILP32_OFFBIG:
+#endif
+#ifndef _POSIX_V7_LP64_OFF64
+ case _SC_V7_LP64_OFF64:
+#endif
+#ifndef _POSIX_V7_LPBIG_OFFBIG
+ case _SC_V7_LPBIG_OFFBIG:
+#endif
{
const char *args[argc + 3];
size_t spec_len = strlen (spec);
@@ -1109,13 +1239,17 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
usage ();
}
- if (argc < 2 || argc > 3)
+ int ai = 1;
+ if (argc > ai && strcmp (argv[ai], "--") == 0)
+ ++ai;
+
+ if (argc - ai < 1 || argc - ai > 2)
usage ();
for (c = vars; c->name != NULL; ++c)
- if (strcmp (c->name, argv[1]) == 0
+ if (strcmp (c->name, argv[ai]) == 0
|| (strncmp (c->name, "_POSIX_", 7) == 0
- && strcmp (c->name + 7, argv[1]) == 0))
+ && strcmp (c->name + 7, argv[ai]) == 0))
{
long int value;
size_t clen;
@@ -1123,14 +1257,14 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
switch (c->call)
{
case PATHCONF:
- if (argc < 3)
+ if (argc - ai < 2)
usage ();
errno = 0;
- value = pathconf (argv[2], c->call_name);
+ value = pathconf (argv[ai + 1], c->call_name);
if (value == -1)
{
if (errno)
- error (3, errno, "pathconf: %s", argv[2]);
+ error (3, errno, "pathconf: %s", argv[ai + 1]);
else
puts (_("undefined"));
}
@@ -1139,7 +1273,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
exit (0);
case SYSCONF:
- if (argc > 2)
+ if (argc - ai > 1)
usage ();
value = sysconf (c->call_name);
if (value == -1l)
@@ -1155,7 +1289,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
exit (0);
case CONFSTR:
- if (argc > 2)
+ if (argc - ai > 1)
usage ();
clen = confstr (c->call_name, (char *) NULL, 0);
cvalue = (char *) malloc (clen);
@@ -1170,7 +1304,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
}
}
- error (2, 0, _("Unrecognized variable `%s'"), argv[1]);
+ error (2, 0, _("Unrecognized variable `%s'"), argv[ai]);
/* NOTREACHED */
return 2;
}
diff --git a/posix/getopt.c b/posix/getopt.c
index 965bfdd3ac..a7f0b54857 100644
--- a/posix/getopt.c
+++ b/posix/getopt.c
@@ -2,7 +2,7 @@
NOTE: getopt is part of the C library, so if you don't know what
"Keep this file name-space clean" means, talk to drepper@gnu.org
before changing it!
- Copyright (C) 1987-1996,1998-2004,2008 Free Software Foundation, Inc.
+ Copyright (C) 1987-1996,1998-2004,2008,2009 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
@@ -270,7 +270,7 @@ exchange (char **argv, struct _getopt_data *d)
static const char *
_getopt_initialize (int argc, char *const *argv, const char *optstring,
- struct _getopt_data *d)
+ struct _getopt_data *d, int posixly_correct)
{
/* Start processing options with ARGV-element 1 (since ARGV-element 0
is the program name); the sequence of previously skipped
@@ -280,7 +280,7 @@ _getopt_initialize (int argc, char *const *argv, const char *optstring,
d->__nextchar = NULL;
- d->__posixly_correct = !!getenv ("POSIXLY_CORRECT");
+ d->__posixly_correct = posixly_correct | !!getenv ("POSIXLY_CORRECT");
/* Determine how to handle the ordering of options and nonoptions. */
@@ -391,7 +391,7 @@ _getopt_initialize (int argc, char *const *argv, const char *optstring,
int
_getopt_internal_r (int argc, char *const *argv, const char *optstring,
const struct option *longopts, int *longind,
- int long_only, struct _getopt_data *d)
+ int long_only, struct _getopt_data *d, int posixly_correct)
{
int print_errors = d->opterr;
if (optstring[0] == ':')
@@ -406,7 +406,8 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
{
if (d->optind == 0)
d->optind = 1; /* Don't scan ARGV[0], the program name. */
- optstring = _getopt_initialize (argc, argv, optstring, d);
+ optstring = _getopt_initialize (argc, argv, optstring, d,
+ posixly_correct);
d->__initialized = 1;
}
@@ -1111,7 +1112,8 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
int
_getopt_internal (int argc, char *const *argv, const char *optstring,
- const struct option *longopts, int *longind, int long_only)
+ const struct option *longopts, int *longind, int long_only,
+ int posixly_correct)
{
int result;
@@ -1119,7 +1121,8 @@ _getopt_internal (int argc, char *const *argv, const char *optstring,
getopt_data.opterr = opterr;
result = _getopt_internal_r (argc, argv, optstring, longopts,
- longind, long_only, &getopt_data);
+ longind, long_only, &getopt_data,
+ posixly_correct);
optind = getopt_data.optind;
optarg = getopt_data.optarg;
@@ -1134,9 +1137,20 @@ getopt (int argc, char *const *argv, const char *optstring)
return _getopt_internal (argc, argv, optstring,
(const struct option *) 0,
(int *) 0,
- 0);
+ 0, 0);
}
+#ifdef _LIBC
+int
+__posix_getopt (int argc, char *const *argv, const char *optstring)
+{
+ return _getopt_internal (argc, argv, optstring,
+ (const struct option *) 0,
+ (int *) 0,
+ 0, 1);
+}
+#endif
+
#endif /* Not ELIDE_CODE. */
#ifdef TEST
diff --git a/posix/getopt.h b/posix/getopt.h
index b7a026c535..ff0251dec0 100644
--- a/posix/getopt.h
+++ b/posix/getopt.h
@@ -1,5 +1,5 @@
/* Declarations for getopt.
- Copyright (C) 1989-1994,1996-1999,2001,2003,2004
+ Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -151,6 +151,22 @@ struct option
errors, only prototype getopt for the GNU C library. */
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
__THROW;
+
+# if defined __need_getopt && defined __USE_POSIX2 \
+ && !defined __USE_POSIX_IMPLICITLY && !defined __USE_GNU
+/* The GNU getopt has more functionality than the standard version. The
+ additional functionality can be disable at runtime. This redirection
+ helps to also do this at runtime. */
+# ifdef __REDIRECT
+ extern int __REDIRECT (getopt, (int ___argc, char *const *___argv,
+ const char *__shortopts),
+ __posix_getopt) __THROW;
+# else
+extern int __posix_getopt (int ___argc, char *const *___argv,
+ const char *__shortopts) __THROW;
+# define getopt __posix_getopt
+# endif
+# endif
#else /* not __GNU_LIBRARY__ */
extern int getopt ();
#endif /* __GNU_LIBRARY__ */
diff --git a/posix/getopt1.c b/posix/getopt1.c
index 2f75d4c2ee..4818ea122a 100644
--- a/posix/getopt1.c
+++ b/posix/getopt1.c
@@ -1,6 +1,5 @@
/* getopt_long and getopt_long_only entry points for GNU getopt.
- Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98,2004
- Free Software Foundation, Inc.
+ Copyright (C) 1987-1994,1996-1998,2004,2009 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
@@ -64,7 +63,7 @@ int
getopt_long (int argc, char *const *argv, const char *options,
const struct option *long_options, int *opt_index)
{
- return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
+ return _getopt_internal (argc, argv, options, long_options, opt_index, 0, 0);
}
int
@@ -73,7 +72,7 @@ _getopt_long_r (int argc, char *const *argv, const char *options,
struct _getopt_data *d)
{
return _getopt_internal_r (argc, argv, options, long_options, opt_index,
- 0, d);
+ 0, d, 0);
}
/* Like getopt_long, but '-' as well as '--' can indicate a long option.
@@ -85,7 +84,7 @@ int
getopt_long_only (int argc, char *const *argv, const char *options,
const struct option *long_options, int *opt_index)
{
- return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
+ return _getopt_internal (argc, argv, options, long_options, opt_index, 1, 0);
}
int
@@ -94,7 +93,7 @@ _getopt_long_only_r (int argc, char *const *argv, const char *options,
struct _getopt_data *d)
{
return _getopt_internal_r (argc, argv, options, long_options, opt_index,
- 1, d);
+ 1, d, 0);
}
#endif /* Not ELIDE_CODE. */
diff --git a/posix/getopt_int.h b/posix/getopt_int.h
index d982c72d9e..d44ee064a8 100644
--- a/posix/getopt_int.h
+++ b/posix/getopt_int.h
@@ -1,5 +1,5 @@
/* Internal declarations for getopt.
- Copyright (C) 1989-1994,1996-1999,2001,2003,2004
+ Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -24,7 +24,7 @@
extern int _getopt_internal (int ___argc, char *const *___argv,
const char *__shortopts,
const struct option *__longopts, int *__longind,
- int __long_only);
+ int __long_only, int posixly_correct);
/* Reentrant versions which can handle parsing multiple argument
@@ -114,7 +114,8 @@ struct _getopt_data
extern int _getopt_internal_r (int ___argc, char *const *___argv,
const char *__shortopts,
const struct option *__longopts, int *__longind,
- int __long_only, struct _getopt_data *__data);
+ int __long_only, struct _getopt_data *__data,
+ int posixly_correct);
extern int _getopt_long_r (int ___argc, char *const *___argv,
const char *__shortopts,
diff --git a/posix/glob.h b/posix/glob.h
index 3d401f082c..89a1886b29 100644
--- a/posix/glob.h
+++ b/posix/glob.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,92,95-98,2000,2001,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1995-1998,2000,2001,2004,2010
+ 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
@@ -27,7 +28,7 @@ __BEGIN_DECLS
#ifndef __size_t
# if defined __GNUC__ && __GNUC__ >= 2
typedef __SIZE_TYPE__ __size_t;
-# ifdef __USE_XOPEN
+# if defined __USE_XOPEN || __USE_XOPEN2K8
typedef __SIZE_TYPE__ size_t;
# endif
# else
diff --git a/posix/globtest.sh b/posix/globtest.sh
index ad47508a66..aadac87796 100755
--- a/posix/globtest.sh
+++ b/posix/globtest.sh
@@ -1,4 +1,4 @@
-#! /bin/sh
+#! /bin/bash
common_objpfx=$1; shift
elf_objpfx=$1; shift
@@ -28,14 +28,11 @@ export LANG
# Create the arena
: ${TMPDIR=/tmp}
-testdir=$TMPDIR/globtest-dir
-testout=$TMPDIR/globtest-out
+testdir=$(mktemp -d $TMPDIR/globtest-dir.XXXXXX)
+testout=$(mktemp $TMPDIR/globtest-out.XXXXXX)
trap 'chmod 777 $testdir/noread; rm -fr $testdir $testout' 1 2 3 15
-test -d $testdir/noread && chmod 777 $testdir/noread
-rm -fr $testdir 2>/dev/null
-mkdir $testdir
echo 1 > $testdir/file1
echo 2 > $testdir/file2
echo 3 > $testdir/-file3
diff --git a/posix/regcomp.c b/posix/regcomp.c
index 8ba7668e8b..03ab123907 100644
--- a/posix/regcomp.c
+++ b/posix/regcomp.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+ Copyright (C) 2002-2007,2009,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -327,8 +327,8 @@ re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state,
&& dfa->nodes[node].mb_partial)
*p++ = dfa->nodes[node].opr.c;
memset (&state, '\0', sizeof (state));
- if (mbrtowc (&wc, (const char *) buf, p - buf,
- &state) == p - buf
+ if (__mbrtowc (&wc, (const char *) buf, p - buf,
+ &state) == p - buf
&& (__wcrtomb ((char *) buf, towlower (wc), &state)
!= (size_t) -1))
re_set_fastmap (fastmap, 0, buf[0]);
@@ -350,45 +350,65 @@ re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state,
#ifdef RE_ENABLE_I18N
else if (type == COMPLEX_BRACKET)
{
- int i;
re_charset_t *cset = dfa->nodes[node].opr.mbcset;
- if (cset->non_match || cset->ncoll_syms || cset->nequiv_classes
- || cset->nranges || cset->nchar_classes)
- {
+ int i;
+
# ifdef _LIBC
- if (_NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES) != 0)
+ /* See if we have to try all bytes which start multiple collation
+ elements.
+ e.g. In da_DK, we want to catch 'a' since "aa" is a valid
+ collation element, and don't catch 'b' since 'b' is
+ the only collation element which starts from 'b' (and
+ it is caught by SIMPLE_BRACKET). */
+ if (_NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES) != 0
+ && (cset->ncoll_syms || cset->nranges))
{
- /* In this case we want to catch the bytes which are
- the first byte of any collation elements.
- e.g. In da_DK, we want to catch 'a' since "aa"
- is a valid collation element, and don't catch
- 'b' since 'b' is the only collation element
- which starts from 'b'. */
const int32_t *table = (const int32_t *)
_NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
for (i = 0; i < SBC_MAX; ++i)
if (table[i] < 0)
re_set_fastmap (fastmap, icase, i);
}
-# else
- if (dfa->mb_cur_max > 1)
- for (i = 0; i < SBC_MAX; ++i)
- if (__btowc (i) == WEOF)
- re_set_fastmap (fastmap, icase, i);
-# endif /* not _LIBC */
+# endif /* _LIBC */
+
+ /* See if we have to start the match at all multibyte characters,
+ i.e. where we would not find an invalid sequence. This only
+ applies to multibyte character sets; for single byte character
+ sets, the SIMPLE_BRACKET again suffices. */
+ if (dfa->mb_cur_max > 1
+ && (cset->nchar_classes || cset->non_match || cset->nranges
+# ifdef _LIBC
+ || cset->nequiv_classes
+# endif /* _LIBC */
+ ))
+ {
+ unsigned char c = 0;
+ do
+ {
+ mbstate_t mbs;
+ memset (&mbs, 0, sizeof (mbs));
+ if (__mbrtowc (NULL, (char *) &c, 1, &mbs) == (size_t) -2)
+ re_set_fastmap (fastmap, false, (int) c);
+ }
+ while (++c != 0);
}
- for (i = 0; i < cset->nmbchars; ++i)
+
+ else
{
- char buf[256];
- mbstate_t state;
- memset (&state, '\0', sizeof (state));
- if (__wcrtomb (buf, cset->mbchars[i], &state) != (size_t) -1)
- re_set_fastmap (fastmap, icase, *(unsigned char *) buf);
- if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1)
+ /* ... Else catch all bytes which can start the mbchars. */
+ for (i = 0; i < cset->nmbchars; ++i)
{
- if (__wcrtomb (buf, towlower (cset->mbchars[i]), &state)
- != (size_t) -1)
- re_set_fastmap (fastmap, 0, *(unsigned char *) buf);
+ char buf[256];
+ mbstate_t state;
+ memset (&state, '\0', sizeof (state));
+ if (__wcrtomb (buf, cset->mbchars[i], &state) != (size_t) -1)
+ re_set_fastmap (fastmap, icase, *(unsigned char *) buf);
+ if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1)
+ {
+ if (__wcrtomb (buf, towlower (cset->mbchars[i]), &state)
+ != (size_t) -1)
+ re_set_fastmap (fastmap, false, *(unsigned char *) buf);
+ }
}
}
}
@@ -595,7 +615,7 @@ free_dfa_content (re_dfa_t *dfa)
re_dfastate_t *state = entry->array[j];
free_state (state);
}
- re_free (entry->array);
+ re_free (entry->array);
}
re_free (dfa->state_table);
#ifdef RE_ENABLE_I18N
@@ -979,7 +999,11 @@ create_initial_state (re_dfa_t *dfa)
int dest_idx = dfa->edests[node_idx].elems[0];
if (!re_node_set_contains (&init_nodes, dest_idx))
{
- re_node_set_merge (&init_nodes, dfa->eclosures + dest_idx);
+ reg_errcode_t err = re_node_set_merge (&init_nodes,
+ dfa->eclosures
+ + dest_idx);
+ if (err != REG_NOERROR)
+ return err;
i = 0;
}
}
@@ -1045,8 +1069,8 @@ optimize_utf8 (re_dfa_t *dfa)
}
break;
case OP_PERIOD:
- has_period = 1;
- break;
+ has_period = 1;
+ break;
case OP_BACK_REF:
case OP_ALT:
case END_OF_RE:
@@ -1059,7 +1083,7 @@ optimize_utf8 (re_dfa_t *dfa)
case SIMPLE_BRACKET:
/* Just double check. The non-ASCII range starts at 0x80. */
assert (0x80 % BITSET_WORD_BITS == 0);
- for (i = 0x80 / BITSET_WORD_BITS; i < BITSET_WORDS; ++i)
+ for (i = 0x80 / BITSET_WORD_BITS; i < BITSET_WORDS; ++i)
if (dfa->nodes[node].opr.sbcset[i])
return;
break;
@@ -1140,7 +1164,7 @@ analyze (regex_t *preg)
{
dfa->inveclosures = re_malloc (re_node_set, dfa->nodes_len);
if (BE (dfa->inveclosures == NULL, 0))
- return REG_ESPACE;
+ return REG_ESPACE;
ret = calc_inveclosure (dfa);
}
@@ -1162,16 +1186,16 @@ postorder (bin_tree_t *root, reg_errcode_t (fn (void *, bin_tree_t *)),
if that's the only child). */
while (node->left || node->right)
if (node->left)
- node = node->left;
- else
- node = node->right;
+ node = node->left;
+ else
+ node = node->right;
do
{
reg_errcode_t err = fn (extra, node);
if (BE (err != REG_NOERROR, 0))
return err;
- if (node->parent == NULL)
+ if (node->parent == NULL)
return REG_NOERROR;
prev = node;
node = node->parent;
@@ -1205,7 +1229,7 @@ preorder (bin_tree_t *root, reg_errcode_t (fn (void *, bin_tree_t *)),
prev = node;
node = node->parent;
if (!node)
- return REG_NOERROR;
+ return REG_NOERROR;
}
node = node->right;
}
@@ -1228,13 +1252,13 @@ optimize_subexps (void *extra, bin_tree_t *node)
}
else if (node->token.type == SUBEXP
- && node->left && node->left->token.type == SUBEXP)
+ && node->left && node->left->token.type == SUBEXP)
{
int other_idx = node->left->token.opr.idx;
node->left = node->left->left;
if (node->left)
- node->left->parent = node;
+ node->left->parent = node;
dfa->subexp_map[other_idx] = dfa->subexp_map[node->token.opr.idx];
if (other_idx < BITSET_WORD_BITS)
@@ -1319,9 +1343,9 @@ calc_first (void *extra, bin_tree_t *node)
node->first = node;
node->node_idx = re_dfa_add_node (dfa, node->token);
if (BE (node->node_idx == -1, 0))
- return REG_ESPACE;
+ return REG_ESPACE;
if (node->token.type == ANCHOR)
- dfa->nodes[node->node_idx].constraint = node->token.opr.ctx_type;
+ dfa->nodes[node->node_idx].constraint = node->token.opr.ctx_type;
}
return REG_NOERROR;
}
@@ -1343,7 +1367,7 @@ calc_next (void *extra, bin_tree_t *node)
if (node->left)
node->left->next = node->next;
if (node->right)
- node->right->next = node->next;
+ node->right->next = node->next;
break;
}
return REG_NOERROR;
@@ -1394,7 +1418,7 @@ link_nfa_nodes (void *extra, bin_tree_t *node)
case OP_BACK_REF:
dfa->nexts[idx] = node->next->node_idx;
if (node->token.type == OP_BACK_REF)
- re_node_set_init_1 (dfa->edests + idx, dfa->nexts[idx]);
+ err = re_node_set_init_1 (dfa->edests + idx, dfa->nexts[idx]);
break;
default:
@@ -1622,9 +1646,10 @@ static reg_errcode_t
calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa, int node, int root)
{
reg_errcode_t err;
- int i, incomplete;
+ int i;
re_node_set eclosure;
- incomplete = 0;
+ int ret;
+ int incomplete = 0;
err = re_node_set_alloc (&eclosure, dfa->edests[node].nelem + 1);
if (BE (err != REG_NOERROR, 0))
return err;
@@ -1669,7 +1694,9 @@ calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa, int node, int root)
else
eclosure_elem = dfa->eclosures[edest];
/* Merge the epsilon closure of `edest'. */
- re_node_set_merge (&eclosure, &eclosure_elem);
+ err = re_node_set_merge (&eclosure, &eclosure_elem);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
/* If the epsilon closure of `edest' is incomplete,
the epsilon closure of this node is also incomplete. */
if (dfa->eclosures[edest].nelem == 0)
@@ -1679,8 +1706,10 @@ calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa, int node, int root)
}
}
- /* Epsilon closures include itself. */
- re_node_set_insert (&eclosure, node);
+ /* An epsilon closure includes itself. */
+ ret = re_node_set_insert (&eclosure, node);
+ if (BE (ret < 0, 0))
+ return REG_ESPACE;
if (incomplete && !root)
dfa->eclosures[node].nelem = 0;
else
@@ -2264,7 +2293,7 @@ parse_expression (re_string_t *regexp, regex_t *preg, re_token_t *token,
&& dfa->word_ops_used == 0)
init_word_char (dfa);
if (token->opr.ctx_type == WORD_DELIM
- || token->opr.ctx_type == NOT_WORD_DELIM)
+ || token->opr.ctx_type == NOT_WORD_DELIM)
{
bin_tree_t *tree_first, *tree_last;
if (token->opr.ctx_type == WORD_DELIM)
@@ -2272,13 +2301,13 @@ parse_expression (re_string_t *regexp, regex_t *preg, re_token_t *token,
token->opr.ctx_type = WORD_FIRST;
tree_first = create_token_tree (dfa, NULL, NULL, token);
token->opr.ctx_type = WORD_LAST;
- }
- else
- {
+ }
+ else
+ {
token->opr.ctx_type = INSIDE_WORD;
tree_first = create_token_tree (dfa, NULL, NULL, token);
token->opr.ctx_type = INSIDE_NOTWORD;
- }
+ }
tree_last = create_token_tree (dfa, NULL, NULL, token);
tree = create_tree (dfa, tree_first, tree_last, OP_ALT);
if (BE (tree_first == NULL || tree_last == NULL || tree == NULL, 0))
@@ -2389,7 +2418,7 @@ parse_sub_exp (re_string_t *regexp, regex_t *preg, re_token_t *token,
{
tree = parse_reg_exp (regexp, preg, token, syntax, nest, err);
if (BE (*err == REG_NOERROR && token->type != OP_CLOSE_SUBEXP, 0))
- *err = REG_EPAREN;
+ *err = REG_EPAREN;
if (BE (*err != REG_NOERROR, 0))
return NULL;
}
@@ -2460,7 +2489,7 @@ parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
return elem;
}
- if (BE (end != -1 && start > end, 0))
+ if (BE ((end != -1 && start > end) || token->type != OP_CLOSE_DUP_NUM, 0))
{
/* First number greater than second. */
*err = REG_BADBR;
@@ -2520,11 +2549,11 @@ parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
elem = duplicate_tree (elem, dfa);
tree = create_tree (dfa, tree, elem, CONCAT);
if (BE (elem == NULL || tree == NULL, 0))
- goto parse_dup_op_espace;
+ goto parse_dup_op_espace;
tree = create_tree (dfa, tree, NULL, OP_ALT);
if (BE (tree == NULL, 0))
- goto parse_dup_op_espace;
+ goto parse_dup_op_espace;
}
if (old_tree)
@@ -2605,9 +2634,9 @@ build_range_exp (bitset_t sbcset, bracket_elem_t *start_elem,
no MBCSET if dfa->mb_cur_max == 1. */
if (mbcset)
{
- /* Check the space of the arrays. */
- if (BE (*range_alloc == mbcset->nranges, 0))
- {
+ /* Check the space of the arrays. */
+ if (BE (*range_alloc == mbcset->nranges, 0))
+ {
/* There is not enough space, need realloc. */
wchar_t *new_array_start, *new_array_end;
int new_nranges;
@@ -2617,9 +2646,9 @@ build_range_exp (bitset_t sbcset, bracket_elem_t *start_elem,
/* Use realloc since mbcset->range_starts and mbcset->range_ends
are NULL if *range_alloc == 0. */
new_array_start = re_realloc (mbcset->range_starts, wchar_t,
- new_nranges);
+ new_nranges);
new_array_end = re_realloc (mbcset->range_ends, wchar_t,
- new_nranges);
+ new_nranges);
if (BE (new_array_start == NULL || new_array_end == NULL, 0))
return REG_ESPACE;
@@ -2627,10 +2656,10 @@ build_range_exp (bitset_t sbcset, bracket_elem_t *start_elem,
mbcset->range_starts = new_array_start;
mbcset->range_ends = new_array_end;
*range_alloc = new_nranges;
- }
+ }
- mbcset->range_starts[mbcset->nranges] = start_wc;
- mbcset->range_ends[mbcset->nranges++] = end_wc;
+ mbcset->range_starts[mbcset->nranges] = start_wc;
+ mbcset->range_ends[mbcset->nranges++] = end_wc;
}
/* Build the table for single byte characters. */
@@ -2849,8 +2878,8 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
build below suffices. */
if (nrules > 0 || dfa->mb_cur_max > 1)
{
- /* Check the space of the arrays. */
- if (BE (*range_alloc == mbcset->nranges, 0))
+ /* Check the space of the arrays. */
+ if (BE (*range_alloc == mbcset->nranges, 0))
{
/* There is not enough space, need realloc. */
uint32_t *new_array_start;
@@ -2862,18 +2891,18 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
new_array_start = re_realloc (mbcset->range_starts, uint32_t,
new_nranges);
new_array_end = re_realloc (mbcset->range_ends, uint32_t,
- new_nranges);
+ new_nranges);
if (BE (new_array_start == NULL || new_array_end == NULL, 0))
- return REG_ESPACE;
+ return REG_ESPACE;
mbcset->range_starts = new_array_start;
mbcset->range_ends = new_array_end;
*range_alloc = new_nranges;
}
- mbcset->range_starts[mbcset->nranges] = start_collseq;
- mbcset->range_ends[mbcset->nranges++] = end_collseq;
+ mbcset->range_starts[mbcset->nranges] = start_collseq;
+ mbcset->range_ends[mbcset->nranges++] = end_collseq;
}
/* Build the table for single byte characters. */
@@ -3206,17 +3235,17 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
of having both SIMPLE_BRACKET and COMPLEX_BRACKET. */
if (sbc_idx < BITSET_WORDS)
{
- /* Build a tree for simple bracket. */
- br_token.type = SIMPLE_BRACKET;
- br_token.opr.sbcset = sbcset;
- work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
- if (BE (work_tree == NULL, 0))
- goto parse_bracket_exp_espace;
+ /* Build a tree for simple bracket. */
+ br_token.type = SIMPLE_BRACKET;
+ br_token.opr.sbcset = sbcset;
+ work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+ if (BE (work_tree == NULL, 0))
+ goto parse_bracket_exp_espace;
- /* Then join them by ALT node. */
- work_tree = create_tree (dfa, work_tree, mbc_tree, OP_ALT);
- if (BE (work_tree == NULL, 0))
- goto parse_bracket_exp_espace;
+ /* Then join them by ALT node. */
+ work_tree = create_tree (dfa, work_tree, mbc_tree, OP_ALT);
+ if (BE (work_tree == NULL, 0))
+ goto parse_bracket_exp_espace;
}
else
{
@@ -3235,7 +3264,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
br_token.opr.sbcset = sbcset;
work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
if (BE (work_tree == NULL, 0))
- goto parse_bracket_exp_espace;
+ goto parse_bracket_exp_espace;
}
return work_tree;
@@ -3788,7 +3817,7 @@ duplicate_tree (const bin_tree_t *root, re_dfa_t *dfa)
node = node->parent;
dup_node = dup_node->parent;
if (!node)
- return dup_root;
+ return dup_root;
}
node = node->right;
p_new = &dup_node->right;
diff --git a/posix/regex_internal.c b/posix/regex_internal.c
index 01a432e801..ff28e5fcb9 100644
--- a/posix/regex_internal.c
+++ b/posix/regex_internal.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2002-2006, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -36,7 +36,7 @@ static re_dfastate_t *create_cd_newstate (const re_dfa_t *dfa,
re_string_reconstruct before using the object. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
re_string_allocate (re_string_t *pstr, const char *str, int len, int init_len,
RE_TRANSLATE_TYPE trans, int icase, const re_dfa_t *dfa)
{
@@ -64,7 +64,7 @@ re_string_allocate (re_string_t *pstr, const char *str, int len, int init_len,
/* This function allocate the buffers, and initialize them. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
re_string_construct (re_string_t *pstr, const char *str, int len,
RE_TRANSLATE_TYPE trans, int icase, const re_dfa_t *dfa)
{
@@ -127,7 +127,7 @@ re_string_construct (re_string_t *pstr, const char *str, int len,
/* Helper functions for re_string_allocate, and re_string_construct. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
re_string_realloc_buffers (re_string_t *pstr, int new_buf_len)
{
#ifdef RE_ENABLE_I18N
@@ -229,7 +229,7 @@ build_wcs_buffer (re_string_t *pstr)
}
else
p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + byte_idx;
- mbclen = mbrtowc (&wc, p, remain_len, &pstr->cur_state);
+ mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state);
if (BE (mbclen == (size_t) -2, 0))
{
/* The buffer doesn't have enough space, finish to build. */
@@ -260,7 +260,7 @@ build_wcs_buffer (re_string_t *pstr)
but for REG_ICASE. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
build_wcs_upper_buffer (re_string_t *pstr)
{
mbstate_t prev_st;
@@ -299,9 +299,9 @@ build_wcs_upper_buffer (re_string_t *pstr)
remain_len = end_idx - byte_idx;
prev_st = pstr->cur_state;
- mbclen = mbrtowc (&wc,
- ((const char *) pstr->raw_mbs + pstr->raw_mbs_idx
- + byte_idx), remain_len, &pstr->cur_state);
+ mbclen = __mbrtowc (&wc,
+ ((const char *) pstr->raw_mbs + pstr->raw_mbs_idx
+ + byte_idx), remain_len, &pstr->cur_state);
if (BE (mbclen + 2 > 2, 1))
{
wchar_t wcu = wc;
@@ -369,7 +369,7 @@ build_wcs_upper_buffer (re_string_t *pstr)
}
else
p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + src_idx;
- mbclen = mbrtowc (&wc, p, remain_len, &pstr->cur_state);
+ mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state);
if (BE (mbclen + 2 > 2, 1))
{
wchar_t wcu = wc;
@@ -423,8 +423,8 @@ build_wcs_upper_buffer (re_string_t *pstr)
src_idx += mbclen;
continue;
}
- else
- memcpy (pstr->mbs + byte_idx, p, mbclen);
+ else
+ memcpy (pstr->mbs + byte_idx, p, mbclen);
}
else
memcpy (pstr->mbs + byte_idx, p, mbclen);
@@ -491,8 +491,8 @@ re_string_skip_chars (re_string_t *pstr, int new_raw_idx, wint_t *last_wc)
int remain_len;
remain_len = pstr->len - rawbuf_idx;
prev_st = pstr->cur_state;
- mbclen = mbrtowc (&wc, (const char *) pstr->raw_mbs + rawbuf_idx,
- remain_len, &pstr->cur_state);
+ mbclen = __mbrtowc (&wc, (const char *) pstr->raw_mbs + rawbuf_idx,
+ remain_len, &pstr->cur_state);
if (BE (mbclen == (size_t) -2 || mbclen == (size_t) -1 || mbclen == 0, 0))
{
/* We treat these cases as a single byte character. */
@@ -559,7 +559,7 @@ re_string_translate_buffer (re_string_t *pstr)
convert to upper case in case of REG_ICASE, apply translation. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
re_string_reconstruct (re_string_t *pstr, int idx, int eflags)
{
int offset = idx - pstr->raw_mbs_idx;
@@ -734,8 +734,8 @@ re_string_reconstruct (re_string_t *pstr, int idx, int eflags)
/* XXX Don't use mbrtowc, we know which conversion
to use (UTF-8 -> UCS4). */
memset (&cur_state, 0, sizeof (cur_state));
- mbclen = mbrtowc (&wc2, (const char *) p, mlen,
- &cur_state);
+ mbclen = __mbrtowc (&wc2, (const char *) p, mlen,
+ &cur_state);
if (raw + offset - p <= mbclen
&& mbclen < (size_t) -2)
{
@@ -951,7 +951,7 @@ re_string_context_at (const re_string_t *input, int idx, int eflags)
/* Functions for set operation. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
re_node_set_alloc (re_node_set *set, int size)
{
set->alloc = size;
@@ -963,7 +963,7 @@ re_node_set_alloc (re_node_set *set, int size)
}
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
re_node_set_init_1 (re_node_set *set, int elem)
{
set->alloc = 1;
@@ -979,7 +979,7 @@ re_node_set_init_1 (re_node_set *set, int elem)
}
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
re_node_set_init_2 (re_node_set *set, int elem1, int elem2)
{
set->alloc = 2;
@@ -1009,7 +1009,7 @@ re_node_set_init_2 (re_node_set *set, int elem1, int elem2)
}
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
re_node_set_init_copy (re_node_set *dest, const re_node_set *src)
{
dest->nelem = src->nelem;
@@ -1034,7 +1034,7 @@ re_node_set_init_copy (re_node_set *dest, const re_node_set *src)
Note: We assume dest->elems is NULL, when dest->alloc is 0. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
re_node_set_add_intersect (re_node_set *dest, const re_node_set *src1,
const re_node_set *src2)
{
@@ -1049,7 +1049,7 @@ re_node_set_add_intersect (re_node_set *dest, const re_node_set *src1,
int new_alloc = src1->nelem + src2->nelem + dest->alloc;
int *new_elems = re_realloc (dest->elems, int, new_alloc);
if (BE (new_elems == NULL, 0))
- return REG_ESPACE;
+ return REG_ESPACE;
dest->elems = new_elems;
dest->alloc = new_alloc;
}
@@ -1068,8 +1068,8 @@ re_node_set_add_intersect (re_node_set *dest, const re_node_set *src1,
while (id >= 0 && dest->elems[id] > src1->elems[i1])
--id;
- if (id < 0 || dest->elems[id] != src1->elems[i1])
- dest->elems[--sbase] = src1->elems[i1];
+ if (id < 0 || dest->elems[id] != src1->elems[i1])
+ dest->elems[--sbase] = src1->elems[i1];
if (--i1 < 0 || --i2 < 0)
break;
@@ -1099,20 +1099,20 @@ re_node_set_add_intersect (re_node_set *dest, const re_node_set *src1,
if (delta > 0 && id >= 0)
for (;;)
{
- if (dest->elems[is] > dest->elems[id])
- {
- /* Copy from the top. */
- dest->elems[id + delta--] = dest->elems[is--];
- if (delta == 0)
- break;
- }
- else
- {
- /* Slide from the bottom. */
- dest->elems[id + delta] = dest->elems[id];
- if (--id < 0)
- break;
- }
+ if (dest->elems[is] > dest->elems[id])
+ {
+ /* Copy from the top. */
+ dest->elems[id + delta--] = dest->elems[is--];
+ if (delta == 0)
+ break;
+ }
+ else
+ {
+ /* Slide from the bottom. */
+ dest->elems[id + delta] = dest->elems[id];
+ if (--id < 0)
+ break;
+ }
}
/* Copy remaining SRC elements. */
@@ -1125,7 +1125,7 @@ re_node_set_add_intersect (re_node_set *dest, const re_node_set *src1,
DEST. Return value indicate the error code or REG_NOERROR if succeeded. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
re_node_set_init_union (re_node_set *dest, const re_node_set *src1,
const re_node_set *src2)
{
@@ -1178,7 +1178,7 @@ re_node_set_init_union (re_node_set *dest, const re_node_set *src1,
DEST. Return value indicate the error code or REG_NOERROR if succeeded. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
re_node_set_merge (re_node_set *dest, const re_node_set *src)
{
int is, id, sbase, delta;
@@ -1207,11 +1207,11 @@ re_node_set_merge (re_node_set *dest, const re_node_set *src)
is = src->nelem - 1, id = dest->nelem - 1; is >= 0 && id >= 0; )
{
if (dest->elems[id] == src->elems[is])
- is--, id--;
+ is--, id--;
else if (dest->elems[id] < src->elems[is])
- dest->elems[--sbase] = src->elems[is--];
+ dest->elems[--sbase] = src->elems[is--];
else /* if (dest->elems[id] > src->elems[is]) */
- --id;
+ --id;
}
if (is >= 0)
@@ -1233,21 +1233,21 @@ re_node_set_merge (re_node_set *dest, const re_node_set *src)
for (;;)
{
if (dest->elems[is] > dest->elems[id])
- {
+ {
/* Copy from the top. */
- dest->elems[id + delta--] = dest->elems[is--];
+ dest->elems[id + delta--] = dest->elems[is--];
if (delta == 0)
break;
}
else
- {
- /* Slide from the bottom. */
- dest->elems[id + delta] = dest->elems[id];
+ {
+ /* Slide from the bottom. */
+ dest->elems[id + delta] = dest->elems[id];
if (--id < 0)
{
/* Copy remaining SRC elements. */
memcpy (dest->elems, dest->elems + sbase,
- delta * sizeof (int));
+ delta * sizeof (int));
break;
}
}
@@ -1261,7 +1261,7 @@ re_node_set_merge (re_node_set *dest, const re_node_set *src)
return -1 if an error is occured, return 1 otherwise. */
static int
-internal_function
+internal_function __attribute_warn_unused_result__
re_node_set_insert (re_node_set *set, int elem)
{
int idx;
@@ -1299,12 +1299,12 @@ re_node_set_insert (re_node_set *set, int elem)
{
idx = 0;
for (idx = set->nelem; idx > 0; idx--)
- set->elems[idx] = set->elems[idx - 1];
+ set->elems[idx] = set->elems[idx - 1];
}
else
{
for (idx = set->nelem; set->elems[idx - 1] > elem; idx--)
- set->elems[idx] = set->elems[idx - 1];
+ set->elems[idx] = set->elems[idx - 1];
}
/* Insert the new element. */
@@ -1318,7 +1318,7 @@ re_node_set_insert (re_node_set *set, int elem)
Return -1 if an error is occured, return 1 otherwise. */
static int
-internal_function
+internal_function __attribute_warn_unused_result__
re_node_set_insert_last (re_node_set *set, int elem)
{
/* Realloc if we need. */
@@ -1458,7 +1458,7 @@ calc_state_hash (const re_node_set *nodes, unsigned int context)
optimization. */
static re_dfastate_t *
-internal_function
+internal_function __attribute_warn_unused_result__
re_acquire_state (reg_errcode_t *err, const re_dfa_t *dfa,
const re_node_set *nodes)
{
@@ -1502,7 +1502,7 @@ re_acquire_state (reg_errcode_t *err, const re_dfa_t *dfa,
optimization. */
static re_dfastate_t *
-internal_function
+internal_function __attribute_warn_unused_result__
re_acquire_state_context (reg_errcode_t *err, const re_dfa_t *dfa,
const re_node_set *nodes, unsigned int context)
{
@@ -1539,6 +1539,7 @@ re_acquire_state_context (reg_errcode_t *err, const re_dfa_t *dfa,
indicates the error code if failed. */
static reg_errcode_t
+__attribute_warn_unused_result__
register_state (const re_dfa_t *dfa, re_dfastate_t *newstate,
unsigned int hash)
{
@@ -1554,7 +1555,8 @@ register_state (const re_dfa_t *dfa, re_dfastate_t *newstate,
{
int elem = newstate->nodes.elems[i];
if (!IS_EPSILON_NODE (dfa->nodes[elem].type))
- re_node_set_insert_last (&newstate->non_eps_nodes, elem);
+ if (re_node_set_insert_last (&newstate->non_eps_nodes, elem) < 0)
+ return REG_ESPACE;
}
spot = dfa->state_table + (hash & dfa->state_hash_mask);
@@ -1592,7 +1594,7 @@ free_state (re_dfastate_t *state)
Return the new state if succeeded, otherwise return NULL. */
static re_dfastate_t *
-internal_function
+internal_function __attribute_warn_unused_result__
create_ci_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
unsigned int hash)
{
@@ -1642,7 +1644,7 @@ create_ci_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
Return the new state if succeeded, otherwise return NULL. */
static re_dfastate_t *
-internal_function
+internal_function __attribute_warn_unused_result__
create_cd_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
unsigned int context, unsigned int hash)
{
@@ -1691,7 +1693,9 @@ create_cd_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
free_state (newstate);
return NULL;
}
- re_node_set_init_copy (newstate->entrance_nodes, nodes);
+ if (re_node_set_init_copy (newstate->entrance_nodes, nodes)
+ != REG_NOERROR)
+ return NULL;
nctx_nodes = 0;
newstate->has_constraint = 1;
}
diff --git a/posix/regex_internal.h b/posix/regex_internal.h
index 24d0fbba7d..65a9905860 100644
--- a/posix/regex_internal.h
+++ b/posix/regex_internal.h
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2002-2005, 2007, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -116,6 +116,7 @@
# define __wctype wctype
# define __iswctype iswctype
# define __btowc btowc
+# define __mbrtowc mbrtowc
# define __mempcpy mempcpy
# define __wcrtomb wcrtomb
# define __regfree regfree
@@ -391,7 +392,8 @@ static reg_errcode_t re_string_realloc_buffers (re_string_t *pstr,
internal_function;
# ifdef RE_ENABLE_I18N
static void build_wcs_buffer (re_string_t *pstr) internal_function;
-static int build_wcs_upper_buffer (re_string_t *pstr) internal_function;
+static reg_errcode_t build_wcs_upper_buffer (re_string_t *pstr)
+ internal_function;
# endif /* RE_ENABLE_I18N */
static void build_upper_buffer (re_string_t *pstr) internal_function;
static void re_string_translate_buffer (re_string_t *pstr) internal_function;
diff --git a/posix/regexec.c b/posix/regexec.c
index 135efe7441..b8db74062b 100644
--- a/posix/regexec.c
+++ b/posix/regexec.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2002-2005, 2007, 2009, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -617,6 +617,7 @@ re_exec (s)
(START + RANGE >= 0 && START + RANGE <= LENGTH) */
static reg_errcode_t
+__attribute_warn_unused_result__
re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
eflags)
const regex_t *preg;
@@ -668,7 +669,7 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
|| !preg->newline_anchor))
{
if (start != 0 && start + range != 0)
- return REG_NOMATCH;
+ return REG_NOMATCH;
start = range = 0;
}
@@ -800,10 +801,10 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
break;
match_first += incr;
if (match_first < left_lim || match_first > right_lim)
- {
- err = REG_NOMATCH;
- goto free_return;
- }
+ {
+ err = REG_NOMATCH;
+ goto free_return;
+ }
}
break;
}
@@ -917,14 +918,14 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
}
if (dfa->subexp_map)
- for (reg_idx = 0; reg_idx + 1 < nmatch; reg_idx++)
- if (dfa->subexp_map[reg_idx] != reg_idx)
- {
- pmatch[reg_idx + 1].rm_so
- = pmatch[dfa->subexp_map[reg_idx] + 1].rm_so;
- pmatch[reg_idx + 1].rm_eo
- = pmatch[dfa->subexp_map[reg_idx] + 1].rm_eo;
- }
+ for (reg_idx = 0; reg_idx + 1 < nmatch; reg_idx++)
+ if (dfa->subexp_map[reg_idx] != reg_idx)
+ {
+ pmatch[reg_idx + 1].rm_so
+ = pmatch[dfa->subexp_map[reg_idx] + 1].rm_so;
+ pmatch[reg_idx + 1].rm_eo
+ = pmatch[dfa->subexp_map[reg_idx] + 1].rm_eo;
+ }
}
free_return:
@@ -936,6 +937,7 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
}
static reg_errcode_t
+__attribute_warn_unused_result__
prune_impossible_nodes (mctx)
re_match_context_t *mctx;
{
@@ -1004,6 +1006,11 @@ prune_impossible_nodes (mctx)
re_node_set_free (&sctx.limits);
if (BE (ret != REG_NOERROR, 0))
goto free_return;
+ if (sifted_states[0] == NULL)
+ {
+ ret = REG_NOMATCH;
+ goto free_return;
+ }
}
re_free (mctx->state_log);
mctx->state_log = sifted_states;
@@ -1064,7 +1071,7 @@ acquire_init_state_context (reg_errcode_t *err, const re_match_context_t *mctx,
index of the buffer. */
static int
-internal_function
+internal_function __attribute_warn_unused_result__
check_matching (re_match_context_t *mctx, int fl_longest_match,
int *p_match_first)
{
@@ -1103,7 +1110,7 @@ check_matching (re_match_context_t *mctx, int fl_longest_match,
{
err = transit_state_bkref (mctx, &cur_state->nodes);
if (BE (err != REG_NOERROR, 0))
- return err;
+ return err;
}
}
}
@@ -1130,16 +1137,16 @@ check_matching (re_match_context_t *mctx, int fl_longest_match,
int next_char_idx = re_string_cur_idx (&mctx->input) + 1;
if (BE (next_char_idx >= mctx->input.bufs_len, 0)
- || (BE (next_char_idx >= mctx->input.valid_len, 0)
- && mctx->input.valid_len < mctx->input.len))
- {
- err = extend_buffers (mctx);
- if (BE (err != REG_NOERROR, 0))
+ || (BE (next_char_idx >= mctx->input.valid_len, 0)
+ && mctx->input.valid_len < mctx->input.len))
+ {
+ err = extend_buffers (mctx);
+ if (BE (err != REG_NOERROR, 0))
{
assert (err == REG_ESPACE);
return -2;
}
- }
+ }
cur_state = transit_state (&err, mctx, cur_state);
if (mctx->state_log != NULL)
@@ -1258,20 +1265,20 @@ proceed_next_node (const re_match_context_t *mctx, int nregs, regmatch_t *regs,
int candidate = edests->elems[i];
if (!re_node_set_contains (cur_nodes, candidate))
continue;
- if (dest_node == -1)
+ if (dest_node == -1)
dest_node = candidate;
- else
+ else
{
/* In order to avoid infinite loop like "(a*)*", return the second
- epsilon-transition if the first was already considered. */
+ epsilon-transition if the first was already considered. */
if (re_node_set_contains (eps_via_nodes, dest_node))
- return candidate;
+ return candidate;
/* Otherwise, push the second epsilon-transition on the fail stack. */
else if (fs != NULL
&& push_fail_stack (fs, *pidx, candidate, nregs, regs,
- eps_via_nodes))
+ eps_via_nodes))
return -2;
/* We know we are going to exit. */
@@ -1337,7 +1344,7 @@ proceed_next_node (const re_match_context_t *mctx, int nregs, regmatch_t *regs,
}
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
push_fail_stack (struct re_fail_stack_t *fs, int str_idx, int dest_node,
int nregs, regmatch_t *regs, re_node_set *eps_via_nodes)
{
@@ -1384,7 +1391,7 @@ pop_fail_stack (struct re_fail_stack_t *fs, int *pidx, int nregs,
pmatch[i].rm_so == pmatch[i].rm_eo == -1 for 0 < i < nmatch. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
set_regs (const regex_t *preg, const re_match_context_t *mctx, size_t nmatch,
regmatch_t *pmatch, int fl_backtrack)
{
@@ -1619,7 +1626,7 @@ sift_states_backward (const re_match_context_t *mctx, re_sift_context_t *sctx)
if (mctx->state_log[str_idx])
{
err = build_sifted_states (mctx, sctx, str_idx, &cur_dest);
- if (BE (err != REG_NOERROR, 0))
+ if (BE (err != REG_NOERROR, 0))
goto free_return;
}
@@ -1638,7 +1645,7 @@ sift_states_backward (const re_match_context_t *mctx, re_sift_context_t *sctx)
}
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
build_sifted_states (const re_match_context_t *mctx, re_sift_context_t *sctx,
int str_idx, re_node_set *cur_dest)
{
@@ -1800,7 +1807,7 @@ update_cur_sifted_state (const re_match_context_t *mctx,
}
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
add_epsilon_src_nodes (const re_dfa_t *dfa, re_node_set *dest_nodes,
const re_node_set *candidates)
{
@@ -1815,10 +1822,14 @@ add_epsilon_src_nodes (const re_dfa_t *dfa, re_node_set *dest_nodes,
{
err = re_node_set_alloc (&state->inveclosure, dest_nodes->nelem);
if (BE (err != REG_NOERROR, 0))
- return REG_ESPACE;
+ return REG_ESPACE;
for (i = 0; i < dest_nodes->nelem; i++)
- re_node_set_merge (&state->inveclosure,
- dfa->inveclosures + dest_nodes->elems[i]);
+ {
+ err = re_node_set_merge (&state->inveclosure,
+ dfa->inveclosures + dest_nodes->elems[i]);
+ if (BE (err != REG_NOERROR, 0))
+ return REG_ESPACE;
+ }
}
return re_node_set_add_intersect (dest_nodes, candidates,
&state->inveclosure);
@@ -1930,7 +1941,7 @@ check_dst_limits_calc_pos_1 (const re_match_context_t *mctx, int boundaries,
{
struct re_backref_cache_entry *ent = mctx->bkref_ents + bkref_idx;
do
- {
+ {
int dst, cpos;
if (ent->node != node)
@@ -1951,9 +1962,9 @@ check_dst_limits_calc_pos_1 (const re_match_context_t *mctx, int boundaries,
if (dst == from_node)
{
if (boundaries & 1)
- return -1;
+ return -1;
else /* if (boundaries & 2) */
- return 0;
+ return 0;
}
cpos =
@@ -1967,7 +1978,7 @@ check_dst_limits_calc_pos_1 (const re_match_context_t *mctx, int boundaries,
if (subexp_idx < BITSET_WORD_BITS)
ent->eps_reachable_subexps_map
&= ~((bitset_word_t) 1 << subexp_idx);
- }
+ }
while (ent++->more);
}
break;
@@ -2109,7 +2120,7 @@ check_subexp_limits (const re_dfa_t *dfa, re_node_set *dest_nodes,
}
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
sift_states_bkref (const re_match_context_t *mctx, re_sift_context_t *sctx,
int str_idx, const re_node_set *candidates)
{
@@ -2192,7 +2203,7 @@ sift_states_bkref (const re_match_context_t *mctx, re_sift_context_t *sctx,
re_node_set_remove (&local_sctx.limits, enabled_idx);
/* mctx->bkref_ents may have changed, reload the pointer. */
- entry = mctx->bkref_ents + enabled_idx;
+ entry = mctx->bkref_ents + enabled_idx;
}
while (enabled_idx++, entry++->more);
}
@@ -2239,7 +2250,7 @@ sift_states_iter_mb (const re_match_context_t *mctx, re_sift_context_t *sctx,
update the destination of STATE_LOG. */
static re_dfastate_t *
-internal_function
+internal_function __attribute_warn_unused_result__
transit_state (reg_errcode_t *err, re_match_context_t *mctx,
re_dfastate_t *state)
{
@@ -2273,7 +2284,7 @@ transit_state (reg_errcode_t *err, re_match_context_t *mctx,
trtable = state->word_trtable;
if (BE (trtable != NULL, 1))
- {
+ {
unsigned int context;
context
= re_string_context_at (&mctx->input,
@@ -2319,21 +2330,21 @@ merge_state_with_log (reg_errcode_t *err, re_match_context_t *mctx,
unsigned int context;
re_node_set next_nodes, *log_nodes, *table_nodes = NULL;
/* If (state_log[cur_idx] != 0), it implies that cur_idx is
- the destination of a multibyte char/collating element/
- back reference. Then the next state is the union set of
- these destinations and the results of the transition table. */
+ the destination of a multibyte char/collating element/
+ back reference. Then the next state is the union set of
+ these destinations and the results of the transition table. */
pstate = mctx->state_log[cur_idx];
log_nodes = pstate->entrance_nodes;
if (next_state != NULL)
- {
- table_nodes = next_state->entrance_nodes;
- *err = re_node_set_init_union (&next_nodes, table_nodes,
+ {
+ table_nodes = next_state->entrance_nodes;
+ *err = re_node_set_init_union (&next_nodes, table_nodes,
log_nodes);
- if (BE (*err != REG_NOERROR, 0))
+ if (BE (*err != REG_NOERROR, 0))
return NULL;
- }
+ }
else
- next_nodes = *log_nodes;
+ next_nodes = *log_nodes;
/* Note: We already add the nodes of the initial state,
then we don't need to add them here. */
@@ -2341,12 +2352,12 @@ merge_state_with_log (reg_errcode_t *err, re_match_context_t *mctx,
re_string_cur_idx (&mctx->input) - 1,
mctx->eflags);
next_state = mctx->state_log[cur_idx]
- = re_acquire_state_context (err, dfa, &next_nodes, context);
+ = re_acquire_state_context (err, dfa, &next_nodes, context);
/* We don't need to check errors here, since the return value of
- this function is next_state and ERR is already set. */
+ this function is next_state and ERR is already set. */
if (table_nodes != NULL)
- re_node_set_free (&next_nodes);
+ re_node_set_free (&next_nodes);
}
if (BE (dfa->nbackref, 0) && next_state != NULL)
@@ -2387,9 +2398,9 @@ find_recover_state (reg_errcode_t *err, re_match_context_t *mctx)
do
{
- if (++cur_str_idx > max)
- return NULL;
- re_string_skip_bytes (&mctx->input, 1);
+ if (++cur_str_idx > max)
+ return NULL;
+ re_string_skip_bytes (&mctx->input, 1);
}
while (mctx->state_log[cur_str_idx] == NULL);
@@ -2496,7 +2507,7 @@ transit_state_mb (re_match_context_t *mctx, re_dfastate_t *pstate)
re_dfastate_t *dest_state;
if (!dfa->nodes[cur_node_idx].accept_mb)
- continue;
+ continue;
if (dfa->nodes[cur_node_idx].constraint)
{
@@ -2664,7 +2675,7 @@ transit_state_bkref (re_match_context_t *mctx, const re_node_set *nodes)
delay these checking for prune_impossible_nodes(). */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
get_subexp (re_match_context_t *mctx, int bkref_node, int bkref_str_idx)
{
const re_dfa_t *const dfa = mctx->dfa;
@@ -2677,7 +2688,7 @@ get_subexp (re_match_context_t *mctx, int bkref_node, int bkref_str_idx)
const struct re_backref_cache_entry *entry
= mctx->bkref_ents + cache_idx;
do
- if (entry->node == bkref_node)
+ if (entry->node == bkref_node)
return REG_NOERROR; /* We already checked it. */
while (entry++->more);
}
@@ -2864,7 +2875,7 @@ find_subexp_node (const re_dfa_t *dfa, const re_node_set *nodes,
Return REG_NOERROR if it can arrive, or REG_NOMATCH otherwise. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
check_arrival (re_match_context_t *mctx, state_array_t *path, int top_node,
int top_str, int last_node, int last_str, int type)
{
@@ -3025,7 +3036,7 @@ check_arrival (re_match_context_t *mctx, state_array_t *path, int top_node,
Can't we unify them? */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
check_arrival_add_next_nodes (re_match_context_t *mctx, int str_idx,
re_node_set *cur_nodes, re_node_set *next_nodes)
{
@@ -3157,7 +3168,7 @@ check_arrival_expand_ecl (const re_dfa_t *dfa, re_node_set *cur_nodes,
problematic append it to DST_NODES. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
check_arrival_expand_ecl_sub (const re_dfa_t *dfa, re_node_set *dst_nodes,
int target, int ex_subexp, int type)
{
@@ -3201,7 +3212,7 @@ check_arrival_expand_ecl_sub (const re_dfa_t *dfa, re_node_set *dst_nodes,
in MCTX->BKREF_ENTS. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
expand_bkref_cache (re_match_context_t *mctx, re_node_set *cur_nodes,
int cur_str, int subexp_num, int type)
{
@@ -3559,13 +3570,13 @@ group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
}
#ifdef RE_ENABLE_I18N
else if (type == OP_UTF8_PERIOD)
- {
+ {
memset (accepts, '\xff', sizeof (bitset_t) / 2);
if (!(dfa->syntax & RE_DOT_NEWLINE))
bitset_clear (accepts, '\n');
if (dfa->syntax & RE_DOT_NOT_NULL)
bitset_clear (accepts, '\0');
- }
+ }
#endif
else
continue;
@@ -3770,7 +3781,7 @@ check_node_accept_bytes (const re_dfa_t *dfa, int node_idx,
if (node->type == OP_PERIOD)
{
if (char_len <= 1)
- return 0;
+ return 0;
/* FIXME: I don't think this if is needed, as both '\n'
and '\0' are char_len == 1. */
/* '.' accepts any one character except the following two cases. */
@@ -4020,18 +4031,18 @@ check_node_accept (const re_match_context_t *mctx, const re_token_t *node,
{
case CHARACTER:
if (node->opr.c != ch)
- return 0;
+ return 0;
break;
case SIMPLE_BRACKET:
if (!bitset_contain (node->opr.sbcset, ch))
- return 0;
+ return 0;
break;
#ifdef RE_ENABLE_I18N
case OP_UTF8_PERIOD:
if (ch >= 0x80)
- return 0;
+ return 0;
/* FALLTHROUGH */
#endif
case OP_PERIOD:
@@ -4060,7 +4071,7 @@ check_node_accept (const re_match_context_t *mctx, const re_token_t *node,
/* Extend the buffers, if the buffers have run out. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
extend_buffers (re_match_context_t *mctx)
{
reg_errcode_t ret;
@@ -4119,7 +4130,7 @@ extend_buffers (re_match_context_t *mctx)
/* Initialize MCTX. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
match_ctx_init (re_match_context_t *mctx, int eflags, int n)
{
mctx->eflags = eflags;
@@ -4192,7 +4203,7 @@ match_ctx_free (re_match_context_t *mctx)
*/
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
match_ctx_add_entry (re_match_context_t *mctx, int node, int str_idx, int from,
int to)
{
@@ -4264,7 +4275,7 @@ search_cur_bkref_entry (const re_match_context_t *mctx, int str_idx)
at STR_IDX. */
static reg_errcode_t
-internal_function
+internal_function __attribute_warn_unused_result__
match_ctx_add_subtop (re_match_context_t *mctx, int node, int str_idx)
{
#ifdef DEBUG
diff --git a/posix/rxspencer/tests b/posix/rxspencer/tests
index b84a270cda..3ad46e2a61 100644
--- a/posix/rxspencer/tests
+++ b/posix/rxspencer/tests
@@ -536,3 +536,7 @@ a.*\b & abT ab
\B & aSbTc
\B & SaT @SaT
\B & aSTSb @TSb
+
+o$($|.) - oN
+o$($|.) - op
+o$($|.) - o o
diff --git a/posix/sched.h b/posix/sched.h
index e95c80f562..55bc487b37 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -1,5 +1,6 @@
/* Definitions for POSIX 1003.1b-1993 (aka POSIX.4) scheduling interface.
- Copyright (C) 1996,1997,1999,2001-2004,2007 Free Software Foundation, Inc.
+ Copyright (C) 1996,1997,1999,2001-2004,2007,2010
+ 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
@@ -28,9 +29,16 @@
#define __need_size_t
#include <stddef.h>
+#define __need_time_t
#define __need_timespec
#include <time.h>
+#ifndef __pid_t_defined
+typedef __pid_t pid_t;
+# define __pid_t_defined
+#endif
+
+
/* Get system specific constant and data structure definitions. */
#include <bits/sched.h>
/* Define the real names for the elements of `struct sched_param'. */
diff --git a/posix/spawn.h b/posix/spawn.h
index ff77fcc8f9..85ac69bf44 100644
--- a/posix/spawn.h
+++ b/posix/spawn.h
@@ -1,5 +1,5 @@
/* Definitions for POSIX spawn interface.
- Copyright (C) 2000, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2003, 2004, 2009 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
@@ -74,8 +74,8 @@ extern int posix_spawn (pid_t *__restrict __pid,
__const posix_spawn_file_actions_t *__restrict
__file_actions,
__const posix_spawnattr_t *__restrict __attrp,
- char *__const argv[__restrict_arr],
- char *__const envp[__restrict_arr]);
+ char *__const __argv[__restrict_arr],
+ char *__const __envp[__restrict_arr]);
/* Similar to `posix_spawn' but search for FILE in the PATH.
@@ -84,7 +84,7 @@ extern int posix_spawn (pid_t *__restrict __pid,
extern int posix_spawnp (pid_t *__pid, __const char *__file,
__const posix_spawn_file_actions_t *__file_actions,
__const posix_spawnattr_t *__attrp,
- char *__const argv[], char *__const envp[]);
+ char *__const __argv[], char *__const __envp[]);
/* Initialize data structure with attributes for `spawn' to default values. */
diff --git a/posix/sys/types.h b/posix/sys/types.h
index 04563a4abc..a7e9084e2e 100644
--- a/posix/sys/types.h
+++ b/posix/sys/types.h
@@ -1,5 +1,4 @@
-/* Copyright (C) 1991,1992,1994,1995,1996,1997,1998,1999,2000,2001,2002,2006
- Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1994-2002,2006,2010 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
@@ -101,7 +100,8 @@ typedef __pid_t pid_t;
# define __pid_t_defined
#endif
-#if (defined __USE_SVID || defined __USE_XOPEN) && !defined __id_t_defined
+#if (defined __USE_SVID || defined __USE_XOPEN || defined __USE_XOPEN2K8) \
+ && !defined __id_t_defined
typedef __id_t id_t;
# define __id_t_defined
#endif
@@ -124,7 +124,7 @@ typedef __key_t key_t;
# define __key_t_defined
#endif
-#ifdef __USE_XOPEN
+#if defined __USE_XOPEN || defined __USE_XOPEN2K8
# define __need_clock_t
#endif
#define __need_time_t
@@ -224,7 +224,8 @@ typedef int register_t __attribute__ ((__mode__ (__word__)));
#endif /* Use BSD. */
-#if defined __USE_UNIX98 && !defined __blksize_t_defined
+#if (defined __USE_UNIX98 || defined __USE_XOPEN2K8) \
+ && !defined __blksize_t_defined
typedef __blksize_t blksize_t;
# define __blksize_t_defined
#endif
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index fe103570db..6d7f0684c1 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -1,5 +1,5 @@
-/* Copyright (C) 1991-1994,1996-2001,2003,2004,2005,2007
- Free Software Foundation, Inc.
+/* Copyright (C) 1991-1994,1996-2001,2003,2004,2005,2007,2009,2010
+ 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
@@ -32,7 +32,7 @@ __BEGIN_DECLS
#include <sys/resource.h>
/* These macros could also be defined in <stdlib.h>. */
-#if !defined _STDLIB_H || !defined __USE_XOPEN
+#if !defined _STDLIB_H || (!defined __USE_XOPEN && !defined __USE_XOPEN2K8)
/* This will define the `W*' macros for the flag
bits to `waitpid', `wait3', and `wait4'. */
# include <bits/waitflags.h>
@@ -45,13 +45,13 @@ __BEGIN_DECLS
# if defined __GNUC__ && !defined __cplusplus
# define __WAIT_INT(status) \
(__extension__ (((union { __typeof(status) __in; int __i; }) \
- { .__in = (status) }).__i))
+ { .__in = (status) }).__i))
# else
# define __WAIT_INT(status) (*(__const int *) &(status))
# endif
/* This is the type of the argument to `wait'. The funky union
- causes redeclarations with ether `int *' or `union wait *' to be
+ causes redeclarations with either `int *' or `union wait *' to be
allowed without complaint. __WAIT_STATUS_DEFN is the type used in
the actual function definitions. */
@@ -79,26 +79,26 @@ typedef union
/* This will define all the `__W*' macros. */
# include <bits/waitstatus.h>
-# define WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status))
-# define WTERMSIG(status) __WTERMSIG(__WAIT_INT(status))
-# define WSTOPSIG(status) __WSTOPSIG(__WAIT_INT(status))
-# define WIFEXITED(status) __WIFEXITED(__WAIT_INT(status))
-# define WIFSIGNALED(status) __WIFSIGNALED(__WAIT_INT(status))
-# define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status))
+# define WEXITSTATUS(status) __WEXITSTATUS (__WAIT_INT (status))
+# define WTERMSIG(status) __WTERMSIG (__WAIT_INT (status))
+# define WSTOPSIG(status) __WSTOPSIG (__WAIT_INT (status))
+# define WIFEXITED(status) __WIFEXITED (__WAIT_INT (status))
+# define WIFSIGNALED(status) __WIFSIGNALED (__WAIT_INT (status))
+# define WIFSTOPPED(status) __WIFSTOPPED (__WAIT_INT (status))
# ifdef __WIFCONTINUED
-# define WIFCONTINUED(status) __WIFCONTINUED(__WAIT_INT(status))
+# define WIFCONTINUED(status) __WIFCONTINUED (__WAIT_INT (status))
# endif
#endif /* <stdlib.h> not included. */
#ifdef __USE_BSD
# define WCOREFLAG __WCOREFLAG
-# define WCOREDUMP(status) __WCOREDUMP(__WAIT_INT(status))
-# define W_EXITCODE(ret, sig) __W_EXITCODE(ret, sig)
-# define W_STOPCODE(sig) __W_STOPCODE(sig)
+# define WCOREDUMP(status) __WCOREDUMP (__WAIT_INT (status))
+# define W_EXITCODE(ret, sig) __W_EXITCODE (ret, sig)
+# define W_STOPCODE(sig) __W_STOPCODE (sig)
#endif
/* The following values are used by the `waitid' function. */
-#if defined __USE_SVID || defined __USE_XOPEN
+#if defined __USE_SVID || defined __USE_XOPEN || defined __USE_XOPEN2K8
typedef enum
{
P_ALL, /* Wait for any child. */
@@ -138,7 +138,7 @@ extern __pid_t wait (__WAIT_STATUS __stat_loc);
__THROW. */
extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options);
-#if defined __USE_SVID || defined __USE_XOPEN
+#if defined __USE_SVID || defined __USE_XOPEN || defined __USE_XOPEN2K8
# define __need_siginfo_t
# include <bits/siginfo.h>
/* Wait for a childing matching IDTYPE and ID to change the status and
diff --git a/posix/sysconf.c b/posix/sysconf.c
index f22685cb29..971dd8bf77 100644
--- a/posix/sysconf.c
+++ b/posix/sysconf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1993,1995-1997,2001,2002,2003
+/* Copyright (C) 1991,1993,1995-1997,2001,2002,2003,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -255,6 +255,16 @@ __sysconf (name)
case _SC_XBS5_LP64_OFF64:
case _SC_XBS5_LPBIG_OFFBIG:
+ case _SC_POSIX_V6_ILP32_OFF32:
+ case _SC_POSIX_V6_ILP32_OFFBIG:
+ case _SC_POSIX_V6_LP64_OFF64:
+ case _SC_POSIX_V6_LPBIG_OFFBIG:
+
+ case _SC_POSIX_V7_ILP32_OFF32:
+ case _SC_POSIX_V7_ILP32_OFFBIG:
+ case _SC_POSIX_V7_LP64_OFF64:
+ case _SC_POSIX_V7_LPBIG_OFFBIG:
+
case _SC_XOPEN_LEGACY:
case _SC_XOPEN_REALTIME:
case _SC_XOPEN_REALTIME_THREADS:
diff --git a/posix/tst-cpucount.c b/posix/tst-cpucount.c
index fe3cded732..b3691a18da 100644
--- a/posix/tst-cpucount.c
+++ b/posix/tst-cpucount.c
@@ -1,5 +1,6 @@
#include <sched.h>
#include <stdio.h>
+#include <sys/param.h>
static int
do_test (void)
@@ -8,7 +9,7 @@ do_test (void)
CPU_ZERO (&c);
- for (int cnt = 0; cnt < 130; ++cnt)
+ for (int cnt = 0; cnt < MIN (CPU_SETSIZE, 130); ++cnt)
{
int n = CPU_COUNT (&c);
if (n != cnt)
diff --git a/posix/tst-rfc3484-2.c b/posix/tst-rfc3484-2.c
index c85fdd0742..bf5f6cff7e 100644
--- a/posix/tst-rfc3484-2.c
+++ b/posix/tst-rfc3484-2.c
@@ -82,6 +82,8 @@ do_test (void)
struct sockaddr_in so1;
so1.sin_family = AF_INET;
so1.sin_addr.s_addr = h (0xc0a85f19);
+ /* Clear the rest of the structure to avoid warnings. */
+ memset (so1.sin_zero, '\0', sizeof (so1.sin_zero));
struct sockaddr_in sa1;
sa1.sin_family = AF_INET;
diff --git a/posix/tst-rfc3484-3.c b/posix/tst-rfc3484-3.c
index 3aa4563c0c..8eba74e48e 100644
--- a/posix/tst-rfc3484-3.c
+++ b/posix/tst-rfc3484-3.c
@@ -113,6 +113,8 @@ do_test (void)
struct sockaddr_in so;
so.sin_family = AF_INET;
so.sin_addr.s_addr = h (0x0aa85f19);
+ /* Clear the rest of the structure to avoid warnings. */
+ memset (so.sin_zero, '\0', sizeof (so.sin_zero));
for (int i = 0; i < naddrs; ++i)
{
diff --git a/posix/tst-rfc3484.c b/posix/tst-rfc3484.c
index 15d0c94a5e..26835cf8b2 100644
--- a/posix/tst-rfc3484.c
+++ b/posix/tst-rfc3484.c
@@ -102,6 +102,8 @@ do_test (void)
struct sockaddr_in so;
so.sin_family = AF_INET;
so.sin_addr.s_addr = h (0xc0a85f19);
+ /* Clear the rest of the structure to avoid warnings. */
+ memset (so.sin_zero, '\0', sizeof (so.sin_zero));
for (int i = 0; i < naddrs; ++i)
{
diff --git a/posix/tst-sysconf.c b/posix/tst-sysconf.c
index e9ff06a8da..e2972291ae 100644
--- a/posix/tst-sysconf.c
+++ b/posix/tst-sysconf.c
@@ -97,7 +97,7 @@ do_test (void)
result = 1;
}
-#define STDVER 200112L
+#define STDVER 200809L
if (scret > 0 && scret != STDVER && !posix_options[i].positive)
{
printf ("sysconf(_SC_%s%s) must be %ldL\n",
diff --git a/posix/unistd.h b/posix/unistd.h
index 96bb02dff4..f8b84e3cb3 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2006, 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2009, 2010 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
@@ -30,33 +30,63 @@ __BEGIN_DECLS
/* These may be used to determine what facilities are present at compile time.
Their values can be obtained at run time from `sysconf'. */
+#ifdef __USE_XOPEN2K8
+/* POSIX Standard approved as ISO/IEC 9945-1 as of September 2008. */
+# define _POSIX_VERSION 200809L
+#elif defined __USE_XOPEN2K
/* POSIX Standard approved as ISO/IEC 9945-1 as of December 2001. */
-#define _POSIX_VERSION 200112L
+# define _POSIX_VERSION 200112L
+#elif defined __USE_POSIX199506
+/* POSIX Standard approved as ISO/IEC 9945-1 as of June 1995. */
+# define _POSIX_VERSION 199506L
+#elif defined __USE_POSIX199309
+/* POSIX Standard approved as ISO/IEC 9945-1 as of September 1993. */
+# define _POSIX_VERSION 199309L
+#else
+/* POSIX Standard approved as ISO/IEC 9945-1 as of September 1990. */
+# define _POSIX_VERSION 199009L
+#endif
/* These are not #ifdef __USE_POSIX2 because they are
in the theoretically application-owned namespace. */
+#ifdef __USE_XOPEN2K8
+# define __POSIX2_THIS_VERSION 200809L
+/* The utilities on GNU systems also correspond to this version. */
+#elif defined __USE_XOPEN2K
+/* The utilities on GNU systems also correspond to this version. */
+# define __POSIX2_THIS_VERSION 200112L
+#elif defined __USE_POSIX199506
+/* The utilities on GNU systems also correspond to this version. */
+# define __POSIX2_THIS_VERSION 199506L
+#else
+/* The utilities on GNU systems also correspond to this version. */
+# define __POSIX2_THIS_VERSION 199209L
+#endif
+
/* The utilities on GNU systems also correspond to this version. */
-#define _POSIX2_VERSION 200112L
+#define _POSIX2_VERSION __POSIX2_THIS_VERSION
/* If defined, the implementation supports the
C Language Bindings Option. */
-#define _POSIX2_C_BIND 200112L
+#define _POSIX2_C_BIND __POSIX2_THIS_VERSION
/* If defined, the implementation supports the
C Language Development Utilities Option. */
-#define _POSIX2_C_DEV 200112L
+#define _POSIX2_C_DEV __POSIX2_THIS_VERSION
/* If defined, the implementation supports the
Software Development Utilities Option. */
-#define _POSIX2_SW_DEV 200112L
+#define _POSIX2_SW_DEV __POSIX2_THIS_VERSION
/* If defined, the implementation supports the
creation of locales with the localedef utility. */
-#define _POSIX2_LOCALEDEF 200112L
+#define _POSIX2_LOCALEDEF __POSIX2_THIS_VERSION
/* X/Open version number to which the library conforms. It is selectable. */
-#ifdef __USE_XOPEN2K
+#ifdef __USE_XOPEN2K8
+# define _XOPEN_VERSION 700
+#elif defined __USE_XOPEN2K
# define _XOPEN_VERSION 600
#elif defined __USE_UNIX98
# define _XOPEN_VERSION 500
@@ -173,7 +203,7 @@ __BEGIN_DECLS
#include <bits/posix_opt.h>
/* Get the environment definitions from Unix98. */
-#ifdef __USE_UNIX98
+#if defined __USE_UNIX98 || defined __USE_XOPEN2K
# include <bits/environments.h>
#endif
@@ -233,7 +263,7 @@ typedef __pid_t pid_t;
# endif
#endif /* X/Open */
-#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
+#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
# ifndef __intptr_t_defined
typedef __intptr_t intptr_t;
# define __intptr_t_defined
@@ -332,7 +362,7 @@ extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur;
__THROW. */
extern ssize_t write (int __fd, __const void *__buf, size_t __n) __wur;
-#ifdef __USE_UNIX98
+#if defined __USE_UNIX98 || defined __USE_XOPEN2K8
# ifndef __USE_FILE_OFFSET64
/* Read NBYTES into BUF from FD at the given position OFFSET without
changing the file pointer. Return the number read, -1 for errors
@@ -410,7 +440,8 @@ extern unsigned int alarm (unsigned int __seconds) __THROW;
__THROW. */
extern unsigned int sleep (unsigned int __seconds);
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
+ || defined __USE_BSD
/* Set an alarm to go off (generating a SIGALRM signal) in VALUE
microseconds. If INTERVAL is nonzero, when the alarm goes off, the
timer is reset to go off every INTERVAL microseconds thereafter.
@@ -439,7 +470,7 @@ extern int pause (void);
extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
__THROW __nonnull ((1)) __wur;
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
/* Change the owner and group of the file that FD is open on. */
extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __THROW __wur;
@@ -462,7 +493,7 @@ extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
/* Change the process's working directory to PATH. */
extern int chdir (__const char *__path) __THROW __nonnull ((1)) __wur;
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
/* Change the process's working directory to the one FD is open on. */
extern int fchdir (int __fd) __THROW __wur;
#endif
@@ -483,7 +514,8 @@ extern char *getcwd (char *__buf, size_t __size) __THROW __wur;
extern char *get_current_dir_name (void) __THROW;
#endif
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
+ || defined __USE_BSD
/* Put the absolute pathname of the current working directory in BUF.
If successful, return BUF. If not, put an error message in
BUF and return NULL. BUF should be at least PATH_MAX bytes long. */
@@ -514,40 +546,48 @@ extern char **environ;
/* Replace the current process, executing PATH with arguments ARGV and
environment ENVP. ARGV and ENVP are terminated by NULL pointers. */
extern int execve (__const char *__path, char *__const __argv[],
- char *__const __envp[]) __THROW __nonnull ((1));
+ char *__const __envp[]) __THROW __nonnull ((1, 2));
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* Execute the file FD refers to, overlaying the running program image.
ARGV and ENVP are passed to the new program, as for `execve'. */
extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
- __THROW;
+ __THROW __nonnull ((2));
#endif
/* Execute PATH with arguments ARGV and environment from `environ'. */
extern int execv (__const char *__path, char *__const __argv[])
- __THROW __nonnull ((1));
+ __THROW __nonnull ((1, 2));
/* Execute PATH with all arguments after PATH until a NULL pointer,
and the argument after that for environment. */
extern int execle (__const char *__path, __const char *__arg, ...)
- __THROW __nonnull ((1));
+ __THROW __nonnull ((1, 2));
/* Execute PATH with all arguments after PATH until
a NULL pointer and environment from `environ'. */
extern int execl (__const char *__path, __const char *__arg, ...)
- __THROW __nonnull ((1));
+ __THROW __nonnull ((1, 2));
/* Execute FILE, searching in the `PATH' environment variable if it contains
no slashes, with arguments ARGV and environment from `environ'. */
extern int execvp (__const char *__file, char *__const __argv[])
- __THROW __nonnull ((1));
+ __THROW __nonnull ((1, 2));
/* Execute FILE, searching in the `PATH' environment variable if
it contains no slashes, with all arguments after FILE until a
NULL pointer and environment from `environ'. */
extern int execlp (__const char *__file, __const char *__arg, ...)
- __THROW __nonnull ((1));
+ __THROW __nonnull ((1, 2));
+
+#ifdef __USE_GNU
+/* Execute FILE, searching in the `PATH' environment variable if it contains
+ no slashes, with arguments ARGV and environment from `environ'. */
+extern int execvpe (__const char *__file, char *__const __argv[],
+ char *__const __envp[])
+ __THROW __nonnull ((1, 2));
+#endif
#if defined __USE_MISC || defined __USE_XOPEN
@@ -601,7 +641,7 @@ extern __pid_t __REDIRECT_NTH (getpgrp, (__pid_t __pid), __getpgid);
/* Get the process group ID of process PID. */
extern __pid_t __getpgid (__pid_t __pid) __THROW;
-#ifdef __USE_XOPEN_EXTENDED
+#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
extern __pid_t getpgid (__pid_t __pid) __THROW;
#endif
@@ -645,7 +685,7 @@ extern int __REDIRECT_NTH (setpgrp, (__pid_t __pid, __pid_t __pgrp), setpgid);
are set to the process ID of the calling process, which is returned. */
extern __pid_t setsid (void) __THROW;
-#ifdef __USE_XOPEN_EXTENDED
+#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
/* Return the session ID of the given process. */
extern __pid_t getsid (__pid_t __pid) __THROW;
#endif
@@ -734,13 +774,14 @@ extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
and the process ID of the new process to the old process. */
extern __pid_t fork (void) __THROW;
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
+ || defined __USE_BSD
/* Clone the calling process, but without copying the whole address space.
The calling process is suspended until the new process exits or is
replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
and the process ID of the new process to the old process. */
extern __pid_t vfork (void) __THROW;
-#endif /* Use BSD. */
+#endif /* Use BSD or XPG < 7. */
/* Return the pathname of the terminal FD is open on, or NULL on errors.
@@ -850,7 +891,7 @@ extern int setlogin (__const char *__name) __THROW __nonnull ((1));
#endif
-#if defined __USE_BSD || defined __USE_UNIX98
+#if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K
/* Put the name of the current host in no more than LEN bytes of NAME.
The result is null-terminated if LEN is large enough for the full
name and the terminator. */
@@ -945,6 +986,7 @@ extern long int gethostid (void);
extern void sync (void) __THROW;
+# if defined __USE_BSD || !defined __USE_XOPEN2K
/* Return the number of bytes in a page. This is the system's page size,
which is not necessarily the same as the hardware page size. */
extern int getpagesize (void) __THROW __attribute__ ((__const__));
@@ -953,7 +995,12 @@ extern int getpagesize (void) __THROW __attribute__ ((__const__));
/* Return the maximum number of file descriptors
the current process could possibly have. */
extern int getdtablesize (void) __THROW;
+# endif
+
+#endif /* Use BSD || X/Open Unix. */
+
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
/* Truncate FILE to LENGTH bytes. */
# ifndef __USE_FILE_OFFSET64
@@ -973,9 +1020,6 @@ extern int truncate64 (__const char *__file, __off64_t __length)
__THROW __nonnull ((1)) __wur;
# endif
-#endif /* Use BSD || X/Open Unix. */
-
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
/* Truncate the file FD is open on to LENGTH bytes. */
# ifndef __USE_FILE_OFFSET64
@@ -995,7 +1039,8 @@ extern int ftruncate64 (int __fd, __off64_t __length) __THROW __wur;
#endif /* Use BSD || X/Open Unix || POSIX 2003. */
-#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
+#if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \
+ || defined __USE_MISC
/* Set the end of accessible data space (aka "the break") to ADDR.
Returns zero on success and -1 for errors (with errno set). */
@@ -1101,7 +1146,7 @@ extern void swab (__const void *__restrict __from, void *__restrict __to,
/* The Single Unix specification demands this prototype to be here.
It is also found in <stdio.h>. */
-#ifdef __USE_XOPEN
+#if defined __USE_XOPEN || defined __USE_XOPEN2K8
/* Return the name of the controlling terminal. */
extern char *ctermid (char *__s) __THROW;
#endif
diff --git a/pwd/.cvsignore b/pwd/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/pwd/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/resolv/.cvsignore b/resolv/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/resolv/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/resolv/arpa/nameser.h b/resolv/arpa/nameser.h
index 7979b3d4dd..6a2c8376bd 100644
--- a/resolv/arpa/nameser.h
+++ b/resolv/arpa/nameser.h
@@ -487,7 +487,7 @@ int ns_sprintrrf (const u_char *, size_t, const char *,
char *, size_t) __THROW;
int ns_format_ttl (u_long, char *, size_t) __THROW;
int ns_parse_ttl (const char *, u_long *) __THROW;
-u_int32_t ns_datetosecs (const char *cp, int *errp) __THROW;
+u_int32_t ns_datetosecs (const char *, int *) __THROW;
int ns_name_ntol (const u_char *, u_char *, size_t) __THROW;
int ns_name_ntop (const u_char *, char *, size_t) __THROW;
int ns_name_pton (const char *, u_char *, size_t) __THROW;
diff --git a/resolv/mapv4v6hostent.h b/resolv/mapv4v6hostent.h
index 4151ce3639..c11038adf3 100644
--- a/resolv/mapv4v6hostent.h
+++ b/resolv/mapv4v6hostent.h
@@ -57,13 +57,13 @@ typedef union {
char ac;
} align;
-static void
+static int
map_v4v6_hostent (struct hostent *hp, char **bpp, int *lenp)
{
char **ap;
if (hp->h_addrtype != AF_INET || hp->h_length != INADDRSZ)
- return;
+ return 0;
hp->h_addrtype = AF_INET6;
hp->h_length = IN6ADDRSZ;
for (ap = hp->h_addr_list; *ap; ap++)
@@ -71,11 +71,8 @@ map_v4v6_hostent (struct hostent *hp, char **bpp, int *lenp)
int i = sizeof (align) - ((u_long) *bpp % sizeof (align));
if (*lenp < (i + IN6ADDRSZ))
- {
- /* Out of memory. Truncate address list here. XXX */
- *ap = NULL;
- return;
- }
+ /* Out of memory. */
+ return 1;
*bpp += i;
*lenp -= i;
map_v4v6_address (*ap, *bpp);
@@ -83,4 +80,5 @@ map_v4v6_hostent (struct hostent *hp, char **bpp, int *lenp)
*bpp += IN6ADDRSZ;
*lenp -= IN6ADDRSZ;
}
+ return 0;
}
diff --git a/resolv/netdb.h b/resolv/netdb.h
index a260c487bc..7671c6aca5 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -1,4 +1,4 @@
- /* Copyright (C) 1996-2002, 2003, 2004 Free Software Foundation, Inc.
+ /* Copyright (C) 1996-2004, 2009, 2010 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
@@ -53,22 +53,24 @@
__BEGIN_DECLS
+#if defined __USE_MISC || !defined __USE_XOPEN2K8
/* Error status for non-reentrant lookup functions.
We use a macro to access always the thread-specific `h_errno' variable. */
-#define h_errno (*__h_errno_location ())
+# define h_errno (*__h_errno_location ())
/* Function to get address of global `h_errno' variable. */
extern int *__h_errno_location (void) __THROW __attribute__ ((__const__));
/* Possible values left in `h_errno'. */
-#define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found. */
-#define TRY_AGAIN 2 /* Non-Authoritative Host not found,
+# define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found. */
+# define TRY_AGAIN 2 /* Non-Authoritative Host not found,
or SERVERFAIL. */
-#define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED,
+# define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED,
NOTIMP. */
-#define NO_DATA 4 /* Valid name, no data record of requested
+# define NO_DATA 4 /* Valid name, no data record of requested
type. */
+#endif
#if defined __USE_MISC || defined __USE_GNU
# define NETDB_INTERNAL -1 /* See errno. */
# define NETDB_SUCCESS 0 /* No problem. */
@@ -85,7 +87,7 @@ extern int *__h_errno_location (void) __THROW __attribute__ ((__const__));
# define SCOPE_DELIMITER '%'
#endif
-#if defined __USE_MISC || defined __USE_GNU
+#ifdef __USE_MISC
/* Print error indicated by `h_errno' variable on standard error. STR
if non-null is printed before the error string. */
extern void herror (__const char *__str) __THROW;
@@ -421,7 +423,7 @@ extern int getnetgrent (char **__restrict __hostp,
or due to the implementation it is a cancellation point and
therefore not marked with __THROW. */
extern int innetgr (__const char *__netgroup, __const char *__host,
- __const char *__user, __const char *domain);
+ __const char *__user, __const char *__domain);
/* Reentrant version of `getnetgrent' where result is placed in BUFFER.
diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c
index 6cbfcb63ce..818a40a898 100644
--- a/resolv/nss_dns/dns-host.c
+++ b/resolv/nss_dns/dns-host.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2004, 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2004, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Extended from original form by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -198,8 +198,14 @@ _nss_dns_gethostbyname3_r (const char *name, int af, struct hostent *result,
1024, &host_buffer.ptr, NULL, NULL, NULL);
if (n < 0)
{
- status = (errno == ECONNREFUSED
- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND);
+ if (errno == ESRCH)
+ {
+ status = NSS_STATUS_TRYAGAIN;
+ h_errno = TRY_AGAIN;
+ }
+ else
+ status = (errno == ECONNREFUSED
+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND);
*h_errnop = h_errno;
if (h_errno == TRY_AGAIN)
*errnop = EAGAIN;
@@ -304,8 +310,14 @@ _nss_dns_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat,
&ans2p, &nans2p, &resplen2);
if (n < 0)
{
- status = (errno == ECONNREFUSED
- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND);
+ if (errno == ESRCH)
+ {
+ status = NSS_STATUS_TRYAGAIN;
+ h_errno = TRY_AGAIN;
+ }
+ else
+ status = (errno == ECONNREFUSED
+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND);
*herrnop = h_errno;
if (h_errno == TRY_AGAIN)
*errnop = EAGAIN;
@@ -364,6 +376,19 @@ _nss_dns_gethostbyaddr2_r (const void *addr, socklen_t len, int af,
int n, status;
int olderr = errno;
+ uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct host_data);
+ buffer += pad;
+ buflen = buflen > pad ? buflen - pad : 0;
+
+ if (__builtin_expect (buflen < sizeof (struct host_data), 0))
+ {
+ *errnop = ERANGE;
+ *h_errnop = NETDB_INTERNAL;
+ return NSS_STATUS_TRYAGAIN;
+ }
+
+ host_data = (struct host_data *) buffer;
+
if (__res_maybe_init (&_res, 0) == -1)
return NSS_STATUS_UNAVAIL;
@@ -799,7 +824,7 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
switch (type)
{
case T_PTR:
- if (__builtin_expect (__strcasecmp (tname, bp) != 0, 0))
+ if (__builtin_expect (strcasecmp (tname, bp) != 0, 0))
{
syslog (LOG_NOTICE | LOG_AUTH, AskedForGot, qname, bp);
cp += n;
@@ -853,7 +878,8 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
}
bp += n;
linebuflen -= n;
- map_v4v6_hostent (result, &bp, &linebuflen);
+ if (map_v4v6_hostent (result, &bp, &linebuflen))
+ goto too_small;
}
*h_errnop = NETDB_SUCCESS;
return NSS_STATUS_SUCCESS;
@@ -928,7 +954,8 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
}
if (have_to_map)
- map_v4v6_hostent (result, &bp, &linebuflen);
+ if (map_v4v6_hostent (result, &bp, &linebuflen))
+ goto too_small;
*h_errnop = NETDB_SUCCESS;
return NSS_STATUS_SUCCESS;
}
diff --git a/resolv/res_debug.c b/resolv/res_debug.c
index c38de640a5..f7996a71da 100644
--- a/resolv/res_debug.c
+++ b/resolv/res_debug.c
@@ -586,6 +586,8 @@ p_option(u_long option) {
case RES_ROTATE: return "rotate";
case RES_NOCHECKNAME: return "no-check-names";
case RES_USEBSTRING: return "ip6-bytstring";
+ case RES_USE_EDNS0: return "edns0";
+ case RES_USE_DNSSEC: return "dnssec";
/* XXX nonreentrant */
default: sprintf(nbuf, "?0x%lx?", (u_long)option);
return (nbuf);
diff --git a/resolv/res_hconf.c b/resolv/res_hconf.c
index 25f7397927..ed55bec296 100644
--- a/resolv/res_hconf.c
+++ b/resolv/res_hconf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995-2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995-2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Mosberger (davidm@azstarnet.com).
diff --git a/resolv/res_init.c b/resolv/res_init.c
index a2840968f3..40dbe7d7e5 100644
--- a/resolv/res_init.c
+++ b/resolv/res_init.c
@@ -183,7 +183,7 @@ __res_vinit(res_state statp, int preinit) {
#endif
statp->nsaddr.sin_family = AF_INET;
statp->nsaddr.sin_port = htons(NAMESERVER_PORT);
- statp->nscount = 1;
+ statp->nscount = 0;
statp->ndots = 1;
statp->pfcode = 0;
statp->_vcsock = -1;
@@ -314,9 +314,9 @@ __res_vinit(res_state statp, int preinit) {
cp++;
if ((*cp != '\0') && (*cp != '\n')
&& __inet_aton(cp, &a)) {
- statp->nsaddr_list[nserv].sin_addr = a;
- statp->nsaddr_list[nserv].sin_family = AF_INET;
- statp->nsaddr_list[nserv].sin_port =
+ statp->nsaddr_list[nservall].sin_addr = a;
+ statp->nsaddr_list[nservall].sin_family = AF_INET;
+ statp->nsaddr_list[nservall].sin_port =
htons(NAMESERVER_PORT);
nserv++;
#ifdef _LIBC
@@ -420,8 +420,7 @@ __res_vinit(res_state statp, int preinit) {
continue;
}
}
- if (nserv > 1)
- statp->nscount = nserv;
+ statp->nscount = nservall;
#ifdef _LIBC
if (nservall - nserv > 0) {
statp->_u._ext.nscount6 = nservall - nserv;
@@ -541,6 +540,12 @@ res_setoptions(res_state statp, const char *options, const char *source) {
statp->options |= RES_NOCHECKNAME;
} else if (!strncmp(cp, "edns0", sizeof("edns0") - 1)) {
statp->options |= RES_USE_EDNS0;
+ } else if (!strncmp(cp, "single-request-reopen",
+ sizeof("single-request-reopen") - 1)) {
+ statp->options |= RES_SNGLKUPREOP;
+ } else if (!strncmp(cp, "single-request",
+ sizeof("single-request") - 1)) {
+ statp->options |= RES_SNGLKUP;
} else {
/* XXX - print a warning here? */
}
diff --git a/resolv/res_libc.c b/resolv/res_libc.c
index 8af57f7a4a..810fbc804d 100644
--- a/resolv/res_libc.c
+++ b/resolv/res_libc.c
@@ -96,10 +96,9 @@ __res_maybe_init (res_state resp, int preinit)
{
if (resp->options & RES_INIT) {
if (__res_initstamp != resp->_u._ext.initstamp) {
- if (resp->nscount > 0) {
+ if (resp->nscount > 0)
__res_iclose (resp, true);
- return __res_vinit (resp, 1);
- }
+ return __res_vinit (resp, 1);
}
return 0;
} else if (preinit) {
diff --git a/resolv/res_mkquery.c b/resolv/res_mkquery.c
index ae0cdb417e..2bc2d2497f 100644
--- a/resolv/res_mkquery.c
+++ b/resolv/res_mkquery.c
@@ -244,10 +244,18 @@ __res_nopt(res_state statp,
*cp++ = 0; /* "." */
NS_PUT16(T_OPT, cp); /* TYPE */
- NS_PUT16(anslen & 0xffff, cp); /* CLASS = UDP payload size */
+ NS_PUT16(MIN(anslen, 0xffff), cp); /* CLASS = UDP payload size */
*cp++ = NOERROR; /* extended RCODE */
*cp++ = 0; /* EDNS version */
- /* XXX Once we support DNSSEC we change the flag value here. */
+
+ if (statp->options & RES_USE_DNSSEC) {
+#ifdef DEBUG
+ if (statp->options & RES_DEBUG)
+ printf(";; res_opt()... ENDS0 DNSSEC\n");
+#endif
+ flags |= NS_OPT_DNSSEC_OK;
+ }
+
NS_PUT16(flags, cp);
NS_PUT16(0, cp); /* RDLEN */
hp->arcount = htons(ntohs(hp->arcount) + 1);
diff --git a/resolv/res_query.c b/resolv/res_query.c
index 6ac33ce64c..5ff352e2fc 100644
--- a/resolv/res_query.c
+++ b/resolv/res_query.c
@@ -147,7 +147,7 @@ __libc_res_nquery(res_state statp,
if (n > 0)
{
if ((oflags & RES_F_EDNS0ERR) == 0
- && (statp->options & RES_USE_EDNS0) != 0)
+ && (statp->options & (RES_USE_EDNS0|RES_USE_DNSSEC)) != 0)
{
n = __res_nopt(statp, n, query1, bufsize, anslen / 2);
if (n < 0)
@@ -169,7 +169,7 @@ __libc_res_nquery(res_state statp,
NULL, query2, bufsize - nused);
if (n > 0
&& (oflags & RES_F_EDNS0ERR) == 0
- && (statp->options & RES_USE_EDNS0) != 0)
+ && (statp->options & (RES_USE_EDNS0|RES_USE_DNSSEC)) != 0)
n = __res_nopt(statp, n, query2, bufsize - nused - n,
anslen / 2);
nquery2 = n;
@@ -184,7 +184,7 @@ __libc_res_nquery(res_state statp,
if (n > 0
&& (oflags & RES_F_EDNS0ERR) == 0
- && (statp->options & RES_USE_EDNS0) != 0)
+ && (statp->options & (RES_USE_EDNS0|RES_USE_DNSSEC)) != 0)
n = __res_nopt(statp, n, query1, bufsize, anslen);
nquery1 = n;
@@ -203,7 +203,7 @@ __libc_res_nquery(res_state statp,
}
if (__builtin_expect (n <= 0, 0)) {
/* If the query choked with EDNS0, retry without EDNS0. */
- if ((statp->options & RES_USE_EDNS0) != 0
+ if ((statp->options & (RES_USE_EDNS0|RES_USE_DNSSEC)) != 0
&& ((oflags ^ statp->_flags) & RES_F_EDNS0ERR) != 0) {
statp->_flags |= RES_F_EDNS0ERR;
#ifdef DEBUG
@@ -289,6 +289,13 @@ __libc_res_nquery(res_state statp,
break;
case FORMERR:
case NOTIMP:
+ /* Servers must not reply to AAAA queries with
+ NOTIMP etc but some of them do. */
+ if ((hp->rcode == NOERROR && ntohs (hp->ancount) != 0)
+ || (hp2->rcode == NOERROR
+ && ntohs (hp2->ancount) != 0))
+ goto success;
+ /* FALLTHROUGH */
case REFUSED:
default:
RES_SET_H_ERRNO(statp, NO_RECOVERY);
diff --git a/resolv/res_send.c b/resolv/res_send.c
index ac5cc0b4fe..28a47e42b8 100644
--- a/resolv/res_send.c
+++ b/resolv/res_send.c
@@ -95,6 +95,7 @@ static const char rcsid[] = "$BINDId: res_send.c,v 8.38 2000/03/30 20:16:51 vixi
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <kernel-features.h>
#if PACKETSZ > 65536
#define MAXPACKET PACKETSZ
@@ -103,6 +104,13 @@ static const char rcsid[] = "$BINDId: res_send.c,v 8.38 2000/03/30 20:16:51 vixi
#endif
+#ifndef __ASSUME_SOCK_CLOEXEC
+static int __have_o_nonblock;
+#else
+# define __have_o_nonblock 0
+#endif
+
+
/* From ev_streams.c. */
static inline void
@@ -191,10 +199,6 @@ static void Perror(const res_state, FILE *, const char *, int);
#endif
static int sock_eq(struct sockaddr_in6 *, struct sockaddr_in6 *);
-/* Reachover. */
-
-static void convaddr4to6(struct sockaddr_in6 *sa);
-
/* Public. */
/* int
@@ -211,33 +215,33 @@ res_ourserver_p(const res_state statp, const struct sockaddr_in6 *inp)
{
int ns;
- if (inp->sin6_family == AF_INET) {
- struct sockaddr_in *in4p = (struct sockaddr_in *) inp;
+ if (inp->sin6_family == AF_INET) {
+ struct sockaddr_in *in4p = (struct sockaddr_in *) inp;
in_port_t port = in4p->sin_port;
in_addr_t addr = in4p->sin_addr.s_addr;
- for (ns = 0; ns < MAXNS; ns++) {
- const struct sockaddr_in *srv =
+ for (ns = 0; ns < MAXNS; ns++) {
+ const struct sockaddr_in *srv =
(struct sockaddr_in *)EXT(statp).nsaddrs[ns];
- if ((srv != NULL) && (srv->sin_family == AF_INET) &&
- (srv->sin_port == port) &&
- (srv->sin_addr.s_addr == INADDR_ANY ||
- srv->sin_addr.s_addr == addr))
- return (1);
- }
- } else if (inp->sin6_family == AF_INET6) {
- for (ns = 0; ns < MAXNS; ns++) {
- const struct sockaddr_in6 *srv = EXT(statp).nsaddrs[ns];
- if ((srv != NULL) && (srv->sin6_family == AF_INET6) &&
- (srv->sin6_port == inp->sin6_port) &&
- !(memcmp(&srv->sin6_addr, &in6addr_any,
- sizeof (struct in6_addr)) &&
- memcmp(&srv->sin6_addr, &inp->sin6_addr,
- sizeof (struct in6_addr))))
- return (1);
- }
- }
+ if ((srv != NULL) && (srv->sin_family == AF_INET) &&
+ (srv->sin_port == port) &&
+ (srv->sin_addr.s_addr == INADDR_ANY ||
+ srv->sin_addr.s_addr == addr))
+ return (1);
+ }
+ } else if (inp->sin6_family == AF_INET6) {
+ for (ns = 0; ns < MAXNS; ns++) {
+ const struct sockaddr_in6 *srv = EXT(statp).nsaddrs[ns];
+ if ((srv != NULL) && (srv->sin6_family == AF_INET6) &&
+ (srv->sin6_port == inp->sin6_port) &&
+ !(memcmp(&srv->sin6_addr, &in6addr_any,
+ sizeof (struct in6_addr)) &&
+ memcmp(&srv->sin6_addr, &inp->sin6_addr,
+ sizeof (struct in6_addr))))
+ return (1);
+ }
+ }
return (0);
}
@@ -437,7 +441,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen,
malloc(sizeof (struct sockaddr_in6));
if (EXT(statp).nsaddrs[n] != NULL) {
memset (mempcpy(EXT(statp).nsaddrs[n],
- &statp->nsaddr_list[ns],
+ &statp->nsaddr_list[n],
sizeof (struct sockaddr_in)),
'\0',
sizeof (struct sockaddr_in6)
@@ -900,37 +904,49 @@ send_vc(res_state statp,
}
static int
-send_dg(res_state statp,
- const u_char *buf, int buflen, const u_char *buf2, int buflen2,
- u_char **ansp, int *anssizp,
- int *terrno, int ns, int *v_circuit, int *gotsomewhere, u_char **anscp,
- u_char **ansp2, int *anssizp2, int *resplen2)
+reopen (res_state statp, int *terrno, int ns)
{
- const HEADER *hp = (HEADER *) buf;
- const HEADER *hp2 = (HEADER *) buf2;
- u_char *ans = *ansp;
- int orig_anssizp = *anssizp;
- struct sockaddr_in6 *nsap = EXT(statp).nsaddrs[ns];
- struct timespec now, timeout, finish;
- struct pollfd pfd[1];
- int ptimeout;
- struct sockaddr_in6 from;
- int resplen, seconds, n;
-
if (EXT(statp).nssocks[ns] == -1) {
+ struct sockaddr *nsap
+ = (struct sockaddr *) EXT(statp).nsaddrs[ns];
+ socklen_t slen;
+
/* only try IPv6 if IPv6 NS and if not failed before */
- if ((EXT(statp).nscount6 > 0) && !statp->ipv6_unavail) {
- EXT(statp).nssocks[ns] =
- socket(PF_INET6, SOCK_DGRAM, 0);
+ if (nsap->sa_family == AF_INET6 && !statp->ipv6_unavail) {
+ if (__builtin_expect (__have_o_nonblock >= 0, 1)) {
+ EXT(statp).nssocks[ns] =
+ socket(PF_INET6, SOCK_DGRAM|SOCK_NONBLOCK,
+ 0);
+#ifndef __ASSUME_SOCK_CLOEXEC
+ if (__have_o_nonblock == 0)
+ __have_o_nonblock
+ = (EXT(statp).nssocks[ns] == -1
+ && errno == EINVAL ? -1 : 1);
+#endif
+ }
+ if (__builtin_expect (__have_o_nonblock < 0, 0))
+ EXT(statp).nssocks[ns] =
+ socket(PF_INET6, SOCK_DGRAM, 0);
if (EXT(statp).nssocks[ns] < 0)
statp->ipv6_unavail = errno == EAFNOSUPPORT;
- /* If IPv6 socket and nsap is IPv4, make it
- IPv4-mapped */
- else if (nsap->sin6_family == AF_INET)
- convaddr4to6(nsap);
+ slen = sizeof (struct sockaddr_in6);
+ } else if (nsap->sa_family == AF_INET) {
+ if (__builtin_expect (__have_o_nonblock >= 0, 1)) {
+ EXT(statp).nssocks[ns]
+ = socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK,
+ 0);
+#ifndef __ASSUME_SOCK_CLOEXEC
+ if (__have_o_nonblock == 0)
+ __have_o_nonblock
+ = (EXT(statp).nssocks[ns] == -1
+ && errno == EINVAL ? -1 : 1);
+#endif
+ }
+ if (__builtin_expect (__have_o_nonblock < 0, 0))
+ EXT(statp).nssocks[ns]
+ = socket(PF_INET, SOCK_DGRAM, 0);
+ slen = sizeof (struct sockaddr_in);
}
- if (EXT(statp).nssocks[ns] < 0)
- EXT(statp).nssocks[ns] = socket(PF_INET, SOCK_DGRAM, 0);
if (EXT(statp).nssocks[ns] < 0) {
*terrno = errno;
Perror(statp, stderr, "socket(dg)", errno);
@@ -948,30 +964,61 @@ send_dg(res_state statp,
* error message is received. We can thus detect
* the absence of a nameserver without timing out.
*/
- if (connect(EXT(statp).nssocks[ns], (struct sockaddr *)nsap,
- sizeof *nsap) < 0) {
- Aerror(statp, stderr, "connect(dg)", errno,
- (struct sockaddr *) nsap);
+ if (connect(EXT(statp).nssocks[ns], nsap, slen) < 0) {
+ Aerror(statp, stderr, "connect(dg)", errno, nsap);
__res_iclose(statp, false);
return (0);
}
- /* Make socket non-blocking. */
- int fl = __fcntl (EXT(statp).nssocks[ns], F_GETFL);
- if (fl != -1)
- __fcntl (EXT(statp).nssocks[ns], F_SETFL,
- fl | O_NONBLOCK);
- Dprint(statp->options & RES_DEBUG,
- (stdout, ";; new DG socket\n"))
+ if (__builtin_expect (__have_o_nonblock < 0, 0)) {
+ /* Make socket non-blocking. */
+ int fl = __fcntl (EXT(statp).nssocks[ns], F_GETFL);
+ if (fl != -1)
+ __fcntl (EXT(statp).nssocks[ns], F_SETFL,
+ fl | O_NONBLOCK);
+ Dprint(statp->options & RES_DEBUG,
+ (stdout, ";; new DG socket\n"))
+ }
}
+ return 1;
+}
+
+static int
+send_dg(res_state statp,
+ const u_char *buf, int buflen, const u_char *buf2, int buflen2,
+ u_char **ansp, int *anssizp,
+ int *terrno, int ns, int *v_circuit, int *gotsomewhere, u_char **anscp,
+ u_char **ansp2, int *anssizp2, int *resplen2)
+{
+ const HEADER *hp = (HEADER *) buf;
+ const HEADER *hp2 = (HEADER *) buf2;
+ u_char *ans = *ansp;
+ int orig_anssizp = *anssizp;
+ struct timespec now, timeout, finish;
+ struct pollfd pfd[1];
+ int ptimeout;
+ struct sockaddr_in6 from;
+ int resplen = 0;
+ int n;
+
/*
* Compute time for the total operation.
*/
- seconds = (statp->retrans << ns);
+ int seconds = (statp->retrans << ns);
if (ns > 0)
seconds /= statp->nscount;
if (seconds <= 0)
seconds = 1;
+ bool single_request = (statp->options & RES_SNGLKUP) != 0;
+ bool single_request_reopen = (statp->options & RES_SNGLKUPREOP) != 0;
+ int save_gotsomewhere = *gotsomewhere;
+
+ int retval;
+ retry_reopen:
+ retval = reopen (statp, terrno, ns);
+ if (retval <= 0)
+ return retval;
+ retry:
evNowTime(&now);
evConsTime(&timeout, seconds, 0);
evAddTime(&finish, &now, &timeout);
@@ -995,8 +1042,9 @@ send_dg(res_state statp,
return (0);
}
evSubTime(&timeout, &finish, &now);
+ need_recompute = 0;
}
- /* Convert struct timespec in milliseconds. */
+ /* Convert struct timespec in milliseconds. */
ptimeout = timeout.tv_sec * 1000 + timeout.tv_nsec / 1000000;
n = 0;
@@ -1010,6 +1058,29 @@ send_dg(res_state statp,
Dprint(statp->options & RES_DEBUG, (stdout, ";; timeout\n"));
if (resplen > 1 && (recvresp1 || (buf2 != NULL && recvresp2)))
{
+ /* There are quite a few broken name servers out
+ there which don't handle two outstanding
+ requests from the same source. There are also
+ broken firewall settings. If we time out after
+ having received one answer switch to the mode
+ where we send the second request only once we
+ have received the first answer. */
+ if (!single_request)
+ {
+ statp->options |= RES_SNGLKUP;
+ single_request = true;
+ *gotsomewhere = save_gotsomewhere;
+ goto retry;
+ }
+ else if (!single_request_reopen)
+ {
+ statp->options |= RES_SNGLKUPREOP;
+ single_request_reopen = true;
+ *gotsomewhere = save_gotsomewhere;
+ __res_iclose (statp, false);
+ goto retry_reopen;
+ }
+
*resplen2 = 1;
return resplen;
}
@@ -1037,7 +1108,8 @@ send_dg(res_state statp,
Perror(statp, stderr, "send", errno);
goto err_out;
}
- if (nwritten != 0 || buf2 == NULL)
+ if (nwritten != 0 || buf2 == NULL
+ || single_request || single_request_reopen)
pfd[0].events = POLLIN;
else
pfd[0].events = POLLIN | POLLOUT;
@@ -1166,7 +1238,7 @@ send_dg(res_state statp,
/* record the error */
statp->_flags |= RES_F_EDNS0ERR;
goto err_out;
- }
+ }
#endif
if (!(statp->options & RES_INSECURE2)
&& (recvresp1 || !res_queriesmatch(buf, buf + buflen,
@@ -1200,14 +1272,10 @@ send_dg(res_state statp,
? *thisanssiz : *thisresplen);
if (recvresp1 || (buf2 != NULL && recvresp2))
- {
- *resplen2 = 1;
- return resplen;
- }
+ return resplen;
if (buf2 != NULL)
{
/* We are waiting for a possible second reply. */
- resplen = 1;
if (hp->id == anhp->id)
recvresp1 = 1;
else
@@ -1250,8 +1318,18 @@ send_dg(res_state statp,
else
recvresp2 = 1;
/* Repeat waiting if we have a second answer to arrive. */
- if ((recvresp1 & recvresp2) == 0)
+ if ((recvresp1 & recvresp2) == 0) {
+ if (single_request || single_request_reopen) {
+ pfd[0].events = POLLOUT;
+ if (single_request_reopen) {
+ __res_iclose (statp, false);
+ retval = reopen (statp, terrno, ns);
+ if (retval <= 0)
+ return retval;
+ }
+ }
goto wait;
+ }
/*
* All is well, or the error is fatal. Signal that the
* next nameserver ought not be tried.
@@ -1330,22 +1408,3 @@ sock_eq(struct sockaddr_in6 *a1, struct sockaddr_in6 *a2) {
(a1->sin6_addr.s6_addr32[3] ==
((struct sockaddr_in *)a2)->sin_addr.s_addr));
}
-
-/*
- * Converts IPv4 family, address and port to
- * IPv6 family, IPv4-mapped IPv6 address and port.
- */
-static void
-convaddr4to6(struct sockaddr_in6 *sa)
-{
- struct sockaddr_in *sa4p = (struct sockaddr_in *) sa;
- in_port_t port = sa4p->sin_port;
- in_addr_t addr = sa4p->sin_addr.s_addr;
-
- sa->sin6_family = AF_INET6;
- sa->sin6_port = port;
- sa->sin6_addr.s6_addr32[0] = 0;
- sa->sin6_addr.s6_addr32[1] = 0;
- sa->sin6_addr.s6_addr32[2] = htonl(0xFFFF);
- sa->sin6_addr.s6_addr32[3] = addr;
-}
diff --git a/resolv/resolv.h b/resolv/resolv.h
index 105631ee7d..e49c29d2fe 100644
--- a/resolv/resolv.h
+++ b/resolv/resolv.h
@@ -71,19 +71,19 @@
typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error }
res_sendhookact;
-typedef res_sendhookact (*res_send_qhook) (struct sockaddr_in * const *ns,
- const u_char **query,
- int *querylen,
- u_char *ans,
- int anssiz,
- int *resplen);
+typedef res_sendhookact (*res_send_qhook) (struct sockaddr_in * const *__ns,
+ const u_char **__query,
+ int *__querylen,
+ u_char *__ans,
+ int __anssiz,
+ int *__resplen);
-typedef res_sendhookact (*res_send_rhook) (const struct sockaddr_in *ns,
- const u_char *query,
- int querylen,
- u_char *ans,
- int anssiz,
- int *resplen);
+typedef res_sendhookact (*res_send_rhook) (const struct sockaddr_in *__ns,
+ const u_char *__query,
+ int __querylen,
+ u_char *__ans,
+ int __anssiz,
+ int *__resplen);
/*
* Global defines and variables for resolver stub.
@@ -215,6 +215,10 @@ struct res_sym {
#define RES_NOIP6DOTINT 0x00080000 /* Do not use .ip6.int in IPv6
reverse lookup */
#define RES_USE_EDNS0 0x00100000 /* Use EDNS0. */
+#define RES_SNGLKUP 0x00200000 /* one outstanding request at a time */
+#define RES_SNGLKUPREOP 0x00400000 /* -"-, but open new socket for each
+ request */
+#define RES_USE_DNSSEC 0x00800000 /* use DNSSEC using OK bit in OPT */
#define RES_DEFAULT (RES_RECURSE|RES_DEFNAMES|RES_DNSRCH|RES_NOIP6DOTINT)
@@ -328,8 +332,8 @@ const char * sym_ntos (const struct res_sym *, int, int *) __THROW;
const char * sym_ntop (const struct res_sym *, int, int *) __THROW;
int b64_ntop (u_char const *, size_t, char *, size_t) __THROW;
int b64_pton (char const *, u_char *, size_t) __THROW;
-int loc_aton (const char *ascii, u_char *binary) __THROW;
-const char * loc_ntoa (const u_char *binary, char *ascii) __THROW;
+int loc_aton (const char *__ascii, u_char *__binary) __THROW;
+const char * loc_ntoa (const u_char *__binary, char *__ascii) __THROW;
int dn_skipname (const u_char *, const u_char *) __THROW;
void putlong (u_int32_t, u_char *) __THROW;
void putshort (u_int16_t, u_char *) __THROW;
@@ -340,10 +344,10 @@ const char * p_rcode (int) __THROW;
const u_char * p_cdnname (const u_char *, const u_char *, int, FILE *)
__THROW;
const u_char * p_cdname (const u_char *, const u_char *, FILE *) __THROW;
-const u_char * p_fqnname (const u_char *cp, const u_char *msg,
+const u_char * p_fqnname (const u_char *__cp, const u_char *__msg,
int, char *, int) __THROW;
const u_char * p_fqname (const u_char *, const u_char *, FILE *) __THROW;
-const char * p_option (u_long option) __THROW;
+const char * p_option (u_long __option) __THROW;
char * p_secstodate (u_long) __THROW;
int dn_count_labels (const char *) __THROW;
int dn_comp (const char *, u_char *, int, u_char **, u_char **)
@@ -355,7 +359,7 @@ int res_nameinquery (const char *, int, int,
const u_char *, const u_char *) __THROW;
int res_queriesmatch (const u_char *, const u_char *,
const u_char *, const u_char *) __THROW;
-const char * p_section (int section, int opcode) __THROW;
+const char * p_section (int __section, int __opcode) __THROW;
/* Things involving a resolver context. */
int res_ninit (res_state) __THROW;
int res_nisourserver (const res_state,
diff --git a/resource/.cvsignore b/resource/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/resource/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/scripts/check-local-headers.sh b/scripts/check-local-headers.sh
index a945ffb997..d15e9a4416 100755
--- a/scripts/check-local-headers.sh
+++ b/scripts/check-local-headers.sh
@@ -1,5 +1,5 @@
#! /bin/bash
-# Copyright (C) 2005, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2005, 2007, 2009 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
@@ -31,7 +31,8 @@ fgrep -v "$includedir/asm" |
fgrep -v "$includedir/linux" |
fgrep -v "$includedir/selinux" |
fgrep -v "$includedir/sys/capability.h" |
-fgrep -v "$includedir/gd"; then
+fgrep -v "$includedir/gd" |
+fgrep -v "$includedir/nss3"; then
# If we found a match something is wrong.
exit 1
fi
diff --git a/scripts/firstversions.awk b/scripts/firstversions.awk
index 8da92ae485..4a20fc0f9d 100644
--- a/scripts/firstversions.awk
+++ b/scripts/firstversions.awk
@@ -1,6 +1,31 @@
# Script to preprocess Versions.all lists based on "earliest version"
# specifications in the shlib-versions file.
+# Return -1, 0 or 1 according to whether v1 is less than, equal to or
+# greater than v2 as a version string. Simplified from GNU Autoconf
+# version; this one does not need to handle .0x fraction-style versions.
+function vers_compare (v1, v2)
+{
+ while (length(v1) && length(v2)) {
+ if (v1 ~ /^[0-9]/ && v2 ~ /^[0-9]/) {
+ for (len1 = 1; substr(v1, len1 + 1) ~ /^[0-9]/; len1++) continue;
+ for (len2 = 1; substr(v2, len2 + 1) ~ /^[0-9]/; len2++) continue;
+ d1 = substr(v1, 1, len1); v1 = substr(v1, len1 + 1);
+ d2 = substr(v2, 1, len2); v2 = substr(v2, len2 + 1);
+ d1 += 0;
+ d2 += 0;
+ } else {
+ d1 = substr(v1, 1, 1); v1 = substr(v1, 2);
+ d2 = substr(v2, 1, 1); v2 = substr(v2, 2);
+ }
+ if (d1 < d2) return -1;
+ if (d1 > d2) return 1;
+ }
+ if (length(v2)) return -1;
+ if (length(v1)) return 1;
+ return 0;
+}
+
NF > 2 && $2 == ":" {
for (i = 0; i <= NF - 3; ++i)
firstversion[$1, i] = $(3 + i);
@@ -25,10 +50,8 @@ $1 == "}" {
{
if ((thislib, idx[thislib]) in firstversion) {
- # XXX relative string comparison loses if we ever have multiple digits
- # between dots in GLIBC_x.y[.z] names.
f = v = firstversion[thislib, idx[thislib]];
- while ($1 >= v) {
+ while (vers_compare($1, v) >= 0) {
delete firstversion[thislib, idx[thislib]];
idx[thislib]++;
if ((thislib, idx[thislib]) in firstversion)
@@ -39,7 +62,7 @@ $1 == "}" {
if ($1 == v || $1 == f)
# This version was the specified earliest version itself.
print;
- else if ($1 < v) {
+ else if (vers_compare($1, v) < 0) {
# This version is older than the specified earliest version.
print " " $1, "=", v;
# Record that V has been referred to, so we will be sure to emit it
diff --git a/scripts/gen-as-const.awk b/scripts/gen-as-const.awk
index 20d18c12af..1ffd5f2c1c 100644
--- a/scripts/gen-as-const.awk
+++ b/scripts/gen-as-const.awk
@@ -16,7 +16,8 @@ NF >= 1 && !started {
if (test) {
print "\n#include <inttypes.h>";
print "\n#include <stdio.h>";
- print "\n#if __WORDSIZE__ == 64";
+ print "\n#include <bits/wordsize.h>";
+ print "\n#if __WORDSIZE == 64";
print "\ntypedef uint64_t c_t;";
print "\n#define U(n) UINT64_C (n)";
print "\n#define PRI PRId64";
diff --git a/scripts/versions.awk b/scripts/versions.awk
index e642b3d16e..22b1c8edc8 100644
--- a/scripts/versions.awk
+++ b/scripts/versions.awk
@@ -28,10 +28,8 @@ BEGIN {
close(defsfile);
tmpfile = buildroot "Versions.tmp";
- # Note this sorting presumes only single digits between dots for proper
- # numeric ordering. sort -n doesn't do quite the right thing either,
- # and in some non-GNU sort implementations does not sort at all.
- sort = "sort > " tmpfile;
+ # POSIX sort needed.
+ sort = "sort -t. -k 1,1 -k 2n,2n -k 3 > " tmpfile;
}
# Remove comment lines.
@@ -135,5 +133,5 @@ END {
printf("\n");
closeversion(oldver, veryoldver);
close_and_move(outfile, real_outfile);
- system("rm -f " tmpfile);
+ #system("rm -f " tmpfile);
}
diff --git a/setjmp/.cvsignore b/setjmp/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/setjmp/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/setjmp/Makefile b/setjmp/Makefile
index b94370d858..509c1d9a0c 100644
--- a/setjmp/Makefile
+++ b/setjmp/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991, 92, 93, 94, 95, 97 Free Software Foundation, Inc.
+# Copyright (C) 1991, 92, 93, 94, 95, 97, 2009 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
@@ -21,7 +21,7 @@
#
subdir := setjmp
-headers := setjmp.h bits/setjmp.h
+headers := setjmp.h bits/setjmp.h bits/setjmp2.h
routines := setjmp sigjmp bsd-setjmp bsd-_setjmp \
longjmp __longjmp jmp-unwind
diff --git a/setjmp/bits/setjmp2.h b/setjmp/bits/setjmp2.h
new file mode 100644
index 0000000000..ba900b8d03
--- /dev/null
+++ b/setjmp/bits/setjmp2.h
@@ -0,0 +1,41 @@
+/* Checking macros for setjmp functions.
+ * Copyright (C) 2009 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, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307 USA. */
+
+#ifndef _SETJMP_H
+# error "Never include <bits/setjmp2.h> directly; use <setjmp.h> instead."
+#endif
+
+/* Variant of the longjmp functions which perform some sanity checking. */
+#ifdef __REDIRECT_NTH
+extern void __REDIRECT_NTH (longjmp,
+ (struct __jmp_buf_tag __env[1], int __val),
+ __longjmp_chk) __attribute__ ((__noreturn__));
+extern void __REDIRECT_NTH (_longjmp,
+ (struct __jmp_buf_tag __env[1], int __val),
+ __longjmp_chk) __attribute__ ((__noreturn__));
+extern void __REDIRECT_NTH (siglongjmp,
+ (struct __jmp_buf_tag __env[1], int __val),
+ __longjmp_chk) __attribute__ ((__noreturn__));
+#else
+extern void __longjmp_chk (struct __jmp_buf_tag __env[1], int __val),
+ __THROW __attribute__ ((__noreturn__));
+# define longjmp __longjmp_chk
+# define _longjmp __longjmp_chk
+# define siglongjmp __longjmp_chk
+#endif
diff --git a/setjmp/longjmp.c b/setjmp/longjmp.c
index 9b1bda1caa..8545b36627 100644
--- a/setjmp/longjmp.c
+++ b/setjmp/longjmp.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,92,94,95,97,98,2000,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,94,95,97,98,2000,2002,2009
+ 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
@@ -39,8 +40,10 @@ __libc_siglongjmp (sigjmp_buf env, int val)
__longjmp (env[0].__jmpbuf, val ?: 1);
}
+#ifndef __libc_siglongjmp
strong_alias (__libc_siglongjmp, __libc_longjmp)
libc_hidden_def (__libc_longjmp)
weak_alias (__libc_siglongjmp, _longjmp)
weak_alias (__libc_siglongjmp, longjmp)
weak_alias (__libc_siglongjmp, siglongjmp)
+#endif
diff --git a/setjmp/setjmp.h b/setjmp/setjmp.h
index 6b1037fabd..3bc382ff1e 100644
--- a/setjmp/setjmp.h
+++ b/setjmp/setjmp.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1999, 2001, 2002, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1999,2001,2002,2007,2009 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
@@ -111,6 +111,12 @@ extern void siglongjmp (sigjmp_buf __env, int __val)
__THROW __attribute__ ((__noreturn__));
#endif /* Use POSIX. */
+
+/* Define helper functions to catch unsafe code. */
+#if __USE_FORTIFY_LEVEL > 0
+# include <bits/setjmp2.h>
+#endif
+
__END_DECLS
#endif /* setjmp.h */
diff --git a/shadow/Makefile b/shadow/Makefile
index cc0efaff6c..4755fab04a 100644
--- a/shadow/Makefile
+++ b/shadow/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1996, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1996, 2003, 2004, 2009 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
@@ -26,6 +26,8 @@ routines = getspent getspnam sgetspent fgetspent putspent \
getspent_r getspnam_r sgetspent_r fgetspent_r \
lckpwdf
+tests = tst-shadow
+
CFLAGS-getspent_r.c = -fexceptions
CFLAGS-getspent.c = -fexceptions
CFLAGS-fgetspent.c = -fexceptions
diff --git a/shadow/lckpwdf.c b/shadow/lckpwdf.c
index 2770fb5b33..746e14b6db 100644
--- a/shadow/lckpwdf.c
+++ b/shadow/lckpwdf.c
@@ -1,5 +1,5 @@
/* Handle locking of password file.
- Copyright (C) 1996, 1998, 2000, 2002, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1996,1998,2000,2002,2007,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -83,7 +83,6 @@ static void noop_handler (int __sig);
int
__lckpwdf (void)
{
- int flags;
sigset_t saved_set; /* Saved set of caught signals. */
struct sigaction saved_act; /* Saved signal action. */
sigset_t new_set; /* New set of caught signals. */
@@ -113,7 +112,7 @@ __lckpwdf (void)
# endif
{
/* Make sure file gets correctly closed when process finished. */
- flags = __fcntl (lock_fd, F_GETFD, 0);
+ int flags = __fcntl (lock_fd, F_GETFD, 0);
if (flags == -1)
/* Cannot get file flags. */
RETURN_CLOSE_FD (-1);
diff --git a/shadow/sgetspent_r.c b/shadow/sgetspent_r.c
index 2ed350a1ad..5599ee4ec8 100644
--- a/shadow/sgetspent_r.c
+++ b/shadow/sgetspent_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2005, 2009 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
@@ -91,8 +91,12 @@ int
__sgetspent_r (const char *string, struct spwd *resbuf, char *buffer,
size_t buflen, struct spwd **result)
{
- int parse_result = parse_line (strncpy (buffer, string, buflen),
- resbuf, NULL, 0, &errno);
+ buffer[buflen - 1] = '\0';
+ char *sp = strncpy (buffer, string, buflen);
+ if (buffer[buflen - 1] != '\0')
+ return ERANGE;
+
+ int parse_result = parse_line (sp, resbuf, NULL, 0, &errno);
*result = parse_result > 0 ? resbuf : NULL;
return *result == NULL ? errno : 0;
diff --git a/shadow/tst-shadow.c b/shadow/tst-shadow.c
new file mode 100644
index 0000000000..48f7167baa
--- /dev/null
+++ b/shadow/tst-shadow.c
@@ -0,0 +1,84 @@
+#include <shadow.h>
+#include <stdio.h>
+#include <string.h>
+
+
+static const struct spwd data[] =
+ {
+ { (char *) "one", (char *) "pwdone", 1, 2, 3, 4, 5, 6, 7 },
+ { (char *) "two", (char *) "pwdtwo", 11, 12, 13, 14, 15, 16, 17 },
+ { (char *) "three", (char *) "pwdthree", -1, 22, 23, 24, 25, 26, 27 },
+ { (char *) "four", (char *) "pwdfour", 31, -1, 33, 34, 35, 36, 37 },
+ { (char *) "five", (char *) "pwdfive", 41, 42, -1, 44, 45, 46, 47 },
+ { (char *) "six", (char *) "pwdsix", 51, 52, 53, -1, 55, 56, 57 },
+ { (char *) "seven", (char *) "pwdseven", 61, 62, 63, 64, -1, 66, 67 },
+ { (char *) "eight", (char *) "pwdeigth", 71, 72, 73, 74, 75, -1, 77 },
+ { (char *) "nine", (char *) "pwdnine", 81, 82, 83, 84, 85, 86, ~0ul },
+ };
+#define ndata (sizeof (data) / sizeof (data[0]))
+
+
+static int
+do_test (void)
+{
+ FILE *fp = tmpfile ();
+ if (fp == NULL)
+ {
+ puts ("cannot open temporary file");
+ return 1;
+ }
+
+ for (size_t i = 0; i < ndata; ++i)
+ if (putspent (&data[i], fp) != 0)
+ {
+ printf ("putspent call %zu failed\n", i + 1);
+ return 1;
+ }
+
+ rewind (fp);
+
+ int result = 0;
+ int seen = -1;
+ struct spwd *p;
+ while ((p = fgetspent (fp)) != NULL)
+ {
+ ++seen;
+ if (strcmp (p->sp_namp, data[seen].sp_namp) != 0)
+ {
+ printf ("sp_namp of entry %d does not match: %s vs %s\n",
+ seen + 1, p->sp_namp, data[seen].sp_namp);
+ result = 1;
+ }
+ if (strcmp (p->sp_pwdp, data[seen].sp_pwdp) != 0)
+ {
+ printf ("sp_pwdp of entry %d does not match: %s vs %s\n",
+ seen + 1, p->sp_pwdp, data[seen].sp_pwdp);
+ result = 1;
+ }
+#define T(f) \
+ if (p->f != data[seen].f) \
+ { \
+ printf ("%s of entry %d wrong: %ld vs %ld\n", \
+ #f, seen + 1, p->f, data[seen].f); \
+ result = 1; \
+ }
+ T (sp_lstchg);
+ T (sp_min);
+ T (sp_max);
+ T (sp_warn);
+ T (sp_expire);
+ if (p->sp_flag != data[seen].sp_flag)
+ {
+ printf ("sp_flag of entry %d wrong: %lu vs %lu\n",
+ seen + 1, p->sp_flag, data[seen].sp_flag);
+ result = 1;
+ }
+ }
+
+ fclose (fp);
+
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/signal/.cvsignore b/signal/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/signal/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/signal/signal.h b/signal/signal.h
index aa210374db..2bdf648dff 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2003, 2004, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2004, 2007, 2009, 2010 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
@@ -70,6 +70,15 @@ typedef __uid_t uid_t;
# endif
#endif /* Unix98 */
+#ifdef __USE_POSIX199309
+/* We need `struct timespec' later on. */
+# define __need_timespec
+# include <time.h>
+
+/* Get the `siginfo_t' type plus the needed symbols. */
+# include <bits/siginfo.h>
+#endif
+
/* Type of a signal handler. */
typedef void (*__sighandler_t) (int);
@@ -136,10 +145,16 @@ extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
extern int gsignal (int __sig) __THROW;
#endif /* Use SVID. */
-#ifdef __USE_MISC
+#if defined __USE_MISC || defined __USE_XOPEN2K
/* Print a message describing the meaning of the given signal number. */
extern void psignal (int __sig, __const char *__s);
-#endif /* Use misc. */
+#endif /* Use misc or POSIX 2008. */
+
+#ifdef __USE_XOPEN2K
+/* Print a message describing the meaning of the given signal information. */
+extern void psiginfo (__const siginfo_t *__pinfo, __const char *__s);
+#endif /* POSIX 2008. */
+
/* The `sigpause' function has two different interfaces. The original
@@ -203,15 +218,6 @@ typedef __sighandler_t sig_t;
#ifdef __USE_POSIX
-# ifdef __USE_POSIX199309
-/* We need `struct timespec' later on. */
-# define __need_timespec
-# include <time.h>
-
-/* Get the `siginfo_t' type plus the needed symbols. */
-# include <bits/siginfo.h>
-# endif
-
/* Clear all signals from SET. */
extern int sigemptyset (sigset_t *__set) __THROW __nonnull ((1));
@@ -338,7 +344,7 @@ extern int sigreturn (struct sigcontext *__scp) __THROW;
#endif /* use BSD. */
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
# define __need_size_t
# include <stddef.h>
@@ -348,7 +354,7 @@ extern int sigreturn (struct sigcontext *__scp) __THROW;
extern int siginterrupt (int __sig, int __interrupt) __THROW;
# include <bits/sigstack.h>
-# ifdef __USE_XOPEN
+# if defined __USE_XOPEN || defined __USE_XOPEN2K8
/* This will define `ucontext_t' and `mcontext_t'. */
# include <sys/ucontext.h>
# endif
diff --git a/socket/.cvsignore b/socket/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/socket/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/socket/Makefile b/socket/Makefile
index 92a87079e3..0e242b579c 100644
--- a/socket/Makefile
+++ b/socket/Makefile
@@ -27,7 +27,7 @@ headers := sys/socket.h sys/un.h bits/sockaddr.h bits/socket.h \
routines := accept bind connect getpeername getsockname getsockopt \
listen recv recvfrom recvmsg send sendmsg sendto \
setsockopt shutdown socket socketpair isfdtype opensock \
- sockatmark
+ sockatmark accept4
aux := have_sock_cloexec
diff --git a/socket/Versions b/socket/Versions
index d282eff79e..7a96b1e934 100644
--- a/socket/Versions
+++ b/socket/Versions
@@ -31,4 +31,7 @@ libc {
# Addition from P1003.1-200x
sockatmark;
}
+ GLIBC_2.10 {
+ accept4;
+ }
}
diff --git a/socket/paccept.c b/socket/accept4.c
index 777dd8c300..40709d5704 100644
--- a/socket/paccept.c
+++ b/socket/accept4.c
@@ -23,21 +23,20 @@
When a connection arrives, open a new socket to communicate with it,
set *ADDR (which is *ADDR_LEN bytes long) to the address of the connecting
peer and *ADDR_LEN to the address's actual length, and return the
- new socket's descriptor, or -1 for errors. SS is installed as
- the thread's signal mask and FLAGS are additional flags. */
+ new socket's descriptor, or -1 for errors. The operation can be influenced
+ by the FLAGS parameter. */
int
-paccept (fd, addr, addr_len, ss, flags)
+accept4 (fd, addr, addr_len, flags)
int fd;
__SOCKADDR_ARG addr;
socklen_t *addr_len;
- const __sigset_t *ss;
int flags;
{
__set_errno (ENOSYS);
return -1;
}
-libc_hidden_def (paccept)
+libc_hidden_def (accept4)
-stub_warning (paccept)
+stub_warning (accept4)
#include <stub-tag.h>
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index e0a6a5216a..9b1f56f8b0 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -214,6 +214,15 @@ extern int listen (int __fd, int __n) __THROW;
extern int accept (int __fd, __SOCKADDR_ARG __addr,
socklen_t *__restrict __addr_len);
+#ifdef __USE_GNU
+/* Similar to 'accept' but takes an additional parameter to specify flags.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int accept4 (int __fd, __SOCKADDR_ARG __addr,
+ socklen_t *__restrict __addr_len, int __flags);
+#endif
+
/* Shut down all or part of the connection open on socket FD.
HOW determines what to shut down:
SHUT_RD = No more receptions;
diff --git a/soft-fp/double.h b/soft-fp/double.h
index b012d9d51b..1cde3308ba 100644
--- a/soft-fp/double.h
+++ b/soft-fp/double.h
@@ -1,6 +1,7 @@
/* Software floating-point emulation.
Definitions for IEEE Double Precision
- Copyright (C) 1997,1998,1999,2006,2007 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz),
@@ -203,13 +204,13 @@ union _FP_UNION_D
#define FP_UNPACK_SEMIRAW_D(X,val) \
do { \
- _FP_UNPACK_RAW_2(1,X,val); \
+ _FP_UNPACK_RAW_1(D,X,val); \
_FP_UNPACK_SEMIRAW(D,1,X); \
} while (0)
#define FP_UNPACK_SEMIRAW_DP(X,val) \
do { \
- _FP_UNPACK_RAW_2_P(1,X,val); \
+ _FP_UNPACK_RAW_1_P(D,X,val); \
_FP_UNPACK_SEMIRAW(D,1,X); \
} while (0)
diff --git a/stdio-common/.cvsignore b/stdio-common/.cvsignore
deleted file mode 100644
index 602b74c1ae..0000000000
--- a/stdio-common/.cvsignore
+++ /dev/null
@@ -1,8 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-
-mpn-copy.mk
-distinfo
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index 944270dafe..9cbf14385c 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2006, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 1991-2006, 2007, 2008, 2009 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
@@ -27,6 +27,7 @@ routines := \
ctermid cuserid \
_itoa _itowa itoa-digits itoa-udigits itowa-digits \
vfprintf vprintf printf_fp reg-printf printf-prs printf_fphex \
+ reg-modifier reg-type \
printf_size fprintf printf snprintf sprintf asprintf dprintf \
vfwprintf vfscanf vfwscanf \
fscanf scanf sscanf \
@@ -36,7 +37,8 @@ routines := \
remove rename renameat \
flockfile ftrylockfile funlockfile \
isoc99_scanf isoc99_vscanf isoc99_fscanf isoc99_vfscanf isoc99_sscanf \
- isoc99_vsscanf
+ isoc99_vsscanf \
+ psiginfo
install-others = $(inst_includedir)/bits/stdio_lim.h
diff --git a/stdio-common/Versions b/stdio-common/Versions
index 1501fa2ffd..3503a84e6b 100644
--- a/stdio-common/Versions
+++ b/stdio-common/Versions
@@ -53,6 +53,10 @@ libc {
__isoc99_scanf; __isoc99_vscanf; __isoc99_fscanf; __isoc99_vfscanf;
__isoc99_sscanf; __isoc99_vsscanf;
}
+ GLIBC_2.10 {
+ psiginfo;
+ register_printf_modifier; register_printf_type; register_printf_specifier;
+ }
GLIBC_PRIVATE {
# global variables
_itoa_lower_digits;
diff --git a/stdio-common/isoc99_vsscanf.c b/stdio-common/isoc99_vsscanf.c
index f10919c79a..b11cf603d3 100644
--- a/stdio-common/isoc99_vsscanf.c
+++ b/stdio-common/isoc99_vsscanf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997-2003, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1997-2003,2006,2007,2009 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
@@ -38,10 +38,10 @@ __isoc99_vsscanf (const char *string, const char *format, _IO_va_list args)
sf._sbf._f._lock = NULL;
#endif
_IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
+ _IO_JUMPS (&sf._sbf) = &_IO_str_jumps;
_IO_str_init_static_internal (&sf, (char*)string, 0, NULL);
sf._sbf._f._flags2 |= _IO_FLAGS2_SCANF_STD;
- ret = INTUSE(_IO_vfscanf) ((_IO_FILE *) &sf._sbf, format, args, NULL);
+ ret = INTUSE(_IO_vfscanf) (&sf._sbf._f, format, args, NULL);
return ret;
}
libc_hidden_def (__isoc99_vsscanf)
diff --git a/stdio-common/printf-parse.h b/stdio-common/printf-parse.h
index f6ad71cd3b..555ad78f33 100644
--- a/stdio-common/printf-parse.h
+++ b/stdio-common/printf-parse.h
@@ -1,5 +1,5 @@
/* Internal header for parsing printf format strings.
- Copyright (C) 1995-1999, 2000, 2002, 2003, 2007
+ Copyright (C) 1995-1999, 2000, 2002, 2003, 2007, 2009
Free Software Foundation, Inc.
This file is part of th GNU C Library.
@@ -42,6 +42,8 @@ struct printf_spec
int data_arg_type; /* Type of first argument. */
/* Number of arguments consumed by this format specifier. */
size_t ndata_args;
+ /* Size of the parameter for PA_USER type. */
+ int size;
};
@@ -60,6 +62,7 @@ union printf_arg
const char *pa_string;
const wchar_t *pa_wstring;
void *pa_pointer;
+ void *pa_user;
};
@@ -83,8 +86,9 @@ read_int (const UCHAR_T * *pstr)
/* These are defined in reg-printf.c. */
-extern printf_arginfo_function **__printf_arginfo_table attribute_hidden;
+extern printf_arginfo_size_function **__printf_arginfo_table attribute_hidden;
extern printf_function **__printf_function_table attribute_hidden;
+extern printf_va_arg_function **__printf_va_arg_table attribute_hidden;
/* Find the next spec in FORMAT, or the end of the string. Returns
@@ -114,3 +118,18 @@ extern size_t __parse_one_specmb (const unsigned char *format, size_t posn,
extern size_t __parse_one_specwc (const unsigned int *format, size_t posn,
struct printf_spec *spec,
size_t *max_ref_arg) attribute_hidden;
+
+
+
+/* This variable is defined in reg-modifier.c. */
+struct printf_modifier_record;
+extern struct printf_modifier_record **__printf_modifier_table
+ attribute_hidden;
+
+/* Handle registered modifiers. */
+extern int __handle_registered_modifier_mb (const unsigned char **format,
+ struct printf_info *info)
+ attribute_hidden;
+extern int __handle_registered_modifier_wc (const unsigned int **format,
+ struct printf_info *info)
+ attribute_hidden;
diff --git a/stdio-common/printf-parsemb.c b/stdio-common/printf-parsemb.c
index da6fd3edb0..efd1eca3a2 100644
--- a/stdio-common/printf-parsemb.c
+++ b/stdio-common/printf-parsemb.c
@@ -1,5 +1,5 @@
/* Helper functions for parsing printf format strings.
- Copyright (C) 1995-2000,2002,2003,2004,2006 Free Software Foundation, Inc.
+ Copyright (C) 1995-2000,2002-2004,2006,2009 Free Software Foundation, Inc.
This file is part of th GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -31,12 +31,14 @@
# define INT_T int
# define L_(Str) Str
# define ISDIGIT(Ch) isdigit (Ch)
+# define HANDLE_REGISTERED_MODIFIER __handle_registered_modifier_mb
#else
# define CHAR_T wchar_t
# define UCHAR_T unsigned int
# define INT_T wint_t
# define L_(Str) L##Str
# define ISDIGIT(Ch) iswdigit (Ch)
+# define HANDLE_REGISTERED_MODIFIER __handle_registered_modifier_wc
#endif
#include "printf-parse.h"
@@ -223,72 +225,79 @@ __parse_one_specmb (const UCHAR_T *format, size_t posn,
spec->info.is_short = 0;
spec->info.is_long = 0;
spec->info.is_char = 0;
-
- switch (*format++)
- {
- case L_('h'):
- /* ints are short ints or chars. */
- if (*format != L_('h'))
- spec->info.is_short = 1;
- else
- {
- ++format;
- spec->info.is_char = 1;
- }
- break;
- case L_('l'):
- /* ints are long ints. */
- spec->info.is_long = 1;
- if (*format != L_('l'))
+ spec->info.user = 0;
+
+ if (__builtin_expect (__printf_modifier_table == NULL, 1)
+ || __printf_modifier_table[*format] == NULL
+ || HANDLE_REGISTERED_MODIFIER (&format, &spec->info) != 0)
+ switch (*format++)
+ {
+ case L_('h'):
+ /* ints are short ints or chars. */
+ if (*format != L_('h'))
+ spec->info.is_short = 1;
+ else
+ {
+ ++format;
+ spec->info.is_char = 1;
+ }
break;
- ++format;
- /* FALLTHROUGH */
- case L_('L'):
- /* doubles are long doubles, and ints are long long ints. */
- case L_('q'):
- /* 4.4 uses this for long long. */
- spec->info.is_long_double = 1;
- break;
- case L_('z'):
- case L_('Z'):
- /* ints are size_ts. */
- assert (sizeof (size_t) <= sizeof (unsigned long long int));
+ case L_('l'):
+ /* ints are long ints. */
+ spec->info.is_long = 1;
+ if (*format != L_('l'))
+ break;
+ ++format;
+ /* FALLTHROUGH */
+ case L_('L'):
+ /* doubles are long doubles, and ints are long long ints. */
+ case L_('q'):
+ /* 4.4 uses this for long long. */
+ spec->info.is_long_double = 1;
+ break;
+ case L_('z'):
+ case L_('Z'):
+ /* ints are size_ts. */
+ assert (sizeof (size_t) <= sizeof (unsigned long long int));
#if LONG_MAX != LONG_LONG_MAX
- spec->info.is_long_double = sizeof (size_t) > sizeof (unsigned long int);
+ spec->info.is_long_double = (sizeof (size_t)
+ > sizeof (unsigned long int));
#endif
- spec->info.is_long = sizeof (size_t) > sizeof (unsigned int);
- break;
- case L_('t'):
- assert (sizeof (ptrdiff_t) <= sizeof (long long int));
+ spec->info.is_long = sizeof (size_t) > sizeof (unsigned int);
+ break;
+ case L_('t'):
+ assert (sizeof (ptrdiff_t) <= sizeof (long long int));
#if LONG_MAX != LONG_LONG_MAX
- spec->info.is_long_double = (sizeof (ptrdiff_t) > sizeof (long int));
+ spec->info.is_long_double = (sizeof (ptrdiff_t) > sizeof (long int));
#endif
- spec->info.is_long = sizeof (ptrdiff_t) > sizeof (int);
- break;
- case L_('j'):
- assert (sizeof (uintmax_t) <= sizeof (unsigned long long int));
+ spec->info.is_long = sizeof (ptrdiff_t) > sizeof (int);
+ break;
+ case L_('j'):
+ assert (sizeof (uintmax_t) <= sizeof (unsigned long long int));
#if LONG_MAX != LONG_LONG_MAX
- spec->info.is_long_double = (sizeof (uintmax_t)
- > sizeof (unsigned long int));
+ spec->info.is_long_double = (sizeof (uintmax_t)
+ > sizeof (unsigned long int));
#endif
- spec->info.is_long = sizeof (uintmax_t) > sizeof (unsigned int);
- break;
- default:
- /* Not a recognized modifier. Backup. */
- --format;
- break;
- }
+ spec->info.is_long = sizeof (uintmax_t) > sizeof (unsigned int);
+ break;
+ default:
+ /* Not a recognized modifier. Backup. */
+ --format;
+ break;
+ }
/* Get the format specification. */
spec->info.spec = (wchar_t) *format++;
- if (__builtin_expect (__printf_function_table != NULL, 0)
- && spec->info.spec <= UCHAR_MAX
- && __printf_arginfo_table[spec->info.spec] != NULL)
- /* We don't try to get the types for all arguments if the format
- uses more than one. The normal case is covered though. */
- spec->ndata_args = (*__printf_arginfo_table[spec->info.spec])
- (&spec->info, 1, &spec->data_arg_type);
- else
+ spec->size = -1;
+ if (__builtin_expect (__printf_function_table == NULL, 1)
+ || spec->info.spec > UCHAR_MAX
+ || __printf_arginfo_table[spec->info.spec] == NULL
+ /* We don't try to get the types for all arguments if the format
+ uses more than one. The normal case is covered though. If
+ the call returns -1 we continue with the normal specifiers. */
+ || (spec->ndata_args = (*__printf_arginfo_table[spec->info.spec])
+ (&spec->info, 1, &spec->data_arg_type,
+ &spec->size)) < 0)
{
/* Find the data argument types of a built-in spec. */
spec->ndata_args = 1;
diff --git a/stdio-common/printf-prs.c b/stdio-common/printf-prs.c
index aabc9ed85a..e8d84b3be0 100644
--- a/stdio-common/printf-prs.c
+++ b/stdio-common/printf-prs.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 1991, 1992, 1995, 1996, 1999, 2000, 2002, 2003, 2004, 2005,
- 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1995, 1996, 1999, 2000, 2002-2005, 2007, 2009
+ 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
@@ -97,7 +97,8 @@ parse_printf_format (fmt, n, argtypes)
/* We have more than one argument for this format spec. We must
call the arginfo function again to determine all the types. */
(void) (*__printf_arginfo_table[spec.info.spec])
- (&spec.info, n - spec.data_arg, &argtypes[spec.data_arg]);
+ (&spec.info, n - spec.data_arg, &argtypes[spec.data_arg],
+ &spec.size);
break;
}
}
diff --git a/stdio-common/printf.h b/stdio-common/printf.h
index 360cdcce1d..af8cf34fcc 100644
--- a/stdio-common/printf.h
+++ b/stdio-common/printf.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1993,1995-1999,2000,2001,2006
+/* Copyright (C) 1991-1993,1995-2001,2006,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -29,6 +29,7 @@ __BEGIN_DECLS
#define __need_size_t
#define __need_wchar_t
#include <stddef.h>
+#include <stdarg.h>
struct printf_info
@@ -48,6 +49,8 @@ struct printf_info
unsigned int is_char:1; /* hh flag. */
unsigned int wide:1; /* Nonzero for wide character streams. */
unsigned int i18n:1; /* I flag. */
+ unsigned int __pad:4; /* Unused so far. */
+ unsigned short int user; /* Bits for user-installed modifiers. */
wchar_t pad; /* Padding character. */
};
@@ -68,18 +71,55 @@ typedef int printf_function (FILE *__stream,
/* Type of a printf specifier-arginfo function.
INFO gives information about the format specification.
- N, ARGTYPES, and return value are as for parse_printf_format. */
+ N, ARGTYPES, *SIZE has to contain the size of the parameter for
+ user-defined types, and return value are as for parse_printf_format
+ except that -1 should be returned if the handler cannot handle
+ this case. This allows to partially overwrite the functionality
+ of existing format specifiers. */
+
+typedef int printf_arginfo_size_function (__const struct printf_info *__info,
+ size_t __n, int *__argtypes,
+ int *__size);
+
+/* Old version of 'printf_arginfo_function' without a SIZE parameter. */
typedef int printf_arginfo_function (__const struct printf_info *__info,
size_t __n, int *__argtypes);
+/* Type of a function to get a value of a user-defined from the
+ variable argument list. */
+typedef void printf_va_arg_function (void *__mem, va_list *__ap);
+
/* Register FUNC to be called to format SPEC specifiers; ARGINFO must be
specified to determine how many arguments a SPEC conversion requires and
what their types are. */
+extern int register_printf_specifier (int __spec, printf_function __func,
+ printf_arginfo_size_function __arginfo)
+ __THROW;
+
+
+/* Obsolete interface similar to register_printf_specifier. It can only
+ handle basic data types because the ARGINFO callback does not return
+ information on the size of the user-defined type. */
+
extern int register_printf_function (int __spec, printf_function __func,
- printf_arginfo_function __arginfo);
+ printf_arginfo_function __arginfo)
+ __THROW __attribute_deprecated__;
+
+
+/* Register a new modifier character sequence. If the call succeeds
+ it returns a positive value representing the bit set in the USER
+ field in 'struct printf_info'. */
+
+extern int register_printf_modifier (__const wchar_t *__str) __wur __THROW;
+
+
+/* Register variable argument handler for user type. The return value
+ is to be used in ARGINFO functions to signal the use of the
+ type. */
+extern int register_printf_type (printf_va_arg_function __fct) __wur __THROW;
/* Parse FMT, and fill in N elements of ARGTYPES with the
@@ -100,7 +140,8 @@ extern size_t parse_printf_format (__const char *__restrict __fmt, size_t __n,
/* Codes returned by `parse_printf_format' for basic types.
These values cover all the standard format specifications.
- Users can add new values after PA_LAST for their own types. */
+ Users can reserve new values after PA_LAST for their own types
+ using 'register_printf_type'. */
enum
{ /* C type: */
diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c
index 43c43c2039..b60ddecef0 100644
--- a/stdio-common/printf_fp.c
+++ b/stdio-common/printf_fp.c
@@ -28,6 +28,7 @@
#include <float.h>
#include <gmp-mparam.h>
#include <gmp.h>
+#include <ieee754.h>
#include <stdlib/gmp-impl.h>
#include <stdlib/longlong.h>
#include <stdlib/fpioconst.h>
@@ -335,6 +336,8 @@ ___printf_fp (FILE *fp,
/* Check for special values: not a number or infinity. */
if (__isnanl (fpnum.ldbl))
{
+ union ieee854_long_double u = { .d = fpnum.ldbl };
+ is_neg = u.ieee.negative != 0;
if (isupper (info->spec))
{
special = "NAN";
@@ -345,10 +348,10 @@ ___printf_fp (FILE *fp,
special = "nan";
wspecial = L"nan";
}
- is_neg = 0;
}
else if (__isinfl (fpnum.ldbl))
{
+ is_neg = fpnum.ldbl < 0;
if (isupper (info->spec))
{
special = "INF";
@@ -359,7 +362,6 @@ ___printf_fp (FILE *fp,
special = "inf";
wspecial = L"inf";
}
- is_neg = fpnum.ldbl < 0;
}
else
{
@@ -379,7 +381,8 @@ ___printf_fp (FILE *fp,
/* Check for special values: not a number or infinity. */
if (__isnan (fpnum.dbl))
{
- is_neg = 0;
+ union ieee754_double u = { .d = fpnum.dbl };
+ is_neg = u.ieee.negative != 0;
if (isupper (info->spec))
{
special = "NAN";
@@ -888,8 +891,15 @@ ___printf_fp (FILE *fp,
it is possible that we need two more characters in front of all the
other output. If the amount of memory we have to allocate is too
large use `malloc' instead of `alloca'. */
- size_t wbuffer_to_alloc = (2 + (size_t) chars_needed) * sizeof (wchar_t);
- buffer_malloced = ! __libc_use_alloca (chars_needed * 2 * sizeof (wchar_t));
+ if (__builtin_expect (chars_needed >= (size_t) -1 / sizeof (wchar_t) - 2
+ || chars_needed < fracdig_max, 0))
+ {
+ /* Some overflow occurred. */
+ __set_errno (ERANGE);
+ return -1;
+ }
+ size_t wbuffer_to_alloc = (2 + chars_needed) * sizeof (wchar_t);
+ buffer_malloced = ! __libc_use_alloca (wbuffer_to_alloc);
if (__builtin_expect (buffer_malloced, 0))
{
wbuffer = (wchar_t *) malloc (wbuffer_to_alloc);
diff --git a/stdio-common/printf_fphex.c b/stdio-common/printf_fphex.c
index 4e30d94c61..551c873c5e 100644
--- a/stdio-common/printf_fphex.c
+++ b/stdio-common/printf_fphex.c
@@ -172,6 +172,7 @@ __printf_fphex (FILE *fp,
/* Check for special values: not a number or infinity. */
if (__isnanl (fpnum.ldbl.d))
{
+ negative = fpnum.ldbl.ieee.negative != 0;
if (isupper (info->spec))
{
special = "NAN";
@@ -182,7 +183,6 @@ __printf_fphex (FILE *fp,
special = "nan";
wspecial = L"nan";
}
- negative = 0;
}
else
{
@@ -211,6 +211,7 @@ __printf_fphex (FILE *fp,
/* Check for special values: not a number or infinity. */
if (__isnan (fpnum.dbl.d))
{
+ negative = fpnum.dbl.ieee.negative != 0;
if (isupper (info->spec))
{
special = "NAN";
@@ -221,7 +222,6 @@ __printf_fphex (FILE *fp,
special = "nan";
wspecial = L"nan";
}
- negative = 0;
}
else
{
diff --git a/stdio-common/psiginfo-data.h b/stdio-common/psiginfo-data.h
new file mode 100644
index 0000000000..02ebf8af29
--- /dev/null
+++ b/stdio-common/psiginfo-data.h
@@ -0,0 +1,50 @@
+#if NOW == SIGILL
+P (ILL_ILLOPC, N_("Illegal opcode"))
+P (ILL_ILLOPN, N_("Illegal operand"))
+P (ILL_ILLADR, N_("Illegal addressing mode"))
+P (ILL_ILLTRP, N_("Illegal trap"))
+P (ILL_PRVOPC, N_("Privileged opcode"))
+P (ILL_PRVREG, N_("Privileged register"))
+P (ILL_COPROC, N_("Coprocessor error"))
+P (ILL_BADSTK, N_("Internal stack error"))
+#endif
+#if NOW == SIGFPE
+P (FPE_INTDIV, N_("Integer divide by zero"))
+P (FPE_INTOVF, N_("Integer overflow"))
+P (FPE_FLTDIV, N_("Floating-point divide by zero"))
+P (FPE_FLTOVF, N_("Floating-point overflow"))
+P (FPE_FLTUND, N_("Floating-point underflow"))
+P (FPE_FLTRES, N_("Floating-poing inexact result"))
+P (FPE_FLTINV, N_("Invalid floating-point operation"))
+P (FPE_FLTSUB, N_("Subscript out of range"))
+#endif
+#if NOW == SIGSEGV
+P (SEGV_MAPERR, N_("Address not mapped to object"))
+P (SEGV_ACCERR, N_("Invalid permissions for mapped object"))
+#endif
+#if NOW == SIGBUS
+P (BUS_ADRALN, N_("Invalid address alignment"))
+P (BUS_ADRERR, N_("Nonexisting physical address"))
+P (BUS_OBJERR, N_("Object-specific hardware error"))
+#endif
+#if NOW == SIGTRAP
+P (TRAP_BRKPT, N_("Process breakpoint"))
+P (TRAP_TRACE, N_("Process trace trap"))
+#endif
+#if NOW == SIGCLD
+P (CLD_EXITED, N_("Child has exited"))
+P (CLD_KILLED, N_("Child has terminated abnormally and did not create a core file"))
+P (CLD_DUMPED, N_("Child hat terminated abnormally and created a core file"))
+P (CLD_TRAPPED, N_("Traced child has trapped"))
+P (CLD_STOPPED, N_("Child has stopped"))
+P (CLD_CONTINUED, N_("Stopped child has continued"))
+#endif
+#if NOW == SIGPOLL
+P (POLL_IN, N_("Data input available"))
+P (POLL_OUT, N_("Output buffers available"))
+P (POLL_MSG, N_("Input message available"))
+P (POLL_ERR, N_("I/O error"))
+P (POLL_PRI, N_("High priority input available"))
+P (POLL_HUP, N_("Device disconnected"))
+#endif
+#undef P
diff --git a/stdio-common/psiginfo-define.h b/stdio-common/psiginfo-define.h
new file mode 100644
index 0000000000..e1d1a351f8
--- /dev/null
+++ b/stdio-common/psiginfo-define.h
@@ -0,0 +1,15 @@
+static const union C(codestrs_t_, NOW) {
+ struct {
+#define P(n, s) char MF(__LINE__)[sizeof (s)];
+#include "psiginfo-data.h"
+ };
+ char str[0];
+} C(codestrs_, NOW) = { {
+#define P(n, s) s,
+#include "psiginfo-data.h"
+ } };
+static const uint8_t C(codes_, NOW)[] = {
+#define P(n, s) [(n) - 1] = offsetof (union C(codestrs_t_, NOW), MF(__LINE__)),
+#include "psiginfo-data.h"
+};
+#undef NOW
diff --git a/stdio-common/psiginfo.c b/stdio-common/psiginfo.c
new file mode 100644
index 0000000000..e089fcaa42
--- /dev/null
+++ b/stdio-common/psiginfo.c
@@ -0,0 +1,184 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <libintl.h>
+#include <signal.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <not-cancel.h>
+
+
+/* Defined in sys_siglist.c. */
+extern const char *const _sys_siglist[];
+extern const char *const _sys_siglist_internal[] attribute_hidden;
+
+
+#define MF(l) MF1 (l)
+#define MF1(l) str_##l
+#define C(s1, s2) C1 (s1, s2)
+#define C1(s1, s2) s1##s2
+
+#define NOW SIGILL
+#include "psiginfo-define.h"
+
+#define NOW SIGFPE
+#include "psiginfo-define.h"
+
+#define NOW SIGSEGV
+#include "psiginfo-define.h"
+
+#define NOW SIGBUS
+#include "psiginfo-define.h"
+
+#define NOW SIGTRAP
+#include "psiginfo-define.h"
+
+#define NOW SIGCLD
+#include "psiginfo-define.h"
+
+#define NOW SIGPOLL
+#include "psiginfo-define.h"
+
+
+/* Print out on stderr a line consisting of the test in S, a colon, a space,
+ a message describing the meaning of the signal number PINFO and a newline.
+ If S is NULL or "", the colon and space are omitted. */
+void
+psiginfo (const siginfo_t *pinfo, const char *s)
+{
+ char buf[512];
+ FILE *fp = fmemopen (buf, sizeof (buf), "w");
+ if (fp == NULL)
+ {
+ const char *colon;
+
+ if (s == NULL || *s == '\0')
+ s = colon = "";
+ else
+ colon = ": ";
+
+ __fxprintf (NULL, "%s%ssignal %d\n", s, colon, pinfo->si_signo);
+ return;
+ }
+
+ if (s != NULL && *s != '\0')
+ fprintf (fp, "%s: ", s);
+
+ const char *desc;
+ if (pinfo->si_signo >= 0 && pinfo->si_signo < NSIG
+ && (desc = INTUSE(_sys_siglist)[pinfo->si_signo]) != NULL)
+ {
+ fprintf (fp, "%s (", _(desc));
+
+ const char *base = NULL;
+ const uint8_t *offarr = NULL;
+ size_t offarr_len = 0;
+ switch (pinfo->si_signo)
+ {
+#define H(sig) \
+ case sig: \
+ base = C(codestrs_, sig).str; \
+ offarr = C (codes_, sig); \
+ offarr_len = sizeof (C (codes_, sig)) / sizeof (C (codes_, sig)[0]);\
+ break
+
+ H (SIGILL);
+ H (SIGFPE);
+ H (SIGSEGV);
+ H (SIGBUS);
+ H (SIGTRAP);
+ H (SIGCHLD);
+ H (SIGPOLL);
+ }
+
+ const char *str = NULL;
+ if (offarr != NULL
+ && pinfo->si_code >= 1 && pinfo->si_code <= offarr_len)
+ str = base + offarr[pinfo->si_code - 1];
+ else
+ switch (pinfo->si_code)
+ {
+ case SI_USER:
+ str = N_("Signal sent by kill()");
+ break;
+ case SI_QUEUE:
+ str = N_("Signal sent by sigqueue()");
+ break;
+ case SI_TIMER:
+ str = N_("Signal generated by the expiration of a timer");
+ break;
+ case SI_ASYNCIO:
+ str = N_("\
+Signal generated by the completion of an asynchronous I/O request");
+ break;
+ case SI_MESGQ:
+ str = N_("\
+Signal generated by the arrival of a message on an empty message queue");
+ break;
+#ifdef SI_TKILL
+ case SI_TKILL:
+ str = N_("Signal sent by tkill()");
+ break;
+#endif
+#ifdef SI_ASYNCNL
+ case SI_ASYNCNL:
+ str = N_("\
+Signal generated by the completion of an asynchronous name lookup request");
+ break;
+#endif
+#ifdef SI_SIGIO
+ case SI_SIGIO:
+ str = N_("\
+Signal generated by the completion of an I/O request");
+ break;
+#endif
+#ifdef SI_KERNEL
+ case SI_KERNEL:
+ str = N_("Signal sent by the kernel");
+ break;
+#endif
+ }
+
+ if (str != NULL)
+ fprintf (fp, "%s ", _(str));
+ else
+ fprintf (fp, "%d ", pinfo->si_code);
+
+ if (pinfo->si_signo == SIGILL || pinfo->si_signo == SIGFPE
+ || pinfo->si_signo == SIGSEGV || pinfo->si_signo == SIGBUS)
+ fprintf (fp, "[%p])", pinfo->si_addr);
+ else if (pinfo->si_signo == SIGCHLD)
+ fprintf (fp, "%ld %d %ld)", (long int) pinfo->si_pid, pinfo->si_status,
+ (long int) pinfo->si_uid);
+ else if (pinfo->si_signo == SIGPOLL)
+ fprintf (fp, "%ld)", pinfo->si_band);
+ else
+ fprintf (fp, "%ld %ld)",
+ (long int) pinfo->si_pid, (long int) pinfo->si_uid);
+ }
+ else
+ fprintf (fp, _("Unknown signal %d\n"), pinfo->si_signo);
+
+ fclose (fp);
+
+ write_not_cancel (STDERR_FILENO, buf, strlen (buf));
+}
diff --git a/stdio-common/psignal.c b/stdio-common/psignal.c
index 98049a5871..c8111051b1 100644
--- a/stdio-common/psignal.c
+++ b/stdio-common/psignal.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1995, 1996, 1997, 2001, 2002, 2004, 2005
+/* Copyright (C) 1991, 1992, 1995, 1996, 1997, 2001, 2002, 2004, 2005, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -37,7 +37,7 @@ psignal (int sig, const char *s)
{
const char *colon, *desc;
- if (s == NULL || s == '\0')
+ if (s == NULL || *s == '\0')
s = colon = "";
else
colon = ": ";
diff --git a/stdio-common/reg-modifier.c b/stdio-common/reg-modifier.c
new file mode 100644
index 0000000000..ea3bdada13
--- /dev/null
+++ b/stdio-common/reg-modifier.c
@@ -0,0 +1,202 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <limits.h>
+#include <printf.h>
+#include <wchar.h>
+#include <bits/libc-lock.h>
+
+
+struct printf_modifier_record
+{
+ struct printf_modifier_record *next;
+ int bit;
+ wchar_t str[0];
+};
+
+struct printf_modifier_record **__printf_modifier_table attribute_hidden;
+
+__libc_lock_define_initialized (static, lock)
+
+/* Bits to hand out. */
+static int next_bit;
+
+
+int
+__register_printf_modifier (const wchar_t *str)
+{
+ if (str[0] == L'\0')
+ {
+ einval:
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ const wchar_t *wc = str;
+ while (*wc != L'\0')
+ if (*wc < 0 || *wc > (wchar_t) UCHAR_MAX)
+ goto einval;
+ else
+ ++wc;
+
+ if (next_bit / 8 == sizeof (((struct printf_info *) NULL)->user))
+ {
+ __set_errno (ENOSPC);
+ return -1;
+ }
+
+ int result = -1;
+ __libc_lock_lock (lock);
+
+ if (__printf_modifier_table == NULL)
+ {
+ __printf_modifier_table = calloc (UCHAR_MAX,
+ sizeof (*__printf_modifier_table));
+ if (__printf_modifier_table == NULL)
+ goto out;
+ }
+
+ /* Create enough room for the string. But we don't need the first
+ character. */
+ struct printf_modifier_record *newp = malloc (sizeof (*newp)
+ + ((wc - str)
+ * sizeof (wchar_t)));
+ if (newp == NULL)
+ goto out;
+
+ newp->next = __printf_modifier_table[(unsigned char) *str];
+ newp->bit = 1 << next_bit++;
+ __wmemcpy (newp->str, str + 1, wc - str);
+
+ __printf_modifier_table[(unsigned char) *str] = newp;
+
+ result = newp->bit;
+
+ out:
+ __libc_lock_unlock (lock);
+
+ return result;
+}
+weak_alias (__register_printf_modifier, register_printf_modifier)
+
+
+#include <stdio.h>
+int
+attribute_hidden
+__handle_registered_modifier_mb (const unsigned char **format,
+ struct printf_info *info)
+{
+ struct printf_modifier_record *runp = __printf_modifier_table[**format];
+
+ int best_bit = 0;
+ int best_len = 0;
+ const unsigned char *best_cp = NULL;
+
+ while (runp != NULL)
+ {
+ const unsigned char *cp = *format + 1;
+ wchar_t *fcp = runp->str;
+
+ while (*cp != '\0' && *fcp != L'\0')
+ if (*cp != *fcp)
+ break;
+ else
+ ++cp, ++fcp;
+
+ if (*fcp == L'\0' && cp - *format > best_len)
+ {
+ best_cp = cp;
+ best_len = cp - *format;
+ best_bit = runp->bit;
+ }
+
+ runp = runp->next;
+ }
+
+ if (best_bit != 0)
+ {
+ info->user |= best_bit;
+ *format = best_cp;
+ return 0;
+ }
+
+ return 1;
+}
+
+
+int
+attribute_hidden
+__handle_registered_modifier_wc (const unsigned int **format,
+ struct printf_info *info)
+{
+ struct printf_modifier_record *runp = __printf_modifier_table[**format];
+
+ int best_bit = 0;
+ int best_len = 0;
+ const unsigned int *best_cp = NULL;
+
+ while (runp != NULL)
+ {
+ const unsigned int *cp = *format + 1;
+ wchar_t *fcp = runp->str;
+
+ while (*cp != '\0' && *fcp != L'\0')
+ if (*cp != *fcp)
+ break;
+ else
+ ++cp, ++fcp;
+
+ if (*fcp == L'\0' && cp - *format > best_len)
+ {
+ best_cp = cp;
+ best_len = cp - *format;
+ best_bit = runp->bit;
+ }
+
+ runp = runp->next;
+ }
+
+ if (best_bit != 0)
+ {
+ info->user |= best_bit;
+ *format = best_cp;
+ return 0;
+ }
+
+ return 1;
+}
+
+
+libc_freeres_fn (free_mem)
+{
+ if (__printf_modifier_table != NULL)
+ {
+ for (int i = 0; i < UCHAR_MAX; ++i)
+ {
+ struct printf_modifier_record *runp = __printf_modifier_table[i];
+ while (runp != NULL)
+ {
+ struct printf_modifier_record *oldp = runp;
+ runp = runp->next;
+ free (oldp);
+ }
+ }
+ free (__printf_modifier_table);
+ }
+}
diff --git a/stdio-common/reg-printf.c b/stdio-common/reg-printf.c
index dbb6234e5f..b5cab679de 100644
--- a/stdio-common/reg-printf.c
+++ b/stdio-common/reg-printf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1996,1997,2002,2003,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1996,1997,2002-2004,2009 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
@@ -21,21 +21,28 @@
#include <printf.h>
#include <stddef.h>
#include <stdlib.h>
+#include <bits/libc-lock.h>
+
/* Array of functions indexed by format character. */
-libc_freeres_ptr (printf_arginfo_function **__printf_arginfo_table)
+libc_freeres_ptr (printf_arginfo_size_function **__printf_arginfo_table)
attribute_hidden;
printf_function **__printf_function_table attribute_hidden;
+__libc_lock_define_initialized (static, lock)
+
+int __register_printf_specifier (int, printf_function,
+ printf_arginfo_size_function);
int __register_printf_function (int, printf_function,
- printf_arginfo_function) __THROW;
+ printf_arginfo_function);
+
/* Register FUNC to be called to format SPEC specifiers. */
int
-__register_printf_function (spec, converter, arginfo)
+__register_printf_specifier (spec, converter, arginfo)
int spec;
printf_function converter;
- printf_arginfo_function arginfo;
+ printf_arginfo_size_function arginfo;
{
if (spec < 0 || spec > (int) UCHAR_MAX)
{
@@ -43,12 +50,19 @@ __register_printf_function (spec, converter, arginfo)
return -1;
}
+ int result = 0;
+ __libc_lock_lock (lock);
+
if (__printf_function_table == NULL)
{
- __printf_arginfo_table = (printf_arginfo_function **)
+ __printf_arginfo_table = (printf_arginfo_size_function **)
calloc (UCHAR_MAX + 1, sizeof (void *) * 2);
if (__printf_arginfo_table == NULL)
- return -1;
+ {
+ result = -1;
+ goto out;
+ }
+
__printf_function_table = (printf_function **)
(__printf_arginfo_table + UCHAR_MAX + 1);
}
@@ -56,6 +70,22 @@ __register_printf_function (spec, converter, arginfo)
__printf_function_table[spec] = converter;
__printf_arginfo_table[spec] = arginfo;
- return 0;
+ out:
+ __libc_lock_unlock (lock);
+
+ return result;
+}
+weak_alias (__register_printf_specifier, register_printf_specifier)
+
+
+/* Register FUNC to be called to format SPEC specifiers. */
+int
+__register_printf_function (spec, converter, arginfo)
+ int spec;
+ printf_function converter;
+ printf_arginfo_function arginfo;
+{
+ return __register_printf_specifier (spec, converter,
+ (printf_arginfo_size_function*) arginfo);
}
weak_alias (__register_printf_function, register_printf_function)
diff --git a/stdio-common/reg-type.c b/stdio-common/reg-type.c
new file mode 100644
index 0000000000..7a96b2893a
--- /dev/null
+++ b/stdio-common/reg-type.c
@@ -0,0 +1,62 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <printf.h>
+#include <stdlib.h>
+#include <bits/libc-lock.h>
+
+
+/* Array of functions indexed by format character. */
+libc_freeres_ptr (printf_va_arg_function **__printf_va_arg_table)
+ attribute_hidden;
+
+__libc_lock_define_initialized (static, lock);
+
+/* Last type allocated. */
+static int pa_next_type = PA_LAST;
+
+
+int
+__register_printf_type (printf_va_arg_function fct)
+{
+ int result = -1;
+ __libc_lock_lock (lock);
+
+ if (__printf_va_arg_table == NULL)
+ {
+ __printf_va_arg_table = (printf_va_arg_function **)
+ calloc (0x100 - PA_LAST, sizeof (void *));
+ if (__printf_va_arg_table == NULL)
+ goto out;
+ }
+
+ if (pa_next_type == 0x100)
+ __set_errno (ENOSPC);
+ else
+ {
+ result = pa_next_type++;
+ __printf_va_arg_table[result - PA_LAST] = fct;
+ }
+
+ out:
+ __libc_lock_unlock (lock);
+
+ return result;
+}
+weak_alias (__register_printf_type, register_printf_type)
diff --git a/stdio-common/scanf13.c b/stdio-common/scanf13.c
index e53cde29c7..720224aa05 100644
--- a/stdio-common/scanf13.c
+++ b/stdio-common/scanf13.c
@@ -11,7 +11,6 @@ main (void)
wchar_t *lsp1, *lsp2, *lsp3, *lsp4;
int result = 0;
char buf[2048+64];
- wchar_t wbuf[2048+64];
size_t i;
#define FAIL() \
diff --git a/stdio-common/scanf15.c b/stdio-common/scanf15.c
index c56715c486..851466b3a9 100644
--- a/stdio-common/scanf15.c
+++ b/stdio-common/scanf15.c
@@ -1,5 +1,6 @@
#undef _GNU_SOURCE
#define _XOPEN_SOURCE 600
+#undef _LIBC
/* The following macro definitions are a hack. They word around disabling
the GNU extension while still using a few internal headers. */
#define u_char unsigned char
diff --git a/stdio-common/scanf17.c b/stdio-common/scanf17.c
index ee9024f9b7..4478a7022f 100644
--- a/stdio-common/scanf17.c
+++ b/stdio-common/scanf17.c
@@ -1,5 +1,6 @@
#undef _GNU_SOURCE
#define _XOPEN_SOURCE 600
+#undef _LIBC
/* The following macro definitions are a hack. They word around disabling
the GNU extension while still using a few internal headers. */
#define u_char unsigned char
diff --git a/stdio-common/stdio_lim.h.in b/stdio-common/stdio_lim.h.in
index bb496c59de..a827255790 100644
--- a/stdio-common/stdio_lim.h.in
+++ b/stdio-common/stdio_lim.h.in
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1997, 1998, 1999, 2009 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
@@ -27,7 +27,9 @@
# ifdef __USE_POSIX
# define L_ctermid @L_ctermid@
-# define L_cuserid @L_cuserid@
+# if !defined __USE_XOPEN2K || defined __USE_GNU
+# define L_cuserid @L_cuserid@
+# endif
# endif
#endif
diff --git a/stdio-common/tempnam.c b/stdio-common/tempnam.c
index 055604fb79..3604a2d267 100644
--- a/stdio-common/tempnam.c
+++ b/stdio-common/tempnam.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1993,1996-2000,2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1993,1996-2000,2007,2009 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
@@ -34,7 +34,7 @@ tempnam (const char *dir, const char *pfx)
if (__path_search (buf, FILENAME_MAX, dir, pfx, 1))
return NULL;
- if (__gen_tempname (buf, 0, __GT_NOCREATE))
+ if (__gen_tempname (buf, 0, 0, __GT_NOCREATE))
return NULL;
return __strdup (buf);
diff --git a/stdio-common/tempname.c b/stdio-common/tempname.c
index 2c7bcdee0f..02ee34fe8e 100644
--- a/stdio-common/tempname.c
+++ b/stdio-common/tempname.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 93, 95-98, 99, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 93, 95-99, 2007, 2009 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
@@ -47,8 +47,9 @@ stub_warning (__path_search)
*/
int
-__gen_tempname (tmpl, flags, kind)
+__gen_tempname (tmpl, suffixlen, flags, kind)
char *tmpl;
+ int suffixlen;
int flags;
int kind;
{
diff --git a/stdio-common/tmpfile.c b/stdio-common/tmpfile.c
index b90051346b..69963fd4a9 100644
--- a/stdio-common/tmpfile.c
+++ b/stdio-common/tmpfile.c
@@ -1,5 +1,5 @@
/* Open a stdio stream on an anonymous temporary file. Generic/POSIX version.
- Copyright (C) 1991,1993,1996-2000,2002,2003,2007
+ Copyright (C) 1991,1993,1996-2000,2002,2003,2007,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -48,7 +48,7 @@ tmpfile (void)
#ifdef FLAGS
flags = FLAGS;
#endif
- fd = __gen_tempname (buf, flags, __GT_FILE);
+ fd = __gen_tempname (buf, 0, flags, __GT_FILE);
if (fd < 0)
return NULL;
diff --git a/stdio-common/tmpnam.c b/stdio-common/tmpnam.c
index f1c16446d5..93d47a1212 100644
--- a/stdio-common/tmpnam.c
+++ b/stdio-common/tmpnam.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1993,1996-1999,2000,2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1993,1996-2000,2007,2009 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
@@ -39,7 +39,7 @@ tmpnam (char *s)
0))
return NULL;
- if (__builtin_expect (__gen_tempname (tmpbuf, 0, __GT_NOCREATE), 0))
+ if (__builtin_expect (__gen_tempname (tmpbuf, 0, 0, __GT_NOCREATE), 0))
return NULL;
if (s == NULL)
diff --git a/stdio-common/tmpnam_r.c b/stdio-common/tmpnam_r.c
index 60c42866a7..d252bafbb2 100644
--- a/stdio-common/tmpnam_r.c
+++ b/stdio-common/tmpnam_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1993,1996-1999,2000,2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1993,1996-2000,2007,2009 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
@@ -28,7 +28,7 @@ tmpnam_r (char *s)
if (__path_search (s, L_tmpnam, NULL, NULL, 0))
return NULL;
- if (__gen_tempname (s, 0, __GT_NOCREATE))
+ if (__gen_tempname (s, 0, 0, __GT_NOCREATE))
return NULL;
return s;
diff --git a/stdio-common/tstdiomisc.c b/stdio-common/tstdiomisc.c
index db038fa2b0..c1c68955bd 100644
--- a/stdio-common/tstdiomisc.c
+++ b/stdio-common/tstdiomisc.c
@@ -47,33 +47,129 @@ t2 (void)
}
volatile double nanval;
+volatile double infval;
+volatile long double lnanval;
+volatile long double linfval;
static int
F (void)
{
- char buf[20];
- wchar_t wbuf[10];
+ char buf[80];
+ wchar_t wbuf[40];
int result;
nanval = NAN;
- snprintf (buf, sizeof buf, "%f %F", nanval, nanval);
- result = strcmp (buf, "nan NAN") != 0;
- printf ("expected \"nan NAN\", got \"%s\"\n", buf);
-
- snprintf (buf, sizeof buf, "%f %F", DBL_MAX * DBL_MAX, DBL_MAX * DBL_MAX);
- result |= strcmp (buf, "inf INF") != 0;
- printf ("expected \"inf INF\", got \"%s\"\n", buf);
-
- swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%f %F", nanval, nanval);
- result |= wcscmp (wbuf, L"nan NAN") != 0;
- printf ("expected L\"nan NAN\", got L\"%S\"\n", wbuf);
-
- swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%f %F",
- DBL_MAX * DBL_MAX, DBL_MAX * DBL_MAX);
- result |= wcscmp (wbuf, L"inf INF") != 0;
- printf ("expected L\"inf INF\", got L\"%S\"\n", wbuf);
+ snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
+ nanval, nanval, nanval, nanval, nanval, nanval, nanval, nanval);
+ result = strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0;
+ printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n", buf);
+
+ snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
+ -nanval, -nanval, -nanval, -nanval,
+ -nanval, -nanval, -nanval, -nanval);
+ result = strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
+ printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n",
+ buf);
+
+ infval = DBL_MAX * DBL_MAX;
+
+ snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
+ infval, infval, infval, infval, infval, infval, infval, infval);
+ result |= strcmp (buf, "inf INF inf INF inf INF inf INF") != 0;
+ printf ("expected \"inf INF inf INF inf INF inf INF\", got \"%s\"\n", buf);
+
+ snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
+ -infval, -infval, -infval, -infval,
+ -infval, -infval, -infval, -infval);
+ result |= strcmp (buf, "-inf -INF -inf -INF -inf -INF -inf -INF") != 0;
+ printf ("expected \"-inf -INF -inf -INF -inf -INF -inf -INF\", got \"%s\"\n",
+ buf);
+
+ swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
+ nanval, nanval, nanval, nanval, nanval, nanval, nanval, nanval);
+ result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0;
+ printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n", wbuf);
+
+ swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
+ -nanval, -nanval, -nanval, -nanval,
+ -nanval, -nanval, -nanval, -nanval);
+ result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
+ printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n",
+ wbuf);
+
+ swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
+ infval, infval, infval, infval, infval, infval, infval, infval);
+ result |= wcscmp (wbuf, L"inf INF inf INF inf INF inf INF") != 0;
+ printf ("expected L\"inf INF inf INF inf INF inf INF\", got L\"%S\"\n", wbuf);
+
+ swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
+ -infval, -infval, -infval, -infval,
+ -infval, -infval, -infval, -infval);
+ result |= wcscmp (wbuf, L"-inf -INF -inf -INF -inf -INF -inf -INF") != 0;
+ printf ("expected L\"-inf -INF -inf -INF -inf -INF -inf -INF\", got L\"%S\"\n",
+ wbuf);
+
+ lnanval = NAN;
+
+ snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
+ lnanval, lnanval, lnanval, lnanval,
+ lnanval, lnanval, lnanval, lnanval);
+ result = strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0;
+ printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n", buf);
+
+ snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
+ -lnanval, -lnanval, -lnanval, -lnanval,
+ -lnanval, -lnanval, -lnanval, -lnanval);
+ result = strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
+ printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n",
+ buf);
+
+ linfval = LDBL_MAX * LDBL_MAX;
+
+ snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
+ linfval, linfval, linfval, linfval,
+ linfval, linfval, linfval, linfval);
+ result |= strcmp (buf, "inf INF inf INF inf INF inf INF") != 0;
+ printf ("expected \"inf INF inf INF inf INF inf INF\", got \"%s\"\n", buf);
+
+ snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
+ -linfval, -linfval, -linfval, -linfval,
+ -linfval, -linfval, -linfval, -linfval);
+ result |= strcmp (buf, "-inf -INF -inf -INF -inf -INF -inf -INF") != 0;
+ printf ("expected \"-inf -INF -inf -INF -inf -INF -inf -INF\", got \"%s\"\n",
+ buf);
+
+ swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
+ L"%La %LA %Le %LE %Lf %LF %Lg %LG",
+ lnanval, lnanval, lnanval, lnanval,
+ lnanval, lnanval, lnanval, lnanval);
+ result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0;
+ printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n", wbuf);
+
+ swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
+ L"%La %LA %Le %LE %Lf %LF %Lg %LG",
+ -lnanval, -lnanval, -lnanval, -lnanval,
+ -lnanval, -lnanval, -lnanval, -lnanval);
+ result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
+ printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n",
+ wbuf);
+
+ swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
+ L"%La %LA %Le %LE %Lf %LF %Lg %LG",
+ linfval, linfval, linfval, linfval,
+ linfval, linfval, linfval, linfval);
+ result |= wcscmp (wbuf, L"inf INF inf INF inf INF inf INF") != 0;
+ printf ("expected L\"inf INF inf INF inf INF inf INF\", got L\"%S\"\n", wbuf);
+
+ swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
+ L"%La %LA %Le %LE %Lf %LF %Lg %LG",
+ -linfval, -linfval, -linfval, -linfval,
+ -linfval, -linfval, -linfval, -linfval);
+ result |= wcscmp (wbuf, L"-inf -INF -inf -INF -inf -INF -inf -INF") != 0;
+ printf ("expected L\"-inf -INF -inf -INF -inf -INF -inf -INF\", got L\"%S\"\n",
+ wbuf);
return result;
}
diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
index 5d5bb5e578..6e0e85cd7c 100644
--- a/stdio-common/vfprintf.c
+++ b/stdio-common/vfprintf.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1991-2002, 2003, 2004, 2005, 2006, 2007, 2008
- Free Software Foundation, Inc.
+/* Copyright (C) 1991-2008, 2009 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
@@ -239,7 +238,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
/* This table maps a character into a number representing a
class. In each step there is a destination label for each
class. */
- static const int jump_table[] =
+ static const uint8_t jump_table[] =
{
/* ' ' */ 1, 0, 0, /* '#' */ 4,
0, /* '%' */ 14, 0, /* '\''*/ 6,
@@ -1440,23 +1439,29 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
left = 1;
}
- if (width + 32 >= (int) (sizeof (work_buffer)
- / sizeof (work_buffer[0])))
+ if (__builtin_expect (width >= (size_t) -1 / sizeof (CHAR_T) - 32, 0))
+ {
+ __set_errno (ERANGE);
+ done = -1;
+ goto all_done;
+ }
+
+ if (width >= sizeof (work_buffer) / sizeof (work_buffer[0]) - 32)
{
/* We have to use a special buffer. The "32" is just a safe
bet for all the output which is not counted in the width. */
- if (__libc_use_alloca ((width + 32) * sizeof (CHAR_T)))
- workend = ((CHAR_T *) alloca ((width + 32) * sizeof (CHAR_T))
- + (width + 32));
+ size_t needed = ((size_t) width + 32) * sizeof (CHAR_T);
+ if (__libc_use_alloca (needed))
+ workend = (CHAR_T *) alloca (needed) + width + 32;
else
{
- workstart = (CHAR_T *) malloc ((width + 32) * sizeof (CHAR_T));
+ workstart = (CHAR_T *) malloc (needed);
if (workstart == NULL)
{
done = -1;
goto all_done;
}
- workend = workstart + (width + 32);
+ workend = workstart + width + 32;
}
}
}
@@ -1466,22 +1471,29 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
LABEL (width):
width = read_int (&f);
- if (width + 32 >= (int) (sizeof (work_buffer) / sizeof (work_buffer[0])))
+ if (__builtin_expect (width >= (size_t) -1 / sizeof (CHAR_T) - 32, 0))
+ {
+ __set_errno (ERANGE);
+ done = -1;
+ goto all_done;
+ }
+
+ if (width >= sizeof (work_buffer) / sizeof (work_buffer[0]) - 32)
{
/* We have to use a special buffer. The "32" is just a safe
bet for all the output which is not counted in the width. */
- if (__libc_use_alloca ((width + 32) * sizeof (CHAR_T)))
- workend = ((CHAR_T *) alloca ((width + 32) * sizeof (CHAR_T))
- + (width + 32));
+ size_t needed = ((size_t) width + 32) * sizeof (CHAR_T);
+ if (__libc_use_alloca (needed))
+ workend = (CHAR_T *) alloca (needed) + width + 32;
else
{
- workstart = (CHAR_T *) malloc ((width + 32) * sizeof (CHAR_T));
+ workstart = (CHAR_T *) malloc (needed);
if (workstart == NULL)
{
done = -1;
goto all_done;
}
- workend = workstart + (width + 32);
+ workend = workstart + width + 32;
}
}
if (*f == L_('$'))
@@ -1511,18 +1523,18 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
else
prec = 0;
if (prec > width
- && prec + 32 > (int)(sizeof (work_buffer) / sizeof (work_buffer[0])))
+ && prec > sizeof (work_buffer) / sizeof (work_buffer[0]) - 32)
{
- if (__builtin_expect (prec > ~((size_t) 0) / sizeof (CHAR_T) - 31,
- 0))
+ if (__builtin_expect (prec >= (size_t) -1 / sizeof (CHAR_T) - 32, 0))
{
+ __set_errno (ERANGE);
done = -1;
goto all_done;
}
size_t needed = ((size_t) prec + 32) * sizeof (CHAR_T);
if (__libc_use_alloca (needed))
- workend = (((CHAR_T *) alloca (needed)) + ((size_t) prec + 32));
+ workend = (CHAR_T *) alloca (needed) + prec + 32;
else
{
workstart = (CHAR_T *) malloc (needed);
@@ -1531,7 +1543,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
done = -1;
goto all_done;
}
- workend = workstart + ((size_t) prec + 32);
+ workend = workstart + prec + 32;
}
}
JUMP (*f, step2_jumps);
@@ -1631,6 +1643,7 @@ do_positional:
size_t nargs = 0;
int *args_type;
union printf_arg *args_value = NULL;
+ int *args_size;
/* Positional parameters refer to arguments directly. This could
also determine the maximum number of arguments. Track the
@@ -1663,24 +1676,10 @@ do_positional:
{
/* Extend the array of format specifiers. */
struct printf_spec *old = specs;
+ specs = extend_alloca (specs, nspecs_max, 2 * nspecs_max);
- nspecs_max *= 2;
- specs = alloca (nspecs_max * sizeof (struct printf_spec));
-
- if (specs == &old[nspecs])
- /* Stack grows up, OLD was the last thing allocated;
- extend it. */
- nspecs_max += nspecs_max / 2;
- else
- {
- /* Copy the old array's elements to the new space. */
- memcpy (specs, old, nspecs * sizeof (struct printf_spec));
- if (old == &specs[nspecs])
- /* Stack grows down, OLD was just below the new
- SPECS. We can use that space when the new space
- runs out. */
- nspecs_max += nspecs_max / 2;
- }
+ /* Copy the old array's elements to the new space. */
+ memmove (specs, old, nspecs * sizeof (struct printf_spec));
}
/* Parse the format specifier. */
@@ -1699,6 +1698,7 @@ do_positional:
memset (args_type, s->_flags2 & _IO_FLAGS2_FORTIFY ? '\xff' : '\0',
nargs * sizeof (int));
args_value = alloca (nargs * sizeof (union printf_arg));
+ args_size = alloca (nargs * sizeof (int));
/* XXX Could do sanity check here: If any element in ARGS_TYPE is
still zero after this loop, format is invalid. For now we
@@ -1719,8 +1719,10 @@ do_positional:
{
case 0: /* No arguments. */
break;
- case 1: /* One argument; we already have the type. */
+ case 1: /* One argument; we already have the
+ type and size. */
args_type[specs[cnt].data_arg] = specs[cnt].data_arg_type;
+ args_size[specs[cnt].data_arg] = specs[cnt].size;
break;
default:
/* We have more than one argument for this format spec.
@@ -1728,7 +1730,8 @@ do_positional:
all the types. */
(void) (*__printf_arginfo_table[specs[cnt].info.spec])
(&specs[cnt].info,
- specs[cnt].ndata_args, &args_type[specs[cnt].data_arg]);
+ specs[cnt].ndata_args, &args_type[specs[cnt].data_arg],
+ &args_size[specs[cnt].data_arg]);
break;
}
}
@@ -1743,13 +1746,21 @@ do_positional:
args_value[cnt].mem = va_arg (ap_save, type); \
break
- T (PA_CHAR, pa_int, int); /* Promoted. */
T (PA_WCHAR, pa_wchar, wint_t);
- T (PA_INT|PA_FLAG_SHORT, pa_int, int); /* Promoted. */
+ case PA_CHAR: /* Promoted. */
+ case PA_INT|PA_FLAG_SHORT: /* Promoted. */
+#if LONG_MAX == INT_MAX
+ case PA_INT|PA_FLAG_LONG:
+#endif
T (PA_INT, pa_int, int);
- T (PA_INT|PA_FLAG_LONG, pa_long_int, long int);
+#if LONG_MAX == LONG_LONG_MAX
+ case PA_INT|PA_FLAG_LONG:
+#endif
T (PA_INT|PA_FLAG_LONG_LONG, pa_long_long_int, long long int);
- T (PA_FLOAT, pa_double, double); /* Promoted. */
+#if LONG_MAX != INT_MAX && LONG_MAX != LONG_LONG_MAX
+# error "he?"
+#endif
+ case PA_FLOAT: /* Promoted. */
T (PA_DOUBLE, pa_double, double);
case PA_DOUBLE|PA_FLAG_LONG_DOUBLE:
if (__ldbl_is_dbl)
@@ -1760,13 +1771,20 @@ do_positional:
else
args_value[cnt].pa_long_double = va_arg (ap_save, long double);
break;
- T (PA_STRING, pa_string, const char *);
- T (PA_WSTRING, pa_wstring, const wchar_t *);
+ case PA_STRING: /* All pointers are the same */
+ case PA_WSTRING: /* All pointers are the same */
T (PA_POINTER, pa_pointer, void *);
#undef T
default:
if ((args_type[cnt] & PA_FLAG_PTR) != 0)
args_value[cnt].pa_pointer = va_arg (ap_save, void *);
+ else if (__builtin_expect (__printf_va_arg_table != NULL, 0)
+ && __printf_va_arg_table[args_type[cnt] - PA_LAST] != NULL)
+ {
+ args_value[cnt].pa_user = alloca (args_size[cnt]);
+ (*__printf_va_arg_table[args_type[cnt] - PA_LAST])
+ (args_value[cnt].pa_user, &ap_save);
+ }
else
args_value[cnt].pa_long_double = 0.0;
break;
@@ -1870,6 +1888,40 @@ do_positional:
/* Process format specifiers. */
while (1)
{
+ extern printf_function **__printf_function_table;
+ int function_done;
+
+ if (spec <= UCHAR_MAX
+ && __printf_function_table != NULL
+ && __printf_function_table[(size_t) spec] != NULL)
+ {
+ const void **ptr = alloca (specs[nspecs_done].ndata_args
+ * sizeof (const void *));
+
+ /* Fill in an array of pointers to the argument values. */
+ for (unsigned int i = 0; i < specs[nspecs_done].ndata_args;
+ ++i)
+ ptr[i] = &args_value[specs[nspecs_done].data_arg + i];
+
+ /* Call the function. */
+ function_done = __printf_function_table[(size_t) spec]
+ (s, &specs[nspecs_done].info, ptr);
+
+ if (function_done != -2)
+ {
+ /* If an error occurred we don't have information
+ about # of chars. */
+ if (function_done < 0)
+ {
+ done = -1;
+ goto all_done;
+ }
+
+ done_add (function_done);
+ break;
+ }
+ }
+
JUMP (spec, step4_jumps);
process_arg ((&specs[nspecs_done]));
@@ -1877,19 +1929,9 @@ do_positional:
LABEL (form_unknown):
{
- extern printf_function **__printf_function_table;
- int function_done;
- printf_function *function;
unsigned int i;
const void **ptr;
- function =
- (__printf_function_table == NULL ? NULL :
- __printf_function_table[specs[nspecs_done].info.spec]);
-
- if (function == NULL)
- function = &printf_unknown;
-
ptr = alloca (specs[nspecs_done].ndata_args
* sizeof (const void *));
@@ -1898,7 +1940,8 @@ do_positional:
ptr[i] = &args_value[specs[nspecs_done].data_arg + i];
/* Call the function. */
- function_done = (*function) (s, &specs[nspecs_done].info, ptr);
+ function_done = printf_unknown (s, &specs[nspecs_done].info,
+ ptr);
/* If an error occurred we don't have information about #
of chars. */
diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
index a03e19c4e3..7356eeb362 100644
--- a/stdio-common/vfscanf.c
+++ b/stdio-common/vfscanf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2006, 2007, 2010 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
@@ -216,7 +216,7 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
int errval = 0;
#ifndef COMPILE_WSCANF
__locale_t loc = _NL_CURRENT_LOCALE;
- struct locale_data *const curctype = loc->__locales[LC_CTYPE];
+ struct __locale_data *const curctype = loc->__locales[LC_CTYPE];
#endif
/* Errno of last failed inchar call. */
@@ -294,7 +294,7 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
{
#ifndef COMPILE_WSCANF
- struct locale_data *const curnumeric = loc->__locales[LC_NUMERIC];
+ struct __locale_data *const curnumeric = loc->__locales[LC_NUMERIC];
#endif
/* Figure out the decimal point character. */
@@ -1389,7 +1389,7 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
{
#ifdef COMPILE_WSCANF
wcdigits[n] = (const wchar_t *)
- _NL_CURRENT (LC_CTYPE, _NL_CTYPE_INDIGITS0_WC + n);
+ _NL_CURRENT (LC_CTYPE, _NL_CTYPE_INDIGITS0_WC + n);
wchar_t *wc_extended = (wchar_t *)
alloca ((to_level + 2) * sizeof (wchar_t));
@@ -1399,7 +1399,7 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
wcdigits_extended[n] = wc_extended;
#else
mbdigits[n]
- = curctype->values[_NL_CTYPE_INDIGITS0_MB + n].string;
+ = curctype->values[_NL_CTYPE_INDIGITS0_MB + n].string;
/* Get the equivalent wide char in map. */
wint_t extra_wcdigit = __towctrans (L'0' + n, map);
@@ -2047,9 +2047,9 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
wcdigits[11] = __towctrans (L'.', map);
/* If we have not read any character or have just read
- locale decimal point which matches the decimal point
- for localized FP numbers, then we may have localized
- digits. Note, we test GOT_DOT above. */
+ locale decimal point which matches the decimal point
+ for localized FP numbers, then we may have localized
+ digits. Note, we test GOT_DOT above. */
#ifdef COMPILE_WSCANF
if (wpsize == 0 || (wpsize == 1 && wcdigits[11] == decimal))
#else
@@ -2086,7 +2086,7 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
bool have_locthousands = (flags & GROUP) != 0;
/* Now get the digits and the thousands-sep equivalents. */
- for (int n = 0; n < 11; ++n)
+ for (int n = 0; n < 11; ++n)
{
if (n < 10)
wcdigits[n] = __towctrans (L'0' + n, map);
@@ -2385,7 +2385,7 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
if (wc <= runp[1] && not_in)
{
/* The current character is not in the
- scanset. */
+ scanset. */
ungetc (c, s);
goto out;
}
@@ -2611,7 +2611,7 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
if (wc <= runp[1] && not_in)
{
/* The current character is not in the
- scanset. */
+ scanset. */
ungetc (c, s);
goto out2;
}
diff --git a/stdlib/.cvsignore b/stdlib/.cvsignore
deleted file mode 100644
index 602b74c1ae..0000000000
--- a/stdlib/.cvsignore
+++ /dev/null
@@ -1,8 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-
-mpn-copy.mk
-distinfo
diff --git a/stdlib/Makefile b/stdlib/Makefile
index 1fe7f70177..bb0661af3b 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2006, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 1991-2006, 2007, 2008, 2009 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
@@ -34,6 +34,7 @@ routines := \
bsearch qsort msort \
getenv putenv setenv secure-getenv \
exit on_exit atexit cxa_atexit cxa_finalize old_atexit \
+ quick_exit at_quick_exit cxa_at_quick_exit \
abs labs llabs \
div ldiv lldiv \
mblen mbstowcs mbtowc wcstombs wctomb \
@@ -57,7 +58,7 @@ aux = grouping groupingwc tens_in_limb
# These routines will be omitted from the libc shared object.
# Instead the static object files will be included in a special archive
# linked against when the shared library will be used.
-static-only-routines = atexit
+static-only-routines = atexit at_quick_exit
distribute := exit.h grouping.h abort-instr.h isomac.c tst-fmtmsg.sh \
allocalim.h
@@ -69,7 +70,8 @@ tests := tst-strtol tst-strtod testmb testrand testsort testdiv \
test-a64l tst-qsort tst-system testmb2 bug-strtod2 \
tst-atof1 tst-atof2 tst-strtod2 tst-strtod3 tst-rand48-2 \
tst-makecontext tst-strtod4 tst-strtod5 tst-qsort2 \
- tst-makecontext2 tst-strtod6
+ tst-makecontext2 tst-strtod6 tst-unsetenv1 \
+ tst-makecontext3
include ../Makeconfig
diff --git a/stdlib/Versions b/stdlib/Versions
index f4a90c9d69..3e7b8921c4 100644
--- a/stdlib/Versions
+++ b/stdlib/Versions
@@ -97,9 +97,14 @@ libc {
GLIBC_2.8 {
qsort_r;
}
+ GLIBC_2.10 {
+ quick_exit; __cxa_at_quick_exit;
+ }
GLIBC_PRIVATE {
# functions which have an additional interface since they are
# are cancelable.
__libc_system;
+ # Variable which needs a dynamic symbol table entry.
+ __abort_msg;
}
}
diff --git a/stdlib/abort.c b/stdlib/abort.c
index 00788f22c7..3c188c9516 100644
--- a/stdlib/abort.c
+++ b/stdlib/abort.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,93,95,96,97,98,2001,02 Free Software Foundation, Inc.
+/* Copyright (C) 1991,93,1995-1998,2001,02,2009 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
@@ -36,6 +36,10 @@
# define fflush(s) _IO_flush_all_lockp (0)
#endif
+/* Exported variable to locate abort message in core files etc. */
+char *__abort_msg __attribute__ ((nocommon));
+libc_hidden_def (__abort_msg)
+
/* We must avoid to run in circles. Therefore we remember how far we
already got. */
static int stage;
diff --git a/sysdeps/alpha/elf/start.S b/stdlib/at_quick_exit.c
index ebe14b4c8e..1d37e1c2eb 100644
--- a/sysdeps/alpha/elf/start.S
+++ b/stdlib/at_quick_exit.c
@@ -1,8 +1,5 @@
-/* Startup code for Alpha/ELF.
- Copyright (C) 1993, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
+/* Copyright (C) 1991,1996,1999,2001,2006,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -36,52 +33,19 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <sysdep.h>
+#include <stdlib.h>
+#include "exit.h"
- .text
- .align 3
- .globl _start
- .ent _start, 0
- .type _start,@function
-_start:
- .frame $15, 0, $15
- br gp, 1f
-1: ldgp gp, 0(gp)
- subq sp, 16, sp
- mov 0, $15
- .prologue 0
- /* Load address of the user's main function. */
- lda a0, main
+/* This is defined by newer gcc version unique for each module. */
+extern void *__dso_handle __attribute__ ((__weak__));
- ldl a1, 16(sp) /* get argc */
- lda a2, 24(sp) /* get argv */
- /* Load address of our own entry points to .fini and .init. */
- lda a3, __libc_csu_init
- lda a4, __libc_csu_fini
-
- /* Store address of the shared library termination function. */
- mov v0, a5
-
- /* Provide the highest stack address to the user code. */
- stq sp, 0(sp)
-
- /* Call the user's main function, and exit with its value.
- But let the libc call main. */
- jsr ra, __libc_start_main
-
- /* Die very horribly if exit returns. Call_pal hlt is callable from
- kernel mode only; this will result in an illegal instruction trap. */
- call_pal 0
- .end _start
-
-/* For ECOFF backwards compatibility. */
-weak_alias (_start, __start)
-
-/* Define a symbol for the first piece of initialized data. */
- .data
- .globl __data_start
-__data_start:
- .weak data_start
- data_start = __data_start
+/* Register FUNC to be executed by `quick_exit'. */
+int
+attribute_hidden
+at_quick_exit (void (*func) (void))
+{
+ return __cxa_at_quick_exit ((void (*) (void *)) func,
+ &__dso_handle == NULL ? NULL : __dso_handle);
+}
diff --git a/sysdeps/alpha/fpu/ftestexcept.c b/stdlib/cxa_at_quick_exit.c
index a4b3081875..2c6d688462 100644
--- a/sysdeps/alpha/fpu/ftestexcept.c
+++ b/stdlib/cxa_at_quick_exit.c
@@ -1,7 +1,5 @@
-/* Test exception in current environment.
- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1997.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -18,15 +16,16 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <fenv_libc.h>
+#include <stdlib.h>
+#include "exit.h"
-int
-fetestexcept (int excepts)
-{
- unsigned long tmp;
- /* Get current exceptions. */
- tmp = __ieee_get_fp_control();
+static struct exit_function_list initial_quick;
+struct exit_function_list *__quick_exit_funcs = &initial_quick;
- return tmp & excepts & SWCR_STATUS_MASK;
+/* Register a function to be called by quick_exit. */
+int
+__cxa_at_quick_exit (void (*func) (void *), void *d)
+{
+ return __internal_atexit (func, NULL, d, &__quick_exit_funcs);
}
diff --git a/stdlib/cxa_atexit.c b/stdlib/cxa_atexit.c
index 3bdf871e53..767f08e66b 100644
--- a/stdlib/cxa_atexit.c
+++ b/stdlib/cxa_atexit.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001, 2002, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1999,2001,2002,2005,2006,2009 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
@@ -26,13 +26,13 @@
#undef __cxa_atexit
-/* Register a function to be called by exit or when a shared library
- is unloaded. This function is only called from code generated by
- the C++ compiler. */
+
int
-__cxa_atexit (void (*func) (void *), void *arg, void *d)
+attribute_hidden
+__internal_atexit (void (*func) (void *), void *arg, void *d,
+ struct exit_function_list **listp)
{
- struct exit_function *new = __new_exitfn ();
+ struct exit_function *new = __new_exitfn (listp);
if (new == NULL)
return -1;
@@ -47,6 +47,16 @@ __cxa_atexit (void (*func) (void *), void *arg, void *d)
new->flavor = ef_cxa;
return 0;
}
+
+
+/* Register a function to be called by exit or when a shared library
+ is unloaded. This function is only called from code generated by
+ the C++ compiler. */
+int
+__cxa_atexit (void (*func) (void *), void *arg, void *d)
+{
+ return __internal_atexit (func, arg, d, &__exit_funcs);
+}
INTDEF(__cxa_atexit)
@@ -59,7 +69,7 @@ struct exit_function_list *__exit_funcs = &initial;
uint64_t __new_exitfn_called;
struct exit_function *
-__new_exitfn (void)
+__new_exitfn (struct exit_function_list **listp)
{
struct exit_function_list *p = NULL;
struct exit_function_list *l;
@@ -68,7 +78,7 @@ __new_exitfn (void)
__libc_lock_lock (lock);
- for (l = __exit_funcs; l != NULL; p = l, l = l->next)
+ for (l = *listp; l != NULL; p = l, l = l->next)
{
for (i = l->idx; i > 0; --i)
if (l->fns[i - 1].flavor != ef_free)
@@ -92,8 +102,8 @@ __new_exitfn (void)
calloc (1, sizeof (struct exit_function_list));
if (p != NULL)
{
- p->next = __exit_funcs;
- __exit_funcs = p;
+ p->next = *listp;
+ *listp = p;
}
}
diff --git a/stdlib/cxa_finalize.c b/stdlib/cxa_finalize.c
index 148d57f200..351538a686 100644
--- a/stdlib/cxa_finalize.c
+++ b/stdlib/cxa_finalize.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999,2001,2002,2003,2005,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1999,2001-2003,2005,2006,2009 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
@@ -63,6 +63,16 @@ __cxa_finalize (void *d)
}
}
+ /* Also remove the quick_exit handlers, but do not call them. */
+ for (funcs = __quick_exit_funcs; funcs; funcs = funcs->next)
+ {
+ struct exit_function *f;
+
+ for (f = &funcs->fns[funcs->idx - 1]; f >= &funcs->fns[0]; --f)
+ if (d == NULL || d == f->func.cxa.dso_handle)
+ f->flavor = ef_free;
+ }
+
/* Remove the registered fork handlers. We do not have to
unregister anything if the program is going to terminate anyway. */
#ifdef UNREGISTER_ATFORK
diff --git a/stdlib/exit.c b/stdlib/exit.c
index bc4cb0fd08..2235990285 100644
--- a/stdlib/exit.c
+++ b/stdlib/exit.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,95,96,97,99,2001,2002,2005 Free Software Foundation, Inc.
+/* Copyright (C) 1991,95,96,97,99,2001,2002,2005,2009
+ 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
@@ -30,20 +31,22 @@ DEFINE_HOOK (__libc_atexit, (void))
in the reverse of the order in which they were registered
perform stdio cleanup, and terminate program execution with STATUS. */
void
-exit (int status)
+attribute_hidden
+__run_exit_handlers (int status, struct exit_function_list **listp,
+ bool run_list_atexit)
{
/* We do it this way to handle recursive calls to exit () made by
the functions registered with `atexit' and `on_exit'. We call
everyone on the list and use the status value in the last
exit (). */
- while (__exit_funcs != NULL)
+ while (*listp != NULL)
{
- struct exit_function_list *old;
+ struct exit_function_list *cur = *listp;
- while (__exit_funcs->idx > 0)
+ while (cur->idx > 0)
{
const struct exit_function *const f =
- &__exit_funcs->fns[--__exit_funcs->idx];
+ &cur->fns[--cur->idx];
switch (f->flavor)
{
void (*atfct) (void);
@@ -77,16 +80,23 @@ exit (int status)
}
}
- old = __exit_funcs;
- __exit_funcs = __exit_funcs->next;
- if (__exit_funcs != NULL)
+ *listp = cur->next;
+ if (*listp != NULL)
/* Don't free the last element in the chain, this is the statically
allocate element. */
- free (old);
+ free (cur);
}
- RUN_HOOK (__libc_atexit, ());
+ if (run_list_atexit)
+ RUN_HOOK (__libc_atexit, ());
_exit (status);
}
+
+
+void
+exit (int status)
+{
+ __run_exit_handlers (status, &__exit_funcs, true);
+}
libc_hidden_def (exit)
diff --git a/stdlib/exit.h b/stdlib/exit.h
index 779675d134..d5013218a6 100644
--- a/stdlib/exit.h
+++ b/stdlib/exit.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1996,1997,1999,2001,2002,2006
+/* Copyright (C) 1991,1996,1997,1999,2001,2002,2006,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -20,6 +20,7 @@
#ifndef _EXIT_H
#define _EXIT_H 1
+#include <stdbool.h>
#include <stdint.h>
enum
@@ -59,8 +60,19 @@ struct exit_function_list
struct exit_function fns[32];
};
extern struct exit_function_list *__exit_funcs attribute_hidden;
+extern struct exit_function_list *__quick_exit_funcs attribute_hidden;
-extern struct exit_function *__new_exitfn (void);
+extern struct exit_function *__new_exitfn (struct exit_function_list **listp);
extern uint64_t __new_exitfn_called attribute_hidden;
+extern void __run_exit_handlers (int status, struct exit_function_list **listp,
+ bool run_list_atexit)
+ attribute_hidden __attribute__ ((__noreturn__));
+
+extern int __internal_atexit (void (*func) (void *), void *arg, void *d,
+ struct exit_function_list **listp)
+ attribute_hidden;
+extern int __cxa_at_quick_exit (void (*func) (void *), void *d);
+
+
#endif /* exit.h */
diff --git a/stdlib/longlong.h b/stdlib/longlong.h
index a2f38ae2a5..e7d6099c7e 100644
--- a/stdlib/longlong.h
+++ b/stdlib/longlong.h
@@ -1,6 +1,6 @@
/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
Copyright (C) 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ 2002, 2003, 2004, 2005, 2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -918,7 +918,7 @@ UDItype __umulsidi3 (USItype, USItype);
" or r1,%0" \
: "=r" (q), "=&z" (r) \
: "1" (n1), "r" (n0), "rm" (d), "r" (&__udiv_qrnnd_16) \
- : "r1", "r2", "r4", "r5", "r6", "pr"); \
+ : "r1", "r2", "r4", "r5", "r6", "pr", "t"); \
} while (0)
#define UDIV_TIME 80
@@ -926,7 +926,8 @@ UDItype __umulsidi3 (USItype, USItype);
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
__asm__ ("clrt;subc %5,%1; subc %4,%0" \
: "=r" (sh), "=r" (sl) \
- : "0" (ah), "1" (al), "r" (bh), "r" (bl))
+ : "0" (ah), "1" (al), "r" (bh), "r" (bl) \
+ : "t")
#endif /* __sh__ */
diff --git a/stdlib/monetary.h b/stdlib/monetary.h
index d9234ca61b..7f0c0ec208 100644
--- a/stdlib/monetary.h
+++ b/stdlib/monetary.h
@@ -1,5 +1,5 @@
/* Header file for monetary value formatting functions.
- Copyright (C) 1996,1997,1998,1999,2000,2002,2006
+ Copyright (C) 1996,1997,1998,1999,2000,2002,2006,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -41,12 +41,12 @@ extern ssize_t strfmon (char *__restrict __s, size_t __maxsize,
__const char *__restrict __format, ...)
__THROW __attribute_format_strfmon__ (3, 4);
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
# include <xlocale.h>
/* Formatting a monetary value according to the current locale. */
extern ssize_t strfmon_l (char *__restrict __s, size_t __maxsize,
- __locale_t loc,
+ __locale_t __loc,
__const char *__restrict __format, ...)
__THROW __attribute_format_strfmon__ (4, 5);
#endif
diff --git a/stdlib/on_exit.c b/stdlib/on_exit.c
index e777604084..6a99bfa087 100644
--- a/stdlib/on_exit.c
+++ b/stdlib/on_exit.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 2005, 2009 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
@@ -25,7 +25,7 @@
int
__on_exit (void (*func) (int status, void *arg), void *arg)
{
- struct exit_function *new = __new_exitfn ();
+ struct exit_function *new = __new_exitfn (&__exit_funcs);
if (new == NULL)
return -1;
diff --git a/sysdeps/unix/sysv/linux/alpha/sizes.h b/stdlib/quick_exit.c
index 0c7f4d5d2a..d6306240c4 100644
--- a/sysdeps/unix/sysv/linux/alpha/sizes.h
+++ b/stdlib/quick_exit.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 2009 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
@@ -16,9 +16,15 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SIZES_H
-#define _SIZES_H 1
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sysdep.h>
+#include "exit.h"
-#define PTR_SIZE_STR "8"
-#endif /* sizes.h */
+void
+quick_exit (int status)
+{
+ __run_exit_handlers (status, &__quick_exit_funcs, false);
+}
diff --git a/stdlib/rand_r.c b/stdlib/rand_r.c
index 3d49c92de6..6a35112f2f 100644
--- a/stdlib/rand_r.c
+++ b/stdlib/rand_r.c
@@ -1,5 +1,5 @@
-/* Reentrant random function frm POSIX.1c.
- Copyright (C) 1996, 1999 Free Software Foundation, Inc.
+/* Reentrant random function from POSIX.1c.
+ Copyright (C) 1996, 1999, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
diff --git a/stdlib/random_r.c b/stdlib/random_r.c
index 5e564a737d..51a2e8c812 100644
--- a/stdlib/random_r.c
+++ b/stdlib/random_r.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 1995, 2005 Free Software Foundation
+ Copyright (C) 1995, 2005, 2009 Free Software Foundation
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -166,7 +166,7 @@ __srandom_r (seed, buf)
int type;
int32_t *state;
long int i;
- long int word;
+ int32_t word;
int32_t *dst;
int kc;
@@ -228,7 +228,7 @@ weak_alias (__srandom_r, srandom_r)
lose this information and will be able to restart with setstate.
Note: The first thing we do is save the current state, if any, just like
setstate so that it doesn't matter when initstate is called.
- Returns a pointer to the old state. */
+ Returns 0 on success, non-zero on failure. */
int
__initstate_r (seed, arg_state, n, buf)
unsigned int seed;
@@ -255,10 +255,8 @@ __initstate_r (seed, arg_state, n, buf)
else if (n < BREAK_1)
{
if (n < BREAK_0)
- {
- __set_errno (EINVAL);
- goto fail;
- }
+ goto fail;
+
type = TYPE_0;
}
else
@@ -298,7 +296,7 @@ weak_alias (__initstate_r, initstate_r)
location into the zeroth word of the state information. Note that due
to the order in which things are done, it is OK to call setstate with the
same state as the current state
- Returns a pointer to the old state information. */
+ Returns 0 on success, non-zero on failure. */
int
__setstate_r (arg_state, buf)
char *arg_state;
diff --git a/stdlib/setenv.c b/stdlib/setenv.c
index 48aaecffe0..fe591b7db8 100644
--- a/stdlib/setenv.c
+++ b/stdlib/setenv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992,1995-2001,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1992,1995-2001,2004, 2008 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
@@ -292,19 +292,20 @@ unsetenv (name)
LOCK;
ep = __environ;
- while (*ep != NULL)
- if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
- {
- /* Found it. Remove this pointer by moving later ones back. */
- char **dp = ep;
-
- do
- dp[0] = dp[1];
- while (*dp++);
- /* Continue the loop in case NAME appears again. */
- }
- else
- ++ep;
+ if (ep != NULL)
+ while (*ep != NULL)
+ if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
+ {
+ /* Found it. Remove this pointer by moving later ones back. */
+ char **dp = ep;
+
+ do
+ dp[0] = dp[1];
+ while (*dp++);
+ /* Continue the loop in case NAME appears again. */
+ }
+ else
+ ++ep;
UNLOCK;
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index 732e7d65d2..d1f3841f1b 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2007, 2009, 2010 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
@@ -37,7 +37,7 @@ __BEGIN_DECLS
#ifndef __need_malloc_and_calloc
#define _STDLIB_H 1
-#if defined __USE_XOPEN && !defined _SYS_WAIT_H
+#if (defined __USE_XOPEN || defined __USE_XOPEN2K8) && !defined _SYS_WAIT_H
/* XPG requires a few symbols from <sys/wait.h> being defined. */
# include <bits/waitflags.h>
# include <bits/waitstatus.h>
@@ -48,15 +48,15 @@ __BEGIN_DECLS
as well as POSIX.1 use of `int' for the status word. */
# if defined __GNUC__ && !defined __cplusplus
-# define __WAIT_INT(status) \
- (__extension__ ({ union { __typeof(status) __in; int __i; } __u; \
- __u.__in = (status); __u.__i; }))
+# define __WAIT_INT(status) \
+ (__extension__ (((union { __typeof(status) __in; int __i; }) \
+ { .__in = (status) }).__i))
# else
# define __WAIT_INT(status) (*(int *) &(status))
# endif
/* This is the type of the argument to `wait'. The funky union
- causes redeclarations with ether `int *' or `union wait *' to be
+ causes redeclarations with either `int *' or `union wait *' to be
allowed without complaint. __WAIT_STATUS_DEFN is the type used in
the actual function definitions. */
@@ -82,16 +82,16 @@ typedef union
# endif /* Use BSD. */
/* Define the macros <sys/wait.h> also would define this way. */
-# define WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status))
-# define WTERMSIG(status) __WTERMSIG(__WAIT_INT(status))
-# define WSTOPSIG(status) __WSTOPSIG(__WAIT_INT(status))
-# define WIFEXITED(status) __WIFEXITED(__WAIT_INT(status))
-# define WIFSIGNALED(status) __WIFSIGNALED(__WAIT_INT(status))
-# define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status))
+# define WEXITSTATUS(status) __WEXITSTATUS (__WAIT_INT (status))
+# define WTERMSIG(status) __WTERMSIG (__WAIT_INT (status))
+# define WSTOPSIG(status) __WSTOPSIG (__WAIT_INT (status))
+# define WIFEXITED(status) __WIFEXITED (__WAIT_INT (status))
+# define WIFSIGNALED(status) __WIFSIGNALED (__WAIT_INT (status))
+# define WIFSTOPPED(status) __WIFSTOPPED (__WAIT_INT (status))
# ifdef __WIFCONTINUED
-# define WIFCONTINUED(status) __WIFCONTINUED(__WAIT_INT(status))
+# define WIFCONTINUED(status) __WIFCONTINUED (__WAIT_INT (status))
# endif
-#endif /* X/Open and <sys/wait.h> not included. */
+#endif /* X/Open or XPG7 and <sys/wait.h> not included. */
__BEGIN_NAMESPACE_STD
/* Returned by `div'. */
@@ -222,14 +222,14 @@ __END_NAMESPACE_C99
#ifdef __USE_GNU
/* The concept of one static locale per category is not very well
thought out. Many applications will need to process its data using
- information from several different locales. Another application is
+ information from several different locales. Another problem is
the implementation of the internationalization handling in the
- upcoming ISO C++ standard library. To support this another set of
- the functions using locale data exist which have an additional
+ ISO C++ standard library. To support this another set of
+ the functions using locale data exist which take an additional
argument.
- Attention: all these functions are *not* standardized in any form.
- This is a proof-of-concept implementation. */
+ Attention: even though several *_l interfaces are part of POSIX:2008,
+ these are not. */
/* Structure for reentrant locale using functions. This is an
(almost) opaque type for the user level programs. */
@@ -497,7 +497,8 @@ extern void cfree (void *__ptr) __THROW;
# include <alloca.h>
#endif /* Use GNU, BSD, or misc. */
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \
+ || defined __USE_BSD
/* Allocate SIZE bytes on a page boundary. The storage cannot be freed. */
extern void *valloc (size_t __size) __THROW __attribute_malloc__ __wur;
#endif
@@ -515,6 +516,18 @@ extern void abort (void) __THROW __attribute__ ((__noreturn__));
/* Register a function to be called when `exit' is called. */
extern int atexit (void (*__func) (void)) __THROW __nonnull ((1));
+
+#ifdef __USE_GNU
+// XXX There should be a macro to signal with C++ revision is used.
+// XXX This function is in the C++1x revision.
+/* Register a function to be called when `quick_exit' is called. */
+# ifdef __cplusplus
+extern "C++" int at_quick_exit (void (*__func) (void))
+ __THROW __asm ("at_quick_exit") __nonnull ((1));
+# else
+extern int at_quick_exit (void (*__func) (void)) __THROW __nonnull ((1));
+# endif
+#endif
__END_NAMESPACE_STD
#ifdef __USE_MISC
@@ -526,9 +539,18 @@ extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
__BEGIN_NAMESPACE_STD
/* Call all functions registered with `atexit' and `on_exit',
- in the reverse of the order in which they were registered
+ in the reverse of the order in which they were registered,
perform stdio cleanup, and terminate program execution with STATUS. */
extern void exit (int __status) __THROW __attribute__ ((__noreturn__));
+
+#ifdef __USE_GNU
+// XXX There should be a macro to signal with C++ revision is used.
+// XXX This function is in the C++1x revision.
+/* Call all functions registered with `at_quick_exit' in the reverse
+ of the order in which they were registered and terminate program
+ execution with STATUS. */
+extern void quick_exit (int __status) __THROW __attribute__ ((__noreturn__));
+#endif
__END_NAMESPACE_STD
#ifdef __USE_ISOC99
@@ -564,7 +586,7 @@ extern int setenv (__const char *__name, __const char *__value, int __replace)
__THROW __nonnull ((2));
/* Remove the variable NAME from the environment. */
-extern int unsetenv (__const char *__name) __THROW;
+extern int unsetenv (__const char *__name) __THROW __nonnull ((1));
#endif
#ifdef __USE_MISC
@@ -575,20 +597,24 @@ extern int clearenv (void) __THROW;
#endif
-#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
+#if defined __USE_MISC \
+ || (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K)
/* Generate a unique temporary file name from TEMPLATE.
The last six characters of TEMPLATE must be "XXXXXX";
they are replaced with a string that makes the file name unique.
Returns TEMPLATE, or a null pointer if it cannot get a unique file name. */
extern char *mktemp (char *__template) __THROW __nonnull ((1)) __wur;
+#endif
+#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED \
+ || defined __USE_XOPEN2K8
/* Generate a unique temporary file name from TEMPLATE.
The last six characters of TEMPLATE must be "XXXXXX";
they are replaced with a string that makes the filename unique.
Returns a file descriptor open on the file for reading and writing,
or -1 if it cannot create a uniquely-named file.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
# ifndef __USE_FILE_OFFSET64
extern int mkstemp (char *__template) __nonnull ((1)) __wur;
@@ -605,7 +631,30 @@ extern int mkstemp64 (char *__template) __nonnull ((1)) __wur;
# endif
#endif
-#ifdef __USE_BSD
+#ifdef __USE_MISC
+/* Similar to mkstemp, but the template can have a suffix after the
+ XXXXXX. The length of the suffix is specified in the second
+ parameter.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+# ifndef __USE_FILE_OFFSET64
+extern int mkstemps (char *__template, int __suffixlen) __nonnull ((1)) __wur;
+# else
+# ifdef __REDIRECT
+extern int __REDIRECT (mkstemps, (char *__template, int __suffixlen),
+ mkstemps64) __nonnull ((1)) __wur;
+# else
+# define mkstemps mkstemps64
+# endif
+# endif
+# ifdef __USE_LARGEFILE64
+extern int mkstemps64 (char *__template, int __suffixlen)
+ __nonnull ((1)) __wur;
+# endif
+#endif
+
+#if defined __USE_BSD || defined __USE_XOPEN2K8
/* Create a unique temporary directory from TEMPLATE.
The last six characters of TEMPLATE must be "XXXXXX";
they are replaced with a string that makes the directory name unique.
@@ -634,6 +683,29 @@ extern int __REDIRECT (mkostemp, (char *__template, int __flags), mkostemp64)
# ifdef __USE_LARGEFILE64
extern int mkostemp64 (char *__template, int __flags) __nonnull ((1)) __wur;
# endif
+
+/* Similar to mkostemp, but the template can have a suffix after the
+ XXXXXX. The length of the suffix is specified in the second
+ parameter.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+# ifndef __USE_FILE_OFFSET64
+extern int mkostemps (char *__template, int __suffixlen, int __flags)
+ __nonnull ((1)) __wur;
+# else
+# ifdef __REDIRECT
+extern int __REDIRECT (mkostemps, (char *__template, int __suffixlen,
+ int __flags), mkostemps64)
+ __nonnull ((1)) __wur;
+# else
+# define mkostemps mkostemps64
+# endif
+# endif
+# ifdef __USE_LARGEFILE64
+extern int mkostemps64 (char *__template, int __suffixlen, int __flags)
+ __nonnull ((1)) __wur;
+# endif
#endif
@@ -725,7 +797,8 @@ __END_NAMESPACE_C99
#endif
-#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED
+#if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \
+ || defined __USE_SVID
/* Convert floating point numbers to strings. The returned values are
valid only until another call to the same function. */
@@ -813,7 +886,7 @@ extern int rpmatch (__const char *__response) __THROW __nonnull ((1)) __wur;
#endif
-#ifdef __USE_XOPEN_EXTENDED
+#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
/* Parse comma separated suboption from *OPTIONP and match against
strings in TOKENS. If found return index and set *VALUEP to
optional value introduced by an equal sign. If the suboption is
@@ -835,7 +908,7 @@ extern void setkey (__const char *__key) __THROW __nonnull ((1));
/* X/Open pseudo terminal handling. */
-#ifdef __USE_XOPEN2K
+#ifdef __USE_XOPEN2KXSI
/* Return a master pseudo-terminal handle. */
extern int posix_openpt (int __oflag) __wur;
#endif
diff --git a/stdlib/strfmon_l.c b/stdlib/strfmon_l.c
index c9f3a47b41..7642753cb1 100644
--- a/stdlib/strfmon_l.c
+++ b/stdlib/strfmon_l.c
@@ -1,5 +1,5 @@
/* Formatting a monetary value according to the given locale.
- Copyright (C) 1996, 1997, 2002, 2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1996,1997,2002,2004,2006,2009,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -88,11 +88,8 @@ ssize_t
__vstrfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format,
va_list ap)
{
- struct locale_data *current = loc->__locales[LC_MONETARY];
+ struct __locale_data *current = loc->__locales[LC_MONETARY];
_IO_strfile f;
-#ifdef _IO_MTSAFE_IO
- _IO_lock_t lock;
-#endif
struct printf_info info;
char *dest; /* Pointer so copy the output. */
const char *fmt; /* Pointer that walks through format. */
@@ -133,7 +130,7 @@ __vstrfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format,
int done;
const char *currency_symbol;
size_t currency_symbol_len;
- int width;
+ long int width;
char *startp;
const void *ptr;
char space_char;
@@ -221,13 +218,21 @@ __vstrfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format,
while (isdigit (*++fmt))
{
- width *= 10;
- width += to_digit (*fmt);
+ int val = to_digit (*fmt);
+
+ if (width > LONG_MAX / 10
+ || (width == LONG_MAX && val > LONG_MAX % 10))
+ {
+ __set_errno (E2BIG);
+ return -1;
+ }
+
+ width = width * 10 + val;
}
/* If we don't have enough room for the demanded width we
can stop now and return an error. */
- if (dest + width >= s + maxsize)
+ if (width >= maxsize - (dest - s))
{
__set_errno (E2BIG);
return -1;
@@ -509,11 +514,11 @@ __vstrfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format,
/* Print the number. */
#ifdef _IO_MTSAFE_IO
- f._sbf._f._lock = &lock;
+ f._sbf._f._lock = NULL;
#endif
- INTUSE(_IO_init) ((_IO_FILE *) &f, 0);
- _IO_JUMPS ((struct _IO_FILE_plus *) &f) = &_IO_str_jumps;
- INTUSE(_IO_str_init_static) ((_IO_strfile *) &f, dest,
+ INTUSE(_IO_init) (&f._sbf._f, 0);
+ _IO_JUMPS (&f._sbf) = &_IO_str_jumps;
+ INTUSE(_IO_str_init_static) (&f, dest,
(s + maxsize) - dest, dest);
/* We clear the last available byte so we can find out whether
the numeric representation is too long. */
@@ -529,7 +534,7 @@ __vstrfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format,
info.extra = 1; /* This means use values from LC_MONETARY. */
ptr = &fpnum;
- done = __printf_fp ((FILE *) &f, &info, &ptr);
+ done = __printf_fp (&f._sbf._f, &info, &ptr);
if (done < 0)
return -1;
@@ -560,7 +565,7 @@ __vstrfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format,
out_char (space_char);
out_nstring (currency_symbol, currency_symbol_len);
}
-
+
if (sign_posn == 4)
{
if (sep_by_space == 2)
@@ -589,9 +594,8 @@ __vstrfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format,
while (dest - startp < width);
else
{
- int dist = width - (dest - startp);
- char *cp;
- for (cp = dest - 1; cp >= startp; --cp)
+ long int dist = width - (dest - startp);
+ for (char *cp = dest - 1; cp >= startp; --cp)
cp[dist] = cp[0];
dest += dist;
diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c
index 09a8f9bb3b..cde1280e55 100644
--- a/stdlib/strtod_l.c
+++ b/stdlib/strtod_l.c
@@ -1,5 +1,5 @@
/* Convert string representing a number to float value, using given locale.
- Copyright (C) 1997,1998,2002,2004,2005,2006,2007,2008
+ Copyright (C) 1997,1998,2002,2004,2005,2006,2007,2008,2009,2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -214,15 +214,15 @@ round_and_return (mp_limb_t *retval, int exponent, int negative,
!= 0);
(void) __mpn_rshift (retval, &retval[shift / BITS_PER_MP_LIMB],
- RETURN_LIMB_SIZE - (shift / BITS_PER_MP_LIMB),
- shift % BITS_PER_MP_LIMB);
- MPN_ZERO (&retval[RETURN_LIMB_SIZE - (shift / BITS_PER_MP_LIMB)],
- shift / BITS_PER_MP_LIMB);
+ RETURN_LIMB_SIZE - (shift / BITS_PER_MP_LIMB),
+ shift % BITS_PER_MP_LIMB);
+ MPN_ZERO (&retval[RETURN_LIMB_SIZE - (shift / BITS_PER_MP_LIMB)],
+ shift / BITS_PER_MP_LIMB);
}
else if (shift > 0)
{
- round_limb = retval[0];
- round_bit = shift - 1;
+ round_limb = retval[0];
+ round_bit = shift - 1;
(void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, shift);
}
/* This is a hook for the m68k long double format, where the
@@ -232,18 +232,19 @@ round_and_return (mp_limb_t *retval, int exponent, int negative,
# define DENORM_EXP (MIN_EXP - 2)
#endif
exponent = DENORM_EXP;
+ __set_errno (ERANGE);
}
if ((round_limb & (((mp_limb_t) 1) << round_bit)) != 0
&& (more_bits || (retval[0] & 1) != 0
- || (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0))
+ || (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0))
{
mp_limb_t cy = __mpn_add_1 (retval, retval, RETURN_LIMB_SIZE, 1);
if (((MANT_DIG % BITS_PER_MP_LIMB) == 0 && cy) ||
- ((MANT_DIG % BITS_PER_MP_LIMB) != 0 &&
- (retval[RETURN_LIMB_SIZE - 1]
- & (((mp_limb_t) 1) << (MANT_DIG % BITS_PER_MP_LIMB))) != 0))
+ ((MANT_DIG % BITS_PER_MP_LIMB) != 0 &&
+ (retval[RETURN_LIMB_SIZE - 1]
+ & (((mp_limb_t) 1) << (MANT_DIG % BITS_PER_MP_LIMB))) != 0))
{
++exponent;
(void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, 1);
@@ -464,7 +465,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
/* Used in several places. */
int cnt;
- struct locale_data *current = loc->__locales[LC_NUMERIC];
+ struct __locale_data *current = loc->__locales[LC_NUMERIC];
if (__builtin_expect (group, 0))
{
@@ -737,7 +738,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
grouping);
#endif
if (cp != tp)
- {
+ {
/* Less than the entire string was correctly grouped. */
if (tp == start_of_digits)
@@ -1112,14 +1113,14 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
memcpy (retval, &num[least_idx],
RETURN_LIMB_SIZE * sizeof (mp_limb_t));
else
- {
- for (i = least_idx; i < numsize - 1; ++i)
- retval[i - least_idx] = (num[i] >> least_bit)
- | (num[i + 1]
- << (BITS_PER_MP_LIMB - least_bit));
- if (i - least_idx < RETURN_LIMB_SIZE)
- retval[RETURN_LIMB_SIZE - 1] = num[i] >> least_bit;
- }
+ {
+ for (i = least_idx; i < numsize - 1; ++i)
+ retval[i - least_idx] = (num[i] >> least_bit)
+ | (num[i + 1]
+ << (BITS_PER_MP_LIMB - least_bit));
+ if (i - least_idx < RETURN_LIMB_SIZE)
+ retval[RETURN_LIMB_SIZE - 1] = num[i] >> least_bit;
+ }
/* Check whether any limb beside the ones in RETVAL are non-zero. */
for (i = 0; num[i] == 0; ++i)
@@ -1173,7 +1174,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
#if RETURN_LIMB_SIZE > 1
if (numsize < RETURN_LIMB_SIZE)
# if RETURN_LIMB_SIZE == 2
- retval[numsize] = 0;
+ retval[numsize] = 0;
# else
MPN_ZERO (retval + numsize, RETURN_LIMB_SIZE - numsize);
# endif
@@ -1200,14 +1201,14 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
/* For the fractional part we need not process too many digits. One
decimal digits gives us log_2(10) ~ 3.32 bits. If we now compute
- ceil(BITS / 3) =: N
+ ceil(BITS / 3) =: N
digits we should have enough bits for the result. The remaining
decimal digits give us the information that more bits are following.
This can be used while rounding. (Two added as a safety margin.) */
if (dig_no - int_no > (MANT_DIG - bits + 2) / 3 + 2)
{
- dig_no = int_no + (MANT_DIG - bits + 2) / 3 + 2;
- more_bits = 1;
+ dig_no = int_no + (MANT_DIG - bits + 2) / 3 + 2;
+ more_bits = 1;
}
else
more_bits = 0;
@@ -1263,9 +1264,9 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
digits. This is done by a "quasi fix point" number representation.
num: ddddddddddd . 0000000000000000000000
- |--- m ---|
+ |--- m ---|
den: ddddddddddd n >= m
- |--- n ---|
+ |--- n ---|
*/
count_leading_zeros (cnt, den[densize - 1]);
diff --git a/stdlib/strtol_l.c b/stdlib/strtol_l.c
index ba0aba7919..9181bf10ee 100644
--- a/stdlib/strtol_l.c
+++ b/stdlib/strtol_l.c
@@ -1,5 +1,5 @@
/* Convert string representing a number to integer value, using given locale.
- Copyright (C) 1997, 2002, 2004, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2002, 2004, 2006, 2007, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -243,7 +243,7 @@ INTERNAL (__strtol_l) (nptr, endptr, base, group, loc)
#endif
#ifdef USE_NUMBER_GROUPING
- struct locale_data *current = loc->__locales[LC_NUMERIC];
+ struct __locale_data *current = loc->__locales[LC_NUMERIC];
/* The thousands character of the current locale. */
# ifdef USE_WIDE_CHAR
wchar_t thousands = L'\0';
diff --git a/stdlib/tst-makecontext3.c b/stdlib/tst-makecontext3.c
new file mode 100644
index 0000000000..f127c6a579
--- /dev/null
+++ b/stdlib/tst-makecontext3.c
@@ -0,0 +1,217 @@
+/* Copyright (C) 2001,2002,2004,2006,2009 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, write to the Free
+ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ucontext.h>
+#include <unistd.h>
+
+static ucontext_t ctx[3];
+
+static int was_in_f1;
+static int was_in_f2;
+
+static char st2[32768];
+
+static volatile int flag;
+
+static void
+f1 (int a00, int a01, int a02, int a03, int a04, int a05, int a06, int a07,
+ int a08, int a09, int a10, int a11, int a12, int a13, int a14, int a15,
+ int a16, int a17, int a18, int a19, int a20, int a21, int a22, int a23,
+ int a24, int a25, int a26, int a27, int a28, int a29, int a30, int a31,
+ int a32)
+{
+ printf ("start f1(a00=%08x,a01=%08x,a02=%08x,a03=%08x,\n"
+ " a04=%08x,a05=%08x,a06=%08x,a07=%08x,\n"
+ " a08=%08x,a09=%08x,a10=%08x,a11=%08x,\n"
+ " a12=%08x,a13=%08x,a14=%08x,a15=%08x,\n"
+ " a16=%08x,a17=%08x,a18=%08x,a19=%08x,\n"
+ " a20=%08x,a21=%08x,a22=%08x,a23=%08x,\n"
+ " a24=%08x,a25=%08x,a26=%08x,a27=%08x,\n"
+ " a28=%08x,a29=%08x,a30=%08x,a31=%08x,\n"
+ " a32=%08x) [%d]\n",
+ a00, a01, a02, a03, a04, a05, a06, a07,
+ a08, a09, a10, a11, a12, a13, a14, a15,
+ a16, a17, a18, a19, a20, a21, a22, a23,
+ a24, a25, a26, a27, a28, a29, a30, a31,
+ a32, flag);
+
+ if (a00 != (0x00000001 << flag) || a01 != (0x00000004 << flag)
+ || a02 != (0x00000012 << flag) || a03 != (0x00000048 << flag)
+ || a04 != (0x00000123 << flag) || a05 != (0x0000048d << flag)
+ || a06 != (0x00001234 << flag) || a07 != (0x000048d1 << flag)
+ || a08 != (0x00012345 << flag) || a09 != (0x00048d15 << flag)
+ || a10 != (0x00123456 << flag) || a11 != (0x0048d159 << flag)
+ || a12 != (0x01234567 << flag) || a13 != (0x048d159e << flag)
+ || a14 != (0x12345678 << flag) || a15 != (0x48d159e2 << flag)
+ || a16 != (0x23456789 << flag) || a17 != (0x8d159e26 << flag)
+ || a18 != (0x3456789a << flag) || a19 != (0xd159e26a << flag)
+ || a20 != (0x456789ab << flag) || a21 != (0x159e26af << flag)
+ || a22 != (0x56789abc << flag) || a23 != (0x59e26af3 << flag)
+ || a24 != (0x6789abcd << flag) || a25 != (0x9e26af37 << flag)
+ || a26 != (0x789abcde << flag) || a27 != (0xe26af37b << flag)
+ || a28 != (0x89abcdef << flag) || a29 != (0x26af37bc << flag)
+ || a30 != (0x9abcdef0 << flag) || a31 != (0x6af37bc3 << flag)
+ || a32 != (0xabcdef0f << flag))
+ {
+ puts ("arg mismatch");
+ exit (-1);
+ }
+
+ if (flag && swapcontext (&ctx[1], &ctx[2]) != 0)
+ {
+ printf ("%s: swapcontext: %m\n", __FUNCTION__);
+ exit (1);
+ }
+ printf ("finish f1 [%d]\n", flag);
+ flag++;
+ was_in_f1++;
+}
+
+static void
+f2 (void)
+{
+ puts ("start f2");
+ if (swapcontext (&ctx[2], &ctx[1]) != 0)
+ {
+ printf ("%s: swapcontext: %m\n", __FUNCTION__);
+ exit (1);
+ }
+ puts ("finish f2");
+ was_in_f2 = 1;
+}
+
+volatile int global;
+
+
+static int back_in_main;
+
+
+static void
+check_called (void)
+{
+ if (back_in_main == 0)
+ {
+ puts ("program did not reach main again");
+ _exit (1);
+ }
+}
+
+
+int
+main (void)
+{
+ atexit (check_called);
+
+ char st1[32768];
+
+ puts ("making contexts");
+ if (getcontext (&ctx[0]) != 0)
+ {
+ if (errno == ENOSYS)
+ {
+ back_in_main = 1;
+ exit (0);
+ }
+
+ printf ("%s: getcontext: %m\n", __FUNCTION__);
+ exit (1);
+ }
+
+ ctx[1] = ctx[0];
+ ctx[1].uc_stack.ss_sp = st1;
+ ctx[1].uc_stack.ss_size = sizeof st1;
+ ctx[1].uc_link = &ctx[0];
+ {
+ ucontext_t tempctx = ctx[1];
+ makecontext (&ctx[1], (void (*) (void)) f1, 33,
+ 0x00000001 << flag, 0x00000004 << flag,
+ 0x00000012 << flag, 0x00000048 << flag,
+ 0x00000123 << flag, 0x0000048d << flag,
+ 0x00001234 << flag, 0x000048d1 << flag,
+ 0x00012345 << flag, 0x00048d15 << flag,
+ 0x00123456 << flag, 0x0048d159 << flag,
+ 0x01234567 << flag, 0x048d159e << flag,
+ 0x12345678 << flag, 0x48d159e2 << flag,
+ 0x23456789 << flag, 0x8d159e26 << flag,
+ 0x3456789a << flag, 0xd159e26a << flag,
+ 0x456789ab << flag, 0x159e26af << flag,
+ 0x56789abc << flag, 0x59e26af3 << flag,
+ 0x6789abcd << flag, 0x9e26af37 << flag,
+ 0x789abcde << flag, 0xe26af37b << flag,
+ 0x89abcdef << flag, 0x26af37bc << flag,
+ 0x9abcdef0 << flag, 0x6af37bc3 << flag,
+ 0xabcdef0f << flag);
+
+ /* Without this check, a stub makecontext can make us spin forever. */
+ if (memcmp (&tempctx, &ctx[1], sizeof ctx[1]) == 0)
+ {
+ puts ("makecontext was a no-op, presuming not implemented");
+ return 0;
+ }
+ }
+
+ /* Play some tricks with this context. */
+ if (++global == 1)
+ if (setcontext (&ctx[1]) != 0)
+ {
+ printf ("%s: setcontext: %m\n", __FUNCTION__);
+ exit (1);
+ }
+ if (global != 2)
+ {
+ printf ("%s: 'global' not incremented twice\n", __FUNCTION__);
+ exit (1);
+ }
+
+ if (getcontext (&ctx[2]) != 0)
+ {
+ printf ("%s: second getcontext: %m\n", __FUNCTION__);
+ exit (1);
+ }
+ ctx[2].uc_stack.ss_sp = st2;
+ ctx[2].uc_stack.ss_size = sizeof st2;
+ ctx[2].uc_link = &ctx[1];
+ makecontext (&ctx[2], f2, 0);
+
+ puts ("swapping contexts");
+ if (swapcontext (&ctx[0], &ctx[2]) != 0)
+ {
+ printf ("%s: swapcontext: %m\n", __FUNCTION__);
+ exit (1);
+ }
+ puts ("back at main program");
+ back_in_main = 1;
+
+ if (was_in_f1 < 2)
+ {
+ puts ("didn't reach f1 twice");
+ exit (1);
+ }
+ if (was_in_f2 == 0)
+ {
+ puts ("didn't reach f2");
+ exit (1);
+ }
+
+ puts ("test succeeded");
+ return 0;
+}
diff --git a/stdlib/tst-setcontext.c b/stdlib/tst-setcontext.c
index 51296f74ab..9a6d79ba9d 100644
--- a/stdlib/tst-setcontext.c
+++ b/stdlib/tst-setcontext.c
@@ -133,7 +133,7 @@ check_called (void)
{
if (back_in_main == 0)
{
- puts ("program did no reach main again");
+ puts ("program did not reach main again");
_exit (1);
}
}
diff --git a/stdlib/tst-strtod.c b/stdlib/tst-strtod.c
index 628e40ca39..c30eb1ee12 100644
--- a/stdlib/tst-strtod.c
+++ b/stdlib/tst-strtod.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,96,97,98,99,2000,2001,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1996-2001,2003,2009 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
@@ -61,10 +61,10 @@ static const struct ltest tests[] =
{ "0x00.0014p19", 160.0, '\0', 0 },
{ "0x1p-1023",
1.11253692925360069154511635866620203210960799023116591527666e-308,
- '\0', 0 },
+ '\0', ERANGE },
{ "0x0.8p-1022",
1.11253692925360069154511635866620203210960799023116591527666e-308,
- '\0', 0 },
+ '\0', ERANGE },
#if __GNUC_PREREQ(2,96)
/* For older GCC release HUGE_VAL is not a constant. */
{ "Inf", HUGE_VAL, '\0', 0 },
diff --git a/stdlib/tst-strtol.c b/stdlib/tst-strtol.c
index db065d6f0a..f569e55092 100644
--- a/stdlib/tst-strtol.c
+++ b/stdlib/tst-strtol.c
@@ -64,6 +64,148 @@ static const struct ltest tests[] =
{"-2147483648", 0x80000000, 0, 0, 0},
{"-2147483649", 0x80000000, 0, 0, ERANGE},
{"0x1122334455z", 2147483647, 16, 'z', ERANGE},
+
+ {"1111111111111111111111111111111", 2147483647, 2, 0, 0},
+ {"10000000000000000000000000000000", 2147483647, 2, 0, ERANGE},
+ {"12112122212110202101", 2147483647, 3, 0, 0},
+ {"12112122212110202102", 2147483647, 3, 0, ERANGE},
+ {"1333333333333333", 2147483647, 4, 0, 0},
+ {"2000000000000000", 2147483647, 4, 0, ERANGE},
+ {"13344223434042", 2147483647, 5, 0, 0},
+ {"13344223434043", 2147483647, 5, 0, ERANGE},
+ {"553032005531", 2147483647, 6, 0, 0},
+ {"553032005532", 2147483647, 6, 0, ERANGE},
+ {"104134211161", 2147483647, 7, 0, 0},
+ {"104134211162", 2147483647, 7, 0, ERANGE},
+ {"17777777777", 2147483647, 8, 0, 0},
+ {"20000000000", 2147483647, 8, 0, ERANGE},
+ {"5478773671", 2147483647, 9, 0, 0},
+ {"5478773672", 2147483647, 9, 0, ERANGE},
+ {"2147483647", 2147483647, 10, 0, 0},
+ {"2147483648", 2147483647, 10, 0, ERANGE},
+ {"a02220281", 2147483647, 11, 0, 0},
+ {"a02220282", 2147483647, 11, 0, ERANGE},
+ {"4bb2308a7", 2147483647, 12, 0, 0},
+ {"4bb2308a8", 2147483647, 12, 0, ERANGE},
+ {"282ba4aaa", 2147483647, 13, 0, 0},
+ {"282ba4aab", 2147483647, 13, 0, ERANGE},
+ {"1652ca931", 2147483647, 14, 0, 0},
+ {"1652ca932", 2147483647, 14, 0, ERANGE},
+ {"c87e66b7", 2147483647, 15, 0, 0},
+ {"c87e66b8", 2147483647, 15, 0, ERANGE},
+ {"7fffffff", 2147483647, 16, 0, 0},
+ {"80000000", 2147483647, 16, 0, ERANGE},
+ {"53g7f548", 2147483647, 17, 0, 0},
+ {"53g7f549", 2147483647, 17, 0, ERANGE},
+ {"3928g3h1", 2147483647, 18, 0, 0},
+ {"3928g3h2", 2147483647, 18, 0, ERANGE},
+ {"27c57h32", 2147483647, 19, 0, 0},
+ {"27c57h33", 2147483647, 19, 0, ERANGE},
+ {"1db1f927", 2147483647, 20, 0, 0},
+ {"1db1f928", 2147483647, 20, 0, ERANGE},
+ {"140h2d91", 2147483647, 21, 0, 0},
+ {"140h2d92", 2147483647, 21, 0, ERANGE},
+ {"ikf5bf1", 2147483647, 22, 0, 0},
+ {"ikf5bf2", 2147483647, 22, 0, ERANGE},
+ {"ebelf95", 2147483647, 23, 0, 0},
+ {"ebelf96", 2147483647, 23, 0, ERANGE},
+ {"b5gge57", 2147483647, 24, 0, 0},
+ {"b5gge58", 2147483647, 24, 0, ERANGE},
+ {"8jmdnkm", 2147483647, 25, 0, 0},
+ {"8jmdnkn", 2147483647, 25, 0, ERANGE},
+ {"6oj8ion", 2147483647, 26, 0, 0},
+ {"6oj8ioo", 2147483647, 26, 0, ERANGE},
+ {"5ehncka", 2147483647, 27, 0, 0},
+ {"5ehnckb", 2147483647, 27, 0, ERANGE},
+ {"4clm98f", 2147483647, 28, 0, 0},
+ {"4clm98g", 2147483647, 28, 0, ERANGE},
+ {"3hk7987", 2147483647, 29, 0, 0},
+ {"3hk7988", 2147483647, 29, 0, ERANGE},
+ {"2sb6cs7", 2147483647, 30, 0, 0},
+ {"2sb6cs8", 2147483647, 30, 0, ERANGE},
+ {"2d09uc1", 2147483647, 31, 0, 0},
+ {"2d09uc2", 2147483647, 31, 0, ERANGE},
+ {"1vvvvvv", 2147483647, 32, 0, 0},
+ {"2000000", 2147483647, 32, 0, ERANGE},
+ {"1lsqtl1", 2147483647, 33, 0, 0},
+ {"1lsqtl2", 2147483647, 33, 0, ERANGE},
+ {"1d8xqrp", 2147483647, 34, 0, 0},
+ {"1d8xqrq", 2147483647, 34, 0, ERANGE},
+ {"15v22um", 2147483647, 35, 0, 0},
+ {"15v22un", 2147483647, 35, 0, ERANGE},
+ {"zik0zj", 2147483647, 36, 0, 0},
+ {"zik0zk", 2147483647, 36, 0, ERANGE},
+
+ {"-10000000000000000000000000000000", -2147483648, 2, 0, 0},
+ {"-10000000000000000000000000000001", -2147483648, 2, 0, ERANGE},
+ {"-12112122212110202102", -2147483648, 3, 0, 0},
+ {"-12112122212110202110", -2147483648, 3, 0, ERANGE},
+ {"-2000000000000000", -2147483648, 4, 0, 0},
+ {"-2000000000000001", -2147483648, 4, 0, ERANGE},
+ {"-13344223434043", -2147483648, 5, 0, 0},
+ {"-13344223434044", -2147483648, 5, 0, ERANGE},
+ {"-553032005532", -2147483648, 6, 0, 0},
+ {"-553032005533", -2147483648, 6, 0, ERANGE},
+ {"-104134211162", -2147483648, 7, 0, 0},
+ {"-104134211163", -2147483648, 7, 0, ERANGE},
+ {"-20000000000", -2147483648, 8, 0, },
+ {"-20000000001", -2147483648, 8, 0, ERANGE},
+ {"-5478773672", -2147483648, 9, 0, 0},
+ {"-5478773673", -2147483648, 9, 0, ERANGE},
+ {"-2147483648", -2147483648, 10, 0, 0},
+ {"-2147483649", -2147483648, 10, 0, ERANGE},
+ {"-a02220282", -2147483648, 11, 0, 0},
+ {"-a02220283", -2147483648, 11, 0, ERANGE},
+ {"-4bb2308a8", -2147483648, 12, 0, 0},
+ {"-4bb2308a9", -2147483648, 12, 0, ERANGE},
+ {"-282ba4aab", -2147483648, 13, 0, 0},
+ {"-282ba4aac", -2147483648, 13, 0, ERANGE},
+ {"-1652ca932", -2147483648, 14, 0, 0},
+ {"-1652ca933", -2147483648, 14, 0, ERANGE},
+ {"-c87e66b8", -2147483648, 15, 0, 0},
+ {"-c87e66b9", -2147483648, 15, 0, ERANGE},
+ {"-80000000", -2147483648, 16, 0, 0},
+ {"-80000001", -2147483648, 16, 0, ERANGE},
+ {"-53g7f549", -2147483648, 17, 0, 0},
+ {"-53g7f54a", -2147483648, 17, 0, ERANGE},
+ {"-3928g3h2", -2147483648, 18, 0, 0},
+ {"-3928g3h3", -2147483648, 18, 0, ERANGE},
+ {"-27c57h33", -2147483648, 19, 0, 0},
+ {"-27c57h34", -2147483648, 19, 0, ERANGE},
+ {"-1db1f928", -2147483648, 20, 0, 0},
+ {"-1db1f929", -2147483648, 20, 0, ERANGE},
+ {"-140h2d92", -2147483648, 21, 0, 0},
+ {"-140h2d93", -2147483648, 21, 0, ERANGE},
+ {"-ikf5bf2", -2147483648, 22, 0, 0},
+ {"-ikf5bf3", -2147483648, 22, 0, ERANGE},
+ {"-ebelf96", -2147483648, 23, 0, 0},
+ {"-ebelf97", -2147483648, 23, 0, ERANGE},
+ {"-b5gge58", -2147483648, 24, 0, 0},
+ {"-b5gge59", -2147483648, 24, 0, ERANGE},
+ {"-8jmdnkn", -2147483648, 25, 0, 0},
+ {"-8jmdnko", -2147483648, 25, 0, ERANGE},
+ {"-6oj8ioo", -2147483648, 26, 0, 0},
+ {"-6oj8iop", -2147483648, 26, 0, ERANGE},
+ {"-5ehnckb", -2147483648, 27, 0, 0},
+ {"-5ehnckc", -2147483648, 27, 0, ERANGE},
+ {"-4clm98g", -2147483648, 28, 0, 0},
+ {"-4clm98h", -2147483648, 28, 0, ERANGE},
+ {"-3hk7988", -2147483648, 29, 0, 0},
+ {"-3hk7989", -2147483648, 29, 0, ERANGE},
+ {"-2sb6cs8", -2147483648, 30, 0, 0},
+ {"-2sb6cs9", -2147483648, 30, 0, ERANGE},
+ {"-2d09uc2", -2147483648, 31, 0, 0},
+ {"-2d09uc3", -2147483648, 31, 0, ERANGE},
+ {"-2000000", -2147483648, 32, 0, 0},
+ {"-2000001", -2147483648, 32, 0, ERANGE},
+ {"-1lsqtl2", -2147483648, 33, 0, 0},
+ {"-1lsqtl3", -2147483648, 33, 0, ERANGE},
+ {"-1d8xqrq", -2147483648, 34, 0, 0},
+ {"-1d8xqrr", -2147483648, 34, 0, ERANGE},
+ {"-15v22un", -2147483648, 35, 0, 0},
+ {"-15v22uo", -2147483648, 35, 0, ERANGE},
+ {"-zik0zk", -2147483648, 36, 0, 0},
+ {"-zik0zl", -2147483648, 36, 0, ERANGE},
#else
{"9223372036854775807", 9223372036854775807, 0, 0, 0},
{"9223372036854775808", 9223372036854775807, 0, 0, ERANGE},
@@ -74,6 +216,156 @@ static const struct ltest tests[] =
{"-9223372036854775809", 0x8000000000000000, 0, 0, ERANGE},
{"0x112233445566778899z", 9223372036854775807, 16, 'z', ERANGE},
{"0xFFFFFFFFFFFF00FF" , 9223372036854775807, 0, 0, ERANGE},
+
+ {"111111111111111111111111111111111111111111111111111111111111111",
+ 9223372036854775807, 2, 0, 0},
+ {"1000000000000000000000000000000000000000000000000000000000000000",
+ 9223372036854775807, 2, 0, ERANGE},
+ {"2021110011022210012102010021220101220221",
+ 9223372036854775807, 3, 0, 0},
+ {"2021110011022210012102010021220101220222",
+ 9223372036854775807, 3, 0, ERANGE},
+ {"13333333333333333333333333333333", 9223372036854775807, 4, 0, 0},
+ {"20000000000000000000000000000000", 9223372036854775807, 4, 0, ERANGE},
+ {"1104332401304422434310311212", 9223372036854775807, 5, 0, 0},
+ {"1104332401304422434310311213", 9223372036854775807, 5, 0, ERANGE},
+ {"1540241003031030222122211", 9223372036854775807, 6, 0, 0},
+ {"1540241003031030222122212", 9223372036854775807, 6, 0, ERANGE},
+ {"22341010611245052052300", 9223372036854775807, 7, 0, 0},
+ {"22341010611245052052301", 9223372036854775807, 7, 0, ERANGE},
+ {"777777777777777777777", 9223372036854775807, 8, 0, 0},
+ {"1000000000000000000000", 9223372036854775807, 8, 0, ERANGE},
+ {"67404283172107811827", 9223372036854775807, 9, 0, 0},
+ {"67404283172107811828", 9223372036854775807, 9, 0, ERANGE},
+ {"9223372036854775807", 9223372036854775807, 10, 0, 0},
+ {"9223372036854775808", 9223372036854775807, 10, 0, ERANGE},
+ {"1728002635214590697", 9223372036854775807, 11, 0, 0},
+ {"1728002635214590698", 9223372036854775807, 11, 0, ERANGE},
+ {"41a792678515120367", 9223372036854775807, 12, 0, 0},
+ {"41a792678515120368", 9223372036854775807, 12, 0, ERANGE},
+ {"10b269549075433c37", 9223372036854775807, 13, 0, 0},
+ {"10b269549075433c38", 9223372036854775807, 13, 0, ERANGE},
+ {"4340724c6c71dc7a7", 9223372036854775807, 14, 0, 0},
+ {"4340724c6c71dc7a8", 9223372036854775807, 14, 0, ERANGE},
+ {"160e2ad3246366807", 9223372036854775807, 15, 0, 0},
+ {"160e2ad3246366808", 9223372036854775807, 15, 0, ERANGE},
+ {"7fffffffffffffff", 9223372036854775807, 16, 0, 0},
+ {"8000000000000000", 9223372036854775807, 16, 0, ERANGE},
+ {"33d3d8307b214008", 9223372036854775807, 17, 0, 0},
+ {"33d3d8307b214009", 9223372036854775807, 17, 0, ERANGE},
+ {"16agh595df825fa7", 9223372036854775807, 18, 0, 0},
+ {"16agh595df825fa8", 9223372036854775807, 18, 0, ERANGE},
+ {"ba643dci0ffeehh", 9223372036854775807, 19, 0, 0},
+ {"ba643dci0ffeehi", 9223372036854775807, 19, 0, ERANGE},
+ {"5cbfjia3fh26ja7", 9223372036854775807, 20, 0, 0},
+ {"5cbfjia3fh26ja8", 9223372036854775807, 20, 0, ERANGE},
+ {"2heiciiie82dh97", 9223372036854775807, 21, 0, 0},
+ {"2heiciiie82dh98", 9223372036854775807, 21, 0, ERANGE},
+ {"1adaibb21dckfa7", 9223372036854775807, 22, 0, 0},
+ {"1adaibb21dckfa8", 9223372036854775807, 22, 0, ERANGE},
+ {"i6k448cf4192c2", 9223372036854775807, 23, 0, 0},
+ {"i6k448cf4192c3", 9223372036854775807, 23, 0, ERANGE},
+ {"acd772jnc9l0l7", 9223372036854775807, 24, 0, 0},
+ {"acd772jnc9l0l8", 9223372036854775807, 24, 0, ERANGE},
+ {"64ie1focnn5g77", 9223372036854775807, 25, 0, 0},
+ {"64ie1focnn5g78", 9223372036854775807, 25, 0, ERANGE},
+ {"3igoecjbmca687", 9223372036854775807, 26, 0, 0},
+ {"3igoecjbmca688", 9223372036854775807, 26, 0, ERANGE},
+ {"27c48l5b37oaop", 9223372036854775807, 27, 0, 0},
+ {"27c48l5b37oaoq", 9223372036854775807, 27, 0, ERANGE},
+ {"1bk39f3ah3dmq7", 9223372036854775807, 28, 0, 0},
+ {"1bk39f3ah3dmq8", 9223372036854775807, 28, 0, ERANGE},
+ {"q1se8f0m04isb", 9223372036854775807, 29, 0, 0},
+ {"q1se8f0m04isc", 9223372036854775807, 29, 0, ERANGE},
+ {"hajppbc1fc207", 9223372036854775807, 30, 0, 0},
+ {"hajppbc1fc208", 9223372036854775807, 30, 0, ERANGE},
+ {"bm03i95hia437", 9223372036854775807, 31, 0, 0},
+ {"bm03i95hia438", 9223372036854775807, 31, 0, ERANGE},
+ {"7vvvvvvvvvvvv", 9223372036854775807, 32, 0, 0},
+ {"8000000000000", 9223372036854775807, 32, 0, ERANGE},
+ {"5hg4ck9jd4u37", 9223372036854775807, 33, 0, 0},
+ {"5hg4ck9jd4u38", 9223372036854775807, 33, 0, ERANGE},
+ {"3tdtk1v8j6tpp", 9223372036854775807, 34, 0, 0},
+ {"3tdtk1v8j6tpq", 9223372036854775807, 34, 0, ERANGE},
+ {"2pijmikexrxp7", 9223372036854775807, 35, 0, 0},
+ {"2pijmikexrxp8", 9223372036854775807, 35, 0, ERANGE},
+ {"1y2p0ij32e8e7", 9223372036854775807, 36, 0, 0},
+ {"1y2p0ij32e8e8", 9223372036854775807, 36, 0, ERANGE},
+
+ {"-1000000000000000000000000000000000000000000000000000000000000000",
+ -9223372036854775808ull, 2, 0, 0},
+ {"-1000000000000000000000000000000000000000000000000000000000000001",
+ -9223372036854775808ull, 2, 0, ERANGE},
+ {"-2021110011022210012102010021220101220222",
+ -9223372036854775808ull, 3, 0, 0},
+ {"-2021110011022210012102010021220101221000",
+ -9223372036854775808ull, 3, 0, ERANGE},
+ {"-20000000000000000000000000000000", -9223372036854775808ull, 4, 0, 0},
+ {"-20000000000000000000000000000001", -9223372036854775808ull, 4, 0, ERANGE},
+ {"-1104332401304422434310311213", -9223372036854775808ull, 5, 0, 0},
+ {"-1104332401304422434310311214", -9223372036854775808ull, 5, 0, ERANGE},
+ {"-1540241003031030222122212", -9223372036854775808ull, 6, 0, 0},
+ {"-1540241003031030222122213", -9223372036854775808ull, 6, 0, ERANGE},
+ {"-22341010611245052052301", -9223372036854775808ull, 7, 0, 0},
+ {"-22341010611245052052302", -9223372036854775808ull, 7, 0, ERANGE},
+ {"-1000000000000000000000", -9223372036854775808ull, 8, 0, 0},
+ {"-1000000000000000000001", -9223372036854775808ull, 8, 0, ERANGE},
+ {"-67404283172107811828", -9223372036854775808ull, 9, 0, 0},
+ {"-67404283172107811830", -9223372036854775808ull, 9, 0, ERANGE},
+ {"-9223372036854775808", -9223372036854775808ull, 10, 0, 0},
+ {"-9223372036854775809", -9223372036854775808ull, 10, 0, ERANGE},
+ {"-1728002635214590698", -9223372036854775808ull, 11, 0, 0},
+ {"-1728002635214590699", -9223372036854775808ull, 11, 0, ERANGE},
+ {"-41a792678515120368", -9223372036854775808ull, 12, 0, 0},
+ {"-41a792678515120369", -9223372036854775808ull, 12, 0, ERANGE},
+ {"-10b269549075433c38", -9223372036854775808ull, 13, 0, 0},
+ {"-10b269549075433c39", -9223372036854775808ull, 13, 0, ERANGE},
+ {"-4340724c6c71dc7a8", -9223372036854775808ull, 14, 0, 0},
+ {"-4340724c6c71dc7a9", -9223372036854775808ull, 14, 0, ERANGE},
+ {"-160e2ad3246366808", -9223372036854775808ull, 15, 0, 0},
+ {"-160e2ad3246366809", -9223372036854775808ull, 15, 0, ERANGE},
+ {"-8000000000000000", -9223372036854775808ull, 16, 0, 0},
+ {"-8000000000000001", -9223372036854775808ull, 16, 0, ERANGE},
+ {"-33d3d8307b214009", -9223372036854775808ull, 17, 0, 0},
+ {"-33d3d8307b21400a", -9223372036854775808ull, 17, 0, ERANGE},
+ {"-16agh595df825fa8", -9223372036854775808ull, 18, 0, 0},
+ {"-16agh595df825fa9", -9223372036854775808ull, 18, 0, ERANGE},
+ {"-ba643dci0ffeehi", -9223372036854775808ull, 19, 0, 0},
+ {"-ba643dci0ffeei0", -9223372036854775808ull, 19, 0, ERANGE},
+ {"-5cbfjia3fh26ja8", -9223372036854775808ull, 20, 0, 0},
+ {"-5cbfjia3fh26ja9", -9223372036854775808ull, 20, 0, ERANGE},
+ {"-2heiciiie82dh98", -9223372036854775808ull, 21, 0, 0},
+ {"-2heiciiie82dh99", -9223372036854775808ull, 21, 0, ERANGE},
+ {"-1adaibb21dckfa8", -9223372036854775808ull, 22, 0, 0},
+ {"-1adaibb21dckfa9", -9223372036854775808ull, 22, 0, ERANGE},
+ {"-i6k448cf4192c3", -9223372036854775808ull, 23, 0, 0},
+ {"-i6k448cf4192c4", -9223372036854775808ull, 23, 0, ERANGE},
+ {"-acd772jnc9l0l8", -9223372036854775808ull, 24, 0, 0},
+ {"-acd772jnc9l0l9", -9223372036854775808ull, 24, 0, ERANGE},
+ {"-64ie1focnn5g78", -9223372036854775808ull, 25, 0, 0},
+ {"-64ie1focnn5g79", -9223372036854775808ull, 25, 0, ERANGE},
+ {"-3igoecjbmca688", -9223372036854775808ull, 26, 0, 0},
+ {"-3igoecjbmca689", -9223372036854775808ull, 26, 0, ERANGE},
+ {"-27c48l5b37oaoq", -9223372036854775808ull, 27, 0, 0},
+ {"-27c48l5b37oap0", -9223372036854775808ull, 27, 0, ERANGE},
+ {"-1bk39f3ah3dmq8", -9223372036854775808ull, 28, 0, 0},
+ {"-1bk39f3ah3dmq9", -9223372036854775808ull, 28, 0, ERANGE},
+ {"-q1se8f0m04isc", -9223372036854775808ull, 29, 0, 0},
+ {"-q1se8f0m04isd", -9223372036854775808ull, 29, 0, ERANGE},
+ {"-hajppbc1fc208", -9223372036854775808ull, 30, 0, 0},
+ {"-hajppbc1fc209", -9223372036854775808ull, 30, 0, ERANGE},
+ {"-bm03i95hia438", -9223372036854775808ull, 31, 0, 0},
+ {"-bm03i95hia439", -9223372036854775808ull, 31, 0, ERANGE},
+ {"-8000000000000", -9223372036854775808ull, 32, 0, 0},
+ {"-8000000000001", -9223372036854775808ull, 32, 0, ERANGE},
+ {"-5hg4ck9jd4u38", -9223372036854775808ull, 33, 0, 0},
+ {"-5hg4ck9jd4u39", -9223372036854775808ull, 33, 0, ERANGE},
+ {"-3tdtk1v8j6tpq", -9223372036854775808ull, 34, 0, 0},
+ {"-3tdtk1v8j6tpr", -9223372036854775808ull, 34, 0, ERANGE},
+ {"-2pijmikexrxp8", -9223372036854775808ull, 35, 0, 0},
+ {"-2pijmikexrxp9", -9223372036854775808ull, 35, 0, ERANGE},
+ {"-1y2p0ij32e8e8", -9223372036854775808ull, 36, 0, 0},
+ {"-1y2p0ij32e8e9", -9223372036854775808ull, 36, 0, ERANGE},
#endif
{NULL, 0, 0, 0, 0},
@@ -84,11 +376,157 @@ static const struct ltest tests[] =
{"-0xfedcba98", 0x01234568, 0, 0, 0},
{"0xf1f2f3f4f5", 0xffffffff, 0, 0, ERANGE},
{"-0x123456789", 0xffffffff, 0, 0, ERANGE},
+
+ {"11111111111111111111111111111111", 0xffffffff, 2, 0, 0},
+ {"100000000000000000000000000000000", 0xffffffff, 2, 0, ERANGE},
+ {"102002022201221111210", 0xffffffff, 3, 0, 0},
+ {"102002022201221111211", 0xffffffff, 3, 0, ERANGE},
+ {"3333333333333333", 0xffffffff, 4, 0, 0},
+ {"10000000000000000", 0xffffffff, 4, 0, ERANGE},
+ {"32244002423140", 0xffffffff, 5, 0, 0},
+ {"32244002423141", 0xffffffff, 5, 0, ERANGE},
+ {"1550104015503", 0xffffffff, 6, 0, 0},
+ {"1550104015504", 0xffffffff, 6, 0, ERANGE},
+ {"211301422353", 0xffffffff, 7, 0, 0},
+ {"211301422354", 0xffffffff, 7, 0, ERANGE},
+ {"37777777777", 0xffffffff, 8, 0, 0},
+ {"40000000000", 0xffffffff, 8, 0, ERANGE},
+ {"12068657453", 0xffffffff, 9, 0, 0},
+ {"12068657454", 0xffffffff, 9, 0, ERANGE},
+ {"4294967295", 0xffffffff, 10, 0, 0},
+ {"4294967296", 0xffffffff, 10, 0, ERANGE},
+ {"1904440553", 0xffffffff, 11, 0, 0},
+ {"1904440554", 0xffffffff, 11, 0, ERANGE},
+ {"9ba461593", 0xffffffff, 12, 0, 0},
+ {"9ba461594", 0xffffffff, 12, 0, ERANGE},
+ {"535a79888", 0xffffffff, 13, 0, 0},
+ {"535a79889", 0xffffffff, 13, 0, ERANGE},
+ {"2ca5b7463", 0xffffffff, 14, 0, 0},
+ {"2ca5b7464", 0xffffffff, 14, 0, ERANGE},
+ {"1a20dcd80", 0xffffffff, 15, 0, 0},
+ {"1a20dcd81", 0xffffffff, 15, 0, ERANGE},
+ {"ffffffff", 0xffffffff, 16, 0, 0},
+ {"100000000", 0xffffffff, 16, 0, ERANGE},
+ {"a7ffda90", 0xffffffff, 17, 0, 0},
+ {"a7ffda91", 0xffffffff, 17, 0, ERANGE},
+ {"704he7g3", 0xffffffff, 18, 0, 0},
+ {"704he7g4", 0xffffffff, 18, 0, ERANGE},
+ {"4f5aff65", 0xffffffff, 19, 0, 0},
+ {"4f5aff66", 0xffffffff, 19, 0, ERANGE},
+ {"3723ai4f", 0xffffffff, 20, 0, 0},
+ {"3723ai4g", 0xffffffff, 20, 0, ERANGE},
+ {"281d55i3", 0xffffffff, 21, 0, 0},
+ {"281d55i4", 0xffffffff, 21, 0, ERANGE},
+ {"1fj8b183", 0xffffffff, 22, 0, 0},
+ {"1fj8b184", 0xffffffff, 22, 0, ERANGE},
+ {"1606k7ib", 0xffffffff, 23, 0, 0},
+ {"1606k7ic", 0xffffffff, 23, 0, ERANGE},
+ {"mb994af", 0xffffffff, 24, 0, 0},
+ {"mb994ag", 0xffffffff, 24, 0, ERANGE},
+ {"hek2mgk", 0xffffffff, 25, 0, 0},
+ {"hek2mgl", 0xffffffff, 25, 0, ERANGE},
+ {"dnchbnl", 0xffffffff, 26, 0, 0},
+ {"dnchbnm", 0xffffffff, 26, 0, ERANGE},
+ {"b28jpdl", 0xffffffff, 27, 0, 0},
+ {"b28jpdm", 0xffffffff, 27, 0, ERANGE},
+ {"8pfgih3", 0xffffffff, 28, 0, 0},
+ {"8pfgih4", 0xffffffff, 28, 0, ERANGE},
+ {"76beigf", 0xffffffff, 29, 0, 0},
+ {"76beigg", 0xffffffff, 29, 0, ERANGE},
+ {"5qmcpqf", 0xffffffff, 30, 0, 0},
+ {"5qmcpqg", 0xffffffff, 30, 0, ERANGE},
+ {"4q0jto3", 0xffffffff, 31, 0, 0},
+ {"4q0jto4", 0xffffffff, 31, 0, ERANGE},
+ {"3vvvvvv", 0xffffffff, 32, 0, 0},
+ {"4000000", 0xffffffff, 32, 0, ERANGE},
+ {"3aokq93", 0xffffffff, 33, 0, 0},
+ {"3aokq94", 0xffffffff, 33, 0, ERANGE},
+ {"2qhxjlh", 0xffffffff, 34, 0, 0},
+ {"2qhxjli", 0xffffffff, 34, 0, ERANGE},
+ {"2br45qa", 0xffffffff, 35, 0, 0},
+ {"2br45qb", 0xffffffff, 35, 0, ERANGE},
+ {"1z141z3", 0xffffffff, 36, 0, 0},
+ {"1z141z4", 0xffffffff, 36, 0, ERANGE},
#else
{"0xffffffffffffffffg", 0xffffffffffffffff, 0, 'g', 0},
{"-0xfedcba987654321", 0xf0123456789abcdf, 0, 0, 0},
{"0xf1f2f3f4f5f6f7f8f9", 0xffffffffffffffff, 0, 0, ERANGE},
{"-0x123456789abcdef01", 0xffffffffffffffff, 0, 0, ERANGE},
+
+ {"1111111111111111111111111111111111111111111111111111111111111111",
+ 0xffffffffffffffff, 2, 0, 0},
+ {"10000000000000000000000000000000000000000000000000000000000000000",
+ 0xffffffffffffffff, 2, 0, ERANGE},
+ {"11112220022122120101211020120210210211220",
+ 0xffffffffffffffff, 3, 0, 0},
+ {"11112220022122120101211020120210210211221",
+ 0xffffffffffffffff, 3, 0, ERANGE},
+ {"33333333333333333333333333333333", 0xffffffffffffffff, 4, 0, 0},
+ {"100000000000000000000000000000000", 0xffffffffffffffff, 4, 0, ERANGE},
+ {"2214220303114400424121122430", 0xffffffffffffffff, 5, 0, 0},
+ {"2214220303114400424121122431", 0xffffffffffffffff, 5, 0, ERANGE},
+ {"3520522010102100444244423", 0xffffffffffffffff, 6, 0, 0},
+ {"3520522010102100444244424", 0xffffffffffffffff, 6, 0, ERANGE},
+ {"45012021522523134134601", 0xffffffffffffffff, 7, 0, 0},
+ {"45012021522523134134602", 0xffffffffffffffff, 7, 0, ERANGE},
+ {"1777777777777777777777", 0xffffffffffffffff, 8, 0, 0},
+ {"2000000000000000000000", 0xffffffffffffffff, 8, 0, ERANGE},
+ {"145808576354216723756", 0xffffffffffffffff, 9, 0, 0},
+ {"145808576354216723757", 0xffffffffffffffff, 9, 0, ERANGE},
+ {"18446744073709551615", 0xffffffffffffffff, 10, 0, 0},
+ {"18446744073709551616", 0xffffffffffffffff, 10, 0, ERANGE},
+ {"335500516a429071284", 0xffffffffffffffff, 11, 0, 0},
+ {"335500516a429071285", 0xffffffffffffffff, 11, 0, ERANGE},
+ {"839365134a2a240713", 0xffffffffffffffff, 12, 0, 0},
+ {"839365134a2a240714", 0xffffffffffffffff, 12, 0, ERANGE},
+ {"219505a9511a867b72", 0xffffffffffffffff, 13, 0, 0},
+ {"219505a9511a867b73", 0xffffffffffffffff, 13, 0, ERANGE},
+ {"8681049adb03db171", 0xffffffffffffffff, 14, 0, 0},
+ {"8681049adb03db172", 0xffffffffffffffff, 14, 0, ERANGE},
+ {"2c1d56b648c6cd110", 0xffffffffffffffff, 15, 0, 0},
+ {"2c1d56b648c6cd111", 0xffffffffffffffff, 15, 0, ERANGE},
+ {"ffffffffffffffff", 0xffffffffffffffff, 16, 0, 0},
+ {"10000000000000000", 0xffffffffffffffff, 16, 0, ERANGE},
+ {"67979g60f5428010", 0xffffffffffffffff, 17, 0, 0},
+ {"67979g60f5428011", 0xffffffffffffffff, 17, 0, ERANGE},
+ {"2d3fgb0b9cg4bd2f", 0xffffffffffffffff, 18, 0, 0},
+ {"2d3fgb0b9cg4bd2g", 0xffffffffffffffff, 18, 0, ERANGE},
+ {"141c8786h1ccaagg", 0xffffffffffffffff, 19, 0, 0},
+ {"141c8786h1ccaagh", 0xffffffffffffffff, 19, 0, ERANGE},
+ {"b53bjh07be4dj0f", 0xffffffffffffffff, 20, 0, 0},
+ {"b53bjh07be4dj0g", 0xffffffffffffffff, 20, 0, ERANGE},
+ {"5e8g4ggg7g56dif", 0xffffffffffffffff, 21, 0, 0},
+ {"5e8g4ggg7g56dig", 0xffffffffffffffff, 21, 0, ERANGE},
+ {"2l4lf104353j8kf", 0xffffffffffffffff, 22, 0, 0},
+ {"2l4lf104353j8kg", 0xffffffffffffffff, 22, 0, ERANGE},
+ {"1ddh88h2782i515", 0xffffffffffffffff, 23, 0, 0},
+ {"1ddh88h2782i516", 0xffffffffffffffff, 23, 0, ERANGE},
+ {"l12ee5fn0ji1if", 0xffffffffffffffff, 24, 0, 0},
+ {"l12ee5fn0ji1ig", 0xffffffffffffffff, 24, 0, ERANGE},
+ {"c9c336o0mlb7ef", 0xffffffffffffffff, 25, 0, 0},
+ {"c9c336o0mlb7eg", 0xffffffffffffffff, 25, 0, ERANGE},
+ {"7b7n2pcniokcgf", 0xffffffffffffffff, 26, 0, 0},
+ {"7b7n2pcniokcgg", 0xffffffffffffffff, 26, 0, ERANGE},
+ {"4eo8hfam6fllmo", 0xffffffffffffffff, 27, 0, 0},
+ {"4eo8hfam6fllmp", 0xffffffffffffffff, 27, 0, ERANGE},
+ {"2nc6j26l66rhof", 0xffffffffffffffff, 28, 0, 0},
+ {"2nc6j26l66rhog", 0xffffffffffffffff, 28, 0, ERANGE},
+ {"1n3rsh11f098rn", 0xffffffffffffffff, 29, 0, 0},
+ {"1n3rsh11f098ro", 0xffffffffffffffff, 29, 0, ERANGE},
+ {"14l9lkmo30o40f", 0xffffffffffffffff, 30, 0, 0},
+ {"14l9lkmo30o40g", 0xffffffffffffffff, 30, 0, ERANGE},
+ {"nd075ib45k86f", 0xffffffffffffffff, 31, 0, 0},
+ {"nd075ib45k86g", 0xffffffffffffffff, 31, 0, ERANGE},
+ {"fvvvvvvvvvvvv", 0xffffffffffffffff, 32, 0, 0},
+ {"g000000000000", 0xffffffffffffffff, 32, 0, ERANGE},
+ {"b1w8p7j5q9r6f", 0xffffffffffffffff, 33, 0, 0},
+ {"b1w8p7j5q9r6g", 0xffffffffffffffff, 33, 0, ERANGE},
+ {"7orp63sh4dphh", 0xffffffffffffffff, 34, 0, 0},
+ {"7orp63sh4dphi", 0xffffffffffffffff, 34, 0, ERANGE},
+ {"5g24a25twkwff", 0xffffffffffffffff, 35, 0, 0},
+ {"5g24a25twkwfg", 0xffffffffffffffff, 35, 0, ERANGE},
+ {"3w5e11264sgsf", 0xffffffffffffffff, 36, 0, 0},
+ {"3w5e11264sgsg", 0xffffffffffffffff, 36, 0, ERANGE},
#endif
{NULL, 0, 0, 0, 0},
};
diff --git a/stdlib/tst-strtoll.c b/stdlib/tst-strtoll.c
index 9007488d80..ba3338241b 100644
--- a/stdlib/tst-strtoll.c
+++ b/stdlib/tst-strtoll.c
@@ -69,6 +69,156 @@ static const struct ltest tests[] =
{"-9223372036854775809", -9223372036854775807ll - 1, 0, 0, ERANGE},
{"0x112233445566778899z", 9223372036854775807ll, 16, 'z', ERANGE},
{"0xFFFFFFFFFFFF00FF" , 9223372036854775807ll, 0, 0, ERANGE},
+
+ {"111111111111111111111111111111111111111111111111111111111111111",
+ 9223372036854775807ll, 2, 0, 0},
+ {"1000000000000000000000000000000000000000000000000000000000000000",
+ 9223372036854775807ll, 2, 0, ERANGE},
+ {"2021110011022210012102010021220101220221",
+ 9223372036854775807ll, 3, 0, 0},
+ {"2021110011022210012102010021220101220222",
+ 9223372036854775807ll, 3, 0, ERANGE},
+ {"13333333333333333333333333333333", 9223372036854775807ll, 4, 0, 0},
+ {"20000000000000000000000000000000", 9223372036854775807ll, 4, 0, ERANGE},
+ {"1104332401304422434310311212", 9223372036854775807ll, 5, 0, 0},
+ {"1104332401304422434310311213", 9223372036854775807ll, 5, 0, ERANGE},
+ {"1540241003031030222122211", 9223372036854775807ll, 6, 0, 0},
+ {"1540241003031030222122212", 9223372036854775807ll, 6, 0, ERANGE},
+ {"22341010611245052052300", 9223372036854775807ll, 7, 0, 0},
+ {"22341010611245052052301", 9223372036854775807ll, 7, 0, ERANGE},
+ {"777777777777777777777", 9223372036854775807ll, 8, 0, 0},
+ {"1000000000000000000000", 9223372036854775807ll, 8, 0, ERANGE},
+ {"67404283172107811827", 9223372036854775807ll, 9, 0, 0},
+ {"67404283172107811828", 9223372036854775807ll, 9, 0, ERANGE},
+ {"9223372036854775807", 9223372036854775807ll, 10, 0, 0},
+ {"9223372036854775808", 9223372036854775807ll, 10, 0, ERANGE},
+ {"1728002635214590697", 9223372036854775807ll, 11, 0, 0},
+ {"1728002635214590698", 9223372036854775807ll, 11, 0, ERANGE},
+ {"41a792678515120367", 9223372036854775807ll, 12, 0, 0},
+ {"41a792678515120368", 9223372036854775807ll, 12, 0, ERANGE},
+ {"10b269549075433c37", 9223372036854775807ll, 13, 0, 0},
+ {"10b269549075433c38", 9223372036854775807ll, 13, 0, ERANGE},
+ {"4340724c6c71dc7a7", 9223372036854775807ll, 14, 0, 0},
+ {"4340724c6c71dc7a8", 9223372036854775807ll, 14, 0, ERANGE},
+ {"160e2ad3246366807", 9223372036854775807ll, 15, 0, 0},
+ {"160e2ad3246366808", 9223372036854775807ll, 15, 0, ERANGE},
+ {"7fffffffffffffff", 9223372036854775807ll, 16, 0, 0},
+ {"8000000000000000", 9223372036854775807ll, 16, 0, ERANGE},
+ {"33d3d8307b214008", 9223372036854775807ll, 17, 0, 0},
+ {"33d3d8307b214009", 9223372036854775807ll, 17, 0, ERANGE},
+ {"16agh595df825fa7", 9223372036854775807ll, 18, 0, 0},
+ {"16agh595df825fa8", 9223372036854775807ll, 18, 0, ERANGE},
+ {"ba643dci0ffeehh", 9223372036854775807ll, 19, 0, 0},
+ {"ba643dci0ffeehi", 9223372036854775807ll, 19, 0, ERANGE},
+ {"5cbfjia3fh26ja7", 9223372036854775807ll, 20, 0, 0},
+ {"5cbfjia3fh26ja8", 9223372036854775807ll, 20, 0, ERANGE},
+ {"2heiciiie82dh97", 9223372036854775807ll, 21, 0, 0},
+ {"2heiciiie82dh98", 9223372036854775807ll, 21, 0, ERANGE},
+ {"1adaibb21dckfa7", 9223372036854775807ll, 22, 0, 0},
+ {"1adaibb21dckfa8", 9223372036854775807ll, 22, 0, ERANGE},
+ {"i6k448cf4192c2", 9223372036854775807ll, 23, 0, 0},
+ {"i6k448cf4192c3", 9223372036854775807ll, 23, 0, ERANGE},
+ {"acd772jnc9l0l7", 9223372036854775807ll, 24, 0, 0},
+ {"acd772jnc9l0l8", 9223372036854775807ll, 24, 0, ERANGE},
+ {"64ie1focnn5g77", 9223372036854775807ll, 25, 0, 0},
+ {"64ie1focnn5g78", 9223372036854775807ll, 25, 0, ERANGE},
+ {"3igoecjbmca687", 9223372036854775807ll, 26, 0, 0},
+ {"3igoecjbmca688", 9223372036854775807ll, 26, 0, ERANGE},
+ {"27c48l5b37oaop", 9223372036854775807ll, 27, 0, 0},
+ {"27c48l5b37oaoq", 9223372036854775807ll, 27, 0, ERANGE},
+ {"1bk39f3ah3dmq7", 9223372036854775807ll, 28, 0, 0},
+ {"1bk39f3ah3dmq8", 9223372036854775807ll, 28, 0, ERANGE},
+ {"q1se8f0m04isb", 9223372036854775807ll, 29, 0, 0},
+ {"q1se8f0m04isc", 9223372036854775807ll, 29, 0, ERANGE},
+ {"hajppbc1fc207", 9223372036854775807ll, 30, 0, 0},
+ {"hajppbc1fc208", 9223372036854775807ll, 30, 0, ERANGE},
+ {"bm03i95hia437", 9223372036854775807ll, 31, 0, 0},
+ {"bm03i95hia438", 9223372036854775807ll, 31, 0, ERANGE},
+ {"7vvvvvvvvvvvv", 9223372036854775807ll, 32, 0, 0},
+ {"8000000000000", 9223372036854775807ll, 32, 0, ERANGE},
+ {"5hg4ck9jd4u37", 9223372036854775807ll, 33, 0, 0},
+ {"5hg4ck9jd4u38", 9223372036854775807ll, 33, 0, ERANGE},
+ {"3tdtk1v8j6tpp", 9223372036854775807ll, 34, 0, 0},
+ {"3tdtk1v8j6tpq", 9223372036854775807ll, 34, 0, ERANGE},
+ {"2pijmikexrxp7", 9223372036854775807ll, 35, 0, 0},
+ {"2pijmikexrxp8", 9223372036854775807ll, 35, 0, ERANGE},
+ {"1y2p0ij32e8e7", 9223372036854775807ll, 36, 0, 0},
+ {"1y2p0ij32e8e8", 9223372036854775807ll, 36, 0, ERANGE},
+
+ {"-1000000000000000000000000000000000000000000000000000000000000000",
+ -9223372036854775808ull, 2, 0, 0},
+ {"-1000000000000000000000000000000000000000000000000000000000000001",
+ -9223372036854775808ull, 2, 0, ERANGE},
+ {"-2021110011022210012102010021220101220222",
+ -9223372036854775808ull, 3, 0, 0},
+ {"-2021110011022210012102010021220101221000",
+ -9223372036854775808ull, 3, 0, ERANGE},
+ {"-20000000000000000000000000000000", -9223372036854775808ull, 4, 0, 0},
+ {"-20000000000000000000000000000001", -9223372036854775808ull, 4, 0, ERANGE},
+ {"-1104332401304422434310311213", -9223372036854775808ull, 5, 0, 0},
+ {"-1104332401304422434310311214", -9223372036854775808ull, 5, 0, ERANGE},
+ {"-1540241003031030222122212", -9223372036854775808ull, 6, 0, 0},
+ {"-1540241003031030222122213", -9223372036854775808ull, 6, 0, ERANGE},
+ {"-22341010611245052052301", -9223372036854775808ull, 7, 0, 0},
+ {"-22341010611245052052302", -9223372036854775808ull, 7, 0, ERANGE},
+ {"-1000000000000000000000", -9223372036854775808ull, 8, 0, 0},
+ {"-1000000000000000000001", -9223372036854775808ull, 8, 0, ERANGE},
+ {"-67404283172107811828", -9223372036854775808ull, 9, 0, 0},
+ {"-67404283172107811830", -9223372036854775808ull, 9, 0, ERANGE},
+ {"-9223372036854775808", -9223372036854775808ull, 10, 0, 0},
+ {"-9223372036854775809", -9223372036854775808ull, 10, 0, ERANGE},
+ {"-1728002635214590698", -9223372036854775808ull, 11, 0, 0},
+ {"-1728002635214590699", -9223372036854775808ull, 11, 0, ERANGE},
+ {"-41a792678515120368", -9223372036854775808ull, 12, 0, 0},
+ {"-41a792678515120369", -9223372036854775808ull, 12, 0, ERANGE},
+ {"-10b269549075433c38", -9223372036854775808ull, 13, 0, 0},
+ {"-10b269549075433c39", -9223372036854775808ull, 13, 0, ERANGE},
+ {"-4340724c6c71dc7a8", -9223372036854775808ull, 14, 0, 0},
+ {"-4340724c6c71dc7a9", -9223372036854775808ull, 14, 0, ERANGE},
+ {"-160e2ad3246366808", -9223372036854775808ull, 15, 0, 0},
+ {"-160e2ad3246366809", -9223372036854775808ull, 15, 0, ERANGE},
+ {"-8000000000000000", -9223372036854775808ull, 16, 0, 0},
+ {"-8000000000000001", -9223372036854775808ull, 16, 0, ERANGE},
+ {"-33d3d8307b214009", -9223372036854775808ull, 17, 0, 0},
+ {"-33d3d8307b21400a", -9223372036854775808ull, 17, 0, ERANGE},
+ {"-16agh595df825fa8", -9223372036854775808ull, 18, 0, 0},
+ {"-16agh595df825fa9", -9223372036854775808ull, 18, 0, ERANGE},
+ {"-ba643dci0ffeehi", -9223372036854775808ull, 19, 0, 0},
+ {"-ba643dci0ffeei0", -9223372036854775808ull, 19, 0, ERANGE},
+ {"-5cbfjia3fh26ja8", -9223372036854775808ull, 20, 0, 0},
+ {"-5cbfjia3fh26ja9", -9223372036854775808ull, 20, 0, ERANGE},
+ {"-2heiciiie82dh98", -9223372036854775808ull, 21, 0, 0},
+ {"-2heiciiie82dh99", -9223372036854775808ull, 21, 0, ERANGE},
+ {"-1adaibb21dckfa8", -9223372036854775808ull, 22, 0, 0},
+ {"-1adaibb21dckfa9", -9223372036854775808ull, 22, 0, ERANGE},
+ {"-i6k448cf4192c3", -9223372036854775808ull, 23, 0, 0},
+ {"-i6k448cf4192c4", -9223372036854775808ull, 23, 0, ERANGE},
+ {"-acd772jnc9l0l8", -9223372036854775808ull, 24, 0, 0},
+ {"-acd772jnc9l0l9", -9223372036854775808ull, 24, 0, ERANGE},
+ {"-64ie1focnn5g78", -9223372036854775808ull, 25, 0, 0},
+ {"-64ie1focnn5g79", -9223372036854775808ull, 25, 0, ERANGE},
+ {"-3igoecjbmca688", -9223372036854775808ull, 26, 0, 0},
+ {"-3igoecjbmca689", -9223372036854775808ull, 26, 0, ERANGE},
+ {"-27c48l5b37oaoq", -9223372036854775808ull, 27, 0, 0},
+ {"-27c48l5b37oap0", -9223372036854775808ull, 27, 0, ERANGE},
+ {"-1bk39f3ah3dmq8", -9223372036854775808ull, 28, 0, 0},
+ {"-1bk39f3ah3dmq9", -9223372036854775808ull, 28, 0, ERANGE},
+ {"-q1se8f0m04isc", -9223372036854775808ull, 29, 0, 0},
+ {"-q1se8f0m04isd", -9223372036854775808ull, 29, 0, ERANGE},
+ {"-hajppbc1fc208", -9223372036854775808ull, 30, 0, 0},
+ {"-hajppbc1fc209", -9223372036854775808ull, 30, 0, ERANGE},
+ {"-bm03i95hia438", -9223372036854775808ull, 31, 0, 0},
+ {"-bm03i95hia439", -9223372036854775808ull, 31, 0, ERANGE},
+ {"-8000000000000", -9223372036854775808ull, 32, 0, 0},
+ {"-8000000000001", -9223372036854775808ull, 32, 0, ERANGE},
+ {"-5hg4ck9jd4u38", -9223372036854775808ull, 33, 0, 0},
+ {"-5hg4ck9jd4u39", -9223372036854775808ull, 33, 0, ERANGE},
+ {"-3tdtk1v8j6tpq", -9223372036854775808ull, 34, 0, 0},
+ {"-3tdtk1v8j6tpr", -9223372036854775808ull, 34, 0, ERANGE},
+ {"-2pijmikexrxp8", -9223372036854775808ull, 35, 0, 0},
+ {"-2pijmikexrxp9", -9223372036854775808ull, 35, 0, ERANGE},
+ {"-1y2p0ij32e8e8", -9223372036854775808ull, 36, 0, 0},
+ {"-1y2p0ij32e8e9", -9223372036854775808ull, 36, 0, ERANGE},
{NULL, 0, 0, 0, 0},
/* Then unsigned. */
@@ -78,6 +228,81 @@ static const struct ltest tests[] =
{"-0xfedcba987654321", 0xf0123456789abcdfull, 0, 0, 0},
{"0xf1f2f3f4f5f6f7f8f9", 0xffffffffffffffffull, 0, 0, ERANGE},
{"-0x123456789abcdef01", 0xffffffffffffffffull, 0, 0, ERANGE},
+
+ {"1111111111111111111111111111111111111111111111111111111111111111",
+ 0xffffffffffffffff, 2, 0, 0},
+ {"10000000000000000000000000000000000000000000000000000000000000000",
+ 0xffffffffffffffff, 2, 0, ERANGE},
+ {"11112220022122120101211020120210210211220",
+ 0xffffffffffffffff, 3, 0, 0},
+ {"11112220022122120101211020120210210211221",
+ 0xffffffffffffffff, 3, 0, ERANGE},
+ {"33333333333333333333333333333333", 0xffffffffffffffff, 4, 0, 0},
+ {"100000000000000000000000000000000", 0xffffffffffffffff, 4, 0, ERANGE},
+ {"2214220303114400424121122430", 0xffffffffffffffff, 5, 0, 0},
+ {"2214220303114400424121122431", 0xffffffffffffffff, 5, 0, ERANGE},
+ {"3520522010102100444244423", 0xffffffffffffffff, 6, 0, 0},
+ {"3520522010102100444244424", 0xffffffffffffffff, 6, 0, ERANGE},
+ {"45012021522523134134601", 0xffffffffffffffff, 7, 0, 0},
+ {"45012021522523134134602", 0xffffffffffffffff, 7, 0, ERANGE},
+ {"1777777777777777777777", 0xffffffffffffffff, 8, 0, 0},
+ {"2000000000000000000000", 0xffffffffffffffff, 8, 0, ERANGE},
+ {"145808576354216723756", 0xffffffffffffffff, 9, 0, 0},
+ {"145808576354216723757", 0xffffffffffffffff, 9, 0, ERANGE},
+ {"18446744073709551615", 0xffffffffffffffff, 10, 0, 0},
+ {"18446744073709551616", 0xffffffffffffffff, 10, 0, ERANGE},
+ {"335500516a429071284", 0xffffffffffffffff, 11, 0, 0},
+ {"335500516a429071285", 0xffffffffffffffff, 11, 0, ERANGE},
+ {"839365134a2a240713", 0xffffffffffffffff, 12, 0, 0},
+ {"839365134a2a240714", 0xffffffffffffffff, 12, 0, ERANGE},
+ {"219505a9511a867b72", 0xffffffffffffffff, 13, 0, 0},
+ {"219505a9511a867b73", 0xffffffffffffffff, 13, 0, ERANGE},
+ {"8681049adb03db171", 0xffffffffffffffff, 14, 0, 0},
+ {"8681049adb03db172", 0xffffffffffffffff, 14, 0, ERANGE},
+ {"2c1d56b648c6cd110", 0xffffffffffffffff, 15, 0, 0},
+ {"2c1d56b648c6cd111", 0xffffffffffffffff, 15, 0, ERANGE},
+ {"ffffffffffffffff", 0xffffffffffffffff, 16, 0, 0},
+ {"10000000000000000", 0xffffffffffffffff, 16, 0, ERANGE},
+ {"67979g60f5428010", 0xffffffffffffffff, 17, 0, 0},
+ {"67979g60f5428011", 0xffffffffffffffff, 17, 0, ERANGE},
+ {"2d3fgb0b9cg4bd2f", 0xffffffffffffffff, 18, 0, 0},
+ {"2d3fgb0b9cg4bd2g", 0xffffffffffffffff, 18, 0, ERANGE},
+ {"141c8786h1ccaagg", 0xffffffffffffffff, 19, 0, 0},
+ {"141c8786h1ccaagh", 0xffffffffffffffff, 19, 0, ERANGE},
+ {"b53bjh07be4dj0f", 0xffffffffffffffff, 20, 0, 0},
+ {"b53bjh07be4dj0g", 0xffffffffffffffff, 20, 0, ERANGE},
+ {"5e8g4ggg7g56dif", 0xffffffffffffffff, 21, 0, 0},
+ {"5e8g4ggg7g56dig", 0xffffffffffffffff, 21, 0, ERANGE},
+ {"2l4lf104353j8kf", 0xffffffffffffffff, 22, 0, 0},
+ {"2l4lf104353j8kg", 0xffffffffffffffff, 22, 0, ERANGE},
+ {"1ddh88h2782i515", 0xffffffffffffffff, 23, 0, 0},
+ {"1ddh88h2782i516", 0xffffffffffffffff, 23, 0, ERANGE},
+ {"l12ee5fn0ji1if", 0xffffffffffffffff, 24, 0, 0},
+ {"l12ee5fn0ji1ig", 0xffffffffffffffff, 24, 0, ERANGE},
+ {"c9c336o0mlb7ef", 0xffffffffffffffff, 25, 0, 0},
+ {"c9c336o0mlb7eg", 0xffffffffffffffff, 25, 0, ERANGE},
+ {"7b7n2pcniokcgf", 0xffffffffffffffff, 26, 0, 0},
+ {"7b7n2pcniokcgg", 0xffffffffffffffff, 26, 0, ERANGE},
+ {"4eo8hfam6fllmo", 0xffffffffffffffff, 27, 0, 0},
+ {"4eo8hfam6fllmp", 0xffffffffffffffff, 27, 0, ERANGE},
+ {"2nc6j26l66rhof", 0xffffffffffffffff, 28, 0, 0},
+ {"2nc6j26l66rhog", 0xffffffffffffffff, 28, 0, ERANGE},
+ {"1n3rsh11f098rn", 0xffffffffffffffff, 29, 0, 0},
+ {"1n3rsh11f098ro", 0xffffffffffffffff, 29, 0, ERANGE},
+ {"14l9lkmo30o40f", 0xffffffffffffffff, 30, 0, 0},
+ {"14l9lkmo30o40g", 0xffffffffffffffff, 30, 0, ERANGE},
+ {"nd075ib45k86f", 0xffffffffffffffff, 31, 0, 0},
+ {"nd075ib45k86g", 0xffffffffffffffff, 31, 0, ERANGE},
+ {"fvvvvvvvvvvvv", 0xffffffffffffffff, 32, 0, 0},
+ {"g000000000000", 0xffffffffffffffff, 32, 0, ERANGE},
+ {"b1w8p7j5q9r6f", 0xffffffffffffffff, 33, 0, 0},
+ {"b1w8p7j5q9r6g", 0xffffffffffffffff, 33, 0, ERANGE},
+ {"7orp63sh4dphh", 0xffffffffffffffff, 34, 0, 0},
+ {"7orp63sh4dphi", 0xffffffffffffffff, 34, 0, ERANGE},
+ {"5g24a25twkwff", 0xffffffffffffffff, 35, 0, 0},
+ {"5g24a25twkwfg", 0xffffffffffffffff, 35, 0, ERANGE},
+ {"3w5e11264sgsf", 0xffffffffffffffff, 36, 0, 0},
+ {"3w5e11264sgsg", 0xffffffffffffffff, 36, 0, ERANGE},
{NULL, 0, 0, 0, 0},
};
diff --git a/stdlib/tst-unsetenv1.c b/stdlib/tst-unsetenv1.c
new file mode 100644
index 0000000000..a2a760d241
--- /dev/null
+++ b/stdlib/tst-unsetenv1.c
@@ -0,0 +1,12 @@
+#include <stdlib.h>
+
+static int
+do_test (void)
+{
+ clearenv ();
+ unsetenv ("FOO");
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/string/.cvsignore b/string/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/string/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/string/Makefile b/string/Makefile
index cccd68cf45..db9b5081d5 100644
--- a/string/Makefile
+++ b/string/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2002, 2005-2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 1991-2002, 2005-2008, 2009 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
@@ -54,7 +54,7 @@ tests := tester inl-tester noinl-tester testcopy test-ffs \
bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \
tst-strtok tst-strxfrm bug-strcoll1 tst-strfry \
bug-strtok1 $(addprefix test-,$(strop-tests)) \
- bug-envz1 tst-strxfrm2 tst-endian
+ bug-envz1 tst-strxfrm2 tst-endian tst-svc2
distribute := memcopy.h pagecopy.h tst-svc.expect test-string.h \
str-two-way.h
@@ -79,5 +79,5 @@ tests: $(objpfx)tst-svc.out
$(objpfx)tst-svc.out: tst-svc.input $(objpfx)tst-svc
GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \
$(built-program-cmd) < $(word 1,$^) > $@
- -cmp tst-svc.expect $(objpfx)tst-svc.out
+ @cmp tst-svc.expect $(objpfx)tst-svc.out
endif
diff --git a/string/bits/string3.h b/string/bits/string3.h
index a5593e3b89..1d759f181b 100644
--- a/string/bits/string3.h
+++ b/string/bits/string3.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005, 2007, 2009 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
@@ -77,7 +77,8 @@ __NTH (mempcpy (void *__restrict __dest, __const void *__restrict __src,
__extern_always_inline void *
__NTH (memset (void *__dest, int __ch, size_t __len))
{
- if (__builtin_constant_p (__len) && __len == 0)
+ if (__builtin_constant_p (__len) && __len == 0
+ && (!__builtin_constant_p (__ch) || __ch != 0))
{
__warn_memset_zero_len ();
return __dest;
diff --git a/string/stpncpy.c b/string/stpncpy.c
index 164d0f1747..2ebab33d8a 100644
--- a/string/stpncpy.c
+++ b/string/stpncpy.c
@@ -28,17 +28,19 @@
# include <sys/types.h>
#endif
-#ifndef weak_alias
-# define __stpncpy stpncpy
+#ifndef STPNCPY
+# ifdef weak_alias
+# define STPNCPY __stpncpy
+weak_alias (__stpncpy, stpncpy)
+# else
+# define STPNCPY stpncpy
+# endif
#endif
/* Copy no more than N characters of SRC to DEST, returning the address of
the terminating '\0' in DEST, if any, or else DEST + N. */
char *
-__stpncpy (dest, src, n)
- char *dest;
- const char *src;
- size_t n;
+STPNCPY (char *dest, const char *src, size_t n)
{
char c;
char *s = dest;
@@ -96,5 +98,4 @@ __stpncpy (dest, src, n)
}
#ifdef weak_alias
libc_hidden_def (__stpncpy)
-weak_alias (__stpncpy, stpncpy)
#endif
diff --git a/string/stratcliff.c b/string/stratcliff.c
index 77fe2bcca9..2bb59820f9 100644
--- a/string/stratcliff.c
+++ b/string/stratcliff.c
@@ -1,5 +1,5 @@
/* Test for string function add boundaries of usable memory.
- Copyright (C) 1996,1997,1999-2002,2003,2007 Free Software Foundation, Inc.
+ Copyright (C) 1996,1997,1999-2003,2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -46,6 +46,7 @@
# define STPNCPY stpncpy
# define MEMCPY memcpy
# define MEMPCPY mempcpy
+# define MEMCHR memchr
#endif
@@ -128,10 +129,10 @@ do_test (void)
}
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
{
- for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
+ for (inner = MAX (outer, nchars - 64); inner <= nchars; ++inner)
{
- if (STRNLEN (&adr[outer], inner - outer + 1)
- != (size_t) (inner - outer + 1))
+ if (STRNLEN (&adr[outer], inner - outer)
+ != (size_t) (inner - outer))
{
printf ("%s flunked bounded for outer = %d, inner = %d\n",
STRINGIFY (STRNLEN), outer, inner);
@@ -205,6 +206,37 @@ do_test (void)
}
}
+ /* memchr test */
+ for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
+ {
+ for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
+ {
+ adr[middle] = L('V');
+
+ CHAR *cp = MEMCHR (&adr[outer], L('V'), 3 * size);
+
+ if (cp - &adr[outer] != middle - outer)
+ {
+ printf ("%s flunked for outer = %d, middle = %d\n",
+ STRINGIFY (MEMCHR), outer, middle);
+ result = 1;
+ }
+
+ adr[middle] = L('T');
+ }
+ }
+ for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
+ {
+ CHAR *cp = MEMCHR (&adr[outer], L('V'), nchars - outer);
+
+ if (cp != NULL)
+ {
+ printf ("%s flunked for outer = %d\n",
+ STRINGIFY (MEMCHR), outer);
+ result = 1;
+ }
+ }
+
/* This function only exists for single-byte characters. */
#ifndef WCSTEST
/* rawmemchr test */
@@ -247,9 +279,9 @@ do_test (void)
}
}
- /* strncpy tests */
+ /* strncpy/wcsncpy tests */
adr[nchars - 1] = L('T');
- for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
+ for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
{
size_t len;
@@ -323,6 +355,24 @@ do_test (void)
}
/* stpncpy/wcpncpy test */
+ adr[nchars - 1] = L('T');
+ for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
+ {
+ size_t len;
+
+ for (len = 0; len < nchars - outer; ++len)
+ {
+ if (STPNCPY (dest, &adr[outer], len) != dest + len
+ || MEMCMP (dest, &adr[outer], len) != 0)
+ {
+ printf ("outer %s flunked for outer = %d, len = %Zd\n",
+ STRINGIFY (STPNCPY), outer, len);
+ result = 1;
+ }
+ }
+ }
+ adr[nchars - 1] = L('\0');
+
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
{
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
@@ -346,7 +396,7 @@ do_test (void)
}
/* memcpy/wmemcpy test */
- for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
+ for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
for (inner = 0; inner < nchars - outer; ++inner)
if (MEMCPY (dest, &adr[outer], inner) != dest)
{
@@ -356,7 +406,7 @@ do_test (void)
}
/* mempcpy/wmempcpy test */
- for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
+ for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
for (inner = 0; inner < nchars - outer; ++inner)
if (MEMPCPY (dest, &adr[outer], inner) != dest + inner)
{
@@ -369,7 +419,7 @@ do_test (void)
#ifndef WCSTEST
/* memccpy test */
memset (adr, '\0', nchars);
- for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
+ for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
for (inner = 0; inner < nchars - outer; ++inner)
if (memccpy (dest, &adr[outer], L('\1'), inner) != NULL)
{
diff --git a/string/strcasestr.c b/string/strcasestr.c
index 92f2eac7c8..088b5d91c7 100644
--- a/string/strcasestr.c
+++ b/string/strcasestr.c
@@ -1,5 +1,6 @@
/* Return the offset of one string within another.
- Copyright (C) 1994, 1996-2000, 2004, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1994, 1996-2000, 2004, 2008, 2009
+ 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
@@ -52,11 +53,16 @@
#undef strcasestr
#undef __strcasestr
+#ifndef STRCASESTR
+#define STRCASESTR __strcasestr
+#endif
+
+
/* Find the first occurrence of NEEDLE in HAYSTACK, using
case-insensitive comparison. This function gives unspecified
results in multibyte locales. */
char *
-__strcasestr (const char *haystack_start, const char *needle_start)
+STRCASESTR (const char *haystack_start, const char *needle_start)
{
const char *haystack = haystack_start;
const char *needle = needle_start;
diff --git a/string/strcoll_l.c b/string/strcoll_l.c
index 8bd84b10aa..d8d11392e3 100644
--- a/string/strcoll_l.c
+++ b/string/strcoll_l.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,96,97,2002, 2004, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1997,2002,2004,2007,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Ulrich Drepper <drepper@gnu.org>, 1995.
@@ -48,7 +48,7 @@ STRCOLL (s1, s2, l)
const STRING_TYPE *s2;
__locale_t l;
{
- struct locale_data *current = l->__locales[LC_COLLATE];
+ struct __locale_data *current = l->__locales[LC_COLLATE];
uint_fast32_t nrules = current->values[_NL_ITEM_INDEX (_NL_COLLATE_NRULES)].word;
/* We don't assign the following values right away since it might be
unnecessary in case there are no rules. */
diff --git a/string/string.h b/string/string.h
index 90c92d4527..388402189f 100644
--- a/string/string.h
+++ b/string/string.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991-1993, 1995-2004, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1993,1995-2004,2007,2009,2010
+ 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
@@ -32,6 +33,11 @@ __BEGIN_DECLS
#define __need_NULL
#include <stddef.h>
+/* Tell the caller that we provide correct C++ prototypes. */
+#if defined __cplusplus && __GNUC_PREREQ (4, 4)
+# define __CORRECT_ISO_CPP_STRING_H_PROTO
+#endif
+
__BEGIN_NAMESPACE_STD
/* Copy N bytes of SRC to DEST. */
@@ -63,19 +69,57 @@ extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
__THROW __attribute_pure__ __nonnull ((1, 2));
/* Search N bytes of S for C. */
+#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
+extern "C++"
+{
+extern void *memchr (void *__s, int __c, size_t __n)
+ __THROW __asm ("memchr") __attribute_pure__ __nonnull ((1));
+extern __const void *memchr (__const void *__s, int __c, size_t __n)
+ __THROW __asm ("memchr") __attribute_pure__ __nonnull ((1));
+
+# ifdef __OPTIMIZE__
+__extern_always_inline void *
+memchr (void *__s, int __c, size_t __n) __THROW
+{
+ return __builtin_memchr (__s, __c, __n);
+}
+
+__extern_always_inline __const void *
+memchr (__const void *__s, int __c, size_t __n) __THROW
+{
+ return __builtin_memchr (__s, __c, __n);
+}
+# endif
+}
+#else
extern void *memchr (__const void *__s, int __c, size_t __n)
__THROW __attribute_pure__ __nonnull ((1));
+#endif
__END_NAMESPACE_STD
#ifdef __USE_GNU
/* Search in S for C. This is similar to `memchr' but there is no
length limit. */
+# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
+extern "C++" void *rawmemchr (void *__s, int __c)
+ __THROW __asm ("rawmemchr") __attribute_pure__ __nonnull ((1));
+extern "C++" __const void *rawmemchr (__const void *__s, int __c)
+ __THROW __asm ("rawmemchr") __attribute_pure__ __nonnull ((1));
+# else
extern void *rawmemchr (__const void *__s, int __c)
__THROW __attribute_pure__ __nonnull ((1));
+# endif
/* Search N bytes of S for the final occurrence of C. */
+# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
+extern "C++" void *memrchr (void *__s, int __c, size_t __n)
+ __THROW __asm ("memrchr") __attribute_pure__ __nonnull ((1));
+extern "C++" __const void *memrchr (__const void *__s, int __c, size_t __n)
+ __THROW __asm ("memrchr") __attribute_pure__ __nonnull ((1));
+# else
extern void *memrchr (__const void *__s, int __c, size_t __n)
__THROW __attribute_pure__ __nonnull ((1));
+# endif
#endif
@@ -111,7 +155,7 @@ extern size_t strxfrm (char *__restrict __dest,
__THROW __nonnull ((2));
__END_NAMESPACE_STD
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* The following functions are equivalent to the both above but they
take the locale they use for the collation as an extra argument.
This is not standardsized but something like will come. */
@@ -125,7 +169,8 @@ extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
__locale_t __l) __THROW __nonnull ((2, 4));
#endif
-#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED \
+ || defined __USE_XOPEN2K8
/* Duplicate S, returning an identical malloc'd string. */
extern char *strdup (__const char *__s)
__THROW __attribute_malloc__ __nonnull ((1));
@@ -134,7 +179,7 @@ extern char *strdup (__const char *__s)
/* Return a malloc'd copy of at most N bytes of STRING. The
resultant string is terminated even if no null terminator
appears before STRING[N]. */
-#if defined __USE_GNU
+#if defined __USE_XOPEN2K8
extern char *strndup (__const char *__string, size_t __n)
__THROW __attribute_malloc__ __nonnull ((1));
#endif
@@ -164,18 +209,73 @@ extern char *strndup (__const char *__string, size_t __n)
__BEGIN_NAMESPACE_STD
/* Find the first occurrence of C in S. */
+#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
+extern "C++"
+{
+extern char *strchr (char *__s, int __c)
+ __THROW __asm ("strchr") __attribute_pure__ __nonnull ((1));
+extern __const char *strchr (__const char *__s, int __c)
+ __THROW __asm ("strchr") __attribute_pure__ __nonnull ((1));
+
+# ifdef __OPTIMIZE__
+__extern_always_inline char *
+strchr (char *__s, int __c) __THROW
+{
+ return __builtin_strchr (__s, __c);
+}
+
+__extern_always_inline __const char *
+strchr (__const char *__s, int __c) __THROW
+{
+ return __builtin_strchr (__s, __c);
+}
+# endif
+}
+#else
extern char *strchr (__const char *__s, int __c)
__THROW __attribute_pure__ __nonnull ((1));
+#endif
/* Find the last occurrence of C in S. */
+#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
+extern "C++"
+{
+extern char *strrchr (char *__s, int __c)
+ __THROW __asm ("strrchr") __attribute_pure__ __nonnull ((1));
+extern __const char *strrchr (__const char *__s, int __c)
+ __THROW __asm ("strrchr") __attribute_pure__ __nonnull ((1));
+
+# ifdef __OPTIMIZE__
+__extern_always_inline char *
+strrchr (char *__s, int __c) __THROW
+{
+ return __builtin_strrchr (__s, __c);
+}
+
+__extern_always_inline __const char *
+strrchr (__const char *__s, int __c) __THROW
+{
+ return __builtin_strrchr (__s, __c);
+}
+# endif
+}
+#else
extern char *strrchr (__const char *__s, int __c)
__THROW __attribute_pure__ __nonnull ((1));
+#endif
__END_NAMESPACE_STD
#ifdef __USE_GNU
/* This function is similar to `strchr'. But it returns a pointer to
the closing NUL byte in case C is not found in S. */
+# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
+extern "C++" char *strchrnul (char *__s, int __c)
+ __THROW __asm ("strchrnul") __attribute_pure__ __nonnull ((1));
+extern "C++" __const char *strchrnul (__const char *__s, int __c)
+ __THROW __asm ("strchrnul") __attribute_pure__ __nonnull ((1));
+# else
extern char *strchrnul (__const char *__s, int __c)
__THROW __attribute_pure__ __nonnull ((1));
+# endif
#endif
__BEGIN_NAMESPACE_STD
@@ -188,11 +288,60 @@ extern size_t strcspn (__const char *__s, __const char *__reject)
extern size_t strspn (__const char *__s, __const char *__accept)
__THROW __attribute_pure__ __nonnull ((1, 2));
/* Find the first occurrence in S of any character in ACCEPT. */
+#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
+extern "C++"
+{
+extern char *strpbrk (char *__s, __const char *__accept)
+ __THROW __asm ("strpbrk") __attribute_pure__ __nonnull ((1, 2));
+extern __const char *strpbrk (__const char *__s, __const char *__accept)
+ __THROW __asm ("strpbrk") __attribute_pure__ __nonnull ((1, 2));
+
+# ifdef __OPTIMIZE__
+__extern_always_inline char *
+strpbrk (char *__s, __const char *__accept) __THROW
+{
+ return __builtin_strpbrk (__s, __accept);
+}
+
+__extern_always_inline __const char *
+strpbrk (__const char *__s, __const char *__accept) __THROW
+{
+ return __builtin_strpbrk (__s, __accept);
+}
+# endif
+}
+#else
extern char *strpbrk (__const char *__s, __const char *__accept)
__THROW __attribute_pure__ __nonnull ((1, 2));
+#endif
/* Find the first occurrence of NEEDLE in HAYSTACK. */
+#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
+extern "C++"
+{
+extern char *strstr (char *__haystack, __const char *__needle)
+ __THROW __asm ("strstr") __attribute_pure__ __nonnull ((1, 2));
+extern __const char *strstr (__const char *__haystack,
+ __const char *__needle)
+ __THROW __asm ("strstr") __attribute_pure__ __nonnull ((1, 2));
+
+# ifdef __OPTIMIZE__
+__extern_always_inline char *
+strstr (char *__haystack, __const char *__needle) __THROW
+{
+ return __builtin_strstr (__haystack, __needle);
+}
+
+__extern_always_inline __const char *
+strstr (__const char *__haystack, __const char *__needle) __THROW
+{
+ return __builtin_strstr (__haystack, __needle);
+}
+# endif
+}
+#else
extern char *strstr (__const char *__haystack, __const char *__needle)
__THROW __attribute_pure__ __nonnull ((1, 2));
+#endif
/* Divide S into tokens separated by characters in DELIM. */
@@ -214,8 +363,16 @@ extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
#ifdef __USE_GNU
/* Similar to `strstr' but this function ignores the case of both strings. */
+# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
+extern "C++" char *strcasestr (char *__haystack, __const char *__needle)
+ __THROW __asm ("strcasestr") __attribute_pure__ __nonnull ((1, 2));
+extern "C++" __const char *strcasestr (__const char *__haystack,
+ __const char *__needle)
+ __THROW __asm ("strcasestr") __attribute_pure__ __nonnull ((1, 2));
+# else
extern char *strcasestr (__const char *__haystack, __const char *__needle)
__THROW __attribute_pure__ __nonnull ((1, 2));
+# endif
#endif
#ifdef __USE_GNU
@@ -243,7 +400,7 @@ extern size_t strlen (__const char *__s)
__THROW __attribute_pure__ __nonnull ((1));
__END_NAMESPACE_STD
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* Find the length of STRING, but scan at most MAXLEN characters.
If no '\0' terminator is found in that many characters, return MAXLEN. */
extern size_t strnlen (__const char *__string, size_t __maxlen)
@@ -283,7 +440,7 @@ extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
# endif
#endif
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* Translate error number to string according to the locale L. */
extern char *strerror_l (int __errnum, __locale_t __l) __THROW;
#endif
@@ -306,12 +463,60 @@ extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
__THROW __attribute_pure__ __nonnull ((1, 2));
/* Find the first occurrence of C in S (same as strchr). */
+# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
+extern "C++"
+{
+extern char *index (char *__s, int __c)
+ __THROW __asm ("index") __attribute_pure__ __nonnull ((1));
+extern __const char *index (__const char *__s, int __c)
+ __THROW __asm ("index") __attribute_pure__ __nonnull ((1));
+
+# if defined __OPTIMIZE__ && !defined __CORRECT_ISO_CPP_STRINGS_H_PROTO
+__extern_always_inline char *
+index (char *__s, int __c) __THROW
+{
+ return __builtin_index (__s, __c);
+}
+
+__extern_always_inline __const char *
+index (__const char *__s, int __c) __THROW
+{
+ return __builtin_index (__s, __c);
+}
+# endif
+}
+# else
extern char *index (__const char *__s, int __c)
__THROW __attribute_pure__ __nonnull ((1));
+# endif
/* Find the last occurrence of C in S (same as strrchr). */
+# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
+extern "C++"
+{
+extern char *rindex (char *__s, int __c)
+ __THROW __asm ("rindex") __attribute_pure__ __nonnull ((1));
+extern __const char *rindex (__const char *__s, int __c)
+ __THROW __asm ("rindex") __attribute_pure__ __nonnull ((1));
+
+# if defined __OPTIMIZE__ && !defined __CORRECT_ISO_CPP_STRINGS_H_PROTO
+__extern_always_inline char *
+rindex (char *__s, int __c) __THROW
+{
+ return __builtin_rindex (__s, __c);
+}
+
+__extern_always_inline __const char *
+rindex (__const char *__s, int __c) __THROW
+{
+ return __builtin_rindex (__s, __c);
+}
+#endif
+}
+# else
extern char *rindex (__const char *__s, int __c)
__THROW __attribute_pure__ __nonnull ((1));
+# endif
/* Return the position of the first bit set in I, or 0 if none are set.
The least-significant bit is position 1, the most-significant 32. */
@@ -356,11 +561,7 @@ extern char *strsep (char **__restrict __stringp,
__THROW __nonnull ((1, 2));
#endif
-#ifdef __USE_GNU
-/* Compare S1 and S2 as strings holding name & indices/version numbers. */
-extern int strverscmp (__const char *__s1, __const char *__s2)
- __THROW __attribute_pure__ __nonnull ((1, 2));
-
+#ifdef __USE_XOPEN2K8
/* Return a string describing the meaning of the signal number in SIG. */
extern char *strsignal (int __sig) __THROW;
@@ -378,6 +579,12 @@ extern char *__stpncpy (char *__restrict __dest,
extern char *stpncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n)
__THROW __nonnull ((1, 2));
+#endif
+
+#ifdef __USE_GNU
+/* Compare S1 and S2 as strings holding name & indices/version numbers. */
+extern int strverscmp (__const char *__s1, __const char *__s2)
+ __THROW __attribute_pure__ __nonnull ((1, 2));
/* Sautee STRING briskly. */
extern char *strfry (char *__string) __THROW __nonnull ((1));
@@ -390,7 +597,14 @@ extern void *memfrob (void *__s, size_t __n) __THROW __nonnull ((1));
declare the function if the `basename' macro is available (defined
in <libgen.h>) which makes the XPG version of this function
available. */
+# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
+extern "C++" char *basename (char *__filename)
+ __THROW __asm ("basename") __nonnull ((1));
+extern "C++" __const char *basename (__const char *__filename)
+ __THROW __asm ("basename") __nonnull ((1));
+# else
extern char *basename (__const char *__filename) __THROW __nonnull ((1));
+# endif
# endif
#endif
diff --git a/string/strings.h b/string/strings.h
index 3ba2b04c8e..2ab83caa06 100644
--- a/string/strings.h
+++ b/string/strings.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,92,96,97,99,2000,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1996,1997,1999,2000,2001,2009,2010
+ 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
@@ -28,8 +29,14 @@
# define __need_size_t
# include <stddef.h>
+/* Tell the caller that we provide correct C++ prototypes. */
+# if defined __cplusplus && __GNUC_PREREQ (4, 4)
+# define __CORRECT_ISO_CPP_STRINGS_H_PROTO
+# endif
+
__BEGIN_DECLS
+# if defined __USE_MISC || !defined __USE_XOPEN2K8
/* Compare N bytes of S1 and S2 (same as memcmp). */
extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
__THROW __attribute_pure__;
@@ -40,15 +47,68 @@ extern void bcopy (__const void *__src, void *__dest, size_t __n) __THROW;
/* Set N bytes of S to 0. */
extern void bzero (void *__s, size_t __n) __THROW;
-/* Return the position of the first bit set in I, or 0 if none are set.
- The least-significant bit is position 1, the most-significant 32. */
-extern int ffs (int __i) __THROW __attribute__ ((const));
-
/* Find the first occurrence of C in S (same as strchr). */
-extern char *index (__const char *__s, int __c) __THROW __attribute_pure__;
+# ifdef __CORRECT_ISO_CPP_STRINGS_H_PROTO
+extern "C++"
+{
+extern char *index (char *__s, int __c)
+ __THROW __asm ("index") __attribute_pure__ __nonnull ((1));
+extern __const char *index (__const char *__s, int __c)
+ __THROW __asm ("index") __attribute_pure__ __nonnull ((1));
+
+# if defined __OPTIMIZE__ && !defined __CORRECT_ISO_CPP_STRING_H_PROTO
+__extern_always_inline char *
+index (char *__s, int __c) __THROW
+{
+ return __builtin_index (__s, __c);
+}
+
+__extern_always_inline __const char *
+index (__const char *__s, int __c) __THROW
+{
+ return __builtin_index (__s, __c);
+}
+# endif
+}
+# else
+extern char *index (__const char *__s, int __c)
+ __THROW __attribute_pure__ __nonnull ((1));
+# endif
/* Find the last occurrence of C in S (same as strrchr). */
-extern char *rindex (__const char *__s, int __c) __THROW __attribute_pure__;
+# ifdef __CORRECT_ISO_CPP_STRINGS_H_PROTO
+extern "C++"
+{
+extern char *rindex (char *__s, int __c)
+ __THROW __asm ("rindex") __attribute_pure__ __nonnull ((1));
+extern __const char *rindex (__const char *__s, int __c)
+ __THROW __asm ("rindex") __attribute_pure__ __nonnull ((1));
+
+# if defined __OPTIMIZE__ && !defined __CORRECT_ISO_CPP_STRING_H_PROTO
+__extern_always_inline char *
+rindex (char *__s, int __c) __THROW
+{
+ return __builtin_rindex (__s, __c);
+}
+
+__extern_always_inline __const char *
+rindex (__const char *__s, int __c) __THROW
+{
+ return __builtin_rindex (__s, __c);
+}
+# endif
+}
+# else
+extern char *rindex (__const char *__s, int __c)
+ __THROW __attribute_pure__ __nonnull ((1));
+# endif
+# endif
+
+#if defined __USE_MISC || !defined __USE_XOPEN2K8 || defined __USE_XOPEN2K8XSI
+/* Return the position of the first bit set in I, or 0 if none are set.
+ The least-significant bit is position 1, the most-significant 32. */
+extern int ffs (int __i) __THROW __attribute__ ((const));
+#endif
/* Compare S1 and S2, ignoring case. */
extern int strcasecmp (__const char *__s1, __const char *__s2)
@@ -58,6 +118,23 @@ extern int strcasecmp (__const char *__s1, __const char *__s2)
extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
__THROW __attribute_pure__;
+#ifdef __USE_XOPEN2K8
+/* The following functions are equivalent to the both above but they
+ take the locale they use for the collation as an extra argument.
+ This is not standardsized but something like will come. */
+# include <xlocale.h>
+
+/* Again versions of a few functions which use the given locale instead
+ of the global one. */
+extern int strcasecmp_l (__const char *__s1, __const char *__s2,
+ __locale_t __loc)
+ __THROW __attribute_pure__ __nonnull ((1, 2, 3));
+
+extern int strncasecmp_l (__const char *__s1, __const char *__s2,
+ size_t __n, __locale_t __loc)
+ __THROW __attribute_pure__ __nonnull ((1, 2, 4));
+#endif
+
__END_DECLS
#endif /* string.h */
diff --git a/string/strlen.c b/string/strlen.c
index 9bc9db68f7..5f22ce9509 100644
--- a/string/strlen.c
+++ b/string/strlen.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1993, 1997, 2000, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1993,1997,2000,2003,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Torbjorn Granlund (tege@sics.se),
with help from Dan Sahlin (dan@sics.se);
@@ -32,7 +32,7 @@ strlen (str)
{
const char *char_ptr;
const unsigned long int *longword_ptr;
- unsigned long int longword, magic_bits, himagic, lomagic;
+ unsigned long int longword, himagic, lomagic;
/* Handle the first few characters by reading one character at a time.
Do this until CHAR_PTR is aligned on a longword boundary. */
@@ -56,14 +56,12 @@ strlen (str)
The 1-bits make sure that carries propagate to the next 0-bit.
The 0-bits provide holes for carries to fall into. */
- magic_bits = 0x7efefeffL;
himagic = 0x80808080L;
lomagic = 0x01010101L;
if (sizeof (longword) > 4)
{
/* 64-bit version of the magic. */
/* Do the shift in two steps to avoid a warning if long has 32 bits. */
- magic_bits = ((0x7efefefeL << 16) << 16) | 0xfefefeffL;
himagic = ((himagic << 16) << 16) | himagic;
lomagic = ((lomagic << 16) << 16) | lomagic;
}
@@ -75,53 +73,9 @@ strlen (str)
if *any of the four* bytes in the longword in question are zero. */
for (;;)
{
- /* We tentatively exit the loop if adding MAGIC_BITS to
- LONGWORD fails to change any of the hole bits of LONGWORD.
-
- 1) Is this safe? Will it catch all the zero bytes?
- Suppose there is a byte with all zeros. Any carry bits
- propagating from its left will fall into the hole at its
- least significant bit and stop. Since there will be no
- carry from its most significant bit, the LSB of the
- byte to the left will be unchanged, and the zero will be
- detected.
-
- 2) Is this worthwhile? Will it ignore everything except
- zero bytes? Suppose every byte of LONGWORD has a bit set
- somewhere. There will be a carry into bit 8. If bit 8
- is set, this will carry into bit 16. If bit 8 is clear,
- one of bits 9-15 must be set, so there will be a carry
- into bit 16. Similarly, there will be a carry into bit
- 24. If one of bits 24-30 is set, there will be a carry
- into bit 31, so all of the hole bits will be changed.
-
- The one misfire occurs when bits 24-30 are clear and bit
- 31 is set; in this case, the hole at bit 31 is not
- changed. If we had access to the processor carry flag,
- we could close this loophole by putting the fourth hole
- at bit 32!
-
- So it ignores everything except 128's, when they're aligned
- properly. */
-
longword = *longword_ptr++;
- if (
-#if 0
- /* Add MAGIC_BITS to LONGWORD. */
- (((longword + magic_bits)
-
- /* Set those bits that were unchanged by the addition. */
- ^ ~longword)
-
- /* Look at only the hole bits. If any of the hole bits
- are unchanged, most likely one of the bytes was a
- zero. */
- & ~magic_bits)
-#else
- ((longword - lomagic) & himagic)
-#endif
- != 0)
+ if (((longword - lomagic) & ~longword & himagic) != 0)
{
/* Which of the bytes was the zero? If none of them were, it was
a misfire; continue the search. */
diff --git a/string/strncmp.c b/string/strncmp.c
index 1adb2c0ebd..bb0cbfdf65 100644
--- a/string/strncmp.c
+++ b/string/strncmp.c
@@ -21,15 +21,16 @@
#undef strncmp
+#ifndef STRNCMP
+#define STRNCMP strncmp
+#endif
+
/* Compare no more than N characters of S1 and S2,
returning less than, equal to or greater than zero
if S1 is lexicographically less than, equal to or
greater than S2. */
int
-strncmp (s1, s2, n)
- const char *s1;
- const char *s2;
- size_t n;
+STRNCMP (const char *s1, const char *s2, size_t n)
{
unsigned reg_char c1 = '\0';
unsigned reg_char c2 = '\0';
@@ -70,4 +71,5 @@ strncmp (s1, s2, n)
return c1 - c2;
}
-libc_hidden_builtin_def (strncmp)
+
+libc_hidden_builtin_def (STRNCMP)
diff --git a/string/strncpy.c b/string/strncpy.c
index f32612e1cf..2274d7d31e 100644
--- a/string/strncpy.c
+++ b/string/strncpy.c
@@ -21,11 +21,12 @@
#undef strncpy
+#ifndef STRNCPY
+#define STRNCPY strncpy
+#endif
+
char *
-strncpy (s1, s2, n)
- char *s1;
- const char *s2;
- size_t n;
+STRNCPY (char *s1, const char *s2, size_t n)
{
reg_char c;
char *s = s1;
diff --git a/string/strstr.c b/string/strstr.c
index a9dc312992..ef45f82758 100644
--- a/string/strstr.c
+++ b/string/strstr.c
@@ -1,5 +1,6 @@
/* Return the offset of one string within another.
- Copyright (C) 1994,1996,1997,2000,2001,2003,2008 Free Software Foundation, Inc.
+ Copyright (C) 1994,1996,1997,2000,2001,2003,2008,2009
+ 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
@@ -40,11 +41,15 @@
#undef strstr
+#ifndef STRSTR
+#define STRSTR strstr
+#endif
+
/* Return the first occurrence of NEEDLE in HAYSTACK. Return HAYSTACK
if NEEDLE is empty, otherwise NULL if NEEDLE is not found in
HAYSTACK. */
char *
-strstr (const char *haystack_start, const char *needle_start)
+STRSTR (const char *haystack_start, const char *needle_start)
{
const char *haystack = haystack_start;
const char *needle = needle_start;
diff --git a/string/strverscmp.c b/string/strverscmp.c
index 8efac30383..7c5be8dd95 100644
--- a/string/strverscmp.c
+++ b/string/strverscmp.c
@@ -1,5 +1,5 @@
/* Compare strings while treating digits characters numerically.
- Copyright (C) 1997, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2002, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
@@ -18,15 +18,16 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <stdint.h>
#include <string.h>
#include <ctype.h>
/* states: S_N: normal, S_I: comparing integral part, S_F: comparing
fractionnal parts, S_Z: idem but with leading Zeroes only */
#define S_N 0x0
-#define S_I 0x4
-#define S_F 0x8
-#define S_Z 0xC
+#define S_I 0x3
+#define S_F 0x6
+#define S_Z 0x9
/* result_type: CMP: return diff; LEN: compare using len_diff/diff */
#define CMP 2
@@ -45,53 +46,49 @@ __strverscmp (s1, s2)
{
const unsigned char *p1 = (const unsigned char *) s1;
const unsigned char *p2 = (const unsigned char *) s2;
- unsigned char c1, c2;
- int state;
- int diff;
- /* Symbol(s) 0 [1-9] others (padding)
- Transition (10) 0 (01) d (00) x (11) - */
- static const unsigned int next_state[] =
+ /* Symbol(s) 0 [1-9] others
+ Transition (10) 0 (01) d (00) x */
+ static const uint8_t next_state[] =
{
- /* state x d 0 - */
- /* S_N */ S_N, S_I, S_Z, S_N,
- /* S_I */ S_N, S_I, S_I, S_I,
- /* S_F */ S_N, S_F, S_F, S_F,
- /* S_Z */ S_N, S_F, S_Z, S_Z
+ /* state x d 0 */
+ /* S_N */ S_N, S_I, S_Z,
+ /* S_I */ S_N, S_I, S_I,
+ /* S_F */ S_N, S_F, S_F,
+ /* S_Z */ S_N, S_F, S_Z
};
- static const int result_type[] =
+ static const int8_t result_type[] =
{
- /* state x/x x/d x/0 x/- d/x d/d d/0 d/-
- 0/x 0/d 0/0 0/- -/x -/d -/0 -/- */
-
- /* S_N */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
- CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
- /* S_I */ CMP, -1, -1, CMP, +1, LEN, LEN, CMP,
- +1, LEN, LEN, CMP, CMP, CMP, CMP, CMP,
- /* S_F */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
- CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
- /* S_Z */ CMP, +1, +1, CMP, -1, CMP, CMP, CMP,
- -1, CMP, CMP, CMP
+ /* state x/x x/d x/0 d/x d/d d/0 0/x 0/d 0/0 */
+
+ /* S_N */ CMP, CMP, CMP, CMP, LEN, CMP, CMP, CMP, CMP,
+ /* S_I */ CMP, -1, -1, +1, LEN, LEN, +1, LEN, LEN,
+ /* S_F */ CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
+ /* S_Z */ CMP, +1, +1, -1, CMP, CMP, -1, CMP, CMP
};
if (p1 == p2)
return 0;
- c1 = *p1++;
- c2 = *p2++;
+ unsigned char c1 = *p1++;
+ unsigned char c2 = *p2++;
/* Hint: '0' is a digit too. */
- state = S_N | ((c1 == '0') + (isdigit (c1) != 0));
+ int state = S_N + ((c1 == '0') + (isdigit (c1) != 0));
- while ((diff = c1 - c2) == 0 && c1 != '\0')
+ int diff;
+ while ((diff = c1 - c2) == 0)
{
+ if (c1 == '\0')
+ return diff;
+
state = next_state[state];
c1 = *p1++;
c2 = *p2++;
- state |= (c1 == '0') + (isdigit (c1) != 0);
+ state += (c1 == '0') + (isdigit (c1) != 0);
}
- state = result_type[state << 2 | (((c2 == '0') + (isdigit (c2) != 0)))];
+ state = result_type[state * 3 + (((c2 == '0') + (isdigit (c2) != 0)))];
switch (state)
{
diff --git a/string/strxfrm_l.c b/string/strxfrm_l.c
index 20f2f149bd..351b426541 100644
--- a/string/strxfrm_l.c
+++ b/string/strxfrm_l.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 2002, 2004, 2005, 2006
- Free Software Foundation, Inc.
+/* Copyright (C) 1995-1997,2002,2004-2006,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Ulrich Drepper <drepper@gnu.org>, 1995.
@@ -86,7 +85,7 @@ utf8_encode (char *buf, int val)
size_t
STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l)
{
- struct locale_data *current = l->__locales[LC_COLLATE];
+ struct __locale_data *current = l->__locales[LC_COLLATE];
uint_fast32_t nrules = current->values[_NL_ITEM_INDEX (_NL_COLLATE_NRULES)].word;
/* We don't assign the following values right away since it might be
unnecessary in case there are no rules. */
@@ -137,7 +136,7 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l)
if (srclen == 0)
{
if (n != 0)
- *dest = L('\0');
+ *dest = L('\0');
return 0;
}
diff --git a/string/test-memchr.c b/string/test-memchr.c
index c233ead5dd..cd9a01e3da 100644
--- a/string/test-memchr.c
+++ b/string/test-memchr.c
@@ -1,5 +1,5 @@
/* Test and measure memchr functions.
- Copyright (C) 1999, 2002, 2003, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Jakub Jelinek <jakub@redhat.com>, 1999.
@@ -144,7 +144,12 @@ do_random_tests (void)
}
if (pos < len)
- result = (char *) (p + pos + align);
+ {
+ size_t r = random ();
+ if ((r & 31) == 0)
+ len = ~(uintptr_t) (p + align) - ((r >> 5) & 31);
+ result = (char *) (p + pos + align);
+ }
else
result = NULL;
diff --git a/string/tst-svc.expect b/string/tst-svc.expect
index bb54a2ace0..6240112772 100644
--- a/string/tst-svc.expect
+++ b/string/tst-svc.expect
@@ -6,6 +6,8 @@
01a
0
0a
+2.6.20
+2.6.21
2.8
2.8-0.4
20
diff --git a/string/tst-svc.input b/string/tst-svc.input
index fbe06d2c87..247b1c48f9 100644
--- a/string/tst-svc.input
+++ b/string/tst-svc.input
@@ -6,6 +6,7 @@
01a
00a
000
+2.6.21
20
212
21
@@ -18,6 +19,7 @@ foo
foo-3.0.0
foo-3.0.1
foo-0.5
+2.6.20
foo-0.4b
foo-3.10
foo-3.2
diff --git a/string/tst-svc2.c b/string/tst-svc2.c
new file mode 100644
index 0000000000..12c88aa2b8
--- /dev/null
+++ b/string/tst-svc2.c
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+static struct
+{
+ const char *str1;
+ const char *str2;
+} tests[] =
+ {
+ { "B0075022800016.gbp.corp.com", "B007502280067.gbp.corp.com" },
+ { "B0075022800016.gbp.corp.com", "B007502357019.GBP.CORP.COM" },
+ { "B007502280067.gbp.corp.com", "B007502357019.GBP.CORP.COM" }
+ };
+#define ntests (sizeof (tests) / sizeof (tests[0]))
+
+
+int
+compare (const char *str1, const char *str2, int exp)
+{
+ int c = strverscmp (str1, str2);
+ if (c != 0)
+ c /= abs (c);
+ return c != exp;
+}
+
+
+static int
+do_test (void)
+{
+ int res = 0;
+ for (int i = 0; i < ntests; ++i)
+ {
+ if (compare (tests[i].str1, tests[i].str2, -1))
+ {
+ printf ("FAIL: \"%s\" > \"%s\"\n", tests[i].str1, tests[i].str2);
+ res = 1;
+ }
+ if (compare (tests[i].str2, tests[i].str1, +1))
+ {
+ printf ("FAIL: \"%s\" > \"%s\"\n", tests[i].str2, tests[i].str1);
+ res = 1;
+ }
+ char *copy1 = strdupa (tests[i].str1);
+ if (compare (tests[i].str1, copy1, 0))
+ {
+ printf ("FAIL: \"%s\" != \"%s\"\n", tests[i].str1, copy1);
+ res = 1;
+ }
+ char *copy2 = strdupa (tests[i].str2);
+ if (compare (tests[i].str2, copy2, 0))
+ {
+ printf ("FAIL: \"%s\" != \"%s\"\n", tests[i].str2, copy2);
+ res = 1;
+ }
+ }
+ return res;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/sunrpc/.cvsignore b/sunrpc/.cvsignore
deleted file mode 100644
index b2e79b502b..0000000000
--- a/sunrpc/.cvsignore
+++ /dev/null
@@ -1,8 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-
-rpcsrc-4.0
-distinfo
diff --git a/sunrpc/auth_des.c b/sunrpc/auth_des.c
index a76f0278ce..acd8eb4e30 100644
--- a/sunrpc/auth_des.c
+++ b/sunrpc/auth_des.c
@@ -1,33 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
- * Copyright (c) 1988 by Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* auth_des.c, client-side implementation of DES authentication
diff --git a/sunrpc/auth_none.c b/sunrpc/auth_none.c
index f459520a2c..b78f1e1289 100644
--- a/sunrpc/auth_none.c
+++ b/sunrpc/auth_none.c
@@ -1,33 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* auth_none.c
diff --git a/sunrpc/auth_unix.c b/sunrpc/auth_unix.c
index 734eb088f3..3a371c7f4b 100644
--- a/sunrpc/auth_unix.c
+++ b/sunrpc/auth_unix.c
@@ -1,33 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* auth_unix.c, Implements UNIX style authentication parameters.
diff --git a/sunrpc/authdes_prot.c b/sunrpc/authdes_prot.c
index a8891088d1..392e0ffdfe 100644
--- a/sunrpc/authdes_prot.c
+++ b/sunrpc/authdes_prot.c
@@ -1,33 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
- * Copyright (c) 1988 by Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* authdes_prot.c, XDR routines for DES authentication
diff --git a/sunrpc/authuxprot.c b/sunrpc/authuxprot.c
index 60d3ddbbf5..979cd6836c 100644
--- a/sunrpc/authuxprot.c
+++ b/sunrpc/authuxprot.c
@@ -1,33 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* authunix_prot.c
diff --git a/sunrpc/bindrsvprt.c b/sunrpc/bindrsvprt.c
index 003c3dfd46..22aaecd1ac 100644
--- a/sunrpc/bindrsvprt.c
+++ b/sunrpc/bindrsvprt.c
@@ -1,33 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (c) 1987 by Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
- * Copyright (c) 1987 by Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <errno.h>
diff --git a/sunrpc/clnt_gen.c b/sunrpc/clnt_gen.c
index c7468f4d93..cbb4dd7754 100644
--- a/sunrpc/clnt_gen.c
+++ b/sunrpc/clnt_gen.c
@@ -1,33 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1987, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
- * Copyright (C) 1987, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <alloca.h>
diff --git a/sunrpc/clnt_perr.c b/sunrpc/clnt_perr.c
index c15796fa0e..7c860a31a3 100644
--- a/sunrpc/clnt_perr.c
+++ b/sunrpc/clnt_perr.c
@@ -1,41 +1,34 @@
-/* @(#)clnt_perror.c 2.1 88/07/29 4.0 RPCSRC */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)clnt_perror.c 1.15 87/10/07 Copyr 1984 Sun Micro";
-#endif
-
/*
* clnt_perror.c
*
* Copyright (C) 1984, Sun Microsystems, Inc.
*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
#include <string.h>
diff --git a/sunrpc/clnt_raw.c b/sunrpc/clnt_raw.c
index 44ea03efb7..d94032df78 100644
--- a/sunrpc/clnt_raw.c
+++ b/sunrpc/clnt_raw.c
@@ -1,40 +1,34 @@
-/* @(#)clnt_raw.c 2.2 88/08/01 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
+ * clnt_raw.c
*
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)clnt_raw.c 1.22 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
-/*
- * clnt_raw.c
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Memory based rpc for simple testing and timing.
* Interface to create an rpc client and server in the same process.
@@ -57,7 +51,11 @@ struct clntraw_private_s
CLIENT client_object;
XDR xdr_stream;
char _raw_buf[UDPMSGSIZE];
- char mashl_callmsg[MCALL_MSG_SIZE];
+ union
+ {
+ char msg[MCALL_MSG_SIZE];
+ u_long rm_xid;
+ } mashl_callmsg;
u_int mcnt;
};
#ifdef _RPC_THREAD_SAFE_
@@ -111,7 +109,8 @@ clntraw_create (u_long prog, u_long vers)
call_msg.rm_call.cb_rpcvers = RPC_MSG_VERSION;
call_msg.rm_call.cb_prog = prog;
call_msg.rm_call.cb_vers = vers;
- INTUSE(xdrmem_create) (xdrs, clp->mashl_callmsg, MCALL_MSG_SIZE, XDR_ENCODE);
+ INTUSE(xdrmem_create) (xdrs, clp->mashl_callmsg.msg, MCALL_MSG_SIZE,
+ XDR_ENCODE);
if (!INTUSE(xdr_callhdr) (xdrs, &call_msg))
{
perror (_ ("clnt_raw.c: fatal header serialization error"));
@@ -156,8 +155,11 @@ call_again:
*/
xdrs->x_op = XDR_ENCODE;
XDR_SETPOS (xdrs, 0);
- ((struct rpc_msg *) clp->mashl_callmsg)->rm_xid++;
- if ((!XDR_PUTBYTES (xdrs, clp->mashl_callmsg, clp->mcnt)) ||
+ /* Just checking the union definition to access rm_xid is correct. */
+ if (offsetof (struct rpc_msg, rm_xid) != 0)
+ abort ();
+ clp->mashl_callmsg.rm_xid++;
+ if ((!XDR_PUTBYTES (xdrs, clp->mashl_callmsg.msg, clp->mcnt)) ||
(!XDR_PUTLONG (xdrs, (long *) &proc)) ||
(!AUTH_MARSHALL (h->cl_auth, xdrs)) ||
(!(*xargs) (xdrs, argsp)))
diff --git a/sunrpc/clnt_simp.c b/sunrpc/clnt_simp.c
index 631ec8afbc..11cdf8d7e5 100644
--- a/sunrpc/clnt_simp.c
+++ b/sunrpc/clnt_simp.c
@@ -1,41 +1,35 @@
-/* @(#)clnt_simple.c 2.2 88/08/01 4.0 RPCSRC */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)clnt_simple.c 1.35 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
/*
* clnt_simple.c
* Simplified front end to rpc.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <alloca.h>
diff --git a/sunrpc/clnt_tcp.c b/sunrpc/clnt_tcp.c
index 6825ca57ee..1552be87ad 100644
--- a/sunrpc/clnt_tcp.c
+++ b/sunrpc/clnt_tcp.c
@@ -1,40 +1,34 @@
-/* @(#)clnt_tcp.c 2.2 88/08/01 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * clnt_tcp.c, Implements a TCP/IP based, client side RPC.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)clnt_tcp.c 1.37 87/10/05 Copyr 1984 Sun Micro";
-#endif
-
-/*
- * clnt_tcp.c, Implements a TCP/IP based, client side RPC.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* TCP based RPC supports 'batched calls'.
* A sequence of calls may be batched-up in a send buffer. The rpc call
diff --git a/sunrpc/clnt_udp.c b/sunrpc/clnt_udp.c
index 548c987e69..62ee3a1c99 100644
--- a/sunrpc/clnt_udp.c
+++ b/sunrpc/clnt_udp.c
@@ -1,40 +1,34 @@
-/* @(#)clnt_udp.c 2.2 88/08/01 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * clnt_udp.c, Implements a UDP/IP based, client side RPC.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)clnt_udp.c 1.39 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
-/*
- * clnt_udp.c, Implements a UDP/IP based, client side RPC.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
diff --git a/sunrpc/clnt_unix.c b/sunrpc/clnt_unix.c
index 4107c62294..db3ea312af 100644
--- a/sunrpc/clnt_unix.c
+++ b/sunrpc/clnt_unix.c
@@ -1,36 +1,34 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * clnt_unix.c, Implements a TCP/IP based, client side RPC.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * clnt_unix.c, Implements a TCP/IP based, client side RPC.
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* TCP based RPC supports 'batched calls'.
* A sequence of calls may be batched-up in a send buffer. The rpc call
diff --git a/sunrpc/create_xid.c b/sunrpc/create_xid.c
index 4e76918644..c247568cee 100644
--- a/sunrpc/create_xid.c
+++ b/sunrpc/create_xid.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (c) 1998, 2000, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998.
@@ -27,7 +27,7 @@
__libc_lock_define_initialized (static, createxid_lock)
-static int is_initialized;
+static pid_t is_initialized;
static struct drand48_data __rpc_lrand48_data;
unsigned long
@@ -37,13 +37,15 @@ _create_xid (void)
__libc_lock_lock (createxid_lock);
- if (!is_initialized)
+ pid_t pid = getpid ();
+ if (is_initialized != pid)
{
struct timeval now;
__gettimeofday (&now, (struct timezone *) 0);
- __srand48_r (now.tv_sec ^ now.tv_usec, &__rpc_lrand48_data);
- is_initialized = 1;
+ __srand48_r (now.tv_sec ^ now.tv_usec ^ pid,
+ &__rpc_lrand48_data);
+ is_initialized = pid;
}
lrand48_r (&__rpc_lrand48_data, &res);
diff --git a/sunrpc/des_crypt.c b/sunrpc/des_crypt.c
index 87389b47ce..b66589bdbb 100644
--- a/sunrpc/des_crypt.c
+++ b/sunrpc/des_crypt.c
@@ -1,37 +1,33 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSID)
-static char sccsid[] = "@(#)des_crypt.c 2.2 88/08/10 4.0 RPCSRC; from 1.13 88/02/08 SMI";
-#endif
-/*
* des_crypt.c, DES encryption library routines
* Copyright (C) 1986, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/types.h>
@@ -80,7 +76,7 @@ common_crypt (char *key, char *buf, register unsigned len,
desdev = mode & DES_DEVMASK;
COPY8 (key, desp->des_key);
- /*
+ /*
* software
*/
if (!_des_crypt (buf, len, desp))
diff --git a/sunrpc/des_soft.c b/sunrpc/des_soft.c
index 521d97c796..4573d9dda0 100644
--- a/sunrpc/des_soft.c
+++ b/sunrpc/des_soft.c
@@ -2,32 +2,32 @@
static char sccsid[] = "@(#)des_soft.c 2.2 88/08/10 4.0 RPCSRC; from 1.13 88/02/08 SMI";
#endif
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <rpc/des_crypt.h>
diff --git a/sunrpc/get_myaddr.c b/sunrpc/get_myaddr.c
index 4449c53c06..7f200059ca 100644
--- a/sunrpc/get_myaddr.c
+++ b/sunrpc/get_myaddr.c
@@ -1,41 +1,35 @@
-/* @(#)get_myaddress.c 2.1 88/07/29 4.0 RPCSRC */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)get_myaddress.c 1.4 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
/*
* get_myaddress.c
*
* Get client's IP address via ioctl. This avoids using the yellowpages.
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <rpc/types.h>
diff --git a/sunrpc/getrpcport.c b/sunrpc/getrpcport.c
index a8f1326f08..7786701671 100644
--- a/sunrpc/getrpcport.c
+++ b/sunrpc/getrpcport.c
@@ -1,38 +1,32 @@
-/* @(#)getrpcport.c 2.1 88/07/29 4.0 RPCSRC */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)getrpcport.c 1.3 87/08/11 SMI";
-#endif
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (c) 1985 by Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * Copyright (c) 1985 by Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <alloca.h>
diff --git a/sunrpc/key_call.c b/sunrpc/key_call.c
index 319d8017e8..3ad066a0dd 100644
--- a/sunrpc/key_call.c
+++ b/sunrpc/key_call.c
@@ -1,33 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
- * Copyright (c) 1988 by Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* The original source is from the RPCSRC 4.0 package from Sun Microsystems.
diff --git a/sunrpc/key_prot.c b/sunrpc/key_prot.c
index 63d2538957..b2eb233846 100644
--- a/sunrpc/key_prot.c
+++ b/sunrpc/key_prot.c
@@ -1,36 +1,32 @@
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
+/* Copyright (c) 1990, 1991 Sun Microsystems, Inc.
*
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if 0
-#pragma ident "@(#)key_prot.x 1.7 94/04/29 SMI"
-#endif
-
-/* Copyright (c) 1990, 1991 Sun Microsystems, Inc. */
#include "rpc/key_prot.h"
diff --git a/sunrpc/openchild.c b/sunrpc/openchild.c
index 29ddfa6b75..defd93a683 100644
--- a/sunrpc/openchild.c
+++ b/sunrpc/openchild.c
@@ -1,34 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * Copyright (c) 1988 by Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
diff --git a/sunrpc/pm_getmaps.c b/sunrpc/pm_getmaps.c
index b21e7ea85c..983b2bae8a 100644
--- a/sunrpc/pm_getmaps.c
+++ b/sunrpc/pm_getmaps.c
@@ -1,42 +1,36 @@
-/* @(#)pmap_getmaps.c 2.2 88/08/01 4.0 RPCSRC */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)pmap_getmaps.c 1.10 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
/*
* pmap_getmap.c
* Client interface to pmap rpc service.
* contains pmap_getmaps, which is only tcp service involved
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <rpc/rpc.h>
diff --git a/sunrpc/pm_getport.c b/sunrpc/pm_getport.c
index 2d309841f3..e37f6e73e6 100644
--- a/sunrpc/pm_getport.c
+++ b/sunrpc/pm_getport.c
@@ -1,41 +1,35 @@
-/* @(#)pmap_getport.c 2.2 88/08/01 4.0 RPCSRC */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)pmap_getport.c 1.9 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
/*
* pmap_getport.c
* Client interface to pmap rpc service.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdbool.h>
diff --git a/sunrpc/pmap_clnt.c b/sunrpc/pmap_clnt.c
index 3e42960893..64a53b67de 100644
--- a/sunrpc/pmap_clnt.c
+++ b/sunrpc/pmap_clnt.c
@@ -1,33 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* pmap_clnt.c
diff --git a/sunrpc/pmap_prot.c b/sunrpc/pmap_prot.c
index 3db27a90a4..cc574567e6 100644
--- a/sunrpc/pmap_prot.c
+++ b/sunrpc/pmap_prot.c
@@ -1,41 +1,35 @@
-/* @(#)pmap_prot.c 2.1 88/07/29 4.0 RPCSRC */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)pmap_prot.c 1.17 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
/*
* pmap_prot.c
* Protocol for the local binder service, or pmap.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <rpc/types.h>
diff --git a/sunrpc/pmap_prot2.c b/sunrpc/pmap_prot2.c
index 9dd4925a19..43e62e35ee 100644
--- a/sunrpc/pmap_prot2.c
+++ b/sunrpc/pmap_prot2.c
@@ -1,41 +1,35 @@
-/* @(#)pmap_prot2.c 2.1 88/07/29 4.0 RPCSRC */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)pmap_prot2.c 1.3 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
/*
* pmap_prot2.c
* Protocol for the local binder service, or pmap.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <rpc/types.h>
diff --git a/sunrpc/pmap_rmt.c b/sunrpc/pmap_rmt.c
index e068848919..15a9591199 100644
--- a/sunrpc/pmap_rmt.c
+++ b/sunrpc/pmap_rmt.c
@@ -1,42 +1,36 @@
-/* @(#)pmap_rmt.c 2.2 88/08/01 4.0 RPCSRC */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)pmap_rmt.c 1.21 87/08/27 Copyr 1984 Sun Micro";
-#endif
-
/*
* pmap_rmt.c
* Client interface to pmap rpc service.
* remote call and broadcast service
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <unistd.h>
diff --git a/sunrpc/rpc/auth.h b/sunrpc/rpc/auth.h
index 7c931d8873..0c2663917b 100644
--- a/sunrpc/rpc/auth.h
+++ b/sunrpc/rpc/auth.h
@@ -1,37 +1,34 @@
-/* @(#)auth.h 2.3 88/08/07 4.0 RPCSRC; from 1.17 88/02/08 SMI */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * auth.h, Authentication interface.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * auth.h, Authentication interface.
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The data structures are completely opaque to the client. The client
* is required to pass a AUTH * to routines that create rpc
diff --git a/sunrpc/rpc/auth_unix.h b/sunrpc/rpc/auth_unix.h
index 424661d9ce..268c2b59ed 100644
--- a/sunrpc/rpc/auth_unix.h
+++ b/sunrpc/rpc/auth_unix.h
@@ -1,38 +1,34 @@
-/* @(#)auth_unix.h 2.2 88/07/29 4.0 RPCSRC; from 1.8 88/02/08 SMI */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * auth_unix.h, Protocol for UNIX style authentication parameters for RPC
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/* @(#)auth_unix.h 1.5 86/07/16 SMI */
-
-/*
- * auth_unix.h, Protocol for UNIX style authentication parameters for RPC
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
diff --git a/sunrpc/rpc/clnt.h b/sunrpc/rpc/clnt.h
index cf271c5c13..5b03b86c0f 100644
--- a/sunrpc/rpc/clnt.h
+++ b/sunrpc/rpc/clnt.h
@@ -1,37 +1,34 @@
-/* @(#)clnt.h 2.1 88/07/29 4.0 RPCSRC; from 1.31 88/02/08 SMI*/
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * clnt.h - Client side remote procedure call interface.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * clnt.h - Client side remote procedure call interface.
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _RPC_CLNT_H
@@ -405,7 +402,7 @@ extern char *clnt_sperrno (enum clnt_stat __num) __THROW; /* string */
* get the port number on the host for the rpc program,version and proto
*/
extern int getrpcport (__const char * __host, u_long __prognum,
- u_long __versnum, u_int proto) __THROW;
+ u_long __versnum, u_int __proto) __THROW;
/*
* get the local host's IP address without consulting
diff --git a/sunrpc/rpc/des_crypt.h b/sunrpc/rpc/des_crypt.h
index 6a65887d3b..6e843985bb 100644
--- a/sunrpc/rpc/des_crypt.h
+++ b/sunrpc/rpc/des_crypt.h
@@ -3,34 +3,33 @@
*
* des_crypt.h, des library routine interface
* Copyright (C) 1986, Sun Microsystems, Inc.
- */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __DES_CRYPT_H__
diff --git a/sunrpc/rpc/key_prot.h b/sunrpc/rpc/key_prot.h
index 3e2eb7208e..16f03ff3c4 100644
--- a/sunrpc/rpc/key_prot.h
+++ b/sunrpc/rpc/key_prot.h
@@ -8,40 +8,37 @@
#include <rpc/rpc.h>
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+/* Copyright (c) 1990, 1991 Sun Microsystems, Inc.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if 0
-#pragma ident "@(#)key_prot.x 1.7 94/04/29 SMI"
-#endif
-/* Copyright (c) 1990, 1991 Sun Microsystems, Inc. */
-/*
+/*
* Compiled from key_prot.x using rpcgen.
* DO NOT EDIT THIS FILE!
* This is NOT source code!
@@ -60,33 +57,33 @@ enum keystatus {
KEY_SYSTEMERR = 3,
};
typedef enum keystatus keystatus;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_keystatus(XDR *, keystatus*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_keystatus(XDR *, keystatus*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_keystatus();
-#endif /* Old Style C */
+#endif /* Old Style C */
typedef char keybuf[HEXKEYBYTES];
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_keybuf(XDR *, keybuf);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_keybuf(XDR *, keybuf);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_keybuf();
-#endif /* Old Style C */
+#endif /* Old Style C */
typedef char *netnamestr;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_netnamestr(XDR *, netnamestr*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_netnamestr(XDR *, netnamestr*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_netnamestr();
-#endif /* Old Style C */
+#endif /* Old Style C */
struct cryptkeyarg {
@@ -94,13 +91,13 @@ struct cryptkeyarg {
des_block deskey;
};
typedef struct cryptkeyarg cryptkeyarg;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_cryptkeyarg(XDR *, cryptkeyarg*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_cryptkeyarg(XDR *, cryptkeyarg*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_cryptkeyarg();
-#endif /* Old Style C */
+#endif /* Old Style C */
struct cryptkeyarg2 {
@@ -109,13 +106,13 @@ struct cryptkeyarg2 {
des_block deskey;
};
typedef struct cryptkeyarg2 cryptkeyarg2;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_cryptkeyarg2(XDR *, cryptkeyarg2*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_cryptkeyarg2(XDR *, cryptkeyarg2*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_cryptkeyarg2();
-#endif /* Old Style C */
+#endif /* Old Style C */
struct cryptkeyres {
@@ -125,13 +122,13 @@ struct cryptkeyres {
} cryptkeyres_u;
};
typedef struct cryptkeyres cryptkeyres;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_cryptkeyres(XDR *, cryptkeyres*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_cryptkeyres(XDR *, cryptkeyres*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_cryptkeyres();
-#endif /* Old Style C */
+#endif /* Old Style C */
#define MAXGIDS 16
@@ -144,13 +141,13 @@ struct unixcred {
} gids;
};
typedef struct unixcred unixcred;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_unixcred(XDR *, unixcred*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_unixcred(XDR *, unixcred*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_unixcred();
-#endif /* Old Style C */
+#endif /* Old Style C */
struct getcredres {
@@ -160,13 +157,13 @@ struct getcredres {
} getcredres_u;
};
typedef struct getcredres getcredres;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_getcredres(XDR *, getcredres*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_getcredres(XDR *, getcredres*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_getcredres();
-#endif /* Old Style C */
+#endif /* Old Style C */
struct key_netstarg {
@@ -175,13 +172,13 @@ struct key_netstarg {
netnamestr st_netname;
};
typedef struct key_netstarg key_netstarg;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_key_netstarg(XDR *, key_netstarg*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_key_netstarg(XDR *, key_netstarg*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_key_netstarg();
-#endif /* Old Style C */
+#endif /* Old Style C */
struct key_netstres {
@@ -191,13 +188,13 @@ struct key_netstres {
} key_netstres_u;
};
typedef struct key_netstres key_netstres;
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" bool_t xdr_key_netstres(XDR *, key_netstres*);
-#elif __STDC__
+#elif __STDC__
extern bool_t xdr_key_netstres(XDR *, key_netstres*);
-#else /* Old Style C */
+#else /* Old Style C */
bool_t xdr_key_netstres();
-#endif /* Old Style C */
+#endif /* Old Style C */
#ifndef opaque
@@ -242,7 +239,7 @@ extern des_block * key_gen_1_svc(void *, struct svc_req *);
extern getcredres * key_getcred_1(netnamestr *, CLIENT *);
extern getcredres * key_getcred_1_svc(netnamestr *, struct svc_req *);
-#else /* Old Style C */
+#else /* Old Style C */
#define KEY_SET ((u_long)1)
extern keystatus * key_set_1();
extern keystatus * key_set_1_svc();
@@ -258,7 +255,7 @@ extern des_block * key_gen_1_svc();
#define KEY_GETCRED ((u_long)5)
extern getcredres * key_getcred_1();
extern getcredres * key_getcred_1_svc();
-#endif /* Old Style C */
+#endif /* Old Style C */
#define KEY_VERS2 ((u_long)2)
#ifdef __cplusplus
@@ -315,7 +312,7 @@ extern key_netstres * key_net_get_2_svc(void *, struct svc_req *);
extern cryptkeyres * key_get_conv_2(opaque *, CLIENT *);
extern cryptkeyres * key_get_conv_2_svc(opaque *, struct svc_req *);
-#else /* Old Style C */
+#else /* Old Style C */
extern keystatus * key_set_2();
extern keystatus * key_set_2_svc();
extern cryptkeyres * key_encrypt_2();
@@ -341,6 +338,6 @@ extern key_netstres * key_net_get_2_svc();
#define KEY_GET_CONV ((u_long)10)
extern cryptkeyres * key_get_conv_2();
extern cryptkeyres * key_get_conv_2_svc();
-#endif /* Old Style C */
+#endif /* Old Style C */
#endif /* !_KEY_PROT_H_RPCGEN */
diff --git a/sunrpc/rpc/netdb.h b/sunrpc/rpc/netdb.h
index 539d8c3263..bcb0de29b1 100644
--- a/sunrpc/rpc/netdb.h
+++ b/sunrpc/rpc/netdb.h
@@ -1,31 +1,31 @@
/* @(#)netdb.h 2.1 88/07/29 3.9 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/* @(#)rpc.h 1.8 87/07/24 SMI */
diff --git a/sunrpc/rpc/pmap_clnt.h b/sunrpc/rpc/pmap_clnt.h
index 1b1c452915..7564f992e8 100644
--- a/sunrpc/rpc/pmap_clnt.h
+++ b/sunrpc/rpc/pmap_clnt.h
@@ -1,38 +1,35 @@
-/* @(#)pmap_clnt.h 2.1 88/07/29 4.0 RPCSRC; from 1.11 88/02/08 SMI */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
/*
* pmap_clnt.h
* Supplies C routines to get to portmap services.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _RPC_PMAP_CLNT_H
@@ -45,7 +42,7 @@
__BEGIN_DECLS
-typedef bool_t (*resultproc_t) (caddr_t resp, struct sockaddr_in *raddr);
+typedef bool_t (*resultproc_t) (caddr_t __resp, struct sockaddr_in *__raddr);
/*
* Usage:
diff --git a/sunrpc/rpc/pmap_prot.h b/sunrpc/rpc/pmap_prot.h
index cd64e36de5..39d6176e32 100644
--- a/sunrpc/rpc/pmap_prot.h
+++ b/sunrpc/rpc/pmap_prot.h
@@ -1,38 +1,35 @@
-/* @(#)pmap_prot.h 2.1 88/07/29 4.0 RPCSRC; from 1.14 88/02/08 SMI */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
/*
* pmap_prot.h
* Protocol for the local binder service, or pmap.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _RPC_PMAP_PROT_H
diff --git a/sunrpc/rpc/pmap_rmt.h b/sunrpc/rpc/pmap_rmt.h
index 7a38b5f5f7..4ecb206cba 100644
--- a/sunrpc/rpc/pmap_rmt.h
+++ b/sunrpc/rpc/pmap_rmt.h
@@ -1,38 +1,35 @@
-/* @(#)pmap_rmt.h 2.1 88/07/29 4.0 RPCSRC; from 1.2 88/02/08 SMI */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
/*
* Structures and XDR routines for parameters to and replies from
* the portmapper remote-call-service.
*
* Copyright (C) 1986, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _RPC_PMAP_RMT_H
diff --git a/sunrpc/rpc/rpc.h b/sunrpc/rpc/rpc.h
index 38e43859dd..4c16c39727 100644
--- a/sunrpc/rpc/rpc.h
+++ b/sunrpc/rpc/rpc.h
@@ -1,38 +1,35 @@
-/* @(#)rpc.h 2.3 88/08/10 4.0 RPCSRC; from 1.9 88/02/08 SMI */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
/*
* rpc.h, Just includes the billions of rpc header files necessary to
* do remote procedure calling.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _RPC_RPC_H
diff --git a/sunrpc/rpc/rpc_des.h b/sunrpc/rpc/rpc_des.h
index 0f36d16977..f70db03cec 100644
--- a/sunrpc/rpc/rpc_des.h
+++ b/sunrpc/rpc/rpc_des.h
@@ -1,35 +1,34 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
* Generic DES driver interface
* Keep this file hardware independent!
* Copyright (c) 1986 by Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _DES_H
diff --git a/sunrpc/rpc/rpc_msg.h b/sunrpc/rpc/rpc_msg.h
index 636d60ea91..292cf906f5 100644
--- a/sunrpc/rpc/rpc_msg.h
+++ b/sunrpc/rpc/rpc_msg.h
@@ -1,33 +1,36 @@
-/* @(#)rpc_msg.h 2.1 88/07/29 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * rpc_msg.h
+ * rpc message definition
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-/* @(#)rpc_msg.h 1.7 86/07/16 SMI */
#ifndef _RPC_MSG_H
#define _RPC_MSG_H 1
@@ -37,13 +40,6 @@
#include <rpc/xdr.h>
#include <rpc/clnt.h>
-/*
- * rpc_msg.h
- * rpc message definition
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
- */
-
#define RPC_MSG_VERSION ((u_long) 2)
#define RPC_SERVICE_PORT ((u_short) 2048)
diff --git a/sunrpc/rpc/svc.h b/sunrpc/rpc/svc.h
index 171231919a..e7b126c1df 100644
--- a/sunrpc/rpc/svc.h
+++ b/sunrpc/rpc/svc.h
@@ -1,36 +1,34 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * svc.h, Server-side remote procedure call interface.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * svc.h, Server-side remote procedure call interface.
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _RPC_SVC_H
@@ -82,11 +80,11 @@ struct SVCXPRT {
enum xprt_stat (*xp_stat) (SVCXPRT *__xprt);
/* get transport status */
bool_t (*xp_getargs) (SVCXPRT *__xprt, xdrproc_t __xdr_args,
- caddr_t args_ptr); /* get arguments */
+ caddr_t __args_ptr); /* get arguments */
bool_t (*xp_reply) (SVCXPRT *__xprt, struct rpc_msg *__msg);
/* send reply */
bool_t (*xp_freeargs) (SVCXPRT *__xprt, xdrproc_t __xdr_args,
- caddr_t args_ptr);
+ caddr_t __args_ptr);
/* free mem allocated for args */
void (*xp_destroy) (SVCXPRT *__xprt);
/* destroy this struct */
@@ -226,7 +224,7 @@ extern void xprt_unregister (SVCXPRT *__xprt) __THROW;
* deadlock the caller and server processes!
*/
-extern bool_t svc_sendreply (SVCXPRT *xprt, xdrproc_t __xdr_results,
+extern bool_t svc_sendreply (SVCXPRT *__xprt, xdrproc_t __xdr_results,
caddr_t __xdr_location) __THROW;
extern void svcerr_decode (SVCXPRT *__xprt) __THROW;
diff --git a/sunrpc/rpc/svc_auth.h b/sunrpc/rpc/svc_auth.h
index 1c1a7156ac..f72f4f119e 100644
--- a/sunrpc/rpc/svc_auth.h
+++ b/sunrpc/rpc/svc_auth.h
@@ -1,38 +1,34 @@
-/* @(#)svc_auth.h 2.1 88/07/29 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * svc_auth.h, Service side of rpc authentication.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/* @(#)svc_auth.h 1.6 86/07/16 SMI */
-
-/*
- * svc_auth.h, Service side of rpc authentication.
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _RPC_SVC_AUTH_H
diff --git a/sunrpc/rpc/types.h b/sunrpc/rpc/types.h
index 871f3fd6b0..5744e5a4bf 100644
--- a/sunrpc/rpc/types.h
+++ b/sunrpc/rpc/types.h
@@ -1,30 +1,30 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/* fixincludes should not add extern "C" to this file */
/*
diff --git a/sunrpc/rpc/xdr.h b/sunrpc/rpc/xdr.h
index ba9691d1af..f5ba7b3897 100644
--- a/sunrpc/rpc/xdr.h
+++ b/sunrpc/rpc/xdr.h
@@ -1,36 +1,34 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * xdr.h, External Data Representation Serialization Routines.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * xdr.h, External Data Representation Serialization Routines.
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _RPC_XDR_H
@@ -316,7 +314,7 @@ extern bool_t xdr_opaque (XDR *__xdrs, caddr_t __cp, u_int __cnt) __THROW;
extern bool_t xdr_string (XDR *__xdrs, char **__cpp, u_int __maxsize) __THROW;
extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp,
__const struct xdr_discrim *__choices,
- xdrproc_t dfault) __THROW;
+ xdrproc_t __dfault) __THROW;
extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW;
extern bool_t xdr_u_char (XDR *__xdrs, u_char *__cp) __THROW;
extern bool_t xdr_vector (XDR *__xdrs, char *__basep, u_int __nelem,
diff --git a/sunrpc/rpc_clntout.c b/sunrpc/rpc_clntout.c
index 08d9601212..8c0f9cc5df 100644
--- a/sunrpc/rpc_clntout.c
+++ b/sunrpc/rpc_clntout.c
@@ -1,40 +1,33 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * rpc_clntout.c, Client-stub outputter for the RPC protocol compiler
+ * Copyright (C) 1987, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * From: @(#)rpc_clntout.c 1.11 89/02/22 (C) 1987 SMI
- */
-
-/*
- * rpc_clntout.c, Client-stub outputter for the RPC protocol compiler
- * Copyright (C) 1987, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
#include <string.h>
diff --git a/sunrpc/rpc_cmsg.c b/sunrpc/rpc_cmsg.c
index 9a7568b55a..097490302f 100644
--- a/sunrpc/rpc_cmsg.c
+++ b/sunrpc/rpc_cmsg.c
@@ -1,41 +1,34 @@
-/* @(#)rpc_callmsg.c 2.1 88/07/29 4.0 RPCSRC */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)rpc_callmsg.c 1.4 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
/*
* rpc_callmsg.c
*
* Copyright (C) 1984, Sun Microsystems, Inc.
*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <string.h>
diff --git a/sunrpc/rpc_common.c b/sunrpc/rpc_common.c
index 6b22b3f66b..ba89953112 100644
--- a/sunrpc/rpc_common.c
+++ b/sunrpc/rpc_common.c
@@ -1,30 +1,30 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <rpc/rpc.h>
@@ -39,7 +39,11 @@
* This file should only contain common data (global data) that is exported
* by public interfaces
*/
-struct opaque_auth _null_auth;
+/* We are very tricky here. We want to have _null_auth in a read-only
+ section but we cannot add const to the type because this isn't how
+ the variable is declared. So we use the section attribute. */
+struct opaque_auth _null_auth __attribute__ ((nocommon));
+libc_hidden_def (_null_auth)
fd_set svc_fdset;
struct rpc_createerr rpc_createerr;
struct pollfd *svc_pollfd;
diff --git a/sunrpc/rpc_cout.c b/sunrpc/rpc_cout.c
index 21056e84a6..e0e6535107 100644
--- a/sunrpc/rpc_cout.c
+++ b/sunrpc/rpc_cout.c
@@ -1,35 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * From: @(#)rpc_cout.c 1.13 89/02/22 (C) 1987 SMI
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * From: @(#)rpc_cout.c 1.13 89/02/22 (C) 1987 SMI
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
diff --git a/sunrpc/rpc_dtable.c b/sunrpc/rpc_dtable.c
index fbbb3c1d5c..9aff675a4d 100644
--- a/sunrpc/rpc_dtable.c
+++ b/sunrpc/rpc_dtable.c
@@ -1,35 +1,32 @@
/* @(#)rpc_dtablesize.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)rpc_dtablesize.c 1.2 87/08/11 Copyr 1987 Sun Micro";
-#endif
#include <unistd.h>
#include <rpc/clnt.h>
diff --git a/sunrpc/rpc_hout.c b/sunrpc/rpc_hout.c
index 270d149a6e..346e154219 100644
--- a/sunrpc/rpc_hout.c
+++ b/sunrpc/rpc_hout.c
@@ -1,35 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * From: @(#)rpc_hout.c 1.12 89/02/22 (C) 1987 SMI
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * From: @(#)rpc_hout.c 1.12 89/02/22 (C) 1987 SMI
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
diff --git a/sunrpc/rpc_main.c b/sunrpc/rpc_main.c
index a3d227e524..fcb094df9a 100644
--- a/sunrpc/rpc_main.c
+++ b/sunrpc/rpc_main.c
@@ -1,35 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * From @(#)rpc_main.c 1.30 89/03/30 (C) 1987 SMI;
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * From @(#)rpc_main.c 1.30 89/03/30 (C) 1987 SMI;
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
@@ -52,6 +49,9 @@
#include "rpc_scan.h"
#include "proto.h"
+#include "../version.h"
+#define PACKAGE _libc_intl_domainname
+
#define EXTEND 1 /* alias for TRUE */
#define DONT_EXTEND 0 /* alias for FALSE */
@@ -132,8 +132,9 @@ static void addarg (const char *cp);
static void putarg (int whereto, const char *cp);
static void checkfiles (const char *infile, const char *outfile);
static int parseargs (int argc, const char *argv[], struct commandline *cmd);
-static void usage (void) __attribute__ ((noreturn));
-static void options_usage (void) __attribute__ ((noreturn));
+static void usage (FILE *stream, int status) __attribute__ ((noreturn));
+static void options_usage (FILE *stream, int status) __attribute__ ((noreturn));
+static void print_version (void);
static void c_initialize (void);
static char *generate_guard (const char *pathname);
@@ -185,7 +186,7 @@ main (int argc, const char *argv[])
(void) memset ((char *) &cmd, 0, sizeof (struct commandline));
clear_args ();
if (!parseargs (argc, argv, &cmd))
- usage ();
+ usage (stderr, 1);
if (cmd.cflag || cmd.hflag || cmd.lflag || cmd.tflag || cmd.sflag ||
cmd.mflag || cmd.nflag || cmd.Ssflag || cmd.Scflag)
@@ -787,7 +788,7 @@ s_output (int argc, const char *argv[], const char *infile, const char *define,
{
if (outfilename)
unlink (outfilename);
- usage ();
+ usage (stderr, 1);
}
write_rest ();
}
@@ -1218,6 +1219,10 @@ parseargs (int argc, const char *argv[], struct commandline *cmd)
}
cmd->infile = argv[i];
}
+ else if (strcmp (argv[i], "--help") == 0)
+ usage (stdout, 0);
+ else if (strcmp (argv[i], "--version") == 0)
+ print_version ();
else
{
for (j = 1; argv[i][j] != 0; j++)
@@ -1442,46 +1447,56 @@ parseargs (int argc, const char *argv[], struct commandline *cmd)
}
static void
-usage (void)
+usage (FILE *stream, int status)
{
- fprintf (stderr, _("usage: %s infile\n"), cmdname);
- fprintf (stderr, _("\t%s [-abkCLNTM][-Dname[=value]] [-i size] \
+ fprintf (stream, _("usage: %s infile\n"), cmdname);
+ fprintf (stream, _("\t%s [-abkCLNTM][-Dname[=value]] [-i size] \
[-I [-K seconds]] [-Y path] infile\n"), cmdname);
- fprintf (stderr, _("\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] \
+ fprintf (stream, _("\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] \
[-o outfile] [infile]\n"), cmdname);
- fprintf (stderr, _("\t%s [-s nettype]* [-o outfile] [infile]\n"), cmdname);
- fprintf (stderr, _("\t%s [-n netid]* [-o outfile] [infile]\n"), cmdname);
- options_usage ();
- exit (1);
+ fprintf (stream, _("\t%s [-s nettype]* [-o outfile] [infile]\n"), cmdname);
+ fprintf (stream, _("\t%s [-n netid]* [-o outfile] [infile]\n"), cmdname);
+ options_usage (stream, status);
+ exit (status);
+}
+
+static void
+options_usage (FILE *stream, int status)
+{
+ f_print (stream, _("options:\n"));
+ f_print (stream, _("-a\t\tgenerate all files, including samples\n"));
+ f_print (stream, _("-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"));
+ f_print (stream, _("-c\t\tgenerate XDR routines\n"));
+ f_print (stream, _("-C\t\tANSI C mode\n"));
+ f_print (stream, _("-Dname[=value]\tdefine a symbol (same as #define)\n"));
+ f_print (stream, _("-h\t\tgenerate header file\n"));
+ f_print (stream, _("-i size\t\tsize at which to start generating inline code\n"));
+ f_print (stream, _("-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"));
+ f_print (stream, _("-K seconds\tserver exits after K seconds of inactivity\n"));
+ f_print (stream, _("-l\t\tgenerate client side stubs\n"));
+ f_print (stream, _("-L\t\tserver errors will be printed to syslog\n"));
+ f_print (stream, _("-m\t\tgenerate server side stubs\n"));
+ f_print (stream, _("-M\t\tgenerate MT-safe code\n"));
+ f_print (stream, _("-n netid\tgenerate server code that supports named netid\n"));
+ f_print (stream, _("-N\t\tsupports multiple arguments and call-by-value\n"));
+ f_print (stream, _("-o outfile\tname of the output file\n"));
+ f_print (stream, _("-s nettype\tgenerate server code that supports named nettype\n"));
+ f_print (stream, _("-Sc\t\tgenerate sample client code that uses remote procedures\n"));
+ f_print (stream, _("-Ss\t\tgenerate sample server code that defines remote procedures\n"));
+ f_print (stream, _("-Sm \t\tgenerate makefile template \n"));
+ f_print (stream, _("-t\t\tgenerate RPC dispatch table\n"));
+ f_print (stream, _("-T\t\tgenerate code to support RPC dispatch tables\n"));
+ f_print (stream, _("-Y path\t\tdirectory name to find C preprocessor (cpp)\n"));
+
+ f_print (stream, "\n%s", _("\
+For bug reporting instructions, please see:\n\
+<http://www.gnu.org/software/libc/bugs.html>.\n"));
+ exit (status);
}
static void
-options_usage (void)
+print_version (void)
{
- f_print (stderr, "options:\n");
- f_print (stderr, "-a\t\tgenerate all files, including samples\n");
- f_print (stderr, "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n");
- f_print (stderr, "-c\t\tgenerate XDR routines\n");
- f_print (stderr, "-C\t\tANSI C mode\n");
- f_print (stderr, "-Dname[=value]\tdefine a symbol (same as #define)\n");
- f_print (stderr, "-h\t\tgenerate header file\n");
- f_print (stderr, "-i size\t\tsize at which to start generating inline code\n");
- f_print (stderr, "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n");
- f_print (stderr, "-K seconds\tserver exits after K seconds of inactivity\n");
- f_print (stderr, "-l\t\tgenerate client side stubs\n");
- f_print (stderr, "-L\t\tserver errors will be printed to syslog\n");
- f_print (stderr, "-m\t\tgenerate server side stubs\n");
- f_print (stderr, "-M\t\tgenerate MT-safe code\n");
- f_print (stderr, "-n netid\tgenerate server code that supports named netid\n");
- f_print (stderr, "-N\t\tsupports multiple arguments and call-by-value\n");
- f_print (stderr, "-o outfile\tname of the output file\n");
- f_print (stderr, "-s nettype\tgenerate server code that supports named nettype\n");
- f_print (stderr, "-Sc\t\tgenerate sample client code that uses remote procedures\n");
- f_print (stderr, "-Ss\t\tgenerate sample server code that defines remote procedures\n");
- f_print (stderr, "-Sm \t\tgenerate makefile template \n");
- f_print (stderr, "-t\t\tgenerate RPC dispatch table\n");
- f_print (stderr, "-T\t\tgenerate code to support RPC dispatch tables\n");
- f_print (stderr, "-Y path\t\tdirectory name to find C preprocessor (cpp)\n");
-
- exit (1);
+ printf ("rpcgen (GNU %s) %s\n", PACKAGE, VERSION);
+ exit (0);
}
diff --git a/sunrpc/rpc_parse.c b/sunrpc/rpc_parse.c
index f66538701f..56ec1a48ca 100644
--- a/sunrpc/rpc_parse.c
+++ b/sunrpc/rpc_parse.c
@@ -1,35 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * From: @(#)rpc_parse.c 1.8 89/02/22 (C) 1987 SMI
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * From: @(#)rpc_parse.c 1.8 89/02/22 (C) 1987 SMI
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
diff --git a/sunrpc/rpc_parse.h b/sunrpc/rpc_parse.h
index 8d48c85a07..815c7808c1 100644
--- a/sunrpc/rpc_parse.h
+++ b/sunrpc/rpc_parse.h
@@ -1,36 +1,33 @@
+/* @(#)rpc_parse.h 1.3 90/08/29 (C) 1987 SMI */
+
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/* @(#)rpc_parse.h 1.3 90/08/29 (C) 1987 SMI */
-
-/*
* rpc_parse.h, Definitions for the RPCL parser
*/
diff --git a/sunrpc/rpc_prot.c b/sunrpc/rpc_prot.c
index 69b0b6cd9d..d926083415 100644
--- a/sunrpc/rpc_prot.c
+++ b/sunrpc/rpc_prot.c
@@ -1,40 +1,34 @@
-/* @(#)rpc_prot.c 2.3 88/08/07 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * rpc_prot.c
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)rpc_prot.c 1.36 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
-/*
- * rpc_prot.c
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This set of routines implements the rpc message definition,
* its serializer and some common rpc utility routines.
diff --git a/sunrpc/rpc_sample.c b/sunrpc/rpc_sample.c
index 00b58d5bc2..1f3bfd0cbb 100644
--- a/sunrpc/rpc_sample.c
+++ b/sunrpc/rpc_sample.c
@@ -1,35 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * From: @(#)rpc_sample.c 1.1 90/08/30 (C) 1987 SMI
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * From: @(#)rpc_sample.c 1.1 90/08/30 (C) 1987 SMI
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
diff --git a/sunrpc/rpc_scan.c b/sunrpc/rpc_scan.c
index af90ef6973..d4f518f6b4 100644
--- a/sunrpc/rpc_scan.c
+++ b/sunrpc/rpc_scan.c
@@ -1,35 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * From: @(#)rpc_scan.c 1.11 89/02/22 (C) 1987 SMI
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * From: @(#)rpc_scan.c 1.11 89/02/22 (C) 1987 SMI
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
diff --git a/sunrpc/rpc_scan.h b/sunrpc/rpc_scan.h
index 74d77b0fbb..384f807d7a 100644
--- a/sunrpc/rpc_scan.h
+++ b/sunrpc/rpc_scan.h
@@ -1,41 +1,38 @@
+/* @(#)rpc_scan.h 1.3 90/08/29 (C) 1987 SMI */
+
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/* @(#)rpc_scan.h 1.3 90/08/29 (C) 1987 SMI */
-
-/*
- * rpc_scan.h, Definitions for the RPCL scanner
+ * rpc_scan.h, Definitions for the RPCL scanner
*/
/*
- * kinds of tokens
+ * kinds of tokens
*/
enum tok_kind {
TOK_IDENT,
@@ -81,7 +78,7 @@ enum tok_kind {
typedef enum tok_kind tok_kind;
/*
- * a token
+ * a token
*/
struct token {
tok_kind kind;
@@ -91,7 +88,7 @@ typedef struct token token;
/*
- * routine interface
+ * routine interface
*/
void scan(tok_kind expect, token *tokp);
void scan2(tok_kind expect1, tok_kind expect2, token *tokp);
@@ -104,4 +101,3 @@ void expected1(tok_kind exp1) __attribute__ ((noreturn));
void expected2(tok_kind exp1, tok_kind exp2) __attribute__ ((noreturn));
void expected3(tok_kind exp1, tok_kind exp2, tok_kind exp3)
__attribute__ ((noreturn));
-
diff --git a/sunrpc/rpc_svcout.c b/sunrpc/rpc_svcout.c
index 6774cc8c0f..1887b75e42 100644
--- a/sunrpc/rpc_svcout.c
+++ b/sunrpc/rpc_svcout.c
@@ -1,35 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * From: @(#)rpc_svcout.c 1.29 89/03/30 (C) 1987 SMI
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * From: @(#)rpc_svcout.c 1.29 89/03/30 (C) 1987 SMI
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
diff --git a/sunrpc/rpc_tblout.c b/sunrpc/rpc_tblout.c
index 8fd2b1267d..2d77c606ca 100644
--- a/sunrpc/rpc_tblout.c
+++ b/sunrpc/rpc_tblout.c
@@ -1,35 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * From: @(#)rpc_tblout.c 1.4 89/02/22 (C) 1988 SMI
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * From: @(#)rpc_tblout.c 1.4 89/02/22 (C) 1988 SMI
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
diff --git a/sunrpc/rpc_util.c b/sunrpc/rpc_util.c
index b910401a31..6a6c0e42e2 100644
--- a/sunrpc/rpc_util.c
+++ b/sunrpc/rpc_util.c
@@ -1,35 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * From: @(#)rpc_util.c 1.11 89/02/22 (C) 1987 SMI
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * From: @(#)rpc_util.c 1.11 89/02/22 (C) 1987 SMI
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
diff --git a/sunrpc/rpc_util.h b/sunrpc/rpc_util.h
index cb1ceb9921..72f08eb34f 100644
--- a/sunrpc/rpc_util.h
+++ b/sunrpc/rpc_util.h
@@ -1,36 +1,33 @@
+/* @(#)rpc_util.h 1.5 90/08/29 (C) 1987 SMI */
+
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/* @(#)rpc_util.h 1.5 90/08/29 (C) 1987 SMI */
-
-/*
* rpc_util.h, Useful definitions for the RPC protocol compiler
*/
diff --git a/sunrpc/rpcinfo.c b/sunrpc/rpcinfo.c
index d9da989660..6020cd5b9d 100644
--- a/sunrpc/rpcinfo.c
+++ b/sunrpc/rpcinfo.c
@@ -1,11 +1,32 @@
-
-/* @(#)rpcinfo.c 2.2 88/08/11 4.0 RPCSRC */
-#if !defined(lint) && defined (SCCSID)
-static char sccsid[] = "@(#)rpcinfo.c 1.22 87/08/12 SMI";
-#endif
-
/*
* Copyright (C) 1986, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
@@ -13,35 +34,6 @@ static char sccsid[] = "@(#)rpcinfo.c 1.22 87/08/12 SMI";
* or dump the portmapper
*/
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
#include <getopt.h>
#include <string.h>
#include <unistd.h>
@@ -58,6 +50,9 @@ static char sccsid[] = "@(#)rpcinfo.c 1.22 87/08/12 SMI";
#include <locale.h>
#include <libintl.h>
+#include "../version.h"
+#define PACKAGE _libc_intl_domainname
+
#define MAXHOSTLEN 256
#define MIN_VERS ((u_long) 0)
@@ -70,7 +65,8 @@ static void pmapdump (int argc, char **argv);
static bool_t reply_proc (void *res, struct sockaddr_in *who);
static void brdcst (int argc, char **argv) __attribute__ ((noreturn));
static void deletereg (int argc, char **argv);
-static void usage (void);
+static void usage (FILE *stream);
+static void print_version (void);
static u_long getprognum (char *arg);
static u_long getvers (char *arg);
static void get_inet_address (struct sockaddr_in *addr, char *host);
@@ -92,6 +88,11 @@ main (int argc, char **argv)
int errflg;
int function;
u_short portnum;
+ static const struct option long_options[] = {
+ { "help", no_argument, NULL, 'H' },
+ { "version", no_argument, NULL, 'V' },
+ { NULL, 0, NULL, 0 }
+ };
setlocale (LC_ALL, "");
textdomain (_libc_intl_domainname);
@@ -99,7 +100,7 @@ main (int argc, char **argv)
function = NONE;
portnum = 0;
errflg = 0;
- while ((c = getopt (argc, argv, "ptubdn:")) != -1)
+ while ((c = getopt_long (argc, argv, "ptubdn:", long_options, NULL)) != -1)
{
switch (c)
{
@@ -143,6 +144,14 @@ main (int argc, char **argv)
function = DELETES;
break;
+ case 'H':
+ usage (stdout);
+ return 0;
+
+ case 'V':
+ print_version ();
+ return 0;
+
case '?':
errflg = 1;
}
@@ -150,7 +159,7 @@ main (int argc, char **argv)
if (errflg || function == NONE)
{
- usage ();
+ usage (stderr);
return 1;
}
@@ -160,7 +169,7 @@ main (int argc, char **argv)
case PMAPDUMP:
if (portnum != 0)
{
- usage ();
+ usage (stderr);
return 1;
}
pmapdump (argc - optind, argv + optind);
@@ -177,7 +186,7 @@ main (int argc, char **argv)
case BRDCST:
if (portnum != 0)
{
- usage ();
+ usage (stderr);
return 1;
}
brdcst (argc - optind, argv + optind);
@@ -208,7 +217,7 @@ udpping (portnum, argc, argv)
if (argc < 2 || argc > 3)
{
- usage ();
+ usage (stderr);
exit (1);
}
prognum = getprognum (argv[1]);
@@ -363,7 +372,7 @@ tcpping (portnum, argc, argv)
if (argc < 2 || argc > 3)
{
- usage ();
+ usage (stderr);
exit (1);
}
prognum = getprognum (argv[1]);
@@ -532,7 +541,7 @@ pmapdump (argc, argv)
if (argc > 1)
{
- usage ();
+ usage (stderr);
exit (1);
}
if (argc == 1)
@@ -624,7 +633,7 @@ brdcst (argc, argv)
if (argc != 2)
{
- usage ();
+ usage (stderr);
exit (1);
}
prognum = getprognum (argv[0]);
@@ -650,7 +659,7 @@ deletereg (argc, argv)
if (argc != 2)
{
- usage ();
+ usage (stderr);
exit (1);
}
if (getuid ())
@@ -669,15 +678,25 @@ deletereg (argc, argv)
}
static void
-usage ()
+usage (FILE *stream)
{
fputs (_("Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"),
- stderr);
+ stream);
fputs (_(" rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"),
- stderr);
- fputs (_(" rpcinfo -p [ host ]\n"), stderr);
- fputs (_(" rpcinfo -b prognum versnum\n"), stderr);
- fputs (_(" rpcinfo -d prognum versnum\n"), stderr);
+ stream);
+ fputs (_(" rpcinfo -p [ host ]\n"), stream);
+ fputs (_(" rpcinfo -b prognum versnum\n"), stream);
+ fputs (_(" rpcinfo -d prognum versnum\n"), stream);
+ fputc ('\n', stream);
+ fputs (_("\
+For bug reporting instructions, please see:\n\
+<http://www.gnu.org/software/libc/bugs.html>.\n"), stream);
+}
+
+static void
+print_version (void)
+{
+ printf ("rpcinfo (GNU %s) %s\n", PACKAGE, VERSION);
}
static u_long
diff --git a/sunrpc/rpcsvc/bootparam_prot.x b/sunrpc/rpcsvc/bootparam_prot.x
index 65bc0dcbfb..f272d52ae5 100644
--- a/sunrpc/rpcsvc/bootparam_prot.x
+++ b/sunrpc/rpcsvc/bootparam_prot.x
@@ -2,32 +2,32 @@
/* @(#)bootparam_prot.x 1.2 87/06/24 Copyr 1987 Sun Micro */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
@@ -82,7 +82,7 @@ struct bp_getfile_arg {
bp_machine_name_t client_name;
bp_fileid_t file_id;
};
-
+
struct bp_getfile_res {
bp_machine_name_t server_name;
bp_address server_address;
diff --git a/sunrpc/rpcsvc/key_prot.x b/sunrpc/rpcsvc/key_prot.x
index d9272cbcfa..0350250825 100644
--- a/sunrpc/rpcsvc/key_prot.x
+++ b/sunrpc/rpcsvc/key_prot.x
@@ -1,35 +1,34 @@
-%/*
-% * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
-% * unrestricted use provided that this legend is included on all tape
-% * media and as a part of the software program in whole or part. Users
-% * may copy or modify Sun RPC without charge, but are not authorized
-% * to license or distribute it to anyone else except as part of a product or
-% * program developed by the user.
-% *
-% * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
-% * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
-% * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
-% *
-% * Sun RPC is provided with no support and without any obligation on the
-% * part of Sun Microsystems, Inc. to assist in its use, correction,
-% * modification or enhancement.
-% *
-% * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
-% * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
-% * OR ANY PART THEREOF.
-% *
-% * In no event will Sun Microsystems, Inc. be liable for any lost revenue
-% * or profits or other special, indirect and consequential damages, even if
-% * Sun has been advised of the possibility of such damages.
-% *
-% * Sun Microsystems, Inc.
-% * 2550 Garcia Avenue
-% * Mountain View, California 94043
-% */
/*
* Key server protocol definition
* Copyright (C) 1990, 1991 Sun Microsystems, Inc.
*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
* The keyserver is a public key storage/encryption/decryption service
* The encryption method used is based on the Diffie-Hellman exponential
* key exchange technology.
@@ -49,7 +48,7 @@
%
%/* Copyright (c) 1990, 1991 Sun Microsystems, Inc. */
%
-%/*
+%/*
% * Compiled from key_prot.x using rpcgen.
% * DO NOT EDIT THIS FILE!
% * This is NOT source code!
@@ -95,7 +94,7 @@ typedef opaque keybuf[HEXKEYBYTES]; /* store key in hex */
typedef string netnamestr<MAXNETNAMELEN>;
/*
- * Argument to ENCRYPT or DECRYPT
+ * Argument to ENCRYPT or DECRYPT
*/
struct cryptkeyarg {
netnamestr remotename;
@@ -125,12 +124,12 @@ default:
const MAXGIDS = 16; /* max number of gids in gid list */
/*
- * Unix credential
- */
+ * Unix credential
+ */
struct unixcred {
u_int uid;
u_int gid;
- u_int gids<MAXGIDS>;
+ u_int gids<MAXGIDS>;
};
/*
@@ -157,7 +156,7 @@ case KEY_SUCCESS:
key_netstarg knet;
default:
void;
-};
+};
#ifdef RPC_HDR
%
@@ -173,15 +172,15 @@ program KEY_PROG {
* This is my secret key.
* Store it for me.
*/
- keystatus
- KEY_SET(keybuf) = 1;
-
+ keystatus
+ KEY_SET(keybuf) = 1;
+
/*
* I want to talk to X.
* Encrypt a conversation key for me.
*/
cryptkeyres
- KEY_ENCRYPT(cryptkeyarg) = 2;
+ KEY_ENCRYPT(cryptkeyarg) = 2;
/*
* X just sent me a message.
@@ -193,7 +192,7 @@ program KEY_PROG {
/*
* Generate a secure conversation key for me
*/
- des_block
+ des_block
KEY_GEN(void) = 4;
/*
@@ -215,15 +214,15 @@ program KEY_PROG {
* This is my secret key.
* Store it for me.
*/
- keystatus
- KEY_SET(keybuf) = 1;
-
+ keystatus
+ KEY_SET(keybuf) = 1;
+
/*
* I want to talk to X.
* Encrypt a conversation key for me.
*/
cryptkeyres
- KEY_ENCRYPT(cryptkeyarg) = 2;
+ KEY_ENCRYPT(cryptkeyarg) = 2;
/*
* X just sent me a message.
@@ -235,7 +234,7 @@ program KEY_PROG {
/*
* Generate a secure conversation key for me
*/
- des_block
+ des_block
KEY_GEN(void) = 4;
/*
@@ -244,13 +243,13 @@ program KEY_PROG {
*/
getcredres
KEY_GETCRED(netnamestr) = 5;
-
+
/*
* I want to talk to X. and I know X's public key
* Encrypt a conversation key for me.
*/
cryptkeyres
- KEY_ENCRYPT_PK(cryptkeyarg2) = 6;
+ KEY_ENCRYPT_PK(cryptkeyarg2) = 6;
/*
* X just sent me a message. and I know X's public key
@@ -258,29 +257,27 @@ program KEY_PROG {
*/
cryptkeyres
KEY_DECRYPT_PK(cryptkeyarg2) = 7;
-
- /*
- * Store my public key, netname and private key.
+
+ /*
+ * Store my public key, netname and private key.
*/
keystatus
KEY_NET_PUT(key_netstarg) = 8;
-
+
/*
- * Retrieve my public key, netname and private key.
+ * Retrieve my public key, netname and private key.
*/
key_netstres
KEY_NET_GET(void) = 9;
-
+
/*
- * Return me the conversation key that is constructed
- * from my secret key and this publickey.
+ * Return me the conversation key that is constructed
+ * from my secret key and this publickey.
*/
- cryptkeyres
- KEY_GET_CONV(keybuf) = 10;
+ cryptkeyres
+ KEY_GET_CONV(keybuf) = 10;
+
-
} = 2;
} = 100029;
-
-
diff --git a/sunrpc/rpcsvc/klm_prot.x b/sunrpc/rpcsvc/klm_prot.x
index 5f3e12e7d3..7b4c152f17 100644
--- a/sunrpc/rpcsvc/klm_prot.x
+++ b/sunrpc/rpcsvc/klm_prot.x
@@ -2,38 +2,36 @@
/* @(#)klm_prot.x 1.7 87/07/08 Copyr 1987 Sun Micro */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
* Kernel/lock manager protocol definition
* Copyright (C) 1986 Sun Microsystems, Inc.
*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
* protocol used between the UNIX kernel (the "client") and the
* local lock manager. The local lock manager is a deamon running
* above the kernel.
@@ -131,4 +129,3 @@ lock request */
klm_stat KLM_UNLOCK (struct klm_unlockargs) = 4;
} = 1;
} = 100020;
-
diff --git a/sunrpc/rpcsvc/mount.x b/sunrpc/rpcsvc/mount.x
index 310b4ca542..da61c4eee9 100644
--- a/sunrpc/rpcsvc/mount.x
+++ b/sunrpc/rpcsvc/mount.x
@@ -2,32 +2,32 @@
/* @(#)mount.x 1.2 87/09/18 Copyr 1987 Sun Micro */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
diff --git a/sunrpc/rpcsvc/nfs_prot.x b/sunrpc/rpcsvc/nfs_prot.x
index 630dab24d1..2a685402bb 100644
--- a/sunrpc/rpcsvc/nfs_prot.x
+++ b/sunrpc/rpcsvc/nfs_prot.x
@@ -1,37 +1,35 @@
/* @(#)nfs_prot.x 2.1 88/08/01 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * nfs_prot.x 1.2 87/10/12
+ * Copyright 1987 Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * nfs_prot.x 1.2 87/10/12
- * Copyright 1987 Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
const NFS_PORT = 2049;
const NFS_MAXDATA = 8192;
diff --git a/sunrpc/rpcsvc/rex.x b/sunrpc/rpcsvc/rex.x
index 949d9f0747..253b8a7a2b 100644
--- a/sunrpc/rpcsvc/rex.x
+++ b/sunrpc/rpcsvc/rex.x
@@ -2,32 +2,32 @@
/* @(#)rex.x 1.3 87/09/18 Copyr 1987 Sun Micro */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
diff --git a/sunrpc/rpcsvc/rstat.x b/sunrpc/rpcsvc/rstat.x
index 6367c43943..b2c6b6e185 100644
--- a/sunrpc/rpcsvc/rstat.x
+++ b/sunrpc/rpcsvc/rstat.x
@@ -2,32 +2,32 @@
/* @(#)rstat.x 1.2 87/09/18 Copyr 1987 Sun Micro */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
diff --git a/sunrpc/rpcsvc/rusers.x b/sunrpc/rpcsvc/rusers.x
index b72c293905..bcf5fd2e73 100644
--- a/sunrpc/rpcsvc/rusers.x
+++ b/sunrpc/rpcsvc/rusers.x
@@ -1,32 +1,31 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-
%/*
% * Find out about remote users
% */
diff --git a/sunrpc/rpcsvc/sm_inter.x b/sunrpc/rpcsvc/sm_inter.x
index 9cbb7011a6..9c20383ca3 100644
--- a/sunrpc/rpcsvc/sm_inter.x
+++ b/sunrpc/rpcsvc/sm_inter.x
@@ -1,39 +1,33 @@
-/* @(#)sm_inter.x 2.2 88/08/01 4.0 RPCSRC */
-/* @(#)sm_inter.x 1.7 87/06/24 Copyr 1987 Sun Micro */
-
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
/*
* Status monitor protocol specification
* Copyright (C) 1986 Sun Microsystems, Inc.
*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
diff --git a/sunrpc/rpcsvc/spray.x b/sunrpc/rpcsvc/spray.x
index b242f0ac75..2830722aea 100644
--- a/sunrpc/rpcsvc/spray.x
+++ b/sunrpc/rpcsvc/spray.x
@@ -2,32 +2,32 @@
/* @(#)spray.x 1.2 87/09/18 Copyr 1987 Sun Micro */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
@@ -62,7 +62,7 @@ program SPRAYPROG {
version SPRAYVERS {
/*
* Just throw away the data and increment the counter
- * This call never returns, so the client should always
+ * This call never returns, so the client should always
* time it out.
*/
void
@@ -72,7 +72,7 @@ program SPRAYPROG {
* Get the value of the counter and elapsed time since
* last CLEAR.
*/
- spraycumul
+ spraycumul
SPRAYPROC_GET(void) = 2;
/*
diff --git a/sunrpc/rpcsvc/yppasswd.x b/sunrpc/rpcsvc/yppasswd.x
index ad349adbfa..b8ff7c2759 100644
--- a/sunrpc/rpcsvc/yppasswd.x
+++ b/sunrpc/rpcsvc/yppasswd.x
@@ -2,32 +2,32 @@
/* @(#)yppasswd.x 1.1 87/04/13 Copyr 1987 Sun Micro */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
@@ -37,7 +37,7 @@
program YPPASSWDPROG {
version YPPASSWDVERS {
/*
- * Update my passwd entry
+ * Update my passwd entry
*/
int
YPPASSWDPROC_UPDATE(yppasswd) = 1;
@@ -59,5 +59,3 @@ struct yppasswd {
string oldpass<>; /* unencrypted old password */
passwd newpw; /* new passwd entry */
};
-
-
diff --git a/sunrpc/rtime.c b/sunrpc/rtime.c
index ff71a55aeb..790bf4bc8d 100644
--- a/sunrpc/rtime.c
+++ b/sunrpc/rtime.c
@@ -1,37 +1,32 @@
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)rtime.c 2.2 88/08/10 4.0 RPCSRC; from 1.8 88/02/08 SMI";
-#endif
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * Copyright (c) 1988 by Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* rtime - get time from remote machine
diff --git a/sunrpc/svc.c b/sunrpc/svc.c
index 60f6fcdd79..d389a5285d 100644
--- a/sunrpc/svc.c
+++ b/sunrpc/svc.c
@@ -1,32 +1,4 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
* svc.c, Server-side remote procedure call interface.
*
* There are two sets of procedures here. The xprt routines are
@@ -34,6 +6,33 @@
* list of service routines.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <errno.h>
diff --git a/sunrpc/svc_auth.c b/sunrpc/svc_auth.c
index 68ed4f100b..11555c5976 100644
--- a/sunrpc/svc_auth.c
+++ b/sunrpc/svc_auth.c
@@ -1,40 +1,34 @@
-/* @(#)svc_auth.c 2.4 88/08/15 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * svc_auth.c, Server-side rpc authenticator interface.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)svc_auth.c 1.19 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
-/*
- * svc_auth.c, Server-side rpc authenticator interface.
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <rpc/rpc.h>
diff --git a/sunrpc/svc_authux.c b/sunrpc/svc_authux.c
index 5b64c3d036..477ff25022 100644
--- a/sunrpc/svc_authux.c
+++ b/sunrpc/svc_authux.c
@@ -1,33 +1,4 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
* svc_auth_unix.c
* Handles UNIX flavor authentication parameters on the service side of rpc.
* There are two svc auth implementations here: AUTH_UNIX and AUTH_SHORT.
@@ -36,6 +7,33 @@
* Note: the shorthand has been gutted for efficiency.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
diff --git a/sunrpc/svc_raw.c b/sunrpc/svc_raw.c
index ff8fa7ccd9..924135bb6a 100644
--- a/sunrpc/svc_raw.c
+++ b/sunrpc/svc_raw.c
@@ -1,36 +1,3 @@
-/* @(#)svc_raw.c 2.1 88/07/29 4.0 RPCSRC */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)svc_raw.c 1.15 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
/*
* svc_raw.c, This a toy for simple testing and timing.
* Interface to create an rpc client and server in the same UNIX process.
@@ -38,6 +5,33 @@ static char sccsid[] = "@(#)svc_raw.c 1.15 87/08/11 Copyr 1984 Sun Micro";
* any interference from the kernel.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <rpc/rpc.h>
diff --git a/sunrpc/svc_run.c b/sunrpc/svc_run.c
index f1f47fbf30..1bb8c87c0f 100644
--- a/sunrpc/svc_run.c
+++ b/sunrpc/svc_run.c
@@ -1,32 +1,31 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
* This is the rpc server side idle loop
* Wait for input, call server program.
*/
diff --git a/sunrpc/svc_simple.c b/sunrpc/svc_simple.c
index 6c1c9c914e..1d6f51588f 100644
--- a/sunrpc/svc_simple.c
+++ b/sunrpc/svc_simple.c
@@ -1,41 +1,35 @@
-/* @(#)svc_simple.c 2.2 88/08/01 4.0 RPCSRC */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)svc_simple.c 1.18 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
/*
* svc_simple.c
* Simplified front end to rpc.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
diff --git a/sunrpc/svc_tcp.c b/sunrpc/svc_tcp.c
index beeb10646e..2048fdf0e0 100644
--- a/sunrpc/svc_tcp.c
+++ b/sunrpc/svc_tcp.c
@@ -1,40 +1,34 @@
-/* @(#)svc_tcp.c 2.2 88/08/01 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * svc_tcp.c, Server side for TCP/IP based RPC.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)svc_tcp.c 1.21 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
-/*
- * svc_tcp.c, Server side for TCP/IP based RPC.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Actually implements two flavors of transporter -
* a tcp rendezvouser (a listener and connection establisher)
diff --git a/sunrpc/svc_udp.c b/sunrpc/svc_udp.c
index 496d6d9602..b9fccab262 100644
--- a/sunrpc/svc_udp.c
+++ b/sunrpc/svc_udp.c
@@ -1,42 +1,36 @@
-/* @(#)svc_udp.c 2.2 88/07/29 4.0 RPCSRC */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)svc_udp.c 1.24 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
/*
* svc_udp.c,
* Server side for UDP/IP based RPC. (Does some caching in the hopes of
* achieving execute-at-most-once semantics.)
*
* Copyright (C) 1984, Sun Microsystems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
diff --git a/sunrpc/svc_unix.c b/sunrpc/svc_unix.c
index f103ed96f3..f22a23acda 100644
--- a/sunrpc/svc_unix.c
+++ b/sunrpc/svc_unix.c
@@ -1,36 +1,34 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * svc_unix.c, Server side for TCP/IP based RPC.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * svc_unix.c, Server side for TCP/IP based RPC.
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Actually implements two flavors of transporter -
* a unix rendezvouser (a listener and connection establisher)
diff --git a/sunrpc/svcauth_des.c b/sunrpc/svcauth_des.c
index 933d001341..573891e21f 100644
--- a/sunrpc/svcauth_des.c
+++ b/sunrpc/svcauth_des.c
@@ -1,35 +1,33 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
- * Copyright (c) 1988 by Sun Microsystems, Inc.
- */
-/*
* svcauth_des.c, server-side des authentication
*
* We insure for the service the following:
diff --git a/sunrpc/xcrypt.c b/sunrpc/xcrypt.c
index ea8ff45105..f430a1dab6 100644
--- a/sunrpc/xcrypt.c
+++ b/sunrpc/xcrypt.c
@@ -1,34 +1,32 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (c) 1986-1991 by Sun Microsystems Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * Copyright (c) 1986-1991 by Sun Microsystems Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#if 0
diff --git a/sunrpc/xdr.c b/sunrpc/xdr.c
index 8a70d2e557..c5e961f52b 100644
--- a/sunrpc/xdr.c
+++ b/sunrpc/xdr.c
@@ -1,40 +1,34 @@
-/* @(#)xdr.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * xdr.c, Generic XDR routines implementation.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Copyright (C) 1986, Sun Microsystems, Inc.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)xdr.c 1.35 87/08/12";
-#endif
-
-/*
- * xdr.c, Generic XDR routines implementation.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Copyright (C) 1986, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* These are the "generic" xdr routines used to serialize and de-serialize
* most common data items. See xdr.h for more info on the interface to
diff --git a/sunrpc/xdr_array.c b/sunrpc/xdr_array.c
index e7c8925f5c..02728b08f6 100644
--- a/sunrpc/xdr_array.c
+++ b/sunrpc/xdr_array.c
@@ -1,43 +1,37 @@
-/* @(#)xdr_array.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * xdr_array.c, Generic XDR routines implementation.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
-/*
- * xdr_array.c, Generic XDR routines implementation.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * These are the "non-trivial" xdr primitives used to serialize and de-serialize
- * arrays. See xdr.h for more info on the interface to xdr.
+ * These are the "non-trivial" xdr primitives used to serialize and
+ * de-serialize arrays. See xdr.h for more info on the interface to xdr.
*/
#include <stdio.h>
diff --git a/sunrpc/xdr_float.c b/sunrpc/xdr_float.c
index 0a7d9707d5..75dc70ca93 100644
--- a/sunrpc/xdr_float.c
+++ b/sunrpc/xdr_float.c
@@ -1,40 +1,34 @@
-/* @(#)xdr_float.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * xdr_float.c, Generic XDR routines implementation.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro";
-#endif
-
-/*
- * xdr_float.c, Generic XDR routines implementation.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* These are the "floating point" xdr routines used to (de)serialize
* most common data items. See xdr.h for more info on the interface to
diff --git a/sunrpc/xdr_mem.c b/sunrpc/xdr_mem.c
index 7b1261bbae..f9a0b1495d 100644
--- a/sunrpc/xdr_mem.c
+++ b/sunrpc/xdr_mem.c
@@ -1,41 +1,38 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * xdr_mem.h, XDR implementation using memory buffers.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * xdr_mem.h, XDR implementation using memory buffers.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* If you have some data to be interpreted as external data representation
* or to be converted to external data representation in a memory buffer,
* then this is the package for you.
- *
*/
#include <string.h>
diff --git a/sunrpc/xdr_rec.c b/sunrpc/xdr_rec.c
index 6854034c63..a66462c599 100644
--- a/sunrpc/xdr_rec.c
+++ b/sunrpc/xdr_rec.c
@@ -1,38 +1,36 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
* xdr_rec.c, Implements TCP/IP based XDR streams with a "record marking"
* layer above tcp (for rpc's use).
*
* Copyright (C) 1984, Sun Microsystems, Inc.
*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
* These routines interface XDRSTREAMS to a tcp/ip connection.
* There is a record marking layer between the xdr stream
* and the tcp transport level. A record is composed on one or more
diff --git a/sunrpc/xdr_ref.c b/sunrpc/xdr_ref.c
index 532804fadb..e2acb84754 100644
--- a/sunrpc/xdr_ref.c
+++ b/sunrpc/xdr_ref.c
@@ -1,43 +1,37 @@
-/* @(#)xdr_reference.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * xdr_reference.c, Generic XDR routines implementation.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Copyright (C) 1987, Sun Microsystems, Inc.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-#if !defined(lint) && defined(SCCSIDS)
-static char sccsid[] = "@(#)xdr_reference.c 1.11 87/08/11 SMI";
-#endif
-
-/*
- * xdr_reference.c, Generic XDR routines implementation.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Copyright (C) 1987, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * These are the "non-trivial" xdr primitives used to serialize and de-serialize
- * "pointers". See xdr.h for more info on the interface to xdr.
+ * These are the "non-trivial" xdr primitives used to serialize and
+ * de-serialize "pointers". See xdr.h for more info on the interface to xdr.
*/
#include <stdio.h>
diff --git a/sunrpc/xdr_sizeof.c b/sunrpc/xdr_sizeof.c
index dc3e19ebe3..d4bada3c4d 100644
--- a/sunrpc/xdr_sizeof.c
+++ b/sunrpc/xdr_sizeof.c
@@ -1,35 +1,34 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * xdr_sizeof.c
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Copyright 1990 Sun Microsystems, Inc.
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
- * xdr_sizeof.c
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Copyright 1990 Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* General purpose routine to see how much space something will use
* when serialized using XDR.
diff --git a/sunrpc/xdr_stdio.c b/sunrpc/xdr_stdio.c
index e73c5a5202..f58465a186 100644
--- a/sunrpc/xdr_stdio.c
+++ b/sunrpc/xdr_stdio.c
@@ -1,36 +1,34 @@
/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * xdr_stdio.c, XDR implementation on standard i/o file.
*
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
*
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ * * Neither the name of Sun Microsystems, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
*
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * xdr_stdio.c, XDR implementation on standard i/o file.
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This set of routines implements a XDR on a stdio stream.
* XDR_ENCODE serializes onto the stream, XDR_DECODE de-serializes
diff --git a/sysdeps/alpha/Implies b/sysdeps/alpha/Implies
deleted file mode 100644
index 18c35908c4..0000000000
--- a/sysdeps/alpha/Implies
+++ /dev/null
@@ -1,6 +0,0 @@
-wordsize-64
-# Alpha uses IEEE 754 single, double and quad precision floating point.
-ieee754/ldbl-128
-ieee754/dbl-64
-ieee754/flt-32
-alpha/soft-fp
diff --git a/sysdeps/alpha/Makefile b/sysdeps/alpha/Makefile
deleted file mode 100644
index 725ae43584..0000000000
--- a/sysdeps/alpha/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (C) 1993, 94, 95, 96, 97, 99 Free Software Foundation, Inc.
-# This file is part of the GNU C Library.
-# Contributed by Brendan Kehoe (brendan@zen.org).
-
-# 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, write to the Free
-# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-# 02111-1307 USA.
-
-ifeq ($(subdir),db2)
-CPPFLAGS += -DHAVE_SPINLOCKS=1 -DHAVE_ASSEM_ALPHA=1
-endif
-
-ifeq ($(subdir),gmon)
-sysdep_routines += _mcount
-endif
-
-ifeq ($(subdir),gnulib)
-sysdep_routines += divl divlu divq divqu reml remlu remq remqu
-endif
-
-ifeq ($(subdir),string)
-sysdep_routines += stxcpy stxncpy
-endif
-
-ifeq ($(subdir),elf)
-# The ld.so startup code cannot use literals until it self-relocates.
-CFLAGS-rtld.c = -mbuild-constants
-endif
-
-# Build everything with full IEEE math support, and with dynamic rounding;
-# there are a number of math routines that are defined to work with the
-# "current" rounding mode, and it's easiest to set this with all of them.
-sysdep-CFLAGS += -mieee -mfp-rounding-mode=d
-
-# libc.so requires about 16k for the small data area, which is well
-# below the 64k maximum.
-pic-ccflag = -fpic
diff --git a/sysdeps/alpha/Subdirs b/sysdeps/alpha/Subdirs
deleted file mode 100644
index 87eadf3024..0000000000
--- a/sysdeps/alpha/Subdirs
+++ /dev/null
@@ -1 +0,0 @@
-soft-fp
diff --git a/sysdeps/alpha/Versions b/sysdeps/alpha/Versions
deleted file mode 100644
index 76b67a6b90..0000000000
--- a/sysdeps/alpha/Versions
+++ /dev/null
@@ -1,13 +0,0 @@
-libc {
- GLIBC_2.0 {
- # functions with special/multiple interfaces
- __divqu; __remqu; __divqs; __remqs; __divlu; __remlu; __divls;
- __remls; __divl; __reml; __divq; __remq; __divqu; __remqu;
- }
-}
-libm {
- GLIBC_2.0 {
- # used in inline functions.
- __atan2;
- }
-}
diff --git a/sysdeps/alpha/__longjmp.S b/sysdeps/alpha/__longjmp.S
deleted file mode 100644
index bed26658de..0000000000
--- a/sysdeps/alpha/__longjmp.S
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright (C) 1992, 1994, 1997, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __ASSEMBLY__
-
-#include <sysdep.h>
-#include <jmpbuf-offsets.h>
-
-
-ENTRY(__longjmp)
-#ifdef PROF
- ldgp gp, 0(pv)
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
- .prologue 1
-#else
- .prologue 0
-#endif
-
- mov a1, v0
- ldq s0, JB_S0*8(a0)
- ldq s1, JB_S1*8(a0)
- ldq s2, JB_S2*8(a0)
- ldq s3, JB_S3*8(a0)
- ldq s4, JB_S4*8(a0)
- ldq s5, JB_S5*8(a0)
- ldq ra, JB_PC*8(a0)
- ldq fp, JB_FP*8(a0)
- ldq t0, JB_SP*8(a0)
- ldt $f2, JB_F2*8(a0)
- ldt $f3, JB_F3*8(a0)
- ldt $f4, JB_F4*8(a0)
- ldt $f5, JB_F5*8(a0)
- ldt $f6, JB_F6*8(a0)
- ldt $f7, JB_F7*8(a0)
- ldt $f8, JB_F8*8(a0)
- ldt $f9, JB_F9*8(a0)
-#ifdef PTR_DEMANGLE
- PTR_DEMANGLE(ra, t1)
- PTR_DEMANGLE2(t0, t1)
- PTR_DEMANGLE2(fp, t1)
-#endif
- cmoveq v0, 1, v0
- mov t0, sp
- ret
-
-END(__longjmp)
diff --git a/sysdeps/alpha/_mcount.S b/sysdeps/alpha/_mcount.S
deleted file mode 100644
index c4c921b4f7..0000000000
--- a/sysdeps/alpha/_mcount.S
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Machine-specific calling sequence for `mcount' profiling function. alpha
- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Assembly stub to invoke _mcount(). Compiler generated code calls
- this stub after executing a function's prologue and without saving any
- registers. It is therefore necessary to preserve a0..a5 as they may
- contain function arguments. To work correctly with frame- less
- functions, it is also necessary to preserve ra. Finally, division
- routines are invoked with a special calling convention and the
- compiler treats those calls as if they were instructions. In
- particular, it doesn't save any of the temporary registers (caller
- saved registers). It is therefore necessary to preserve all
- caller-saved registers as well.
-
- Upon entering _mcount, register $at holds the return address and ra
- holds the return address of the function's caller (selfpc and frompc,
- respectively in gmon.c language...). */
-
-#include <sysdep.h>
-
- .set noat
- .set noreorder
-
-LEAF(_mcount, 0xb0)
- .prologue 0
-
- subq sp, 0xb0, sp
- stq a0, 0x00(sp)
- mov ra, a0 # a0 = caller-pc
- stq a1, 0x08(sp)
- mov $at, a1 # a1 = self-pc
- stq $at, 0x10(sp)
-
- stq a2, 0x18(sp)
- stq a3, 0x20(sp)
- stq a4, 0x28(sp)
- stq a5, 0x30(sp)
- stq ra, 0x38(sp)
- stq gp, 0x40(sp)
-
- br gp, 1f
-1: ldgp gp, 0(gp)
-
- stq t0, 0x48(sp)
- stq t1, 0x50(sp)
- stq t2, 0x58(sp)
- stq t3, 0x60(sp)
- stq t4, 0x68(sp)
- stq t5, 0x70(sp)
- stq t6, 0x78(sp)
-
- stq t7, 0x80(sp)
- stq t8, 0x88(sp)
- stq t9, 0x90(sp)
- stq t10, 0x98(sp)
- stq t11, 0xa0(sp)
- stq v0, 0xa8(sp)
-
- jsr ra, __mcount
-
- ldq a0, 0x00(sp)
- ldq a1, 0x08(sp)
- ldq $at, 0x10(sp) # restore self-pc
- ldq a2, 0x18(sp)
- ldq a3, 0x20(sp)
- ldq a4, 0x28(sp)
- ldq a5, 0x30(sp)
- ldq ra, 0x38(sp)
- ldq gp, 0x40(sp)
- mov $at, pv # make pv point to return address
- ldq t0, 0x48(sp) # this is important under OSF/1 to
- ldq t1, 0x50(sp) # ensure that the code that we return
- ldq t2, 0x58(sp) # can correctly compute its gp
- ldq t3, 0x60(sp)
- ldq t4, 0x68(sp)
- ldq t5, 0x70(sp)
- ldq t6, 0x78(sp)
- ldq t7, 0x80(sp)
- ldq t8, 0x88(sp)
- ldq t9, 0x90(sp)
- ldq t10, 0x98(sp)
- ldq t11, 0xa0(sp)
- ldq v0, 0xa8(sp)
-
- addq sp, 0xb0, sp
- ret zero,($at),1
-
- END(_mcount)
-
-weak_alias (_mcount, mcount)
diff --git a/sysdeps/alpha/add_n.s b/sysdeps/alpha/add_n.s
deleted file mode 100644
index e0dc2fd0c4..0000000000
--- a/sysdeps/alpha/add_n.s
+++ /dev/null
@@ -1,120 +0,0 @@
- # Alpha __mpn_add_n -- Add two limb vectors of the same length > 0 and
- # store sum in a third limb vector.
-
- # Copyright (C) 1995 Free Software Foundation, Inc.
-
- # This file is part of the GNU MP Library.
-
- # The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- # MA 02111-1307, USA.
-
-
- # INPUT PARAMETERS
- # res_ptr $16
- # s1_ptr $17
- # s2_ptr $18
- # size $19
-
- .set noreorder
- .set noat
-.text
- .align 3
- .globl __mpn_add_n
- .ent __mpn_add_n
-__mpn_add_n:
- .frame $30,0,$26,0
-
- ldq $3,0($17)
- ldq $4,0($18)
-
- subq $19,1,$19
- and $19,4-1,$2 # number of limbs in first loop
- bis $31,$31,$0
- beq $2,.L0 # if multiple of 4 limbs, skip first loop
-
- subq $19,$2,$19
-
-.Loop0: subq $2,1,$2
- ldq $5,8($17)
- addq $4,$0,$4
- ldq $6,8($18)
- cmpult $4,$0,$1
- addq $3,$4,$4
- cmpult $4,$3,$0
- stq $4,0($16)
- or $0,$1,$0
-
- addq $17,8,$17
- addq $18,8,$18
- bis $5,$5,$3
- bis $6,$6,$4
- addq $16,8,$16
- bne $2,.Loop0
-
-.L0: beq $19,.Lend
-
- .align 3
-.Loop: subq $19,4,$19
-
- ldq $5,8($17)
- addq $4,$0,$4
- ldq $6,8($18)
- cmpult $4,$0,$1
- addq $3,$4,$4
- cmpult $4,$3,$0
- stq $4,0($16)
- or $0,$1,$0
-
- ldq $3,16($17)
- addq $6,$0,$6
- ldq $4,16($18)
- cmpult $6,$0,$1
- addq $5,$6,$6
- cmpult $6,$5,$0
- stq $6,8($16)
- or $0,$1,$0
-
- ldq $5,24($17)
- addq $4,$0,$4
- ldq $6,24($18)
- cmpult $4,$0,$1
- addq $3,$4,$4
- cmpult $4,$3,$0
- stq $4,16($16)
- or $0,$1,$0
-
- ldq $3,32($17)
- addq $6,$0,$6
- ldq $4,32($18)
- cmpult $6,$0,$1
- addq $5,$6,$6
- cmpult $6,$5,$0
- stq $6,24($16)
- or $0,$1,$0
-
- addq $17,32,$17
- addq $18,32,$18
- addq $16,32,$16
- bne $19,.Loop
-
-.Lend: addq $4,$0,$4
- cmpult $4,$0,$1
- addq $3,$4,$4
- cmpult $4,$3,$0
- stq $4,0($16)
- or $0,$1,$0
- ret $31,($26),1
-
- .end __mpn_add_n
diff --git a/sysdeps/alpha/addmul_1.s b/sysdeps/alpha/addmul_1.s
deleted file mode 100644
index da26c692ae..0000000000
--- a/sysdeps/alpha/addmul_1.s
+++ /dev/null
@@ -1,92 +0,0 @@
- # Alpha 21064 __mpn_addmul_1 -- Multiply a limb vector with a limb and add
- # the result to a second limb vector.
-
- # Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
-
- # This file is part of the GNU MP Library.
-
- # The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- # MA 02111-1307, USA.
-
-
- # INPUT PARAMETERS
- # res_ptr r16
- # s1_ptr r17
- # size r18
- # s2_limb r19
-
- # This code runs at 42 cycles/limb on EV4 and 18 cycles/limb on EV5.
-
- .set noreorder
- .set noat
-.text
- .align 3
- .globl __mpn_addmul_1
- .ent __mpn_addmul_1 2
-__mpn_addmul_1:
- .frame $30,0,$26
-
- ldq $2,0($17) # $2 = s1_limb
- addq $17,8,$17 # s1_ptr++
- subq $18,1,$18 # size--
- mulq $2,$19,$3 # $3 = prod_low
- ldq $5,0($16) # $5 = *res_ptr
- umulh $2,$19,$0 # $0 = prod_high
- beq $18,.Lend1 # jump if size was == 1
- ldq $2,0($17) # $2 = s1_limb
- addq $17,8,$17 # s1_ptr++
- subq $18,1,$18 # size--
- addq $5,$3,$3
- cmpult $3,$5,$4
- stq $3,0($16)
- addq $16,8,$16 # res_ptr++
- beq $18,.Lend2 # jump if size was == 2
-
- .align 3
-.Loop: mulq $2,$19,$3 # $3 = prod_low
- ldq $5,0($16) # $5 = *res_ptr
- addq $4,$0,$0 # cy_limb = cy_limb + 'cy'
- subq $18,1,$18 # size--
- umulh $2,$19,$4 # $4 = cy_limb
- ldq $2,0($17) # $2 = s1_limb
- addq $17,8,$17 # s1_ptr++
- addq $3,$0,$3 # $3 = cy_limb + prod_low
- cmpult $3,$0,$0 # $0 = carry from (cy_limb + prod_low)
- addq $5,$3,$3
- cmpult $3,$5,$5
- stq $3,0($16)
- addq $16,8,$16 # res_ptr++
- addq $5,$0,$0 # combine carries
- bne $18,.Loop
-
-.Lend2: mulq $2,$19,$3 # $3 = prod_low
- ldq $5,0($16) # $5 = *res_ptr
- addq $4,$0,$0 # cy_limb = cy_limb + 'cy'
- umulh $2,$19,$4 # $4 = cy_limb
- addq $3,$0,$3 # $3 = cy_limb + prod_low
- cmpult $3,$0,$0 # $0 = carry from (cy_limb + prod_low)
- addq $5,$3,$3
- cmpult $3,$5,$5
- stq $3,0($16)
- addq $5,$0,$0 # combine carries
- addq $4,$0,$0 # cy_limb = prod_high + cy
- ret $31,($26),1
-.Lend1: addq $5,$3,$3
- cmpult $3,$5,$5
- stq $3,0($16)
- addq $0,$5,$0
- ret $31,($26),1
-
- .end __mpn_addmul_1
diff --git a/sysdeps/alpha/alphaev5/add_n.s b/sysdeps/alpha/alphaev5/add_n.s
deleted file mode 100644
index 1ff8e9543f..0000000000
--- a/sysdeps/alpha/alphaev5/add_n.s
+++ /dev/null
@@ -1,148 +0,0 @@
- # Alpha __mpn_add_n -- Add two limb vectors of the same length > 0 and
- # store sum in a third limb vector.
-
- # Copyright (C) 1995 Free Software Foundation, Inc.
-
- # This file is part of the GNU MP Library.
-
- # The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- # MA 02111-1307, USA.
-
-
- # INPUT PARAMETERS
- # res_ptr $16
- # s1_ptr $17
- # s2_ptr $18
- # size $19
-
- .set noreorder
- .set noat
-.text
- .align 3
- .globl __mpn_add_n
- .ent __mpn_add_n
-__mpn_add_n:
- .frame $30,0,$26,0
-
- or $31,$31,$25 # clear cy
- subq $19,4,$19 # decr loop cnt
- blt $19,.Lend2 # if less than 4 limbs, goto 2nd loop
- # Start software pipeline for 1st loop
- ldq $0,0($18)
- ldq $1,8($18)
- ldq $4,0($17)
- ldq $5,8($17)
- addq $17,32,$17 # update s1_ptr
- ldq $2,16($18)
- addq $0,$4,$20 # 1st main add
- ldq $3,24($18)
- subq $19,4,$19 # decr loop cnt
- ldq $6,-16($17)
- cmpult $20,$0,$25 # compute cy from last add
- ldq $7,-8($17)
- addq $1,$25,$28 # cy add
- addq $18,32,$18 # update s2_ptr
- addq $5,$28,$21 # 2nd main add
- cmpult $28,$25,$8 # compute cy from last add
- blt $19,.Lend1 # if less than 4 limbs remain, jump
- # 1st loop handles groups of 4 limbs in a software pipeline
- .align 4
-.Loop: cmpult $21,$28,$25 # compute cy from last add
- ldq $0,0($18)
- or $8,$25,$25 # combine cy from the two adds
- ldq $1,8($18)
- addq $2,$25,$28 # cy add
- ldq $4,0($17)
- addq $28,$6,$22 # 3rd main add
- ldq $5,8($17)
- cmpult $28,$25,$8 # compute cy from last add
- cmpult $22,$28,$25 # compute cy from last add
- stq $20,0($16)
- or $8,$25,$25 # combine cy from the two adds
- stq $21,8($16)
- addq $3,$25,$28 # cy add
- addq $28,$7,$23 # 4th main add
- cmpult $28,$25,$8 # compute cy from last add
- cmpult $23,$28,$25 # compute cy from last add
- addq $17,32,$17 # update s1_ptr
- or $8,$25,$25 # combine cy from the two adds
- addq $16,32,$16 # update res_ptr
- addq $0,$25,$28 # cy add
- ldq $2,16($18)
- addq $4,$28,$20 # 1st main add
- ldq $3,24($18)
- cmpult $28,$25,$8 # compute cy from last add
- ldq $6,-16($17)
- cmpult $20,$28,$25 # compute cy from last add
- ldq $7,-8($17)
- or $8,$25,$25 # combine cy from the two adds
- subq $19,4,$19 # decr loop cnt
- stq $22,-16($16)
- addq $1,$25,$28 # cy add
- stq $23,-8($16)
- addq $5,$28,$21 # 2nd main add
- addq $18,32,$18 # update s2_ptr
- cmpult $28,$25,$8 # compute cy from last add
- bge $19,.Loop
- # Finish software pipeline for 1st loop
-.Lend1: cmpult $21,$28,$25 # compute cy from last add
- or $8,$25,$25 # combine cy from the two adds
- addq $2,$25,$28 # cy add
- addq $28,$6,$22 # 3rd main add
- cmpult $28,$25,$8 # compute cy from last add
- cmpult $22,$28,$25 # compute cy from last add
- stq $20,0($16)
- or $8,$25,$25 # combine cy from the two adds
- stq $21,8($16)
- addq $3,$25,$28 # cy add
- addq $28,$7,$23 # 4th main add
- cmpult $28,$25,$8 # compute cy from last add
- cmpult $23,$28,$25 # compute cy from last add
- or $8,$25,$25 # combine cy from the two adds
- addq $16,32,$16 # update res_ptr
- stq $22,-16($16)
- stq $23,-8($16)
-.Lend2: addq $19,4,$19 # restore loop cnt
- beq $19,.Lret
- # Start software pipeline for 2nd loop
- ldq $0,0($18)
- ldq $4,0($17)
- subq $19,1,$19
- beq $19,.Lend0
- # 2nd loop handles remaining 1-3 limbs
- .align 4
-.Loop0: addq $0,$25,$28 # cy add
- ldq $0,8($18)
- addq $4,$28,$20 # main add
- ldq $4,8($17)
- addq $18,8,$18
- cmpult $28,$25,$8 # compute cy from last add
- addq $17,8,$17
- stq $20,0($16)
- cmpult $20,$28,$25 # compute cy from last add
- subq $19,1,$19 # decr loop cnt
- or $8,$25,$25 # combine cy from the two adds
- addq $16,8,$16
- bne $19,.Loop0
-.Lend0: addq $0,$25,$28 # cy add
- addq $4,$28,$20 # main add
- cmpult $28,$25,$8 # compute cy from last add
- cmpult $20,$28,$25 # compute cy from last add
- stq $20,0($16)
- or $8,$25,$25 # combine cy from the two adds
-
-.Lret: or $25,$31,$0 # return cy
- ret $31,($26),1
- .end __mpn_add_n
diff --git a/sysdeps/alpha/alphaev5/lshift.s b/sysdeps/alpha/alphaev5/lshift.s
deleted file mode 100644
index e41ce9a91e..0000000000
--- a/sysdeps/alpha/alphaev5/lshift.s
+++ /dev/null
@@ -1,174 +0,0 @@
- # Alpha EV5 __mpn_lshift --
-
- # Copyright (C) 1994, 1995 Free Software Foundation, Inc.
-
- # This file is part of the GNU MP Library.
-
- # The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- # MA 02111-1307, USA.
-
-
- # INPUT PARAMETERS
- # res_ptr r16
- # s1_ptr r17
- # size r18
- # cnt r19
-
- # This code runs at 3.25 cycles/limb on the EV5.
-
- .set noreorder
- .set noat
-.text
- .align 3
- .globl __mpn_lshift
- .ent __mpn_lshift
-__mpn_lshift:
- .frame $30,0,$26,0
-
- s8addq $18,$17,$17 # make r17 point at end of s1
- ldq $4,-8($17) # load first limb
- subq $31,$19,$20
- s8addq $18,$16,$16 # make r16 point at end of RES
- subq $18,1,$18
- and $18,4-1,$28 # number of limbs in first loop
- srl $4,$20,$0 # compute function result
-
- beq $28,.L0
- subq $18,$28,$18
-
- .align 3
-.Loop0: ldq $3,-16($17)
- subq $16,8,$16
- sll $4,$19,$5
- subq $17,8,$17
- subq $28,1,$28
- srl $3,$20,$6
- or $3,$3,$4
- or $5,$6,$8
- stq $8,0($16)
- bne $28,.Loop0
-
-.L0: sll $4,$19,$24
- beq $18,.Lend
- # warm up phase 1
- ldq $1,-16($17)
- subq $18,4,$18
- ldq $2,-24($17)
- ldq $3,-32($17)
- ldq $4,-40($17)
- beq $18,.Lend1
- # warm up phase 2
- srl $1,$20,$7
- sll $1,$19,$21
- srl $2,$20,$8
- ldq $1,-48($17)
- sll $2,$19,$22
- ldq $2,-56($17)
- srl $3,$20,$5
- or $7,$24,$7
- sll $3,$19,$23
- or $8,$21,$8
- srl $4,$20,$6
- ldq $3,-64($17)
- sll $4,$19,$24
- ldq $4,-72($17)
- subq $18,4,$18
- beq $18,.Lend2
- .align 4
- # main loop
-.Loop: stq $7,-8($16)
- or $5,$22,$5
- stq $8,-16($16)
- or $6,$23,$6
-
- srl $1,$20,$7
- subq $18,4,$18
- sll $1,$19,$21
- unop # ldq $31,-96($17)
-
- srl $2,$20,$8
- ldq $1,-80($17)
- sll $2,$19,$22
- ldq $2,-88($17)
-
- stq $5,-24($16)
- or $7,$24,$7
- stq $6,-32($16)
- or $8,$21,$8
-
- srl $3,$20,$5
- unop # ldq $31,-96($17)
- sll $3,$19,$23
- subq $16,32,$16
-
- srl $4,$20,$6
- ldq $3,-96($17)
- sll $4,$19,$24
- ldq $4,-104($17)
-
- subq $17,32,$17
- bne $18,.Loop
- # cool down phase 2/1
-.Lend2: stq $7,-8($16)
- or $5,$22,$5
- stq $8,-16($16)
- or $6,$23,$6
- srl $1,$20,$7
- sll $1,$19,$21
- srl $2,$20,$8
- sll $2,$19,$22
- stq $5,-24($16)
- or $7,$24,$7
- stq $6,-32($16)
- or $8,$21,$8
- srl $3,$20,$5
- sll $3,$19,$23
- srl $4,$20,$6
- sll $4,$19,$24
- # cool down phase 2/2
- stq $7,-40($16)
- or $5,$22,$5
- stq $8,-48($16)
- or $6,$23,$6
- stq $5,-56($16)
- stq $6,-64($16)
- # cool down phase 2/3
- stq $24,-72($16)
- ret $31,($26),1
-
- # cool down phase 1/1
-.Lend1: srl $1,$20,$7
- sll $1,$19,$21
- srl $2,$20,$8
- sll $2,$19,$22
- srl $3,$20,$5
- or $7,$24,$7
- sll $3,$19,$23
- or $8,$21,$8
- srl $4,$20,$6
- sll $4,$19,$24
- # cool down phase 1/2
- stq $7,-8($16)
- or $5,$22,$5
- stq $8,-16($16)
- or $6,$23,$6
- stq $5,-24($16)
- stq $6,-32($16)
- stq $24,-40($16)
- ret $31,($26),1
-
-.Lend: stq $24,-8($16)
- ret $31,($26),1
- .end __mpn_lshift
diff --git a/sysdeps/alpha/alphaev5/rshift.s b/sysdeps/alpha/alphaev5/rshift.s
deleted file mode 100644
index 9948e50002..0000000000
--- a/sysdeps/alpha/alphaev5/rshift.s
+++ /dev/null
@@ -1,172 +0,0 @@
- # Alpha EV5 __mpn_rshift --
-
- # Copyright (C) 1994, 1995 Free Software Foundation, Inc.
-
- # This file is part of the GNU MP Library.
-
- # The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- # MA 02111-1307, USA.
-
-
- # INPUT PARAMETERS
- # res_ptr r16
- # s1_ptr r17
- # size r18
- # cnt r19
-
- # This code runs at 3.25 cycles/limb on the EV5.
-
- .set noreorder
- .set noat
-.text
- .align 3
- .globl __mpn_rshift
- .ent __mpn_rshift
-__mpn_rshift:
- .frame $30,0,$26,0
-
- ldq $4,0($17) # load first limb
- subq $31,$19,$20
- subq $18,1,$18
- and $18,4-1,$28 # number of limbs in first loop
- sll $4,$20,$0 # compute function result
-
- beq $28,.L0
- subq $18,$28,$18
-
- .align 3
-.Loop0: ldq $3,8($17)
- addq $16,8,$16
- srl $4,$19,$5
- addq $17,8,$17
- subq $28,1,$28
- sll $3,$20,$6
- or $3,$3,$4
- or $5,$6,$8
- stq $8,-8($16)
- bne $28,.Loop0
-
-.L0: srl $4,$19,$24
- beq $18,.Lend
- # warm up phase 1
- ldq $1,8($17)
- subq $18,4,$18
- ldq $2,16($17)
- ldq $3,24($17)
- ldq $4,32($17)
- beq $18,.Lend1
- # warm up phase 2
- sll $1,$20,$7
- srl $1,$19,$21
- sll $2,$20,$8
- ldq $1,40($17)
- srl $2,$19,$22
- ldq $2,48($17)
- sll $3,$20,$5
- or $7,$24,$7
- srl $3,$19,$23
- or $8,$21,$8
- sll $4,$20,$6
- ldq $3,56($17)
- srl $4,$19,$24
- ldq $4,64($17)
- subq $18,4,$18
- beq $18,.Lend2
- .align 4
- # main loop
-.Loop: stq $7,0($16)
- or $5,$22,$5
- stq $8,8($16)
- or $6,$23,$6
-
- sll $1,$20,$7
- subq $18,4,$18
- srl $1,$19,$21
- unop # ldq $31,-96($17)
-
- sll $2,$20,$8
- ldq $1,72($17)
- srl $2,$19,$22
- ldq $2,80($17)
-
- stq $5,16($16)
- or $7,$24,$7
- stq $6,24($16)
- or $8,$21,$8
-
- sll $3,$20,$5
- unop # ldq $31,-96($17)
- srl $3,$19,$23
- addq $16,32,$16
-
- sll $4,$20,$6
- ldq $3,88($17)
- srl $4,$19,$24
- ldq $4,96($17)
-
- addq $17,32,$17
- bne $18,.Loop
- # cool down phase 2/1
-.Lend2: stq $7,0($16)
- or $5,$22,$5
- stq $8,8($16)
- or $6,$23,$6
- sll $1,$20,$7
- srl $1,$19,$21
- sll $2,$20,$8
- srl $2,$19,$22
- stq $5,16($16)
- or $7,$24,$7
- stq $6,24($16)
- or $8,$21,$8
- sll $3,$20,$5
- srl $3,$19,$23
- sll $4,$20,$6
- srl $4,$19,$24
- # cool down phase 2/2
- stq $7,32($16)
- or $5,$22,$5
- stq $8,40($16)
- or $6,$23,$6
- stq $5,48($16)
- stq $6,56($16)
- # cool down phase 2/3
- stq $24,64($16)
- ret $31,($26),1
-
- # cool down phase 1/1
-.Lend1: sll $1,$20,$7
- srl $1,$19,$21
- sll $2,$20,$8
- srl $2,$19,$22
- sll $3,$20,$5
- or $7,$24,$7
- srl $3,$19,$23
- or $8,$21,$8
- sll $4,$20,$6
- srl $4,$19,$24
- # cool down phase 1/2
- stq $7,0($16)
- or $5,$22,$5
- stq $8,8($16)
- or $6,$23,$6
- stq $5,16($16)
- stq $6,24($16)
- stq $24,32($16)
- ret $31,($26),1
-
-.Lend: stq $24,0($16)
- ret $31,($26),1
- .end __mpn_rshift
diff --git a/sysdeps/alpha/alphaev5/sub_n.s b/sysdeps/alpha/alphaev5/sub_n.s
deleted file mode 100644
index 3c706cf237..0000000000
--- a/sysdeps/alpha/alphaev5/sub_n.s
+++ /dev/null
@@ -1,149 +0,0 @@
- # Alpha __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
- # store difference in a third limb vector.
-
- # Copyright (C) 1995 Free Software Foundation, Inc.
-
- # This file is part of the GNU MP Library.
-
- # The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- # MA 02111-1307, USA.
-
-
- # INPUT PARAMETERS
- # res_ptr $16
- # s1_ptr $17
- # s2_ptr $18
- # size $19
-
- .set noreorder
- .set noat
-.text
- .align 3
- .globl __mpn_sub_n
- .ent __mpn_sub_n
-__mpn_sub_n:
- .frame $30,0,$26,0
-
- or $31,$31,$25 # clear cy
- subq $19,4,$19 # decr loop cnt
- blt $19,.Lend2 # if less than 4 limbs, goto 2nd loop
- # Start software pipeline for 1st loop
- ldq $0,0($18)
- ldq $1,8($18)
- ldq $4,0($17)
- ldq $5,8($17)
- addq $17,32,$17 # update s1_ptr
- ldq $2,16($18)
- subq $4,$0,$20 # 1st main sub
- ldq $3,24($18)
- subq $19,4,$19 # decr loop cnt
- ldq $6,-16($17)
- cmpult $4,$20,$25 # compute cy from last sub
- ldq $7,-8($17)
- addq $1,$25,$28 # cy add
- addq $18,32,$18 # update s2_ptr
- subq $5,$28,$21 # 2nd main sub
- cmpult $28,$25,$8 # compute cy from last add
- blt $19,.Lend1 # if less than 4 limbs remain, jump
- # 1st loop handles groups of 4 limbs in a software pipeline
- .align 4
-.Loop: cmpult $5,$21,$25 # compute cy from last add
- ldq $0,0($18)
- or $8,$25,$25 # combine cy from the two adds
- ldq $1,8($18)
- addq $2,$25,$28 # cy add
- ldq $4,0($17)
- subq $6,$28,$22 # 3rd main sub
- ldq $5,8($17)
- cmpult $28,$25,$8 # compute cy from last add
- cmpult $6,$22,$25 # compute cy from last add
- stq $20,0($16)
- or $8,$25,$25 # combine cy from the two adds
- stq $21,8($16)
- addq $3,$25,$28 # cy add
- subq $7,$28,$23 # 4th main sub
- cmpult $28,$25,$8 # compute cy from last add
- cmpult $7,$23,$25 # compute cy from last add
- addq $17,32,$17 # update s1_ptr
- or $8,$25,$25 # combine cy from the two adds
- addq $16,32,$16 # update res_ptr
- addq $0,$25,$28 # cy add
- ldq $2,16($18)
- subq $4,$28,$20 # 1st main sub
- ldq $3,24($18)
- cmpult $28,$25,$8 # compute cy from last add
- ldq $6,-16($17)
- cmpult $4,$20,$25 # compute cy from last add
- ldq $7,-8($17)
- or $8,$25,$25 # combine cy from the two adds
- subq $19,4,$19 # decr loop cnt
- stq $22,-16($16)
- addq $1,$25,$28 # cy add
- stq $23,-8($16)
- subq $5,$28,$21 # 2nd main sub
- addq $18,32,$18 # update s2_ptr
- cmpult $28,$25,$8 # compute cy from last add
- bge $19,.Loop
- # Finish software pipeline for 1st loop
-.Lend1: cmpult $5,$21,$25 # compute cy from last add
- or $8,$25,$25 # combine cy from the two adds
- addq $2,$25,$28 # cy add
- subq $6,$28,$22 # 3rd main sub
- cmpult $28,$25,$8 # compute cy from last add
- cmpult $6,$22,$25 # compute cy from last add
- stq $20,0($16)
- or $8,$25,$25 # combine cy from the two adds
- stq $21,8($16)
- addq $3,$25,$28 # cy add
- subq $7,$28,$23 # 4th main sub
- cmpult $28,$25,$8 # compute cy from last add
- cmpult $7,$23,$25 # compute cy from last add
- or $8,$25,$25 # combine cy from the two adds
- addq $16,32,$16 # update res_ptr
- stq $22,-16($16)
- stq $23,-8($16)
-.Lend2: addq $19,4,$19 # restore loop cnt
- beq $19,.Lret
- # Start software pipeline for 2nd loop
- ldq $0,0($18)
- ldq $4,0($17)
- subq $19,1,$19
- beq $19,.Lend0
- # 2nd loop handles remaining 1-3 limbs
- .align 4
-.Loop0: addq $0,$25,$28 # cy add
- ldq $0,8($18)
- subq $4,$28,$20 # main sub
- ldq $1,8($17)
- addq $18,8,$18
- cmpult $28,$25,$8 # compute cy from last add
- addq $17,8,$17
- stq $20,0($16)
- cmpult $4,$20,$25 # compute cy from last add
- subq $19,1,$19 # decr loop cnt
- or $8,$25,$25 # combine cy from the two adds
- addq $16,8,$16
- or $1,$31,$4
- bne $19,.Loop0
-.Lend0: addq $0,$25,$28 # cy add
- subq $4,$28,$20 # main sub
- cmpult $28,$25,$8 # compute cy from last add
- cmpult $4,$20,$25 # compute cy from last add
- stq $20,0($16)
- or $8,$25,$25 # combine cy from the two adds
-
-.Lret: or $25,$31,$0 # return cy
- ret $31,($26),1
- .end __mpn_sub_n
diff --git a/sysdeps/alpha/alphaev6/Implies b/sysdeps/alpha/alphaev6/Implies
deleted file mode 100644
index 0e7fc170ba..0000000000
--- a/sysdeps/alpha/alphaev6/Implies
+++ /dev/null
@@ -1 +0,0 @@
-alpha/alphaev5
diff --git a/sysdeps/alpha/alphaev6/addmul_1.s b/sysdeps/alpha/alphaev6/addmul_1.s
deleted file mode 100644
index a061fb9edb..0000000000
--- a/sysdeps/alpha/alphaev6/addmul_1.s
+++ /dev/null
@@ -1,479 +0,0 @@
- # Alpha ev6 mpn_addmul_1 -- Multiply a limb vector with a limb and add
- # the result to a second limb vector.
- #
- # Copyright (C) 2000 Free Software Foundation, Inc.
- #
- # This file is part of the GNU MP Library.
- #
- # The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- # MA 02111-1307, USA.
-
- # INPUT PARAMETERS
- # res_ptr $16
- # s1_ptr $17
- # size $18
- # s2_limb $19
- #
- # This code runs at 42 cycles/limb on EV4, 18 cycles/limb on EV5, and
- # exactly 3.625 cycles/limb on EV6...
- #
- # This code was written in close cooperation with ev6 pipeline expert
- # Steve Root (root@toober.hlo.dec.com). Any errors are tege's fault, though.
- #
- # Register usages for unrolled loop:
- # 0-3 mul's
- # 4-7 acc's
- # 8-15 mul results
- # 20,21 carry's
- # 22,23 save for stores
- #
- # Sustains 8 mul-adds in 29 cycles in the unrolled inner loop.
- #
- # The stores can issue a cycle late so we have paired no-op's to 'catch'
- # them, so that further disturbance to the schedule is damped.
- #
- # We couldn't pair the loads, because the entangled schedule of the
- # carry's has to happen on one side {0} of the machine. Note, the total
- # use of U0, and the total use of L0 (after attending to the stores).
- # which is part of the reason why....
- #
- # This is a great schedule for the d_cache, a poor schedule for the
- # b_cache. The lockup on U0 means that any stall can't be recovered
- # from. Consider a ldq in L1. say that load gets stalled because it
- # collides with a fill from the b_Cache. On the next cycle, this load
- # gets priority. If first looks at L0, and goes there. The instruction
- # we intended for L0 gets to look at L1, which is NOT where we want
- # it. It either stalls 1, because it can't go in L0, or goes there, and
- # causes a further instruction to stall.
- #
- # So for b_cache, we're likely going to want to put one or more cycles
- # back into the code! And, of course, put in prefetches. For the
- # accumulator, lds, intent to modify. For the multiplier, you might
- # want ldq, evict next, if you're not wanting to use it again soon. Use
- # 256 ahead of present pointer value. At a place where we have an mt
- # followed by a bookkeeping, put the bookkeeping in upper, and the
- # prefetch into lower.
- #
- # Note, the usage of physical registers per cycle is smoothed off, as
- # much as possible.
- #
- # Note, the ldq's and stq's are at the end of the quadpacks. note, we'd
- # like not to have a ldq or stq to preceded a conditional branch in a
- # quadpack. The conditional branch moves the retire pointer one cycle
- # later.
- #
- # Optimization notes:
- # Callee-saves regs: $9 $10 $11 $12 $13 $14 $15 $26 ?$27?
- # Reserved regs: $29 $30 $31
- # Free caller-saves regs in unrolled code: $24 $25 $28
- # We should swap some of the callee-saves regs for some of the free
- # caller-saves regs, saving some overhead cycles.
- # Most importantly, we should write fast code for the 0-7 case.
- # The code we use there are for the 21164, and runs at 7 cycles/limb
- # on the 21264. Should not be hard, if we write specialized code for
- # 1-7 limbs (the one for 0 limbs should be straightforward). We then just
- # need a jump table indexed by the low 3 bits of the count argument.
-
- .set noreorder
- .set noat
- .text
-
- .globl __mpn_addmul_1
- .ent __mpn_addmul_1
-__mpn_addmul_1:
- .frame $30,0,$26,0
- .prologue 0
-
- cmpult $18, 8, $1
- beq $1, $Large
-
- ldq $2, 0($17) # $2 = s1_limb
- addq $17, 8, $17 # s1_ptr++
- subq $18, 1, $18 # size--
- mulq $2, $19, $3 # $3 = prod_low
- ldq $5, 0($16) # $5 = *res_ptr
- umulh $2, $19, $0 # $0 = prod_high
- beq $18, $Lend0b # jump if size was == 1
- ldq $2, 0($17) # $2 = s1_limb
- addq $17, 8, $17 # s1_ptr++
- subq $18, 1, $18 # size--
- addq $5, $3, $3
- cmpult $3, $5, $4
- stq $3, 0($16)
- addq $16, 8, $16 # res_ptr++
- beq $18, $Lend0a # jump if size was == 2
-
- .align 3
-$Loop0: mulq $2, $19, $3 # $3 = prod_low
- ldq $5, 0($16) # $5 = *res_ptr
- addq $4, $0, $0 # cy_limb = cy_limb + 'cy'
- subq $18, 1, $18 # size--
- umulh $2, $19, $4 # $4 = cy_limb
- ldq $2, 0($17) # $2 = s1_limb
- addq $17, 8, $17 # s1_ptr++
- addq $3, $0, $3 # $3 = cy_limb + prod_low
- cmpult $3, $0, $0 # $0 = carry from (cy_limb + prod_low)
- addq $5, $3, $3
- cmpult $3, $5, $5
- stq $3, 0($16)
- addq $16, 8, $16 # res_ptr++
- addq $5, $0, $0 # combine carries
- bne $18, $Loop0
-$Lend0a:
- mulq $2, $19, $3 # $3 = prod_low
- ldq $5, 0($16) # $5 = *res_ptr
- addq $4, $0, $0 # cy_limb = cy_limb + 'cy'
- umulh $2, $19, $4 # $4 = cy_limb
- addq $3, $0, $3 # $3 = cy_limb + prod_low
- cmpult $3, $0, $0 # $0 = carry from (cy_limb + prod_low)
- addq $5, $3, $3
- cmpult $3, $5, $5
- stq $3, 0($16)
- addq $5, $0, $0 # combine carries
- addq $4, $0, $0 # cy_limb = prod_high + cy
- ret $31, ($26), 1
-$Lend0b:
- addq $5, $3, $3
- cmpult $3, $5, $5
- stq $3, 0($16)
- addq $0, $5, $0
- ret $31, ($26), 1
-
-$Large:
- lda $30, -240($30)
- stq $9, 8($30)
- stq $10, 16($30)
- stq $11, 24($30)
- stq $12, 32($30)
- stq $13, 40($30)
- stq $14, 48($30)
- stq $15, 56($30)
-
- and $18, 7, $20 # count for the first loop, 0-7
- srl $18, 3, $18 # count for unrolled loop
- bis $31, $31, $0
- beq $20, $Lunroll
- ldq $2, 0($17) # $2 = s1_limb
- addq $17, 8, $17 # s1_ptr++
- subq $20, 1, $20 # size--
- mulq $2, $19, $3 # $3 = prod_low
- ldq $5, 0($16) # $5 = *res_ptr
- umulh $2, $19, $0 # $0 = prod_high
- beq $20, $Lend1b # jump if size was == 1
- ldq $2, 0($17) # $2 = s1_limb
- addq $17, 8, $17 # s1_ptr++
- subq $20, 1, $20 # size--
- addq $5, $3, $3
- cmpult $3, $5, $4
- stq $3, 0($16)
- addq $16, 8, $16 # res_ptr++
- beq $20, $Lend1a # jump if size was == 2
-
- .align 3
-$Loop1: mulq $2, $19, $3 # $3 = prod_low
- ldq $5, 0($16) # $5 = *res_ptr
- addq $4, $0, $0 # cy_limb = cy_limb + 'cy'
- subq $20, 1, $20 # size--
- umulh $2, $19, $4 # $4 = cy_limb
- ldq $2, 0($17) # $2 = s1_limb
- addq $17, 8, $17 # s1_ptr++
- addq $3, $0, $3 # $3 = cy_limb + prod_low
- cmpult $3, $0, $0 # $0 = carry from (cy_limb + prod_low)
- addq $5, $3, $3
- cmpult $3, $5, $5
- stq $3, 0($16)
- addq $16, 8, $16 # res_ptr++
- addq $5, $0, $0 # combine carries
- bne $20, $Loop1
-
-$Lend1a:
- mulq $2, $19, $3 # $3 = prod_low
- ldq $5, 0($16) # $5 = *res_ptr
- addq $4, $0, $0 # cy_limb = cy_limb + 'cy'
- umulh $2, $19, $4 # $4 = cy_limb
- addq $3, $0, $3 # $3 = cy_limb + prod_low
- cmpult $3, $0, $0 # $0 = carry from (cy_limb + prod_low)
- addq $5, $3, $3
- cmpult $3, $5, $5
- stq $3, 0($16)
- addq $16, 8, $16 # res_ptr++
- addq $5, $0, $0 # combine carries
- addq $4, $0, $0 # cy_limb = prod_high + cy
- br $31, $Lunroll
-$Lend1b:
- addq $5, $3, $3
- cmpult $3, $5, $5
- stq $3, 0($16)
- addq $16, 8, $16 # res_ptr++
- addq $0, $5, $0
-
-$Lunroll:
- lda $17, -16($17) # L1 bookkeeping
- lda $16, -16($16) # L1 bookkeeping
- bis $0, $31, $12
-
- # ____ UNROLLED LOOP SOFTWARE PIPELINE STARTUP ____
-
- ldq $2, 16($17) # L1
- ldq $3, 24($17) # L1
- lda $18, -1($18) # L1 bookkeeping
- ldq $6, 16($16) # L1
- ldq $7, 24($16) # L1
- ldq $0, 32($17) # L1
- mulq $19, $2, $13 # U1
- ldq $1, 40($17) # L1
- umulh $19, $2, $14 # U1
- mulq $19, $3, $15 # U1
- lda $17, 64($17) # L1 bookkeeping
- ldq $4, 32($16) # L1
- ldq $5, 40($16) # L1
- umulh $19, $3, $8 # U1
- ldq $2, -16($17) # L1
- mulq $19, $0, $9 # U1
- ldq $3, -8($17) # L1
- umulh $19, $0, $10 # U1
- addq $6, $13, $6 # L0 lo + acc
- mulq $19, $1, $11 # U1
- cmpult $6, $13, $20 # L0 lo add => carry
- lda $16, 64($16) # L1 bookkeeping
- addq $6, $12, $22 # U0 hi add => answer
- cmpult $22, $12, $21 # L0 hi add => carry
- addq $14, $20, $14 # U0 hi mul + carry
- ldq $6, -16($16) # L1
- addq $7, $15, $23 # L0 lo + acc
- addq $14, $21, $14 # U0 hi mul + carry
- ldq $7, -8($16) # L1
- umulh $19, $1, $12 # U1
- cmpult $23, $15, $20 # L0 lo add => carry
- addq $23, $14, $23 # U0 hi add => answer
- ldq $0, 0($17) # L1
- mulq $19, $2, $13 # U1
- cmpult $23, $14, $21 # L0 hi add => carry
- addq $8, $20, $8 # U0 hi mul + carry
- ldq $1, 8($17) # L1
- umulh $19, $2, $14 # U1
- addq $4, $9, $4 # L0 lo + acc
- stq $22, -48($16) # L0
- stq $23, -40($16) # L1
- mulq $19, $3, $15 # U1
- addq $8, $21, $8 # U0 hi mul + carry
- cmpult $4, $9, $20 # L0 lo add => carry
- addq $4, $8, $22 # U0 hi add => answer
- ble $18, $Lend # U1 bookkeeping
-
- # ____ MAIN UNROLLED LOOP ____
- .align 4
-$Loop:
- bis $31, $31, $31 # U1 mt
- cmpult $22, $8, $21 # L0 hi add => carry
- addq $10, $20, $10 # U0 hi mul + carry
- ldq $4, 0($16) # L1
-
- bis $31, $31, $31 # U1 mt
- addq $5, $11, $23 # L0 lo + acc
- addq $10, $21, $10 # L0 hi mul + carry
- ldq $5, 8($16) # L1
-
- umulh $19, $3, $8 # U1
- cmpult $23, $11, $20 # L0 lo add => carry
- addq $23, $10, $23 # U0 hi add => answer
- ldq $2, 16($17) # L1
-
- mulq $19, $0, $9 # U1
- cmpult $23, $10, $21 # L0 hi add => carry
- addq $12, $20, $12 # U0 hi mul + carry
- ldq $3, 24($17) # L1
-
- umulh $19, $0, $10 # U1
- addq $6, $13, $6 # L0 lo + acc
- stq $22, -32($16) # L0
- stq $23, -24($16) # L1
-
- bis $31, $31, $31 # L0 st slosh
- mulq $19, $1, $11 # U1
- bis $31, $31, $31 # L1 st slosh
- addq $12, $21, $12 # U0 hi mul + carry
-
- cmpult $6, $13, $20 # L0 lo add => carry
- bis $31, $31, $31 # U1 mt
- lda $18, -1($18) # L1 bookkeeping
- addq $6, $12, $22 # U0 hi add => answer
-
- bis $31, $31, $31 # U1 mt
- cmpult $22, $12, $21 # L0 hi add => carry
- addq $14, $20, $14 # U0 hi mul + carry
- ldq $6, 16($16) # L1
-
- bis $31, $31, $31 # U1 mt
- addq $7, $15, $23 # L0 lo + acc
- addq $14, $21, $14 # U0 hi mul + carry
- ldq $7, 24($16) # L1
-
- umulh $19, $1, $12 # U1
- cmpult $23, $15, $20 # L0 lo add => carry
- addq $23, $14, $23 # U0 hi add => answer
- ldq $0, 32($17) # L1
-
- mulq $19, $2, $13 # U1
- cmpult $23, $14, $21 # L0 hi add => carry
- addq $8, $20, $8 # U0 hi mul + carry
- ldq $1, 40($17) # L1
-
- umulh $19, $2, $14 # U1
- addq $4, $9, $4 # U0 lo + acc
- stq $22, -16($16) # L0
- stq $23, -8($16) # L1
-
- bis $31, $31, $31 # L0 st slosh
- mulq $19, $3, $15 # U1
- bis $31, $31, $31 # L1 st slosh
- addq $8, $21, $8 # L0 hi mul + carry
-
- cmpult $4, $9, $20 # L0 lo add => carry
- bis $31, $31, $31 # U1 mt
- lda $17, 64($17) # L1 bookkeeping
- addq $4, $8, $22 # U0 hi add => answer
-
- bis $31, $31, $31 # U1 mt
- cmpult $22, $8, $21 # L0 hi add => carry
- addq $10, $20, $10 # U0 hi mul + carry
- ldq $4, 32($16) # L1
-
- bis $31, $31, $31 # U1 mt
- addq $5, $11, $23 # L0 lo + acc
- addq $10, $21, $10 # L0 hi mul + carry
- ldq $5, 40($16) # L1
-
- umulh $19, $3, $8 # U1
- cmpult $23, $11, $20 # L0 lo add => carry
- addq $23, $10, $23 # U0 hi add => answer
- ldq $2, -16($17) # L1
-
- mulq $19, $0, $9 # U1
- cmpult $23, $10, $21 # L0 hi add => carry
- addq $12, $20, $12 # U0 hi mul + carry
- ldq $3, -8($17) # L1
-
- umulh $19, $0, $10 # U1
- addq $6, $13, $6 # L0 lo + acc
- stq $22, 0($16) # L0
- stq $23, 8($16) # L1
-
- bis $31, $31, $31 # L0 st slosh
- mulq $19, $1, $11 # U1
- bis $31, $31, $31 # L1 st slosh
- addq $12, $21, $12 # U0 hi mul + carry
-
- cmpult $6, $13, $20 # L0 lo add => carry
- bis $31, $31, $31 # U1 mt
- lda $16, 64($16) # L1 bookkeeping
- addq $6, $12, $22 # U0 hi add => answer
-
- bis $31, $31, $31 # U1 mt
- cmpult $22, $12, $21 # L0 hi add => carry
- addq $14, $20, $14 # U0 hi mul + carry
- ldq $6, -16($16) # L1
-
- bis $31, $31, $31 # U1 mt
- addq $7, $15, $23 # L0 lo + acc
- addq $14, $21, $14 # U0 hi mul + carry
- ldq $7, -8($16) # L1
-
- umulh $19, $1, $12 # U1
- cmpult $23, $15, $20 # L0 lo add => carry
- addq $23, $14, $23 # U0 hi add => answer
- ldq $0, 0($17) # L1
-
- mulq $19, $2, $13 # U1
- cmpult $23, $14, $21 # L0 hi add => carry
- addq $8, $20, $8 # U0 hi mul + carry
- ldq $1, 8($17) # L1
-
- umulh $19, $2, $14 # U1
- addq $4, $9, $4 # L0 lo + acc
- stq $22, -48($16) # L0
- stq $23, -40($16) # L1
-
- bis $31, $31, $31 # L0 st slosh
- mulq $19, $3, $15 # U1
- bis $31, $31, $31 # L1 st slosh
- addq $8, $21, $8 # U0 hi mul + carry
-
- cmpult $4, $9, $20 # L0 lo add => carry
- addq $4, $8, $22 # U0 hi add => answer
- bis $31, $31, $31 # L1 mt
- bgt $18, $Loop # U1 bookkeeping
-
-# ____ UNROLLED LOOP SOFTWARE PIPELINE FINISH ____
-$Lend:
- cmpult $22, $8, $21 # L0 hi add => carry
- addq $10, $20, $10 # U0 hi mul + carry
- ldq $4, 0($16) # L1
- addq $5, $11, $23 # L0 lo + acc
- addq $10, $21, $10 # L0 hi mul + carry
- ldq $5, 8($16) # L1
- umulh $19, $3, $8 # U1
- cmpult $23, $11, $20 # L0 lo add => carry
- addq $23, $10, $23 # U0 hi add => answer
- mulq $19, $0, $9 # U1
- cmpult $23, $10, $21 # L0 hi add => carry
- addq $12, $20, $12 # U0 hi mul + carry
- umulh $19, $0, $10 # U1
- addq $6, $13, $6 # L0 lo + acc
- stq $22, -32($16) # L0
- stq $23, -24($16) # L1
- mulq $19, $1, $11 # U1
- addq $12, $21, $12 # U0 hi mul + carry
- cmpult $6, $13, $20 # L0 lo add => carry
- addq $6, $12, $22 # U0 hi add => answer
- cmpult $22, $12, $21 # L0 hi add => carry
- addq $14, $20, $14 # U0 hi mul + carry
- addq $7, $15, $23 # L0 lo + acc
- addq $14, $21, $14 # U0 hi mul + carry
- umulh $19, $1, $12 # U1
- cmpult $23, $15, $20 # L0 lo add => carry
- addq $23, $14, $23 # U0 hi add => answer
- cmpult $23, $14, $21 # L0 hi add => carry
- addq $8, $20, $8 # U0 hi mul + carry
- addq $4, $9, $4 # U0 lo + acc
- stq $22, -16($16) # L0
- stq $23, -8($16) # L1
- bis $31, $31, $31 # L0 st slosh
- addq $8, $21, $8 # L0 hi mul + carry
- cmpult $4, $9, $20 # L0 lo add => carry
- addq $4, $8, $22 # U0 hi add => answer
- cmpult $22, $8, $21 # L0 hi add => carry
- addq $10, $20, $10 # U0 hi mul + carry
- addq $5, $11, $23 # L0 lo + acc
- addq $10, $21, $10 # L0 hi mul + carry
- cmpult $23, $11, $20 # L0 lo add => carry
- addq $23, $10, $23 # U0 hi add => answer
- cmpult $23, $10, $21 # L0 hi add => carry
- addq $12, $20, $12 # U0 hi mul + carry
- stq $22, 0($16) # L0
- stq $23, 8($16) # L1
- addq $12, $21, $0 # U0 hi mul + carry
-
- ldq $9, 8($30)
- ldq $10, 16($30)
- ldq $11, 24($30)
- ldq $12, 32($30)
- ldq $13, 40($30)
- ldq $14, 48($30)
- ldq $15, 56($30)
- lda $30, 240($30)
- ret $31, ($26), 1
-
- .end __mpn_addmul_1
diff --git a/sysdeps/alpha/alphaev6/memchr.S b/sysdeps/alpha/alphaev6/memchr.S
deleted file mode 100644
index 88e91fa988..0000000000
--- a/sysdeps/alpha/alphaev6/memchr.S
+++ /dev/null
@@ -1,193 +0,0 @@
-/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
- EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-
- .arch ev6
- .set noreorder
- .set noat
-
-ENTRY(__memchr)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- # Hack -- if someone passes in (size_t)-1, hoping to just
- # search til the end of the address space, we will overflow
- # below when we find the address of the last byte. Given
- # that we will never have a 56-bit address space, cropping
- # the length is the easiest way to avoid trouble.
- zap $18, 0x80, $5 # U : Bound length
- beq $18, $not_found # U :
- ldq_u $1, 0($16) # L : load first quadword Latency=3
- and $17, 0xff, $17 # E : L L U U : 00000000000000ch
-
- insbl $17, 1, $2 # U : 000000000000ch00
- cmpult $18, 9, $4 # E : small (< 1 quad) string?
- or $2, $17, $17 # E : 000000000000chch
- lda $3, -1($31) # E : U L L U
-
- sll $17, 16, $2 # U : 00000000chch0000
- addq $16, $5, $5 # E : Max search address
- or $2, $17, $17 # E : 00000000chchchch
- sll $17, 32, $2 # U : U L L U : chchchch00000000
-
- or $2, $17, $17 # E : chchchchchchchch
- extql $1, $16, $7 # U : $7 is upper bits
- beq $4, $first_quad # U :
- ldq_u $6, -1($5) # L : L U U L : eight or less bytes to search Latency=3
-
- extqh $6, $16, $6 # U : 2 cycle stall for $6
- mov $16, $0 # E :
- nop # E :
- or $7, $6, $1 # E : L U L U $1 = quadword starting at $16
-
- # Deal with the case where at most 8 bytes remain to be searched
- # in $1. E.g.:
- # $18 = 6
- # $1 = ????c6c5c4c3c2c1
-$last_quad:
- negq $18, $6 # E :
- xor $17, $1, $1 # E :
- srl $3, $6, $6 # U : $6 = mask of $18 bits set
- cmpbge $31, $1, $2 # E : L U L U
-
- nop
- nop
- and $2, $6, $2 # E :
- beq $2, $not_found # U : U L U L
-
-$found_it:
-#if defined(__alpha_fix__) && defined(__alpha_cix__)
- /*
- * Since we are guaranteed to have set one of the bits, we don't
- * have to worry about coming back with a 0x40 out of cttz...
- */
- cttz $2, $3 # U0 :
- addq $0, $3, $0 # E : All done
- nop # E :
- ret # L0 : L U L U
-#else
- /*
- * Slow and clunky. It can probably be improved.
- * An exercise left for others.
- */
- negq $2, $3 # E :
- and $2, $3, $2 # E :
- and $2, 0x0f, $1 # E :
- addq $0, 4, $3 # E :
-
- cmoveq $1, $3, $0 # E : Latency 2, extra map cycle
- nop # E : keep with cmov
- and $2, 0x33, $1 # E :
- addq $0, 2, $3 # E : U L U L : 2 cycle stall on $0
-
- cmoveq $1, $3, $0 # E : Latency 2, extra map cycle
- nop # E : keep with cmov
- and $2, 0x55, $1 # E :
- addq $0, 1, $3 # E : U L U L : 2 cycle stall on $0
-
- cmoveq $1, $3, $0 # E : Latency 2, extra map cycle
- nop
- nop
- ret # L0 : L U L U
-#endif
-
- # Deal with the case where $18 > 8 bytes remain to be
- # searched. $16 may not be aligned.
- .align 4
-$first_quad:
- andnot $16, 0x7, $0 # E :
- insqh $3, $16, $2 # U : $2 = 0000ffffffffffff ($16<0:2> ff)
- xor $1, $17, $1 # E :
- or $1, $2, $1 # E : U L U L $1 = ====ffffffffffff
-
- cmpbge $31, $1, $2 # E :
- bne $2, $found_it # U :
- # At least one byte left to process.
- ldq $1, 8($0) # L :
- subq $5, 1, $18 # E : U L U L
-
- addq $0, 8, $0 # E :
- # Make $18 point to last quad to be accessed (the
- # last quad may or may not be partial).
- andnot $18, 0x7, $18 # E :
- cmpult $0, $18, $2 # E :
- beq $2, $final # U : U L U L
-
- # At least two quads remain to be accessed.
-
- subq $18, $0, $4 # E : $4 <- nr quads to be processed
- and $4, 8, $4 # E : odd number of quads?
- bne $4, $odd_quad_count # U :
- # At least three quads remain to be accessed
- mov $1, $4 # E : L U L U : move prefetched value to correct reg
-
- .align 4
-$unrolled_loop:
- ldq $1, 8($0) # L : prefetch $1
- xor $17, $4, $2 # E :
- cmpbge $31, $2, $2 # E :
- bne $2, $found_it # U : U L U L
-
- addq $0, 8, $0 # E :
- nop # E :
- nop # E :
- nop # E :
-
-$odd_quad_count:
- xor $17, $1, $2 # E :
- ldq $4, 8($0) # L : prefetch $4
- cmpbge $31, $2, $2 # E :
- addq $0, 8, $6 # E :
-
- bne $2, $found_it # U :
- cmpult $6, $18, $6 # E :
- addq $0, 8, $0 # E :
- nop # E :
-
- bne $6, $unrolled_loop # U :
- mov $4, $1 # E : move prefetched value into $1
- nop # E :
- nop # E :
-
-$final: subq $5, $0, $18 # E : $18 <- number of bytes left to do
- nop # E :
- nop # E :
- bne $18, $last_quad # U :
-
-$not_found:
- mov $31, $0 # E :
- nop # E :
- nop # E :
- ret # L0 :
-
- END(__memchr)
-
-weak_alias (__memchr, memchr)
-#if !__BOUNDED_POINTERS__
-weak_alias (__memchr, __ubp_memchr)
-#endif
-libc_hidden_builtin_def (memchr)
diff --git a/sysdeps/alpha/alphaev6/memcpy.S b/sysdeps/alpha/alphaev6/memcpy.S
deleted file mode 100644
index 7cff521da2..0000000000
--- a/sysdeps/alpha/alphaev6/memcpy.S
+++ /dev/null
@@ -1,256 +0,0 @@
-/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/*
- * Much of the information about 21264 scheduling/coding comes from:
- * Compiler Writer's Guide for the Alpha 21264
- * abbreviated as 'CWG' in other comments here
- * ftp.digital.com/pub/Digital/info/semiconductor/literature/dsc-library.html
- * Scheduling notation:
- * E - either cluster
- * U - upper subcluster; U0 - subcluster U0; U1 - subcluster U1
- * L - lower subcluster; L0 - subcluster L0; L1 - subcluster L1
- *
- * Temp usage notes:
- * $0 - destination address
- * $1,$2, - scratch
- */
-
-#include <sysdep.h>
-
- .arch ev6
- .set noreorder
- .set noat
-
-ENTRY(memcpy)
- .prologue 0
-
- mov $16, $0 # E : copy dest to return
- ble $18, $nomoredata # U : done with the copy?
- xor $16, $17, $1 # E : are source and dest alignments the same?
- and $1, 7, $1 # E : are they the same mod 8?
-
- bne $1, $misaligned # U : Nope - gotta do this the slow way
- /* source and dest are same mod 8 address */
- and $16, 7, $1 # E : Are both 0mod8?
- beq $1, $both_0mod8 # U : Yes
- nop # E :
-
- /*
- * source and dest are same misalignment. move a byte at a time
- * until a 0mod8 alignment for both is reached.
- * At least one byte more to move
- */
-
-$head_align:
- ldbu $1, 0($17) # L : grab a byte
- subq $18, 1, $18 # E : count--
- addq $17, 1, $17 # E : src++
- stb $1, 0($16) # L :
- addq $16, 1, $16 # E : dest++
- and $16, 7, $1 # E : Are we at 0mod8 yet?
- ble $18, $nomoredata # U : done with the copy?
- bne $1, $head_align # U :
-
-$both_0mod8:
- cmple $18, 127, $1 # E : Can we unroll the loop?
- bne $1, $no_unroll # U :
- and $16, 63, $1 # E : get mod64 alignment
- beq $1, $do_unroll # U : no single quads to fiddle
-
-$single_head_quad:
- ldq $1, 0($17) # L : get 8 bytes
- subq $18, 8, $18 # E : count -= 8
- addq $17, 8, $17 # E : src += 8
- nop # E :
-
- stq $1, 0($16) # L : store
- addq $16, 8, $16 # E : dest += 8
- and $16, 63, $1 # E : get mod64 alignment
- bne $1, $single_head_quad # U : still not fully aligned
-
-$do_unroll:
- addq $16, 64, $7 # E : Initial (+1 trip) wh64 address
- cmple $18, 127, $1 # E : Can we go through the unrolled loop?
- bne $1, $tail_quads # U : Nope
- nop # E :
-
-$unroll_body:
- wh64 ($7) # L1 : memory subsystem hint: 64 bytes at
- # ($7) are about to be over-written
- ldq $6, 0($17) # L0 : bytes 0..7
- nop # E :
- nop # E :
-
- ldq $4, 8($17) # L : bytes 8..15
- ldq $5, 16($17) # L : bytes 16..23
- addq $7, 64, $7 # E : Update next wh64 address
- nop # E :
-
- ldq $3, 24($17) # L : bytes 24..31
- addq $16, 64, $1 # E : fallback value for wh64
- nop # E :
- nop # E :
-
- addq $17, 32, $17 # E : src += 32 bytes
- stq $6, 0($16) # L : bytes 0..7
- nop # E :
- nop # E :
-
- stq $4, 8($16) # L : bytes 8..15
- stq $5, 16($16) # L : bytes 16..23
- subq $18, 192, $2 # E : At least two more trips to go?
- nop # E :
-
- stq $3, 24($16) # L : bytes 24..31
- addq $16, 32, $16 # E : dest += 32 bytes
- nop # E :
- nop # E :
-
- ldq $6, 0($17) # L : bytes 0..7
- ldq $4, 8($17) # L : bytes 8..15
- cmovlt $2, $1, $7 # E : Latency 2, extra map slot - Use
- # fallback wh64 address if < 2 more trips
- nop # E :
-
- ldq $5, 16($17) # L : bytes 16..23
- ldq $3, 24($17) # L : bytes 24..31
- addq $16, 32, $16 # E : dest += 32
- subq $18, 64, $18 # E : count -= 64
-
- addq $17, 32, $17 # E : src += 32
- stq $6, -32($16) # L : bytes 0..7
- stq $4, -24($16) # L : bytes 8..15
- cmple $18, 63, $1 # E : At least one more trip?
-
- stq $5, -16($16) # L : bytes 16..23
- stq $3, -8($16) # L : bytes 24..31
- nop # E :
- beq $1, $unroll_body
-
-$tail_quads:
-$no_unroll:
- .align 4
- subq $18, 8, $18 # E : At least a quad left?
- blt $18, $less_than_8 # U : Nope
- nop # E :
- nop # E :
-
-$move_a_quad:
- ldq $1, 0($17) # L : fetch 8
- subq $18, 8, $18 # E : count -= 8
- addq $17, 8, $17 # E : src += 8
- nop # E :
-
- stq $1, 0($16) # L : store 8
- addq $16, 8, $16 # E : dest += 8
- bge $18, $move_a_quad # U :
- nop # E :
-
-$less_than_8:
- .align 4
- addq $18, 8, $18 # E : add back for trailing bytes
- ble $18, $nomoredata # U : All-done
- nop # E :
- nop # E :
-
- /* Trailing bytes */
-$tail_bytes:
- subq $18, 1, $18 # E : count--
- ldbu $1, 0($17) # L : fetch a byte
- addq $17, 1, $17 # E : src++
- nop # E :
-
- stb $1, 0($16) # L : store a byte
- addq $16, 1, $16 # E : dest++
- bgt $18, $tail_bytes # U : more to be done?
- nop # E :
-
- /* branching to exit takes 3 extra cycles, so replicate exit here */
- ret $31, ($26), 1 # L0 :
- nop # E :
- nop # E :
- nop # E :
-
-$misaligned:
- mov $0, $4 # E : dest temp
- and $0, 7, $1 # E : dest alignment mod8
- beq $1, $dest_0mod8 # U : life doesnt totally suck
- nop
-
-$aligndest:
- ble $18, $nomoredata # U :
- ldbu $1, 0($17) # L : fetch a byte
- subq $18, 1, $18 # E : count--
- addq $17, 1, $17 # E : src++
-
- stb $1, 0($4) # L : store it
- addq $4, 1, $4 # E : dest++
- and $4, 7, $1 # E : dest 0mod8 yet?
- bne $1, $aligndest # U : go until we are aligned.
-
- /* Source has unknown alignment, but dest is known to be 0mod8 */
-$dest_0mod8:
- subq $18, 8, $18 # E : At least a quad left?
- blt $18, $misalign_tail # U : Nope
- ldq_u $3, 0($17) # L : seed (rotating load) of 8 bytes
- nop # E :
-
-$mis_quad:
- ldq_u $16, 8($17) # L : Fetch next 8
- extql $3, $17, $3 # U : masking
- extqh $16, $17, $1 # U : masking
- bis $3, $1, $1 # E : merged bytes to store
-
- subq $18, 8, $18 # E : count -= 8
- addq $17, 8, $17 # E : src += 8
- stq $1, 0($4) # L : store 8 (aligned)
- mov $16, $3 # E : "rotate" source data
-
- addq $4, 8, $4 # E : dest += 8
- bge $18, $mis_quad # U : More quads to move
- nop
- nop
-
-$misalign_tail:
- addq $18, 8, $18 # E : account for tail stuff
- ble $18, $nomoredata # U :
- nop
- nop
-
-$misalign_byte:
- ldbu $1, 0($17) # L : fetch 1
- subq $18, 1, $18 # E : count--
- addq $17, 1, $17 # E : src++
- nop # E :
-
- stb $1, 0($4) # L : store
- addq $4, 1, $4 # E : dest++
- bgt $18, $misalign_byte # U : more to go?
- nop
-
-
-$nomoredata:
- ret $31, ($26), 1 # L0 :
- nop # E :
- nop # E :
- nop # E :
-
-END(memcpy)
-libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/alpha/alphaev6/memset.S b/sysdeps/alpha/alphaev6/memset.S
deleted file mode 100644
index 3b3c4ba061..0000000000
--- a/sysdeps/alpha/alphaev6/memset.S
+++ /dev/null
@@ -1,224 +0,0 @@
-/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-
- .arch ev6
- .set noat
- .set noreorder
-
-ENTRY(memset)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- /*
- * Serious stalling happens. The only way to mitigate this is to
- * undertake a major re-write to interleave the constant materialization
- * with other parts of the fall-through code. This is important, even
- * though it makes maintenance tougher.
- * Do this later.
- */
- and $17, 255, $1 # E : 00000000000000ch
- insbl $17, 1, $2 # U : 000000000000ch00
- mov $16, $0 # E : return value
- ble $18, $end # U : zero length requested?
-
- addq $18, $16, $6 # E : max address to write to
- or $1, $2, $17 # E : 000000000000chch
- insbl $1, 2, $3 # U : 0000000000ch0000
- insbl $1, 3, $4 # U : 00000000ch000000
-
- or $3, $4, $3 # E : 00000000chch0000
- inswl $17, 4, $5 # U : 0000chch00000000
- xor $16, $6, $1 # E : will complete write be within one quadword?
- inswl $17, 6, $2 # U : chch000000000000
-
- or $17, $3, $17 # E : 00000000chchchch
- or $2, $5, $2 # E : chchchch00000000
- bic $1, 7, $1 # E : fit within a single quadword?
- and $16, 7, $3 # E : Target addr misalignment
-
- or $17, $2, $17 # E : chchchchchchchch
- beq $1, $within_quad # U :
- nop # E :
- beq $3, $aligned # U : target is 0mod8
-
- /*
- * Target address is misaligned, and won't fit within a quadword.
- */
- ldq_u $4, 0($16) # L : Fetch first partial
- mov $16, $5 # E : Save the address
- insql $17, $16, $2 # U : Insert new bytes
- subq $3, 8, $3 # E : Invert (for addressing uses)
-
- addq $18, $3, $18 # E : $18 is new count ($3 is negative)
- mskql $4, $16, $4 # U : clear relevant parts of the quad
- subq $16, $3, $16 # E : $16 is new aligned destination
- or $2, $4, $1 # E : Final bytes
-
- nop
- stq_u $1,0($5) # L : Store result
- nop
- nop
-
- .align 4
-$aligned:
- /*
- * We are now guaranteed to be quad aligned, with at least
- * one partial quad to write.
- */
-
- sra $18, 3, $3 # U : Number of remaining quads to write
- and $18, 7, $18 # E : Number of trailing bytes to write
- mov $16, $5 # E : Save dest address
- beq $3, $no_quad # U : tail stuff only
-
- /*
- * It's worth the effort to unroll this and use wh64 if possible.
- * At this point, entry values are:
- * $16 Current destination address
- * $5 A copy of $16
- * $6 The max quadword address to write to
- * $18 Number trailer bytes
- * $3 Number quads to write
- */
-
- and $16, 0x3f, $2 # E : Forward work (only useful for unrolled loop)
- subq $3, 16, $4 # E : Only try to unroll if > 128 bytes
- subq $2, 0x40, $1 # E : bias counter (aligning stuff 0mod64)
- blt $4, $loop # U :
-
- /*
- * We know we've got at least 16 quads, minimum of one trip
- * through unrolled loop. Do a quad at a time to get us 0mod64
- * aligned.
- */
-
- nop # E :
- nop # E :
- nop # E :
- beq $1, $bigalign # U :
-
-$alignmod64:
- stq $17, 0($5) # L :
- subq $3, 1, $3 # E : For consistency later
- addq $1, 8, $1 # E : Increment towards zero for alignment
- addq $5, 8, $4 # E : Initial wh64 address (filler instruction)
-
- nop
- nop
- addq $5, 8, $5 # E : Inc address
- blt $1, $alignmod64 # U :
-
-$bigalign:
- /*
- * $3 - number quads left to go
- * $5 - target address (aligned 0mod64)
- * $17 - mask of stuff to store
- * Scratch registers available: $7, $2, $4, $1
- * We know that we'll be taking a minimum of one trip through.
- * CWG Section 3.7.6: do not expect a sustained store rate of > 1/cycle
- * Assumes the wh64 needs to be for 2 trips through the loop in the future.
- * The wh64 is issued on for the starting destination address for trip +2
- * through the loop, and if there are less than two trips left, the target
- * address will be for the current trip.
- */
-
-$do_wh64:
- wh64 ($4) # L1 : memory subsystem write hint
- subq $3, 24, $2 # E : For determining future wh64 addresses
- stq $17, 0($5) # L :
- nop # E :
-
- addq $5, 128, $4 # E : speculative target of next wh64
- stq $17, 8($5) # L :
- stq $17, 16($5) # L :
- addq $5, 64, $7 # E : Fallback address for wh64 (== next trip addr)
-
- stq $17, 24($5) # L :
- stq $17, 32($5) # L :
- cmovlt $2, $7, $4 # E : Latency 2, extra mapping cycle
- nop
-
- stq $17, 40($5) # L :
- stq $17, 48($5) # L :
- subq $3, 16, $2 # E : Repeat the loop at least once more?
- nop
-
- stq $17, 56($5) # L :
- addq $5, 64, $5 # E :
- subq $3, 8, $3 # E :
- bge $2, $do_wh64 # U :
-
- nop
- nop
- nop
- beq $3, $no_quad # U : Might have finished already
-
- .align 4
- /*
- * Simple loop for trailing quadwords, or for small amounts
- * of data (where we can't use an unrolled loop and wh64)
- */
-$loop:
- stq $17, 0($5) # L :
- subq $3, 1, $3 # E : Decrement number quads left
- addq $5, 8, $5 # E : Inc address
- bne $3, $loop # U : more?
-
-$no_quad:
- /*
- * Write 0..7 trailing bytes.
- */
- nop # E :
- beq $18, $end # U : All done?
- ldq $7, 0($5) # L :
- mskqh $7, $6, $2 # U : Mask final quad
-
- insqh $17, $6, $4 # U : New bits
- or $2, $4, $1 # E : Put it all together
- stq $1, 0($5) # L : And back to memory
- ret $31,($26),1 # L0 :
-
-$within_quad:
- ldq_u $1, 0($16) # L :
- insql $17, $16, $2 # U : New bits
- mskql $1, $16, $4 # U : Clear old
- or $2, $4, $2 # E : New result
-
- mskql $2, $6, $4 # U :
- mskqh $1, $6, $2 # U :
- or $2, $4, $1 # E :
- stq_u $1, 0($16) # L :
-
-$end:
- nop
- nop
- nop
- ret $31,($26),1 # L0 :
-
- END(memset)
-libc_hidden_builtin_def (memset)
diff --git a/sysdeps/alpha/alphaev6/stxcpy.S b/sysdeps/alpha/alphaev6/stxcpy.S
deleted file mode 100644
index 3c3e7d72bf..0000000000
--- a/sysdeps/alpha/alphaev6/stxcpy.S
+++ /dev/null
@@ -1,328 +0,0 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Copy a null-terminated string from SRC to DST.
-
- This is an internal routine used by strcpy, stpcpy, and strcat.
- As such, it uses special linkage conventions to make implementation
- of these public functions more efficient.
-
- On input:
- t9 = return address
- a0 = DST
- a1 = SRC
-
- On output:
- t8 = bitmask (with one bit set) indicating the last byte written
- a0 = unaligned address of the last *word* written
-
- Furthermore, v0, a3-a5, t11, and t12 are untouched.
-*/
-
-
-#include <sysdep.h>
-
- .arch ev6
- .set noat
- .set noreorder
- .text
-
-/* There is a problem with either gdb (as of 4.16) or gas (as of 2.7) that
- doesn't like putting the entry point for a procedure somewhere in the
- middle of the procedure descriptor. Work around this by putting the
- aligned copy in its own procedure descriptor */
-
-
- .ent stxcpy_aligned
- .align 4
-stxcpy_aligned:
- .frame sp, 0, t9
- .prologue 0
-
- /* On entry to this basic block:
- t0 == the first destination word for masking back in
- t1 == the first source word. */
-
- /* Create the 1st output word and detect 0's in the 1st input word. */
- lda t2, -1 # E : build a mask against false zero
- mskqh t2, a1, t2 # U : detection in the src word (stall)
- mskqh t1, a1, t3 # U :
- ornot t1, t2, t2 # E : (stall)
-
- mskql t0, a1, t0 # U : assemble the first output word
- cmpbge zero, t2, t10 # E : bits set iff null found
- or t0, t3, t1 # E : (stall)
- bne t10, $a_eos # U : (stall)
-
- /* On entry to this basic block:
- t0 == the first destination word for masking back in
- t1 == a source word not containing a null. */
- /* Nops here to separate store quads from load quads */
-
-$a_loop:
- stq_u t1, 0(a0) # L :
- addq a0, 8, a0 # E :
- nop
- nop
-
- ldq_u t1, 0(a1) # L : Latency=3
- addq a1, 8, a1 # E :
- cmpbge zero, t1, t10 # E : (3 cycle stall)
- beq t10, $a_loop # U : (stall for t10)
-
- /* Take care of the final (partial) word store.
- On entry to this basic block we have:
- t1 == the source word containing the null
- t10 == the cmpbge mask that found it. */
-$a_eos:
- negq t10, t6 # E : find low bit set
- and t10, t6, t8 # E : (stall)
- /* For the sake of the cache, don't read a destination word
- if we're not going to need it. */
- and t8, 0x80, t6 # E : (stall)
- bne t6, 1f # U : (stall)
-
- /* We're doing a partial word store and so need to combine
- our source and original destination words. */
- ldq_u t0, 0(a0) # L : Latency=3
- subq t8, 1, t6 # E :
- zapnot t1, t6, t1 # U : clear src bytes >= null (stall)
- or t8, t6, t10 # E : (stall)
-
- zap t0, t10, t0 # E : clear dst bytes <= null
- or t0, t1, t1 # E : (stall)
- nop
- nop
-
-1: stq_u t1, 0(a0) # L :
- ret (t9) # L0 : Latency=3
- nop
- nop
-
- .end stxcpy_aligned
-
- .align 4
- .ent __stxcpy
- .globl __stxcpy
-__stxcpy:
- .frame sp, 0, t9
- .prologue 0
-
- /* Are source and destination co-aligned? */
- xor a0, a1, t0 # E :
- unop # E :
- and t0, 7, t0 # E : (stall)
- bne t0, $unaligned # U : (stall)
-
- /* We are co-aligned; take care of a partial first word. */
- ldq_u t1, 0(a1) # L : load first src word
- and a0, 7, t0 # E : take care not to load a word ...
- addq a1, 8, a1 # E :
- beq t0, stxcpy_aligned # U : ... if we wont need it (stall)
-
- ldq_u t0, 0(a0) # L :
- br stxcpy_aligned # L0 : Latency=3
- nop
- nop
-
-
-/* The source and destination are not co-aligned. Align the destination
- and cope. We have to be very careful about not reading too much and
- causing a SEGV. */
-
- .align 4
-$u_head:
- /* We know just enough now to be able to assemble the first
- full source word. We can still find a zero at the end of it
- that prevents us from outputting the whole thing.
-
- On entry to this basic block:
- t0 == the first dest word, for masking back in, if needed else 0
- t1 == the low bits of the first source word
- t6 == bytemask that is -1 in dest word bytes */
-
- ldq_u t2, 8(a1) # L :
- addq a1, 8, a1 # E :
- extql t1, a1, t1 # U : (stall on a1)
- extqh t2, a1, t4 # U : (stall on a1)
-
- mskql t0, a0, t0 # U :
- or t1, t4, t1 # E :
- mskqh t1, a0, t1 # U : (stall on t1)
- or t0, t1, t1 # E : (stall on t1)
-
- or t1, t6, t6 # E :
- cmpbge zero, t6, t10 # E : (stall)
- lda t6, -1 # E : for masking just below
- bne t10, $u_final # U : (stall)
-
- mskql t6, a1, t6 # U : mask out the bits we have
- or t6, t2, t2 # E : already extracted before (stall)
- cmpbge zero, t2, t10 # E : testing eos (stall)
- bne t10, $u_late_head_exit # U : (stall)
-
- /* Finally, we've got all the stupid leading edge cases taken care
- of and we can set up to enter the main loop. */
-
- stq_u t1, 0(a0) # L : store first output word
- addq a0, 8, a0 # E :
- extql t2, a1, t0 # U : position ho-bits of lo word
- ldq_u t2, 8(a1) # U : read next high-order source word
-
- addq a1, 8, a1 # E :
- cmpbge zero, t2, t10 # E : (stall for t2)
- nop # E :
- bne t10, $u_eos # U : (stall)
-
- /* Unaligned copy main loop. In order to avoid reading too much,
- the loop is structured to detect zeros in aligned source words.
- This has, unfortunately, effectively pulled half of a loop
- iteration out into the head and half into the tail, but it does
- prevent nastiness from accumulating in the very thing we want
- to run as fast as possible.
-
- On entry to this basic block:
- t0 == the shifted high-order bits from the previous source word
- t2 == the unshifted current source word
-
- We further know that t2 does not contain a null terminator. */
-
- .align 3
-$u_loop:
- extqh t2, a1, t1 # U : extract high bits for current word
- addq a1, 8, a1 # E : (stall)
- extql t2, a1, t3 # U : extract low bits for next time (stall)
- addq a0, 8, a0 # E :
-
- or t0, t1, t1 # E : current dst word now complete
- ldq_u t2, 0(a1) # L : Latency=3 load high word for next time
- stq_u t1, -8(a0) # L : save the current word (stall)
- mov t3, t0 # E :
-
- cmpbge zero, t2, t10 # E : test new word for eos
- beq t10, $u_loop # U : (stall)
- nop
- nop
-
- /* We've found a zero somewhere in the source word we just read.
- If it resides in the lower half, we have one (probably partial)
- word to write out, and if it resides in the upper half, we
- have one full and one partial word left to write out.
-
- On entry to this basic block:
- t0 == the shifted high-order bits from the previous source word
- t2 == the unshifted current source word. */
-$u_eos:
- extqh t2, a1, t1 # U :
- or t0, t1, t1 # E : first (partial) source word complete (stall)
- cmpbge zero, t1, t10 # E : is the null in this first bit? (stall)
- bne t10, $u_final # U : (stall)
-
-$u_late_head_exit:
- stq_u t1, 0(a0) # L : the null was in the high-order bits
- addq a0, 8, a0 # E :
- extql t2, a1, t1 # U :
- cmpbge zero, t1, t10 # E : (stall)
-
- /* Take care of a final (probably partial) result word.
- On entry to this basic block:
- t1 == assembled source word
- t10 == cmpbge mask that found the null. */
-$u_final:
- negq t10, t6 # E : isolate low bit set
- and t6, t10, t8 # E : (stall)
- and t8, 0x80, t6 # E : avoid dest word load if we can (stall)
- bne t6, 1f # U : (stall)
-
- ldq_u t0, 0(a0) # E :
- subq t8, 1, t6 # E :
- or t6, t8, t10 # E : (stall)
- zapnot t1, t6, t1 # U : kill source bytes >= null (stall)
-
- zap t0, t10, t0 # U : kill dest bytes <= null (2 cycle data stall)
- or t0, t1, t1 # E : (stall)
- nop
- nop
-
-1: stq_u t1, 0(a0) # L :
- ret (t9) # L0 : Latency=3
- nop
- nop
-
- /* Unaligned copy entry point. */
- .align 4
-$unaligned:
-
- ldq_u t1, 0(a1) # L : load first source word
- and a0, 7, t4 # E : find dest misalignment
- and a1, 7, t5 # E : find src misalignment
- /* Conditionally load the first destination word and a bytemask
- with 0xff indicating that the destination byte is sacrosanct. */
- mov zero, t0 # E :
-
- mov zero, t6 # E :
- beq t4, 1f # U :
- ldq_u t0, 0(a0) # L :
- lda t6, -1 # E :
-
- mskql t6, a0, t6 # U :
- nop
- nop
- nop
-1:
- subq a1, t4, a1 # E : sub dest misalignment from src addr
- /* If source misalignment is larger than dest misalignment, we need
- extra startup checks to avoid SEGV. */
- cmplt t4, t5, t8 # E :
- beq t8, $u_head # U :
- lda t2, -1 # E : mask out leading garbage in source
-
- mskqh t2, t5, t2 # U :
- ornot t1, t2, t3 # E : (stall)
- cmpbge zero, t3, t10 # E : is there a zero? (stall)
- beq t10, $u_head # U : (stall)
-
- /* At this point we've found a zero in the first partial word of
- the source. We need to isolate the valid source data and mask
- it into the original destination data. (Incidentally, we know
- that we'll need at least one byte of that original dest word.) */
-
- ldq_u t0, 0(a0) # L :
- negq t10, t6 # E : build bitmask of bytes <= zero
- and t6, t10, t8 # E : (stall)
- and a1, 7, t5 # E :
-
- subq t8, 1, t6 # E :
- or t6, t8, t10 # E : (stall)
- srl t8, t5, t8 # U : adjust final null return value
- zapnot t2, t10, t2 # U : prepare source word; mirror changes (stall)
-
- and t1, t2, t1 # E : to source validity mask
- extql t2, a1, t2 # U :
- extql t1, a1, t1 # U : (stall)
- andnot t0, t2, t0 # .. e1 : zero place for source to reside (stall)
-
- or t0, t1, t1 # e1 : and put it there
- stq_u t1, 0(a0) # .. e0 : (stall)
- ret (t9) # e1 :
- nop
-
- .end __stxcpy
-
diff --git a/sysdeps/alpha/alphaev6/stxncpy.S b/sysdeps/alpha/alphaev6/stxncpy.S
deleted file mode 100644
index f39c23a886..0000000000
--- a/sysdeps/alpha/alphaev6/stxncpy.S
+++ /dev/null
@@ -1,403 +0,0 @@
-/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Copy no more than COUNT bytes of the null-terminated string from
- SRC to DST.
-
- This is an internal routine used by strncpy, stpncpy, and strncat.
- As such, it uses special linkage conventions to make implementation
- of these public functions more efficient.
-
- On input:
- t9 = return address
- a0 = DST
- a1 = SRC
- a2 = COUNT
-
- Furthermore, COUNT may not be zero.
-
- On output:
- t0 = last word written
- t8 = bitmask (with one bit set) indicating the last byte written
- t10 = bitmask (with one bit set) indicating the byte position of
- the end of the range specified by COUNT
- a0 = unaligned address of the last *word* written
- a2 = the number of full words left in COUNT
-
- Furthermore, v0, a3-a5, t11, and t12 are untouched.
-*/
-
-#include <sysdep.h>
-
- .arch ev6
- .set noat
- .set noreorder
-
-/* There is a problem with either gdb (as of 4.16) or gas (as of 2.7) that
- doesn't like putting the entry point for a procedure somewhere in the
- middle of the procedure descriptor. Work around this by putting the
- aligned copy in its own procedure descriptor */
-
-
- .ent stxncpy_aligned
- .align 4
-stxncpy_aligned:
- .frame sp, 0, t9, 0
- .prologue 0
-
- /* On entry to this basic block:
- t0 == the first destination word for masking back in
- t1 == the first source word. */
-
- /* Create the 1st output word and detect 0's in the 1st input word. */
- lda t2, -1 # E : build a mask against false zero
- mskqh t2, a1, t2 # U : detection in the src word (stall)
- mskqh t1, a1, t3 # U :
- ornot t1, t2, t2 # E : (stall)
-
- mskql t0, a1, t0 # U : assemble the first output word
- cmpbge zero, t2, t7 # E : bits set iff null found
- or t0, t3, t0 # E : (stall)
- beq a2, $a_eoc # U :
-
- bne t7, $a_eos # U :
- nop
- nop
- nop
-
- /* On entry to this basic block:
- t0 == a source word not containing a null. */
-
- /*
- * nops here to:
- * separate store quads from load quads
- * limit of 1 bcond/quad to permit training
- */
-$a_loop:
- stq_u t0, 0(a0) # L :
- addq a0, 8, a0 # E :
- subq a2, 1, a2 # E :
- nop
-
- ldq_u t0, 0(a1) # L :
- addq a1, 8, a1 # E :
- cmpbge zero, t0, t7 # E :
- beq a2, $a_eoc # U :
-
- beq t7, $a_loop # U :
- nop
- nop
- nop
-
- /* Take care of the final (partial) word store. At this point
- the end-of-count bit is set in t7 iff it applies.
-
- On entry to this basic block we have:
- t0 == the source word containing the null
- t7 == the cmpbge mask that found it. */
-
-$a_eos:
- negq t7, t8 # E : find low bit set
- and t7, t8, t8 # E : (stall)
- /* For the sake of the cache, don't read a destination word
- if we're not going to need it. */
- and t8, 0x80, t6 # E : (stall)
- bne t6, 1f # U : (stall)
-
- /* We're doing a partial word store and so need to combine
- our source and original destination words. */
- ldq_u t1, 0(a0) # L :
- subq t8, 1, t6 # E :
- or t8, t6, t7 # E : (stall)
- zapnot t0, t7, t0 # U : clear src bytes > null (stall)
-
- zap t1, t7, t1 # .. e1 : clear dst bytes <= null
- or t0, t1, t0 # e1 : (stall)
- nop
- nop
-
-1: stq_u t0, 0(a0) # L :
- ret (t9) # L0 : Latency=3
- nop
- nop
-
- /* Add the end-of-count bit to the eos detection bitmask. */
-$a_eoc:
- or t10, t7, t7 # E :
- br $a_eos # L0 : Latency=3
- nop
- nop
-
- .end stxncpy_aligned
-
- .align 4
- .ent __stxncpy
- .globl __stxncpy
-__stxncpy:
- .frame sp, 0, t9, 0
- .prologue 0
-
- /* Are source and destination co-aligned? */
- xor a0, a1, t1 # E :
- and a0, 7, t0 # E : find dest misalignment
- and t1, 7, t1 # E : (stall)
- addq a2, t0, a2 # E : bias count by dest misalignment (stall)
-
- subq a2, 1, a2 # E :
- and a2, 7, t2 # E : (stall)
- srl a2, 3, a2 # U : a2 = loop counter = (count - 1)/8 (stall)
- addq zero, 1, t10 # E :
-
- sll t10, t2, t10 # U : t10 = bitmask of last count byte
- bne t1, $unaligned # U :
- /* We are co-aligned; take care of a partial first word. */
- ldq_u t1, 0(a1) # L : load first src word
- addq a1, 8, a1 # E :
-
- beq t0, stxncpy_aligned # U : avoid loading dest word if not needed
- ldq_u t0, 0(a0) # L :
- nop
- nop
-
- br stxncpy_aligned # .. e1 :
- nop
- nop
- nop
-
-
-
-/* The source and destination are not co-aligned. Align the destination
- and cope. We have to be very careful about not reading too much and
- causing a SEGV. */
-
- .align 4
-$u_head:
- /* We know just enough now to be able to assemble the first
- full source word. We can still find a zero at the end of it
- that prevents us from outputting the whole thing.
-
- On entry to this basic block:
- t0 == the first dest word, unmasked
- t1 == the shifted low bits of the first source word
- t6 == bytemask that is -1 in dest word bytes */
-
- ldq_u t2, 8(a1) # L : Latency=3 load second src word
- addq a1, 8, a1 # E :
- mskql t0, a0, t0 # U : mask trailing garbage in dst
- extqh t2, a1, t4 # U : (3 cycle stall on t2)
-
- or t1, t4, t1 # E : first aligned src word complete (stall)
- mskqh t1, a0, t1 # U : mask leading garbage in src (stall)
- or t0, t1, t0 # E : first output word complete (stall)
- or t0, t6, t6 # E : mask original data for zero test (stall)
-
- cmpbge zero, t6, t7 # E :
- beq a2, $u_eocfin # U :
- lda t6, -1 # E :
- nop
-
- bne t7, $u_final # U :
- mskql t6, a1, t6 # U : mask out bits already seen
- stq_u t0, 0(a0) # L : store first output word
- or t6, t2, t2 # E :
-
- cmpbge zero, t2, t7 # E : find nulls in second partial
- addq a0, 8, a0 # E :
- subq a2, 1, a2 # E :
- bne t7, $u_late_head_exit # U :
-
- /* Finally, we've got all the stupid leading edge cases taken care
- of and we can set up to enter the main loop. */
- extql t2, a1, t1 # U : position hi-bits of lo word
- beq a2, $u_eoc # U :
- ldq_u t2, 8(a1) # L : read next high-order source word
- addq a1, 8, a1 # E :
-
- extqh t2, a1, t0 # U : position lo-bits of hi word (stall)
- cmpbge zero, t2, t7 # E :
- nop
- bne t7, $u_eos # U :
-
- /* Unaligned copy main loop. In order to avoid reading too much,
- the loop is structured to detect zeros in aligned source words.
- This has, unfortunately, effectively pulled half of a loop
- iteration out into the head and half into the tail, but it does
- prevent nastiness from accumulating in the very thing we want
- to run as fast as possible.
-
- On entry to this basic block:
- t0 == the shifted low-order bits from the current source word
- t1 == the shifted high-order bits from the previous source word
- t2 == the unshifted current source word
-
- We further know that t2 does not contain a null terminator. */
-
- .align 4
-$u_loop:
- or t0, t1, t0 # E : current dst word now complete
- subq a2, 1, a2 # E : decrement word count
- extql t2, a1, t1 # U : extract high bits for next time
- addq a0, 8, a0 # E :
-
- stq_u t0, -8(a0) # L : save the current word
- beq a2, $u_eoc # U :
- ldq_u t2, 8(a1) # L : Latency=3 load high word for next time
- addq a1, 8, a1 # E :
-
- extqh t2, a1, t0 # U : extract low bits (2 cycle stall)
- cmpbge zero, t2, t7 # E : test new word for eos
- nop
- beq t7, $u_loop # U :
-
- /* We've found a zero somewhere in the source word we just read.
- If it resides in the lower half, we have one (probably partial)
- word to write out, and if it resides in the upper half, we
- have one full and one partial word left to write out.
-
- On entry to this basic block:
- t0 == the shifted low-order bits from the current source word
- t1 == the shifted high-order bits from the previous source word
- t2 == the unshifted current source word. */
-$u_eos:
- or t0, t1, t0 # E : first (partial) source word complete
- nop
- cmpbge zero, t0, t7 # E : is the null in this first bit? (stall)
- bne t7, $u_final # U : (stall)
-
- stq_u t0, 0(a0) # L : the null was in the high-order bits
- addq a0, 8, a0 # E :
- subq a2, 1, a2 # E :
- nop
-
-$u_late_head_exit:
- extql t2, a1, t0 # U :
- cmpbge zero, t0, t7 # E :
- or t7, t10, t6 # E : (stall)
- cmoveq a2, t6, t7 # E : Latency=2, extra map slot (stall)
-
- /* Take care of a final (probably partial) result word.
- On entry to this basic block:
- t0 == assembled source word
- t7 == cmpbge mask that found the null. */
-$u_final:
- negq t7, t6 # E : isolate low bit set
- and t6, t7, t8 # E : (stall)
- and t8, 0x80, t6 # E : avoid dest word load if we can (stall)
- bne t6, 1f # U : (stall)
-
- ldq_u t1, 0(a0) # L :
- subq t8, 1, t6 # E :
- or t6, t8, t7 # E : (stall)
- zapnot t0, t7, t0 # U : kill source bytes > null
-
- zap t1, t7, t1 # U : kill dest bytes <= null
- or t0, t1, t0 # E : (stall)
- nop
- nop
-
-1: stq_u t0, 0(a0) # L :
- ret (t9) # L0 : Latency=3
-
- /* Got to end-of-count before end of string.
- On entry to this basic block:
- t1 == the shifted high-order bits from the previous source word */
-$u_eoc:
- and a1, 7, t6 # E :
- sll t10, t6, t6 # U : (stall)
- and t6, 0xff, t6 # E : (stall)
- bne t6, 1f # U : (stall)
-
- ldq_u t2, 8(a1) # L : load final src word
- nop
- extqh t2, a1, t0 # U : extract low bits for last word (stall)
- or t1, t0, t1 # E : (stall)
-
-1: cmpbge zero, t1, t7 # E :
- mov t1, t0
-
-$u_eocfin: # end-of-count, final word
- or t10, t7, t7 # E :
- br $u_final # L0 : Latency=3
-
- /* Unaligned copy entry point. */
- .align 4
-$unaligned:
-
- ldq_u t1, 0(a1) # L : load first source word
- and a0, 7, t4 # E : find dest misalignment
- and a1, 7, t5 # E : find src misalignment
- /* Conditionally load the first destination word and a bytemask
- with 0xff indicating that the destination byte is sacrosanct. */
- mov zero, t0 # E :
-
- mov zero, t6 # E :
- beq t4, 1f # U :
- ldq_u t0, 0(a0) # L :
- lda t6, -1 # E :
-
- mskql t6, a0, t6 # U :
- nop
- nop
-1: subq a1, t4, a1 # E : sub dest misalignment from src addr
-
- /* If source misalignment is larger than dest misalignment, we need
- extra startup checks to avoid SEGV. */
-
- cmplt t4, t5, t8 # E :
- extql t1, a1, t1 # U : shift src into place
- lda t2, -1 # E : for creating masks later
- beq t8, $u_head # U : (stall)
-
- mskqh t2, t5, t2 # U : begin src byte validity mask
- cmpbge zero, t1, t7 # E : is there a zero?
- extql t2, a1, t2 # U :
- or t7, t10, t5 # E : test for end-of-count too
-
- cmpbge zero, t2, t3 # E :
- cmoveq a2, t5, t7 # E : Latency=2, extra map slot
- nop # E : keep with cmoveq
- andnot t7, t3, t7 # E : (stall)
-
- beq t7, $u_head # U :
- /* At this point we've found a zero in the first partial word of
- the source. We need to isolate the valid source data and mask
- it into the original destination data. (Incidentally, we know
- that we'll need at least one byte of that original dest word.) */
- ldq_u t0, 0(a0) # L :
- negq t7, t6 # E : build bitmask of bytes <= zero
- mskqh t1, t4, t1 # U :
-
- and t6, t7, t8 # E :
- subq t8, 1, t6 # E : (stall)
- or t6, t8, t7 # E : (stall)
- zapnot t2, t7, t2 # U : prepare source word; mirror changes (stall)
-
- zapnot t1, t7, t1 # U : to source validity mask
- andnot t0, t2, t0 # E : zero place for source to reside
- or t0, t1, t0 # E : and put it there (stall both t0, t1)
- stq_u t0, 0(a0) # L : (stall)
-
- ret (t9) # L0 : Latency=3
- nop
- nop
- nop
-
- .end __stxncpy
-
diff --git a/sysdeps/alpha/alphaev67/Implies b/sysdeps/alpha/alphaev67/Implies
deleted file mode 100644
index 49d19c4ad8..0000000000
--- a/sysdeps/alpha/alphaev67/Implies
+++ /dev/null
@@ -1 +0,0 @@
-alpha/alphaev6
diff --git a/sysdeps/alpha/alphaev67/fpu/Implies b/sysdeps/alpha/alphaev67/fpu/Implies
deleted file mode 100644
index 9e3f12d0ac..0000000000
--- a/sysdeps/alpha/alphaev67/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-alpha/alphaev6/fpu
diff --git a/sysdeps/alpha/alphaev67/rawmemchr.S b/sysdeps/alpha/alphaev67/rawmemchr.S
deleted file mode 100644
index 8c7e9423b0..0000000000
--- a/sysdeps/alpha/alphaev67/rawmemchr.S
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Copyright (C) 2000, 2002 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Return pointer to first occurrence of CH in STR. */
-
-#include <sysdep.h>
-
- .arch ev6
- .set noreorder
- .set noat
-
-ENTRY(__rawmemchr)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- ldq_u t0, 0(a0) # L : load first quadword Latency=3
- and a1, 0xff, t3 # E : 00000000000000ch
- insbl a1, 1, t5 # U : 000000000000ch00
- insbl a1, 7, a2 # U : ch00000000000000
-
- insbl t3, 6, a3 # U : 00ch000000000000
- or t5, t3, a1 # E : 000000000000chch
- andnot a0, 7, v0 # E : align our loop pointer
- lda t4, -1 # E : build garbage mask
-
- mskqh t4, a0, t4 # U : only want relevant part of first quad
- or a2, a3, a2 # E : chch000000000000
- inswl a1, 2, t5 # E : 00000000chch0000
- inswl a1, 4, a3 # E : 0000chch00000000
-
- or a1, a2, a1 # E : chch00000000chch
- or a3, t5, t5 # E : 0000chchchch0000
- cmpbge zero, t4, t4 # E : bits set iff byte is garbage
- nop # E :
-
- /* This quad is _very_ serialized. Lots of stalling happens */
- or t5, a1, a1 # E : chchchchchchchch
- xor t0, a1, t1 # E : make bytes == c zero
- cmpbge zero, t1, t0 # E : bits set iff byte == c
- andnot t0, t4, t0 # E : clear garbage bits
-
- cttz t0, a2 # U0 : speculative (in case we get a match)
- nop # E :
- nop # E :
- bne t0, $found # U :
-
- /*
- * Yuk. This loop is going to stall like crazy waiting for the
- * data to be loaded. Not much can be done about it unless it's
- * unrolled multiple times, which is generally unsafe.
- */
-$loop:
- ldq t0, 8(v0) # L : Latency=3
- addq v0, 8, v0 # E :
- xor t0, a1, t1 # E :
- cmpbge zero, t1, t0 # E : bits set iff byte == c
-
- cttz t0, a2 # U0 : speculative (in case we get a match)
- nop # E :
- nop # E :
- beq t0, $loop # U :
-
-$found:
- negq t0, t1 # E : clear all but least set bit
- and t0, t1, t0 # E :
- addq v0, a2, v0 # E : Add in the bit number from above
- ret # L0 :
-
- END(__rawmemchr)
-
-libc_hidden_def (__rawmemchr)
-weak_alias (__rawmemchr, rawmemchr)
diff --git a/sysdeps/alpha/alphaev67/stpcpy.S b/sysdeps/alpha/alphaev67/stpcpy.S
deleted file mode 100644
index b5da4e05d3..0000000000
--- a/sysdeps/alpha/alphaev67/stpcpy.S
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@redhat.com>.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Copy SRC to DEST returning the address of the terminating 0 in DEST. */
-
-#include <sysdep.h>
-
- .arch ev6
- .set noreorder
- .set noat
- .text
-
-ENTRY(__stpcpy)
- ldgp gp, 0(pv)
-#ifdef PROF
- lda AT, _mcount
- jsr AT, (AT), _mcount
-#endif
- .prologue 1
-
- .align 4
- mov a0, v0
- nop
- jsr t9, __stxcpy
-
- # t8 = bitmask (with one bit set) indicating the last byte written
- # a0 = unaligned address of the last *word* written
-
- cttz t8, t8
- andnot a0, 7, a0
- addq a0, t8, v0
- ret
-
- END(__stpcpy)
-
-weak_alias (__stpcpy, stpcpy)
-libc_hidden_def (__stpcpy)
-libc_hidden_builtin_def (stpcpy)
diff --git a/sysdeps/alpha/alphaev67/stpncpy.S b/sysdeps/alpha/alphaev67/stpncpy.S
deleted file mode 100644
index 4d61d71317..0000000000
--- a/sysdeps/alpha/alphaev67/stpncpy.S
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@redhat.com)
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Copy no more then N bytes from SRC to DEST, returning the address of
- the terminating '\0' in DEST. */
-
-#include <sysdep.h>
-
- .arch ev6
- .set noat
- .set noreorder
- .text
-
-ENTRY(__stpncpy)
- ldgp gp, 0(pv)
-#ifdef PROF
- lda AT, _mcount
- jsr AT, (AT), _mcount
-#endif
- .prologue 1
-
- mov a0, v0
- beq a2, $zerocount
-
- .align 4
- nop
- nop
- jsr t9, __stxncpy # do the work of the copy
-
- cttz t8, t4
- zapnot t0, t8, t5
- andnot a0, 7, a0
- bne a2, $multiword # do we have full words left?
-
- subq t8, 1, t2
- subq t10, 1, t3
- cmpult zero, t5, t5
- addq a0, t4, v0
-
- or t2, t8, t2
- or t3, t10, t3
- addq v0, t5, v0
- andnot t3, t2, t3
-
- zap t0, t3, t0
- nop
- stq t0, 0(a0)
- ret
-
-$multiword:
- subq t8, 1, t7 # clear the final bits in the prev word
- cmpult zero, t5, t5
- or t7, t8, t7
- zapnot t0, t7, t0
-
- subq a2, 1, a2
- stq t0, 0(a0)
- addq a0, 8, a1
- beq a2, 1f # loop over full words remaining
-
- nop
- nop
- nop
- blbc a2, 0f
-
- stq zero, 0(a1)
- subq a2, 1, a2
- addq a1, 8, a1
- beq a2, 1f
-
-0: stq zero, 0(a1)
- subq a2, 2, a2
- nop
- nop
-
- stq zero, 8(a1)
- addq a1, 16, a1
- nop
- bne a2, 0b
-
-1: ldq t0, 0(a1) # clear the leading bits in the final word
- subq t10, 1, t7
- addq a0, t4, v0
- nop
-
- or t7, t10, t7
- addq v0, t5, v0
- zap t0, t7, t0
- stq t0, 0(a1)
-
-$zerocount:
- nop
- nop
- nop
- ret
-
- END(__stpncpy)
-
-libc_hidden_def (__stpncpy)
-weak_alias (__stpncpy, stpncpy)
diff --git a/sysdeps/alpha/alphaev67/strcat.S b/sysdeps/alpha/alphaev67/strcat.S
deleted file mode 100644
index ae7c48808a..0000000000
--- a/sysdeps/alpha/alphaev67/strcat.S
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@tamu.edu>, 1996.
- EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Append a null-terminated string from SRC to DST. */
-
-#include <sysdep.h>
-
- .arch ev6
- .set noreorder
- .text
-
-ENTRY(strcat)
- ldgp gp, 0(pv)
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- mov $16, $0 # E : set up return value
- /* Find the end of the string. */
- ldq_u $1, 0($16) # L : load first quadword (a0 may be misaligned)
- lda $2, -1 # E :
- insqh $2, $16, $2 # U :
-
- andnot $16, 7, $16 # E :
- or $2, $1, $1 # E :
- cmpbge $31, $1, $2 # E : bits set iff byte == 0
- bne $2, $found # U :
-
-$loop: ldq $1, 8($16) # L :
- addq $16, 8, $16 # E :
- cmpbge $31, $1, $2 # E :
- beq $2, $loop # U :
-
-$found: cttz $2, $3 # U0 :
- addq $16, $3, $16 # E :
- /* Now do the append. */
- mov $26, $23 # E :
- jmp $31, __stxcpy # L0 :
-
- END(strcat)
-libc_hidden_builtin_def (strcat)
diff --git a/sysdeps/alpha/alphaev67/strchr.S b/sysdeps/alpha/alphaev67/strchr.S
deleted file mode 100644
index 101c7d489a..0000000000
--- a/sysdeps/alpha/alphaev67/strchr.S
+++ /dev/null
@@ -1,101 +0,0 @@
-/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@tamu.edu>, 1996.
- EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Return the address of a given character within a null-terminated
- string, or null if it is not found. */
-
-#include <sysdep.h>
-
- .arch ev6
- .set noreorder
- .set noat
-
-ENTRY(strchr)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- ldq_u t0, 0(a0) # L : load first quadword Latency=3
- and a1, 0xff, t3 # E : 00000000000000ch
- insbl a1, 1, t5 # U : 000000000000ch00
- insbl a1, 7, a2 # U : ch00000000000000
-
- insbl t3, 6, a3 # U : 00ch000000000000
- or t5, t3, a1 # E : 000000000000chch
- andnot a0, 7, v0 # E : align our loop pointer
- lda t4, -1 # E : build garbage mask
-
- mskqh t4, a0, t4 # U : only want relevant part of first quad
- or a2, a3, a2 # E : chch000000000000
- inswl a1, 2, t5 # E : 00000000chch0000
- inswl a1, 4, a3 # E : 0000chch00000000
-
- or a1, a2, a1 # E : chch00000000chch
- or a3, t5, t5 # E : 0000chchchch0000
- cmpbge zero, t0, t2 # E : bits set iff byte == zero
- cmpbge zero, t4, t4 # E : bits set iff byte is garbage
-
- /* This quad is _very_ serialized. Lots of stalling happens */
- or t5, a1, a1 # E : chchchchchchchch
- xor t0, a1, t1 # E : make bytes == c zero
- cmpbge zero, t1, t3 # E : bits set iff byte == c
- or t2, t3, t0 # E : bits set iff char match or zero match
-
- andnot t0, t4, t0 # E : clear garbage bits
- cttz t0, a2 # U0 : speculative (in case we get a match)
- nop # E :
- bne t0, $found # U :
-
- /*
- * Yuk. This loop is going to stall like crazy waiting for the
- * data to be loaded. Not much can be done about it unless it's
- * unrolled multiple times, which is generally unsafe.
- */
-$loop:
- ldq t0, 8(v0) # L : Latency=3
- addq v0, 8, v0 # E :
- xor t0, a1, t1 # E :
- cmpbge zero, t0, t2 # E : bits set iff byte == 0
-
- cmpbge zero, t1, t3 # E : bits set iff byte == c
- or t2, t3, t0 # E :
- cttz t3, a2 # U0 : speculative (in case we get a match)
- beq t0, $loop # U :
-
-$found:
- negq t0, t1 # E : clear all but least set bit
- and t0, t1, t0 # E :
- and t0, t3, t1 # E : bit set iff byte was the char
- addq v0, a2, v0 # E : Add in the bit number from above
-
- cmoveq t1, $31, v0 # E : Two mapping slots, latency = 2
- nop
- nop
- ret # L0 :
-
- END(strchr)
-
-weak_alias (strchr, index)
-libc_hidden_builtin_def (strchr)
diff --git a/sysdeps/alpha/alphaev67/strlen.S b/sysdeps/alpha/alphaev67/strlen.S
deleted file mode 100644
index b83eacceaf..0000000000
--- a/sysdeps/alpha/alphaev67/strlen.S
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
- EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Finds length of a 0-terminated string. */
-
-#include <sysdep.h>
-
- .arch ev6
- .set noreorder
- .set noat
-
-ENTRY(strlen)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- ldq_u $1, 0($16) # L : load first quadword ($16 may be misaligned)
- lda $2, -1($31) # E :
- insqh $2, $16, $2 # U :
- andnot $16, 7, $0 # E :
-
- or $2, $1, $1 # E :
- cmpbge $31, $1, $2 # E : $2 <- bitmask: bit i == 1 <==> i-th byte == 0
- nop # E :
- bne $2, $found # U :
-
-$loop: ldq $1, 8($0) # L :
- addq $0, 8, $0 # E : addr += 8
- cmpbge $31, $1, $2 # E :
- beq $2, $loop # U :
-
-$found:
- cttz $2, $3 # U0 :
- addq $0, $3, $0 # E :
- subq $0, $16, $0 # E :
- ret $31, ($26) # L0 :
-
- END(strlen)
-libc_hidden_builtin_def (strlen)
diff --git a/sysdeps/alpha/alphaev67/strncat.S b/sysdeps/alpha/alphaev67/strncat.S
deleted file mode 100644
index ae3257ca42..0000000000
--- a/sysdeps/alpha/alphaev67/strncat.S
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@tamu.edu>, 1996.
- EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Append no more than COUNT characters from the null-terminated string SRC
- to the null-terminated string DST. Always null-terminate the new DST. */
-
-#include <sysdep.h>
-
- .arch ev6
- .set noreorder
- .text
-
-ENTRY(strncat)
- ldgp gp, 0(pv)
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- mov a0, v0 # set up return value
- beq a2, $zerocount # U :
- /* Find the end of the string. */
- ldq_u t0, 0(a0) # L : load first quadword (a0 may be misaligned)
- lda t1, -1 # E :
-
- insqh t1, v0, t1 # U :
- andnot a0, 7, a0 # E :
- nop # E :
- or t1, t0, t0 # E :
-
- nop # E :
- nop # E :
- cmpbge zero, t0, t1 # E : bits set iff byte == 0
- bne t1, $found # U :
-
-$loop: ldq t0, 8(a0) # L :
- addq a0, 8, a0 # E :
- cmpbge zero, t0, t1 # E :
- beq t1, $loop # U :
-
-$found: cttz t1, t2 # U0 :
- addq a0, t2, a0 # E :
- jsr t9, __stxncpy # L0 : Now do the append.
-
- /* Worry about the null termination. */
-
- cttz t10, t2 # U0: byte offset of end-of-count.
- bic a0, 7, a0 # E : word align the last write address.
- zapnot t0, t8, t1 # U : was last byte a null?
- nop # E :
-
- bne t1, 0f # U :
- nop # E :
- nop # E :
- ret # L0 :
-
-0: addq t2, a0, a0 # E : address of end-of-count
- stb zero, 1(a0) # L :
- nop # E :
- ret # L0 :
-
-$zerocount:
- nop # E :
- nop # E :
- nop # E :
- ret # L0 :
-
- END(strncat)
diff --git a/sysdeps/alpha/alphaev67/strrchr.S b/sysdeps/alpha/alphaev67/strrchr.S
deleted file mode 100644
index c46a3df4f8..0000000000
--- a/sysdeps/alpha/alphaev67/strrchr.S
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Return the address of the last occurrence of a given character
- within a null-terminated string, or null if it is not found. */
-
-#include <sysdep.h>
-
- .arch ev6
- .set noreorder
- .set noat
-
-ENTRY(strrchr)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- and a1, 0xff, t2 # E : 00000000000000ch
- insbl a1, 1, t4 # U : 000000000000ch00
- insbl a1, 2, t5 # U : 0000000000ch0000
- ldq_u t0, 0(a0) # L : load first quadword Latency=3
-
- mov zero, t6 # E : t6 is last match aligned addr
- or t2, t4, a1 # E : 000000000000chch
- sll t5, 8, t3 # U : 00000000ch000000
- mov zero, t8 # E : t8 is last match byte compare mask
-
- andnot a0, 7, v0 # E : align source addr
- or t5, t3, t3 # E : 00000000chch0000
- sll a1, 32, t2 # U : 0000chch00000000
- sll a1, 48, t4 # U : chch000000000000
-
- or t4, a1, a1 # E : chch00000000chch
- or t2, t3, t2 # E : 0000chchchch0000
- or a1, t2, a1 # E : chchchchchchchch
- lda t5, -1 # E : build garbage mask
-
- cmpbge zero, t0, t1 # E : bits set iff byte == zero
- mskqh t5, a0, t4 # E : Complete garbage mask
- xor t0, a1, t2 # E : make bytes == c zero
- cmpbge zero, t4, t4 # E : bits set iff byte is garbage
-
- cmpbge zero, t2, t3 # E : bits set iff byte == c
- andnot t1, t4, t1 # E : clear garbage from null test
- andnot t3, t4, t3 # E : clear garbage from char test
- bne t1, $eos # U : did we already hit the terminator?
-
- /* Character search main loop */
-$loop:
- ldq t0, 8(v0) # L : load next quadword
- cmovne t3, v0, t6 # E : save previous comparisons match
- nop # : Latency=2, extra map slot (keep nop with cmov)
- nop
-
- cmovne t3, t3, t8 # E : Latency=2, extra map slot
- nop # : keep with cmovne
- addq v0, 8, v0 # E :
- xor t0, a1, t2 # E :
-
- cmpbge zero, t0, t1 # E : bits set iff byte == zero
- cmpbge zero, t2, t3 # E : bits set iff byte == c
- beq t1, $loop # U : if we havnt seen a null, loop
- nop
-
- /* Mask out character matches after terminator */
-$eos:
- negq t1, t4 # E : isolate first null byte match
- and t1, t4, t4 # E :
- subq t4, 1, t5 # E : build a mask of the bytes upto...
- or t4, t5, t4 # E : ... and including the null
-
- and t3, t4, t3 # E : mask out char matches after null
- cmovne t3, t3, t8 # E : save it, if match found Latency=2, extra map slot
- nop # : Keep with cmovne
- nop
-
- cmovne t3, v0, t6 # E :
- nop # : Keep with cmovne
- /* Locate the address of the last matched character */
- ctlz t8, t2 # U0 : Latency=3 (0x40 for t8=0)
- nop
-
- cmoveq t8, 0x3f, t2 # E : Compensate for case when no match is seen
- nop # E : hide the cmov latency (2) behind ctlz latency
- lda t5, 0x3f($31) # E :
- subq t5, t2, t5 # E : Normalize leading zero count
-
- addq t6, t5, v0 # E : and add to quadword address
- ret # L0 : Latency=3
- nop
- nop
-
-END(strrchr)
-
-weak_alias (strrchr, rindex)
-libc_hidden_builtin_def (strrchr)
diff --git a/sysdeps/alpha/backtrace.c b/sysdeps/alpha/backtrace.c
deleted file mode 100644
index 297029456d..0000000000
--- a/sysdeps/alpha/backtrace.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/ia64/backtrace.c>
diff --git a/sysdeps/alpha/bb_init_func.S b/sysdeps/alpha/bb_init_func.S
deleted file mode 100644
index f711c8cb74..0000000000
--- a/sysdeps/alpha/bb_init_func.S
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* __bb_init_func is invoked at the beginning of each function, before
- any registers have been saved. It is therefore safe to use any
- caller-saved (call-used) registers (except for argument registers
- a1-a5). */
-
-#include <sysdep.h>
-
-/*
- * These offsets should match with "struct bb" declared in gcc/libgcc2.c.
- */
-#define ZERO_WORD 0x00
-#define NEXT 0x20
-
- .set noat
- .set noreorder
-
-ENTRY(__bb_init_func)
- .prologue 0
-
- ldq t0, ZERO_WORD(a0) /* t0 <- blocks->zero_word */
- beq t0, init /* not initialized yet -> */
- ret
-
-END(__bb_init_func)
-
- .ent init
-init:
- .frame sp, 0x38, ra, 0
- subq sp, 0x38, sp
- .prologue 0
-
- stq pv, 0x30(sp)
- br pv, 1f
-1: ldgp gp, 0(pv)
-
- ldiq t1, __bb_head
- lda t3, _gmonparam
- ldq t2, 0(t1)
- ldl t3, 0(t3) /* t3 = _gmonparam.state */
- lda t0, 1
- stq t0, ZERO_WORD(a0) /* blocks->zero_word = 1 */
- stq t2, NEXT(a0) /* blocks->next = __bb_head */
- stq a0, 0(t1)
- bne t2, $leave
- beq t3, $leave /* t3 == GMON_PROF_ON? yes -> */
-
- /* also need to initialize destructor: */
- stq ra, 0x00(sp)
- lda a0, __bb_exit_func
- stq a1, 0x08(sp)
- lda pv, atexit
- stq a2, 0x10(sp)
- stq a3, 0x18(sp)
- stq a4, 0x20(sp)
- stq a5, 0x28(sp)
- jsr ra, (pv), atexit
- ldq ra, 0x00(sp)
- ldq a1, 0x08(sp)
- ldq a2, 0x10(sp)
- ldq a3, 0x18(sp)
- ldq a4, 0x20(sp)
- ldq a5, 0x28(sp)
-
-$leave: ldq pv, 0x30(sp)
- addq sp, 0x38, sp
- ret
-
- .end init
diff --git a/sysdeps/alpha/bits/atomic.h b/sysdeps/alpha/bits/atomic.h
deleted file mode 100644
index 36a740c758..0000000000
--- a/sysdeps/alpha/bits/atomic.h
+++ /dev/null
@@ -1,369 +0,0 @@
-/* Copyright (C) 2003 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <stdint.h>
-
-typedef int8_t atomic8_t;
-typedef uint8_t uatomic8_t;
-typedef int_fast8_t atomic_fast8_t;
-typedef uint_fast8_t uatomic_fast8_t;
-
-typedef int16_t atomic16_t;
-typedef uint16_t uatomic16_t;
-typedef int_fast16_t atomic_fast16_t;
-typedef uint_fast16_t uatomic_fast16_t;
-
-typedef int32_t atomic32_t;
-typedef uint32_t uatomic32_t;
-typedef int_fast32_t atomic_fast32_t;
-typedef uint_fast32_t uatomic_fast32_t;
-
-typedef int64_t atomic64_t;
-typedef uint64_t uatomic64_t;
-typedef int_fast64_t atomic_fast64_t;
-typedef uint_fast64_t uatomic_fast64_t;
-
-typedef intptr_t atomicptr_t;
-typedef uintptr_t uatomicptr_t;
-typedef intmax_t atomic_max_t;
-typedef uintmax_t uatomic_max_t;
-
-
-#ifdef UP
-# define __MB /* nothing */
-#else
-# define __MB " mb\n"
-#endif
-
-
-/* Compare and exchange. For all of the "xxx" routines, we expect a
- "__prev" and a "__cmp" variable to be provided by the enclosing scope,
- in which values are returned. */
-
-#define __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2) \
-({ \
- unsigned long __tmp, __snew, __addr64; \
- __asm__ __volatile__ ( \
- mb1 \
- " andnot %[__addr8],7,%[__addr64]\n" \
- " insbl %[__new],%[__addr8],%[__snew]\n" \
- "1: ldq_l %[__tmp],0(%[__addr64])\n" \
- " extbl %[__tmp],%[__addr8],%[__prev]\n" \
- " cmpeq %[__prev],%[__old],%[__cmp]\n" \
- " beq %[__cmp],2f\n" \
- " mskbl %[__tmp],%[__addr8],%[__tmp]\n" \
- " or %[__snew],%[__tmp],%[__tmp]\n" \
- " stq_c %[__tmp],0(%[__addr64])\n" \
- " beq %[__tmp],1b\n" \
- mb2 \
- "2:" \
- : [__prev] "=&r" (__prev), \
- [__snew] "=&r" (__snew), \
- [__tmp] "=&r" (__tmp), \
- [__cmp] "=&r" (__cmp), \
- [__addr64] "=&r" (__addr64) \
- : [__addr8] "r" (mem), \
- [__old] "Ir" ((uint64_t)(uint8_t)(uint64_t)(old)), \
- [__new] "r" (new) \
- : "memory"); \
-})
-
-#define __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2) \
-({ \
- unsigned long __tmp, __snew, __addr64; \
- __asm__ __volatile__ ( \
- mb1 \
- " andnot %[__addr16],7,%[__addr64]\n" \
- " inswl %[__new],%[__addr16],%[__snew]\n" \
- "1: ldq_l %[__tmp],0(%[__addr64])\n" \
- " extwl %[__tmp],%[__addr16],%[__prev]\n" \
- " cmpeq %[__prev],%[__old],%[__cmp]\n" \
- " beq %[__cmp],2f\n" \
- " mskwl %[__tmp],%[__addr16],%[__tmp]\n" \
- " or %[__snew],%[__tmp],%[__tmp]\n" \
- " stq_c %[__tmp],0(%[__addr64])\n" \
- " beq %[__tmp],1b\n" \
- mb2 \
- "2:" \
- : [__prev] "=&r" (__prev), \
- [__snew] "=&r" (__snew), \
- [__tmp] "=&r" (__tmp), \
- [__cmp] "=&r" (__cmp), \
- [__addr64] "=&r" (__addr64) \
- : [__addr16] "r" (mem), \
- [__old] "Ir" ((uint64_t)(uint16_t)(uint64_t)(old)), \
- [__new] "r" (new) \
- : "memory"); \
-})
-
-#define __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2) \
-({ \
- __asm__ __volatile__ ( \
- mb1 \
- "1: ldl_l %[__prev],%[__mem]\n" \
- " cmpeq %[__prev],%[__old],%[__cmp]\n" \
- " beq %[__cmp],2f\n" \
- " mov %[__new],%[__cmp]\n" \
- " stl_c %[__cmp],%[__mem]\n" \
- " beq %[__cmp],1b\n" \
- mb2 \
- "2:" \
- : [__prev] "=&r" (__prev), \
- [__cmp] "=&r" (__cmp) \
- : [__mem] "m" (*(mem)), \
- [__old] "Ir" ((uint64_t)(atomic32_t)(uint64_t)(old)), \
- [__new] "Ir" (new) \
- : "memory"); \
-})
-
-#define __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2) \
-({ \
- __asm__ __volatile__ ( \
- mb1 \
- "1: ldq_l %[__prev],%[__mem]\n" \
- " cmpeq %[__prev],%[__old],%[__cmp]\n" \
- " beq %[__cmp],2f\n" \
- " mov %[__new],%[__cmp]\n" \
- " stq_c %[__cmp],%[__mem]\n" \
- " beq %[__cmp],1b\n" \
- mb2 \
- "2:" \
- : [__prev] "=&r" (__prev), \
- [__cmp] "=&r" (__cmp) \
- : [__mem] "m" (*(mem)), \
- [__old] "Ir" ((uint64_t)(old)), \
- [__new] "Ir" (new) \
- : "memory"); \
-})
-
-/* For all "bool" routines, we return FALSE if exchange succesful. */
-
-#define __arch_compare_and_exchange_bool_8_int(mem, new, old, mb1, mb2) \
-({ unsigned long __prev; int __cmp; \
- __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2); \
- !__cmp; })
-
-#define __arch_compare_and_exchange_bool_16_int(mem, new, old, mb1, mb2) \
-({ unsigned long __prev; int __cmp; \
- __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2); \
- !__cmp; })
-
-#define __arch_compare_and_exchange_bool_32_int(mem, new, old, mb1, mb2) \
-({ unsigned long __prev; int __cmp; \
- __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2); \
- !__cmp; })
-
-#define __arch_compare_and_exchange_bool_64_int(mem, new, old, mb1, mb2) \
-({ unsigned long __prev; int __cmp; \
- __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2); \
- !__cmp; })
-
-/* For all "val" routines, return the old value whether exchange
- successful or not. */
-
-#define __arch_compare_and_exchange_val_8_int(mem, new, old, mb1, mb2) \
-({ unsigned long __prev; int __cmp; \
- __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2); \
- (typeof (*mem))__prev; })
-
-#define __arch_compare_and_exchange_val_16_int(mem, new, old, mb1, mb2) \
-({ unsigned long __prev; int __cmp; \
- __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2); \
- (typeof (*mem))__prev; })
-
-#define __arch_compare_and_exchange_val_32_int(mem, new, old, mb1, mb2) \
-({ unsigned long __prev; int __cmp; \
- __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2); \
- (typeof (*mem))__prev; })
-
-#define __arch_compare_and_exchange_val_64_int(mem, new, old, mb1, mb2) \
-({ unsigned long __prev; int __cmp; \
- __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2); \
- (typeof (*mem))__prev; })
-
-/* 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, "", __MB)
-
-#define atomic_compare_and_exchange_val_acq(mem, new, old) \
- __atomic_val_bysize (__arch_compare_and_exchange_val, int, \
- mem, new, old, "", __MB)
-
-/* 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, __MB, "")
-
-#define atomic_compare_and_exchange_val_rel(mem, new, old) \
- __atomic_val_bysize (__arch_compare_and_exchange_val, int, \
- mem, new, old, __MB, "")
-
-
-/* Atomically store value and return the previous value. */
-
-#define __arch_exchange_8_int(mem, value, mb1, mb2) \
-({ \
- unsigned long __ret, __tmp, __addr64, __sval; \
- __asm__ __volatile__ ( \
- mb1 \
- " andnot %[__addr8],7,%[__addr64]\n" \
- " insbl %[__value],%[__addr8],%[__sval]\n" \
- "1: ldq_l %[__tmp],0(%[__addr64])\n" \
- " extbl %[__tmp],%[__addr8],%[__ret]\n" \
- " mskbl %[__tmp],%[__addr8],%[__tmp]\n" \
- " or %[__sval],%[__tmp],%[__tmp]\n" \
- " stq_c %[__tmp],0(%[__addr64])\n" \
- " beq %[__tmp],1b\n" \
- mb2 \
- : [__ret] "=&r" (__ret), \
- [__sval] "=&r" (__sval), \
- [__tmp] "=&r" (__tmp), \
- [__addr64] "=&r" (__addr64) \
- : [__addr8] "r" (mem), \
- [__value] "r" (value) \
- : "memory"); \
- __ret; })
-
-#define __arch_exchange_16_int(mem, value, mb1, mb2) \
-({ \
- unsigned long __ret, __tmp, __addr64, __sval; \
- __asm__ __volatile__ ( \
- mb1 \
- " andnot %[__addr16],7,%[__addr64]\n" \
- " inswl %[__value],%[__addr16],%[__sval]\n" \
- "1: ldq_l %[__tmp],0(%[__addr64])\n" \
- " extwl %[__tmp],%[__addr16],%[__ret]\n" \
- " mskwl %[__tmp],%[__addr16],%[__tmp]\n" \
- " or %[__sval],%[__tmp],%[__tmp]\n" \
- " stq_c %[__tmp],0(%[__addr64])\n" \
- " beq %[__tmp],1b\n" \
- mb2 \
- : [__ret] "=&r" (__ret), \
- [__sval] "=&r" (__sval), \
- [__tmp] "=&r" (__tmp), \
- [__addr64] "=&r" (__addr64) \
- : [__addr16] "r" (mem), \
- [__value] "r" (value) \
- : "memory"); \
- __ret; })
-
-#define __arch_exchange_32_int(mem, value, mb1, mb2) \
-({ \
- signed int __ret, __tmp; \
- __asm__ __volatile__ ( \
- mb1 \
- "1: ldl_l %[__ret],%[__mem]\n" \
- " mov %[__val],%[__tmp]\n" \
- " stl_c %[__tmp],%[__mem]\n" \
- " beq %[__tmp],1b\n" \
- mb2 \
- : [__ret] "=&r" (__ret), \
- [__tmp] "=&r" (__tmp) \
- : [__mem] "m" (*(mem)), \
- [__val] "Ir" (value) \
- : "memory"); \
- __ret; })
-
-#define __arch_exchange_64_int(mem, value, mb1, mb2) \
-({ \
- unsigned long __ret, __tmp; \
- __asm__ __volatile__ ( \
- mb1 \
- "1: ldq_l %[__ret],%[__mem]\n" \
- " mov %[__val],%[__tmp]\n" \
- " stq_c %[__tmp],%[__mem]\n" \
- " beq %[__tmp],1b\n" \
- mb2 \
- : [__ret] "=&r" (__ret), \
- [__tmp] "=&r" (__tmp) \
- : [__mem] "m" (*(mem)), \
- [__val] "Ir" (value) \
- : "memory"); \
- __ret; })
-
-#define atomic_exchange_acq(mem, value) \
- __atomic_val_bysize (__arch_exchange, int, mem, value, "", __MB)
-
-#define atomic_exchange_rel(mem, value) \
- __atomic_val_bysize (__arch_exchange, int, mem, value, __MB, "")
-
-
-/* Atomically add value and return the previous (unincremented) value. */
-
-#define __arch_exchange_and_add_8_int(mem, value, mb1, mb2) \
- ({ __builtin_trap (); 0; })
-
-#define __arch_exchange_and_add_16_int(mem, value, mb1, mb2) \
- ({ __builtin_trap (); 0; })
-
-#define __arch_exchange_and_add_32_int(mem, value, mb1, mb2) \
-({ \
- signed int __ret, __tmp; \
- __asm__ __volatile__ ( \
- mb1 \
- "1: ldl_l %[__ret],%[__mem]\n" \
- " addl %[__ret],%[__val],%[__tmp]\n" \
- " stl_c %[__tmp],%[__mem]\n" \
- " beq %[__tmp],1b\n" \
- mb2 \
- : [__ret] "=&r" (__ret), \
- [__tmp] "=&r" (__tmp) \
- : [__mem] "m" (*(mem)), \
- [__val] "Ir" ((signed int)(value)) \
- : "memory"); \
- __ret; })
-
-#define __arch_exchange_and_add_64_int(mem, value, mb1, mb2) \
-({ \
- unsigned long __ret, __tmp; \
- __asm__ __volatile__ ( \
- mb1 \
- "1: ldq_l %[__ret],%[__mem]\n" \
- " addq %[__ret],%[__val],%[__tmp]\n" \
- " stq_c %[__tmp],%[__mem]\n" \
- " beq %[__tmp],1b\n" \
- mb2 \
- : [__ret] "=&r" (__ret), \
- [__tmp] "=&r" (__tmp) \
- : [__mem] "m" (*(mem)), \
- [__val] "Ir" ((unsigned long)(value)) \
- : "memory"); \
- __ret; })
-
-/* ??? Barrier semantics for atomic_exchange_and_add appear to be
- undefined. Use full barrier for now, as that's safe. */
-#define atomic_exchange_and_add(mem, value) \
- __atomic_val_bysize (__arch_exchange_and_add, int, mem, value, __MB, __MB)
-
-
-/* ??? Blah, I'm lazy. Implement these later. Can do better than the
- compare-and-exchange loop provided by generic code.
-
-#define atomic_decrement_if_positive(mem)
-#define atomic_bit_test_set(mem, bit)
-
-*/
-
-#ifndef UP
-# define atomic_full_barrier() __asm ("mb" : : : "memory");
-# define atomic_read_barrier() __asm ("mb" : : : "memory");
-# define atomic_write_barrier() __asm ("wmb" : : : "memory");
-#endif
diff --git a/sysdeps/alpha/bits/endian.h b/sysdeps/alpha/bits/endian.h
deleted file mode 100644
index 8a16e14e24..0000000000
--- a/sysdeps/alpha/bits/endian.h
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Alpha is little-endian. */
-
-#ifndef _ENDIAN_H
-# error "Never use <bits/endian.h> directly; include <endian.h> instead."
-#endif
-
-#define __BYTE_ORDER __LITTLE_ENDIAN
diff --git a/sysdeps/alpha/bits/link.h b/sysdeps/alpha/bits/link.h
deleted file mode 100644
index 429faff432..0000000000
--- a/sysdeps/alpha/bits/link.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Copyright (C) 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _LINK_H
-# error "Never include <bits/link.h> directly; use <link.h> instead."
-#endif
-
-
-/* Registers for entry into PLT on Alpha. */
-typedef struct La_alpha_regs
-{
- uint64_t lr_r26;
- uint64_t lr_sp;
- uint64_t lr_r16;
- uint64_t lr_r17;
- uint64_t lr_r18;
- uint64_t lr_r19;
- uint64_t lr_r20;
- uint64_t lr_r21;
- double lr_f16;
- double lr_f17;
- double lr_f18;
- double lr_f19;
- double lr_f20;
- double lr_f21;
-} La_alpha_regs;
-
-/* Return values for calls from PLT on Alpha. */
-typedef struct La_alpha_retval
-{
- uint64_t lrv_r0;
- uint64_t lrv_r1;
- double lrv_f0;
- double lrv_f1;
-} La_alpha_retval;
-
-
-__BEGIN_DECLS
-
-extern Elf64_Addr la_alpha_gnu_pltenter (Elf64_Sym *__sym, unsigned int __ndx,
- uintptr_t *__refcook,
- uintptr_t *__defcook,
- La_alpha_regs *__regs,
- unsigned int *__flags,
- const char *__symname,
- long int *__framesizep);
-extern unsigned int la_alpha_gnu_pltexit (Elf64_Sym *__sym, unsigned int __ndx,
- uintptr_t *__refcook,
- uintptr_t *__defcook,
- const La_alpha_regs *__inregs,
- La_alpha_retval *__outregs,
- const char *symname);
-
-__END_DECLS
diff --git a/sysdeps/alpha/bits/mathdef.h b/sysdeps/alpha/bits/mathdef.h
deleted file mode 100644
index cbfaf68e22..0000000000
--- a/sysdeps/alpha/bits/mathdef.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Copyright (C) 1997,1998,1999,2000,2003,2004,2006
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#if !defined _MATH_H && !defined _COMPLEX_H
-# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
-#endif
-
-/* FIXME! This file describes properties of the compiler, not the machine;
- it should not be part of libc! */
-
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-# ifdef __GNUC__
-# if __STDC__ == 1
-
-/* In GNU or ANSI mode, gcc leaves `float' expressions as-is. */
-typedef float float_t;
-typedef double double_t;
-
-# else
-
-/* For `gcc -traditional', `float' expressions are evaluated as `double'. */
-typedef double float_t;
-typedef double double_t;
-
-# endif
-# else
-
-/* Wild guess at types for float_t and double_t. */
-typedef double float_t;
-typedef double double_t;
-
-# endif
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647)
-# define FP_ILOGBNAN (2147483647)
-
-#endif /* ISO C99 && MATH_H */
-
-#if defined _COMPLEX_H && !defined _COMPLEX_H_MATHDEF
-# define _COMPLEX_H_MATHDEF 1
-# if defined(__GNUC__) && !__GNUC_PREREQ(3,4)
-
-/* Due to an ABI change, we need to remap the complex float symbols. */
-# define _Mdouble_ float
-# define __MATHCALL(function, args) \
- __MATHDECL (_Complex float, function, args)
-# define __MATHDECL(type, function, args) \
- __MATHDECL_1(type, function##f, args, __c1_##function##f); \
- __MATHDECL_1(type, __##function##f, args, __c1_##function##f)
-# define __MATHDECL_1(type, function, args, alias) \
- extern type function args __asm__(#alias) __THROW
-
-# include <bits/cmathcalls.h>
-
-# undef _Mdouble_
-# undef __MATHCALL
-# undef __MATHDECL
-# undef __MATHDECL_1
-
-# endif /* GNUC before 3.4 */
-#endif /* COMPLEX_H */
diff --git a/sysdeps/alpha/bits/setjmp.h b/sysdeps/alpha/bits/setjmp.h
deleted file mode 100644
index eb0b478fb8..0000000000
--- a/sysdeps/alpha/bits/setjmp.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Define the machine-dependent type `jmp_buf'. Alpha version.
- Copyright (C) 1992,1997,2003,2005,2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#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
-
-/* The previous bits/setjmp.h had __jmp_buf defined as a structure.
- We use an array of 'long int' instead, to make writing the
- assembler easier. Naturally, user code should not depend on
- either representation. */
-
-/*
- * Integer registers:
- * $0 is the return value (va);
- * $1-$8, $22-$25, $28 are call-used (t0-t7, t8-t11, at);
- * $9-$14 we save here (s0-s5);
- * $15 is the FP and we save it here (fp or s6);
- * $16-$21 are input arguments (call-used) (a0-a5);
- * $26 is the return PC and we save it here (ra);
- * $27 is the procedure value (i.e., the address of __setjmp) (pv or t12);
- * $29 is the global pointer, which the caller will reconstruct
- * from the return address restored in $26 (gp);
- * $30 is the stack pointer and we save it here (sp);
- * $31 is always zero (zero).
- *
- * Floating-point registers:
- * $f0 is the floating return value;
- * $f1, $f10-$f15, $f22-$f30 are call-used;
- * $f2-$f9 we save here;
- * $f16-$21 are input args (call-used);
- * $f31 is always zero.
- *
- * Note that even on Alpha hardware that does not have an FPU (there
- * isn't such a thing currently) it is required to implement the FP
- * registers.
- */
-
-#ifndef __ASSEMBLY__
-typedef long int __jmp_buf[17];
-#endif
-
-#endif /* bits/setjmp.h */
diff --git a/sysdeps/alpha/bsd-_setjmp.S b/sysdeps/alpha/bsd-_setjmp.S
deleted file mode 100644
index 4e6a2da560..0000000000
--- a/sysdeps/alpha/bsd-_setjmp.S
+++ /dev/null
@@ -1 +0,0 @@
-/* _setjmp is in setjmp.S */
diff --git a/sysdeps/alpha/bsd-setjmp.S b/sysdeps/alpha/bsd-setjmp.S
deleted file mode 100644
index 1da848d2f1..0000000000
--- a/sysdeps/alpha/bsd-setjmp.S
+++ /dev/null
@@ -1 +0,0 @@
-/* setjmp is in setjmp.S */
diff --git a/sysdeps/alpha/bzero.S b/sysdeps/alpha/bzero.S
deleted file mode 100644
index 87e575babb..0000000000
--- a/sysdeps/alpha/bzero.S
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Fill a block of memory with zeros. Optimized for the Alpha architecture:
-
- - memory accessed as aligned quadwords only
- - destination memory not read unless needed for good cache behaviour
- - basic blocks arranged to optimize branch prediction for full-quadword
- aligned memory blocks.
- - partial head and tail quadwords constructed with byte-mask instructions
-
- This is generally scheduled for the EV5 (got to look out for my own
- interests :-), but with EV4 needs in mind. There *should* be no more
- stalls for the EV4 than there are for the EV5.
-*/
-
-
-#include <sysdep.h>
-
- .set noat
- .set noreorder
-
- .text
-
-/* There is a problem with either gdb (as of 4.16) or gas (as of 2.7) that
- doesn't like putting the entry point for a procedure somewhere in the
- middle of the procedure descriptor. Work around this by putting the main
- loop in its own procedure descriptor. */
-
- /* On entry to this basic block:
- t3 == loop counter
- t4 == bytes in partial final word
- a0 == possibly misaligned destination pointer */
-
- .ent bzero_loop
- .align 3
-bzero_loop:
- .frame sp, 0, ra, 0
- .prologue 0
-
- beq t3, $tail #
- blbc t3, 0f # skip single store if count even
-
- stq_u zero, 0(a0) # e0 : store one word
- subq t3, 1, t3 # .. e1 :
- addq a0, 8, a0 # e0 :
- beq t3, $tail # .. e1 :
-
-0: stq_u zero, 0(a0) # e0 : store two words
- subq t3, 2, t3 # .. e1 :
- stq_u zero, 8(a0) # e0 :
- addq a0, 16, a0 # .. e1 :
- bne t3, 0b # e1 :
-
-$tail: bne t4, 1f # is there a tail to do?
- ret # no
-
-1: ldq_u t0, 0(a0) # yes, load original data
- mskqh t0, t4, t0 #
- stq_u t0, 0(a0) #
- ret #
-
- .end bzero_loop
-
-ENTRY(__bzero)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- mov a0, v0 # e0 : move return value in place
- beq a1, $done # .. e1 : early exit for zero-length store
- and a0, 7, t1 # e0 :
- addq a1, t1, a1 # e1 : add dest misalignment to count
- srl a1, 3, t3 # e0 : loop = count >> 3
- and a1, 7, t4 # .. e1 : find number of bytes in tail
- unop # :
- beq t1, bzero_loop # e1 : aligned head, jump right in
-
- ldq_u t0, 0(a0) # e0 : load original data to mask into
- cmpult a1, 8, t2 # .. e1 : is this a sub-word set?
- bne t2, $oneq # e1 :
-
- mskql t0, a0, t0 # e0 : we span words. finish this partial
- subq t3, 1, t3 # e0 :
- addq a0, 8, a0 # .. e1 :
- stq_u t0, -8(a0) # e0 :
- br bzero_loop # .. e1 :
-
- .align 3
-$oneq:
- mskql t0, a0, t2 # e0 :
- mskqh t0, a1, t3 # e0 :
- or t2, t3, t0 # e1 :
- stq_u t0, 0(a0) # e0 :
-
-$done: ret
-
- END(__bzero)
-weak_alias (__bzero, bzero)
diff --git a/sysdeps/alpha/div.S b/sysdeps/alpha/div.S
deleted file mode 100644
index d1a724d375..0000000000
--- a/sysdeps/alpha/div.S
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Copyright (C) 1996, 1997, 2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "div_libc.h"
-
-#undef FRAME
-#ifdef __alpha_fix__
-#define FRAME 0
-#else
-#define FRAME 16
-#endif
-
- .set noat
-
- .align 4
- .globl div
- .ent div
-div:
- .frame sp, FRAME, ra
-#if FRAME > 0
- lda sp, -FRAME(sp)
-#endif
-#ifdef PROF
- .set macro
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set nomacro
- .prologue 1
-#else
- .prologue 0
-#endif
-
- beq $18, $divbyzero
- excb
- mf_fpcr $f10
-
- _ITOFT2 $17, $f0, 0, $18, $f1, 8
-
- cvtqt $f0, $f0
- cvtqt $f1, $f1
- divt/c $f0, $f1, $f0
- cvttq/c $f0, $f0
- excb
- mt_fpcr $f10
- _FTOIT $f0, $0, 0
-
- mull $0, $18, $1
- subl $17, $1, $1
-
- stl $0, 0(a0)
- stl $1, 4(a0)
- mov a0, v0
-
-#if FRAME > 0
- lda sp, FRAME(sp)
-#endif
- ret
-
-$divbyzero:
- mov a0, v0
- lda a0, GEN_INTDIV
- call_pal PAL_gentrap
- stl zero, 0(v0)
- stl zero, 4(v0)
-
-#if FRAME > 0
- lda sp, FRAME(sp)
-#endif
- ret
-
- .end div
diff --git a/sysdeps/alpha/div_libc.h b/sysdeps/alpha/div_libc.h
deleted file mode 100644
index b731b02e25..0000000000
--- a/sysdeps/alpha/div_libc.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/* Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Common bits for implementing software divide. */
-
-#include <sysdep.h>
-#ifdef __linux__
-# include <asm/gentrap.h>
-# include <asm/pal.h>
-#else
-# include <machine/pal.h>
-#endif
-
-/* These are not normal C functions. Argument registers are t10 and t11;
- the result goes in t12; the return address is in t9. Only t12 and AT
- may be clobbered. */
-#define X t10
-#define Y t11
-#define RV t12
-#define RA t9
-
-/* The secureplt format does not allow the division routines to be called
- via plt; there aren't enough registers free to be clobbered. Avoid
- setting the symbol type to STT_FUNC, so that the linker won't be tempted
- to create a plt entry. */
-#define funcnoplt notype
-
-/* None of these functions should use implicit anything. */
- .set nomacro
- .set noat
-
-/* Code fragment to invoke _mcount for profiling. This should be invoked
- directly after allocation of the stack frame. */
-.macro CALL_MCOUNT
-#ifdef PROF
- stq ra, 0(sp)
- stq pv, 8(sp)
- stq gp, 16(sp)
- cfi_rel_offset (ra, 0)
- cfi_rel_offset (pv, 8)
- cfi_rel_offset (gp, 16)
- br AT, 1f
- .set macro
-1: ldgp gp, 0(AT)
- mov RA, ra
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set nomacro
- ldq ra, 0(sp)
- ldq pv, 8(sp)
- ldq gp, 16(sp)
- cfi_restore (ra)
- cfi_restore (pv)
- cfi_restore (gp)
- /* Realign subsequent code with what we'd have without this
- macro at all. This means aligned with one arithmetic insn
- used within the bundle. */
- .align 4
- nop
-#endif
-.endm
-
-/* In order to make the below work, all top-level divide routines must
- use the same frame size. */
-#define FRAME 64
-
-/* Code fragment to generate an integer divide-by-zero fault. When
- building libc.so, we arrange for there to be one copy of this code
- placed late in the dso, such that all branches are forward. When
- building libc.a, we use multiple copies to avoid having an out of
- range branch. Users should jump to DIVBYZERO. */
-
-.macro DO_DIVBYZERO
-#ifdef PIC
-#define DIVBYZERO __divbyzero
- .section .gnu.linkonce.t.divbyzero, "ax", @progbits
- .globl __divbyzero
- .type __divbyzero, @function
- .usepv __divbyzero, no
- .hidden __divbyzero
-#else
-#define DIVBYZERO $divbyzero
-#endif
-
- .align 4
-DIVBYZERO:
- cfi_startproc
- cfi_return_column (RA)
- cfi_def_cfa_offset (FRAME)
-
- mov a0, RV
- unop
- lda a0, GEN_INTDIV
- call_pal PAL_gentrap
-
- mov RV, a0
- clr RV
- lda sp, FRAME(sp)
- cfi_def_cfa_offset (0)
- ret $31, (RA), 1
-
- cfi_endproc
- .size DIVBYZERO, .-DIVBYZERO
-.endm
-
-/* Like the ev6 instructions, but fall back to stack use on prior machines. */
-
- .arch ev6
-
-.macro _ITOFS gr, fr, slot
-#ifdef __alpha_fix__
- itofs \gr, \fr
-#else
- stl \gr, \slot(sp)
- lds \fr, \slot(sp)
-#endif
-.endm
-
-.macro _ITOFT gr, fr, slot
-#ifdef __alpha_fix__
- itoft \gr, \fr
-#else
- stq \gr, \slot(sp)
- ldt \fr, \slot(sp)
-#endif
-.endm
-
-.macro _FTOIT fr, gr, slot
-#ifdef __alpha_fix__
- ftoit \fr, \gr
-#else
- stt \fr, \slot(sp)
- ldq \gr, \slot(sp)
-#endif
-.endm
-
-/* Similarly, but move two registers. Schedules better for pre-ev6. */
-
-.macro _ITOFT2 gr1, fr1, slot1, gr2, fr2, slot2
-#ifdef __alpha_fix__
- itoft \gr1, \fr1
- itoft \gr2, \fr2
-#else
- stq \gr1, \slot1(sp)
- stq \gr2, \slot2(sp)
- ldt \fr1, \slot1(sp)
- ldt \fr2, \slot2(sp)
-#endif
-.endm
diff --git a/sysdeps/alpha/divl.S b/sysdeps/alpha/divl.S
deleted file mode 100644
index 9bac0450d0..0000000000
--- a/sysdeps/alpha/divl.S
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "div_libc.h"
-
-/* 32-bit signed int divide. This is not a normal C function. Argument
- registers are t10 and t11, the result goes in t12. Only t12 and AT may
- be clobbered.
-
- The FPU can handle all input values except zero. Whee!
-
- The FPCR save/restore is due to the fact that the EV6 _will_ set FPCR_INE
- for cvttq/c even without /sui being set. It will not, however, properly
- raise the exception, so we don't have to worry about FPCR_INED being clear
- and so dying by SIGFPE. */
-
-#ifndef EXTEND
-#define EXTEND(S,D) sextl S, D
-#endif
-
- .text
- .align 4
- .globl __divl
- .type __divl, @funcnoplt
- .usepv __divl, no
-
- cfi_startproc
- cfi_return_column (RA)
-__divl:
- lda sp, -FRAME(sp)
- cfi_def_cfa_offset (FRAME)
- CALL_MCOUNT
- stt $f0, 0(sp)
- excb
- beq Y, DIVBYZERO
-
- stt $f1, 8(sp)
- stt $f2, 16(sp)
- cfi_rel_offset ($f0, 0)
- cfi_rel_offset ($f1, 8)
- cfi_rel_offset ($f2, 16)
- mf_fpcr $f2
-
- EXTEND (X, RV)
- EXTEND (Y, AT)
- _ITOFT2 RV, $f0, 24, AT, $f1, 32
- cvtqt $f0, $f0
- cvtqt $f1, $f1
- divt/c $f0, $f1, $f0
- cvttq/c $f0, $f0
- excb
- mt_fpcr $f2
- _FTOIT $f0, RV, 24
-
- ldt $f0, 0(sp)
- ldt $f1, 8(sp)
- ldt $f2, 16(sp)
- lda sp, FRAME(sp)
- cfi_restore ($f0)
- cfi_restore ($f1)
- cfi_restore ($f2)
- cfi_def_cfa_offset (0)
- sextl RV, RV
- ret $31, (RA), 1
-
- cfi_endproc
- .size __divl, .-__divl
-
- DO_DIVBYZERO
diff --git a/sysdeps/alpha/divlu.S b/sysdeps/alpha/divlu.S
deleted file mode 100644
index 5c54bb54c0..0000000000
--- a/sysdeps/alpha/divlu.S
+++ /dev/null
@@ -1,4 +0,0 @@
-#define UNSIGNED
-#define EXTEND(S,D) zapnot S, 15, D
-#define __divl __divlu
-#include <divl.S>
diff --git a/sysdeps/alpha/divq.S b/sysdeps/alpha/divq.S
deleted file mode 100644
index d2ed2c5af6..0000000000
--- a/sysdeps/alpha/divq.S
+++ /dev/null
@@ -1,274 +0,0 @@
-/* Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "div_libc.h"
-
-
-/* 64-bit signed long divide. These are not normal C functions. Argument
- registers are t10 and t11, the result goes in t12. Only t12 and AT may
- be clobbered.
-
- Theory of operation here is that we can use the FPU divider for virtually
- all operands that we see: all dividend values between -2**53 and 2**53-1
- can be computed directly. Note that divisor values need not be checked
- against that range because the rounded fp value will be close enough such
- that the quotient is < 1, which will properly be truncated to zero when we
- convert back to integer.
-
- When the dividend is outside the range for which we can compute exact
- results, we use the fp quotent as an estimate from which we begin refining
- an exact integral value. This reduces the number of iterations in the
- shift-and-subtract loop significantly.
-
- The FPCR save/restore is due to the fact that the EV6 _will_ set FPCR_INE
- for cvttq/c even without /sui being set. It will not, however, properly
- raise the exception, so we don't have to worry about FPCR_INED being clear
- and so dying by SIGFPE. */
-
- .text
- .align 4
- .globl __divq
- .type __divq, @funcnoplt
- .usepv __divq, no
-
- cfi_startproc
- cfi_return_column (RA)
-__divq:
- lda sp, -FRAME(sp)
- cfi_def_cfa_offset (FRAME)
- CALL_MCOUNT
-
- /* Get the fp divide insn issued as quickly as possible. After
- that's done, we have at least 22 cycles until its results are
- ready -- all the time in the world to figure out how we're
- going to use the results. */
- stt $f0, 0(sp)
- excb
- beq Y, DIVBYZERO
-
- stt $f1, 8(sp)
- stt $f3, 48(sp)
- cfi_rel_offset ($f0, 0)
- cfi_rel_offset ($f1, 8)
- cfi_rel_offset ($f3, 48)
- mf_fpcr $f3
-
- _ITOFT2 X, $f0, 16, Y, $f1, 24
- cvtqt $f0, $f0
- cvtqt $f1, $f1
- divt/c $f0, $f1, $f0
-
- /* Check to see if X fit in the double as an exact value. */
- sll X, (64-53), AT
- ldt $f1, 8(sp)
- sra AT, (64-53), AT
- cmpeq X, AT, AT
- beq AT, $x_big
-
- /* If we get here, we're expecting exact results from the division.
- Do nothing else besides convert and clean up. */
- cvttq/c $f0, $f0
- excb
- mt_fpcr $f3
- _FTOIT $f0, RV, 16
-
- ldt $f0, 0(sp)
- ldt $f3, 48(sp)
- cfi_restore ($f1)
- cfi_remember_state
- cfi_restore ($f0)
- cfi_restore ($f3)
- cfi_def_cfa_offset (0)
- lda sp, FRAME(sp)
- ret $31, (RA), 1
-
- .align 4
- cfi_restore_state
-$x_big:
- /* If we get here, X is large enough that we don't expect exact
- results, and neither X nor Y got mis-translated for the fp
- division. Our task is to take the fp result, figure out how
- far it's off from the correct result and compute a fixup. */
- stq t0, 16(sp)
- stq t1, 24(sp)
- stq t2, 32(sp)
- stq t5, 40(sp)
- cfi_rel_offset (t0, 16)
- cfi_rel_offset (t1, 24)
- cfi_rel_offset (t2, 32)
- cfi_rel_offset (t5, 40)
-
-#define Q RV /* quotient */
-#define R t0 /* remainder */
-#define SY t1 /* scaled Y */
-#define S t2 /* scalar */
-#define QY t3 /* Q*Y */
-
- /* The fixup code below can only handle unsigned values. */
- or X, Y, AT
- mov $31, t5
- blt AT, $fix_sign_in
-$fix_sign_in_ret1:
- cvttq/c $f0, $f0
-
- _FTOIT $f0, Q, 8
- .align 3
-$fix_sign_in_ret2:
- ldt $f0, 0(sp)
- stq t3, 0(sp)
- cfi_restore ($f0)
- cfi_rel_offset (t3, 0)
-
- mulq Q, Y, QY
- excb
- stq t4, 8(sp)
- mt_fpcr $f3
- cfi_rel_offset (t4, 8)
-
- subq QY, X, R
- mov Y, SY
- mov 1, S
- bgt R, $q_high
-
-$q_high_ret:
- subq X, QY, R
- mov Y, SY
- mov 1, S
- bgt R, $q_low
-
-$q_low_ret:
- ldq t0, 16(sp)
- ldq t1, 24(sp)
- ldq t2, 32(sp)
- bne t5, $fix_sign_out
-
-$fix_sign_out_ret:
- ldq t3, 0(sp)
- ldq t4, 8(sp)
- ldq t5, 40(sp)
- ldt $f3, 48(sp)
- lda sp, FRAME(sp)
- cfi_remember_state
- cfi_restore (t0)
- cfi_restore (t1)
- cfi_restore (t2)
- cfi_restore (t3)
- cfi_restore (t4)
- cfi_restore (t5)
- cfi_restore ($f3)
- cfi_def_cfa_offset (0)
- ret $31, (RA), 1
-
- .align 4
- cfi_restore_state
- /* The quotient that we computed was too large. We need to reduce
- it by S such that Y*S >= R. Obviously the closer we get to the
- correct value the better, but overshooting high is ok, as we'll
- fix that up later. */
-0:
- addq SY, SY, SY
- addq S, S, S
-$q_high:
- cmpult SY, R, AT
- bne AT, 0b
-
- subq Q, S, Q
- unop
- subq QY, SY, QY
- br $q_high_ret
-
- .align 4
- /* The quotient that we computed was too small. Divide Y by the
- current remainder (R) and add that to the existing quotient (Q).
- The expectation, of course, is that R is much smaller than X. */
- /* Begin with a shift-up loop. Compute S such that Y*S >= R. We
- already have a copy of Y in SY and the value 1 in S. */
-0:
- addq SY, SY, SY
- addq S, S, S
-$q_low:
- cmpult SY, R, AT
- bne AT, 0b
-
- /* Shift-down and subtract loop. Each iteration compares our scaled
- Y (SY) with the remainder (R); if SY <= R then X is divisible by
- Y's scalar (S) so add it to the quotient (Q). */
-2: addq Q, S, t3
- srl S, 1, S
- cmpule SY, R, AT
- subq R, SY, t4
-
- cmovne AT, t3, Q
- cmovne AT, t4, R
- srl SY, 1, SY
- bne S, 2b
-
- br $q_low_ret
-
- .align 4
-$fix_sign_in:
- /* If we got here, then X|Y is negative. Need to adjust everything
- such that we're doing unsigned division in the fixup loop. */
- /* T5 records the changes we had to make:
- bit 0: set if result should be negative.
- bit 2: set if X was negated.
- bit 3: set if Y was negated.
- */
- xor X, Y, AT
- cmplt AT, 0, t5
- cmplt X, 0, AT
- negq X, t0
-
- s4addq AT, t5, t5
- cmovne AT, t0, X
- cmplt Y, 0, AT
- negq Y, t0
-
- s8addq AT, t5, t5
- cmovne AT, t0, Y
- unop
- blbc t5, $fix_sign_in_ret1
-
- cvttq/c $f0, $f0
- _FTOIT $f0, Q, 8
- .align 3
- negq Q, Q
- br $fix_sign_in_ret2
-
- .align 4
-$fix_sign_out:
- /* Now we get to undo what we did above. */
- /* ??? Is this really faster than just increasing the size of
- the stack frame and storing X and Y in memory? */
- and t5, 8, AT
- negq Y, t4
- cmovne AT, t4, Y
-
- and t5, 4, AT
- negq X, t4
- cmovne AT, t4, X
-
- negq RV, t4
- cmovlbs t5, t4, RV
-
- br $fix_sign_out_ret
-
- cfi_endproc
- .size __divq, .-__divq
-
- DO_DIVBYZERO
diff --git a/sysdeps/alpha/divqu.S b/sysdeps/alpha/divqu.S
deleted file mode 100644
index ef3cdb1b2b..0000000000
--- a/sysdeps/alpha/divqu.S
+++ /dev/null
@@ -1,257 +0,0 @@
-/* Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "div_libc.h"
-
-
-/* 64-bit unsigned long divide. These are not normal C functions. Argument
- registers are t10 and t11, the result goes in t12. Only t12 and AT may be
- clobbered.
-
- Theory of operation here is that we can use the FPU divider for virtually
- all operands that we see: all dividend values between -2**53 and 2**53-1
- can be computed directly. Note that divisor values need not be checked
- against that range because the rounded fp value will be close enough such
- that the quotient is < 1, which will properly be truncated to zero when we
- convert back to integer.
-
- When the dividend is outside the range for which we can compute exact
- results, we use the fp quotent as an estimate from which we begin refining
- an exact integral value. This reduces the number of iterations in the
- shift-and-subtract loop significantly.
-
- The FPCR save/restore is due to the fact that the EV6 _will_ set FPCR_INE
- for cvttq/c even without /sui being set. It will not, however, properly
- raise the exception, so we don't have to worry about FPCR_INED being clear
- and so dying by SIGFPE. */
-
- .text
- .align 4
- .globl __divqu
- .type __divqu, @funcnoplt
- .usepv __divqu, no
-
- cfi_startproc
- cfi_return_column (RA)
-__divqu:
- lda sp, -FRAME(sp)
- cfi_def_cfa_offset (FRAME)
- CALL_MCOUNT
-
- /* Get the fp divide insn issued as quickly as possible. After
- that's done, we have at least 22 cycles until its results are
- ready -- all the time in the world to figure out how we're
- going to use the results. */
- stt $f0, 0(sp)
- excb
- beq Y, DIVBYZERO
-
- stt $f1, 8(sp)
- stt $f3, 48(sp)
- cfi_rel_offset ($f0, 0)
- cfi_rel_offset ($f1, 8)
- cfi_rel_offset ($f3, 48)
- mf_fpcr $f3
-
- _ITOFT2 X, $f0, 16, Y, $f1, 24
- cvtqt $f0, $f0
- cvtqt $f1, $f1
- blt X, $x_is_neg
- divt/c $f0, $f1, $f0
-
- /* Check to see if Y was mis-converted as signed value. */
- ldt $f1, 8(sp)
- blt Y, $y_is_neg
-
- /* Check to see if X fit in the double as an exact value. */
- srl X, 53, AT
- bne AT, $x_big
-
- /* If we get here, we're expecting exact results from the division.
- Do nothing else besides convert and clean up. */
- cvttq/c $f0, $f0
- excb
- mt_fpcr $f3
- _FTOIT $f0, RV, 16
-
- ldt $f0, 0(sp)
- ldt $f3, 48(sp)
- cfi_remember_state
- cfi_restore ($f0)
- cfi_restore ($f1)
- cfi_restore ($f3)
- cfi_def_cfa_offset (0)
- lda sp, FRAME(sp)
- ret $31, (RA), 1
-
- .align 4
- cfi_restore_state
-$x_is_neg:
- /* If we get here, X is so big that bit 63 is set, which made the
- conversion come out negative. Fix it up lest we not even get
- a good estimate. */
- ldah AT, 0x5f80 /* 2**64 as float. */
- stt $f2, 24(sp)
- cfi_rel_offset ($f2, 24)
- _ITOFS AT, $f2, 16
-
- .align 4
- addt $f0, $f2, $f0
- unop
- divt/c $f0, $f1, $f0
- unop
-
- /* Ok, we've now the divide issued. Continue with other checks. */
- ldt $f1, 8(sp)
- unop
- ldt $f2, 24(sp)
- blt Y, $y_is_neg
- cfi_restore ($f1)
- cfi_restore ($f2)
- cfi_remember_state /* for y_is_neg */
-
- .align 4
-$x_big:
- /* If we get here, X is large enough that we don't expect exact
- results, and neither X nor Y got mis-translated for the fp
- division. Our task is to take the fp result, figure out how
- far it's off from the correct result and compute a fixup. */
- stq t0, 16(sp)
- stq t1, 24(sp)
- stq t2, 32(sp)
- stq t3, 40(sp)
- cfi_rel_offset (t0, 16)
- cfi_rel_offset (t1, 24)
- cfi_rel_offset (t2, 32)
- cfi_rel_offset (t3, 40)
-
-#define Q RV /* quotient */
-#define R t0 /* remainder */
-#define SY t1 /* scaled Y */
-#define S t2 /* scalar */
-#define QY t3 /* Q*Y */
-
- cvttq/c $f0, $f0
- _FTOIT $f0, Q, 8
- mulq Q, Y, QY
-
- .align 4
- stq t4, 8(sp)
- excb
- ldt $f0, 0(sp)
- mt_fpcr $f3
- cfi_rel_offset (t4, 8)
- cfi_restore ($f0)
-
- subq QY, X, R
- mov Y, SY
- mov 1, S
- bgt R, $q_high
-
-$q_high_ret:
- subq X, QY, R
- mov Y, SY
- mov 1, S
- bgt R, $q_low
-
-$q_low_ret:
- ldq t4, 8(sp)
- ldq t0, 16(sp)
- ldq t1, 24(sp)
- ldq t2, 32(sp)
-
- ldq t3, 40(sp)
- ldt $f3, 48(sp)
- lda sp, FRAME(sp)
- cfi_remember_state
- cfi_restore (t0)
- cfi_restore (t1)
- cfi_restore (t2)
- cfi_restore (t3)
- cfi_restore (t4)
- cfi_restore ($f3)
- cfi_def_cfa_offset (0)
- ret $31, (RA), 1
-
- .align 4
- cfi_restore_state
- /* The quotient that we computed was too large. We need to reduce
- it by S such that Y*S >= R. Obviously the closer we get to the
- correct value the better, but overshooting high is ok, as we'll
- fix that up later. */
-0:
- addq SY, SY, SY
- addq S, S, S
-$q_high:
- cmpult SY, R, AT
- bne AT, 0b
-
- subq Q, S, Q
- unop
- subq QY, SY, QY
- br $q_high_ret
-
- .align 4
- /* The quotient that we computed was too small. Divide Y by the
- current remainder (R) and add that to the existing quotient (Q).
- The expectation, of course, is that R is much smaller than X. */
- /* Begin with a shift-up loop. Compute S such that Y*S >= R. We
- already have a copy of Y in SY and the value 1 in S. */
-0:
- addq SY, SY, SY
- addq S, S, S
-$q_low:
- cmpult SY, R, AT
- bne AT, 0b
-
- /* Shift-down and subtract loop. Each iteration compares our scaled
- Y (SY) with the remainder (R); if SY <= R then X is divisible by
- Y's scalar (S) so add it to the quotient (Q). */
-2: addq Q, S, t3
- srl S, 1, S
- cmpule SY, R, AT
- subq R, SY, t4
-
- cmovne AT, t3, Q
- cmovne AT, t4, R
- srl SY, 1, SY
- bne S, 2b
-
- br $q_low_ret
-
- .align 4
- cfi_restore_state
-$y_is_neg:
- /* If we get here, Y is so big that bit 63 is set. The results
- from the divide will be completely wrong. Fortunately, the
- quotient must be either 0 or 1, so just compute it directly. */
- cmpule Y, X, RV
- excb
- mt_fpcr $f3
- ldt $f0, 0(sp)
- ldt $f3, 48(sp)
- lda sp, FRAME(sp)
- cfi_restore ($f0)
- cfi_restore ($f3)
- cfi_def_cfa_offset (0)
- ret $31, (RA), 1
-
- cfi_endproc
- .size __divqu, .-__divqu
-
- DO_DIVBYZERO
diff --git a/sysdeps/alpha/dl-dtprocnum.h b/sysdeps/alpha/dl-dtprocnum.h
deleted file mode 100644
index 67845cdd62..0000000000
--- a/sysdeps/alpha/dl-dtprocnum.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Number of extra dynamic section entries for this architecture. By
- default there are none. */
-#define DT_THISPROCNUM DT_ALPHA_NUM
diff --git a/sysdeps/alpha/dl-machine.h b/sysdeps/alpha/dl-machine.h
deleted file mode 100644
index 29f500b2d0..0000000000
--- a/sysdeps/alpha/dl-machine.h
+++ /dev/null
@@ -1,522 +0,0 @@
-/* Machine-dependent ELF dynamic relocation inline functions. Alpha version.
- Copyright (C) 1996-2005, 2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* This was written in the absence of an ABI -- don't expect
- it to remain unchanged. */
-
-#ifndef dl_machine_h
-#define dl_machine_h 1
-
-#define ELF_MACHINE_NAME "alpha"
-
-#include <string.h>
-
-
-/* Mask identifying addresses reserved for the user program,
- where the dynamic linker should not map anything. */
-#define ELF_MACHINE_USER_ADDRESS_MASK 0x120000000UL
-
-/* Translate a processor specific dynamic tag to the index in l_info array. */
-#define DT_ALPHA(x) (DT_ALPHA_##x - DT_LOPROC + DT_NUM)
-
-/* Return nonzero iff ELF header is compatible with the running host. */
-static inline int
-elf_machine_matches_host (const Elf64_Ehdr *ehdr)
-{
- return ehdr->e_machine == EM_ALPHA;
-}
-
-/* Return the link-time address of _DYNAMIC. The multiple-got-capable
- linker no longer allocates the first .got entry for this. But not to
- worry, no special tricks are needed. */
-static inline Elf64_Addr
-elf_machine_dynamic (void)
-{
-#ifndef NO_AXP_MULTI_GOT_LD
- return (Elf64_Addr) &_DYNAMIC;
-#else
- register Elf64_Addr *gp __asm__ ("$29");
- return gp[-4096];
-#endif
-}
-
-/* Return the run-time load address of the shared object. */
-
-static inline Elf64_Addr
-elf_machine_load_address (void)
-{
- /* This relies on the compiler using gp-relative addresses for static symbols. */
- static void *dot = &dot;
- return (void *)&dot - dot;
-}
-
-/* Set up the loaded object described by L so its unrelocated PLT
- entries will jump to the on-demand fixup code in dl-runtime.c. */
-
-static inline int
-elf_machine_runtime_setup (struct link_map *map, int lazy, int profile)
-{
- extern char _dl_runtime_resolve_new[] attribute_hidden;
- extern char _dl_runtime_profile_new[] attribute_hidden;
- extern char _dl_runtime_resolve_old[] attribute_hidden;
- extern char _dl_runtime_profile_old[] attribute_hidden;
-
- struct pltgot {
- char *resolve;
- struct link_map *link;
- };
-
- struct pltgot *pg;
- long secureplt;
- char *resolve;
-
- if (map->l_info[DT_JMPREL] == 0 || !lazy)
- return lazy;
-
- /* Check to see if we're using the read-only plt form. */
- secureplt = map->l_info[DT_ALPHA(PLTRO)] != 0;
-
- /* If the binary uses the read-only secure plt format, PG points to
- the .got.plt section, which is the right place for ld.so to place
- its hooks. Otherwise, PG is currently pointing at the start of
- the plt; the hooks go at offset 16. */
- pg = (struct pltgot *) D_PTR (map, l_info[DT_PLTGOT]);
- pg += !secureplt;
-
- /* This function will be called to perform the relocation. They're
- not declared as functions to convince the compiler to use gp
- relative relocations for them. */
- if (secureplt)
- resolve = _dl_runtime_resolve_new;
- else
- resolve = _dl_runtime_resolve_old;
-
- if (__builtin_expect (profile, 0))
- {
- if (secureplt)
- resolve = _dl_runtime_profile_new;
- else
- resolve = _dl_runtime_profile_old;
-
- if (GLRO(dl_profile) && _dl_name_match_p (GLRO(dl_profile), map))
- {
- /* This is the object we are looking for. Say that we really
- want profiling and the timers are started. */
- GL(dl_profile_map) = map;
- }
- }
-
- pg->resolve = resolve;
- pg->link = map;
-
- return lazy;
-}
-
-/* Initial entry point code for the dynamic linker.
- The C function `_dl_start' is the real entry point;
- its return value is the user program's entry point. */
-
-#define RTLD_START asm ("\
- .section .text \n\
- .set at \n\
- .globl _start \n\
- .ent _start \n\
-_start: \n\
- .frame $31,0,$31,0 \n\
- br $gp, 0f \n\
-0: ldgp $gp, 0($gp) \n\
- .prologue 0 \n\
- /* Pass pointer to argument block to _dl_start. */ \n\
- mov $sp, $16 \n\
- bsr $26, _dl_start !samegp \n\
- .end _start \n\
- /* FALLTHRU */ \n\
- .globl _dl_start_user \n\
- .ent _dl_start_user \n\
-_dl_start_user: \n\
- .frame $31,0,$31,0 \n\
- .prologue 0 \n\
- /* Save the user entry point address in s0. */ \n\
- mov $0, $9 \n\
- /* See if we were run as a command with the executable \n\
- file name as an extra leading argument. */ \n\
- ldah $1, _dl_skip_args($gp) !gprelhigh \n\
- ldl $1, _dl_skip_args($1) !gprellow \n\
- bne $1, $fixup_stack \n\
-$fixup_stack_ret: \n\
- /* The special initializer gets called with the stack \n\
- just as the application's entry point will see it; \n\
- it can switch stacks if it moves these contents \n\
- over. */ \n\
-" RTLD_START_SPECIAL_INIT " \n\
- /* Call _dl_init(_dl_loaded, argc, argv, envp) to run \n\
- initializers. */ \n\
- ldah $16, _rtld_local($gp) !gprelhigh \n\
- ldq $16, _rtld_local($16) !gprellow \n\
- ldq $17, 0($sp) \n\
- lda $18, 8($sp) \n\
- s8addq $17, 8, $19 \n\
- addq $19, $18, $19 \n\
- bsr $26, _dl_init_internal !samegp \n\
- /* Pass our finalizer function to the user in $0. */ \n\
- ldah $0, _dl_fini($gp) !gprelhigh \n\
- lda $0, _dl_fini($0) !gprellow \n\
- /* Jump to the user's entry point. */ \n\
- mov $9, $27 \n\
- jmp ($9) \n\
-$fixup_stack: \n\
- /* Adjust the stack pointer to skip _dl_skip_args words.\n\
- This involves copying everything down, since the \n\
- stack pointer must always be 16-byte aligned. */ \n\
- ldah $7, _dl_argv_internal($gp) !gprelhigh \n\
- ldq $2, 0($sp) \n\
- ldq $5, _dl_argv_internal($7) !gprellow \n\
- subq $31, $1, $6 \n\
- subq $2, $1, $2 \n\
- s8addq $6, $5, $5 \n\
- mov $sp, $4 \n\
- s8addq $1, $sp, $3 \n\
- stq $2, 0($sp) \n\
- stq $5, _dl_argv_internal($7) !gprellow \n\
- /* Copy down argv. */ \n\
-0: ldq $5, 8($3) \n\
- addq $4, 8, $4 \n\
- addq $3, 8, $3 \n\
- stq $5, 0($4) \n\
- bne $5, 0b \n\
- /* Copy down envp. */ \n\
-1: ldq $5, 8($3) \n\
- addq $4, 8, $4 \n\
- addq $3, 8, $3 \n\
- stq $5, 0($4) \n\
- bne $5, 1b \n\
- /* Copy down auxiliary table. */ \n\
-2: ldq $5, 8($3) \n\
- ldq $6, 16($3) \n\
- addq $4, 16, $4 \n\
- addq $3, 16, $3 \n\
- stq $5, -8($4) \n\
- stq $6, 0($4) \n\
- bne $5, 2b \n\
- br $fixup_stack_ret \n\
- .end _dl_start_user \n\
- .set noat \n\
-.previous");
-
-#ifndef RTLD_START_SPECIAL_INIT
-#define RTLD_START_SPECIAL_INIT /* nothing */
-#endif
-
-/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry
- or TLS variables, so undefined references should not be allowed
- to define the value.
-
- ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve
- to one of the main executable's symbols, as for a COPY reloc.
- This is unused on Alpha. */
-
-#if !defined RTLD_BOOTSTRAP || USE___THREAD
-# define elf_machine_type_class(type) \
- (((type) == R_ALPHA_JMP_SLOT \
- || (type) == R_ALPHA_DTPMOD64 \
- || (type) == R_ALPHA_DTPREL64 \
- || (type) == R_ALPHA_TPREL64) * ELF_RTYPE_CLASS_PLT)
-#else
-# define elf_machine_type_class(type) \
- (((type) == R_ALPHA_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)
-#endif
-
-/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */
-#define ELF_MACHINE_JMP_SLOT R_ALPHA_JMP_SLOT
-
-/* The alpha never uses Elf64_Rel relocations. */
-#define ELF_MACHINE_NO_REL 1
-
-/* Fix up the instructions of a PLT entry to invoke the function
- rather than the dynamic linker. */
-static inline Elf64_Addr
-elf_machine_fixup_plt (struct link_map *map, lookup_t t,
- const Elf64_Rela *reloc,
- Elf64_Addr *got_addr, Elf64_Addr value)
-{
- const Elf64_Rela *rela_plt;
- Elf64_Word *plte;
- long int edisp;
-
- /* Store the value we are going to load. */
- *got_addr = value;
-
- /* If this binary uses the read-only secure plt format, we're done. */
- if (map->l_info[DT_ALPHA(PLTRO)])
- return value;
-
- /* Otherwise we have to modify the plt entry in place to do the branch. */
-
- /* Recover the PLT entry address by calculating reloc's index into the
- .rela.plt, and finding that entry in the .plt. */
- rela_plt = (const Elf64_Rela *) D_PTR (map, l_info[DT_JMPREL]);
- plte = (Elf64_Word *) (D_PTR (map, l_info[DT_PLTGOT]) + 32);
- plte += 3 * (reloc - rela_plt);
-
- /* Find the displacement from the plt entry to the function. */
- edisp = (long int) (value - (Elf64_Addr)&plte[3]) / 4;
-
- if (edisp >= -0x100000 && edisp < 0x100000)
- {
- /* If we are in range, use br to perfect branch prediction and
- elide the dependency on the address load. This case happens,
- e.g., when a shared library call is resolved to the same library. */
-
- int hi, lo;
- hi = value - (Elf64_Addr)&plte[0];
- lo = (short int) hi;
- hi = (hi - lo) >> 16;
-
- /* Emit "lda $27,lo($27)" */
- plte[1] = 0x237b0000 | (lo & 0xffff);
-
- /* Emit "br $31,function" */
- plte[2] = 0xc3e00000 | (edisp & 0x1fffff);
-
- /* Think about thread-safety -- the previous instructions must be
- committed to memory before the first is overwritten. */
- __asm__ __volatile__("wmb" : : : "memory");
-
- /* Emit "ldah $27,hi($27)" */
- plte[0] = 0x277b0000 | (hi & 0xffff);
- }
- else
- {
- /* Don't bother with the hint since we already know the hint is
- wrong. Eliding it prevents the wrong page from getting pulled
- into the cache. */
-
- int hi, lo;
- hi = (Elf64_Addr)got_addr - (Elf64_Addr)&plte[0];
- lo = (short)hi;
- hi = (hi - lo) >> 16;
-
- /* Emit "ldq $27,lo($27)" */
- plte[1] = 0xa77b0000 | (lo & 0xffff);
-
- /* Emit "jmp $31,($27)" */
- plte[2] = 0x6bfb0000;
-
- /* Think about thread-safety -- the previous instructions must be
- committed to memory before the first is overwritten. */
- __asm__ __volatile__("wmb" : : : "memory");
-
- /* Emit "ldah $27,hi($27)" */
- plte[0] = 0x277b0000 | (hi & 0xffff);
- }
-
- /* At this point, if we've been doing runtime resolution, Icache is dirty.
- This will be taken care of in _dl_runtime_resolve. If instead we are
- doing this as part of non-lazy startup relocation, that bit of code
- hasn't made it into Icache yet, so there's nothing to clean up. */
-
- return value;
-}
-
-/* Return the final value of a plt relocation. */
-static inline Elf64_Addr
-elf_machine_plt_value (struct link_map *map, const Elf64_Rela *reloc,
- Elf64_Addr value)
-{
- return value + reloc->r_addend;
-}
-
-/* Names of the architecture-specific auditing callback functions. */
-#define ARCH_LA_PLTENTER alpha_gnu_pltenter
-#define ARCH_LA_PLTEXIT alpha_gnu_pltexit
-
-#endif /* !dl_machine_h */
-
-#ifdef RESOLVE_MAP
-
-/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
- MAP is the object containing the reloc. */
-auto inline void
-__attribute__ ((always_inline))
-elf_machine_rela (struct link_map *map,
- const Elf64_Rela *reloc,
- const Elf64_Sym *sym,
- const struct r_found_version *version,
- void *const reloc_addr_arg)
-{
- Elf64_Addr *const reloc_addr = reloc_addr_arg;
- unsigned long int const r_type = ELF64_R_TYPE (reloc->r_info);
-
-#if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC && !defined SHARED
- /* This is defined in rtld.c, but nowhere in the static libc.a; make the
- reference weak so static programs can still link. This declaration
- cannot be done when compiling rtld.c (i.e. #ifdef RTLD_BOOTSTRAP)
- because rtld.c contains the common defn for _dl_rtld_map, which is
- incompatible with a weak decl in the same file. */
- weak_extern (_dl_rtld_map);
-#endif
-
- /* We cannot use a switch here because we cannot locate the switch
- jump table until we've self-relocated. */
-
-#if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
- if (__builtin_expect (r_type == R_ALPHA_RELATIVE, 0))
- {
-# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
- /* Already done in dynamic linker. */
- if (map != &GL(dl_rtld_map))
-# endif
- {
- /* XXX Make some timings. Maybe it's preferable to test for
- unaligned access and only do it the complex way if necessary. */
- Elf64_Addr reloc_addr_val;
-
- /* Load value without causing unaligned trap. */
- memcpy (&reloc_addr_val, reloc_addr_arg, 8);
- reloc_addr_val += map->l_addr;
-
- /* Store value without causing unaligned trap. */
- memcpy (reloc_addr_arg, &reloc_addr_val, 8);
- }
- }
- else
-#endif
- if (__builtin_expect (r_type == R_ALPHA_NONE, 0))
- return;
- else
- {
- struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
- Elf64_Addr sym_value;
- Elf64_Addr sym_raw_value;
-
- sym_raw_value = sym_value = reloc->r_addend;
- if (sym_map)
- {
- sym_raw_value += sym->st_value;
- sym_value = sym_raw_value + sym_map->l_addr;
- }
-
- if (r_type == R_ALPHA_GLOB_DAT)
- *reloc_addr = sym_value;
-#ifdef RESOLVE_CONFLICT_FIND_MAP
- /* In .gnu.conflict section, R_ALPHA_JMP_SLOT relocations have
- R_ALPHA_JMP_SLOT in lower 8 bits and the remaining 24 bits
- are .rela.plt index. */
- else if ((r_type & 0xff) == R_ALPHA_JMP_SLOT)
- {
- /* elf_machine_fixup_plt needs the map reloc_addr points into,
- while in _dl_resolve_conflicts map is _dl_loaded. */
- RESOLVE_CONFLICT_FIND_MAP (map, reloc_addr);
- reloc = ((const Elf64_Rela *) D_PTR (map, l_info[DT_JMPREL]))
- + (r_type >> 8);
- elf_machine_fixup_plt (map, 0, reloc, reloc_addr, sym_value);
- }
-#else
- else if (r_type == R_ALPHA_JMP_SLOT)
- elf_machine_fixup_plt (map, 0, reloc, reloc_addr, sym_value);
-#endif
-#ifndef RTLD_BOOTSTRAP
- else if (r_type == R_ALPHA_REFQUAD)
- {
- /* Store value without causing unaligned trap. */
- memcpy (reloc_addr_arg, &sym_value, 8);
- }
-#endif
-#if !defined RTLD_BOOTSTRAP || USE___THREAD
- else if (r_type == R_ALPHA_DTPMOD64)
- {
-# ifdef RTLD_BOOTSTRAP
- /* During startup the dynamic linker is always index 1. */
- *reloc_addr = 1;
-# else
- /* Get the information from the link map returned by the
- resolv function. */
- if (sym_map != NULL)
- *reloc_addr = sym_map->l_tls_modid;
-# endif
- }
- else if (r_type == R_ALPHA_DTPREL64)
- {
-# ifndef RTLD_BOOTSTRAP
- /* During relocation all TLS symbols are defined and used.
- Therefore the offset is already correct. */
- *reloc_addr = sym_raw_value;
-# endif
- }
- else if (r_type == R_ALPHA_TPREL64)
- {
-# ifdef RTLD_BOOTSTRAP
- *reloc_addr = sym_raw_value + map->l_tls_offset;
-# else
- if (sym_map)
- {
- CHECK_STATIC_TLS (map, sym_map);
- *reloc_addr = sym_raw_value + sym_map->l_tls_offset;
- }
-# endif
- }
-#endif
- else
- _dl_reloc_bad_type (map, r_type, 0);
- }
-}
-
-/* Let do-rel.h know that on Alpha if l_addr is 0, all RELATIVE relocs
- can be skipped. */
-#define ELF_MACHINE_REL_RELATIVE 1
-
-auto inline void
-__attribute__ ((always_inline))
-elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
- void *const reloc_addr_arg)
-{
- /* XXX Make some timings. Maybe it's preferable to test for
- unaligned access and only do it the complex way if necessary. */
- Elf64_Addr reloc_addr_val;
-
- /* Load value without causing unaligned trap. */
- memcpy (&reloc_addr_val, reloc_addr_arg, 8);
- reloc_addr_val += l_addr;
-
- /* Store value without causing unaligned trap. */
- memcpy (reloc_addr_arg, &reloc_addr_val, 8);
-}
-
-auto inline void
-__attribute__ ((always_inline))
-elf_machine_lazy_rel (struct link_map *map,
- Elf64_Addr l_addr, const Elf64_Rela *reloc)
-{
- Elf64_Addr * const reloc_addr = (void *)(l_addr + reloc->r_offset);
- unsigned long int const r_type = ELF64_R_TYPE (reloc->r_info);
-
- if (r_type == R_ALPHA_JMP_SLOT)
- {
- /* Perform a RELATIVE reloc on the .got entry that transfers
- to the .plt. */
- *reloc_addr += l_addr;
- }
- else if (r_type == R_ALPHA_NONE)
- return;
- else
- _dl_reloc_bad_type (map, r_type, 1);
-}
-
-#endif /* RESOLVE_MAP */
diff --git a/sysdeps/alpha/dl-sysdep.h b/sysdeps/alpha/dl-sysdep.h
deleted file mode 100644
index cd678f4e43..0000000000
--- a/sysdeps/alpha/dl-sysdep.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* System-specific settings for dynamic linker code. Alpha version.
- Copyright (C) 2002, 2003, 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include_next <dl-sysdep.h>
-
-/* _dl_argv cannot be attribute_relro, because _dl_start_user
- might write into it after _dl_start returns. */
-#define DL_ARGV_NOT_RELRO 1
diff --git a/sysdeps/alpha/dl-trampoline.S b/sysdeps/alpha/dl-trampoline.S
deleted file mode 100644
index c52efbb3bc..0000000000
--- a/sysdeps/alpha/dl-trampoline.S
+++ /dev/null
@@ -1,541 +0,0 @@
-/* PLT trampolines. Alpha version.
- Copyright (C) 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-
- .set noat
-
-.macro savei regno, offset
- stq $\regno, \offset($30)
- cfi_rel_offset(\regno, \offset)
-.endm
-
-.macro savef regno, offset
- stt $f\regno, \offset($30)
- cfi_rel_offset(\regno+32, \offset)
-.endm
-
- .align 4
- .globl _dl_runtime_resolve_new
- .ent _dl_runtime_resolve_new
-
-#undef FRAMESIZE
-#define FRAMESIZE 14*8
-
-_dl_runtime_resolve_new:
- .frame $30, FRAMESIZE, $26, 0
- .mask 0x4000000, 0
-
- ldah $29, 0($27) !gpdisp!1
- lda $30, -FRAMESIZE($30)
- stq $26, 0*8($30)
- stq $16, 2*8($30)
-
- stq $17, 3*8($30)
- lda $29, 0($29) !gpdisp!1
- stq $18, 4*8($30)
- mov $28, $16 /* link_map from .got.plt */
-
- stq $19, 5*8($30)
- mov $25, $17 /* offset of reloc entry */
- stq $20, 6*8($30)
- mov $26, $18 /* return address */
-
- stq $21, 7*8($30)
- stt $f16, 8*8($30)
- stt $f17, 9*8($30)
- stt $f18, 10*8($30)
-
- stt $f19, 11*8($30)
- stt $f20, 12*8($30)
- stt $f21, 13*8($30)
- .prologue 2
-
- bsr $26, _dl_fixup !samegp
- mov $0, $27
-
- ldq $26, 0*8($30)
- ldq $16, 2*8($30)
- ldq $17, 3*8($30)
- ldq $18, 4*8($30)
- ldq $19, 5*8($30)
- ldq $20, 6*8($30)
- ldq $21, 7*8($30)
- ldt $f16, 8*8($30)
- ldt $f17, 9*8($30)
- ldt $f18, 10*8($30)
- ldt $f19, 11*8($30)
- ldt $f20, 12*8($30)
- ldt $f21, 13*8($30)
- lda $30, FRAMESIZE($30)
- jmp $31, ($27), 0
- .end _dl_runtime_resolve_new
-
- .globl _dl_runtime_profile_new
- .type _dl_runtime_profile_new, @function
-
-#undef FRAMESIZE
-#define FRAMESIZE 20*8
-
- /* We save the registers in a different order than desired by
- .mask/.fmask, so we have to use explicit cfi directives. */
- cfi_startproc
-
-_dl_runtime_profile_new:
- ldah $29, 0($27) !gpdisp!2
- lda $30, -FRAMESIZE($30)
- savei 26, 0*8
- stq $16, 2*8($30)
-
- stq $17, 3*8($30)
- lda $29, 0($29) !gpdisp!2
- stq $18, 4*8($30)
- lda $1, FRAMESIZE($30) /* incoming sp value */
-
- stq $1, 1*8($30)
- stq $19, 5*8($30)
- stq $20, 6*8($30)
- mov $28, $16 /* link_map from .got.plt */
-
- stq $21, 7*8($30)
- mov $25, $17 /* offset of reloc entry */
- stt $f16, 8*8($30)
- mov $26, $18 /* return address */
-
- stt $f17, 9*8($30)
- mov $30, $19 /* La_alpha_regs address */
- stt $f18, 10*8($30)
- lda $20, 14*8($30) /* framesize address */
-
- stt $f19, 11*8($30)
- stt $f20, 12*8($30)
- stt $f21, 13*8($30)
- stq $28, 16*8($30)
- stq $25, 17*8($30)
-
- bsr $26, _dl_profile_fixup !samegp
- mov $0, $27
-
- /* Discover if we're wrapping this call. */
- ldq $18, 14*8($30)
- bge $18, 1f
-
- ldq $26, 0*8($30)
- ldq $16, 2*8($30)
- ldq $17, 3*8($30)
- ldq $18, 4*8($30)
- ldq $19, 5*8($30)
- ldq $20, 6*8($30)
- ldq $21, 7*8($30)
- ldt $f16, 8*8($30)
- ldt $f17, 9*8($30)
- ldt $f18, 10*8($30)
- ldt $f19, 11*8($30)
- ldt $f20, 12*8($30)
- ldt $f21, 13*8($30)
- lda $30, FRAMESIZE($30)
- jmp $31, ($27), 0
-
-1:
- /* Create a frame pointer and allocate a new argument frame. */
- savei 15, 15*8
- mov $30, $15
- cfi_def_cfa_register (15)
- addq $18, 15, $18
- bic $18, 15, $18
- subq $30, $18, $30
-
- /* Save the call destination around memcpy. */
- stq $0, 14*8($30)
-
- /* Copy the stack arguments into place. */
- lda $16, 0($30)
- lda $17, FRAMESIZE($15)
- jsr $26, memcpy
- ldgp $29, 0($26)
-
- /* Reload the argument registers. */
- ldq $27, 14*8($30)
- ldq $16, 2*8($15)
- ldq $17, 3*8($15)
- ldq $18, 4*8($15)
- ldq $19, 5*8($15)
- ldq $20, 6*8($15)
- ldq $21, 7*8($15)
- ldt $f16, 8*8($15)
- ldt $f17, 9*8($15)
- ldt $f18, 10*8($15)
- ldt $f19, 11*8($15)
- ldt $f20, 12*8($15)
- ldt $f21, 13*8($15)
-
- jsr $26, ($27), 0
- ldgp $29, 0($26)
-
- /* Set up for call to _dl_call_pltexit. */
- ldq $16, 16*8($15)
- ldq $17, 17*8($15)
- stq $0, 16*8($15)
- lda $18, 0($15)
- stq $1, 17*8($15)
- lda $19, 16*8($15)
- stt $f0, 18*8($15)
- stt $f1, 19*8($15)
- bsr $26, _dl_call_pltexit !samegp
-
- mov $15, $30
- cfi_def_cfa_register (30)
- ldq $26, 0($30)
- ldq $15, 15*8($30)
- lda $30, FRAMESIZE($30)
- ret
-
- cfi_endproc
- .size _dl_runtime_profile_new, .-_dl_runtime_profile_new
-
- .align 4
- .globl _dl_runtime_resolve_old
- .ent _dl_runtime_resolve_old
-
-#undef FRAMESIZE
-#define FRAMESIZE 44*8
-
-_dl_runtime_resolve_old:
- lda $30, -FRAMESIZE($30)
- .frame $30, FRAMESIZE, $26
- /* Preserve all registers that C normally doesn't. */
- stq $26, 0*8($30)
- stq $0, 1*8($30)
- stq $1, 2*8($30)
- stq $2, 3*8($30)
- stq $3, 4*8($30)
- stq $4, 5*8($30)
- stq $5, 6*8($30)
- stq $6, 7*8($30)
- stq $7, 8*8($30)
- stq $8, 9*8($30)
- stq $16, 10*8($30)
- stq $17, 11*8($30)
- stq $18, 12*8($30)
- stq $19, 13*8($30)
- stq $20, 14*8($30)
- stq $21, 15*8($30)
- stq $22, 16*8($30)
- stq $23, 17*8($30)
- stq $24, 18*8($30)
- stq $25, 19*8($30)
- stq $29, 20*8($30)
- stt $f0, 21*8($30)
- stt $f1, 22*8($30)
- stt $f10, 23*8($30)
- stt $f11, 24*8($30)
- stt $f12, 25*8($30)
- stt $f13, 26*8($30)
- stt $f14, 27*8($30)
- stt $f15, 28*8($30)
- stt $f16, 29*8($30)
- stt $f17, 30*8($30)
- stt $f18, 31*8($30)
- stt $f19, 32*8($30)
- stt $f20, 33*8($30)
- stt $f21, 34*8($30)
- stt $f22, 35*8($30)
- stt $f23, 36*8($30)
- stt $f24, 37*8($30)
- stt $f25, 38*8($30)
- stt $f26, 39*8($30)
- stt $f27, 40*8($30)
- stt $f28, 41*8($30)
- stt $f29, 42*8($30)
- stt $f30, 43*8($30)
- .mask 0x27ff01ff, -FRAMESIZE
- .fmask 0xfffffc03, -FRAMESIZE+21*8
- /* Set up our GP. */
- br $29, .+4
- ldgp $29, 0($29)
- .prologue 0
- /* Set up the arguments for _dl_fixup:
- $16 = link_map out of plt0
- $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24
- $18 = return address
- */
- subq $28, $27, $17
- ldq $16, 8($27)
- subq $17, 20, $17
- mov $26, $18
- addq $17, $17, $17
- bsr $26, _dl_fixup !samegp
-
- /* Move the destination address into position. */
- mov $0, $27
- /* Restore program registers. */
- ldq $26, 0*8($30)
- ldq $0, 1*8($30)
- ldq $1, 2*8($30)
- ldq $2, 3*8($30)
- ldq $3, 4*8($30)
- ldq $4, 5*8($30)
- ldq $5, 6*8($30)
- ldq $6, 7*8($30)
- ldq $7, 8*8($30)
- ldq $8, 9*8($30)
- ldq $16, 10*8($30)
- ldq $17, 11*8($30)
- ldq $18, 12*8($30)
- ldq $19, 13*8($30)
- ldq $20, 14*8($30)
- ldq $21, 15*8($30)
- ldq $22, 16*8($30)
- ldq $23, 17*8($30)
- ldq $24, 18*8($30)
- ldq $25, 19*8($30)
- ldq $29, 20*8($30)
- ldt $f0, 21*8($30)
- ldt $f1, 22*8($30)
- ldt $f10, 23*8($30)
- ldt $f11, 24*8($30)
- ldt $f12, 25*8($30)
- ldt $f13, 26*8($30)
- ldt $f14, 27*8($30)
- ldt $f15, 28*8($30)
- ldt $f16, 29*8($30)
- ldt $f17, 30*8($30)
- ldt $f18, 31*8($30)
- ldt $f19, 32*8($30)
- ldt $f20, 33*8($30)
- ldt $f21, 34*8($30)
- ldt $f22, 35*8($30)
- ldt $f23, 36*8($30)
- ldt $f24, 37*8($30)
- ldt $f25, 38*8($30)
- ldt $f26, 39*8($30)
- ldt $f27, 40*8($30)
- ldt $f28, 41*8($30)
- ldt $f29, 42*8($30)
- ldt $f30, 43*8($30)
- /* Flush the Icache after having modified the .plt code. */
- imb
- /* Clean up and turn control to the destination */
- lda $30, FRAMESIZE($30)
- jmp $31, ($27)
-
- .end _dl_runtime_resolve_old
-
- .globl _dl_runtime_profile_old
- .usepv _dl_runtime_profile_old, no
- .type _dl_runtime_profile_old, @function
-
- /* We save the registers in a different order than desired by
- .mask/.fmask, so we have to use explicit cfi directives. */
- cfi_startproc
-
-#undef FRAMESIZE
-#define FRAMESIZE 50*8
-
- .align 4
-_dl_runtime_profile_old:
- lda $30, -FRAMESIZE($30)
- cfi_adjust_cfa_offset (FRAMESIZE)
-
- /* Preserve all argument registers. This also constructs the
- La_alpha_regs structure. */
- savei 26, 0*8
- savei 16, 2*8
- savei 17, 3*8
- savei 18, 4*8
- savei 19, 5*8
- savei 20, 6*8
- savei 21, 7*8
- lda $16, FRAMESIZE($30)
- savef 16, 8*8
- savef 17, 9*8
- savef 18, 10*8
- savef 19, 11*8
- savef 20, 12*8
- savef 21, 13*8
- stq $16, 1*8($30)
-
- /* Preserve all registers that C normally doesn't. */
- savei 0, 14*8
- savei 1, 15*8
- savei 2, 16*8
- savei 3, 17*8
- savei 4, 18*8
- savei 5, 19*8
- savei 6, 20*8
- savei 7, 21*8
- savei 8, 22*8
- savei 22, 23*8
- savei 23, 24*8
- savei 24, 25*8
- savei 25, 26*8
- savei 29, 27*8
- savef 0, 28*8
- savef 1, 29*8
- savef 10, 30*8
- savef 11, 31*8
- savef 12, 32*8
- savef 13, 33*8
- savef 14, 34*8
- savef 15, 35*8
- savef 22, 36*8
- savef 23, 37*8
- savef 24, 38*8
- savef 25, 39*8
- savef 26, 40*8
- savef 27, 41*8
- savef 28, 42*8
- savef 29, 43*8
- savef 30, 44*8
-
- /* Set up our GP. */
- br $29, .+4
- ldgp $29, 0($29)
-
- /* Set up the arguments for _dl_profile_fixup:
- $16 = link_map out of plt0
- $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24
- $18 = return address
- $19 = La_alpha_regs address
- $20 = framesize address
- */
- subq $28, $27, $17
- ldq $16, 8($27)
- subq $17, 20, $17
- mov $26, $18
- addq $17, $17, $17
- lda $19, 0($30)
- lda $20, 45*8($30)
- stq $16, 48*8($30)
- stq $17, 49*8($30)
-
- bsr $26, _dl_profile_fixup !samegp
-
- /* Discover if we're wrapping this call. */
- ldq $18, 45*8($30)
- bge $18, 1f
-
- /* Move the destination address into position. */
- mov $0, $27
- /* Restore program registers. */
- ldq $26, 0*8($30)
- ldq $16, 2*8($30)
- ldq $17, 3*8($30)
- ldq $18, 4*8($30)
- ldq $19, 5*8($30)
- ldq $20, 6*8($30)
- ldq $21, 7*8($30)
- ldt $f16, 8*8($30)
- ldt $f17, 9*8($30)
- ldt $f18, 10*8($30)
- ldt $f19, 11*8($30)
- ldt $f20, 12*8($30)
- ldt $f21, 13*8($30)
- ldq $0, 14*8($30)
- ldq $1, 15*8($30)
- ldq $2, 16*8($30)
- ldq $3, 17*8($30)
- ldq $4, 18*8($30)
- ldq $5, 19*8($30)
- ldq $6, 20*8($30)
- ldq $7, 21*8($30)
- ldq $8, 22*8($30)
- ldq $22, 23*8($30)
- ldq $23, 24*8($30)
- ldq $24, 25*8($30)
- ldq $25, 26*8($30)
- ldq $29, 27*8($30)
- ldt $f0, 28*8($30)
- ldt $f1, 29*8($30)
- ldt $f10, 30*8($30)
- ldt $f11, 31*8($30)
- ldt $f12, 32*8($30)
- ldt $f13, 33*8($30)
- ldt $f14, 34*8($30)
- ldt $f15, 35*8($30)
- ldt $f22, 36*8($30)
- ldt $f23, 37*8($30)
- ldt $f24, 38*8($30)
- ldt $f25, 39*8($30)
- ldt $f26, 40*8($30)
- ldt $f27, 41*8($30)
- ldt $f28, 42*8($30)
- ldt $f29, 43*8($30)
- ldt $f30, 44*8($30)
-
- /* Clean up and turn control to the destination. */
- lda $30, FRAMESIZE($30)
- jmp $31, ($27)
-
-1:
- /* Create a frame pointer and allocate a new argument frame. */
- savei 15, 45*8
- mov $30, $15
- cfi_def_cfa_register (15)
- addq $18, 15, $18
- bic $18, 15, $18
- subq $30, $18, $30
-
- /* Save the call destination around memcpy. */
- stq $0, 46*8($30)
-
- /* Copy the stack arguments into place. */
- lda $16, 0($30)
- lda $17, FRAMESIZE($15)
- jsr $26, memcpy
- ldgp $29, 0($26)
-
- /* Reload the argument registers. */
- ldq $27, 46*8($30)
- ldq $16, 2*8($15)
- ldq $17, 3*8($15)
- ldq $18, 4*8($15)
- ldq $19, 5*8($15)
- ldq $20, 6*8($15)
- ldq $21, 7*8($15)
- ldt $f16, 8*8($15)
- ldt $f17, 9*8($15)
- ldt $f18, 10*8($15)
- ldt $f19, 11*8($15)
- ldt $f20, 12*8($15)
- ldt $f21, 13*8($15)
-
- jsr $26, ($27), 0
- ldgp $29, 0($26)
-
- /* Set up for call to _dl_call_pltexit. */
- ldq $16, 48*8($15)
- ldq $17, 49*8($15)
- stq $0, 46*8($15)
- lda $18, 0($15)
- stq $1, 47*8($15)
- lda $19, 46*8($15)
- stt $f0, 48*8($15)
- stt $f1, 49*8($15)
- bsr $26, _dl_call_pltexit !samegp
-
- mov $15, $30
- cfi_def_cfa_register (30)
- ldq $26, 0($30)
- ldq $15, 45*8($30)
- lda $30, FRAMESIZE($30)
- ret
-
- cfi_endproc
- .size _dl_runtime_profile_old, .-_dl_runtime_profile_old
diff --git a/sysdeps/alpha/elf/configure b/sysdeps/alpha/elf/configure
deleted file mode 100755
index ea99e35416..0000000000
--- a/sysdeps/alpha/elf/configure
+++ /dev/null
@@ -1,106 +0,0 @@
-# This file is generated from configure.in by Autoconf. DO NOT EDIT!
- # Local configure fragment for sysdeps/alpha/elf.
-
-if test "$usetls" != no; then
-# Check for support of thread-local storage handling in assembler and
-# linker.
-echo "$as_me:$LINENO: checking for Alpha TLS support" >&5
-echo $ECHO_N "checking for Alpha TLS support... $ECHO_C" >&6
-if test "${libc_cv_alpha_tls+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat > conftest.s <<\EOF
- .section ".tdata", "awT", @progbits
- .globl foo
-foo: .quad 1
- .section ".tbss", "awT", @nobits
- .globl bar
-bar: .skip 8
- .text
-baz:
- .set nomacro
- ldq $27, __tls_get_addr($29) !literal!1
- ldq $16, a($29) !tlsgd!1
- jsr $26, ($27), __tls_get_addr !lituse_tlsgd!1
-
- jsr $26, ($27), __tls_get_addr !lituse_tlsldm!2
- ldq $27, __tls_get_addr($29) !literal!2
- ldq $16, b($29) !tlsldm!2
-
- ldq $16, c($29) !tlsgd
- ldq $16, d($29) !tlsldm
-
- ldq $16, e($29) !tlsgd!3
- ldq $16, f($29) !tlsldm!4
-
- ldq $16, g($29) !gotdtprel
- ldah $16, h($31) !dtprelhi
- lda $16, i($16) !dtprello
- lda $16, j($31) !dtprel
-
- ldq $16, k($29) !gottprel
- ldah $16, l($31) !tprelhi
- lda $16, m($16) !tprello
- lda $16, n($31) !tprel
-EOF
-if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- libc_cv_alpha_tls=yes
-else
- libc_cv_alpha_tls=no
-fi
-rm -f conftest*
-fi
-echo "$as_me:$LINENO: result: $libc_cv_alpha_tls" >&5
-echo "${ECHO_T}$libc_cv_alpha_tls" >&6
-if test $libc_cv_alpha_tls = yes; then
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_TLS_SUPPORT 1
-_ACEOF
-
-fi
-fi
-
-echo "$as_me:$LINENO: checking for GP relative module local relocs" >&5
-echo $ECHO_N "checking for GP relative module local relocs... $ECHO_C" >&6
-if test "${libc_cv_alpha_hidden_gprel+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat > conftest.c <<\EOF
-static int bar;
-int baz __attribute__((visibility("hidden")));
-
-int foo (void)
-{
- return bar + baz;
-}
-EOF
-
-libc_cv_alpha_hidden_gprel=no
-if { ac_try='${CC-cc} -S $CFLAGS -O2 -fpic conftest.c 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- if grep -q 'bar.*!gprel' conftest.s \
- && grep -q 'baz.*!gprel' conftest.s \
- && ! grep -q 'bar.*!literal' conftest.s \
- && ! grep -q 'baz.*!literal' conftest.s; then
- libc_cv_alpha_hidden_gprel=yes
- fi
-fi
-rm -f conftest*
-fi
-echo "$as_me:$LINENO: result: $libc_cv_alpha_hidden_gprel" >&5
-echo "${ECHO_T}$libc_cv_alpha_hidden_gprel" >&6
-if test $libc_cv_alpha_hidden_gprel = yes; then
- cat >>confdefs.h <<\_ACEOF
-#define PI_STATIC_AND_HIDDEN 1
-_ACEOF
-
-fi
diff --git a/sysdeps/alpha/elf/configure.in b/sysdeps/alpha/elf/configure.in
deleted file mode 100644
index 7986814548..0000000000
--- a/sysdeps/alpha/elf/configure.in
+++ /dev/null
@@ -1,78 +0,0 @@
-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-# Local configure fragment for sysdeps/alpha/elf.
-
-if test "$usetls" != no; then
-# Check for support of thread-local storage handling in assembler and
-# linker.
-AC_CACHE_CHECK(for Alpha TLS support, libc_cv_alpha_tls, [dnl
-cat > conftest.s <<\EOF
- .section ".tdata", "awT", @progbits
- .globl foo
-foo: .quad 1
- .section ".tbss", "awT", @nobits
- .globl bar
-bar: .skip 8
- .text
-baz:
- .set nomacro
- ldq $27, __tls_get_addr($29) !literal!1
- ldq $16, a($29) !tlsgd!1
- jsr $26, ($27), __tls_get_addr !lituse_tlsgd!1
-
- jsr $26, ($27), __tls_get_addr !lituse_tlsldm!2
- ldq $27, __tls_get_addr($29) !literal!2
- ldq $16, b($29) !tlsldm!2
-
- ldq $16, c($29) !tlsgd
- ldq $16, d($29) !tlsldm
-
- ldq $16, e($29) !tlsgd!3
- ldq $16, f($29) !tlsldm!4
-
- ldq $16, g($29) !gotdtprel
- ldah $16, h($31) !dtprelhi
- lda $16, i($16) !dtprello
- lda $16, j($31) !dtprel
-
- ldq $16, k($29) !gottprel
- ldah $16, l($31) !tprelhi
- lda $16, m($16) !tprello
- lda $16, n($31) !tprel
-EOF
-dnl
-if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_alpha_tls=yes
-else
- libc_cv_alpha_tls=no
-fi
-rm -f conftest*])
-if test $libc_cv_alpha_tls = yes; then
- AC_DEFINE(HAVE_TLS_SUPPORT)
-fi
-fi
-
-AC_CACHE_CHECK(for GP relative module local relocs, libc_cv_alpha_hidden_gprel, [dnl
-cat > conftest.c <<\EOF
-static int bar;
-int baz __attribute__((visibility("hidden")));
-
-int foo (void)
-{
- return bar + baz;
-}
-EOF
-dnl
-
-libc_cv_alpha_hidden_gprel=no
-if AC_TRY_COMMAND(${CC-cc} -S $CFLAGS -O2 -fpic conftest.c 1>&AS_MESSAGE_LOG_FD); then
- if grep -q 'bar.*!gprel' conftest.s \
- && grep -q 'baz.*!gprel' conftest.s \
- && ! grep -q 'bar.*!literal' conftest.s \
- && ! grep -q 'baz.*!literal' conftest.s; then
- libc_cv_alpha_hidden_gprel=yes
- fi
-fi
-rm -f conftest*])
-if test $libc_cv_alpha_hidden_gprel = yes; then
- AC_DEFINE(PI_STATIC_AND_HIDDEN)
-fi
diff --git a/sysdeps/alpha/elf/initfini.c b/sysdeps/alpha/elf/initfini.c
deleted file mode 100644
index 4d3342db9b..0000000000
--- a/sysdeps/alpha/elf/initfini.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* Special .init and .fini section support for Alpha.
- Copyright (C) 2001, 2002, 2003 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* This file is compiled into assembly code which is then munged by a sed
- script into two files: crti.s and crtn.s.
-
- * 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.
-
- * crtn.s puts the corresponding function epilogues in the .init and .fini
- sections.
-
- This differs from what would be generated by the generic code in that
- we save and restore the GP within the function. In order for linker
- relaxation to work, the value in the GP register on exit from a function
- must be valid for the function entry point. Normally, a function is
- contained within one object file and this is not an issue, provided
- that the function reloads the gp after making any function calls.
- However, _init and _fini are constructed from pieces of many object
- files, all of which may have different GP values. So we must reload
- the GP value from crti.o in crtn.o. */
-
-__asm__ (" \n\
-#include \"defs.h\" \n\
- \n\
-/*@HEADER_ENDS*/ \n\
- \n\
-/*@_init_PROLOG_BEGINS*/ \n\
- .section .init, \"ax\", @progbits \n\
- .globl _init \n\
- .type _init, @function \n\
- .usepv _init, std \n\
-_init: \n\
- ldgp $29, 0($27) \n\
- subq $30, 16, $30 \n\
- lda $27, __gmon_start__ \n\
- stq $26, 0($30) \n\
- stq $29, 8($30) \n\
- beq $27, 1f \n\
- jsr $26, ($27), __gmon_start__ \n\
- ldq $29, 8($30) \n\
- .align 3 \n\
-1: \n\
-/*@_init_PROLOG_ENDS*/ \n\
- \n\
-/*@_init_EPILOG_BEGINS*/ \n\
- .section .init, \"ax\", @progbits \n\
- ldq $26, 0($30) \n\
- ldq $29, 8($30) \n\
- addq $30, 16, $30 \n\
- ret \n\
-/*@_init_EPILOG_ENDS*/ \n\
- \n\
-/*@_fini_PROLOG_BEGINS*/ \n\
- .section .fini, \"ax\", @progbits \n\
- .globl _fini \n\
- .type _fini,@function \n\
- .usepv _fini,std \n\
-_fini: \n\
- ldgp $29, 0($27) \n\
- subq $30, 16, $30 \n\
- stq $26, 0($30) \n\
- stq $29, 8($30) \n\
- .align 3 \n\
-/*@_fini_PROLOG_ENDS*/ \n\
- \n\
-/*@_fini_EPILOG_BEGINS*/ \n\
- .section .fini, \"ax\", @progbits \n\
- ldq $26, 0($30) \n\
- ldq $29, 8($30) \n\
- addq $30, 16, $30 \n\
- ret \n\
-/*@_fini_EPILOG_ENDS*/ \n\
- \n\
-/*@TRAILER_BEGINS*/ \n\
-");
diff --git a/sysdeps/alpha/ffs.S b/sysdeps/alpha/ffs.S
deleted file mode 100644
index 5f2074ee7c..0000000000
--- a/sysdeps/alpha/ffs.S
+++ /dev/null
@@ -1,91 +0,0 @@
-/* Copyright (C) 1996, 1997, 1998, 2004 Free Software Foundation, Inc.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Finds the first bit set in an integer. Optimized for the Alpha
- architecture. */
-
-#include <sysdep.h>
-
- .set noreorder
- .set noat
-
-
-ENTRY(__ffs)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
- zap $16, 0xF0, $16
- br $ffsl..ng
-#else
- .prologue 0
- zap $16, 0xF0, $16
- # FALLTHRU
-#endif
-END(__ffs)
-
- .align 4
-ENTRY(ffsl)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-$ffsl..ng:
-#else
- .prologue 0
-#endif
- not $16, $1 # e0 :
- ldi $2, -1 # .. e1 :
- cmpbge $1, $2, $3 # e0 : bit N == 1 for byte N == 0
- clr $0 # .. e1 :
- addq $3, 1, $4 # e0 :
- bic $4, $3, $3 # e1 : bit N == 1 for first byte N != 0
- and $3, 0xF0, $4 # e0 :
- and $3, 0xCC, $5 # .. e1 :
- and $3, 0xAA, $6 # e0 :
- cmovne $4, 4, $0 # .. e1 :
- cmovne $5, 2, $5 # e0 :
- cmovne $6, 1, $6 # .. e1 :
- addl $0, $5, $0 # e0 :
- addl $0, $6, $0 # e1 : $0 == N
- extbl $16, $0, $1 # e0 : $1 == byte N
- ldi $2, 1 # .. e1 :
- negq $1, $3 # e0 :
- and $3, $1, $3 # e1 : bit N == least bit set of byte N
- and $3, 0xF0, $4 # e0 :
- and $3, 0xCC, $5 # .. e1 :
- and $3, 0xAA, $6 # e0 :
- cmovne $4, 5, $2 # .. e1 :
- cmovne $5, 2, $5 # e0 :
- cmovne $6, 1, $6 # .. e1 :
- s8addl $0, $2, $0 # e0 : mult byte ofs by 8 and sum
- addl $5, $6, $5 # .. e1 :
- addl $0, $5, $0 # e0 :
- nop # .. e1 :
- cmoveq $16, 0, $0 # e0 : trap input == 0 case.
- ret # .. e1 : 18
-
-END(ffsl)
-
-weak_alias (__ffs, ffs)
-libc_hidden_builtin_def (ffs)
-weak_extern (ffsl)
-weak_alias (ffsl, ffsll)
diff --git a/sysdeps/alpha/ffsll.S b/sysdeps/alpha/ffsll.S
deleted file mode 100644
index b2f46d899c..0000000000
--- a/sysdeps/alpha/ffsll.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function is defined in ffs.S. */
diff --git a/sysdeps/alpha/fpu/Versions b/sysdeps/alpha/fpu/Versions
deleted file mode 100644
index c9b0e03a91..0000000000
--- a/sysdeps/alpha/fpu/Versions
+++ /dev/null
@@ -1,23 +0,0 @@
-libc {
- GLIBC_2.0 {
- # functions used in other libraries
- __ieee_get_fp_control; __ieee_set_fp_control;
- }
-}
-libm {
- GLIBC_2.3.4 {
- # functions implementing old complex float abi
- __c1_cabsf; __c1_cacosf; __c1_cacoshf; __c1_cargf; __c1_casinf;
- __c1_casinhf; __c1_catanf; __c1_catanhf; __c1_ccosf; __c1_ccoshf;
- __c1_cexpf; __c1_cimagf; __c1_clog10f; __c1_clogf; __c1_conjf;
- __c1_cpowf; __c1_cprojf; __c1_crealf; __c1_csinf; __c1_csinhf;
- __c1_csqrtf; __c1_ctanf; __c1_ctanhf;
-
- # functions implementing new complex float abi
- cabsf; cacosf; cacoshf; cargf; casinf;
- casinhf; catanf; catanhf; ccosf; ccoshf;
- cexpf; cimagf; clog10f; clogf; conjf;
- cpowf; cprojf; crealf; csinf; csinhf;
- csqrtf; ctanf; ctanhf;
- }
-}
diff --git a/sysdeps/alpha/fpu/bits/fenv.h b/sysdeps/alpha/fpu/bits/fenv.h
deleted file mode 100644
index a9e89b498e..0000000000
--- a/sysdeps/alpha/fpu/bits/fenv.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/* Copyright (C) 1997, 1998, 1999, 2000 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _FENV_H
-# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
-#endif
-
-
-/* Define the bits representing the exception.
-
- Note that these are the bit positions as defined by the OSF/1
- ieee_{get,set}_control_word interface and not by the hardware fpcr.
-
- See the Alpha Architecture Handbook section 4.7.7.3 for details,
- but in summary, trap shadows mean the hardware register can acquire
- extra exception bits so for proper IEEE support the tracking has to
- be done in software -- in this case with kernel support.
-
- As to why the system call interface isn't in the same format as
- the hardware register, only those crazy folks at DEC can tell you. */
-
-enum
- {
-#ifdef __USE_GNU
- FE_DENORMAL = 1UL << 22,
-#define FE_DENORMAL FE_DENORMAL
-#endif
-
- FE_INEXACT = 1UL << 21,
-#define FE_INEXACT FE_INEXACT
-
- FE_UNDERFLOW = 1UL << 20,
-#define FE_UNDERFLOW FE_UNDERFLOW
-
- FE_OVERFLOW = 1UL << 19,
-#define FE_OVERFLOW FE_OVERFLOW
-
- FE_DIVBYZERO = 1UL << 18,
-#define FE_DIVBYZERO FE_DIVBYZERO
-
- FE_INVALID = 1UL << 17,
-#define FE_INVALID FE_INVALID
-
- FE_ALL_EXCEPT = 0x3f << 17
-#define FE_ALL_EXCEPT FE_ALL_EXCEPT
- };
-
-/* Alpha chips support all four defined rouding modes.
-
- Note that code must be compiled to use dynamic rounding (/d) instructions
- to see these changes. For gcc this is -mfp-rounding-mode=d; for DEC cc
- this is -fprm d. The default for both is static rounding to nearest.
-
- These are shifted down 58 bits from the hardware fpcr because the
- functions are declared to take integers. */
-
-enum
- {
- FE_TOWARDZERO = 0,
-#define FE_TOWARDZERO FE_TOWARDZERO
-
- FE_DOWNWARD = 1,
-#define FE_DOWNWARD FE_DOWNWARD
-
- FE_TONEAREST = 2,
-#define FE_TONEAREST FE_TONEAREST
-
- FE_UPWARD = 3,
-#define FE_UPWARD FE_UPWARD
- };
-
-#ifdef __USE_GNU
-/* On later hardware, and later kernels for earlier hardware, we can forcibly
- underflow denormal inputs and outputs. This can speed up certain programs
- significantly, usually without affecting accuracy. */
-enum
- {
- FE_MAP_DMZ = 1UL << 12, /* Map denorm inputs to zero */
-#define FE_MAP_DMZ FE_MAP_DMZ
-
- FE_MAP_UMZ = 1UL << 13, /* Map underflowed outputs to zero */
-#define FE_MAP_UMZ FE_MAP_UMZ
- };
-#endif
-
-/* Type representing exception flags. */
-typedef unsigned long int fexcept_t;
-
-/* Type representing floating-point environment. */
-typedef unsigned long int fenv_t;
-
-/* If the default argument is used we use this value. Note that due to
- architecture-specified page mappings, no user-space pointer will ever
- have its two high bits set. Co-opt one. */
-#define FE_DFL_ENV ((__const fenv_t *) 0x8800000000000000UL)
-
-#ifdef __USE_GNU
-/* Floating-point environment where none of the exceptions are masked. */
-# define FE_NOMASK_ENV ((__const fenv_t *) 0x880000000000003eUL)
-
-/* Floating-point environment with (processor-dependent) non-IEEE floating
- point. In this case, mapping denormals to zero. */
-# define FE_NONIEEE_ENV ((__const fenv_t *) 0x8800000000003000UL)
-#endif
-
-/* The system calls to talk to the kernel's FP code. */
-extern unsigned long int __ieee_get_fp_control (void) __THROW;
-extern void __ieee_set_fp_control (unsigned long int __value) __THROW;
diff --git a/sysdeps/alpha/fpu/bits/mathinline.h b/sysdeps/alpha/fpu/bits/mathinline.h
deleted file mode 100644
index 5378a181c6..0000000000
--- a/sysdeps/alpha/fpu/bits/mathinline.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/* Inline math functions for Alpha.
- Copyright (C) 1996, 1997, 1999-2001, 2004, 2007
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger-Tang.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _MATH_H
-# error "Never use <bits/mathinline.h> directly; include <math.h> instead."
-#endif
-
-#ifndef __extern_inline
-# define __MATH_INLINE __inline
-#else
-# define __MATH_INLINE __extern_inline
-#endif
-
-#if defined __USE_ISOC99 && defined __GNUC__ && !__GNUC_PREREQ(3,0)
-# undef isgreater
-# undef isgreaterequal
-# undef isless
-# undef islessequal
-# undef islessgreater
-# undef isunordered
-# define isunordered(u, v) \
- (__extension__ \
- ({ double __r, __u = (u), __v = (v); \
- __asm ("cmptun/su %1,%2,%0\n\ttrapb" \
- : "=&f" (__r) : "f" (__u), "f"(__v)); \
- __r != 0; }))
-#endif /* ISO C99 */
-
-#if (!defined __NO_MATH_INLINES || defined __LIBC_INTERNAL_MATH_INLINES) \
- && defined __OPTIMIZE__
-
-#if !__GNUC_PREREQ (4, 0)
-# define __inline_copysign(NAME, TYPE) \
-__MATH_INLINE TYPE \
-__NTH (NAME (TYPE __x, TYPE __y)) \
-{ \
- TYPE __z; \
- __asm ("cpys %1, %2, %0" : "=f" (__z) : "f" (__y), "f" (__x)); \
- return __z; \
-}
-
-__inline_copysign (__copysignf, float)
-__inline_copysign (copysignf, float)
-__inline_copysign (__copysign, double)
-__inline_copysign (copysign, double)
-
-# undef __inline_copysign
-#endif
-
-
-#if !__GNUC_PREREQ (2, 8)
-# define __inline_fabs(NAME, TYPE) \
-__MATH_INLINE TYPE \
-__NTH (NAME (TYPE __x)) \
-{ \
- TYPE __z; \
- __asm ("cpys $f31, %1, %0" : "=f" (__z) : "f" (__x)); \
- return __z; \
-}
-
-__inline_fabs (__fabsf, float)
-__inline_fabs (fabsf, float)
-__inline_fabs (__fabs, double)
-__inline_fabs (fabs, double)
-
-# undef __inline_fabs
-#endif
-
-#ifdef __USE_ISOC99
-
-/* Test for negative number. Used in the signbit() macro. */
-__MATH_INLINE int
-__NTH (__signbitf (float __x))
-{
-#if !__GNUC_PREREQ (4, 0)
- __extension__ union { float __f; int __i; } __u = { __f: __x };
- return __u.__i < 0;
-#else
- return __builtin_signbitf (__x);
-#endif
-}
-
-__MATH_INLINE int
-__NTH (__signbit (double __x))
-{
-#if !__GNUC_PREREQ (4, 0)
- __extension__ union { double __d; long __i; } __u = { __d: __x };
- return __u.__i < 0;
-#else
- return __builtin_signbit (__x);
-#endif
-}
-
-__MATH_INLINE int
-__NTH (__signbitl (long double __x))
-{
-#if !__GNUC_PREREQ (4, 0)
- __extension__ union {
- long double __d;
- long __i[sizeof(long double)/sizeof(long)];
- } __u = { __d: __x };
- return __u.__i[sizeof(long double)/sizeof(long) - 1] < 0;
-#else
- return __builtin_signbitl (__x);
-#endif
-}
-
-/* Test for NaN. Used in the isnan() macro. */
-
-__MATH_INLINE int
-__NTH (__isnanf (float __x))
-{
- return isunordered (__x, __x);
-}
-
-__MATH_INLINE int
-__NTH (__isnan (double __x))
-{
- return isunordered (__x, __x);
-}
-
-#ifndef __NO_LONG_DOUBLE_MATH
-__MATH_INLINE int
-__NTH (__isnanl (long double __x))
-{
- return isunordered (__x, __x);
-}
-#endif
-
-#endif /* C99 */
-
-#endif /* __NO_MATH_INLINES */
diff --git a/sysdeps/alpha/fpu/cabsf.c b/sysdeps/alpha/fpu/cabsf.c
deleted file mode 100644
index de8e6b5548..0000000000
--- a/sysdeps/alpha/fpu/cabsf.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Return the complex absolute value of float complex value.
- Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __cabsf __cabsf_not_defined
-#define cabsf cabsf_not_defined
-
-#include <complex.h>
-#include <math.h>
-#include "cfloat-compat.h"
-
-#undef __cabsf
-#undef cabsf
-
-float
-__c1_cabsf (c1_cfloat_decl (z))
-{
- return __hypotf (c1_cfloat_real (z), c1_cfloat_imag (z));
-}
-
-float
-__c2_cabsf (c2_cfloat_decl (z))
-{
- return __hypotf (c2_cfloat_real (z), c2_cfloat_imag (z));
-}
-
-cfloat_versions (cabsf);
diff --git a/sysdeps/alpha/fpu/cargf.c b/sysdeps/alpha/fpu/cargf.c
deleted file mode 100644
index 1d96e5897d..0000000000
--- a/sysdeps/alpha/fpu/cargf.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Compute argument of complex float value.
- Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __cargf __cargf_not_defined
-#define cargf cargf_not_defined
-
-#include <complex.h>
-#include <math.h>
-#include "cfloat-compat.h"
-
-#undef __cargf
-#undef cargf
-
-float
-__c1_cargf (c1_cfloat_decl (x))
-{
- return __atan2f (c1_cfloat_imag (x), c1_cfloat_real (x));
-}
-
-float
-__c2_cargf (c2_cfloat_decl (x))
-{
- return __atan2f (c2_cfloat_imag (x), c2_cfloat_real (x));
-}
-
-cfloat_versions (cargf);
diff --git a/sysdeps/alpha/fpu/cfloat-compat.h b/sysdeps/alpha/fpu/cfloat-compat.h
deleted file mode 100644
index d325a7650e..0000000000
--- a/sysdeps/alpha/fpu/cfloat-compat.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Compatibility macros for old and new Alpha complex float ABI.
- Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* The behaviour of complex float changed between GCC 3.3 and 3.4.
-
- In 3.3 and before (below, complex version 1, or "c1"), complex float
- values were packed into one floating point register.
-
- In 3.4 and later (below, complex version 2, or "c2"), GCC changed to
- follow the official Tru64 ABI, which passes the components of a complex
- as separate parameters. */
-
-#if __GNUC_PREREQ(3,4)
- typedef union { double d; _Complex float cf; } c1_compat;
-# define c1_cfloat_decl(x) double x
-# define c1_cfloat_real(x) __real__ c1_cfloat_value (x)
-# define c1_cfloat_imag(x) __imag__ c1_cfloat_value (x)
-# define c1_cfloat_value(x) (((c1_compat *)(void *)&x)->cf)
-# define c1_cfloat_rettype double
-# define c1_cfloat_return(x) ({ c1_compat _; _.cf = (x); _.d; })
-# define c2_cfloat_decl(x) _Complex float x
-# define c2_cfloat_real(x) __real__ x
-# define c2_cfloat_imag(x) __imag__ x
-# define c2_cfloat_value(x) x
-# define c2_cfloat_rettype _Complex float
-# define c2_cfloat_return(x) x
-#else
-# define c1_cfloat_decl(x) _Complex float x
-# define c1_cfloat_real(x) __real__ x
-# define c1_cfloat_imag(x) __imag__ x
-# define c1_cfloat_value(x) x
-# define c1_cfloat_rettype _Complex float
-# define c1_cfloat_return(x) x
-# define c2_cfloat_decl(x) float x ## r, float x ## i
-# define c2_cfloat_real(x) x ## r
-# define c2_cfloat_imag(x) x ## i
-# define c2_cfloat_value(x) \
- ({ _Complex float _; __real__ _ = x##r; __imag__ _ = x##i; _; })
-# define c2_cfloat_rettype double _Complex
-# define c2_cfloat_return(x) x
-#endif
-
-/* Get the proper symbol versions defined for each function. */
-
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_3_4)
-#define cfloat_versions_compat(func) \
- compat_symbol (libm, __c1_##func, func, GLIBC_2_1)
-#else
-#define cfloat_versions_compat(func)
-#endif
-
-#define cfloat_versions(func) \
- cfloat_versions_compat(func); \
- versioned_symbol (libm, __c2_##func, func, GLIBC_2_3_4); \
- extern typeof(__c2_##func) __##func attribute_hidden; \
- strong_alias (__c2_##func, __##func)
diff --git a/sysdeps/alpha/fpu/cimagf.c b/sysdeps/alpha/fpu/cimagf.c
deleted file mode 100644
index a9b351f188..0000000000
--- a/sysdeps/alpha/fpu/cimagf.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Return imaginary part of complex float value.
- Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __cimagf __cimagf_not_defined
-#define cimagf cimagf_not_defined
-
-#include <complex.h>
-#include "cfloat-compat.h"
-
-#undef __cimagf
-#undef cimagf
-
-float
-__c1_cimagf (c1_cfloat_decl (z))
-{
- return c1_cfloat_imag (z);
-}
-
-float
-__c2_cimagf (c2_cfloat_decl (z))
-{
- return c2_cfloat_imag (z);
-}
-
-cfloat_versions (cimagf);
diff --git a/sysdeps/alpha/fpu/conjf.c b/sysdeps/alpha/fpu/conjf.c
deleted file mode 100644
index 6ff92b9948..0000000000
--- a/sysdeps/alpha/fpu/conjf.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Return complex conjugate of complex float value.
- Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __conjf __conjf_not_defined
-#define conjf conjf_not_defined
-
-#include <complex.h>
-#include "cfloat-compat.h"
-
-#undef __conjf
-#undef conjf
-
-c1_cfloat_rettype
-__c1_conjf (c1_cfloat_decl (z))
-{
- _Complex float r = ~ c1_cfloat_value (z);
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_conjf (c2_cfloat_decl (z))
-{
- _Complex float r = ~ c2_cfloat_value (z);
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (conjf);
diff --git a/sysdeps/alpha/fpu/crealf.c b/sysdeps/alpha/fpu/crealf.c
deleted file mode 100644
index 52ab271738..0000000000
--- a/sysdeps/alpha/fpu/crealf.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Return real part of complex float value.
- Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __crealf __crealf_not_defined
-#define crealf crealf_not_defined
-
-#include <complex.h>
-#include "cfloat-compat.h"
-
-#undef __crealf
-#undef crealf
-
-float
-__c1_crealf (c1_cfloat_decl (z))
-{
- return c1_cfloat_real (z);
-}
-
-float
-__c2_crealf (c2_cfloat_decl (z))
-{
- return c2_cfloat_real (z);
-}
-
-cfloat_versions (crealf);
diff --git a/sysdeps/alpha/fpu/e_sqrt.c b/sysdeps/alpha/fpu/e_sqrt.c
deleted file mode 100644
index c5ab25f16f..0000000000
--- a/sysdeps/alpha/fpu/e_sqrt.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/* Copyright (C) 1996,1997,1998,2002,2003 Free Software Foundation, Inc.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <features.h>
-
-#if !defined(_IEEE_FP_INEXACT)
-
-/*
- * This version is much faster than generic sqrt implementation, but
- * it doesn't handle the inexact flag. It doesn't handle exceptional
- * values either, but will defer to the full ieee754_sqrt routine which
- * can.
- */
-
-/* Careful with rearranging this without consulting the assembly below. */
-const static struct sqrt_data_struct {
- unsigned long dn, up, half, almost_three_half;
- unsigned long one_and_a_half, two_to_minus_30, one, nan;
- const int T2[64];
-} sqrt_data __attribute__((used)) = {
- 0x3fefffffffffffff, /* __dn = nextafter(1,-Inf) */
- 0x3ff0000000000001, /* __up = nextafter(1,+Inf) */
- 0x3fe0000000000000, /* half */
- 0x3ff7ffffffc00000, /* almost_three_half = 1.5-2^-30 */
- 0x3ff8000000000000, /* one_and_a_half */
- 0x3e10000000000000, /* two_to_minus_30 */
- 0x3ff0000000000000, /* one */
- 0xffffffffffffffff, /* nan */
-
- { 0x1500, 0x2ef8, 0x4d67, 0x6b02, 0x87be, 0xa395, 0xbe7a, 0xd866,
- 0xf14a, 0x1091b,0x11fcd,0x13552,0x14999,0x15c98,0x16e34,0x17e5f,
- 0x18d03,0x19a01,0x1a545,0x1ae8a,0x1b5c4,0x1bb01,0x1bfde,0x1c28d,
- 0x1c2de,0x1c0db,0x1ba73,0x1b11c,0x1a4b5,0x1953d,0x18266,0x16be0,
- 0x1683e,0x179d8,0x18a4d,0x19992,0x1a789,0x1b445,0x1bf61,0x1c989,
- 0x1d16d,0x1d77b,0x1dddf,0x1e2ad,0x1e5bf,0x1e6e8,0x1e654,0x1e3cd,
- 0x1df2a,0x1d635,0x1cb16,0x1be2c,0x1ae4e,0x19bde,0x1868e,0x16e2e,
- 0x1527f,0x1334a,0x11051,0xe951, 0xbe01, 0x8e0d, 0x5924, 0x1edd }
-};
-
-asm ("\
- /* Define offsets into the structure defined in C above. */ \n\
- $DN = 0*8 \n\
- $UP = 1*8 \n\
- $HALF = 2*8 \n\
- $ALMOST_THREE_HALF = 3*8 \n\
- $NAN = 7*8 \n\
- $T2 = 8*8 \n\
- \n\
- /* Stack variables. */ \n\
- $K = 0 \n\
- $Y = 8 \n\
- \n\
- .text \n\
- .align 5 \n\
- .globl __ieee754_sqrt \n\
- .ent __ieee754_sqrt \n\
-__ieee754_sqrt: \n\
- ldgp $29, 0($27) \n\
- subq $sp, 16, $sp \n\
- .frame $sp, 16, $26, 0\n"
-#ifdef PROF
-" lda $28, _mcount \n\
- jsr $28, ($28), _mcount\n"
-#endif
-" .prologue 1 \n\
- \n\
- .align 4 \n\
- stt $f16, $K($sp) # e0 : \n\
- mult $f31, $f31, $f31 # .. fm : \n\
- lda $4, sqrt_data # e0 : \n\
- fblt $f16, $fixup # .. fa : \n\
- \n\
- ldah $2, 0x5fe8 # e0 : \n\
- ldq $3, $K($sp) # .. e1 : \n\
- ldt $f12, $HALF($4) # e0 : \n\
- ldt $f18, $ALMOST_THREE_HALF($4) # .. e1 : \n\
- \n\
- sll $3, 52, $5 # e0 : \n\
- lda $6, 0x7fd # .. e1 : \n\
- fnop # .. fa : \n\
- fnop # .. fm : \n\
- \n\
- subq $5, 1, $5 # e1 : \n\
- srl $3, 33, $1 # .. e0 : \n\
- cmpule $5, $6, $5 # e0 : \n\
- beq $5, $fixup # .. e1 : \n\
- \n\
- mult $f16, $f12, $f11 # fm : $f11 = x * 0.5 \n\
- subl $2, $1, $2 # .. e0 : \n\
- addt $f12, $f12, $f17 # .. fa : $f17 = 1.0 \n\
- srl $2, 12, $1 # e0 : \n\
- \n\
- and $1, 0xfc, $1 # e0 : \n\
- addq $1, $4, $1 # e1 : \n\
- ldl $1, $T2($1) # e0 : \n\
- addt $f12, $f17, $f15 # .. fa : $f15 = 1.5 \n\
- \n\
- subl $2, $1, $2 # e0 : \n\
- ldt $f14, $DN($4) # .. e1 : \n\
- sll $2, 32, $2 # e0 : \n\
- stq $2, $Y($sp) # e0 : \n\
- \n\
- ldt $f13, $Y($sp) # e0 : \n\
- mult/su $f11, $f13, $f10 # fm 2: $f10 = (x * 0.5) * y \n\
- mult $f10, $f13, $f10 # fm 4: $f10 = ((x*0.5)*y)*y \n\
- subt $f15, $f10, $f1 # fa 4: $f1 = (1.5-0.5*x*y*y) \n\
- \n\
- mult $f13, $f1, $f13 # fm 4: yp = y*(1.5-0.5*x*y^2)\n\
- mult/su $f11, $f13, $f1 # fm 4: $f11 = x * 0.5 * yp \n\
- mult $f1, $f13, $f11 # fm 4: $f11 = (x*0.5*yp)*yp \n\
- subt $f18, $f11, $f1 # fa 4: $f1=(1.5-2^-30)-x/2*yp^2\n\
- \n\
- mult $f13, $f1, $f13 # fm 4: ypp = $f13 = yp*$f1 \n\
- subt $f15, $f12, $f1 # .. fa : $f1 = (1.5 - 0.5) \n\
- ldt $f15, $UP($4) # .. e0 : \n\
- mult/su $f16, $f13, $f10 # fm 4: z = $f10 = x * ypp \n\
- \n\
- mult $f10, $f13, $f11 # fm 4: $f11 = z*ypp \n\
- mult $f10, $f12, $f12 # fm : $f12 = z*0.5 \n\
- subt $f1, $f11, $f1 # fa 4: $f1 = 1 - z*ypp \n\
- mult $f12, $f1, $f12 # fm 4: $f12 = z/2*(1 - z*ypp)\n\
- \n\
- addt $f10, $f12, $f0 # fa 4: zp=res= z+z/2*(1-z*ypp)\n\
- mult/c $f0, $f14, $f12 # fm 4: zmi = zp * DN \n\
- mult/c $f0, $f15, $f11 # fm : zpl = zp * UP \n\
- mult/c $f0, $f12, $f1 # fm : $f1 = zp * zmi \n\
- \n\
- mult/c $f0, $f11, $f15 # fm : $f15 = zp * zpl \n\
- subt/su $f1, $f16, $f13 # .. fa : y1 = zp*zmi - x \n\
- subt/su $f15, $f16, $f14 # fa 4: y2 = zp*zpl - x \n\
- fcmovge $f13, $f12, $f0 # fa 3: res = (y1>=0)?zmi:res \n\
- \n\
- fcmovlt $f14, $f11, $f0 # fa 4: res = (y2<0)?zpl:res \n\
- addq $sp, 16, $sp # .. e0 : \n\
- ret # .. e1 : \n\
- \n\
- .align 4 \n\
-$fixup: \n\
- addq $sp, 16, $sp \n\
- br __full_ieee754_sqrt !samegp \n\
- \n\
- .end __ieee754_sqrt");
-
-static double __full_ieee754_sqrt(double) __attribute_used__;
-#define __ieee754_sqrt __full_ieee754_sqrt
-
-#endif /* _IEEE_FP_INEXACT */
-
-#include <sysdeps/ieee754/dbl-64/e_sqrt.c>
diff --git a/sysdeps/alpha/fpu/fclrexcpt.c b/sysdeps/alpha/fpu/fclrexcpt.c
deleted file mode 100644
index b7176e0979..0000000000
--- a/sysdeps/alpha/fpu/fclrexcpt.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Clear given exceptions in current floating-point environment.
- Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1997.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fenv_libc.h>
-
-int
-__feclearexcept (int excepts)
-{
- unsigned long int swcr;
-
- /* Get the current state. */
- swcr = __ieee_get_fp_control ();
-
- /* Clear the relevant bits. */
- swcr &= ~((unsigned long int) excepts & SWCR_STATUS_MASK);
-
- /* Put the new state in effect. */
- __ieee_set_fp_control (swcr);
-
- /* Success. */
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feclearexcept, __old_feclearexcept)
-compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
diff --git a/sysdeps/alpha/fpu/fedisblxcpt.c b/sysdeps/alpha/fpu/fedisblxcpt.c
deleted file mode 100644
index 98c33ca842..0000000000
--- a/sysdeps/alpha/fpu/fedisblxcpt.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Disable floating-point exceptions.
- Copyright (C) 2000 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>, 2000.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fenv_libc.h>
-
-int
-fedisableexcept (int excepts)
-{
- unsigned long int new_exc, old_exc;
-
- new_exc = __ieee_get_fp_control ();
-
- old_exc = (new_exc & SWCR_ENABLE_MASK) << SWCR_ENABLE_SHIFT;
- new_exc &= ~((excepts >> SWCR_ENABLE_SHIFT) & SWCR_ENABLE_MASK);
-
- __ieee_set_fp_control (new_exc);
-
- return old_exc;
-}
diff --git a/sysdeps/alpha/fpu/feenablxcpt.c b/sysdeps/alpha/fpu/feenablxcpt.c
deleted file mode 100644
index 80d657e4bd..0000000000
--- a/sysdeps/alpha/fpu/feenablxcpt.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Enable floating-point exceptions.
- Copyright (C) 2000 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>, 2000.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fenv_libc.h>
-
-int
-feenableexcept (int excepts)
-{
- unsigned long int new_exc, old_exc;
-
- new_exc = __ieee_get_fp_control ();
-
- old_exc = (new_exc & SWCR_ENABLE_MASK) << SWCR_ENABLE_SHIFT;
- new_exc |= (excepts >> SWCR_ENABLE_SHIFT) & SWCR_ENABLE_MASK;
-
- __ieee_set_fp_control (new_exc);
-
- return old_exc;
-}
diff --git a/sysdeps/alpha/fpu/fegetenv.c b/sysdeps/alpha/fpu/fegetenv.c
deleted file mode 100644
index c1950fa3b9..0000000000
--- a/sysdeps/alpha/fpu/fegetenv.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Store current floating-point environment.
- Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1997
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fenv_libc.h>
-
-int
-__fegetenv (fenv_t *envp)
-{
- unsigned long int fpcr;
- unsigned long int swcr;
-
- /* Get status from software and hardware. Note that we don't need an
- excb because the callsys is an implied trap barrier. */
- swcr = __ieee_get_fp_control ();
- __asm__ __volatile__ ("mf_fpcr %0" : "=f" (fpcr));
-
- /* Merge the two bits of information. */
- *envp = ((fpcr & FPCR_ROUND_MASK) | (swcr & SWCR_ALL_MASK));
-
- /* Success. */
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fegetenv, __old_fegetenv)
-compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2);
diff --git a/sysdeps/alpha/fpu/feholdexcpt.c b/sysdeps/alpha/fpu/feholdexcpt.c
deleted file mode 100644
index 79aa970ac0..0000000000
--- a/sysdeps/alpha/fpu/feholdexcpt.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Store current floating-point environment and clear exceptions.
- Copyright (C) 1997, 2000, 2005 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1997
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fenv_libc.h>
-
-int
-feholdexcept (fenv_t *envp)
-{
- /* Save the current state. */
- fegetenv(envp);
-
- /* Clear all exception status bits and exception enable bits. */
- __ieee_set_fp_control(*envp & SWCR_MAP_MASK);
-
- return 0;
-}
-libm_hidden_def (feholdexcept)
diff --git a/sysdeps/alpha/fpu/fenv_libc.h b/sysdeps/alpha/fpu/fenv_libc.h
deleted file mode 100644
index f1d187d9e2..0000000000
--- a/sysdeps/alpha/fpu/fenv_libc.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Internal libc stuff for floating point environment routines.
- Copyright (C) 2000 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _FENV_LIBC_H
-#define _FENV_LIBC_H 1
-
-#include <fenv.h>
-
-#define FPCR_ROUND_MASK (3UL << 58)
-#define FPCR_ROUND_SHIFT 58
-
-#define SWCR_MAP_MASK (3UL << 12)
-#define SWCR_ENABLE_SHIFT 16
-#define SWCR_ENABLE_MASK (FE_ALL_EXCEPT >> SWCR_ENABLE_SHIFT)
-#define SWCR_STATUS_MASK (FE_ALL_EXCEPT)
-#define SWCR_ALL_MASK (SWCR_ENABLE_MASK \
- | SWCR_MAP_MASK \
- | SWCR_STATUS_MASK)
-
-#endif /* fenv_libc.h */
diff --git a/sysdeps/alpha/fpu/fesetenv.c b/sysdeps/alpha/fpu/fesetenv.c
deleted file mode 100644
index c76e882891..0000000000
--- a/sysdeps/alpha/fpu/fesetenv.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Install given floating-point environment.
- Copyright (C) 1997,99,2000,01,02 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1997
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fenv_libc.h>
-
-int
-__fesetenv (const fenv_t *envp)
-{
- unsigned long int fpcr;
- fenv_t env;
-
- /* Magic encoding of default values: high bit set (never possible for a
- user-space address) is not indirect. And we don't even have to get
- rid of it since we mask things around just below. */
- if ((long int) envp >= 0)
- env = *envp;
- else
- env = (unsigned long int) envp;
-
- /* Reset the rounding mode with the hardware fpcr. Note that the following
- system call is an implied trap barrier for our modification. */
- __asm__ __volatile__ ("excb; mf_fpcr %0" : "=f" (fpcr));
- fpcr = (fpcr & ~FPCR_ROUND_MASK) | (env & FPCR_ROUND_MASK);
- __asm__ __volatile__ ("mt_fpcr %0" : : "f" (fpcr));
-
- /* Reset the exception status and mask with the kernel's FP code. */
- __ieee_set_fp_control (env & SWCR_ALL_MASK);
-
- /* Success. */
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fesetenv, __old_fesetenv)
-compat_symbol (libm, __old_fesetenv, fesetenv, GLIBC_2_1);
-#endif
-
-libm_hidden_ver (__fesetenv, fesetenv)
-versioned_symbol (libm, __fesetenv, fesetenv, GLIBC_2_2);
diff --git a/sysdeps/alpha/fpu/feupdateenv.c b/sysdeps/alpha/fpu/feupdateenv.c
deleted file mode 100644
index c798070bbb..0000000000
--- a/sysdeps/alpha/fpu/feupdateenv.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Install given floating-point environment and raise exceptions.
- Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1997.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fenv_libc.h>
-
-int
-__feupdateenv (const fenv_t *envp)
-{
- unsigned long int tmp;
-
- /* Get the current exception state. */
- tmp = __ieee_get_fp_control ();
-
- /* Install new environment. */
- fesetenv (envp);
-
- /* Raise the saved exception. Incidently for us the implementation
- defined format of the values in objects of type fexcept_t is the
- same as the ones specified using the FE_* constants. */
- feraiseexcept (tmp & SWCR_STATUS_MASK);
-
- /* Success. */
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feupdateenv, __old_feupdateenv)
-compat_symbol (libm, __old_feupdateenv, feupdateenv, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __feupdateenv, feupdateenv, GLIBC_2_2);
diff --git a/sysdeps/alpha/fpu/fgetexcptflg.c b/sysdeps/alpha/fpu/fgetexcptflg.c
deleted file mode 100644
index c28e913359..0000000000
--- a/sysdeps/alpha/fpu/fgetexcptflg.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Store current representation for exceptions.
- Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1997.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fenv_libc.h>
-
-int
-__fegetexceptflag (fexcept_t *flagp, int excepts)
-{
- unsigned long int tmp;
-
- /* Get the current state. */
- tmp = __ieee_get_fp_control();
-
- /* Return that portion that corresponds to the requested exceptions. */
- *flagp = tmp & excepts & SWCR_STATUS_MASK;
-
- /* Success. */
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fegetexceptflag, __old_fegetexceptflag)
-compat_symbol (libm, __old_fegetexceptflag, fegetexceptflag, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __fegetexceptflag, fegetexceptflag, GLIBC_2_2);
diff --git a/sysdeps/alpha/fpu/fpu_control.h b/sysdeps/alpha/fpu/fpu_control.h
deleted file mode 100644
index 28acdf1704..0000000000
--- a/sysdeps/alpha/fpu/fpu_control.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/* FPU control word bits. Alpha-mapped-to-Intel version.
- Copyright (C) 1996, 1998, 2000, 2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Olaf Flebbe.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _ALPHA_FPU_CONTROL_H
-#define _ALPHA_FPU_CONTROL_H
-
-/*
- * Since many programs seem to hardcode the values passed to __setfpucw()
- * (rather than using the manifest constants) we emulate the x87 interface
- * here (at least where this makes sense).
- *
- * 15-13 12 11-10 9-8 7-6 5 4 3 2 1 0
- * | reserved | IC | RC | PC | reserved | PM | UM | OM | ZM | DM | IM
- *
- * IM: Invalid operation mask
- * DM: Denormalized operand mask
- * ZM: Zero-divide mask
- * OM: Overflow mask
- * UM: Underflow mask
- * PM: Precision (inexact result) mask
- *
- * Mask bit is 1 means no interrupt.
- *
- * PC: Precision control
- * 11 - round to extended precision
- * 10 - round to double precision
- * 00 - round to single precision
- *
- * RC: Rounding control
- * 00 - rounding to nearest
- * 01 - rounding down (toward - infinity)
- * 10 - rounding up (toward + infinity)
- * 11 - rounding toward zero
- *
- * IC: Infinity control
- * That is for 8087 and 80287 only.
- *
- * The hardware default is 0x037f. I choose 0x1372.
- */
-
-#include <features.h>
-
-/* masking of interrupts */
-#define _FPU_MASK_IM 0x01
-#define _FPU_MASK_DM 0x02
-#define _FPU_MASK_ZM 0x04
-#define _FPU_MASK_OM 0x08
-#define _FPU_MASK_UM 0x10
-#define _FPU_MASK_PM 0x20
-
-/* precision control -- without effect on Alpha */
-#define _FPU_EXTENDED 0x300 /* RECOMMENDED */
-#define _FPU_DOUBLE 0x200
-#define _FPU_SINGLE 0x0 /* DO NOT USE */
-
-/*
- * rounding control---notice that on the Alpha this affects only
- * instructions with the dynamic rounding mode qualifier (/d).
- */
-#define _FPU_RC_NEAREST 0x000 /* RECOMMENDED */
-#define _FPU_RC_DOWN 0x400
-#define _FPU_RC_UP 0x800
-#define _FPU_RC_ZERO 0xC00
-
-#define _FPU_RESERVED 0xF0C0 /* Reserved bits in cw */
-
-
-/* Now two recommended cw */
-
-/* Linux default:
- - extended precision
- - rounding to positive infinity. There is no /p instruction
- qualifier. By setting the dynamic rounding mode to +infinity,
- one can use /d to get round to +infinity with no extra overhead
- (so long as the default isn't changed, of course...)
- - no exceptions enabled. */
-
-#define _FPU_DEFAULT 0x137f
-
-/* IEEE: same as above. */
-#define _FPU_IEEE 0x137f
-
-/* Type of the control word. */
-typedef unsigned int fpu_control_t;
-
-/* Default control word set at startup. */
-extern fpu_control_t __fpu_control;
-
-#endif /* _ALPHA_FPU_CONTROL */
diff --git a/sysdeps/alpha/fpu/fsetexcptflg.c b/sysdeps/alpha/fpu/fsetexcptflg.c
deleted file mode 100644
index d198731861..0000000000
--- a/sysdeps/alpha/fpu/fsetexcptflg.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Set floating-point environment exception handling.
- Copyright (C) 1997,98,99,2000,01 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1997.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fenv_libc.h>
-
-int
-__fesetexceptflag (const fexcept_t *flagp, int excepts)
-{
- unsigned long int tmp;
-
- /* Get the current exception state. */
- tmp = __ieee_get_fp_control ();
-
- /* Set all the bits that were called for. */
- tmp = (tmp & ~SWCR_STATUS_MASK) | (*flagp & excepts & SWCR_STATUS_MASK);
-
- /* And store it back. */
- __ieee_set_fp_control (tmp);
-
- /* Success. */
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fesetexceptflag, __old_fesetexceptflag)
-compat_symbol (libm, __old_fesetexceptflag, fesetexceptflag, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __fesetexceptflag, fesetexceptflag, GLIBC_2_2);
diff --git a/sysdeps/alpha/fpu/libm-test-ulps b/sysdeps/alpha/fpu/libm-test-ulps
deleted file mode 100644
index d9df631d7c..0000000000
--- a/sysdeps/alpha/fpu/libm-test-ulps
+++ /dev/null
@@ -1,1245 +0,0 @@
-# Begin of automatic generation
-
-# atan2
-Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994379639112":
-ildouble: 1
-ldouble: 1
-Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# atanh
-Test "atanh (0.75) == 0.972955074527656652552676371721589865":
-float: 1
-ifloat: 1
-
-# cacos
-Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i":
-ildouble: 1
-ldouble: 1
-
-# cacosh
-Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# casin
-Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
-ildouble: 1
-ldouble: 1
-
-# casinh
-Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
-double: 5
-float: 1
-idouble: 5
-ifloat: 1
-ildouble: 4
-ldouble: 4
-Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
-double: 3
-float: 6
-idouble: 3
-ifloat: 6
-ildouble: 2
-ldouble: 2
-Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# catan
-Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
-ildouble: 1
-ldouble: 1
-
-# catanh
-Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
-double: 4
-idouble: 4
-Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
-ildouble: 1
-ldouble: 1
-
-# cbrt
-Test "cbrt (-0.001) == -0.1":
-ildouble: 1
-ldouble: 1
-Test "cbrt (-27.0) == -3.0":
-double: 1
-idouble: 1
-Test "cbrt (0.75) == 0.908560296416069829445605878163630251":
-double: 1
-idouble: 1
-Test "cbrt (0.9921875) == 0.997389022060725270579075195353955217":
-double: 1
-idouble: 1
-
-# ccos
-Test "Real part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-float: 1
-ifloat: 1
-
-# ccosh
-Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-float: 1
-ifloat: 1
-
-# cexp
-Test "Real part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
-ildouble: 1
-ldouble: 1
-
-# clog
-Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# clog10
-Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf + inf i) == inf + 3/4 pi*log10(e) i":
-double: 1
-idouble: 1
-Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-# cos
-Test "cos (M_PI_6l * 2.0) == 0.5":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "cos (M_PI_6l * 4.0) == -0.5":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# cpow
-Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
-float: 1
-ifloat: 1
-Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i":
-double: 1
-float: 4
-idouble: 1
-ifloat: 4
-ildouble: 4
-ldouble: 4
-Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i":
-ildouble: 1
-ldouble: 1
-Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 10
-ldouble: 10
-Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i":
-ildouble: 2
-ldouble: 2
-Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
-double: 1
-float: 4
-idouble: 1
-ifloat: 4
-ildouble: 3
-ldouble: 3
-Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-# csin
-Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
-ildouble: 1
-ldouble: 1
-
-# csinh
-Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
-double: 1
-idouble: 1
-Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-float: 1
-ifloat: 1
-Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-float: 1
-ifloat: 1
-
-# csqrt
-Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0.75 + 1.25 i) == 1.05065169626078392338656675760808326 + 0.594868882070379067881984030639932657 i":
-ildouble: 1
-ldouble: 1
-
-# ctan
-Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-# ctanh
-Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
-float: 1
-ifloat: 1
-Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
-double: 1
-idouble: 1
-
-# erf
-Test "erf (1.25) == 0.922900128256458230136523481197281140":
-double: 1
-idouble: 1
-
-# erfc
-Test "erfc (2.0) == 0.00467773498104726583793074363274707139":
-double: 1
-idouble: 1
-Test "erfc (27.0) == 0.523704892378925568501606768284954709e-318":
-ildouble: 1
-ldouble: 1
-Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8":
-double: 1
-idouble: 1
-
-# exp10
-Test "exp10 (-1) == 0.1":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "exp10 (3) == 1000":
-double: 6
-float: 2
-idouble: 6
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-# exp2
-Test "exp2 (10) == 1024":
-ildouble: 2
-ldouble: 2
-
-# expm1
-Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
-double: 1
-idouble: 1
-Test "expm1 (1) == M_El - 1.0":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# gamma
-Test "gamma (-0.5) == log(2*sqrt(pi))":
-ildouble: 1
-ldouble: 1
-
-# hypot
-Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271":
-float: 1
-ifloat: 1
-
-# j0
-Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "j0 (0.75) == 0.864242275166648623555731103820923211":
-float: 1
-ifloat: 1
-Test "j0 (10.0) == -0.245935764451348335197760862485328754":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "j0 (2.0) == 0.223890779141235668051827454649948626":
-float: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "j0 (8.0) == 0.171650807137553906090869407851972001":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# j1
-Test "j1 (-1.0) == -0.440050585744933515959682203718914913":
-ildouble: 1
-ldouble: 1
-Test "j1 (0.75) == 0.349243602174862192523281016426251335":
-ildouble: 1
-ldouble: 1
-Test "j1 (1.0) == 0.440050585744933515959682203718914913":
-ildouble: 1
-ldouble: 1
-Test "j1 (10.0) == 0.0434727461688614366697487680258592883":
-float: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "j1 (2.0) == 0.576724807756873387202448242269137087":
-double: 1
-idouble: 1
-Test "j1 (8.0) == 0.234636346853914624381276651590454612":
-double: 1
-idouble: 1
-ildouble: 4
-ldouble: 4
-
-# jn
-Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (0, 0.75) == 0.864242275166648623555731103820923211":
-float: 1
-ifloat: 1
-Test "jn (0, 10.0) == -0.245935764451348335197760862485328754":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
-float: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (1, -1.0) == -0.440050585744933515959682203718914913":
-ildouble: 1
-ldouble: 1
-Test "jn (1, 0.75) == 0.349243602174862192523281016426251335":
-ildouble: 1
-ldouble: 1
-Test "jn (1, 1.0) == 0.440050585744933515959682203718914913":
-ildouble: 1
-ldouble: 1
-Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
-float: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "jn (1, 2.0) == 0.576724807756873387202448242269137087":
-double: 1
-idouble: 1
-Test "jn (1, 8.0) == 0.234636346853914624381276651590454612":
-double: 1
-idouble: 1
-ildouble: 4
-ldouble: 4
-Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9":
-ildouble: 1
-ldouble: 1
-Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9":
-ildouble: 1
-ldouble: 1
-Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-ildouble: 2
-ldouble: 2
-Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
-float: 4
-ifloat: 4
-Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-
-# lgamma
-Test "lgamma (-0.5) == log(2*sqrt(pi))":
-ildouble: 1
-ldouble: 1
-Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-# log10
-Test "log10 (0.75) == -0.124938736608299953132449886193870744":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "log10 (e) == log10(e)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# log1p
-Test "log1p (-0.25) == -0.287682072451780927439219005993827432":
-float: 1
-ifloat: 1
-
-# log2
-Test "log2 (0.75) == -.415037499278843818546261056052183492":
-ildouble: 1
-ldouble: 1
-
-# sincos
-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
-float: 1
-ifloat: 1
-
-# sqrt
-Test "sqrt (2) == M_SQRT2l":
-ildouble: 1
-ldouble: 1
-
-# tanh
-Test "tanh (-0.75) == -0.635148952387287319214434357312496495":
-ildouble: 1
-ldouble: 1
-Test "tanh (-1.0) == -0.7615941559557648881194582826047935904":
-ildouble: 1
-ldouble: 1
-Test "tanh (0.75) == 0.635148952387287319214434357312496495":
-ildouble: 1
-ldouble: 1
-Test "tanh (1.0) == 0.7615941559557648881194582826047935904":
-ildouble: 1
-ldouble: 1
-
-# tgamma
-Test "tgamma (-0.5) == -2 sqrt (pi)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "tgamma (0.5) == sqrt (pi)":
-float: 1
-ifloat: 1
-Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "tgamma (4) == 6":
-ildouble: 1
-ldouble: 1
-
-# y0
-Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "y0 (1.5) == 0.382448923797758843955068554978089862":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
-float: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-Test "y0 (8.0) == 0.223521489387566220527323400498620359":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-# y1
-Test "y1 (0.125) == -5.19993611253477499595928744876579921":
-double: 1
-idouble: 1
-Test "y1 (0.75) == -1.03759455076928541973767132140642198":
-ildouble: 1
-ldouble: 1
-Test "y1 (1.5) == -0.412308626973911295952829820633445323":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "y1 (10.0) == 0.249015424206953883923283474663222803":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-Test "y1 (2.0) == -0.107032431540937546888370772277476637":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "y1 (8.0) == -0.158060461731247494255555266187483550":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-# yn
-Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481":
-float: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-Test "yn (0, 8.0) == 0.223521489387566220527323400498620359":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
-double: 1
-idouble: 1
-Test "yn (1, 0.75) == -1.03759455076928541973767132140642198":
-ildouble: 1
-ldouble: 1
-Test "yn (1, 1.5) == -0.412308626973911295952829820633445323":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-Test "yn (1, 2.0) == -0.107032431540937546888370772277476637":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "yn (1, 8.0) == -0.158060461731247494255555266187483550":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "yn (10, 0.75) == -2133501638.90573424452445412893839236":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 5
-ldouble: 5
-Test "yn (10, 1.0) == -121618014.278689189288130426667971145":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
-double: 2
-idouble: 2
-ildouble: 2
-ldouble: 2
-Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
-double: 1
-idouble: 1
-Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
-double: 1
-idouble: 1
-
-# Maximal error of functions:
-Function: "atan2":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "atanh":
-float: 1
-ifloat: 1
-
-Function: Imaginary part of "cacos":
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "cacosh":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "casin":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Imaginary part of "casin":
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "casinh":
-double: 5
-float: 1
-idouble: 5
-ifloat: 1
-ildouble: 4
-ldouble: 4
-
-Function: Imaginary part of "casinh":
-double: 3
-float: 6
-idouble: 3
-ifloat: 6
-ildouble: 2
-ldouble: 2
-
-Function: Imaginary part of "catan":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "catanh":
-double: 4
-idouble: 4
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "catanh":
-ildouble: 1
-ldouble: 1
-
-Function: "cbrt":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "ccos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "ccos":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "ccosh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "ccosh":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "cexp":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "cexp":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "clog":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "clog10":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "clog10":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "cos":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "cpow":
-double: 2
-float: 4
-idouble: 2
-ifloat: 4
-ildouble: 10
-ldouble: 10
-
-Function: Imaginary part of "cpow":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "csin":
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "csin":
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "csinh":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "csinh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-
-Function: Real part of "csqrt":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "csqrt":
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "ctan":
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "ctan":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "ctanh":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "ctanh":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "erf":
-double: 1
-idouble: 1
-
-Function: "erfc":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "exp10":
-double: 6
-float: 2
-idouble: 6
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "exp2":
-ildouble: 2
-ldouble: 2
-
-Function: "expm1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "gamma":
-ildouble: 1
-ldouble: 1
-
-Function: "hypot":
-float: 1
-ifloat: 1
-
-Function: "j0":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "j1":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "jn":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 4
-ldouble: 4
-
-Function: "lgamma":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "log10":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "log1p":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "log2":
-ildouble: 1
-ldouble: 1
-
-Function: "sincos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "sqrt":
-ildouble: 1
-ldouble: 1
-
-Function: "tan":
-double: 1
-idouble: 1
-
-Function: "tanh":
-ildouble: 1
-ldouble: 1
-
-Function: "tgamma":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "y0":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "y1":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "yn":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-# end of automatic generation
diff --git a/sysdeps/alpha/fpu/s_cacosf.c b/sysdeps/alpha/fpu/s_cacosf.c
deleted file mode 100644
index 46dca5aeb8..0000000000
--- a/sysdeps/alpha/fpu/s_cacosf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return arc cosine of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __cacosf __cacosf_not_defined
-#define cacosf cacosf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __cacosf
-#undef cacosf
-#define __cacosf internal_cacosf
-
-static _Complex float internal_cacosf (_Complex float x);
-
-#include <math/s_cacosf.c>
-#include "cfloat-compat.h"
-
-#undef __cacosf
-
-c1_cfloat_rettype
-__c1_cacosf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_cacosf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_cacosf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_cacosf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (cacosf);
diff --git a/sysdeps/alpha/fpu/s_cacoshf.c b/sysdeps/alpha/fpu/s_cacoshf.c
deleted file mode 100644
index 6b61d1ddaa..0000000000
--- a/sysdeps/alpha/fpu/s_cacoshf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return arc hyperbole cosine of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __cacoshf __cacoshf_not_defined
-#define cacoshf cacoshf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __cacoshf
-#undef cacoshf
-#define __cacoshf internal_cacoshf
-
-static _Complex float internal_cacoshf (_Complex float x);
-
-#include <math/s_cacoshf.c>
-#include "cfloat-compat.h"
-
-#undef __cacoshf
-
-c1_cfloat_rettype
-__c1_cacoshf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_cacoshf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_cacoshf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_cacoshf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (cacoshf);
diff --git a/sysdeps/alpha/fpu/s_casinf.c b/sysdeps/alpha/fpu/s_casinf.c
deleted file mode 100644
index fd41042ec9..0000000000
--- a/sysdeps/alpha/fpu/s_casinf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return arc sine of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __casinf __casinf_not_defined
-#define casinf casinf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __casinf
-#undef casinf
-#define __casinf internal_casinf
-
-static _Complex float internal_casinf (_Complex float x);
-
-#include <math/s_casinf.c>
-#include "cfloat-compat.h"
-
-#undef __casinf
-
-c1_cfloat_rettype
-__c1_casinf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_casinf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_casinf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_casinf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (casinf);
diff --git a/sysdeps/alpha/fpu/s_casinhf.c b/sysdeps/alpha/fpu/s_casinhf.c
deleted file mode 100644
index 0b72a24d5a..0000000000
--- a/sysdeps/alpha/fpu/s_casinhf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return arc hyperbole sine of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __casinhf __casinhf_not_defined
-#define casinhf casinhf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __casinhf
-#undef casinhf
-#define __casinhf internal_casinhf
-
-static _Complex float internal_casinhf (_Complex float x);
-
-#include <math/s_casinhf.c>
-#include "cfloat-compat.h"
-
-#undef __casinhf
-
-c1_cfloat_rettype
-__c1_casinhf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_casinhf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_casinhf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_casinhf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (casinhf);
diff --git a/sysdeps/alpha/fpu/s_catanf.c b/sysdeps/alpha/fpu/s_catanf.c
deleted file mode 100644
index 8f40616617..0000000000
--- a/sysdeps/alpha/fpu/s_catanf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return arc tangent of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __catanf __catanf_not_defined
-#define catanf catanf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __catanf
-#undef catanf
-#define __catanf internal_catanf
-
-static _Complex float internal_catanf (_Complex float x);
-
-#include <math/s_catanf.c>
-#include "cfloat-compat.h"
-
-#undef __catanf
-
-c1_cfloat_rettype
-__c1_catanf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_catanf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_catanf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_catanf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (catanf);
diff --git a/sysdeps/alpha/fpu/s_catanhf.c b/sysdeps/alpha/fpu/s_catanhf.c
deleted file mode 100644
index ac11945727..0000000000
--- a/sysdeps/alpha/fpu/s_catanhf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return arc hyperbole tangent of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __catanhf __catanhf_not_defined
-#define catanhf catanhf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __catanhf
-#undef catanhf
-#define __catanhf internal_catanhf
-
-static _Complex float internal_catanhf (_Complex float x);
-
-#include <math/s_catanhf.c>
-#include "cfloat-compat.h"
-
-#undef __catanhf
-
-c1_cfloat_rettype
-__c1_catanhf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_catanhf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_catanhf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_catanhf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (catanhf);
diff --git a/sysdeps/alpha/fpu/s_ccosf.c b/sysdeps/alpha/fpu/s_ccosf.c
deleted file mode 100644
index 04036f4613..0000000000
--- a/sysdeps/alpha/fpu/s_ccosf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return cosine of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __ccosf __ccosf_not_defined
-#define ccosf ccosf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __ccosf
-#undef ccosf
-#define __ccosf internal_ccosf
-
-static _Complex float internal_ccosf (_Complex float x);
-
-#include <math/s_ccosf.c>
-#include "cfloat-compat.h"
-
-#undef __ccosf
-
-c1_cfloat_rettype
-__c1_ccosf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_ccosf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_ccosf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_ccosf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (ccosf);
diff --git a/sysdeps/alpha/fpu/s_ccoshf.c b/sysdeps/alpha/fpu/s_ccoshf.c
deleted file mode 100644
index e9fb34ce47..0000000000
--- a/sysdeps/alpha/fpu/s_ccoshf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return hyperbole cosine of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __ccoshf __ccoshf_not_defined
-#define ccoshf ccoshf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __ccoshf
-#undef ccoshf
-#define __ccoshf internal_ccoshf
-
-static _Complex float internal_ccoshf (_Complex float x);
-
-#include <math/s_ccoshf.c>
-#include "cfloat-compat.h"
-
-#undef __ccoshf
-
-c1_cfloat_rettype
-__c1_ccoshf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_ccoshf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_ccoshf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_ccoshf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (ccoshf);
diff --git a/sysdeps/alpha/fpu/s_ceil.c b/sysdeps/alpha/fpu/s_ceil.c
deleted file mode 100644
index 40c2379286..0000000000
--- a/sysdeps/alpha/fpu/s_ceil.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Copyright (C) 1998, 2000, 2006, 2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-
-/* Use the -inf rounding mode conversion instructions to implement
- ceil, via something akin to -floor(-x). This is much faster than
- playing with the fpcr to achieve +inf rounding mode. */
-
-double
-__ceil (double x)
-{
- double two52 = copysign (0x1.0p52, x);
- double r, tmp;
-
- __asm (
-#ifdef _IEEE_FP_INEXACT
- "addt/suim %2, %3, %1\n\tsubt/suim %1, %3, %0"
-#else
- "addt/sum %2, %3, %1\n\tsubt/sum %1, %3, %0"
-#endif
- : "=&f"(r), "=&f"(tmp)
- : "f"(-x), "f"(-two52));
-
- /* Fix up the negation we did above, as well as handling -0 properly. */
- return copysign (r, x);
-}
-
-weak_alias (__ceil, ceil)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__ceil, __ceill)
-weak_alias (__ceil, ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0);
-#endif
diff --git a/sysdeps/alpha/fpu/s_ceilf.c b/sysdeps/alpha/fpu/s_ceilf.c
deleted file mode 100644
index 0df651f405..0000000000
--- a/sysdeps/alpha/fpu/s_ceilf.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright (C) 1998, 2000, 2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <math.h>
-
-/* Use the -inf rounding mode conversion instructions to implement
- ceil, via something akin to -floor(-x). This is much faster than
- playing with the fpcr to achieve +inf rounding mode. */
-
-float
-__ceilf (float x)
-{
- float two23 = copysignf (0x1.0p23, x);
- float r, tmp;
-
- __asm (
-#ifdef _IEEE_FP_INEXACT
- "adds/suim %2, %3, %1\n\tsubs/suim %1, %3, %0"
-#else
- "adds/sum %2, %3, %1\n\tsubs/sum %1, %3, %0"
-#endif
- : "=&f"(r), "=&f"(tmp)
- : "f"(-x), "f"(-two23));
-
- /* Fix up the negation we did above, as well as handling -0 properly. */
- return copysignf (r, x);
-}
-
-weak_alias (__ceilf, ceilf)
diff --git a/sysdeps/alpha/fpu/s_cexpf.c b/sysdeps/alpha/fpu/s_cexpf.c
deleted file mode 100644
index 4a28dcd9bf..0000000000
--- a/sysdeps/alpha/fpu/s_cexpf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return exponent of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __cexpf __cexpf_not_defined
-#define cexpf cexpf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __cexpf
-#undef cexpf
-#define __cexpf internal_cexpf
-
-static _Complex float internal_cexpf (_Complex float x);
-
-#include <math/s_cexpf.c>
-#include "cfloat-compat.h"
-
-#undef __cexpf
-
-c1_cfloat_rettype
-__c1_cexpf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_cexpf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_cexpf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_cexpf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (cexpf);
diff --git a/sysdeps/alpha/fpu/s_clog10f.c b/sysdeps/alpha/fpu/s_clog10f.c
deleted file mode 100644
index e7dc7bb23f..0000000000
--- a/sysdeps/alpha/fpu/s_clog10f.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Return base 10 logarithm of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __clog10f __clog10f_not_defined
-#define clog10f clog10f_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __clog10f
-#undef clog10f
-#define __clog10f internal_clog10f
-
-static _Complex float internal_clog10f (_Complex float x);
-
-#include <math/s_clog10f.c>
-#include "cfloat-compat.h"
-
-#undef __clog10f
-
-c1_cfloat_rettype
-__c1_clog10f (c1_cfloat_decl (x))
-{
- _Complex float r = internal_clog10f (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_clog10f (c2_cfloat_decl (x))
-{
- _Complex float r = internal_clog10f (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-/* Ug. __clog10f was exported from GLIBC_2.1. This is the only
- complex function whose double-underscore symbol was exported,
- so we get to handle that specially. */
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_3_4)
-strong_alias (__c1_clog10f, __c1_clog10f_2);
-compat_symbol (libm, __c1_clog10f, clog10f, GLIBC_2_1);
-compat_symbol (libm, __c1_clog10f_2, __clog10f, GLIBC_2_1);
-#endif
-versioned_symbol (libm, __c2_clog10f, clog10f, GLIBC_2_3_4);
-extern typeof(__c2_clog10f) __clog10f attribute_hidden;
-strong_alias (__c2_clog10f, __clog10f)
diff --git a/sysdeps/alpha/fpu/s_clogf.c b/sysdeps/alpha/fpu/s_clogf.c
deleted file mode 100644
index 364dcec883..0000000000
--- a/sysdeps/alpha/fpu/s_clogf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return natural logarithm of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __clogf __clogf_not_defined
-#define clogf clogf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __clogf
-#undef clogf
-#define __clogf internal_clogf
-
-static _Complex float internal_clogf (_Complex float x);
-
-#include <math/s_clogf.c>
-#include "cfloat-compat.h"
-
-#undef __clogf
-
-c1_cfloat_rettype
-__c1_clogf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_clogf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_clogf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_clogf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (clogf);
diff --git a/sysdeps/alpha/fpu/s_cpowf.c b/sysdeps/alpha/fpu/s_cpowf.c
deleted file mode 100644
index cc61b1895e..0000000000
--- a/sysdeps/alpha/fpu/s_cpowf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return power of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __cpowf __cpowf_not_defined
-#define cpowf cpowf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __cpowf
-#undef cpowf
-#define __cpowf internal_cpowf
-
-static _Complex float internal_cpowf (_Complex float x, _Complex float c);
-
-#include <math/s_cpowf.c>
-#include "cfloat-compat.h"
-
-#undef __cpowf
-
-c1_cfloat_rettype
-__c1_cpowf (c1_cfloat_decl (x), c1_cfloat_decl (c))
-{
- _Complex float r = internal_cpowf (c1_cfloat_value (x), c1_cfloat_value (c));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_cpowf (c2_cfloat_decl (x), c2_cfloat_decl (c))
-{
- _Complex float r = internal_cpowf (c2_cfloat_value (x), c2_cfloat_value (c));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (cpowf);
diff --git a/sysdeps/alpha/fpu/s_cprojf.c b/sysdeps/alpha/fpu/s_cprojf.c
deleted file mode 100644
index 5cfb526679..0000000000
--- a/sysdeps/alpha/fpu/s_cprojf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return projection of complex float value to Riemann sphere.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __cprojf __cprojf_not_defined
-#define cprojf cprojf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __cprojf
-#undef cprojf
-#define __cprojf internal_cprojf
-
-static _Complex float internal_cprojf (_Complex float x);
-
-#include <math/s_cprojf.c>
-#include "cfloat-compat.h"
-
-#undef __cprojf
-
-c1_cfloat_rettype
-__c1_cprojf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_cprojf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_cprojf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_cprojf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (cprojf);
diff --git a/sysdeps/alpha/fpu/s_csinf.c b/sysdeps/alpha/fpu/s_csinf.c
deleted file mode 100644
index 8eb9a1019d..0000000000
--- a/sysdeps/alpha/fpu/s_csinf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return sine of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __csinf __csinf_not_defined
-#define csinf csinf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __csinf
-#undef csinf
-#define __csinf internal_csinf
-
-static _Complex float internal_csinf (_Complex float x);
-
-#include <math/s_csinf.c>
-#include "cfloat-compat.h"
-
-#undef __csinf
-
-c1_cfloat_rettype
-__c1_csinf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_csinf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_csinf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_csinf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (csinf);
diff --git a/sysdeps/alpha/fpu/s_csinhf.c b/sysdeps/alpha/fpu/s_csinhf.c
deleted file mode 100644
index 0e2c186740..0000000000
--- a/sysdeps/alpha/fpu/s_csinhf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return hyperbole sine of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __csinhf __csinhf_not_defined
-#define csinhf csinhf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __csinhf
-#undef csinhf
-#define __csinhf internal_csinhf
-
-static _Complex float internal_csinhf (_Complex float x);
-
-#include <math/s_csinhf.c>
-#include "cfloat-compat.h"
-
-#undef __csinhf
-
-c1_cfloat_rettype
-__c1_csinhf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_csinhf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_csinhf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_csinhf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (csinhf);
diff --git a/sysdeps/alpha/fpu/s_csqrtf.c b/sysdeps/alpha/fpu/s_csqrtf.c
deleted file mode 100644
index ebf23a828e..0000000000
--- a/sysdeps/alpha/fpu/s_csqrtf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return square root of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __csqrtf __csinhf_not_defined
-#define csqrtf csqrtf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __csqrtf
-#undef csqrtf
-#define __csqrtf internal_csqrtf
-
-static _Complex float internal_csqrtf (_Complex float x);
-
-#include <math/s_csqrtf.c>
-#include "cfloat-compat.h"
-
-#undef __csqrtf
-
-c1_cfloat_rettype
-__c1_csqrtf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_csqrtf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_csqrtf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_csqrtf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (csqrtf);
diff --git a/sysdeps/alpha/fpu/s_ctanf.c b/sysdeps/alpha/fpu/s_ctanf.c
deleted file mode 100644
index e26db963e4..0000000000
--- a/sysdeps/alpha/fpu/s_ctanf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return tangent of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __ctanf __ctanf_not_defined
-#define ctanf ctanf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __ctanf
-#undef ctanf
-#define __ctanf internal_ctanf
-
-static _Complex float internal_ctanf (_Complex float x);
-
-#include <math/s_ctanf.c>
-#include "cfloat-compat.h"
-
-#undef __ctanf
-
-c1_cfloat_rettype
-__c1_ctanf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_ctanf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_ctanf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_ctanf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (ctanf);
diff --git a/sysdeps/alpha/fpu/s_ctanhf.c b/sysdeps/alpha/fpu/s_ctanhf.c
deleted file mode 100644
index 5d047bd460..0000000000
--- a/sysdeps/alpha/fpu/s_ctanhf.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Return hyperbole tangent of complex float value.
- Copyright (C) 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __ctanhf __ctanhf_not_defined
-#define ctanhf ctanhf_not_defined
-
-#include <complex.h>
-#include <math.h>
-
-#undef __ctanhf
-#undef ctanhf
-#define __ctanhf internal_ctanhf
-
-static _Complex float internal_ctanhf (_Complex float x);
-
-#include <math/s_ctanhf.c>
-#include "cfloat-compat.h"
-
-#undef __ctanhf
-
-c1_cfloat_rettype
-__c1_ctanhf (c1_cfloat_decl (x))
-{
- _Complex float r = internal_ctanhf (c1_cfloat_value (x));
- return c1_cfloat_return (r);
-}
-
-c2_cfloat_rettype
-__c2_ctanhf (c2_cfloat_decl (x))
-{
- _Complex float r = internal_ctanhf (c2_cfloat_value (x));
- return c2_cfloat_return (r);
-}
-
-cfloat_versions (ctanhf);
diff --git a/sysdeps/alpha/fpu/s_floor.c b/sysdeps/alpha/fpu/s_floor.c
deleted file mode 100644
index 5af6386155..0000000000
--- a/sysdeps/alpha/fpu/s_floor.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Copyright (C) 1998, 1999, 2000, 2006, 2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-
-
-/* Use the -inf rounding mode conversion instructions to implement floor. */
-
-double
-__floor (double x)
-{
- double two52 = copysign (0x1.0p52, x);
- double r, tmp;
-
- __asm (
-#ifdef _IEEE_FP_INEXACT
- "addt/suim %2, %3, %1\n\tsubt/suim %1, %3, %0"
-#else
- "addt/sum %2, %3, %1\n\tsubt/sum %1, %3, %0"
-#endif
- : "=&f"(r), "=&f"(tmp)
- : "f"(x), "f"(two52));
-
- /* floor(-0) == -0, and in general we'll always have the same
- sign as our input. */
- return copysign (r, x);
-}
-
-weak_alias (__floor, floor)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__floor, __floorl)
-weak_alias (__floor, floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/alpha/fpu/s_floorf.c b/sysdeps/alpha/fpu/s_floorf.c
deleted file mode 100644
index 8b421705cd..0000000000
--- a/sysdeps/alpha/fpu/s_floorf.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright (C) 1998, 1999, 2000, 2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <math.h>
-
-
-/* Use the -inf rounding mode conversion instructions to implement floor. */
-
-float
-__floorf (float x)
-{
- float two23 = copysignf (0x1.0p23, x);
- float r, tmp;
-
- __asm (
-#ifdef _IEEE_FP_INEXACT
- "adds/suim %2, %3, %1\n\tsubs/suim %1, %3, %0"
-#else
- "adds/sum %2, %3, %1\n\tsubs/sum %1, %3, %0"
-#endif
- : "=&f"(r), "=&f"(tmp)
- : "f"(x), "f"(two23));
-
- /* floor(-0) == -0, and in general we'll always have the same
- sign as our input. */
- return copysignf (r, x);
-}
-
-weak_alias (__floorf, floorf)
diff --git a/sysdeps/alpha/fpu/s_fmax.S b/sysdeps/alpha/fpu/s_fmax.S
deleted file mode 100644
index d638eec805..0000000000
--- a/sysdeps/alpha/fpu/s_fmax.S
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
- .set noat
- .set noreorder
-
- .text
-ENTRY (__fmax)
- .prologue 0
-
- cmptun/su $f16, $f16, $f10
- cmptun/su $f17, $f17, $f11
- fmov $f17, $f0
- unop
-
- trapb
- fbne $f10, $ret
- fmov $f16, $f0
- fbne $f11, $ret
-
- cmptlt/su $f16, $f17, $f11
- trapb
- fcmovne $f11, $f17, $f0
-$ret: ret
-
-END (__fmax)
-
-/* Given the in-register format of single-precision, this works there too. */
-strong_alias (__fmax, __fmaxf)
-weak_alias (__fmaxf, fmaxf)
-
-weak_alias (__fmax, fmax)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__fmax, __fmaxl)
-weak_alias (__fmaxl, fmaxl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __fmax, fmaxl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/alpha/fpu/s_fmaxf.S b/sysdeps/alpha/fpu/s_fmaxf.S
deleted file mode 100644
index 3c2d62bb81..0000000000
--- a/sysdeps/alpha/fpu/s_fmaxf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __fmaxf is in s_fmax.c */
diff --git a/sysdeps/alpha/fpu/s_fmin.S b/sysdeps/alpha/fpu/s_fmin.S
deleted file mode 100644
index d70fab625a..0000000000
--- a/sysdeps/alpha/fpu/s_fmin.S
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
- .set noat
- .set noreorder
-
- .text
-ENTRY (__fmin)
- .prologue 0
-
- cmptun/su $f16, $f16, $f10
- cmptun/su $f17, $f17, $f11
- fmov $f17, $f0
- unop
-
- trapb
- fbne $f10, $ret
- fmov $f16, $f0
- fbne $f11, $ret
-
- cmptlt/su $f17, $f16, $f11
- trapb
- fcmovne $f11, $f17, $f0
-$ret: ret
-
-END (__fmin)
-
-/* Given the in-register format of single-precision, this works there too. */
-strong_alias (__fmin, __fminf)
-weak_alias (__fminf, fminf)
-
-weak_alias (__fmin, fmin)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__fmin, __fminl)
-weak_alias (__fminl, fminl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __fmin, fminl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/alpha/fpu/s_fminf.S b/sysdeps/alpha/fpu/s_fminf.S
deleted file mode 100644
index 10ab7fe53c..0000000000
--- a/sysdeps/alpha/fpu/s_fminf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __fminf is in s_fmin.c */
diff --git a/sysdeps/alpha/fpu/s_isnan.c b/sysdeps/alpha/fpu/s_isnan.c
deleted file mode 100644
index a9230329c5..0000000000
--- a/sysdeps/alpha/fpu/s_isnan.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Return 1 if argument is a NaN, else 0.
- Copyright (C) 2007 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Ugly kludge to avoid declarations. */
-#define __isnanf not___isnanf
-#define isnanf not_isnanf
-#define __GI___isnanf not__GI___isnanf
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-
-#undef __isnanf
-#undef isnanf
-#undef __GI___isnanf
-
-/* The hidden_proto in include/math.h was obscured by the macro hackery. */
-__typeof (__isnan) __isnanf;
-hidden_proto (__isnanf)
-
-
-int
-__isnan (double x)
-{
- return isunordered (x, x);
-}
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-/* It turns out that the 'double' version will also always work for
- single-precision. */
-strong_alias (__isnan, __isnanf)
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/alpha/fpu/s_isnanf.c b/sysdeps/alpha/fpu/s_isnanf.c
deleted file mode 100644
index af41e43850..0000000000
--- a/sysdeps/alpha/fpu/s_isnanf.c
+++ /dev/null
@@ -1 +0,0 @@
-/* In s_isnan.c */
diff --git a/sysdeps/alpha/fpu/s_llrint.c b/sysdeps/alpha/fpu/s_llrint.c
deleted file mode 100644
index 5db97be037..0000000000
--- a/sysdeps/alpha/fpu/s_llrint.c
+++ /dev/null
@@ -1 +0,0 @@
-/* In s_lrint.c */
diff --git a/sysdeps/alpha/fpu/s_llrintf.c b/sysdeps/alpha/fpu/s_llrintf.c
deleted file mode 100644
index 18f2885ef7..0000000000
--- a/sysdeps/alpha/fpu/s_llrintf.c
+++ /dev/null
@@ -1 +0,0 @@
-/* In s_lrintf.c */
diff --git a/sysdeps/alpha/fpu/s_llround.c b/sysdeps/alpha/fpu/s_llround.c
deleted file mode 100644
index b212fbd8e5..0000000000
--- a/sysdeps/alpha/fpu/s_llround.c
+++ /dev/null
@@ -1 +0,0 @@
-/* In s_lround.c. */
diff --git a/sysdeps/alpha/fpu/s_llroundf.c b/sysdeps/alpha/fpu/s_llroundf.c
deleted file mode 100644
index 73bdf3103f..0000000000
--- a/sysdeps/alpha/fpu/s_llroundf.c
+++ /dev/null
@@ -1 +0,0 @@
-/* In s_lroundf.c. */
diff --git a/sysdeps/alpha/fpu/s_lrint.c b/sysdeps/alpha/fpu/s_lrint.c
deleted file mode 100644
index 1696408705..0000000000
--- a/sysdeps/alpha/fpu/s_lrint.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (C) 2007 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __llrint not___llrint
-#define llrint not_llrint
-#include <math.h>
-#include <math_ldbl_opt.h>
-#undef __llrint
-#undef llrint
-
-long int
-__lrint (double x)
-{
- long ret;
-
- __asm ("cvttq/svd %1,%0" : "=&f"(ret) : "f"(x));
-
- return ret;
-}
-
-strong_alias (__lrint, __llrint)
-weak_alias (__lrint, lrint)
-weak_alias (__llrint, llrint)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__lrint, __lrintl)
-strong_alias (__lrint, __llrintl)
-weak_alias (__lrintl, lrintl)
-weak_alias (__llrintl, llrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1);
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/alpha/fpu/s_lround.c b/sysdeps/alpha/fpu/s_lround.c
deleted file mode 100644
index 0e0e98806c..0000000000
--- a/sysdeps/alpha/fpu/s_lround.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (C) 2007 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __llround not___llround
-#define llround not_llround
-#include <math.h>
-#include <math_ldbl_opt.h>
-#undef __llround
-#undef llround
-
-long int
-__lround (double x)
-{
- double adj;
-
- adj = 0x1.fffffffffffffp-2; /* nextafter (0.5, 0.0) */
- adj = copysign (adj, x);
- return x + adj;
-}
-
-strong_alias (__lround, __llround)
-weak_alias (__lround, lround)
-weak_alias (__llround, llround)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__lround, __lroundl)
-strong_alias (__lround, __llroundl)
-weak_alias (__lroundl, lroundl)
-weak_alias (__llroundl, llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1);
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/alpha/fpu/s_lroundf.c b/sysdeps/alpha/fpu/s_lroundf.c
deleted file mode 100644
index 16ff348b21..0000000000
--- a/sysdeps/alpha/fpu/s_lroundf.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (C) 2007 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __llroundf not___llroundf
-#define llroundf not_llroundf
-#include <math.h>
-#undef __llroundf
-#undef llroundf
-
-
-long int
-__lroundf (float x)
-{
- float adj;
-
- adj = 0x1.fffffep-2; /* nextafterf (0.5f, 0.0f) */
- adj = copysignf (adj, x);
- return x + adj;
-}
-
-strong_alias (__lroundf, __llroundf)
-weak_alias (__lroundf, lroundf)
-weak_alias (__llroundf, llroundf)
diff --git a/sysdeps/alpha/fpu/s_nearbyint.c b/sysdeps/alpha/fpu/s_nearbyint.c
deleted file mode 100644
index b18db8ba79..0000000000
--- a/sysdeps/alpha/fpu/s_nearbyint.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-
-#ifdef _IEEE_FP_INEXACT
-#error "Don't compile with -mieee-with-inexact"
-#endif
-
-double
-__nearbyint (double x)
-{
- double two52 = copysign (0x1.0p52, x);
- double r;
-
- r = x + two52;
- r = r - two52;
-
- /* nearbyint(-0.1) == -0, and in general we'll always have the same sign
- as our input. */
- return copysign (r, x);
-}
-
-weak_alias (__nearbyint, nearbyint)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__nearbyint, __nearbyintl)
-weak_alias (__nearbyint, nearbyintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __nearbyint, nearbyintl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/alpha/fpu/s_rint.c b/sysdeps/alpha/fpu/s_rint.c
deleted file mode 100644
index e9aa028822..0000000000
--- a/sysdeps/alpha/fpu/s_rint.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright (C) 2000, 2006, 2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-
-
-double
-__rint (double x)
-{
- double two52 = copysign (0x1.0p52, x);
- double r;
-
- r = x + two52;
- r = r - two52;
-
- /* rint(-0.1) == -0, and in general we'll always have the same sign
- as our input. */
- return copysign (r, x);
-}
-
-weak_alias (__rint, rint)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__rint, __rintl)
-weak_alias (__rint, rintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __rint, rintl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/alpha/fpu/s_rintf.c b/sysdeps/alpha/fpu/s_rintf.c
deleted file mode 100644
index 9e4cbd1ffd..0000000000
--- a/sysdeps/alpha/fpu/s_rintf.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 2000, 2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <math.h>
-
-
-float
-__rintf (float x)
-{
- float two23 = copysignf (0x1.0p23, x);
- float r;
-
- r = x + two23;
- r = r - two23;
-
- /* rint(-0.1) == -0, and in general we'll always have the same sign
- as our input. */
- return copysign (r, x);
-}
-
-weak_alias (__rintf, rintf)
diff --git a/sysdeps/alpha/fpu/s_round.c b/sysdeps/alpha/fpu/s_round.c
deleted file mode 100644
index 71763cf4ab..0000000000
--- a/sysdeps/alpha/fpu/s_round.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright (C) 2007 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-
-
-double
-__round (double x)
-{
- const double almost_half = 0x1.fffffffffffffp-2;
- const double two52 = 0x1.0p52;
- double tmp, r;
-
- __asm (
-#ifdef _IEEE_FP_INEXACT
- "addt/suic %2, %3, %1\n\tsubt/suic %1, %3, %0"
-#else
- "addt/suc %2, %3, %1\n\tsubt/suc %1, %3, %0"
-#endif
- : "=&f"(r), "=&f"(tmp)
- : "f"(fabs (x) + almost_half), "f"(two52));
-
- return copysign (r, x);
-}
-
-weak_alias (__round, round)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__round, __roundl)
-weak_alias (__roundl, roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __round, roundl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/alpha/fpu/s_roundf.c b/sysdeps/alpha/fpu/s_roundf.c
deleted file mode 100644
index 89584f062b..0000000000
--- a/sysdeps/alpha/fpu/s_roundf.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <math.h>
-
-
-float
-__roundf (float x)
-{
- const float almost_half = 0x1.fffffep-2;
- const float two23 = 0x1.0p23;
- float r, tmp;
-
- __asm (
-#ifdef _IEEE_FP_INEXACT
- "adds/suic %2, %3, %1\n\tsubs/suic %1, %3, %0"
-#else
- "adds/suc %2, %3, %1\n\tsubs/suc %1, %3, %0"
-#endif
- : "=&f"(r), "=&f"(tmp)
- : "f"(fabsf (x) + almost_half), "f"(two23));
-
- /* round(-0) == -0, and in general we'll always have the same
- sign as our input. */
- return copysignf (r, x);
-}
-
-weak_alias (__roundf, roundf)
diff --git a/sysdeps/alpha/fpu/s_truncf.c b/sysdeps/alpha/fpu/s_truncf.c
deleted file mode 100644
index 094997b433..0000000000
--- a/sysdeps/alpha/fpu/s_truncf.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <math.h>
-
-
-/* Use the chopped rounding mode conversion instructions to implement trunc. */
-
-float
-__truncf (float x)
-{
- float two23 = copysignf (0x1.0p23, x);
- float r, tmp;
-
- __asm (
-#ifdef _IEEE_FP_INEXACT
- "adds/suic %2, %3, %1\n\tsubs/suic %1, %3, %0"
-#else
- "adds/suc %2, %3, %1\n\tsubs/suc %1, %3, %0"
-#endif
- : "=&f"(r), "=&f"(tmp)
- : "f"(x), "f"(two23));
-
- /* trunc(-0) == -0, and in general we'll always have the same
- sign as our input. */
- return copysignf (r, x);
-}
-
-weak_alias (__truncf, truncf)
diff --git a/sysdeps/alpha/hp-timing.h b/sysdeps/alpha/hp-timing.h
deleted file mode 100644
index ccae06b487..0000000000
--- a/sysdeps/alpha/hp-timing.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* High precision, low overhead timing functions. Alpha version.
- Copyright (C) 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@redhat.com>, 2001.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _HP_TIMING_H
-#define _HP_TIMING_H 1
-
-#include <string.h>
-#include <sys/param.h>
-#include <stdio-common/_itoa.h>
-
-/* The macros defined here use the timestamp counter in IA-64. They
- provide a very accurate way to measure the time with very little
- overhead. The time values themself have no real meaning, only
- differences are interesting.
-
- The list of macros we need includes the following:
-
- - HP_TIMING_AVAIL: test for availability.
-
- - HP_TIMING_INLINE: this macro is non-zero if the functionality is not
- implemented using function calls but instead uses some inlined code
- which might simply consist of a few assembler instructions. We have to
- know this since we might want to use the macros here in places where we
- cannot make function calls.
-
- - hp_timing_t: This is the type for variables used to store the time
- values.
-
- - HP_TIMING_ZERO: clear `hp_timing_t' object.
-
- - HP_TIMING_NOW: place timestamp for current time in variable given as
- parameter.
-
- - HP_TIMING_DIFF_INIT: do whatever is necessary to be able to use the
- HP_TIMING_DIFF macro.
-
- - HP_TIMING_DIFF: compute difference between two times and store it
- in a third. Source and destination might overlap.
-
- - HP_TIMING_ACCUM: add time difference to another variable. This might
- be a bit more complicated to implement for some platforms as the
- operation should be thread-safe and 64bit arithmetic on 32bit platforms
- is not.
-
- - HP_TIMING_ACCUM_NT: this is the variant for situations where we know
- there are no threads involved.
-
- - HP_TIMING_PRINT: write decimal representation of the timing value into
- the given string. This operation need not be inline even though
- HP_TIMING_INLINE is specified.
-*/
-
-/* We always have the timestamp register, but it's got only a 4 second
- range. Use it for ld.so profiling only. */
-#define HP_TIMING_AVAIL (0)
-#define HP_SMALL_TIMING_AVAIL (1)
-
-/* We indeed have inlined functions. */
-#define HP_TIMING_INLINE (1)
-
-/* We use 32 bit values for the times. */
-typedef unsigned int hp_timing_t;
-
-/* Set timestamp value to zero. */
-#define HP_TIMING_ZERO(VAR) (VAR) = (0)
-
-/* The "rpcc" instruction returns a 32-bit counting half and a 32-bit
- "virtual cycle counter displacement". Subtracting the two gives us
- a virtual cycle count. */
-#define HP_TIMING_NOW(VAR) \
- do { \
- unsigned long int x_; \
- asm volatile ("rpcc %0" : "=r"(x_)); \
- (VAR) = (int) (x_) - (int) (x_ >> 32); \
- } while (0)
-
-/* ??? Two rpcc instructions can be scheduled simultaneously. */
-#define HP_TIMING_DIFF_INIT() do { } while (0)
-
-/* It's simple arithmetic for us. */
-#define HP_TIMING_DIFF(Diff, Start, End) (Diff) = ((End) - (Start))
-
-/* ??? Don't bother, since we're only used for ld.so. */
-#define HP_TIMING_ACCUM(Sum, Diff) not implemented
-
-/* No threads, no extra work. */
-#define HP_TIMING_ACCUM_NT(Sum, Diff) (Sum) += (Diff)
-
-/* Print the time value. */
-#define HP_TIMING_PRINT(Buf, Len, Val) \
- do { \
- char __buf[20]; \
- char *__cp = _itoa_word (Val, __buf + sizeof (__buf), 10, 0); \
- int __len = (Len); \
- char *__dest = (Buf); \
- while (__len-- > 0 && __cp < __buf + sizeof (__buf)) \
- *__dest++ = *__cp++; \
- memcpy (__dest, " clock cycles", MIN (__len, sizeof (" clock cycles"))); \
- } while (0)
-
-#endif /* hp-timing.h */
diff --git a/sysdeps/alpha/htonl.S b/sysdeps/alpha/htonl.S
deleted file mode 100644
index ef2a575995..0000000000
--- a/sysdeps/alpha/htonl.S
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright (C) 1996, 1997, 1998, 2000 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-
-ENTRY(htonl)
-#ifdef PROF
- ldgp gp, 0(pv)
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
- .prologue 1
-#else
- .prologue 0
-#endif
-
- inslh a0, 7, t0 # t0 = 0000000000AABBCC
- inswl a0, 3, t1 # t1 = 000000CCDD000000
- or t1, t0, t1 # t1 = 000000CCDDAABBCC
- srl t1, 16, t2 # t2 = 0000000000CCDDAA
- zapnot t1, 0x0A, t0 # t0 = 00000000DD00BB00
- zapnot t2, 0x05, t3 # t3 = 0000000000CC00AA
- addl t0, t3, v0 # v0 = ssssssssDDCCBBAA
- ret
-
- END(htonl)
-
-weak_alias (htonl, ntohl)
diff --git a/sysdeps/alpha/jmpbuf-offsets.h b/sysdeps/alpha/jmpbuf-offsets.h
deleted file mode 100644
index c2503d442a..0000000000
--- a/sysdeps/alpha/jmpbuf-offsets.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Private macros for accessing __jmp_buf contents. Alpha version.
- Copyright (C) 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define JB_S0 0
-#define JB_S1 1
-#define JB_S2 2
-#define JB_S3 3
-#define JB_S4 4
-#define JB_S5 5
-#define JB_PC 6
-#define JB_FP 7
-#define JB_SP 8
-#define JB_F2 9
-#define JB_F3 10
-#define JB_F4 11
-#define JB_F5 12
-#define JB_F6 13
-#define JB_F7 14
-#define JB_F8 15
-#define JB_F9 16
diff --git a/sysdeps/alpha/jmpbuf-unwind.h b/sysdeps/alpha/jmpbuf-unwind.h
deleted file mode 100644
index ca5f693d5d..0000000000
--- a/sysdeps/alpha/jmpbuf-unwind.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <setjmp.h>
-#include <jmpbuf-offsets.h>
-#include <stdint.h>
-#include <unwind.h>
-#include <sysdep.h>
-
-/* Test if longjmp to JMPBUF would unwind the frame containing a local
- variable at ADDRESS. */
-#define _JMPBUF_UNWINDS(_jmpbuf, _address, _demangle) \
- ((void *)(_address) < (void *) _demangle ((_jmpbuf)[JB_SP]))
-
-#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
- _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
-
-static inline uintptr_t __attribute__ ((unused))
-_jmpbuf_sp (__jmp_buf regs)
-{
- uintptr_t sp = regs[JB_SP];
-#ifdef PTR_DEMANGLE
- PTR_DEMANGLE (sp);
-#endif
- return sp;
-}
-
-#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
- ((uintptr_t) (_address) - (_adj) < _jmpbuf_sp (_jmpbuf) - (_adj))
-
-/* We use the normal longjmp for unwinding. */
-#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
diff --git a/sysdeps/alpha/ldiv.S b/sysdeps/alpha/ldiv.S
deleted file mode 100644
index 0a971a7ed0..0000000000
--- a/sysdeps/alpha/ldiv.S
+++ /dev/null
@@ -1,218 +0,0 @@
-/* Copyright (C) 1996, 1997, 2001, 2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "div_libc.h"
-
-#undef FRAME
-#ifdef __alpha_fix__
-#define FRAME 0
-#else
-#define FRAME 16
-#endif
-
-#undef X
-#undef Y
-#define X $17
-#define Y $18
-
- .set noat
-
- .align 4
- .globl ldiv
- .ent ldiv
-ldiv:
- .frame sp, FRAME, ra
-#if FRAME > 0
- lda sp, -FRAME(sp)
-#endif
-#ifdef PROF
- .set macro
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set nomacro
- .prologue 1
-#else
- .prologue 0
-#endif
-
- beq Y, $divbyzero
- excb
- mf_fpcr $f10
-
- _ITOFT2 X, $f0, 0, Y, $f1, 8
-
- .align 4
- cvtqt $f0, $f0
- cvtqt $f1, $f1
- divt/c $f0, $f1, $f0
- unop
-
- /* Check to see if X fit in the double as an exact value. */
- sll X, (64-53), AT
- sra AT, (64-53), AT
- cmpeq X, AT, AT
- beq AT, $x_big
-
- /* If we get here, we're expecting exact results from the division.
- Do nothing else besides convert and clean up. */
- cvttq/c $f0, $f0
- excb
- mt_fpcr $f10
- _FTOIT $f0, $0, 0
-
-$egress:
- mulq $0, Y, $1
- subq X, $1, $1
-
- stq $0, 0($16)
- stq $1, 8($16)
- mov $16, $0
-
-#if FRAME > 0
- lda sp, FRAME(sp)
-#endif
- ret
-
- .align 4
-$x_big:
- /* If we get here, X is large enough that we don't expect exact
- results, and neither X nor Y got mis-translated for the fp
- division. Our task is to take the fp result, figure out how
- far it's off from the correct result and compute a fixup. */
-
-#define Q v0 /* quotient */
-#define R t0 /* remainder */
-#define SY t1 /* scaled Y */
-#define S t2 /* scalar */
-#define QY t3 /* Q*Y */
-
- /* The fixup code below can only handle unsigned values. */
- or X, Y, AT
- mov $31, t5
- blt AT, $fix_sign_in
-$fix_sign_in_ret1:
- cvttq/c $f0, $f0
-
- _FTOIT $f0, Q, 8
-$fix_sign_in_ret2:
- mulq Q, Y, QY
- excb
- mt_fpcr $f10
-
- .align 4
- subq QY, X, R
- mov Y, SY
- mov 1, S
- bgt R, $q_high
-
-$q_high_ret:
- subq X, QY, R
- mov Y, SY
- mov 1, S
- bgt R, $q_low
-
-$q_low_ret:
- negq Q, t4
- cmovlbs t5, t4, Q
- br $egress
-
- .align 4
- /* The quotient that we computed was too large. We need to reduce
- it by S such that Y*S >= R. Obviously the closer we get to the
- correct value the better, but overshooting high is ok, as we'll
- fix that up later. */
-0:
- addq SY, SY, SY
- addq S, S, S
-$q_high:
- cmpult SY, R, AT
- bne AT, 0b
-
- subq Q, S, Q
- unop
- subq QY, SY, QY
- br $q_high_ret
-
- .align 4
- /* The quotient that we computed was too small. Divide Y by the
- current remainder (R) and add that to the existing quotient (Q).
- The expectation, of course, is that R is much smaller than X. */
- /* Begin with a shift-up loop. Compute S such that Y*S >= R. We
- already have a copy of Y in SY and the value 1 in S. */
-0:
- addq SY, SY, SY
- addq S, S, S
-$q_low:
- cmpult SY, R, AT
- bne AT, 0b
-
- /* Shift-down and subtract loop. Each iteration compares our scaled
- Y (SY) with the remainder (R); if SY <= R then X is divisible by
- Y's scalar (S) so add it to the quotient (Q). */
-2: addq Q, S, t3
- srl S, 1, S
- cmpule SY, R, AT
- subq R, SY, t4
-
- cmovne AT, t3, Q
- cmovne AT, t4, R
- srl SY, 1, SY
- bne S, 2b
-
- br $q_low_ret
-
- .align 4
-$fix_sign_in:
- /* If we got here, then X|Y is negative. Need to adjust everything
- such that we're doing unsigned division in the fixup loop. */
- /* T5 is true if result should be negative. */
- xor X, Y, AT
- cmplt AT, 0, t5
- cmplt X, 0, AT
- negq X, t0
-
- cmovne AT, t0, X
- cmplt Y, 0, AT
- negq Y, t0
-
- cmovne AT, t0, Y
- blbc t5, $fix_sign_in_ret1
-
- cvttq/c $f0, $f0
- _FTOIT $f0, Q, 8
- .align 3
- negq Q, Q
- br $fix_sign_in_ret2
-
-$divbyzero:
- mov a0, v0
- lda a0, GEN_INTDIV
- call_pal PAL_gentrap
- stq zero, 0(v0)
- stq zero, 8(v0)
-
-#if FRAME > 0
- lda sp, FRAME(sp)
-#endif
- ret
-
- .end ldiv
-
-weak_alias (ldiv, lldiv)
diff --git a/sysdeps/alpha/lldiv.S b/sysdeps/alpha/lldiv.S
deleted file mode 100644
index 80c450a3fc..0000000000
--- a/sysdeps/alpha/lldiv.S
+++ /dev/null
@@ -1 +0,0 @@
-/* lldiv is the same as ldiv on the Alpha. */
diff --git a/sysdeps/alpha/lshift.s b/sysdeps/alpha/lshift.s
deleted file mode 100644
index 42fb430dd4..0000000000
--- a/sysdeps/alpha/lshift.s
+++ /dev/null
@@ -1,109 +0,0 @@
- # Alpha 21064 __mpn_lshift --
-
- # Copyright (C) 1994, 1995 Free Software Foundation, Inc.
-
- # This file is part of the GNU MP Library.
-
- # The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- # MA 02111-1307, USA.
-
-
- # INPUT PARAMETERS
- # res_ptr r16
- # s1_ptr r17
- # size r18
- # cnt r19
-
- # This code runs at 4.8 cycles/limb on the 21064. With infinite unrolling,
- # it would take 4 cycles/limb. It should be possible to get down to 3
- # cycles/limb since both ldq and stq can be paired with the other used
- # instructions. But there are many restrictions in the 21064 pipeline that
- # makes it hard, if not impossible, to get down to 3 cycles/limb:
-
- # 1. ldq has a 3 cycle delay, srl and sll have a 2 cycle delay.
- # 2. Only aligned instruction pairs can be paired.
- # 3. The store buffer or silo might not be able to deal with the bandwidth.
-
- .set noreorder
- .set noat
-.text
- .align 3
- .globl __mpn_lshift
- .ent __mpn_lshift
-__mpn_lshift:
- .frame $30,0,$26,0
-
- s8addq $18,$17,$17 # make r17 point at end of s1
- ldq $4,-8($17) # load first limb
- subq $17,8,$17
- subq $31,$19,$7
- s8addq $18,$16,$16 # make r16 point at end of RES
- subq $18,1,$18
- and $18,4-1,$20 # number of limbs in first loop
- srl $4,$7,$0 # compute function result
-
- beq $20,.L0
- subq $18,$20,$18
-
- .align 3
-.Loop0:
- ldq $3,-8($17)
- subq $16,8,$16
- subq $17,8,$17
- subq $20,1,$20
- sll $4,$19,$5
- srl $3,$7,$6
- bis $3,$3,$4
- bis $5,$6,$8
- stq $8,0($16)
- bne $20,.Loop0
-
-.L0: beq $18,.Lend
-
- .align 3
-.Loop: ldq $3,-8($17)
- subq $16,32,$16
- subq $18,4,$18
- sll $4,$19,$5
- srl $3,$7,$6
-
- ldq $4,-16($17)
- sll $3,$19,$1
- bis $5,$6,$8
- stq $8,24($16)
- srl $4,$7,$2
-
- ldq $3,-24($17)
- sll $4,$19,$5
- bis $1,$2,$8
- stq $8,16($16)
- srl $3,$7,$6
-
- ldq $4,-32($17)
- sll $3,$19,$1
- bis $5,$6,$8
- stq $8,8($16)
- srl $4,$7,$2
-
- subq $17,32,$17
- bis $1,$2,$8
- stq $8,0($16)
-
- bgt $18,.Loop
-
-.Lend: sll $4,$19,$8
- stq $8,-8($16)
- ret $31,($26),1
- .end __mpn_lshift
diff --git a/sysdeps/alpha/machine-gmon.h b/sysdeps/alpha/machine-gmon.h
deleted file mode 100644
index 5f5522c0b4..0000000000
--- a/sysdeps/alpha/machine-gmon.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Machine-specific calling sequence for `mcount' profiling function. alpha
- Copyright (C) 1995, 1996, 1997 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define _MCOUNT_DECL(from, self) \
- void __mcount (u_long from, u_long self)
-
-/* Call __mcount with our the return PC for our caller, and the return
- PC our caller will return to. Empty since we use an assembly stub
- instead. */
-#define MCOUNT
diff --git a/sysdeps/alpha/memchr.S b/sysdeps/alpha/memchr.S
deleted file mode 100644
index 5d713d53ba..0000000000
--- a/sysdeps/alpha/memchr.S
+++ /dev/null
@@ -1,176 +0,0 @@
-/* Copyright (C) 1996, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Finds characters in a memory area. Optimized for the Alpha:
-
- - memory accessed as aligned quadwords only
- - uses cmpbge to compare 8 bytes in parallel
- - does binary search to find 0 byte in last
- quadword (HAKMEM needed 12 instructions to
- do this instead of the 9 instructions that
- binary search needs).
-
-For correctness consider that:
-
- - only minimum number of quadwords may be accessed
- - the third argument is an unsigned long
-*/
-
-#include <sysdep.h>
-
- .set noreorder
- .set noat
-
-ENTRY(__memchr)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- # Hack -- if someone passes in (size_t)-1, hoping to just
- # search til the end of the address space, we will overflow
- # below when we find the address of the last byte. Given
- # that we will never have a 56-bit address space, cropping
- # the length is the easiest way to avoid trouble.
- zap a2, 0x80, t4 #-e0 :
-
- beq a2, $not_found # .. e1 :
- ldq_u t0, 0(a0) # e1 : load first quadword
- insbl a1, 1, t1 # .. e0 : t1 = 000000000000ch00
- and a1, 0xff, a1 #-e0 : a1 = 00000000000000ch
- cmpult a2, 9, t3 # .. e1 :
- or t1, a1, a1 # e0 : a1 = 000000000000chch
- lda t2, -1(zero) # .. e1 :
- sll a1, 16, t1 #-e0 : t1 = 00000000chch0000
- addq a0, t4, t4 # .. e1 :
- or t1, a1, a1 # e1 : a1 = 00000000chchchch
- unop # :
- sll a1, 32, t1 #-e0 : t1 = chchchch00000000
- or t1, a1, a1 # e1 : a1 = chchchchchchchch
- extql t0, a0, t6 # e0 :
- beq t3, $first_quad # .. e1 :
-
- ldq_u t5, -1(t4) #-e1 : eight or less bytes to search
- extqh t5, a0, t5 # .. e0 :
- mov a0, v0 # e0 :
- or t6, t5, t0 # .. e1 : t0 = quadword starting at a0
-
- # Deal with the case where at most 8 bytes remain to be searched
- # in t0. E.g.:
- # a2 = 6
- # t0 = ????c6c5c4c3c2c1
-$last_quad:
- negq a2, t5 #-e0 :
- xor a1, t0, t0 # .. e1 :
- srl t2, t5, t5 # e0 : t5 = mask of a2 bits set
- cmpbge zero, t0, t1 # .. e1 :
- and t1, t5, t1 #-e0 :
- beq t1, $not_found # .. e1 :
-
-$found_it:
- # Now, determine which byte matched:
- negq t1, t2 # e0 :
- and t1, t2, t1 # e1 :
-
- and t1, 0x0f, t0 #-e0 :
- addq v0, 4, t2 # .. e1 :
- cmoveq t0, t2, v0 # e0 :
-
- addq v0, 2, t2 # .. e1 :
- and t1, 0x33, t0 #-e0 :
- cmoveq t0, t2, v0 # .. e1 :
-
- and t1, 0x55, t0 # e0 :
- addq v0, 1, t2 # .. e1 :
- cmoveq t0, t2, v0 #-e0 :
-
-$done: ret # .. e1 :
-
- # Deal with the case where a2 > 8 bytes remain to be
- # searched. a0 may not be aligned.
- .align 4
-$first_quad:
- andnot a0, 0x7, v0 #-e1 :
- insqh t2, a0, t1 # .. e0 : t1 = 0000ffffffffffff (a0<0:2> ff)
- xor t0, a1, t0 # e0 :
- or t0, t1, t0 # e1 : t0 = ====ffffffffffff
- cmpbge zero, t0, t1 #-e0 :
- bne t1, $found_it # .. e1 :
-
- # At least one byte left to process.
-
- ldq t0, 8(v0) # e0 :
- subq t4, 1, a2 # .. e1 :
- addq v0, 8, v0 #-e0 :
-
- # Make a2 point to last quad to be accessed (the
- # last quad may or may not be partial).
-
- andnot a2, 0x7, a2 # .. e1 :
- cmpult v0, a2, t1 # e0 :
- beq t1, $final # .. e1 :
-
- # At least two quads remain to be accessed.
-
- subq a2, v0, t3 #-e0 : t3 <- nr quads to be processed
- and t3, 8, t3 # e1 : odd number of quads?
- bne t3, $odd_quad_count # e1 :
-
- # At least three quads remain to be accessed
-
- mov t0, t3 # e0 : move prefetched value to correct reg
-
- .align 4
-$unrolled_loop:
- ldq t0, 8(v0) #-e0 : prefetch t0
- xor a1, t3, t1 # .. e1 :
- cmpbge zero, t1, t1 # e0 :
- bne t1, $found_it # .. e1 :
-
- addq v0, 8, v0 #-e0 :
-$odd_quad_count:
- xor a1, t0, t1 # .. e1 :
- ldq t3, 8(v0) # e0 : prefetch t3
- cmpbge zero, t1, t1 # .. e1 :
- addq v0, 8, t5 #-e0 :
- bne t1, $found_it # .. e1 :
-
- cmpult t5, a2, t5 # e0 :
- addq v0, 8, v0 # .. e1 :
- bne t5, $unrolled_loop #-e1 :
-
- mov t3, t0 # e0 : move prefetched value into t0
-$final: subq t4, v0, a2 # .. e1 : a2 <- number of bytes left to do
- bne a2, $last_quad # e1 :
-
-$not_found:
- mov zero, v0 #-e0 :
- ret # .. e1 :
-
- END(__memchr)
-
-weak_alias (__memchr, memchr)
-#if !__BOUNDED_POINTERS__
-weak_alias (__memchr, __ubp_memchr)
-#endif
-libc_hidden_builtin_def (memchr)
diff --git a/sysdeps/alpha/memset.S b/sysdeps/alpha/memset.S
deleted file mode 100644
index e34af2b314..0000000000
--- a/sysdeps/alpha/memset.S
+++ /dev/null
@@ -1,137 +0,0 @@
-/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Fill a block of memory with a character. Optimized for the Alpha
- architecture:
-
- - memory accessed as aligned quadwords only
- - destination memory not read unless needed for good cache behaviour
- - basic blocks arranged to optimize branch prediction for full-quadword
- aligned memory blocks.
- - partial head and tail quadwords constructed with byte-mask instructions
-
- This is generally scheduled for the EV5 (got to look out for my own
- interests :-), but with EV4 needs in mind. There *should* be no more
- stalls for the EV4 than there are for the EV5.
-*/
-
-
-#include <sysdep.h>
-
- .set noat
- .set noreorder
-
- .text
-
-/* There is a problem with either gdb (as of 4.16) or gas (as of 2.7) that
- doesn't like putting the entry point for a procedure somewhere in the
- middle of the procedure descriptor. Work around this by putting the main
- loop in its own procedure descriptor. */
-
- /* On entry to this basic block:
- t3 == loop counter
- t4 == bytes in partial final word
- a0 == possibly misaligned destination pointer
- a1 == replicated source character */
-
- .ent memset_loop
- .align 3
-memset_loop:
- .frame sp, 0, ra, 0
- .prologue 0
-
- beq t3, $tail
- blbc t3, 0f # skip single store if count even
-
- stq_u a1, 0(a0) # e0 : store one word
- subq t3, 1, t3 # .. e1 :
- addq a0, 8, a0 # e0 :
- beq t3, $tail # .. e1 :
-
-0: stq_u a1, 0(a0) # e0 : store two words
- subq t3, 2, t3 # .. e1 :
- stq_u a1, 8(a0) # e0 :
- addq a0, 16, a0 # .. e1 :
- bne t3, 0b # e1 :
-
-$tail: bne t4, 1f # is there a tail to do?
- ret # no
-
- .align 3
-1: ldq_u t0, 0(a0) # e1 : yes, load original data
- mskql a1, t4, t1 # .. e0 :
- mskqh t0, t4, t0 # e0 :
- or t0, t1, t0 # e1 (stall)
- stq_u t0, 0(a0) # e0 :
- ret # .. e1 :
-
- .end memset_loop
-
-ENTRY(memset)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- zapnot a1, 1, a1 # e0 : zero extend input character
- mov a0, v0 # .. e1 : move return value in place
- sll a1, 8, t0 # e0 : begin replicating the char
- beq a2, $done # .. e1 : early exit for zero-length store
- or t0, a1, a1 # e0 :
- and a0, 7, t1 # .. e1 : dest misalignment
- sll a1, 16, t0 # e0 :
- addq a2, t1, a2 # .. e1 : add dest misalignment to count
- or t0, a1, a1 # e0 :
- srl a2, 3, t3 # .. e1 : loop = count >> 3
- sll a1, 32, t0 # e0 :
- and a2, 7, t4 # .. e1 : find number of bytes in tail
- or t0, a1, a1 # e0 : character replication done
-
- beq t1, memset_loop # .. e1 : aligned head, jump right in
-
- ldq_u t0, 0(a0) # e1 : load original data to mask into
- mskqh a1, a0, t1 # .. e0 :
-
- cmpult a2, 8, t2 # e0 : is this a sub-word set?
- bne t2, $oneq # .. e1 (zdb)
-
- mskql t0, a0, t0 # e0 : we span words. finish this partial
- subq t3, 1, t3 # .. e1 :
- addq a0, 8, a0 # e0 :
- or t0, t1, t0 # .. e1 :
- stq_u t0, -8(a0) # e0 :
- br memset_loop # .. e1 :
-
- .align 3
-$oneq:
- mskql t1, a2, t1 # e0 : entire operation within one word
- mskql t0, a0, t2 # e0 :
- mskqh t0, a2, t3 # e0 :
- or t1, t2, t0 # .. e1 :
- or t0, t3, t0 # e1 :
- stq_u t0, 0(a0) # e0 (stall)
-
-$done: ret
-
- END(memset)
-libc_hidden_builtin_def (memset)
diff --git a/sysdeps/alpha/mul_1.s b/sysdeps/alpha/mul_1.s
deleted file mode 100644
index 165c281ac6..0000000000
--- a/sysdeps/alpha/mul_1.s
+++ /dev/null
@@ -1,85 +0,0 @@
- # Alpha 21064 __mpn_mul_1 -- Multiply a limb vector with a limb and store
- # the result in a second limb vector.
-
- # Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
-
- # This file is part of the GNU MP Library.
-
- # The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- # MA 02111-1307, USA.
-
-
- # INPUT PARAMETERS
- # res_ptr r16
- # s1_ptr r17
- # size r18
- # s2_limb r19
-
- # This code runs at 42 cycles/limb on the EV4 and 18 cycles/limb on the EV5.
-
- # To improve performance for long multiplications, we would use
- # 'fetch' for S1 and 'fetch_m' for RES. It's not obvious how to use
- # these instructions without slowing down the general code: 1. We can
- # only have two prefetches in operation at any time in the Alpha
- # architecture. 2. There will seldom be any special alignment
- # between RES_PTR and S1_PTR. Maybe we can simply divide the current
- # loop into an inner and outer loop, having the inner loop handle
- # exactly one prefetch block?
-
- .set noreorder
- .set noat
-.text
- .align 3
- .globl __mpn_mul_1
- .ent __mpn_mul_1 2
-__mpn_mul_1:
- .frame $30,0,$26
-
- ldq $2,0($17) # $2 = s1_limb
- subq $18,1,$18 # size--
- mulq $2,$19,$3 # $3 = prod_low
- bic $31,$31,$4 # clear cy_limb
- umulh $2,$19,$0 # $0 = prod_high
- beq $18,Lend1 # jump if size was == 1
- ldq $2,8($17) # $2 = s1_limb
- subq $18,1,$18 # size--
- stq $3,0($16)
- beq $18,Lend2 # jump if size was == 2
-
- .align 3
-Loop: mulq $2,$19,$3 # $3 = prod_low
- addq $4,$0,$0 # cy_limb = cy_limb + 'cy'
- subq $18,1,$18 # size--
- umulh $2,$19,$4 # $4 = cy_limb
- ldq $2,16($17) # $2 = s1_limb
- addq $17,8,$17 # s1_ptr++
- addq $3,$0,$3 # $3 = cy_limb + prod_low
- stq $3,8($16)
- cmpult $3,$0,$0 # $0 = carry from (cy_limb + prod_low)
- addq $16,8,$16 # res_ptr++
- bne $18,Loop
-
-Lend2: mulq $2,$19,$3 # $3 = prod_low
- addq $4,$0,$0 # cy_limb = cy_limb + 'cy'
- umulh $2,$19,$4 # $4 = cy_limb
- addq $3,$0,$3 # $3 = cy_limb + prod_low
- cmpult $3,$0,$0 # $0 = carry from (cy_limb + prod_low)
- stq $3,8($16)
- addq $4,$0,$0 # cy_limb = prod_high + cy
- ret $31,($26),1
-Lend1: stq $3,0($16)
- ret $31,($26),1
-
- .end __mpn_mul_1
diff --git a/sysdeps/alpha/rawmemchr.S b/sysdeps/alpha/rawmemchr.S
deleted file mode 100644
index d3a69fa63c..0000000000
--- a/sysdeps/alpha/rawmemchr.S
+++ /dev/null
@@ -1,90 +0,0 @@
-/* Copyright (C) 2000, 2002 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Return pointer to first occurrence of CH in STR. */
-
-#include <sysdep.h>
-
- .set noreorder
- .set noat
-
-ENTRY(__rawmemchr)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- zapnot a1, 1, a1 # e0 : zero extend the search character
- ldq_u t0, 0(a0) # .. e1 : load first quadword
- sll a1, 8, t5 # e0 : replicate the search character
- andnot a0, 7, v0 # .. e1 : align our loop pointer
-
- or t5, a1, a1 # e0 :
- lda t4, -1 # .. e1 : build garbage mask
- sll a1, 16, t5 # e0 :
- unop # :
-
- mskqh t4, a0, t4 # e0 :
- or t5, a1, a1 # .. e1 :
- sll a1, 32, t5 # e0 :
- cmpbge zero, t4, t4 # .. e1 : bits set iff byte is garbage
-
- or t5, a1, a1 # e0 :
- xor t0, a1, t1 # .. e1 : make bytes == c zero
- cmpbge zero, t1, t3 # e0 : bits set iff byte == c
- unop # :
-
- andnot t3, t4, t0 # e0 : clear garbage bits
- fnop # .. fa :
- unop # :
- bne t0, $found # .. e1 (zdb)
-
- .align 4
-$loop:
- ldq t0, 8(v0) # e0 :
- addq v0, 8, v0 # .. e1 :
- nop # e0 :
- xor t0, a1, t1 # .. e1 (ev5 data stall)
-
- cmpbge zero, t1, t0 # e0 : bits set iff byte == c
- beq t0, $loop # .. e1 (zdb)
-
-$found:
- negq t0, t1 # e0 : clear all but least set bit
- and t0, t1, t0 # e1 (stall)
- and t0, 0xf0, t2 # e0 : binary search for that set bit
- and t0, 0xcc, t3 # .. e1 :
-
- and t0, 0xaa, t4 # e0 :
- cmovne t2, 4, t2 # .. e1 :
- cmovne t3, 2, t3 # e0 :
- cmovne t4, 1, t4 # .. e1 :
-
- addq t2, t3, t2 # e0 :
- addq v0, t4, v0 # .. e1 :
- addq v0, t2, v0 # e0 :
- ret # .. e1 :
-
- END(__rawmemchr)
-
-libc_hidden_def (__rawmemchr)
-weak_alias (__rawmemchr, rawmemchr)
diff --git a/sysdeps/alpha/reml.S b/sysdeps/alpha/reml.S
deleted file mode 100644
index ae291b0505..0000000000
--- a/sysdeps/alpha/reml.S
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@twiddle.net>
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "div_libc.h"
-
-/* 32-bit signed int remainder. This is not a normal C function. Argument
- registers are t10 and t11, the result goes in t12. Only t12 and AT may
- be clobbered.
-
- The FPU can handle the division for all input values except zero.
- All we have to do is compute the remainder via multiply-and-subtract.
-
- The FPCR save/restore is due to the fact that the EV6 _will_ set FPCR_INE
- for cvttq/c even without /sui being set. It will not, however, properly
- raise the exception, so we don't have to worry about FPCR_INED being clear
- and so dying by SIGFPE. */
-
-#ifndef EXTEND
-#define EXTEND(S,D) sextl S, D
-#endif
-
- .text
- .align 4
- .globl __reml
- .type __reml, @funcnoplt
- .usepv __reml, no
-
- cfi_startproc
- cfi_return_column (RA)
-__reml:
- lda sp, -FRAME(sp)
- cfi_def_cfa_offset (FRAME)
- CALL_MCOUNT
- stt $f0, 0(sp)
- excb
- beq Y, DIVBYZERO
-
- stt $f1, 8(sp)
- stt $f2, 16(sp)
- cfi_rel_offset ($f0, 0)
- cfi_rel_offset ($f1, 8)
- cfi_rel_offset ($f2, 16)
- mf_fpcr $f2
-
- EXTEND (X, RV)
- EXTEND (Y, AT)
- _ITOFT2 RV, $f0, 24, AT, $f1, 32
- cvtqt $f0, $f0
- cvtqt $f1, $f1
- divt/c $f0, $f1, $f0
- cvttq/c $f0, $f0
- excb
- mt_fpcr $f2
- _FTOIT $f0, RV, 24
-
- ldt $f0, 0(sp)
- mull RV, Y, RV
- ldt $f1, 8(sp)
- ldt $f2, 16(sp)
- lda sp, FRAME(sp)
- cfi_restore ($f0)
- cfi_restore ($f1)
- cfi_restore ($f2)
- cfi_def_cfa_offset (0)
- subl X, RV, RV
- ret $31, (RA), 1
-
- cfi_endproc
- .size __reml, .-__reml
-
- DO_DIVBYZERO
diff --git a/sysdeps/alpha/remlu.S b/sysdeps/alpha/remlu.S
deleted file mode 100644
index f8691e19a4..0000000000
--- a/sysdeps/alpha/remlu.S
+++ /dev/null
@@ -1,4 +0,0 @@
-#define UNSIGNED
-#define EXTEND(S,D) zapnot S, 15, D
-#define __reml __remlu
-#include <reml.S>
diff --git a/sysdeps/alpha/remq.S b/sysdeps/alpha/remq.S
deleted file mode 100644
index 64e958bb95..0000000000
--- a/sysdeps/alpha/remq.S
+++ /dev/null
@@ -1,269 +0,0 @@
-/* Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "div_libc.h"
-
-
-/* 64-bit signed long remainder. These are not normal C functions. Argument
- registers are t10 and t11, the result goes in t12. Only t12 and AT may
- be clobbered.
-
- Theory of operation here is that we can use the FPU divider for virtually
- all operands that we see: all dividend values between -2**53 and 2**53-1
- can be computed directly. Note that divisor values need not be checked
- against that range because the rounded fp value will be close enough such
- that the quotient is < 1, which will properly be truncated to zero when we
- convert back to integer.
-
- When the dividend is outside the range for which we can compute exact
- results, we use the fp quotent as an estimate from which we begin refining
- an exact integral value. This reduces the number of iterations in the
- shift-and-subtract loop significantly.
-
- The FPCR save/restore is due to the fact that the EV6 _will_ set FPCR_INE
- for cvttq/c even without /sui being set. It will not, however, properly
- raise the exception, so we don't have to worry about FPCR_INED being clear
- and so dying by SIGFPE. */
-
- .text
- .align 4
- .globl __remq
- .type __remq, @funcnoplt
- .usepv __remq, no
-
- cfi_startproc
- cfi_return_column (RA)
-__remq:
- lda sp, -FRAME(sp)
- cfi_def_cfa_offset (FRAME)
- CALL_MCOUNT
-
- /* Get the fp divide insn issued as quickly as possible. After
- that's done, we have at least 22 cycles until its results are
- ready -- all the time in the world to figure out how we're
- going to use the results. */
- stt $f0, 0(sp)
- excb
- beq Y, DIVBYZERO
-
- stt $f1, 8(sp)
- stt $f3, 48(sp)
- cfi_rel_offset ($f0, 0)
- cfi_rel_offset ($f1, 8)
- cfi_rel_offset ($f3, 48)
- mf_fpcr $f3
-
- _ITOFT2 X, $f0, 16, Y, $f1, 24
- cvtqt $f0, $f0
- cvtqt $f1, $f1
- divt/c $f0, $f1, $f0
-
- /* Check to see if X fit in the double as an exact value. */
- sll X, (64-53), AT
- ldt $f1, 8(sp)
- sra AT, (64-53), AT
- cmpeq X, AT, AT
- beq AT, $x_big
-
- /* If we get here, we're expecting exact results from the division.
- Do nothing else besides convert, compute remainder, clean up. */
- cvttq/c $f0, $f0
- excb
- mt_fpcr $f3
- _FTOIT $f0, AT, 16
- mulq AT, Y, AT
- ldt $f0, 0(sp)
- ldt $f3, 48(sp)
- cfi_restore ($f1)
- cfi_remember_state
- cfi_restore ($f0)
- cfi_restore ($f3)
- cfi_def_cfa_offset (0)
- lda sp, FRAME(sp)
- subq X, AT, RV
- ret $31, (RA), 1
-
- .align 4
- cfi_restore_state
-$x_big:
- /* If we get here, X is large enough that we don't expect exact
- results, and neither X nor Y got mis-translated for the fp
- division. Our task is to take the fp result, figure out how
- far it's off from the correct result and compute a fixup. */
- stq t0, 16(sp)
- stq t1, 24(sp)
- stq t2, 32(sp)
- stq t5, 40(sp)
- cfi_rel_offset (t0, 16)
- cfi_rel_offset (t1, 24)
- cfi_rel_offset (t2, 32)
- cfi_rel_offset (t5, 40)
-
-#define Q t0 /* quotient */
-#define R RV /* remainder */
-#define SY t1 /* scaled Y */
-#define S t2 /* scalar */
-#define QY t3 /* Q*Y */
-
- /* The fixup code below can only handle unsigned values. */
- or X, Y, AT
- mov $31, t5
- blt AT, $fix_sign_in
-$fix_sign_in_ret1:
- cvttq/c $f0, $f0
-
- _FTOIT $f0, Q, 8
- .align 3
-$fix_sign_in_ret2:
- ldt $f0, 0(sp)
- stq t3, 0(sp)
- cfi_restore ($f0)
- cfi_rel_offset (t3, 0)
-
- mulq Q, Y, QY
- excb
- stq t4, 8(sp)
- mt_fpcr $f3
- cfi_rel_offset (t4, 8)
-
- subq QY, X, R
- mov Y, SY
- mov 1, S
- bgt R, $q_high
-
-$q_high_ret:
- subq X, QY, R
- mov Y, SY
- mov 1, S
- bgt R, $q_low
-
-$q_low_ret:
- ldq t0, 16(sp)
- ldq t1, 24(sp)
- ldq t2, 32(sp)
- bne t5, $fix_sign_out
-
-$fix_sign_out_ret:
- ldq t3, 0(sp)
- ldq t4, 8(sp)
- ldq t5, 40(sp)
- ldt $f3, 48(sp)
- lda sp, FRAME(sp)
- cfi_remember_state
- cfi_restore (t0)
- cfi_restore (t1)
- cfi_restore (t2)
- cfi_restore (t3)
- cfi_restore (t4)
- cfi_restore (t5)
- cfi_restore ($f3)
- cfi_def_cfa_offset (0)
- ret $31, (RA), 1
-
- .align 4
- cfi_restore_state
- /* The quotient that we computed was too large. We need to reduce
- it by S such that Y*S >= R. Obviously the closer we get to the
- correct value the better, but overshooting high is ok, as we'll
- fix that up later. */
-0:
- addq SY, SY, SY
- addq S, S, S
-$q_high:
- cmpult SY, R, AT
- bne AT, 0b
-
- subq Q, S, Q
- unop
- subq QY, SY, QY
- br $q_high_ret
-
- .align 4
- /* The quotient that we computed was too small. Divide Y by the
- current remainder (R) and add that to the existing quotient (Q).
- The expectation, of course, is that R is much smaller than X. */
- /* Begin with a shift-up loop. Compute S such that Y*S >= R. We
- already have a copy of Y in SY and the value 1 in S. */
-0:
- addq SY, SY, SY
- addq S, S, S
-$q_low:
- cmpult SY, R, AT
- bne AT, 0b
-
- /* Shift-down and subtract loop. Each iteration compares our scaled
- Y (SY) with the remainder (R); if SY <= R then X is divisible by
- Y's scalar (S) so add it to the quotient (Q). */
-2: addq Q, S, t3
- srl S, 1, S
- cmpule SY, R, AT
- subq R, SY, t4
-
- cmovne AT, t3, Q
- cmovne AT, t4, R
- srl SY, 1, SY
- bne S, 2b
-
- br $q_low_ret
-
- .align 4
-$fix_sign_in:
- /* If we got here, then X|Y is negative. Need to adjust everything
- such that we're doing unsigned division in the fixup loop. */
- /* T5 records the changes we had to make:
- bit 0: set if X was negated. Note that the sign of the
- remainder follows the sign of the divisor.
- bit 2: set if Y was negated.
- */
- xor X, Y, t1
- cmplt X, 0, t5
- negq X, t0
- cmovne t5, t0, X
-
- cmplt Y, 0, AT
- negq Y, t0
- s4addq AT, t5, t5
- cmovne AT, t0, Y
-
- bge t1, $fix_sign_in_ret1
- cvttq/c $f0, $f0
- _FTOIT $f0, Q, 8
- .align 3
- negq Q, Q
- br $fix_sign_in_ret2
-
- .align 4
-$fix_sign_out:
- /* Now we get to undo what we did above. */
- /* ??? Is this really faster than just increasing the size of
- the stack frame and storing X and Y in memory? */
- and t5, 4, AT
- negq Y, t4
- cmovne AT, t4, Y
-
- negq X, t4
- cmovlbs t5, t4, X
- negq RV, t4
- cmovlbs t5, t4, RV
-
- br $fix_sign_out_ret
-
- cfi_endproc
- .size __remq, .-__remq
-
- DO_DIVBYZERO
diff --git a/sysdeps/alpha/remqu.S b/sysdeps/alpha/remqu.S
deleted file mode 100644
index 398a345a18..0000000000
--- a/sysdeps/alpha/remqu.S
+++ /dev/null
@@ -1,272 +0,0 @@
-/* Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "div_libc.h"
-
-
-/* 64-bit unsigned long remainder. These are not normal C functions. Argument
- registers are t10 and t11, the result goes in t12. Only t12 and AT may be
- clobbered.
-
- Theory of operation here is that we can use the FPU divider for virtually
- all operands that we see: all dividend values between -2**53 and 2**53-1
- can be computed directly. Note that divisor values need not be checked
- against that range because the rounded fp value will be close enough such
- that the quotient is < 1, which will properly be truncated to zero when we
- convert back to integer.
-
- When the dividend is outside the range for which we can compute exact
- results, we use the fp quotent as an estimate from which we begin refining
- an exact integral value. This reduces the number of iterations in the
- shift-and-subtract loop significantly.
-
- The FPCR save/restore is due to the fact that the EV6 _will_ set FPCR_INE
- for cvttq/c even without /sui being set. It will not, however, properly
- raise the exception, so we don't have to worry about FPCR_INED being clear
- and so dying by SIGFPE. */
-
- .text
- .align 4
- .globl __remqu
- .type __remqu, @funcnoplt
- .usepv __remqu, no
-
- cfi_startproc
- cfi_return_column (RA)
-__remqu:
- lda sp, -FRAME(sp)
- cfi_def_cfa_offset (FRAME)
- CALL_MCOUNT
-
- /* Get the fp divide insn issued as quickly as possible. After
- that's done, we have at least 22 cycles until its results are
- ready -- all the time in the world to figure out how we're
- going to use the results. */
- subq Y, 1, AT
- stt $f0, 0(sp)
- and Y, AT, AT
-
- stt $f1, 8(sp)
- excb
- stt $f3, 48(sp)
- beq AT, $powerof2
- cfi_rel_offset ($f0, 0)
- cfi_rel_offset ($f1, 8)
- cfi_rel_offset ($f3, 48)
-
- _ITOFT2 X, $f0, 16, Y, $f1, 24
- mf_fpcr $f3
- cvtqt $f0, $f0
- cvtqt $f1, $f1
-
- blt X, $x_is_neg
- divt/c $f0, $f1, $f0
-
- /* Check to see if Y was mis-converted as signed value. */
- ldt $f1, 8(sp)
- blt Y, $y_is_neg
-
- /* Check to see if X fit in the double as an exact value. */
- srl X, 53, AT
- bne AT, $x_big
-
- /* If we get here, we're expecting exact results from the division.
- Do nothing else besides convert, compute remainder, clean up. */
- cvttq/c $f0, $f0
- excb
- mt_fpcr $f3
- _FTOIT $f0, AT, 16
-
- mulq AT, Y, AT
- ldt $f0, 0(sp)
- ldt $f3, 48(sp)
- lda sp, FRAME(sp)
- cfi_remember_state
- cfi_restore ($f0)
- cfi_restore ($f1)
- cfi_restore ($f3)
- cfi_def_cfa_offset (0)
-
- .align 4
- subq X, AT, RV
- ret $31, (RA), 1
-
- .align 4
- cfi_restore_state
-$x_is_neg:
- /* If we get here, X is so big that bit 63 is set, which made the
- conversion come out negative. Fix it up lest we not even get
- a good estimate. */
- ldah AT, 0x5f80 /* 2**64 as float. */
- stt $f2, 24(sp)
- cfi_rel_offset ($f2, 24)
- _ITOFS AT, $f2, 16
-
- addt $f0, $f2, $f0
- divt/c $f0, $f1, $f0
-
- /* Ok, we've now the divide issued. Continue with other checks. */
- .align 4
- ldt $f1, 8(sp)
- unop
- ldt $f2, 24(sp)
- blt Y, $y_is_neg
- cfi_restore ($f1)
- cfi_restore ($f2)
- cfi_remember_state /* for y_is_neg */
-
- .align 4
-$x_big:
- /* If we get here, X is large enough that we don't expect exact
- results, and neither X nor Y got mis-translated for the fp
- division. Our task is to take the fp result, figure out how
- far it's off from the correct result and compute a fixup. */
- stq t0, 16(sp)
- stq t1, 24(sp)
- stq t2, 32(sp)
- stq t3, 40(sp)
- cfi_rel_offset (t0, 16)
- cfi_rel_offset (t1, 24)
- cfi_rel_offset (t2, 32)
- cfi_rel_offset (t3, 40)
-
-#define Q t0 /* quotient */
-#define R RV /* remainder */
-#define SY t1 /* scaled Y */
-#define S t2 /* scalar */
-#define QY t3 /* Q*Y */
-
- cvttq/c $f0, $f0
- _FTOIT $f0, Q, 8
- mulq Q, Y, QY
-
- .align 4
- stq t4, 8(sp)
- excb
- ldt $f0, 0(sp)
- mt_fpcr $f3
- cfi_rel_offset (t4, 8)
- cfi_restore ($f0)
-
- subq QY, X, R
- mov Y, SY
- mov 1, S
- bgt R, $q_high
-
-$q_high_ret:
- subq X, QY, R
- mov Y, SY
- mov 1, S
- bgt R, $q_low
-
-$q_low_ret:
- ldq t4, 8(sp)
- ldq t0, 16(sp)
- ldq t1, 24(sp)
- ldq t2, 32(sp)
-
- ldq t3, 40(sp)
- ldt $f3, 48(sp)
- lda sp, FRAME(sp)
- cfi_remember_state
- cfi_restore (t0)
- cfi_restore (t1)
- cfi_restore (t2)
- cfi_restore (t3)
- cfi_restore (t4)
- cfi_restore ($f3)
- cfi_def_cfa_offset (0)
- ret $31, (RA), 1
-
- .align 4
- cfi_restore_state
- /* The quotient that we computed was too large. We need to reduce
- it by S such that Y*S >= R. Obviously the closer we get to the
- correct value the better, but overshooting high is ok, as we'll
- fix that up later. */
-0:
- addq SY, SY, SY
- addq S, S, S
-$q_high:
- cmpult SY, R, AT
- bne AT, 0b
-
- subq Q, S, Q
- unop
- subq QY, SY, QY
- br $q_high_ret
-
- .align 4
- /* The quotient that we computed was too small. Divide Y by the
- current remainder (R) and add that to the existing quotient (Q).
- The expectation, of course, is that R is much smaller than X. */
- /* Begin with a shift-up loop. Compute S such that Y*S >= R. We
- already have a copy of Y in SY and the value 1 in S. */
-0:
- addq SY, SY, SY
- addq S, S, S
-$q_low:
- cmpult SY, R, AT
- bne AT, 0b
-
- /* Shift-down and subtract loop. Each iteration compares our scaled
- Y (SY) with the remainder (R); if SY <= R then X is divisible by
- Y's scalar (S) so add it to the quotient (Q). */
-2: addq Q, S, t3
- srl S, 1, S
- cmpule SY, R, AT
- subq R, SY, t4
-
- cmovne AT, t3, Q
- cmovne AT, t4, R
- srl SY, 1, SY
- bne S, 2b
-
- br $q_low_ret
-
- .align 4
- cfi_restore_state
-$y_is_neg:
- /* If we get here, Y is so big that bit 63 is set. The results
- from the divide will be completely wrong. Fortunately, the
- quotient must be either 0 or 1, so the remainder must be X
- or X-Y, so just compute it directly. */
- cmpule Y, X, AT
- subq X, Y, RV
- ldt $f0, 0(sp)
- cmoveq AT, X, RV
-
- lda sp, FRAME(sp)
- cfi_restore ($f0)
- cfi_def_cfa_offset (0)
- ret $31, (RA), 1
-
- .align 4
- cfi_def_cfa_offset (FRAME)
-$powerof2:
- subq Y, 1, AT
- beq Y, DIVBYZERO
- and X, AT, RV
- lda sp, FRAME(sp)
- cfi_def_cfa_offset (0)
- ret $31, (RA), 1
-
- cfi_endproc
- .size __remqu, .-__remqu
-
- DO_DIVBYZERO
diff --git a/sysdeps/alpha/rshift.s b/sysdeps/alpha/rshift.s
deleted file mode 100644
index 7c230f1933..0000000000
--- a/sysdeps/alpha/rshift.s
+++ /dev/null
@@ -1,107 +0,0 @@
- # Alpha 21064 __mpn_rshift --
-
- # Copyright (C) 1994, 1995 Free Software Foundation, Inc.
-
- # This file is part of the GNU MP Library.
-
- # The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- # MA 02111-1307, USA.
-
-
- # INPUT PARAMETERS
- # res_ptr r16
- # s1_ptr r17
- # size r18
- # cnt r19
-
- # This code runs at 4.8 cycles/limb on the 21064. With infinite unrolling,
- # it would take 4 cycles/limb. It should be possible to get down to 3
- # cycles/limb since both ldq and stq can be paired with the other used
- # instructions. But there are many restrictions in the 21064 pipeline that
- # makes it hard, if not impossible, to get down to 3 cycles/limb:
-
- # 1. ldq has a 3 cycle delay, srl and sll have a 2 cycle delay.
- # 2. Only aligned instruction pairs can be paired.
- # 3. The store buffer or silo might not be able to deal with the bandwidth.
-
- .set noreorder
- .set noat
-.text
- .align 3
- .globl __mpn_rshift
- .ent __mpn_rshift
-__mpn_rshift:
- .frame $30,0,$26,0
-
- ldq $4,0($17) # load first limb
- addq $17,8,$17
- subq $31,$19,$7
- subq $18,1,$18
- and $18,4-1,$20 # number of limbs in first loop
- sll $4,$7,$0 # compute function result
-
- beq $20,.L0
- subq $18,$20,$18
-
- .align 3
-.Loop0:
- ldq $3,0($17)
- addq $16,8,$16
- addq $17,8,$17
- subq $20,1,$20
- srl $4,$19,$5
- sll $3,$7,$6
- bis $3,$3,$4
- bis $5,$6,$8
- stq $8,-8($16)
- bne $20,.Loop0
-
-.L0: beq $18,.Lend
-
- .align 3
-.Loop: ldq $3,0($17)
- addq $16,32,$16
- subq $18,4,$18
- srl $4,$19,$5
- sll $3,$7,$6
-
- ldq $4,8($17)
- srl $3,$19,$1
- bis $5,$6,$8
- stq $8,-32($16)
- sll $4,$7,$2
-
- ldq $3,16($17)
- srl $4,$19,$5
- bis $1,$2,$8
- stq $8,-24($16)
- sll $3,$7,$6
-
- ldq $4,24($17)
- srl $3,$19,$1
- bis $5,$6,$8
- stq $8,-16($16)
- sll $4,$7,$2
-
- addq $17,32,$17
- bis $1,$2,$8
- stq $8,-8($16)
-
- bgt $18,.Loop
-
-.Lend: srl $4,$19,$8
- stq $8,0($16)
- ret $31,($26),1
- .end __mpn_rshift
diff --git a/sysdeps/alpha/setjmp.S b/sysdeps/alpha/setjmp.S
deleted file mode 100644
index bc5da0f5bc..0000000000
--- a/sysdeps/alpha/setjmp.S
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright (C) 1992,1994,1996,1997,2002,2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __ASSEMBLY__
-
-#include <sysdep.h>
-#include <jmpbuf-offsets.h>
-
- .ent __sigsetjmp
- .global __sigsetjmp
-__sigsetjmp:
- ldgp gp, 0(pv)
-
-$sigsetjmp_local:
-#ifndef PIC
-#define FRAME 16
- subq sp, FRAME, sp
- .frame sp, FRAME, ra, 0
- stq ra, 0(sp)
- .mask 0x04000000, -FRAME
-#else
-#define FRAME 0
- .frame sp, FRAME, ra, 0
-#endif
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- stq s0, JB_S0*8(a0)
- stq s1, JB_S1*8(a0)
- stq s2, JB_S2*8(a0)
- stq s3, JB_S3*8(a0)
- stq s4, JB_S4*8(a0)
- stq s5, JB_S5*8(a0)
-#ifdef PTR_MANGLE
- PTR_MANGLE(t1, ra, t0)
- stq t1, JB_PC*8(a0)
-#else
- stq ra, JB_PC*8(a0)
-#endif
-#if defined(PTR_MANGLE) && FRAME == 0
- PTR_MANGLE2(t1, sp, t0)
-#else
- addq sp, FRAME, t1
-# ifdef PTR_MANGLE
- PTR_MANGLE2(t1, t1, t0)
-# endif
-#endif
- stq t1, JB_SP*8(a0)
-#ifdef PTR_MANGLE
- PTR_MANGLE2(t1, fp, t0)
- stq t1, JB_FP*8(a0)
-#else
- stq fp, JB_FP*8(a0)
-#endif
- stt $f2, JB_F2*8(a0)
- stt $f3, JB_F3*8(a0)
- stt $f4, JB_F4*8(a0)
- stt $f5, JB_F5*8(a0)
- stt $f6, JB_F6*8(a0)
- stt $f7, JB_F7*8(a0)
- stt $f8, JB_F8*8(a0)
- stt $f9, JB_F9*8(a0)
-
-#ifndef PIC
- /* Call to C to (potentially) save our signal mask. */
- jsr ra, __sigjmp_save
- ldq ra, 0(sp)
- addq sp, 16, sp
- ret
-#elif defined NOT_IN_libc && defined IS_IN_rtld
- /* In ld.so we never save the signal mask. */
- mov 0, v0
- ret
-#else
- /* Tailcall to save the signal mask. */
- br $31, __sigjmp_save !samegp
-#endif
-
-END(__sigsetjmp)
-
-/* Put these traditional entry points in the same file so that we can
- elide much of the nonsense in trying to jmp to the real function. */
-
-ENTRY(_setjmp)
- ldgp gp, 0(pv)
- .prologue 1
- mov 0, a1
- br $sigsetjmp_local
-END(_setjmp)
-libc_hidden_def (_setjmp)
-
-ENTRY(setjmp)
- ldgp gp, 0(pv)
- .prologue 1
- mov 1, a1
- br $sigsetjmp_local
-END(setjmp)
-
-weak_extern(_setjmp)
-weak_extern(setjmp)
diff --git a/sysdeps/alpha/soft-fp/Makefile b/sysdeps/alpha/soft-fp/Makefile
deleted file mode 100644
index 5410a78984..0000000000
--- a/sysdeps/alpha/soft-fp/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# Software floating-point emulation.
-
-ifeq ($(subdir),soft-fp)
-sysdep_routines += ots_add ots_sub ots_mul ots_div ots_cmp ots_cmpe \
- ots_cvtxq ots_cvtqx ots_cvtqux ots_cvttx ots_cvtxt ots_nintxq
-endif
-
-ifeq ($(subdir),math)
-CPPFLAGS += -I../soft-fp
-endif
diff --git a/sysdeps/alpha/soft-fp/Versions b/sysdeps/alpha/soft-fp/Versions
deleted file mode 100644
index 3901287115..0000000000
--- a/sysdeps/alpha/soft-fp/Versions
+++ /dev/null
@@ -1,8 +0,0 @@
-libc {
- GLIBC_2.3.4 {
- _OtsAddX; _OtsSubX; _OtsMulX; _OtsDivX;
- _OtsEqlX; _OtsNeqX; _OtsLssX; _OtsLeqX; _OtsGtrX; _OtsGeqX;
- _OtsCvtQX; _OtsCvtQUX; _OtsCvtXQ; _OtsNintXQ;
- _OtsConvertFloatTX; _OtsConvertFloatXT;
- }
-}
diff --git a/sysdeps/alpha/soft-fp/e_sqrtl.c b/sysdeps/alpha/soft-fp/e_sqrtl.c
deleted file mode 100644
index 717d170127..0000000000
--- a/sysdeps/alpha/soft-fp/e_sqrtl.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* long double square root in software floating-point emulation.
- Copyright (C) 1997, 1999, 2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <stdlib.h>
-#include <soft-fp.h>
-#include <quad.h>
-
-long double
-__ieee754_sqrtl (const long double a)
-{
- FP_DECL_EX;
- FP_DECL_Q(A); FP_DECL_Q(C);
- long double c;
- long _round = 4; /* dynamic rounding */
-
- FP_INIT_ROUNDMODE;
- FP_UNPACK_Q(A, a);
- FP_SQRT_Q(C, A);
- FP_PACK_Q(c, C);
- FP_HANDLE_EXCEPTIONS;
- return c;
-}
diff --git a/sysdeps/alpha/soft-fp/local-soft-fp.h b/sysdeps/alpha/soft-fp/local-soft-fp.h
deleted file mode 100644
index e93a2ad064..0000000000
--- a/sysdeps/alpha/soft-fp/local-soft-fp.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#include <stdlib.h>
-#include <soft-fp.h>
-#include <quad.h>
-
-/* Helpers for the Ots functions which receive long double arguments
- in two integer registers, and return values in $16+$17. */
-
-#undef _FP_UNPACK_RAW_2
-#define _FP_UNPACK_RAW_2(fs, X, val) \
- do { \
- union _FP_UNION_##fs _flo; \
- _flo.longs.a = val##l; \
- _flo.longs.b = val##h; \
- X##_f0 = _flo.bits.frac0; \
- X##_f1 = _flo.bits.frac1; \
- X##_e = _flo.bits.exp; \
- X##_s = _flo.bits.sign; \
- } while (0)
-
-#undef _FP_PACK_RAW_2
-#define _FP_PACK_RAW_2(fs, val, X) \
- do { \
- union _FP_UNION_##fs _flo; \
- _flo.bits.frac0 = X##_f0; \
- _flo.bits.frac1 = X##_f1; \
- _flo.bits.exp = X##_e; \
- _flo.bits.sign = X##_s; \
- val##l = _flo.longs.a; \
- val##h = _flo.longs.b; \
- } while (0)
-
-#define FP_DECL_RETURN(X) \
- long X##l, X##h
-
-/* ??? We don't have a real way to tell the compiler that we're wanting
- to return values in $16+$17. Instead use a volatile asm to make sure
- that the values are live, and just hope that nothing kills the values
- in between here and the end of the function. */
-#define FP_RETURN(X) \
-do { \
- register long r16 __asm__("16") = X##l; \
- register long r17 __asm__("17") = X##h; \
- asm volatile ("" : : "r"(r16), "r"(r17)); \
-} while (0)
diff --git a/sysdeps/alpha/soft-fp/ots_add.c b/sysdeps/alpha/soft-fp/ots_add.c
deleted file mode 100644
index acf66f316b..0000000000
--- a/sysdeps/alpha/soft-fp/ots_add.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Software floating-point emulation: addition.
- Copyright (C) 1997,1999,2004,2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "local-soft-fp.h"
-
-void
-_OtsAddX(long al, long ah, long bl, long bh, long _round)
-{
- FP_DECL_EX;
- FP_DECL_Q(A); FP_DECL_Q(B); FP_DECL_Q(C);
- FP_DECL_RETURN(c);
-
- FP_INIT_ROUNDMODE;
- FP_UNPACK_SEMIRAW_Q(A, a);
- FP_UNPACK_SEMIRAW_Q(B, b);
- FP_ADD_Q(C, A, B);
- FP_PACK_SEMIRAW_Q(c, C);
- FP_HANDLE_EXCEPTIONS;
-
- FP_RETURN(c);
-}
diff --git a/sysdeps/alpha/soft-fp/ots_cmp.c b/sysdeps/alpha/soft-fp/ots_cmp.c
deleted file mode 100644
index c356b4848e..0000000000
--- a/sysdeps/alpha/soft-fp/ots_cmp.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Software floating-point emulation: comparison.
- Copyright (C) 1997,1999,2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "local-soft-fp.h"
-
-static long
-internal_equality (long al, long ah, long bl, long bh, long neq)
-{
- FP_DECL_EX;
- FP_DECL_Q(A); FP_DECL_Q(B);
- long r;
-
- FP_UNPACK_RAW_Q(A, a);
- FP_UNPACK_RAW_Q(B, b);
-
- if ((A_e == _FP_EXPMAX_Q && !_FP_FRAC_ZEROP_2(A))
- || (B_e == _FP_EXPMAX_Q && !_FP_FRAC_ZEROP_2(B)))
- {
- /* EQ and NE signal invalid operation only if either operand is SNaN. */
- if (FP_ISSIGNAN_Q(A) || FP_ISSIGNAN_Q(B))
- {
- FP_SET_EXCEPTION(FP_EX_INVALID);
- FP_HANDLE_EXCEPTIONS;
- }
- return -1;
- }
-
- r = (A_e == B_e
- && _FP_FRAC_EQ_2 (A, B)
- && (A_s == B_s || (!A_e && _FP_FRAC_ZEROP_2(A))));
- r ^= neq;
-
- return r;
-}
-
-long
-_OtsEqlX (long al, long ah, long bl, long bh)
-{
- return internal_equality (al, ah, bl, bh, 0);
-}
-
-long
-_OtsNeqX (long al, long ah, long bl, long bh)
-{
- return internal_equality (al, ah, bl, bh, 1);
-}
diff --git a/sysdeps/alpha/soft-fp/ots_cmpe.c b/sysdeps/alpha/soft-fp/ots_cmpe.c
deleted file mode 100644
index 001eb75a9b..0000000000
--- a/sysdeps/alpha/soft-fp/ots_cmpe.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Software floating-point emulation: comparison.
- Copyright (C) 1997,1999,2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "local-soft-fp.h"
-
-static long
-internal_compare (long al, long ah, long bl, long bh)
-{
- FP_DECL_EX;
- FP_DECL_Q(A); FP_DECL_Q(B);
- long r;
-
- FP_UNPACK_RAW_Q(A, a);
- FP_UNPACK_RAW_Q(B, b);
- FP_CMP_Q (r, A, B, 2);
-
- /* Relative comparisons signal invalid operation if either operand is NaN. */
- if (r == 2)
- {
- FP_SET_EXCEPTION(FP_EX_INVALID);
- FP_HANDLE_EXCEPTIONS;
- }
-
- return r;
-}
-
-long
-_OtsLssX (long al, long ah, long bl, long bh)
-{
- long r = internal_compare (al, ah, bl, bh);
- if (r == 2)
- return -1;
- else
- return r < 0;
-}
-
-long
-_OtsLeqX (long al, long ah, long bl, long bh)
-{
- long r = internal_compare (al, ah, bl, bh);
- if (r == 2)
- return -1;
- else
- return r <= 0;
-}
-
-long
-_OtsGtrX (long al, long ah, long bl, long bh)
-{
- long r = internal_compare (al, ah, bl, bh);
- if (r == 2)
- return -1;
- else
- return r > 0;
-}
-
-long
-_OtsGeqX (long al, long ah, long bl, long bh)
-{
- long r = internal_compare (al, ah, bl, bh);
- if (r == 2)
- return -1;
- else
- return r >= 0;
-}
diff --git a/sysdeps/alpha/soft-fp/ots_cvtqux.c b/sysdeps/alpha/soft-fp/ots_cvtqux.c
deleted file mode 100644
index 82c50806c4..0000000000
--- a/sysdeps/alpha/soft-fp/ots_cvtqux.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Software floating-point emulation: unsigned integer to float conversion.
- Copyright (C) 1997,1999,2004,2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "local-soft-fp.h"
-
-/* Should never actually be used, since we've more bits of precision
- than the incomming long, but needed for linkage. */
-#undef FP_ROUNDMODE
-#define FP_ROUNDMODE FP_RND_ZERO
-
-void
-_OtsCvtQUX (unsigned long a)
-{
- FP_DECL_EX;
- FP_DECL_Q(C);
- FP_DECL_RETURN(c);
-
- FP_FROM_INT_Q(C, a, 64, unsigned long);
- FP_PACK_RAW_Q(c, C);
-
- FP_RETURN(c);
-}
diff --git a/sysdeps/alpha/soft-fp/ots_cvtqx.c b/sysdeps/alpha/soft-fp/ots_cvtqx.c
deleted file mode 100644
index dc80291506..0000000000
--- a/sysdeps/alpha/soft-fp/ots_cvtqx.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Software floating-point emulation: signed integer to float conversion.
- Copyright (C) 1997,1999,2004,2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "local-soft-fp.h"
-
-/* Should never actually be used, since we've more bits of precision
- than the incomming long, but needed for linkage. */
-#undef FP_ROUNDMODE
-#define FP_ROUNDMODE FP_RND_ZERO
-
-void
-_OtsCvtQX (long a)
-{
- FP_DECL_EX;
- FP_DECL_Q(C);
- FP_DECL_RETURN(c);
-
- FP_FROM_INT_Q(C, a, 64, unsigned long);
- FP_PACK_RAW_Q(c, C);
- FP_RETURN(c);
-}
diff --git a/sysdeps/alpha/soft-fp/ots_cvttx.c b/sysdeps/alpha/soft-fp/ots_cvttx.c
deleted file mode 100644
index 2d0bc9bca9..0000000000
--- a/sysdeps/alpha/soft-fp/ots_cvttx.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Software floating-point emulation: floating point extension.
- Copyright (C) 1997,1999,2004,2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "local-soft-fp.h"
-#include "double.h"
-
-/* Should never actually be used, since we're extending, but needed
- for linkage. */
-#undef FP_ROUNDMODE
-#define FP_ROUNDMODE FP_RND_ZERO
-
-void
-_OtsConvertFloatTX(double a)
-{
- FP_DECL_EX;
- FP_DECL_D(A);
- FP_DECL_Q(C);
- FP_DECL_RETURN(c);
-
- FP_UNPACK_RAW_D(A, a);
-#if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q
- FP_EXTEND(Q,D,4,2,C,A);
-#else
- FP_EXTEND(Q,D,2,1,C,A);
-#endif
- FP_PACK_RAW_Q(c, C);
- FP_HANDLE_EXCEPTIONS;
-
- FP_RETURN(c);
-}
diff --git a/sysdeps/alpha/soft-fp/ots_cvtxq.c b/sysdeps/alpha/soft-fp/ots_cvtxq.c
deleted file mode 100644
index 2c9df529d5..0000000000
--- a/sysdeps/alpha/soft-fp/ots_cvtxq.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Software floating-point emulation: float to integer conversion.
- Copyright (C) 1997,1999,2004,2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "local-soft-fp.h"
-
-long
-_OtsCvtXQ (long al, long ah, long _round)
-{
- FP_DECL_EX;
- FP_DECL_Q(A);
- unsigned long r;
- long s;
-
- /* If bit 3 is set, then integer overflow detection is requested. */
- s = _round & 8 ? 1 : -1;
- _round = _round & 3;
-
- FP_INIT_ROUNDMODE;
- FP_UNPACK_RAW_Q(A, a);
- FP_TO_INT_Q(r, A, 64, s);
-
- if (s > 0 && (_fex &= FP_EX_INVALID))
- FP_HANDLE_EXCEPTIONS;
-
- return r;
-}
diff --git a/sysdeps/alpha/soft-fp/ots_cvtxt.c b/sysdeps/alpha/soft-fp/ots_cvtxt.c
deleted file mode 100644
index 6221a2365c..0000000000
--- a/sysdeps/alpha/soft-fp/ots_cvtxt.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Software floating-point emulation: floating point truncation.
- Copyright (C) 1997,1999,2004,2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "local-soft-fp.h"
-#include "double.h"
-
-double
-_OtsConvertFloatXT (long al, long ah, long _round)
-{
- FP_DECL_EX;
- FP_DECL_Q(A);
- FP_DECL_D(R);
- double r;
-
- FP_INIT_ROUNDMODE;
- FP_UNPACK_SEMIRAW_Q(A, a);
-#if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q
- FP_TRUNC(D,Q,2,4,R,A);
-#else
- FP_TRUNC(D,Q,1,2,R,A);
-#endif
- FP_PACK_SEMIRAW_D(r, R);
- FP_HANDLE_EXCEPTIONS;
-
- return r;
-}
diff --git a/sysdeps/alpha/soft-fp/ots_div.c b/sysdeps/alpha/soft-fp/ots_div.c
deleted file mode 100644
index eb07489284..0000000000
--- a/sysdeps/alpha/soft-fp/ots_div.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Software floating-point emulation: division.
- Copyright (C) 1997,1999,2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "local-soft-fp.h"
-
-void
-_OtsDivX(long al, long ah, long bl, long bh, long _round)
-{
- FP_DECL_EX;
- FP_DECL_Q(A); FP_DECL_Q(B); FP_DECL_Q(C);
- FP_DECL_RETURN(c);
-
- FP_INIT_ROUNDMODE;
- FP_UNPACK_Q(A, a);
- FP_UNPACK_Q(B, b);
- FP_DIV_Q(C, A, B);
- FP_PACK_Q(c, C);
- FP_HANDLE_EXCEPTIONS;
-
- FP_RETURN(c);
-}
diff --git a/sysdeps/alpha/soft-fp/ots_mul.c b/sysdeps/alpha/soft-fp/ots_mul.c
deleted file mode 100644
index f88ee33fbc..0000000000
--- a/sysdeps/alpha/soft-fp/ots_mul.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Software floating-point emulation: multiplication.
- Copyright (C) 1997,1999,2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "local-soft-fp.h"
-
-void
-_OtsMulX(long al, long ah, long bl, long bh, long _round)
-{
- FP_DECL_EX;
- FP_DECL_Q(A); FP_DECL_Q(B); FP_DECL_Q(C);
- FP_DECL_RETURN(c);
-
- FP_INIT_ROUNDMODE;
- FP_UNPACK_Q(A, a);
- FP_UNPACK_Q(B, b);
- FP_MUL_Q(C, A, B);
- FP_PACK_Q(c, C);
- FP_HANDLE_EXCEPTIONS;
-
- FP_RETURN(c);
-}
diff --git a/sysdeps/alpha/soft-fp/ots_nintxq.c b/sysdeps/alpha/soft-fp/ots_nintxq.c
deleted file mode 100644
index a718372af7..0000000000
--- a/sysdeps/alpha/soft-fp/ots_nintxq.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Software floating-point emulation: convert to fortran nearest.
- Copyright (C) 1997,1999,2004,2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "local-soft-fp.h"
-
-long
-_OtsNintXQ (long al, long ah, long _round)
-{
- FP_DECL_EX;
- FP_DECL_Q(A); FP_DECL_Q(B); FP_DECL_Q(C);
- unsigned long r;
- long s;
-
- /* If bit 3 is set, then integer overflow detection is requested. */
- s = _round & 8 ? 1 : -1;
- _round = _round & 3;
-
- FP_INIT_ROUNDMODE;
- FP_UNPACK_SEMIRAW_Q(A, a);
-
- /* Build 0.5 * sign(A) */
- B_e = _FP_EXPBIAS_Q;
- __FP_FRAC_SET_2 (B, 0, 0);
- B_s = A_s;
-
- FP_ADD_Q(C, A, B);
- _FP_FRAC_SRL_2(C, _FP_WORKBITS);
- _FP_FRAC_HIGH_RAW_Q(C) &= ~(_FP_W_TYPE)_FP_IMPLBIT_Q;
- FP_TO_INT_Q(r, C, 64, s);
- if (s > 0 && (_fex &= FP_EX_INVALID))
- FP_HANDLE_EXCEPTIONS;
-
- return r;
-}
diff --git a/sysdeps/alpha/soft-fp/ots_sub.c b/sysdeps/alpha/soft-fp/ots_sub.c
deleted file mode 100644
index 5147266a04..0000000000
--- a/sysdeps/alpha/soft-fp/ots_sub.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Software floating-point emulation: subtraction.
- Copyright (C) 1997,1999,2004,2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include "local-soft-fp.h"
-
-void
-_OtsSubX(long al, long ah, long bl, long bh, long _round)
-{
- FP_DECL_EX;
- FP_DECL_Q(A); FP_DECL_Q(B); FP_DECL_Q(C);
- FP_DECL_RETURN(c);
-
- FP_INIT_ROUNDMODE;
- FP_UNPACK_SEMIRAW_Q(A, a);
- FP_UNPACK_SEMIRAW_Q(B, b);
- FP_SUB_Q(C, A, B);
- FP_PACK_SEMIRAW_Q(c, C);
- FP_HANDLE_EXCEPTIONS;
-
- FP_RETURN(c);
-}
diff --git a/sysdeps/alpha/soft-fp/sfp-machine.h b/sysdeps/alpha/soft-fp/sfp-machine.h
deleted file mode 100644
index 2bad4e9dc6..0000000000
--- a/sysdeps/alpha/soft-fp/sfp-machine.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* Machine-dependent software floating-point definitions.
- Alpha userland IEEE 128-bit version.
- Copyright (C) 2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com),
- Jakub Jelinek (jj@ultra.linux.cz) and
- David S. Miller (davem@redhat.com).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fenv_libc.h>
-
-#define _FP_W_TYPE_SIZE 64
-#define _FP_W_TYPE unsigned long
-#define _FP_WS_TYPE signed long
-#define _FP_I_TYPE long
-
-#define _FP_MUL_MEAT_S(R,X,Y) \
- _FP_MUL_MEAT_1_imm(_FP_WFRACBITS_S,R,X,Y)
-#define _FP_MUL_MEAT_D(R,X,Y) \
- _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
-#define _FP_MUL_MEAT_Q(R,X,Y) \
- _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
-
-#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm)
-#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_1_udiv_norm(D,R,X,Y)
-#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_2_udiv(Q,R,X,Y)
-
-#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1)
-#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1)
-#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1
-#define _FP_NANSIGN_S 0
-#define _FP_NANSIGN_D 0
-#define _FP_NANSIGN_Q 0
-
-#define _FP_KEEPNANFRACP 1
-
-/* Alpha Architecture Handbook, 4.7.10.4 sez that we should prefer any
- type of NaN in Fb, then Fa. */
-#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
- do { \
- R##_s = Y##_s; \
- _FP_FRAC_COPY_##wc(R,X); \
- R##_c = FP_CLS_NAN; \
- } while (0)
-
-/* Rounding mode settings. */
-#define FP_RND_NEAREST FE_TONEAREST
-#define FP_RND_ZERO FE_TOWARDZERO
-#define FP_RND_PINF FE_UPWARD
-#define FP_RND_MINF FE_DOWNWARD
-
-/* Obtain the current rounding mode. It's given as an argument to
- all the Ots functions, with 4 meaning "dynamic". */
-#define FP_ROUNDMODE _round
-
-/* Exception flags. */
-#define FP_EX_INVALID FE_INVALID
-#define FP_EX_OVERFLOW FE_OVERFLOW
-#define FP_EX_UNDERFLOW FE_UNDERFLOW
-#define FP_EX_DIVZERO FE_DIVBYZERO
-#define FP_EX_INEXACT FE_INEXACT
-
-#define FP_INIT_ROUNDMODE \
-do { \
- if (__builtin_expect (_round == 4, 0)) \
- { \
- unsigned long t; \
- __asm__ __volatile__("excb; mf_fpcr %0" : "=f"(t)); \
- _round = (t >> FPCR_ROUND_SHIFT) & 3; \
- } \
-} while (0)
-
-#define FP_HANDLE_EXCEPTIONS \
-do { \
- if (__builtin_expect (_fex, 0)) \
- { \
- unsigned long t = __ieee_get_fp_control (); \
- __ieee_set_fp_control (t | _fex); \
- } \
-} while (0)
diff --git a/sysdeps/alpha/stpcpy.S b/sysdeps/alpha/stpcpy.S
deleted file mode 100644
index b73e85f217..0000000000
--- a/sysdeps/alpha/stpcpy.S
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Copyright (C) 1996, 2002, 2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1996.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Copy a null-terminated string from SRC to DST. Return a pointer
- to the null-terminator in the source. */
-
-#include <sysdep.h>
-
- .text
-
-ENTRY(__stpcpy)
- ldgp gp, 0(pv)
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- jsr t9, __stxcpy # do the work of the copy
-
- and t8, 0xf0, t2 # binary search for byte offset of the
- and t8, 0xcc, t1 # last byte written.
- and t8, 0xaa, t0
- andnot a0, 7, a0
- cmovne t2, 4, t2
- cmovne t1, 2, t1
- cmovne t0, 1, t0
- addq a0, t2, v0
- addq t0, t1, t0
- addq v0, t0, v0
-
- ret
-
- END(__stpcpy)
-
-weak_alias (__stpcpy, stpcpy)
-libc_hidden_def (__stpcpy)
-libc_hidden_builtin_def (stpcpy)
diff --git a/sysdeps/alpha/stpncpy.S b/sysdeps/alpha/stpncpy.S
deleted file mode 100644
index e877cf176a..0000000000
--- a/sysdeps/alpha/stpncpy.S
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Copyright (C) 1996, 2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@tamu.edu)
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Copy no more than COUNT bytes of the null-terminated string from
- SRC to DST. If SRC does not cover all of COUNT, the balance is
- zeroed. Return the address of the terminating null in DEST, if
- any, else DEST + COUNT. */
-
-#include <sysdep.h>
-
- .set noat
- .set noreorder
-
- .text
-
-ENTRY(__stpncpy)
- ldgp gp, 0(pv)
-#ifdef PROF
- lda AT, _mcount
- jsr AT, (AT), _mcount
-#endif
- .prologue 1
-
- beq a2, $zerocount
- jsr t9, __stxncpy # do the work of the copy
-
- and t8, 0xf0, t3 # binary search for byte offset of the
- and t8, 0xcc, t2 # last byte written.
- and t8, 0xaa, t1
- andnot a0, 7, v0
- cmovne t3, 4, t3
- cmovne t2, 2, t2
- cmovne t1, 1, t1
- addq v0, t3, v0
- addq t1, t2, t1
- addq v0, t1, v0
-
- bne a2, $multiword # do we have full words left?
-
- .align 3
- zapnot t0, t8, t4 # e0 : was last byte a null?
- subq t8, 1, t2 # .. e1 :
- addq v0, 1, t5 # e0 :
- subq t10, 1, t3 # .. e1 :
- or t2, t8, t2 # e0 : clear the bits between the last
- or t3, t10, t3 # .. e1 : written byte and the last byte in
- andnot t3, t2, t3 # e0 : COUNT
- cmovne t4, t5, v0 # .. e1 : if last written wasnt null, inc v0
- zap t0, t3, t0 # e0 :
- stq_u t0, 0(a0) # e1 :
- ret # .. e1 :
-
- .align 3
-$multiword:
- subq t8, 1, t7 # e0 : clear the final bits in the prev
- or t7, t8, t7 # e1 : word
- zapnot t0, t7, t0 # e0 :
- subq a2, 1, a2 # .. e1 :
- stq_u t0, 0(a0) # e0 :
- addq a0, 8, a0 # .. e1 :
-
- beq a2, 1f # e1 :
- blbc a2, 0f # e1 :
-
- stq_u zero, 0(a0) # e0 : zero one word
- subq a2, 1, a2 # .. e1 :
- addq a0, 8, a0 # e0 :
- beq a2, 1f # .. e1 :
-
-0: stq_u zero, 0(a0) # e0 : zero two words
- subq a2, 2, a2 # .. e1 :
- stq_u zero, 8(a0) # e0 :
- addq a0, 16, a0 # .. e1 :
- bne a2, 0b # e1 :
- unop
-
-1: ldq_u t0, 0(a0) # e0 : clear the leading bits in the final
- subq t10, 1, t7 # .. e1 : word
- or t7, t10, t7 # e0 :
- zap t0, t7, t0 # e1 (stall)
- stq_u t0, 0(a0) # e0 :
- ret # .. e1 :
-
-$zerocount:
- mov a0, v0
- ret
-
- END(__stpncpy)
-
-libc_hidden_def (__stpncpy)
-weak_alias (__stpncpy, stpncpy)
diff --git a/sysdeps/alpha/strcat.S b/sysdeps/alpha/strcat.S
deleted file mode 100644
index d8ef8f1546..0000000000
--- a/sysdeps/alpha/strcat.S
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright (C) 1996, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1996.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Append a null-terminated string from SRC to DST. */
-
-#include <sysdep.h>
-
- .text
-
-ENTRY(strcat)
- ldgp gp, 0(pv)
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- mov a0, v0 # set up return value
-
- /* Find the end of the string. */
-
- ldq_u t0, 0(a0) # load first quadword (a0 may be misaligned)
- lda t1, -1(zero)
- insqh t1, a0, t1
- andnot a0, 7, a0
- or t1, t0, t0
- cmpbge zero, t0, t1 # t1 <- bitmask: bit i == 1 <==> i-th byte == 0
- bne t1, $found
-
-$loop: ldq t0, 8(a0)
- addq a0, 8, a0 # addr += 8
- cmpbge zero, t0, t1
- beq t1, $loop
-
-$found: negq t1, t2 # clear all but least set bit
- and t1, t2, t1
-
- and t1, 0xf0, t2 # binary search for that set bit
- and t1, 0xcc, t3
- and t1, 0xaa, t4
- cmovne t2, 4, t2
- cmovne t3, 2, t3
- cmovne t4, 1, t4
- addq t2, t3, t2
- addq a0, t4, a0
- addq a0, t2, a0
-
- /* Now do the append. */
-
- mov ra, t9
- jmp $31, __stxcpy
-
- END(strcat)
-libc_hidden_builtin_def (strcat)
diff --git a/sysdeps/alpha/strchr.S b/sysdeps/alpha/strchr.S
deleted file mode 100644
index e0b17415ac..0000000000
--- a/sysdeps/alpha/strchr.S
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright (C) 1996, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@tamu.edu)
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Return the address of a given character within a null-terminated
- string, or null if it is not found.
-
- This is generally scheduled for the EV5 (got to look out for my own
- interests :-), but with EV4 needs in mind. There *should* be no more
- stalls for the EV4 than there are for the EV5.
-*/
-
-#include <sysdep.h>
-
- .set noreorder
- .set noat
-
-ENTRY(strchr)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- zapnot a1, 1, a1 # e0 : zero extend the search character
- ldq_u t0, 0(a0) # .. e1 : load first quadword
- sll a1, 8, t5 # e0 : replicate the search character
- andnot a0, 7, v0 # .. e1 : align our loop pointer
- or t5, a1, a1 # e0 :
- lda t4, -1 # .. e1 : build garbage mask
- sll a1, 16, t5 # e0 :
- cmpbge zero, t0, t2 # .. e1 : bits set iff byte == zero
- mskqh t4, a0, t4 # e0 :
- or t5, a1, a1 # .. e1 :
- sll a1, 32, t5 # e0 :
- cmpbge zero, t4, t4 # .. e1 : bits set iff byte is garbage
- or t5, a1, a1 # e0 :
- xor t0, a1, t1 # .. e1 : make bytes == c zero
- cmpbge zero, t1, t3 # e0 : bits set iff byte == c
- or t2, t3, t0 # e1 : bits set iff char match or zero match
- andnot t0, t4, t0 # e0 : clear garbage bits
- bne t0, $found # .. e1 (zdb)
-
-$loop: ldq t0, 8(v0) # e0 :
- addq v0, 8, v0 # .. e1 :
- nop # e0 :
- xor t0, a1, t1 # .. e1 (ev5 data stall)
- cmpbge zero, t0, t2 # e0 : bits set iff byte == 0
- cmpbge zero, t1, t3 # .. e1 : bits set iff byte == c
- or t2, t3, t0 # e0 :
- beq t0, $loop # .. e1 (zdb)
-
-$found: negq t0, t1 # e0 : clear all but least set bit
- and t0, t1, t0 # e1 (stall)
-
- and t0, t3, t1 # e0 : bit set iff byte was the char
- beq t1, $retnull # .. e1 (zdb)
-
- and t0, 0xf0, t2 # e0 : binary search for that set bit
- and t0, 0xcc, t3 # .. e1 :
- and t0, 0xaa, t4 # e0 :
- cmovne t2, 4, t2 # .. e1 :
- cmovne t3, 2, t3 # e0 :
- cmovne t4, 1, t4 # .. e1 :
- addq t2, t3, t2 # e0 :
- addq v0, t4, v0 # .. e1 :
- addq v0, t2, v0 # e0 :
- ret # .. e1 :
-
-$retnull:
- mov zero, v0 # e0 :
- ret # .. e1 :
-
- END(strchr)
-
-weak_alias (strchr, index)
-libc_hidden_builtin_def (strchr)
diff --git a/sysdeps/alpha/strcmp.S b/sysdeps/alpha/strcmp.S
deleted file mode 100644
index 9196be2ce3..0000000000
--- a/sysdeps/alpha/strcmp.S
+++ /dev/null
@@ -1,195 +0,0 @@
-/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Bytewise compare two null-terminated strings. */
-
-#include <sysdep.h>
-
- .set noat
- .set noreorder
-
- .text
-
-ENTRY(strcmp)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jmp AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- ldq_u t0, 0(a0) # e0 : give cache time to catch up
- xor a0, a1, t2 # .. e1 : are s1 and s2 co-aligned?
- ldq_u t1, 0(a1) # e0 :
- and t2, 7, t2 # .. e1 :
- lda t3, -1 # e0 :
- bne t2, $unaligned # .. e1 :
-
- /* On entry to this basic block:
- t0 == the first destination word for masking back in
- t1 == the first source word.
- t3 == -1. */
-
-$aligned:
- mskqh t3, a0, t3 # e0 :
- nop # .. e1 :
- ornot t1, t3, t1 # e0 :
- ornot t0, t3, t0 # .. e1 :
- cmpbge zero, t1, t7 # e0 : bits set iff null found
- bne t7, $eos # e1 (zdb)
-
- /* Aligned compare main loop.
- On entry to this basic block:
- t0 == an s1 word.
- t1 == an s2 word not containing a null. */
-
-$a_loop:
- xor t0, t1, t2 # e0 :
- bne t2, $wordcmp # .. e1 (zdb)
- ldq_u t1, 8(a1) # e0 :
- ldq_u t0, 8(a0) # .. e1 :
- addq a1, 8, a1 # e0 :
- addq a0, 8, a0 # .. e1 :
- cmpbge zero, t1, t7 # e0 :
- beq t7, $a_loop # .. e1 (zdb)
- br $eos # e1 :
-
- /* The two strings are not co-aligned. Align s1 and cope. */
-
-$unaligned:
- and a0, 7, t4 # e0 : find s1 misalignment
- and a1, 7, t5 # .. e1 : find s2 misalignment
- subq a1, t4, a1 # e0 :
-
- /* If s2 misalignment is larger than s2 misalignment, we need
- extra startup checks to avoid SEGV. */
-
- cmplt t4, t5, t8 # .. e1 :
- beq t8, $u_head # e1 :
-
- mskqh t3, t5, t3 # e0 :
- ornot t1, t3, t3 # e0 :
- cmpbge zero, t3, t7 # e1 : is there a zero?
- beq t7, $u_head # e1 :
-
- /* We've found a zero in the first partial word of s2. Align
- our current s1 and s2 words and compare what we've got. */
-
- extql t1, t5, t1 # e0 :
- extql t0, a0, t0 # e0 :
- cmpbge zero, t1, t7 # .. e1 : find that zero again
- br $eos # e1 : and finish up
-
- .align 3
-$u_head:
- /* We know just enough now to be able to assemble the first
- full word of s2. We can still find a zero at the end of it.
-
- On entry to this basic block:
- t0 == first word of s1
- t1 == first partial word of s2. */
-
- ldq_u t2, 8(a1) # e0 : load second partial s2 word
- lda t3, -1 # .. e1 : create leading garbage mask
- extql t1, a1, t1 # e0 : create first s2 word
- mskqh t3, a0, t3 # e0 :
- extqh t2, a1, t4 # e0 :
- ornot t0, t3, t0 # .. e1 : kill s1 garbage
- or t1, t4, t1 # e0 : s2 word now complete
- cmpbge zero, t0, t7 # .. e1 : find zero in first s1 word
- ornot t1, t3, t1 # e0 : kill s2 garbage
- lda t3, -1 # .. e1 :
- mskql t3, a1, t3 # e0 : mask for s2[1] bits we have seen
- bne t7, $eos # .. e1 :
- xor t0, t1, t4 # e0 : compare aligned words
- bne t4, $wordcmp # .. e1 (zdb)
- or t2, t3, t3 # e0 :
- cmpbge zero, t3, t7 # e1 :
- bne t7, $u_final # e1 :
-
- /* Unaligned copy main loop. In order to avoid reading too much,
- the loop is structured to detect zeros in aligned words from s2.
- This has, unfortunately, effectively pulled half of a loop
- iteration out into the head and half into the tail, but it does
- prevent nastiness from accumulating in the very thing we want
- to run as fast as possible.
-
- On entry to this basic block:
- t2 == the unshifted low-bits from the next s2 word. */
-
- .align 3
-$u_loop:
- extql t2, a1, t3 # e0 :
- ldq_u t2, 16(a1) # .. e1 : load next s2 high bits
- ldq_u t0, 8(a0) # e0 : load next s1 word
- addq a1, 8, a1 # .. e1 :
- addq a0, 8, a0 # e0 :
- nop # .. e1 :
- extqh t2, a1, t1 # e0 :
- cmpbge zero, t0, t7 # .. e1 : find zero in current s1 word
- or t1, t3, t1 # e0 :
- bne t7, $eos # .. e1 :
- xor t0, t1, t4 # e0 : compare the words
- bne t4, $wordcmp # .. e1 (zdb)
- cmpbge zero, t2, t4 # e0 : find zero in next low bits
- beq t4, $u_loop # .. e1 (zdb)
-
- /* We've found a zero in the low bits of the last s2 word. Get
- the next s1 word and align them. */
-$u_final:
- ldq_u t0, 8(a0) # e1 :
- extql t2, a1, t1 # .. e0 :
- cmpbge zero, t1, t7 # e0 :
-
- /* We've found a zero somewhere in a word we just read.
- On entry to this basic block:
- t0 == s1 word
- t1 == s2 word
- t7 == cmpbge mask containing the zero. */
-
- .align 3
-$eos:
- negq t7, t6 # e0 : create bytemask of valid data
- and t6, t7, t8 # e1 :
- subq t8, 1, t6 # e0 :
- or t6, t8, t7 # e1 :
- zapnot t0, t7, t0 # e0 : kill the garbage
- zapnot t1, t7, t1 # .. e1 :
- xor t0, t1, v0 # e0 : and compare
- beq v0, $done # .. e1 :
-
- /* Here we have two differing co-aligned words in t0 & t1.
- Bytewise compare them and return (t0 > t1 ? 1 : -1). */
-$wordcmp:
- cmpbge t0, t1, t2 # e0 : comparison yields bit mask of ge
- cmpbge t1, t0, t3 # .. e1 :
- xor t2, t3, t0 # e0 : bits set iff t0/t1 bytes differ
- negq t0, t1 # e1 : clear all but least bit
- and t0, t1, t0 # e0 :
- lda v0, -1 # .. e1 :
- and t0, t2, t1 # e0 : was bit set in t0 > t1?
- cmovne t1, 1, v0 # .. e1 (zdb)
-
-$done:
- ret # e1 :
-
- END(strcmp)
-libc_hidden_builtin_def (strcmp)
diff --git a/sysdeps/alpha/strlen.S b/sysdeps/alpha/strlen.S
deleted file mode 100644
index 2560b973c7..0000000000
--- a/sysdeps/alpha/strlen.S
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Finds length of a 0-terminated string. Optimized for the Alpha
- architecture:
-
- - memory accessed as aligned quadwords only
- - uses cmpbge to compare 8 bytes in parallel
- - does binary search to find 0 byte in last quadword (HAKMEM
- needed 12 instructions to do this instead of the 8 instructions
- that the binary search needs).
-*/
-
-#include <sysdep.h>
-
- .set noreorder
- .set noat
-
-ENTRY(strlen)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- ldq_u t0, 0(a0) # load first quadword (a0 may be misaligned)
- lda t1, -1(zero)
- insqh t1, a0, t1
- andnot a0, 7, v0
- or t1, t0, t0
- nop # dual issue the next two on ev5
- cmpbge zero, t0, t1 # t1 <- bitmask: bit i == 1 <==> i-th byte == 0
- bne t1, $found
-
-$loop: ldq t0, 8(v0)
- addq v0, 8, v0 # addr += 8
- cmpbge zero, t0, t1
- beq t1, $loop
-
-$found: negq t1, t2 # clear all but least set bit
- and t1, t2, t1
-
- and t1, 0xf0, t2 # binary search for that set bit
- and t1, 0xcc, t3
- and t1, 0xaa, t4
- cmovne t2, 4, t2
- cmovne t3, 2, t3
- cmovne t4, 1, t4
- addq t2, t3, t2
- addq v0, t4, v0
- addq v0, t2, v0
- nop # dual issue next two on ev4 and ev5
-
- subq v0, a0, v0
- ret
-
- END(strlen)
-libc_hidden_builtin_def (strlen)
diff --git a/sysdeps/alpha/strncat.S b/sysdeps/alpha/strncat.S
deleted file mode 100644
index ddf686f578..0000000000
--- a/sysdeps/alpha/strncat.S
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1996.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Append no more than COUNT characters from the null-terminated string SRC
- to the null-terminated string DST. Always null-terminate the new DST. */
-
-#include <sysdep.h>
-
- .text
-
-ENTRY(strncat)
- ldgp gp, 0(pv)
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- mov a0, v0 # set up return value
- beq a2, $zerocount
-
- /* Find the end of the string. */
-
- ldq_u t0, 0(a0) # load first quadword (a0 may be misaligned)
- lda t1, -1(zero)
- insqh t1, a0, t1
- andnot a0, 7, a0
- or t1, t0, t0
- cmpbge zero, t0, t1 # t1 <- bitmask: bit i == 1 <==> i-th byte == 0
- bne t1, $found
-
-$loop: ldq t0, 8(a0)
- addq a0, 8, a0 # addr += 8
- cmpbge zero, t0, t1
- beq t1, $loop
-
-$found: negq t1, t2 # clear all but least set bit
- and t1, t2, t1
-
- and t1, 0xf0, t2 # binary search for that set bit
- and t1, 0xcc, t3
- and t1, 0xaa, t4
- cmovne t2, 4, t2
- cmovne t3, 2, t3
- cmovne t4, 1, t4
- addq t2, t3, t2
- addq a0, t4, a0
- addq a0, t2, a0
-
- /* Now do the append. */
-
- jsr t9, __stxncpy
-
- /* Worry about the null termination. */
-
- zapnot t0, t8, t1 # was last byte a null?
- bne t1, 0f
- ret
-
-0: and t10, 0x80, t1
- bne t1, 1f
-
- /* Here there are bytes left in the current word. Clear one. */
- addq t10, t10, t10 # end-of-count bit <<= 1
- zap t0, t10, t0
- stq_u t0, 0(a0)
- ret
-
-1: /* Here we must read the next DST word and clear the first byte. */
- ldq_u t0, 8(a0)
- zap t0, 1, t0
- stq_u t0, 8(a0)
-
-$zerocount:
- ret
-
- END(strncat)
diff --git a/sysdeps/alpha/strncmp.S b/sysdeps/alpha/strncmp.S
deleted file mode 100644
index ff199eb743..0000000000
--- a/sysdeps/alpha/strncmp.S
+++ /dev/null
@@ -1,247 +0,0 @@
-/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Bytewise compare two null-terminated strings of length no longer than N. */
-
-#include <sysdep.h>
-
- .set noat
- .set noreorder
-
- .text
-
-ENTRY(strncmp)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- xor a0, a1, t2 # e0 : are s1 and s2 co-aligned?
- beq a2, $zerolength # .. e1 :
- ldq_u t0, 0(a0) # e0 : give cache time to catch up
- ldq_u t1, 0(a1) # .. e1 :
- and t2, 7, t2 # e0 :
- and a0, 7, t4 # .. e1 : find s1 misalignment
- lda t3, -1 # e0 :
- addq a2, t4, a2 # .. e1 : bias count by s1 misalignment
- and a2, 7, t10 # e1 : ofs of last byte in last word
- srl a2, 3, a2 # .. e0 : remaining full words in count
- and a1, 7, t5 # e0 : find s2 misalignment
- bne t2, $unaligned # .. e1 :
-
- /* On entry to this basic block:
- t0 == the first word of s1.
- t1 == the first word of s2.
- t3 == -1. */
-
-$aligned:
- mskqh t3, a1, t3 # e0 : mask off leading garbage
- nop # .. e1 :
- ornot t1, t3, t1 # e0 :
- ornot t0, t3, t0 # .. e1 :
- cmpbge zero, t1, t7 # e0 : bits set iff null found
- beq a2, $eoc # .. e1 : check end of count
- unop # e0 :
- bne t7, $eos # .. e1 :
- unop # e0 :
- beq t10, $ant_loop # .. e1 :
-
- /* Aligned compare main loop.
- On entry to this basic block:
- t0 == an s1 word.
- t1 == an s2 word not containing a null. */
-
-$a_loop:
- xor t0, t1, t2 # e0 :
- bne t2, $wordcmp # .. e1 (zdb)
- ldq_u t1, 8(a1) # e0 :
- ldq_u t0, 8(a0) # .. e1 :
- subq a2, 1, a2 # e0 :
- addq a1, 8, a1 # .. e1 :
- addq a0, 8, a0 # e0 :
- beq a2, $eoc # .. e1 :
- cmpbge zero, t1, t7 # e0 :
- beq t7, $a_loop # .. e1 :
- unop # e0 :
- br $eos # .. e1 :
-
- /* Alternate aligned compare loop, for when there's no trailing
- bytes on the count. We have to avoid reading too much data. */
-$ant_loop:
- xor t0, t1, t2 # e0 :
- bne t2, $wordcmp # .. e1 (zdb)
- subq a2, 1, a2 # e0 :
- beq a2, $zerolength # .. e1 :
- ldq_u t1, 8(a1) # e0 :
- ldq_u t0, 8(a0) # .. e1 :
- addq a1, 8, a1 # e0 :
- addq a0, 8, a0 # .. e1 :
- cmpbge zero, t1, t7 # e0 :
- beq t7, $ant_loop # .. e1 :
- unop # e0 :
- br $eos # .. e1 :
-
- /* The two strings are not co-aligned. Align s1 and cope. */
-$unaligned:
- subq a1, t4, a1 # e0 :
- unop # :
-
- /* If s2 misalignment is larger than s2 misalignment, we need
- extra startup checks to avoid SEGV. */
-
- cmplt t4, t5, t8 # .. e1 :
- beq t8, $u_head # e1 :
-
- mskqh t3, t5, t3 # e0 :
- ornot t1, t3, t3 # e0 :
- cmpbge zero, t3, t7 # e1 : is there a zero?
- beq t7, $u_head # e1 :
-
- /* We've found a zero in the first partial word of s2. Align
- our current s1 and s2 words and compare what we've got. */
-
- extql t1, t5, t1 # e0 :
- lda t3, -1 # .. e1 :
- insql t1, a0, t1 # e0 :
- mskqh t3, a0, t3 # e0 :
- ornot t1, t3, t1 # e0 :
- ornot t0, t3, t0 # .. e1 :
- cmpbge zero, t1, t7 # e0 : find that zero again
- beq a2, $eoc # .. e1 : and finish up
- br $eos # e1 :
-
- .align 3
-$u_head:
- /* We know just enough now to be able to assemble the first
- full word of s2. We can still find a zero at the end of it.
-
- On entry to this basic block:
- t0 == first word of s1
- t1 == first partial word of s2. */
-
- ldq_u t2, 8(a1) # e0 : load second partial s2 word
- lda t3, -1 # .. e1 : create leading garbage mask
- extql t1, a1, t1 # e0 : create first s2 word
- mskqh t3, a0, t3 # e0 :
- extqh t2, a1, t4 # e0 :
- ornot t0, t3, t0 # .. e1 : kill s1 garbage
- or t1, t4, t1 # e0 : s2 word now complete
- ornot t1, t3, t1 # e1 : kill s2 garbage
- cmpbge zero, t0, t7 # e0 : find zero in first s1 word
- beq a2, $eoc # .. e1 :
- lda t3, -1 # e0 :
- bne t7, $eos # .. e1 :
- subq a2, 1, a2 # e0 :
- xor t0, t1, t4 # .. e1 : compare aligned words
- mskql t3, a1, t3 # e0 : mask out s2[1] bits we have seen
- bne t4, $wordcmp # .. e1 :
- or t2, t3, t3 # e0 :
- cmpbge zero, t3, t7 # e1 : find zero in high bits of s2[1]
- bne t7, $u_final # e1 :
-
- /* Unaligned copy main loop. In order to avoid reading too much,
- the loop is structured to detect zeros in aligned words from s2.
- This has, unfortunately, effectively pulled half of a loop
- iteration out into the head and half into the tail, but it does
- prevent nastiness from accumulating in the very thing we want
- to run as fast as possible.
-
- On entry to this basic block:
- t2 == the unshifted low-bits from the next s2 word. */
-
- .align 3
-$u_loop:
- extql t2, a1, t3 # e0 :
- ldq_u t2, 16(a1) # .. e1 : load next s2 high bits
- ldq_u t0, 8(a0) # e0 : load next s1 word
- addq a1, 8, a1 # .. e1 :
- addq a0, 8, a0 # e0 :
- nop # .. e1 :
- extqh t2, a1, t1 # e0 :
- cmpbge zero, t0, t7 # .. e1 : find zero in current s1 word
- or t1, t3, t1 # e0 :
- beq a2, $eoc # .. e1 : check for end of count
- subq a2, 1, a2 # e0 :
- bne t7, $eos # .. e1 :
- xor t0, t1, t4 # e0 : compare the words
- bne t4, $wordcmp # .. e1 (zdb)
- cmpbge zero, t2, t4 # e0 : find zero in next low bits
- beq t4, $u_loop # .. e1 (zdb)
-
- /* We've found a zero in the low bits of the last s2 word. Get
- the next s1 word and align them. */
-$u_final:
- ldq_u t0, 8(a0) # e1 :
- extql t2, a1, t1 # .. e0 :
- cmpbge zero, t1, t7 # e0 :
- bne a2, $eos # .. e1 :
-
- /* We've hit end of count. Zero everything after the count
- and compare whats left. */
-
- .align 3
-$eoc:
- mskql t0, t10, t0
- mskql t1, t10, t1
- unop
- cmpbge zero, t1, t7
-
- /* We've found a zero somewhere in a word we just read.
- On entry to this basic block:
- t0 == s1 word
- t1 == s2 word
- t7 == cmpbge mask containing the zero. */
-
-$eos:
- negq t7, t6 # e0 : create bytemask of valid data
- and t6, t7, t8 # e1 :
- subq t8, 1, t6 # e0 :
- or t6, t8, t7 # e1 :
- zapnot t0, t7, t0 # e0 : kill the garbage
- zapnot t1, t7, t1 # .. e1 :
- xor t0, t1, v0 # e0 : and compare
- beq v0, $done # .. e1 :
-
- /* Here we have two differing co-aligned words in t0 & t1.
- Bytewise compare them and return (t0 > t1 ? 1 : -1). */
- .align 3
-$wordcmp:
- cmpbge t0, t1, t2 # e0 : comparison yields bit mask of ge
- cmpbge t1, t0, t3 # .. e1 :
- xor t2, t3, t0 # e0 : bits set iff t0/t1 bytes differ
- negq t0, t1 # e1 : clear all but least bit
- and t0, t1, t0 # e0 :
- lda v0, -1 # .. e1 :
- and t0, t2, t1 # e0 : was bit set in t0 > t1?
- cmovne t1, 1, v0 # .. e1 (zdb)
-
-$done:
- ret # e1 :
-
- .align 3
-$zerolength:
- clr v0
- ret
-
- END(strncmp)
-libc_hidden_builtin_def (strncmp)
diff --git a/sysdeps/alpha/strncpy.S b/sysdeps/alpha/strncpy.S
deleted file mode 100644
index 5d3e72e280..0000000000
--- a/sysdeps/alpha/strncpy.S
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Copy no more than COUNT bytes of the null-terminated string from
- SRC to DST. If SRC does not cover all of COUNT, the balance is
- zeroed. */
-
-#include <sysdep.h>
-
- .set noat
- .set noreorder
-
- .text
-
-ENTRY(strncpy)
- ldgp gp, 0(pv)
-#ifdef PROF
- lda AT, _mcount
- jsr AT, (AT), _mcount
-#endif
- .prologue 1
-
- mov a0, v0 # set return value now
- beq a2, $zerocount
- jsr t9, __stxncpy # do the work of the copy
-
- bne a2, $multiword # do we have full words left?
-
- .align 3
- subq t8, 1, t2 # e0 : guess not
- subq t10, 1, t3 # .. e1 :
- or t2, t8, t2 # e0 : clear the bits between the last
- or t3, t10, t3 # .. e1 : written byte and the last byte in
- andnot t3, t2, t3 # e0 : COUNT
- zap t0, t3, t0 # e1 :
- stq_u t0, 0(a0) # e0 :
- ret # .. e1 :
-
-$multiword:
- subq t8, 1, t7 # e0 : clear the final bits in the prev
- or t7, t8, t7 # e1 : word
- zapnot t0, t7, t0 # e0 :
- subq a2, 1, a2 # .. e1 :
- stq_u t0, 0(a0) # e0 :
- addq a0, 8, a0 # .. e1 :
-
- beq a2, 1f # e1 :
- blbc a2, 0f # e1 :
-
- stq_u zero, 0(a0) # e0 : zero one word
- subq a2, 1, a2 # .. e1 :
- addq a0, 8, a0 # e0 :
- beq a2, 1f # .. e1 :
-
-0: stq_u zero, 0(a0) # e0 : zero two words
- subq a2, 2, a2 # .. e1 :
- stq_u zero, 8(a0) # e0 :
- addq a0, 16, a0 # .. e1 :
- bne a2, 0b # e1 :
- unop
-
-1: ldq_u t0, 0(a0) # e0 : clear the leading bits in the final
- subq t10, 1, t7 # .. e1 : word
- or t7, t10, t7 # e0 :
- zap t0, t7, t0 # e1 (stall)
- stq_u t0, 0(a0) # e0 :
-
-$zerocount:
- ret # .. e1 :
-
- END(strncpy)
-libc_hidden_builtin_def (strncpy)
diff --git a/sysdeps/alpha/strrchr.S b/sysdeps/alpha/strrchr.S
deleted file mode 100644
index 248181f702..0000000000
--- a/sysdeps/alpha/strrchr.S
+++ /dev/null
@@ -1,111 +0,0 @@
-/* Copyright (C) 1996, 1997, 2003 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Return the address of the last occurrence of a given character
- within a null-terminated string, or null if it is not found.
-
- This is generally scheduled for the EV5 (got to look out for my own
- interests :-), but with EV4 needs in mind. There are, in fact, fewer
- stalls on the EV4 than there are on the EV5.
-*/
-
-#include <sysdep.h>
-
- .set noreorder
- .set noat
-
-ENTRY(strrchr)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- and a1, 0xff, a1 # e0 : zero extend our test character
- mov zero, t6 # .. e1 : t6 is last match aligned addr
- sll a1, 8, t5 # e0 : replicate our test character
- mov zero, t7 # .. e1 : t7 is last match byte compare mask
- or t5, a1, a1 # e0 :
- ldq_u t0, 0(a0) # .. e1 : load first quadword
- sll a1, 16, t5 # e0 :
- andnot a0, 7, v0 # .. e1 : align source addr
- or t5, a1, a1 # e0 :
- lda t4, -1 # .. e1 : build garbage mask
- sll a1, 32, t5 # e0 :
- cmpbge zero, t0, t1 # .. e1 : bits set iff byte == zero
- mskqh t4, a0, t4 # e0 :
- or t5, a1, a1 # .. e1 : character replication complete
- xor t0, a1, t2 # e0 : make bytes == c zero
- cmpbge zero, t4, t4 # .. e1 : bits set iff byte is garbage
- cmpbge zero, t2, t3 # e0 : bits set iff byte == c
- andnot t1, t4, t1 # .. e1 : clear garbage from null test
- andnot t3, t4, t3 # e0 : clear garbage from char test
- bne t1, $eos # .. e1 : did we already hit the terminator?
-
- /* Character search main loop */
-$loop:
- ldq t0, 8(v0) # e0 : load next quadword
- cmovne t3, v0, t6 # .. e1 : save previous comparisons match
- cmovne t3, t3, t7 # e0 :
- addq v0, 8, v0 # .. e1 :
- xor t0, a1, t2 # e0 :
- cmpbge zero, t0, t1 # .. e1 : bits set iff byte == zero
- cmpbge zero, t2, t3 # e0 : bits set iff byte == c
- beq t1, $loop # .. e1 : if we havnt seen a null, loop
-
- /* Mask out character matches after terminator */
-$eos:
- negq t1, t4 # e0 : isolate first null byte match
- and t1, t4, t4 # e1 :
- subq t4, 1, t5 # e0 : build a mask of the bytes upto...
- or t4, t5, t4 # e1 : ... and including the null
-
- and t3, t4, t3 # e0 : mask out char matches after null
- cmovne t3, t3, t7 # .. e1 : save it, if match found
- cmovne t3, v0, t6 # e0 :
-
- /* Locate the address of the last matched character */
-
- /* Retain the early exit for the ev4 -- the ev5 mispredict penalty
- is 5 cycles -- the same as just falling through. */
- beq t7, $retnull # .. e1 :
-
- and t7, 0xf0, t2 # e0 : binary search for the high bit set
- cmovne t2, t2, t7 # .. e1 (zdb)
- cmovne t2, 4, t2 # e0 :
- and t7, 0xcc, t1 # .. e1 :
- cmovne t1, t1, t7 # e0 :
- cmovne t1, 2, t1 # .. e1 :
- and t7, 0xaa, t0 # e0 :
- cmovne t0, 1, t0 # .. e1 (zdb)
- addq t2, t1, t1 # e0 :
- addq t6, t0, v0 # .. e1 : add our aligned base ptr to the mix
- addq v0, t1, v0 # e0 :
- ret # .. e1 :
-
-$retnull:
- mov zero, v0 # e0 :
- ret # .. e1 :
-
- END(strrchr)
-
-weak_alias (strrchr, rindex)
-libc_hidden_builtin_def (strrchr)
diff --git a/sysdeps/alpha/stxcpy.S b/sysdeps/alpha/stxcpy.S
deleted file mode 100644
index 5ba2d43e54..0000000000
--- a/sysdeps/alpha/stxcpy.S
+++ /dev/null
@@ -1,307 +0,0 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Copy a null-terminated string from SRC to DST.
-
- This is an internal routine used by strcpy, stpcpy, and strcat.
- As such, it uses special linkage conventions to make implementation
- of these public functions more efficient.
-
- On input:
- t9 = return address
- a0 = DST
- a1 = SRC
-
- On output:
- t8 = bitmask (with one bit set) indicating the last byte written
- a0 = unaligned address of the last *word* written
-
- Furthermore, v0, a3-a5, t11, and t12 are untouched.
-*/
-
-/* This is generally scheduled for the EV5, but should still be pretty
- good for the EV4 too. */
-
-#include <sysdep.h>
-
- .set noat
- .set noreorder
-
- .text
-
-/* There is a problem with either gdb (as of 4.16) or gas (as of 2.7) that
- doesn't like putting the entry point for a procedure somewhere in the
- middle of the procedure descriptor. Work around this by putting the
- aligned copy in its own procedure descriptor */
-
- .ent stxcpy_aligned
- .align 3
-stxcpy_aligned:
- .frame sp, 0, t9
- .prologue 0
-
- /* On entry to this basic block:
- t0 == the first destination word for masking back in
- t1 == the first source word. */
-
- /* Create the 1st output word and detect 0's in the 1st input word. */
- lda t2, -1 # e1 : build a mask against false zero
- mskqh t2, a1, t2 # e0 : detection in the src word
- mskqh t1, a1, t3 # e0 :
- ornot t1, t2, t2 # .. e1 :
- mskql t0, a1, t0 # e0 : assemble the first output word
- cmpbge zero, t2, t7 # .. e1 : bits set iff null found
- or t0, t3, t1 # e0 :
- bne t7, $a_eos # .. e1 :
-
- /* On entry to this basic block:
- t0 == the first destination word for masking back in
- t1 == a source word not containing a null. */
-
-$a_loop:
- stq_u t1, 0(a0) # e0 :
- addq a0, 8, a0 # .. e1 :
- ldq_u t1, 0(a1) # e0 :
- addq a1, 8, a1 # .. e1 :
- cmpbge zero, t1, t7 # e0 (stall)
- beq t7, $a_loop # .. e1 (zdb)
-
- /* Take care of the final (partial) word store.
- On entry to this basic block we have:
- t1 == the source word containing the null
- t7 == the cmpbge mask that found it. */
-$a_eos:
- negq t7, t6 # e0 : find low bit set
- and t7, t6, t8 # e1 (stall)
-
- /* For the sake of the cache, don't read a destination word
- if we're not going to need it. */
- and t8, 0x80, t6 # e0 :
- bne t6, 1f # .. e1 (zdb)
-
- /* We're doing a partial word store and so need to combine
- our source and original destination words. */
- ldq_u t0, 0(a0) # e0 :
- subq t8, 1, t6 # .. e1 :
- zapnot t1, t6, t1 # e0 : clear src bytes >= null
- or t8, t6, t7 # .. e1 :
- zap t0, t7, t0 # e0 : clear dst bytes <= null
- or t0, t1, t1 # e1 :
-
-1: stq_u t1, 0(a0) # e0 :
- ret (t9) # .. e1 :
-
- .end stxcpy_aligned
-
- .align 3
- .ent __stxcpy
- .globl __stxcpy
-__stxcpy:
- .frame sp, 0, t9
- .prologue 0
-
- /* Are source and destination co-aligned? */
- xor a0, a1, t0 # e0 :
- unop # :
- and t0, 7, t0 # e0 :
- bne t0, $unaligned # .. e1 :
-
- /* We are co-aligned; take care of a partial first word. */
- ldq_u t1, 0(a1) # e0 : load first src word
- and a0, 7, t0 # .. e1 : take care not to load a word ...
- addq a1, 8, a1 # e0 :
- beq t0, stxcpy_aligned # .. e1 : ... if we wont need it
- ldq_u t0, 0(a0) # e0 :
- br stxcpy_aligned # .. e1 :
-
-
-/* The source and destination are not co-aligned. Align the destination
- and cope. We have to be very careful about not reading too much and
- causing a SEGV. */
-
- .align 3
-$u_head:
- /* We know just enough now to be able to assemble the first
- full source word. We can still find a zero at the end of it
- that prevents us from outputting the whole thing.
-
- On entry to this basic block:
- t0 == the first dest word, for masking back in, if needed else 0
- t1 == the low bits of the first source word
- t6 == bytemask that is -1 in dest word bytes */
-
- ldq_u t2, 8(a1) # e0 :
- addq a1, 8, a1 # .. e1 :
-
- extql t1, a1, t1 # e0 :
- extqh t2, a1, t4 # e0 :
- mskql t0, a0, t0 # e0 :
- or t1, t4, t1 # .. e1 :
- mskqh t1, a0, t1 # e0 :
- or t0, t1, t1 # e1 :
-
- or t1, t6, t6 # e0 :
- cmpbge zero, t6, t7 # .. e1 :
- lda t6, -1 # e0 : for masking just below
- bne t7, $u_final # .. e1 :
-
- mskql t6, a1, t6 # e0 : mask out the bits we have
- or t6, t2, t2 # e1 : already extracted before
- cmpbge zero, t2, t7 # e0 : testing eos
- bne t7, $u_late_head_exit # .. e1 (zdb)
-
- /* Finally, we've got all the stupid leading edge cases taken care
- of and we can set up to enter the main loop. */
-
- stq_u t1, 0(a0) # e0 : store first output word
- addq a0, 8, a0 # .. e1 :
- extql t2, a1, t0 # e0 : position ho-bits of lo word
- ldq_u t2, 8(a1) # .. e1 : read next high-order source word
- addq a1, 8, a1 # e0 :
- cmpbge zero, t2, t7 # .. e1 :
- nop # e0 :
- bne t7, $u_eos # .. e1 :
-
- /* Unaligned copy main loop. In order to avoid reading too much,
- the loop is structured to detect zeros in aligned source words.
- This has, unfortunately, effectively pulled half of a loop
- iteration out into the head and half into the tail, but it does
- prevent nastiness from accumulating in the very thing we want
- to run as fast as possible.
-
- On entry to this basic block:
- t0 == the shifted high-order bits from the previous source word
- t2 == the unshifted current source word
-
- We further know that t2 does not contain a null terminator. */
-
- .align 3
-$u_loop:
- extqh t2, a1, t1 # e0 : extract high bits for current word
- addq a1, 8, a1 # .. e1 :
- extql t2, a1, t3 # e0 : extract low bits for next time
- addq a0, 8, a0 # .. e1 :
- or t0, t1, t1 # e0 : current dst word now complete
- ldq_u t2, 0(a1) # .. e1 : load high word for next time
- stq_u t1, -8(a0) # e0 : save the current word
- mov t3, t0 # .. e1 :
- cmpbge zero, t2, t7 # e0 : test new word for eos
- beq t7, $u_loop # .. e1 :
-
- /* We've found a zero somewhere in the source word we just read.
- If it resides in the lower half, we have one (probably partial)
- word to write out, and if it resides in the upper half, we
- have one full and one partial word left to write out.
-
- On entry to this basic block:
- t0 == the shifted high-order bits from the previous source word
- t2 == the unshifted current source word. */
-$u_eos:
- extqh t2, a1, t1 # e0 :
- or t0, t1, t1 # e1 : first (partial) source word complete
-
- cmpbge zero, t1, t7 # e0 : is the null in this first bit?
- bne t7, $u_final # .. e1 (zdb)
-
-$u_late_head_exit:
- stq_u t1, 0(a0) # e0 : the null was in the high-order bits
- addq a0, 8, a0 # .. e1 :
- extql t2, a1, t1 # e0 :
- cmpbge zero, t1, t7 # .. e1 :
-
- /* Take care of a final (probably partial) result word.
- On entry to this basic block:
- t1 == assembled source word
- t7 == cmpbge mask that found the null. */
-$u_final:
- negq t7, t6 # e0 : isolate low bit set
- and t6, t7, t8 # e1 :
-
- and t8, 0x80, t6 # e0 : avoid dest word load if we can
- bne t6, 1f # .. e1 (zdb)
-
- ldq_u t0, 0(a0) # e0 :
- subq t8, 1, t6 # .. e1 :
- or t6, t8, t7 # e0 :
- zapnot t1, t6, t1 # .. e1 : kill source bytes >= null
- zap t0, t7, t0 # e0 : kill dest bytes <= null
- or t0, t1, t1 # e1 :
-
-1: stq_u t1, 0(a0) # e0 :
- ret (t9) # .. e1 :
-
- /* Unaligned copy entry point. */
- .align 3
-$unaligned:
-
- ldq_u t1, 0(a1) # e0 : load first source word
-
- and a0, 7, t4 # .. e1 : find dest misalignment
- and a1, 7, t5 # e0 : find src misalignment
-
- /* Conditionally load the first destination word and a bytemask
- with 0xff indicating that the destination byte is sacrosanct. */
-
- mov zero, t0 # .. e1 :
- mov zero, t6 # e0 :
- beq t4, 1f # .. e1 :
- ldq_u t0, 0(a0) # e0 :
- lda t6, -1 # .. e1 :
- mskql t6, a0, t6 # e0 :
-1:
- subq a1, t4, a1 # .. e1 : sub dest misalignment from src addr
-
- /* If source misalignment is larger than dest misalignment, we need
- extra startup checks to avoid SEGV. */
-
- cmplt t4, t5, t8 # e0 :
- beq t8, $u_head # .. e1 (zdb)
-
- lda t2, -1 # e1 : mask out leading garbage in source
- mskqh t2, t5, t2 # e0 :
- nop # e0 :
- ornot t1, t2, t3 # .. e1 :
- cmpbge zero, t3, t7 # e0 : is there a zero?
- beq t7, $u_head # .. e1 (zdb)
-
- /* At this point we've found a zero in the first partial word of
- the source. We need to isolate the valid source data and mask
- it into the original destination data. (Incidentally, we know
- that we'll need at least one byte of that original dest word.) */
-
- ldq_u t0, 0(a0) # e0 :
-
- negq t7, t6 # .. e1 : build bitmask of bytes <= zero
- and t6, t7, t8 # e0 :
- and a1, 7, t5 # .. e1 :
- subq t8, 1, t6 # e0 :
- or t6, t8, t7 # e1 :
- srl t8, t5, t8 # e0 : adjust final null return value
-
- zapnot t2, t7, t2 # .. e1 : prepare source word; mirror changes
- and t1, t2, t1 # e1 : to source validity mask
- extql t2, a1, t2 # .. e0 :
- extql t1, a1, t1 # e0 :
-
- andnot t0, t2, t0 # .. e1 : zero place for source to reside
- or t0, t1, t1 # e1 : and put it there
- stq_u t1, 0(a0) # .. e0 :
- ret (t9)
-
- .end __stxcpy
diff --git a/sysdeps/alpha/stxncpy.S b/sysdeps/alpha/stxncpy.S
deleted file mode 100644
index 73bcd36e47..0000000000
--- a/sysdeps/alpha/stxncpy.S
+++ /dev/null
@@ -1,363 +0,0 @@
-/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Copy no more than COUNT bytes of the null-terminated string from
- SRC to DST.
-
- This is an internal routine used by strncpy, stpncpy, and strncat.
- As such, it uses special linkage conventions to make implementation
- of these public functions more efficient.
-
- On input:
- t9 = return address
- a0 = DST
- a1 = SRC
- a2 = COUNT
-
- Furthermore, COUNT may not be zero.
-
- On output:
- t0 = last word written
- t8 = bitmask (with one bit set) indicating the last byte written
- t10 = bitmask (with one bit set) indicating the byte position of
- the end of the range specified by COUNT
- a0 = unaligned address of the last *word* written
- a2 = the number of full words left in COUNT
-
- Furthermore, v0, a3-a5, t11, and t12 are untouched.
-*/
-
-
-/* This is generally scheduled for the EV5, but should still be pretty
- good for the EV4 too. */
-
-#include <sysdep.h>
-
- .set noat
- .set noreorder
-
- .text
-
-/* There is a problem with either gdb (as of 4.16) or gas (as of 2.7) that
- doesn't like putting the entry point for a procedure somewhere in the
- middle of the procedure descriptor. Work around this by putting the
- aligned copy in its own procedure descriptor */
-
- .ent stxncpy_aligned
- .align 3
-stxncpy_aligned:
- .frame sp, 0, t9, 0
- .prologue 0
-
- /* On entry to this basic block:
- t0 == the first destination word for masking back in
- t1 == the first source word. */
-
- /* Create the 1st output word and detect 0's in the 1st input word. */
- lda t2, -1 # e1 : build a mask against false zero
- mskqh t2, a1, t2 # e0 : detection in the src word
- mskqh t1, a1, t3 # e0 :
- ornot t1, t2, t2 # .. e1 :
- mskql t0, a1, t0 # e0 : assemble the first output word
- cmpbge zero, t2, t7 # .. e1 : bits set iff null found
- or t0, t3, t0 # e0 :
- beq a2, $a_eoc # .. e1 :
- bne t7, $a_eos # .. e1 :
-
- /* On entry to this basic block:
- t0 == a source word not containing a null. */
-
-$a_loop:
- stq_u t0, 0(a0) # e0 :
- addq a0, 8, a0 # .. e1 :
- ldq_u t0, 0(a1) # e0 :
- addq a1, 8, a1 # .. e1 :
- subq a2, 1, a2 # e0 :
- cmpbge zero, t0, t7 # .. e1 (stall)
- beq a2, $a_eoc # e1 :
- beq t7, $a_loop # e1 :
-
- /* Take care of the final (partial) word store. At this point
- the end-of-count bit is set in t7 iff it applies.
-
- On entry to this basic block we have:
- t0 == the source word containing the null
- t7 == the cmpbge mask that found it. */
-
-$a_eos:
- negq t7, t8 # e0 : find low bit set
- and t7, t8, t8 # e1 (stall)
-
- /* For the sake of the cache, don't read a destination word
- if we're not going to need it. */
- and t8, 0x80, t6 # e0 :
- bne t6, 1f # .. e1 (zdb)
-
- /* We're doing a partial word store and so need to combine
- our source and original destination words. */
- ldq_u t1, 0(a0) # e0 :
- subq t8, 1, t6 # .. e1 :
- or t8, t6, t7 # e0 :
- unop #
- zapnot t0, t7, t0 # e0 : clear src bytes > null
- zap t1, t7, t1 # .. e1 : clear dst bytes <= null
- or t0, t1, t0 # e1 :
-
-1: stq_u t0, 0(a0) # e0 :
- ret (t9) # e1 :
-
- /* Add the end-of-count bit to the eos detection bitmask. */
-$a_eoc:
- or t10, t7, t7
- br $a_eos
-
- .end stxncpy_aligned
-
- .align 3
- .ent __stxncpy
- .globl __stxncpy
-__stxncpy:
- .frame sp, 0, t9, 0
- .prologue 0
-
- /* Are source and destination co-aligned? */
- xor a0, a1, t1 # e0 :
- and a0, 7, t0 # .. e1 : find dest misalignment
- and t1, 7, t1 # e0 :
- addq a2, t0, a2 # .. e1 : bias count by dest misalignment
- subq a2, 1, a2 # e0 :
- and a2, 7, t2 # e1 :
- srl a2, 3, a2 # e0 : a2 = loop counter = (count - 1)/8
- addq zero, 1, t10 # .. e1 :
- sll t10, t2, t10 # e0 : t10 = bitmask of last count byte
- bne t1, $unaligned # .. e1 :
-
- /* We are co-aligned; take care of a partial first word. */
-
- ldq_u t1, 0(a1) # e0 : load first src word
- addq a1, 8, a1 # .. e1 :
-
- beq t0, stxncpy_aligned # avoid loading dest word if not needed
- ldq_u t0, 0(a0) # e0 :
- br stxncpy_aligned # .. e1 :
-
-
-/* The source and destination are not co-aligned. Align the destination
- and cope. We have to be very careful about not reading too much and
- causing a SEGV. */
-
- .align 3
-$u_head:
- /* We know just enough now to be able to assemble the first
- full source word. We can still find a zero at the end of it
- that prevents us from outputting the whole thing.
-
- On entry to this basic block:
- t0 == the first dest word, unmasked
- t1 == the shifted low bits of the first source word
- t6 == bytemask that is -1 in dest word bytes */
-
- ldq_u t2, 8(a1) # e0 : load second src word
- addq a1, 8, a1 # .. e1 :
- mskql t0, a0, t0 # e0 : mask trailing garbage in dst
- extqh t2, a1, t4 # e0 :
- or t1, t4, t1 # e1 : first aligned src word complete
- mskqh t1, a0, t1 # e0 : mask leading garbage in src
- or t0, t1, t0 # e0 : first output word complete
- or t0, t6, t6 # e1 : mask original data for zero test
- cmpbge zero, t6, t7 # e0 :
- beq a2, $u_eocfin # .. e1 :
- lda t6, -1 # e0 :
- bne t7, $u_final # .. e1 :
-
- mskql t6, a1, t6 # e0 : mask out bits already seen
- nop # .. e1 :
- stq_u t0, 0(a0) # e0 : store first output word
- or t6, t2, t2 # .. e1 :
- cmpbge zero, t2, t7 # e0 : find nulls in second partial
- addq a0, 8, a0 # .. e1 :
- subq a2, 1, a2 # e0 :
- bne t7, $u_late_head_exit # .. e1 :
-
- /* Finally, we've got all the stupid leading edge cases taken care
- of and we can set up to enter the main loop. */
-
- extql t2, a1, t1 # e0 : position hi-bits of lo word
- beq a2, $u_eoc # .. e1 :
- ldq_u t2, 8(a1) # e0 : read next high-order source word
- addq a1, 8, a1 # .. e1 :
- extqh t2, a1, t0 # e0 : position lo-bits of hi word
- cmpbge zero, t2, t7 # .. e1 : test new word for eos
- nop # e0 :
- bne t7, $u_eos # .. e1 :
-
- /* Unaligned copy main loop. In order to avoid reading too much,
- the loop is structured to detect zeros in aligned source words.
- This has, unfortunately, effectively pulled half of a loop
- iteration out into the head and half into the tail, but it does
- prevent nastiness from accumulating in the very thing we want
- to run as fast as possible.
-
- On entry to this basic block:
- t0 == the shifted low-order bits from the current source word
- t1 == the shifted high-order bits from the previous source word
- t2 == the unshifted current source word
-
- We further know that t2 does not contain a null terminator. */
-
- .align 3
-$u_loop:
- or t0, t1, t0 # e0 : current dst word now complete
- subq a2, 1, a2 # .. e1 : decrement word count
- stq_u t0, 0(a0) # e0 : save the current word
- addq a0, 8, a0 # .. e1 :
- extql t2, a1, t1 # e0 : extract high bits for next time
- beq a2, $u_eoc # .. e1 :
- ldq_u t2, 8(a1) # e0 : load high word for next time
- addq a1, 8, a1 # .. e1 :
- nop # e0 :
- cmpbge zero, t2, t7 # .. e1 : test new word for eos
- extqh t2, a1, t0 # e0 : extract low bits for current word
- beq t7, $u_loop # .. e1 :
-
- /* We've found a zero somewhere in the source word we just read.
- If it resides in the lower half, we have one (probably partial)
- word to write out, and if it resides in the upper half, we
- have one full and one partial word left to write out.
-
- On entry to this basic block:
- t0 == the shifted low-order bits from the current source word
- t1 == the shifted high-order bits from the previous source word
- t2 == the unshifted current source word. */
-$u_eos:
- or t0, t1, t0 # e0 : first (partial) source word complete
- cmpbge zero, t0, t7 # e0 : is the null in this first bit?
- bne t7, $u_final # .. e1 (zdb)
-
- stq_u t0, 0(a0) # e0 : the null was in the high-order bits
- addq a0, 8, a0 # .. e1 :
- subq a2, 1, a2 # e0 :
-
-$u_late_head_exit:
- extql t2, a1, t0 # e0 :
- cmpbge zero, t0, t7 # e0 :
- or t7, t10, t6 # e1 :
- cmoveq a2, t6, t7 # e0 :
-
- /* Take care of a final (probably partial) result word.
- On entry to this basic block:
- t0 == assembled source word
- t7 == cmpbge mask that found the null. */
-$u_final:
- negq t7, t6 # e0 : isolate low bit set
- and t6, t7, t8 # e1 :
-
- and t8, 0x80, t6 # e0 : avoid dest word load if we can
- bne t6, 1f # .. e1 (zdb)
-
- ldq_u t1, 0(a0) # e0 :
- subq t8, 1, t6 # .. e1 :
- or t6, t8, t7 # e0 :
- zapnot t0, t7, t0 # .. e1 : kill source bytes > null
- zap t1, t7, t1 # e0 : kill dest bytes <= null
- or t0, t1, t0 # e1 :
-
-1: stq_u t0, 0(a0) # e0 :
- ret (t9) # .. e1 :
-
- /* Got to end-of-count before end of string.
- On entry to this basic block:
- t1 == the shifted high-order bits from the previous source word */
-$u_eoc:
- and a1, 7, t6 # e1 :
- sll t10, t6, t6 # e0 :
- and t6, 0xff, t6 # e0 :
- bne t6, 1f # e1 : avoid src word load if we can
-
- ldq_u t2, 8(a1) # e0 : load final src word
- nop # .. e1 :
- extqh t2, a1, t0 # e0 : extract high bits for last word
- or t1, t0, t1 # e1 :
-
-1: cmpbge zero, t1, t7
- mov t1, t0
-
-$u_eocfin: # end-of-count, final word
- or t10, t7, t7
- br $u_final
-
- /* Unaligned copy entry point. */
- .align 3
-$unaligned:
-
- ldq_u t1, 0(a1) # e0 : load first source word
-
- and a0, 7, t4 # .. e1 : find dest misalignment
- and a1, 7, t5 # e0 : find src misalignment
-
- /* Conditionally load the first destination word and a bytemask
- with 0xff indicating that the destination byte is sacrosanct. */
-
- mov zero, t0 # .. e1 :
- mov zero, t6 # e0 :
- beq t4, 1f # .. e1 :
- ldq_u t0, 0(a0) # e0 :
- lda t6, -1 # .. e1 :
- mskql t6, a0, t6 # e0 :
-1:
- subq a1, t4, a1 # .. e1 : sub dest misalignment from src addr
-
- /* If source misalignment is larger than dest misalignment, we need
- extra startup checks to avoid SEGV. */
-
- cmplt t4, t5, t8 # e1 :
- extql t1, a1, t1 # .. e0 : shift src into place
- lda t2, -1 # e0 : for creating masks later
- beq t8, $u_head # e1 :
-
- mskqh t2, t5, t2 # e0 : begin src byte validity mask
- cmpbge zero, t1, t7 # .. e1 : is there a zero?
- extql t2, a1, t2 # e0 :
- or t7, t10, t5 # .. e1 : test for end-of-count too
- cmpbge zero, t2, t3 # e0 :
- cmoveq a2, t5, t7 # .. e1 :
- andnot t7, t3, t7 # e0 :
- beq t7, $u_head # .. e1 (zdb)
-
- /* At this point we've found a zero in the first partial word of
- the source. We need to isolate the valid source data and mask
- it into the original destination data. (Incidentally, we know
- that we'll need at least one byte of that original dest word.) */
-
- ldq_u t0, 0(a0) # e0 :
- negq t7, t6 # .. e1 : build bitmask of bytes <= zero
- mskqh t1, t4, t1 # e0 :
- and t6, t7, t8 # .. e1 :
- subq t8, 1, t6 # e0 :
- or t6, t8, t7 # e1 :
-
- zapnot t2, t7, t2 # e0 : prepare source word; mirror changes
- zapnot t1, t7, t1 # .. e1 : to source validity mask
-
- andnot t0, t2, t0 # e0 : zero place for source to reside
- or t0, t1, t0 # e1 : and put it there
- stq_u t0, 0(a0) # e0 :
- ret (t9) # .. e1 :
-
- .end __stxncpy
diff --git a/sysdeps/alpha/sub_n.s b/sysdeps/alpha/sub_n.s
deleted file mode 100644
index e0a6d5c6bd..0000000000
--- a/sysdeps/alpha/sub_n.s
+++ /dev/null
@@ -1,120 +0,0 @@
- # Alpha __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
- # store difference in a third limb vector.
-
- # Copyright (C) 1995 Free Software Foundation, Inc.
-
- # This file is part of the GNU MP Library.
-
- # The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- # MA 02111-1307, USA.
-
-
- # INPUT PARAMETERS
- # res_ptr $16
- # s1_ptr $17
- # s2_ptr $18
- # size $19
-
- .set noreorder
- .set noat
-.text
- .align 3
- .globl __mpn_sub_n
- .ent __mpn_sub_n
-__mpn_sub_n:
- .frame $30,0,$26,0
-
- ldq $3,0($17)
- ldq $4,0($18)
-
- subq $19,1,$19
- and $19,4-1,$2 # number of limbs in first loop
- bis $31,$31,$0
- beq $2,.L0 # if multiple of 4 limbs, skip first loop
-
- subq $19,$2,$19
-
-.Loop0: subq $2,1,$2
- ldq $5,8($17)
- addq $4,$0,$4
- ldq $6,8($18)
- cmpult $4,$0,$1
- subq $3,$4,$4
- cmpult $3,$4,$0
- stq $4,0($16)
- or $0,$1,$0
-
- addq $17,8,$17
- addq $18,8,$18
- bis $5,$5,$3
- bis $6,$6,$4
- addq $16,8,$16
- bne $2,.Loop0
-
-.L0: beq $19,.Lend
-
- .align 3
-.Loop: subq $19,4,$19
-
- ldq $5,8($17)
- addq $4,$0,$4
- ldq $6,8($18)
- cmpult $4,$0,$1
- subq $3,$4,$4
- cmpult $3,$4,$0
- stq $4,0($16)
- or $0,$1,$0
-
- ldq $3,16($17)
- addq $6,$0,$6
- ldq $4,16($18)
- cmpult $6,$0,$1
- subq $5,$6,$6
- cmpult $5,$6,$0
- stq $6,8($16)
- or $0,$1,$0
-
- ldq $5,24($17)
- addq $4,$0,$4
- ldq $6,24($18)
- cmpult $4,$0,$1
- subq $3,$4,$4
- cmpult $3,$4,$0
- stq $4,16($16)
- or $0,$1,$0
-
- ldq $3,32($17)
- addq $6,$0,$6
- ldq $4,32($18)
- cmpult $6,$0,$1
- subq $5,$6,$6
- cmpult $5,$6,$0
- stq $6,24($16)
- or $0,$1,$0
-
- addq $17,32,$17
- addq $18,32,$18
- addq $16,32,$16
- bne $19,.Loop
-
-.Lend: addq $4,$0,$4
- cmpult $4,$0,$1
- subq $3,$4,$4
- cmpult $3,$4,$0
- stq $4,0($16)
- or $0,$1,$0
- ret $31,($26),1
-
- .end __mpn_sub_n
diff --git a/sysdeps/alpha/submul_1.s b/sysdeps/alpha/submul_1.s
deleted file mode 100644
index 5343f67d81..0000000000
--- a/sysdeps/alpha/submul_1.s
+++ /dev/null
@@ -1,92 +0,0 @@
- # Alpha 21064 __mpn_submul_1 -- Multiply a limb vector with a limb and
- # subtract the result from a second limb vector.
-
- # Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
-
- # This file is part of the GNU MP Library.
-
- # The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- # MA 02111-1307, USA.
-
-
- # INPUT PARAMETERS
- # res_ptr r16
- # s1_ptr r17
- # size r18
- # s2_limb r19
-
- # This code runs at 42 cycles/limb on EV4 and 18 cycles/limb on EV5.
-
- .set noreorder
- .set noat
-.text
- .align 3
- .globl __mpn_submul_1
- .ent __mpn_submul_1 2
-__mpn_submul_1:
- .frame $30,0,$26
-
- ldq $2,0($17) # $2 = s1_limb
- addq $17,8,$17 # s1_ptr++
- subq $18,1,$18 # size--
- mulq $2,$19,$3 # $3 = prod_low
- ldq $5,0($16) # $5 = *res_ptr
- umulh $2,$19,$0 # $0 = prod_high
- beq $18,.Lend1 # jump if size was == 1
- ldq $2,0($17) # $2 = s1_limb
- addq $17,8,$17 # s1_ptr++
- subq $18,1,$18 # size--
- subq $5,$3,$3
- cmpult $5,$3,$4
- stq $3,0($16)
- addq $16,8,$16 # res_ptr++
- beq $18,.Lend2 # jump if size was == 2
-
- .align 3
-.Loop: mulq $2,$19,$3 # $3 = prod_low
- ldq $5,0($16) # $5 = *res_ptr
- addq $4,$0,$0 # cy_limb = cy_limb + 'cy'
- subq $18,1,$18 # size--
- umulh $2,$19,$4 # $4 = cy_limb
- ldq $2,0($17) # $2 = s1_limb
- addq $17,8,$17 # s1_ptr++
- addq $3,$0,$3 # $3 = cy_limb + prod_low
- cmpult $3,$0,$0 # $0 = carry from (cy_limb + prod_low)
- subq $5,$3,$3
- cmpult $5,$3,$5
- stq $3,0($16)
- addq $16,8,$16 # res_ptr++
- addq $5,$0,$0 # combine carries
- bne $18,.Loop
-
-.Lend2: mulq $2,$19,$3 # $3 = prod_low
- ldq $5,0($16) # $5 = *res_ptr
- addq $4,$0,$0 # cy_limb = cy_limb + 'cy'
- umulh $2,$19,$4 # $4 = cy_limb
- addq $3,$0,$3 # $3 = cy_limb + prod_low
- cmpult $3,$0,$0 # $0 = carry from (cy_limb + prod_low)
- subq $5,$3,$3
- cmpult $5,$3,$5
- stq $3,0($16)
- addq $5,$0,$0 # combine carries
- addq $4,$0,$0 # cy_limb = prod_high + cy
- ret $31,($26),1
-.Lend1: subq $5,$3,$3
- cmpult $5,$3,$5
- stq $3,0($16)
- addq $0,$5,$0
- ret $31,($26),1
-
- .end __mpn_submul_1
diff --git a/sysdeps/alpha/udiv_qrnnd.S b/sysdeps/alpha/udiv_qrnnd.S
deleted file mode 100644
index d4ca795aae..0000000000
--- a/sysdeps/alpha/udiv_qrnnd.S
+++ /dev/null
@@ -1,161 +0,0 @@
- # Alpha 21064 __udiv_qrnnd
-
- # Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
-
- # This file is part of the GNU MP Library.
-
- # The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
- # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- # MA 02111-1307, USA.
-
-#include <sysdep.h>
-
- .set noreorder
- .set noat
-
- .text
-
-LEAF(__udiv_qrnnd, 0)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
-#define cnt $2
-#define tmp $3
-#define rem_ptr $16
-#define n1 $17
-#define n0 $18
-#define d $19
-#define qb $20
-
- ldiq cnt,16
- blt d,$largedivisor
-
-$loop1: cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule d,n1,qb
- subq n1,d,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule d,n1,qb
- subq n1,d,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule d,n1,qb
- subq n1,d,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule d,n1,qb
- subq n1,d,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- subq cnt,1,cnt
- bgt cnt,$loop1
- stq n1,0(rem_ptr)
- bis $31,n0,$0
- ret $31,($26),1
-
-$largedivisor:
- and n0,1,$4
-
- srl n0,1,n0
- sll n1,63,tmp
- or tmp,n0,n0
- srl n1,1,n1
-
- and d,1,$6
- srl d,1,$5
- addq $5,$6,$5
-
-$loop2: cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule $5,n1,qb
- subq n1,$5,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule $5,n1,qb
- subq n1,$5,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule $5,n1,qb
- subq n1,$5,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule $5,n1,qb
- subq n1,$5,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- subq cnt,1,cnt
- bgt cnt,$loop2
-
- addq n1,n1,n1
- addq $4,n1,n1
- bne $6,$Odd
- stq n1,0(rem_ptr)
- bis $31,n0,$0
- ret $31,($26),1
-
-$Odd:
- /* q' in n0. r' in n1 */
- addq n1,n0,n1
-
- cmpult n1,n0,tmp # tmp := carry from addq
- subq n1,d,AT
- addq n0,tmp,n0
- cmovne tmp,AT,n1
-
- cmpult n1,d,tmp
- addq n0,1,AT
- cmoveq tmp,AT,n0
- subq n1,d,AT
- cmoveq tmp,AT,n1
-
- stq n1,0(rem_ptr)
- bis $31,n0,$0
- ret $31,($26),1
-
- .end __udiv_qrnnd
diff --git a/sysdeps/alpha/nscd-types.h b/sysdeps/generic/dl-irel.h
index 957edaf297..4d7b481e81 100644
--- a/sysdeps/alpha/nscd-types.h
+++ b/sysdeps/generic/dl-irel.h
@@ -1,5 +1,5 @@
-/* Types for the NSCD implementation. Alpha version.
- Copyright (c) 2000 Free Software Foundation, Inc.
+/* Machine-dependent ELF indirect relocation inline functions.
+ Copyright (C) 2009 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
@@ -17,6 +17,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <stdint.h>
+#ifndef _DL_IREL_h
+#define _DL_IREL_H
-typedef int64_t nscd_ssize_t;
+#endif /* dl-irel.h */
diff --git a/sysdeps/generic/dl-osinfo.h b/sysdeps/generic/dl-osinfo.h
index 60b84a900d..4b880dae34 100644
--- a/sysdeps/generic/dl-osinfo.h
+++ b/sysdeps/generic/dl-osinfo.h
@@ -1,12 +1,48 @@
+/* Operating system specific code for generic dynamic loader functions.
+ Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
#include <stdint.h>
static inline uintptr_t __attribute__ ((always_inline))
-_dl_setup_stack_chk_guard (void)
+_dl_setup_stack_chk_guard (void *dl_random)
+{
+ uintptr_t ret;
+ if (dl_random == NULL)
+ {
+ ret = 0;
+ unsigned char *p = (unsigned char *) &ret;
+ p[sizeof (ret) - 1] = 255;
+ p[sizeof (ret) - 2] = '\n';
+ p[0] = 0;
+ }
+ else
+ memcpy (&ret, dl_random, sizeof (ret));
+ return ret;
+}
+
+static inline uintptr_t __attribute__ ((always_inline))
+_dl_setup_pointer_guard (void *dl_random, uintptr_t stack_chk_guard)
{
- uintptr_t ret = 0;
- unsigned char *p = (unsigned char *) &ret;
- p[sizeof (ret) - 1] = 255;
- p[sizeof (ret) - 2] = '\n';
- p[0] = 0;
+ uintptr_t ret;
+ if (dl_random == NULL)
+ ret = stack_chk_guard;
+ else
+ memcpy (&ret, (char *) dl_random + sizeof (ret), sizeof (ret));
return ret;
}
diff --git a/sysdeps/generic/elf/backtracesyms.c b/sysdeps/generic/elf/backtracesyms.c
index b31be6ac5d..319b207605 100644
--- a/sysdeps/generic/elf/backtracesyms.c
+++ b/sysdeps/generic/elf/backtracesyms.c
@@ -1,5 +1,5 @@
/* Return list with names for address in backtrace.
- Copyright (C) 1998,1999,2000,2001,2003 Free Software Foundation, Inc.
+ Copyright (C) 1998,1999,2000,2001,2003,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -48,15 +48,22 @@ __backtrace_symbols (array, size)
/* Fill in the information we can get from `dladdr'. */
for (cnt = 0; cnt < size; ++cnt)
{
- status[cnt] = _dl_addr (array[cnt], &info[cnt], NULL, NULL);
+ struct link_map *map;
+ status[cnt] = _dl_addr (array[cnt], &info[cnt], &map, NULL);
if (status[cnt] && info[cnt].dli_fname && info[cnt].dli_fname[0] != '\0')
- /* We have some info, compute the length of the string which will be
- "<file-name>(<sym-name>) [+offset]. */
- total += (strlen (info[cnt].dli_fname ?: "")
- + (info[cnt].dli_sname
- ? strlen (info[cnt].dli_sname) + 3 + WORD_WIDTH + 3
- : 1)
- + WORD_WIDTH + 5);
+ {
+ /* We have some info, compute the length of the string which will be
+ "<file-name>(<sym-name>+offset) [address]. */
+ total += (strlen (info[cnt].dli_fname ?: "")
+ + strlen (info[cnt].dli_sname ?: "")
+ + 3 + WORD_WIDTH + 3 + WORD_WIDTH + 5);
+
+ /* The load bias is more useful to the user than the load
+ address. The use of these addresses is to calculate an
+ address in the ELF file, so its prelinked bias is not
+ something we want to subtract out. */
+ info[cnt].dli_fbase = (void *) map->l_addr;
+ }
else
total += 5 + WORD_WIDTH;
}
@@ -71,25 +78,39 @@ __backtrace_symbols (array, size)
{
result[cnt] = last;
- if (status[cnt] && info[cnt].dli_fname
- && info[cnt].dli_fname[0] != '\0')
+ if (status[cnt]
+ && info[cnt].dli_fname != NULL && info[cnt].dli_fname[0] != '\0')
{
- char buf[20];
+ if (info[cnt].dli_sname == NULL)
+ /* We found no symbol name to use, so describe it as
+ relative to the file. */
+ info[cnt].dli_saddr = info[cnt].dli_fbase;
- if (array[cnt] >= (void *) info[cnt].dli_saddr)
- sprintf (buf, "+%#lx",
- (unsigned long)(array[cnt] - info[cnt].dli_saddr));
+ if (info[cnt].dli_sname == NULL && info[cnt].dli_saddr == 0)
+ last += 1 + sprintf (last, "%s(%s) [%p]",
+ info[cnt].dli_fname ?: "",
+ info[cnt].dli_sname ?: "",
+ array[cnt]);
else
- sprintf (buf, "-%#lx",
- (unsigned long)(info[cnt].dli_saddr - array[cnt]));
-
- last += 1 + sprintf (last, "%s%s%s%s%s[%p]",
- info[cnt].dli_fname ?: "",
- info[cnt].dli_sname ? "(" : "",
- info[cnt].dli_sname ?: "",
- info[cnt].dli_sname ? buf : "",
- info[cnt].dli_sname ? ") " : " ",
- array[cnt]);
+ {
+ char sign;
+ ptrdiff_t offset;
+ if (array[cnt] >= (void *) info[cnt].dli_saddr)
+ {
+ sign = '+';
+ offset = array[cnt] - info[cnt].dli_saddr;
+ }
+ else
+ {
+ sign = '-';
+ offset = info[cnt].dli_saddr - array[cnt];
+ }
+
+ last += 1 + sprintf (last, "%s(%s%c%#tx) [%p]",
+ info[cnt].dli_fname ?: "",
+ info[cnt].dli_sname ?: "",
+ sign, offset, array[cnt]);
+ }
}
else
last += 1 + sprintf (last, "[%p]", array[cnt]);
diff --git a/sysdeps/generic/elf/backtracesymsfd.c b/sysdeps/generic/elf/backtracesymsfd.c
index 6754d145b0..f0ab71587f 100644
--- a/sysdeps/generic/elf/backtracesymsfd.c
+++ b/sysdeps/generic/elf/backtracesymsfd.c
@@ -1,5 +1,5 @@
/* Write formatted list with names for addresses in backtrace to a file.
- Copyright (C) 1998, 2000, 2003, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1998,2000,2003,2005,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -46,47 +46,63 @@ __backtrace_symbols_fd (array, size, fd)
{
char buf[WORD_WIDTH];
Dl_info info;
+ struct link_map *map;
size_t last = 0;
- if (_dl_addr (array[cnt], &info, NULL, NULL)
- && info.dli_fname && info.dli_fname[0] != '\0')
+ if (_dl_addr (array[cnt], &info, &map, NULL)
+ && info.dli_fname != NULL && info.dli_fname[0] != '\0')
{
/* Name of the file. */
iov[0].iov_base = (void *) info.dli_fname;
iov[0].iov_len = strlen (info.dli_fname);
last = 1;
- /* Symbol name. */
- if (info.dli_sname != NULL)
+ if (info.dli_sname != NULL || map->l_addr != 0)
{
char buf2[WORD_WIDTH];
size_t diff;
- iov[1].iov_base = (void *) "(";
- iov[1].iov_len = 1;
- iov[2].iov_base = (void *) info.dli_sname;
- iov[2].iov_len = strlen (info.dli_sname);
+ iov[last].iov_base = (void *) "(";
+ iov[last].iov_len = 1;
+ ++last;
+
+ if (info.dli_sname != NULL)
+ {
+ /* We have a symbol name. */
+ iov[last].iov_base = (void *) info.dli_sname;
+ iov[last].iov_len = strlen (info.dli_sname);
+ ++last;
+ }
+ else
+ /* We have no symbol, so describe it as relative to the file.
+ The load bias is more useful to the user than the load
+ address. The use of these addresses is to calculate an
+ address in the ELF file, so its prelinked bias is not
+ something we want to subtract out. */
+ info.dli_saddr = (void *) map->l_addr;
if (array[cnt] >= (void *) info.dli_saddr)
{
- iov[3].iov_base = (void *) "+0x";
+ iov[last].iov_base = (void *) "+0x";
diff = array[cnt] - info.dli_saddr;
}
else
{
- iov[3].iov_base = (void *) "-0x";
+ iov[last].iov_base = (void *) "-0x";
diff = info.dli_saddr - array[cnt];
}
- iov[3].iov_len = 3;
-
- iov[4].iov_base = _itoa_word ((unsigned long int) diff,
- &buf2[WORD_WIDTH], 16, 0);
- iov[4].iov_len = &buf2[WORD_WIDTH] - (char *) iov[4].iov_base;
-
- iov[5].iov_base = (void *) ")";
- iov[5].iov_len = 1;
-
- last = 6;
+ iov[last].iov_len = 3;
+ ++last;
+
+ iov[last].iov_base = _itoa_word ((unsigned long int) diff,
+ &buf2[WORD_WIDTH], 16, 0);
+ iov[last].iov_len = (&buf2[WORD_WIDTH]
+ - (char *) iov[last].iov_base);
+ ++last;
+
+ iov[last].iov_base = (void *) ")";
+ iov[last].iov_len = 1;
+ ++last;
}
}
diff --git a/sysdeps/generic/elf/ifunc-sel.h b/sysdeps/generic/elf/ifunc-sel.h
new file mode 100644
index 0000000000..6a27b69c5b
--- /dev/null
+++ b/sysdeps/generic/elf/ifunc-sel.h
@@ -0,0 +1,26 @@
+/* Used by the elf ifunc tests. */
+#ifndef ELF_IFUNC_SEL_H
+#define ELF_IFUNC_SEL_H 1
+
+extern int global;
+
+static inline void *
+ifunc_sel (int (*f1) (void), int (*f2) (void), int (*f3) (void))
+{
+ switch (global)
+ {
+ case 1:
+ return f1;
+ case -1:
+ return f2;
+ default:
+ return f3;
+ }
+}
+
+static inline void *
+ifunc_one (int (*f1) (void))
+{
+ return f1;
+}
+#endif
diff --git a/sysdeps/generic/framestate.c b/sysdeps/generic/framestate.c
index a912a8c375..80375bba98 100644
--- a/sysdeps/generic/framestate.c
+++ b/sysdeps/generic/framestate.c
@@ -24,6 +24,7 @@
#define __frame_state_for fallback_frame_state_for
#include <unwind-dw2.c>
#undef __frame_state_for
+#include <libgcc_s.h>
typedef struct frame_state * (*framesf)(void *pc, struct frame_state *);
struct frame_state *__frame_state_for (void *pc,
@@ -36,7 +37,7 @@ __frame_state_for (void *pc, struct frame_state *frame_state)
if (frame_state_for == NULL)
{
- void *handle = __libc_dlopen ("libgcc_s.so.1");
+ void *handle = __libc_dlopen (LIBGCC_S_SO);
if (handle == NULL
|| (frame_state_for
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index 4d857404a3..230c39a631 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -1,5 +1,5 @@
/* Run-time dynamic linker data structures for loaded ELF shared objects.
- Copyright (C) 1995-2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1995-2009, 2010 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
@@ -335,6 +335,10 @@ struct audit_ifaces
extern int _dl_name_match_p (const char *__name, const struct link_map *__map)
internal_function;
+/* Compute next higher prime number. */
+extern unsigned long int _dl_higher_prime_number (unsigned long int n)
+ internal_function;
+
/* Function used as argument for `_dl_receive_error' function. The
arguments are the error code, error string, and the objname the
error occurred in. */
@@ -383,9 +387,26 @@ struct rtld_global
allocated by rtld. Later it keeps the size of the map. It might be
reset if in _dl_close if the last global object is removed. */
size_t _ns_global_scope_alloc;
+ /* Search table for unique objects. */
+ struct unique_sym_table
+ {
+ __rtld_lock_recursive_t lock;
+ struct unique_sym
+ {
+ uint32_t hashval;
+ const char *name;
+ const ElfW(Sym) *sym;
+ struct link_map *map;
+ } *entries;
+ size_t size;
+ size_t n_elements;
+ void (*free) (void *);
+ } _ns_unique_sym_table;
/* Keep track of changes to each namespace' list. */
struct r_debug _ns_debug;
} _dl_ns[DL_NNS];
+ /* One higher than index of last used namespace. */
+ EXTERN size_t _dl_nns;
/* During the program run we must not modify the global data of
loaded shared object simultanously in two threads. Therefore we
@@ -399,11 +420,6 @@ struct rtld_global
/* Incremented whenever something may have been added to dl_loaded. */
EXTERN unsigned long long _dl_load_adds;
-#ifndef MAP_ANON
- /* File descriptor referring to the zero-fill device. */
- EXTERN int _dl_zerofd;
-#endif
-
/* The object to be initialized first. */
EXTERN struct link_map *_dl_initfirst;
@@ -731,6 +747,9 @@ weak_extern (_dl_starting_up)
extern int _dl_starting_up_internal attribute_hidden;
#endif
+/* Random data provided by the kernel. */
+extern void *_dl_random attribute_hidden;
+
/* OS-dependent function to open the zero-fill device. */
extern int _dl_sysdep_open_zero_fill (void); /* dl-sysdep.c */
@@ -879,10 +898,10 @@ extern struct link_map *_dl_new_object (char *realname, const char *libname,
/* Relocate the given object (if it hasn't already been).
SCOPE is passed to _dl_lookup_symbol in symbol lookups.
- If LAZY is nonzero, don't relocate its PLT. */
+ If RTLD_LAZY is set in RELOC-MODE, don't relocate its PLT. */
extern void _dl_relocate_object (struct link_map *map,
struct r_scope_elem *scope[],
- int lazy, int consider_profiling)
+ int reloc_mode, int consider_profiling)
attribute_hidden;
/* Protect PT_GNU_RELRO area. */
@@ -996,7 +1015,8 @@ extern void *_dl_sysdep_read_whole_file (const char *file, size_t *sizep,
extern ElfW(Addr) _dl_sysdep_start (void **start_argptr,
void (*dl_main) (const ElfW(Phdr) *phdr,
ElfW(Word) phnum,
- ElfW(Addr) *user_entry))
+ ElfW(Addr) *user_entry,
+ ElfW(auxv_t) *auxv))
attribute_hidden;
extern void _dl_sysdep_start_cleanup (void)
diff --git a/sysdeps/generic/libgcc_s.h b/sysdeps/generic/libgcc_s.h
new file mode 100644
index 0000000000..e74a1034ca
--- /dev/null
+++ b/sysdeps/generic/libgcc_s.h
@@ -0,0 +1,2 @@
+/* Name of libgcc_s library provided by gcc. */
+#define LIBGCC_S_SO "libgcc_s.so.1"
diff --git a/sysdeps/generic/netinet/ip.h b/sysdeps/generic/netinet/ip.h
index fc91440527..a837b98143 100644
--- a/sysdeps/generic/netinet/ip.h
+++ b/sysdeps/generic/netinet/ip.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,92,93,95,96,97,98,99,2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,95,96,97,98,99,2000,2009 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
@@ -153,7 +154,61 @@ struct ip_timestamp
#define IP_MAXPACKET 65535 /* maximum packet size */
/*
- * Definitions for IP type of service (ip_tos)
+ * Definitions for Explicit Congestion Notification (ECN)
+ *
+ * Taken from RFC-3168, Section 5.
+ */
+
+#define IPTOS_ECN_MASK 0x03
+#define IPTOS_ECN(x) ((x) & IPTOS_ECN_MASK)
+#define IPTOS_ECN_NOT_ECT 0x00
+#define IPTOS_ECN_ECT1 0x01
+#define IPTOS_ECN_ECT0 0x02
+#define IPTOS_ECN_CE 0x03
+
+/*
+ * Definitions for IP differentiated services code points (DSCP)
+ *
+ * Taken from RFC-2597, Section 6 and RFC-2598, Section 2.3.
+ */
+
+#define IPTOS_DSCP_MASK 0xfc
+#define IPTOS_DSCP(x) ((x) & IPTOS_DSCP_MASK)
+#define IPTOS_DSCP_AF11 0x28
+#define IPTOS_DSCP_AF12 0x30
+#define IPTOS_DSCP_AF13 0x38
+#define IPTOS_DSCP_AF21 0x48
+#define IPTOS_DSCP_AF22 0x50
+#define IPTOS_DSCP_AF23 0x58
+#define IPTOS_DSCP_AF31 0x68
+#define IPTOS_DSCP_AF32 0x70
+#define IPTOS_DSCP_AF33 0x78
+#define IPTOS_DSCP_AF41 0x88
+#define IPTOS_DSCP_AF42 0x90
+#define IPTOS_DSCP_AF43 0x98
+#define IPTOS_DSCP_EF 0xb8
+
+/*
+ * In RFC 2474, Section 4.2.2.1, the Class Selector Codepoints subsume
+ * the old ToS Precedence values.
+ */
+
+#define IPTOS_CLASS_MASK 0xe0
+#define IPTOS_CLASS(class) ((tos) & IPTOS_CLASS_MASK)
+#define IPTOS_CLASS_CS0 0x00
+#define IPTOS_CLASS_CS1 0x20
+#define IPTOS_CLASS_CS2 0x40
+#define IPTOS_CLASS_CS3 0x60
+#define IPTOS_CLASS_CS4 0x80
+#define IPTOS_CLASS_CS5 0xa0
+#define IPTOS_CLASS_CS6 0xc0
+#define IPTOS_CLASS_CS7 0xe0
+
+#define IPTOS_CLASS_DEFAULT IPTOS_CLASS_CS0
+
+/*
+ * Definitions for IP type of service (ip_tos) [deprecated; use DSCP
+ * and CS definitions above instead.]
*/
#define IPTOS_TOS_MASK 0x1E
#define IPTOS_TOS(tos) ((tos) & IPTOS_TOS_MASK)
@@ -164,18 +219,18 @@ struct ip_timestamp
#define IPTOS_MINCOST IPTOS_LOWCOST
/*
- * Definitions for IP precedence (also in ip_tos) (hopefully unused)
+ * Definitions for IP precedence (also in ip_tos) [also deprecated.]
*/
-#define IPTOS_PREC_MASK 0xe0
-#define IPTOS_PREC(tos) ((tos) & IPTOS_PREC_MASK)
-#define IPTOS_PREC_NETCONTROL 0xe0
-#define IPTOS_PREC_INTERNETCONTROL 0xc0
-#define IPTOS_PREC_CRITIC_ECP 0xa0
-#define IPTOS_PREC_FLASHOVERRIDE 0x80
-#define IPTOS_PREC_FLASH 0x60
-#define IPTOS_PREC_IMMEDIATE 0x40
-#define IPTOS_PREC_PRIORITY 0x20
-#define IPTOS_PREC_ROUTINE 0x00
+#define IPTOS_PREC_MASK IPTOS_CLASS_MASK
+#define IPTOS_PREC(tos) IPTOS_CLASS(tos)
+#define IPTOS_PREC_NETCONTROL IPTOS_CLASS_CS7
+#define IPTOS_PREC_INTERNETCONTROL IPTOS_CLASS_CS6
+#define IPTOS_PREC_CRITIC_ECP IPTOS_CLASS_CS5
+#define IPTOS_PREC_FLASHOVERRIDE IPTOS_CLASS_CS4
+#define IPTOS_PREC_FLASH IPTOS_CLASS_CS3
+#define IPTOS_PREC_IMMEDIATE IPTOS_CLASS_CS2
+#define IPTOS_PREC_PRIORITY IPTOS_CLASS_CS1
+#define IPTOS_PREC_ROUTINE IPTOS_CLASS_CS0
/*
* Definitions for options.
diff --git a/sysdeps/generic/paths.h b/sysdeps/generic/paths.h
index 03bf0f355f..439992fe7b 100644
--- a/sysdeps/generic/paths.h
+++ b/sysdeps/generic/paths.h
@@ -44,6 +44,7 @@
#define _PATH_DEVDB "/var/run/dev.db"
#define _PATH_DEVNULL "/dev/null"
#define _PATH_DRUM "/dev/drum"
+#define _PATH_GSHADOW "/etc/gshadow"
#define _PATH_KMEM "/dev/kmem"
#define _PATH_MAILDIR "/var/mail"
#define _PATH_LASTLOG "/var/log/lastlog"
diff --git a/sysdeps/generic/pty-private.h b/sysdeps/generic/pty-private.h
index d6ec2cee68..493f40551d 100644
--- a/sysdeps/generic/pty-private.h
+++ b/sysdeps/generic/pty-private.h
@@ -1,5 +1,5 @@
/* Internal defenitions and declarations for pseudo terminal functions.
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 1998.
@@ -39,7 +39,8 @@ enum /* failure modes */
FAIL_EBADF = 1,
FAIL_EINVAL,
FAIL_EACCES,
- FAIL_EXEC
+ FAIL_EXEC,
+ FAIL_ENOMEM
};
#endif /* pty-private.h */
diff --git a/sysdeps/generic/sysdep.h b/sysdeps/generic/sysdep.h
index 15d951c777..54884d9afe 100644
--- a/sysdeps/generic/sysdep.h
+++ b/sysdeps/generic/sysdep.h
@@ -1,5 +1,5 @@
/* Generic asm macros used on many machines.
- Copyright (C) 1991,92,93,96,98,2002,2003 Free Software Foundation, Inc.
+ Copyright (C) 1991,92,93,96,98,2002,2003,2009 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
@@ -39,13 +39,13 @@
#ifdef __ASSEMBLER__
/* Mark the end of function named SYM. This is used on some platforms
to generate correct debugging information. */
-#ifndef END
-#define END(sym)
-#endif
+# ifndef END
+# define END(sym)
+# endif
-#ifndef JUMPTARGET
-#define JUMPTARGET(sym) sym
-#endif
+# ifndef JUMPTARGET
+# define JUMPTARGET(sym) sym
+# endif
/* Makros to generate eh_frame unwind information. */
# ifdef HAVE_ASM_CFI_DIRECTIVES
@@ -65,6 +65,8 @@
# define cfi_remember_state .cfi_remember_state
# define cfi_restore_state .cfi_restore_state
# define cfi_window_save .cfi_window_save
+# define cfi_personality(enc, exp) .cfi_personality enc, exp
+# define cfi_lsda(enc, exp) .cfi_lsda enc, exp
# else
# define cfi_startproc
# define cfi_endproc
@@ -82,6 +84,8 @@
# define cfi_remember_state
# define cfi_restore_state
# define cfi_window_save
+# define cfi_personality(enc, exp)
+# define cfi_lsda(enc, exp)
# endif
#else /* ! ASSEMBLER */
@@ -116,6 +120,10 @@
".cfi_restore_state"
# define CFI_WINDOW_SAVE \
".cfi_window_save"
+# define CFI_PERSONALITY(enc, exp) \
+ ".cfi_personality " CFI_STRINGIFY(enc) "," CFI_STRINGIFY(exp)
+# define CFI_LSDA(enc, exp) \
+ ".cfi_lsda " CFI_STRINGIFY(enc) "," CFI_STRINGIFY(exp)
# else
# define CFI_STARTPROC
# define CFI_ENDPROC
@@ -132,6 +140,27 @@
# define CFI_REMEMBER_STATE
# define CFI_RESTORE_STATE
# define CFI_WINDOW_SAVE
+# define CFI_PERSONALITY(enc, exp)
+# define CFI_LSDA(enc, exp)
# endif
#endif /* __ASSEMBLER__ */
+
+/* Values used for encoding parameter of cfi_personality and cfi_lsda. */
+#define DW_EH_PE_absptr 0x00
+#define DW_EH_PE_omit 0xff
+#define DW_EH_PE_uleb128 0x01
+#define DW_EH_PE_udata2 0x02
+#define DW_EH_PE_udata4 0x03
+#define DW_EH_PE_udata8 0x04
+#define DW_EH_PE_sleb128 0x09
+#define DW_EH_PE_sdata2 0x0a
+#define DW_EH_PE_sdata4 0x0b
+#define DW_EH_PE_sdata8 0x0c
+#define DW_EH_PE_signed 0x08
+#define DW_EH_PE_pcrel 0x10
+#define DW_EH_PE_textrel 0x20
+#define DW_EH_PE_datarel 0x30
+#define DW_EH_PE_funcrel 0x40
+#define DW_EH_PE_aligned 0x50
+#define DW_EH_PE_indirect 0x80
diff --git a/sysdeps/gnu/errlist.c b/sysdeps/gnu/errlist.c
index 56da01756d..28a295fc67 100644
--- a/sysdeps/gnu/errlist.c
+++ b/sysdeps/gnu/errlist.c
@@ -1456,6 +1456,14 @@ TRANS error; @pxref{Cancel AIO Operations}. */
# define ERR_MAX ENOTRECOVERABLE
# endif
#endif
+#ifdef ERFKILL
+/* */
+ [ERR_REMAP (ERFKILL)] = N_("Operation not possible due to RF-kill"),
+# if ERFKILL > ERR_MAX
+# undef ERR_MAX
+# define ERR_MAX ERFKILL
+# endif
+#endif
};
#define NERR \
diff --git a/sysdeps/gnu/getutmp.c b/sysdeps/gnu/getutmp.c
index 7b6d7713ea..9647c252e2 100644
--- a/sysdeps/gnu/getutmp.c
+++ b/sysdeps/gnu/getutmp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2009 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
@@ -19,10 +19,12 @@
#include <assert.h>
#include <string.h>
#include <utmp.h>
+#ifndef _UTMPX_H
/* This is an ugly hack but we must not see the getutmpx declaration. */
-#define getutmpx XXXgetutmpx
-#include <utmpx.h>
-#undef getutmpx
+# define getutmpx XXXgetutmpx
+# include <utmpx.h>
+# undef getutmpx
+#endif
void
getutmp (const struct utmpx *utmpx, struct utmp *utmp)
diff --git a/sysdeps/gnu/netinet/udp.h b/sysdeps/gnu/netinet/udp.h
index 45b69f7499..ae1beb9e1a 100644
--- a/sysdeps/gnu/netinet/udp.h
+++ b/sysdeps/gnu/netinet/udp.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 93, 95, 96, 97, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1993,1995-1997,2004,2009 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
@@ -74,6 +74,16 @@ struct udphdr
};
#endif
+/* UDP socket options */
+#define UDP_CORK 1 /* Never send partially complete segments. */
+#define UDP_ENCAP 100 /* Set the socket to accept
+ encapsulated packets. */
+
+/* UDP encapsulation types */
+#define UDP_ENCAP_ESPINUDP_NON_IKE 1 /* draft-ietf-ipsec-nat-t-ike-00/01 */
+#define UDP_ENCAP_ESPINUDP 2 /* draft-ietf-ipsec-udp-encaps-06 */
+#define UDP_ENCAP_L2TPINUDP 3 /* rfc2661 */
+
#define SOL_UDP 17 /* sockopt level for UDP */
#endif /* netinet/udp.h */
diff --git a/sysdeps/i386/____longjmp_chk.S b/sysdeps/i386/____longjmp_chk.S
new file mode 100644
index 0000000000..0910861a9d
--- /dev/null
+++ b/sysdeps/i386/____longjmp_chk.S
@@ -0,0 +1 @@
+#error "OS-specific version needed"
diff --git a/sysdeps/i386/__longjmp.S b/sysdeps/i386/__longjmp.S
index 559d56b250..5ff7a73cea 100644
--- a/sysdeps/i386/__longjmp.S
+++ b/sysdeps/i386/__longjmp.S
@@ -1,5 +1,6 @@
/* longjmp for i386.
- Copyright (C) 1995-1998,2000,2002,2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1995-1998,2000,2002,2005,2006,2009
+ 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
@@ -20,19 +21,11 @@
#include <sysdep.h>
#include <jmpbuf-offsets.h>
#include <asm-syntax.h>
-#include <bp-sym.h>
-#include <bp-asm.h>
-
-#define PARMS LINKAGE /* no space for saved regs */
-#define JBUF PARMS
-#define VAL JBUF+PTR_SIZE
-
-ENTRY (BP_SYM (__longjmp))
- ENTER
+ .text
+ENTRY (__longjmp)
#ifdef PTR_DEMANGLE
- movl JBUF(%esp), %eax /* User's jmp_buf in %eax. */
- CHECK_BOUNDS_BOTH_WIDE (%eax, JBUF(%esp), $JB_SIZE)
+ movl 4(%esp), %eax /* User's jmp_buf in %eax. */
/* Save the return address now. */
movl (JB_PC*4)(%eax), %edx
@@ -57,13 +50,11 @@ ENTRY (BP_SYM (__longjmp))
cfi_restore(%edi)
cfi_restore(%ebp)
- movl VAL(%esp), %eax /* Second argument is return value. */
+ movl 8(%esp), %eax /* Second argument is return value. */
movl %ecx, %esp
#else
- movl JBUF(%esp), %ecx /* User's jmp_buf in %ecx. */
- CHECK_BOUNDS_BOTH_WIDE (%ecx, JBUF(%esp), $JB_SIZE)
-
- movl VAL(%esp), %eax /* Second argument is return value. */
+ movl 4(%esp), %ecx /* User's jmp_buf in %ecx. */
+ movl 8(%esp), %eax /* Second argument is return value. */
/* Save the return address now. */
movl (JB_PC*4)(%ecx), %edx
/* Restore registers. */
@@ -75,4 +66,4 @@ ENTRY (BP_SYM (__longjmp))
#endif
/* Jump to saved PC. */
jmp *%edx
-END (BP_SYM (__longjmp))
+END (__longjmp)
diff --git a/sysdeps/i386/bits/link.h b/sysdeps/i386/bits/link.h
index 985d040413..4df5f795e3 100644
--- a/sysdeps/i386/bits/link.h
+++ b/sysdeps/i386/bits/link.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005, 2009 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
@@ -55,6 +55,6 @@ extern unsigned int la_i86_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
uintptr_t *__defcook,
const La_i86_regs *__inregs,
La_i86_retval *__outregs,
- const char *symname);
+ const char *__symname);
__END_DECLS
diff --git a/sysdeps/i386/configure b/sysdeps/i386/configure
index d1d4dc15a7..f0c2758a5e 100755..100644
--- a/sysdeps/i386/configure
+++ b/sysdeps/i386/configure
@@ -1,10 +1,570 @@
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
# This file is generated from configure.in by Autoconf. DO NOT EDIT!
# Local configure fragment for sysdeps/i386.
-echo "$as_me:$LINENO: checking if -g produces usable source locations for assembler-with-cpp" >&5
-echo $ECHO_N "checking if -g produces usable source locations for assembler-with-cpp... $ECHO_C" >&6
+
+
+{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ ac_count=`expr $ac_count + 1`
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ ac_count=`expr $ac_count + 1`
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_header_stdc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_header_stdc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+if test "${ac_cv_header_cpuid_h+set}" = set; then
+ { $as_echo "$as_me:$LINENO: checking for cpuid.h" >&5
+$as_echo_n "checking for cpuid.h... " >&6; }
+if test "${ac_cv_header_cpuid_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_cpuid_h" >&5
+$as_echo "$ac_cv_header_cpuid_h" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking cpuid.h usability" >&5
+$as_echo_n "checking cpuid.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <cpuid.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking cpuid.h presence" >&5
+$as_echo_n "checking cpuid.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <cpuid.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: cpuid.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: cpuid.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: cpuid.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: cpuid.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: cpuid.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: cpuid.h: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: cpuid.h: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: cpuid.h: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: cpuid.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: cpuid.h: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: cpuid.h: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: cpuid.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: cpuid.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: cpuid.h: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: cpuid.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: cpuid.h: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for cpuid.h" >&5
+$as_echo_n "checking for cpuid.h... " >&6; }
+if test "${ac_cv_header_cpuid_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_header_cpuid_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_cpuid_h" >&5
+$as_echo "$ac_cv_header_cpuid_h" >&6; }
+
+fi
+if test "x$ac_cv_header_cpuid_h" = x""yes; then
+ :
+else
+ { { $as_echo "$as_me:$LINENO: error: gcc must provide the <cpuid.h> header" >&5
+$as_echo "$as_me: error: gcc must provide the <cpuid.h> header" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+
+{ $as_echo "$as_me:$LINENO: checking if -g produces usable source locations for assembler-with-cpp" >&5
+$as_echo_n "checking if -g produces usable source locations for assembler-with-cpp... " >&6; }
if test "${libc_cv_cpp_asm_debuginfo+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.S <<EOF
#include "confdefs.h"
@@ -27,7 +587,7 @@ if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } && {
ac_pattern='conftest\.S'
{ ac_try='readelf --debug-dump=line conftest.o |
@@ -35,7 +595,7 @@ if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }
}; then
libc_cv_cpp_asm_debuginfo=yes
@@ -44,11 +604,36 @@ else
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_cpp_asm_debuginfo" >&5
-echo "${ECHO_T}$libc_cv_cpp_asm_debuginfo" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_cpp_asm_debuginfo" >&5
+$as_echo "$libc_cv_cpp_asm_debuginfo" >&6; }
if test $libc_cv_cpp_asm_debuginfo = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_CPP_ASM_DEBUGINFO 1
_ACEOF
fi
+
+{ $as_echo "$as_me:$LINENO: checking for SSE4 support" >&5
+$as_echo_n "checking for SSE4 support... " >&6; }
+if test "${libc_cv_cc_sse4+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if { ac_try='${CC-cc} -msse4 -xc /dev/null -S -o /dev/null'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libc_cv_cc_sse4=yes
+else
+ libc_cv_cc_sse4=no
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_cc_sse4" >&5
+$as_echo "$libc_cv_cc_sse4" >&6; }
+if test $libc_cv_cc_sse4 = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_SSE4_SUPPORT 1
+_ACEOF
+
+fi
diff --git a/sysdeps/i386/configure.in b/sysdeps/i386/configure.in
index 028e1ae8e1..12dceaf844 100644
--- a/sysdeps/i386/configure.in
+++ b/sysdeps/i386/configure.in
@@ -1,6 +1,9 @@
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
# Local configure fragment for sysdeps/i386.
+AC_HEADER_CHECK([cpuid.h], ,
+ [AC_MSG_ERROR([gcc must provide the <cpuid.h> header])])
+
AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
libc_cv_cpp_asm_debuginfo, [dnl
cat > conftest.S <<EOF
@@ -33,3 +36,14 @@ rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
if test $libc_cv_cpp_asm_debuginfo = yes; then
AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
fi
+
+dnl Check if -msse4 works.
+AC_CACHE_CHECK(for SSE4 support, libc_cv_cc_sse4, [dnl
+if AC_TRY_COMMAND([${CC-cc} -msse4 -xc /dev/null -S -o /dev/null]); then
+ libc_cv_cc_sse4=yes
+else
+ libc_cv_cc_sse4=no
+fi])
+if test $libc_cv_cc_sse4 = yes; then
+ AC_DEFINE(HAVE_SSE4_SUPPORT)
+fi
diff --git a/sysdeps/alpha/fpu/fesetround.c b/sysdeps/i386/dl-irel.h
index 54b2bcf673..30385a1ef8 100644
--- a/sysdeps/alpha/fpu/fesetround.c
+++ b/sysdeps/i386/dl-irel.h
@@ -1,7 +1,7 @@
-/* Set current rounding direction.
- Copyright (C) 1997, 2000, 2005 Free Software Foundation, Inc.
+/* Machine-dependent ELF indirect relocation inline functions.
+ i386 version.
+ Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1997
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -18,26 +18,28 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <fenv_libc.h>
+#ifndef _DL_IREL_H
+#define _DL_IREL_H
-int
-fesetround (int round)
-{
- unsigned long fpcr;
-
- if (round & ~3)
- return 1;
-
- /* Get the current state. */
- __asm__ __volatile__("excb; mf_fpcr %0" : "=f"(fpcr));
+#include <stdio.h>
+#include <unistd.h>
- /* Set the relevant bits. */
- fpcr = ((fpcr & ~FPCR_ROUND_MASK)
- | ((unsigned long)round << FPCR_ROUND_SHIFT));
+#define ELF_MACHINE_IREL 1
- /* Put the new state in effect. */
- __asm__ __volatile__("mt_fpcr %0; excb" : : "f"(fpcr));
-
- return 0;
+static inline void
+__attribute ((always_inline))
+elf_irel (const Elf32_Rel *reloc)
+{
+ Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
+ const unsigned long int r_type = ELF32_R_TYPE (reloc->r_info);
+
+ if (__builtin_expect (r_type == R_386_IRELATIVE, 1))
+ {
+ Elf32_Addr value = ((Elf32_Addr (*) (void)) (*reloc_addr)) ();
+ *reloc_addr = value;
+ }
+ else
+ __libc_fatal ("unexpected reloc type in static binary");
}
-libm_hidden_def (fesetround)
+
+#endif /* dl-irel.h */
diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h
index e3342d8e12..a093d2b151 100644
--- a/sysdeps/i386/dl-machine.h
+++ b/sysdeps/i386/dl-machine.h
@@ -1,5 +1,5 @@
/* Machine-dependent ELF dynamic relocation inline functions. i386 version.
- Copyright (C) 1995-2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1995-2005, 2006, 2009 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
@@ -316,34 +316,40 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
Elf32_Addr *const reloc_addr = reloc_addr_arg;
const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
-#if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
+# if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
if (__builtin_expect (r_type == R_386_RELATIVE, 0))
{
-# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
+# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
/* This is defined in rtld.c, but nowhere in the static libc.a;
make the reference weak so static programs can still link.
This declaration cannot be done when compiling rtld.c
(i.e. #ifdef RTLD_BOOTSTRAP) because rtld.c contains the
common defn for _dl_rtld_map, which is incompatible with a
weak decl in the same file. */
-# ifndef SHARED
+# ifndef SHARED
weak_extern (_dl_rtld_map);
-# endif
+# endif
if (map != &GL(dl_rtld_map)) /* Already done in rtld itself. */
-# endif
+# endif
*reloc_addr += map->l_addr;
}
-# ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
else if (__builtin_expect (r_type == R_386_NONE, 0))
return;
-# endif
+# endif
else
-#endif /* !RTLD_BOOTSTRAP and have no -z combreloc */
+# endif /* !RTLD_BOOTSTRAP and have no -z combreloc */
{
const Elf32_Sym *const refsym = sym;
struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
Elf32_Addr value = sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value;
+ if (sym != NULL
+ && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC,
+ 0)
+ && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1))
+ value = ((Elf32_Addr (*) (void)) value) ();
+
switch (r_type)
{
case R_386_GLOB_DAT:
@@ -351,44 +357,44 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
*reloc_addr = value;
break;
-#if !defined RTLD_BOOTSTRAP || USE___THREAD
+# if !defined RTLD_BOOTSTRAP || USE___THREAD
case R_386_TLS_DTPMOD32:
-# ifdef RTLD_BOOTSTRAP
+# ifdef RTLD_BOOTSTRAP
/* During startup the dynamic linker is always the module
with index 1.
XXX If this relocation is necessary move before RESOLVE
call. */
*reloc_addr = 1;
-# else
+# else
/* Get the information from the link map returned by the
resolv function. */
if (sym_map != NULL)
*reloc_addr = sym_map->l_tls_modid;
-# endif
+# endif
break;
case R_386_TLS_DTPOFF32:
-# ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
/* During relocation all TLS symbols are defined and used.
Therefore the offset is already correct. */
if (sym != NULL)
*reloc_addr = sym->st_value;
-# endif
+# endif
break;
case R_386_TLS_DESC:
{
struct tlsdesc volatile *td =
(struct tlsdesc volatile *)reloc_addr;
-# ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
if (! sym)
td->entry = _dl_tlsdesc_undefweak;
else
-# endif
+# endif
{
-# ifndef RTLD_BOOTSTRAP
-# ifndef SHARED
+# ifndef RTLD_BOOTSTRAP
+# ifndef SHARED
CHECK_STATIC_TLS (map, sym_map);
-# else
+# else
if (!TRY_STATIC_TLS (map, sym_map))
{
td->arg = _dl_make_tlsdesc_dynamic
@@ -396,8 +402,8 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
td->entry = _dl_tlsdesc_dynamic;
}
else
+# endif
# endif
-# endif
{
td->arg = (void*)(sym->st_value - sym_map->l_tls_offset
+ (ElfW(Word))td->arg);
@@ -408,9 +414,9 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
}
case R_386_TLS_TPOFF32:
/* The offset is positive, backward from the thread pointer. */
-# ifdef RTLD_BOOTSTRAP
+# ifdef RTLD_BOOTSTRAP
*reloc_addr += map->l_tls_offset - sym->st_value;
-# else
+# else
/* We know the offset of object the symbol is contained in.
It is a positive value which will be subtracted from the
thread pointer. To get the variable position in the TLS
@@ -420,13 +426,13 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
CHECK_STATIC_TLS (map, sym_map);
*reloc_addr += sym_map->l_tls_offset - sym->st_value;
}
-# endif
+# endif
break;
case R_386_TLS_TPOFF:
/* The offset is negative, forward from the thread pointer. */
-# ifdef RTLD_BOOTSTRAP
+# ifdef RTLD_BOOTSTRAP
*reloc_addr += sym->st_value - map->l_tls_offset;
-# else
+# else
/* We know the offset of object the symbol is contained in.
It is a negative value which will be added to the
thread pointer. */
@@ -435,11 +441,11 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
CHECK_STATIC_TLS (map, sym_map);
*reloc_addr += sym->st_value - sym_map->l_tls_offset;
}
-# endif
+# endif
break;
-#endif /* use TLS */
+# endif /* use TLS */
-#ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
case R_386_32:
*reloc_addr += value;
break;
@@ -466,15 +472,20 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
memcpy (reloc_addr_arg, (void *) value,
MIN (sym->st_size, refsym->st_size));
break;
+ case R_386_IRELATIVE:
+ value = map->l_addr + *reloc_addr;
+ value = ((Elf32_Addr (*) (void)) value) ();
+ *reloc_addr = value;
+ break;
default:
_dl_reloc_bad_type (map, r_type, 0);
break;
-#endif /* !RTLD_BOOTSTRAP */
+# endif /* !RTLD_BOOTSTRAP */
}
}
}
-#ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
auto inline void
__attribute__ ((always_inline))
elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
@@ -488,12 +499,18 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
*reloc_addr = map->l_addr + reloc->r_addend;
else if (r_type != R_386_NONE)
{
-# ifndef RESOLVE_CONFLICT_FIND_MAP
+# ifndef RESOLVE_CONFLICT_FIND_MAP
const Elf32_Sym *const refsym = sym;
-# endif
+# endif
struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
Elf32_Addr value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
+ if (sym != NULL
+ && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1)
+ && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC,
+ 0))
+ value = ((Elf32_Addr (*) (void)) value) ();
+
switch (ELF32_R_TYPE (reloc->r_info))
{
case R_386_GLOB_DAT:
@@ -501,7 +518,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
case R_386_32:
*reloc_addr = value + reloc->r_addend;
break;
-# ifndef RESOLVE_CONFLICT_FIND_MAP
+# ifndef RESOLVE_CONFLICT_FIND_MAP
/* Not needed for dl-conflict.c. */
case R_386_PC32:
*reloc_addr = (value + reloc->r_addend - (Elf32_Addr) reloc_addr);
@@ -523,19 +540,19 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
struct tlsdesc volatile *td =
(struct tlsdesc volatile *)reloc_addr;
-# ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
if (!sym)
{
td->arg = (void*)reloc->r_addend;
td->entry = _dl_tlsdesc_undefweak;
}
else
-# endif
+# endif
{
-# ifndef RTLD_BOOTSTRAP
-# ifndef SHARED
+# ifndef RTLD_BOOTSTRAP
+# ifndef SHARED
CHECK_STATIC_TLS (map, sym_map);
-# else
+# else
if (!TRY_STATIC_TLS (map, sym_map))
{
td->arg = _dl_make_tlsdesc_dynamic
@@ -543,8 +560,8 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
td->entry = _dl_tlsdesc_dynamic;
}
else
-# endif
-# endif
+# endif
+# endif
{
td->arg = (void*)(sym->st_value - sym_map->l_tls_offset
+ reloc->r_addend);
@@ -598,7 +615,12 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
memcpy (reloc_addr_arg, (void *) value,
MIN (sym->st_size, refsym->st_size));
break;
-# endif /* !RESOLVE_CONFLICT_FIND_MAP */
+# endif /* !RESOLVE_CONFLICT_FIND_MAP */
+ case R_386_IRELATIVE:
+ value = map->l_addr + reloc->r_addend;
+ value = ((Elf32_Addr (*) (void)) value) ();
+ *reloc_addr = value;
+ break;
default:
/* We add these checks in the version to relocate ld.so only
if we are still debugging. */
@@ -607,7 +629,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
}
}
}
-#endif /* !RTLD_BOOTSTRAP */
+# endif /* !RTLD_BOOTSTRAP */
auto inline void
__attribute ((always_inline))
@@ -619,7 +641,7 @@ elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
*reloc_addr += l_addr;
}
-#ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
auto inline void
__attribute__ ((always_inline))
elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
@@ -628,7 +650,7 @@ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
Elf32_Addr *const reloc_addr = reloc_addr_arg;
*reloc_addr = l_addr + reloc->r_addend;
}
-#endif /* !RTLD_BOOTSTRAP */
+# endif /* !RTLD_BOOTSTRAP */
auto inline void
__attribute__ ((always_inline))
@@ -672,12 +694,12 @@ elf_machine_lazy_rel (struct link_map *map,
const ElfW(Sym) *const symtab =
(const void *) D_PTR (map, l_info[DT_SYMTAB]);
-#ifdef RTLD_BOOTSTRAP
+# ifdef RTLD_BOOTSTRAP
/* The dynamic linker always uses versioning. */
assert (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL);
-#else
+# else
if (map->l_info[VERSYMIDX (DT_VERSYM)])
-#endif
+# endif
{
const ElfW(Half) *const version =
(const void *) D_PTR (map, l_info[VERSYMIDX (DT_VERSYM)]);
@@ -686,18 +708,24 @@ elf_machine_lazy_rel (struct link_map *map,
&map->l_versions[ndx],
(void *) (l_addr + r->r_offset));
}
-#ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
else
elf_machine_rel (map, r, &symtab[ELFW(R_SYM) (r->r_info)], NULL,
(void *) (l_addr + r->r_offset));
-#endif
+# endif
}
}
+ else if (__builtin_expect (r_type == R_386_IRELATIVE, 0))
+ {
+ Elf32_Addr value = map->l_addr + *reloc_addr;
+ value = ((Elf32_Addr (*) (void)) value) ();
+ *reloc_addr = value;
+ }
else
_dl_reloc_bad_type (map, r_type, 1);
}
-#ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
auto inline void
__attribute__ ((always_inline))
@@ -716,10 +744,16 @@ elf_machine_lazy_rela (struct link_map *map,
td->arg = (void*)reloc;
td->entry = _dl_tlsdesc_resolve_rela;
}
+ else if (__builtin_expect (r_type == R_386_IRELATIVE, 0))
+ {
+ Elf32_Addr value = map->l_addr + reloc->r_addend;
+ value = ((Elf32_Addr (*) (void)) value) ();
+ *reloc_addr = value;
+ }
else
_dl_reloc_bad_type (map, r_type, 1);
}
-#endif /* !RTLD_BOOTSTRAP */
+# endif /* !RTLD_BOOTSTRAP */
#endif /* RESOLVE_MAP */
diff --git a/sysdeps/i386/dl-tlsdesc.S b/sysdeps/i386/dl-tlsdesc.S
index db5005d9f4..4d17e59911 100644
--- a/sysdeps/i386/dl-tlsdesc.S
+++ b/sysdeps/i386/dl-tlsdesc.S
@@ -128,8 +128,7 @@ _dl_tlsdesc_dynamic:
.Lslow:
cfi_adjust_cfa_offset (28)
movl %ebx, 16(%esp)
- call __i686.get_pc_thunk.bx
- addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ LOAD_PIC_REG (bx)
call ___tls_get_addr@PLT
movl 16(%esp), %ebx
jmp .Lret
diff --git a/sysdeps/i386/elf/configure b/sysdeps/i386/elf/configure
index 12e92cd0eb..7a909d9a5f 100755..100644
--- a/sysdeps/i386/elf/configure
+++ b/sysdeps/i386/elf/configure
@@ -4,10 +4,10 @@
if test "$usetls" != no; then
# Check for support of thread-local storage handling in assembler and
# linker.
-{ echo "$as_me:$LINENO: checking for i386 TLS support" >&5
-echo $ECHO_N "checking for i386 TLS support... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for i386 TLS support" >&5
+$as_echo_n "checking for i386 TLS support... " >&6; }
if test "${libc_cv_386_tls+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<\EOF
.section ".tdata", "awT", @progbits
@@ -29,7 +29,7 @@ if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_386_tls=yes
else
@@ -37,8 +37,8 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_386_tls" >&5
-echo "${ECHO_T}$libc_cv_386_tls" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_386_tls" >&5
+$as_echo "$libc_cv_386_tls" >&6; }
if test $libc_cv_386_tls = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TLS_SUPPORT 1
diff --git a/sysdeps/i386/fpu/bits/mathinline.h b/sysdeps/i386/fpu/bits/mathinline.h
index a786cc69cd..8005997520 100644
--- a/sysdeps/i386/fpu/bits/mathinline.h
+++ b/sysdeps/i386/fpu/bits/mathinline.h
@@ -1,5 +1,5 @@
/* Inline math functions for i387.
- Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2003,2004,2006,2007
+ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2003,2004,2006,2007,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by John C. Bowman <bowman@math.ualberta.ca>, 1995.
@@ -153,6 +153,10 @@ __NTH (__signbitl (long double __x))
#if ((!defined __NO_MATH_INLINES || defined __LIBC_INTERNAL_MATH_INLINES) \
&& defined __OPTIMIZE__)
+/* The inline functions do not set errno or raise necessarily the
+ correct exceptions. */
+# undef math_errhandling
+
/* A macro to define float, double, and long double versions of various
math functions for the ix87 FPU. FUNC is the function name (which will
be suffixed with f and l for the float and long double version,
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index 4efc714b29..5231789be1 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -453,6 +453,10 @@ Test "exp10 (3) == 1000":
ildouble: 8
ldouble: 8
+# expm1
+Test "expm1 (1) == M_El - 1.0":
+ildouble: 1
+
# gamma
Test "gamma (-0.5) == log(2*sqrt(pi))":
double: 1
@@ -1134,6 +1138,9 @@ Function: "exp10":
ildouble: 8
ldouble: 8
+Function: "expm1":
+ildouble: 1
+
Function: "gamma":
double: 1
idouble: 1
diff --git a/sysdeps/i386/fpu/s_cos.S b/sysdeps/i386/fpu/s_cos.S
index ac8b1459d9..d341d008c5 100644
--- a/sysdeps/i386/fpu/s_cos.S
+++ b/sysdeps/i386/fpu/s_cos.S
@@ -1,15 +1,24 @@
/*
* Written by J.T. Conklin <jtc@netbsd.org>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
* Public domain.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
RCSID("$NetBSD: s_cos.S,v 1.5 1995/05/08 23:54:00 jtc Exp $")
ENTRY(__cos)
fldl 4(%esp)
- fcos
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fcos
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -25,5 +34,21 @@ ENTRY(__cos)
fstp %st(1)
fcos
ret
+3:
+#ifdef PIC
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+ popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+#else
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+#endif
+ jmp 4b
END (__cos)
weak_alias (__cos, cos)
diff --git a/sysdeps/i386/fpu/s_cosf.S b/sysdeps/i386/fpu/s_cosf.S
index 21f87aa874..578967ad3c 100644
--- a/sysdeps/i386/fpu/s_cosf.S
+++ b/sysdeps/i386/fpu/s_cosf.S
@@ -1,15 +1,24 @@
/*
* Written by J.T. Conklin <jtc@netbsd.org>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
* Public domain.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
RCSID("$NetBSD: s_cosf.S,v 1.3 1995/05/08 23:55:16 jtc Exp $")
ENTRY(__cosf)
flds 4(%esp)
- fcos
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fcos
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -25,5 +34,21 @@ ENTRY(__cosf)
fstp %st(1)
fcos
ret
+3:
+#ifdef PIC
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+ popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+#else
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+#endif
+ jmp 4b
END (__cosf)
weak_alias (__cosf, cosf)
diff --git a/sysdeps/i386/fpu/s_cosl.S b/sysdeps/i386/fpu/s_cosl.S
index 61c9010c99..27dd74f21b 100644
--- a/sysdeps/i386/fpu/s_cosl.S
+++ b/sysdeps/i386/fpu/s_cosl.S
@@ -3,15 +3,22 @@
* Public domain.
*
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
-RCSID("$NetBSD: $")
-
ENTRY(__cosl)
fldt 4(%esp)
- fcos
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fcos
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -27,5 +34,21 @@ ENTRY(__cosl)
fstp %st(1)
fcos
ret
+3:
+#ifdef PIC
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+ popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+#else
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+#endif
+ jmp 4b
END (__cosl)
weak_alias (__cosl, cosl)
diff --git a/sysdeps/i386/fpu/s_expm1.S b/sysdeps/i386/fpu/s_expm1.S
index e761183639..c690a458f8 100644
--- a/sysdeps/i386/fpu/s_expm1.S
+++ b/sysdeps/i386/fpu/s_expm1.S
@@ -22,6 +22,7 @@
/* Using: e^x - 1 = 2^(x * log2(e)) - 1 */
+#include <sysdep.h>
#include <machine/asm.h>
#ifdef __ELF__
@@ -48,6 +49,11 @@ l2e: .tfloat 1.442695040888963407359924681002
.text
ENTRY(__expm1)
+ movzwl 4+6(%esp), %eax
+ xorb $0x80, %ah // invert sign bit (now 1 is "positive")
+ cmpl $0xc086, %eax // is num >= 704?
+ jae HIDDEN_JUMPTARGET (__exp)
+
fldl 4(%esp) // x
fxam // Is NaN or +-Inf?
fstsw %ax
diff --git a/sysdeps/i386/fpu/s_expm1f.S b/sysdeps/i386/fpu/s_expm1f.S
index 88adb75b86..8645107274 100644
--- a/sysdeps/i386/fpu/s_expm1f.S
+++ b/sysdeps/i386/fpu/s_expm1f.S
@@ -22,6 +22,7 @@
/* Using: e^x - 1 = 2^(x * log2(e)) - 1 */
+#include <sysdep.h>
#include <machine/asm.h>
#ifdef __ELF__
@@ -48,6 +49,11 @@ l2e: .tfloat 1.442695040888963407359924681002
.text
ENTRY(__expm1f)
+ movzwl 4+2(%esp), %eax
+ xorb $0x80, %ah // invert sign bit (now 1 is "positive")
+ cmpl $0xc2b1, %eax // is num >= 88.5?
+ jae HIDDEN_JUMPTARGET (__expf)
+
flds 4(%esp) // x
fxam // Is NaN or +-Inf?
fstsw %ax
diff --git a/sysdeps/i386/fpu/s_expm1l.S b/sysdeps/i386/fpu/s_expm1l.S
index b69b22bc62..60b5b82e20 100644
--- a/sysdeps/i386/fpu/s_expm1l.S
+++ b/sysdeps/i386/fpu/s_expm1l.S
@@ -22,6 +22,7 @@
/* Using: e^x - 1 = 2^(x * log2(e)) - 1 */
+#include <sysdep.h>
#include <machine/asm.h>
#ifdef __ELF__
@@ -51,7 +52,7 @@ ENTRY(__expm1l)
movzwl 4+8(%esp), %eax // load sign bit and 15-bit exponent
xorb $0x80, %ah // invert sign bit (now 1 is "positive")
cmpl $0xc006, %eax // is num positive and exp >= 6 (number is >= 128.0)?
- jae __ieee754_expl // (if num is denormal, it is at least >= 64.0)
+ jae HIDDEN_JUMPTARGET (__expl) // (if num is denormal, it is at least >= 64.0)
fldt 4(%esp) // x
fxam // Is NaN or +-Inf?
diff --git a/sysdeps/i386/fpu/s_sin.S b/sysdeps/i386/fpu/s_sin.S
index eb22d7e98b..6b913992dc 100644
--- a/sysdeps/i386/fpu/s_sin.S
+++ b/sysdeps/i386/fpu/s_sin.S
@@ -1,15 +1,24 @@
/*
* Written by J.T. Conklin <jtc@netbsd.org>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
* Public domain.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
RCSID("$NetBSD: s_sin.S,v 1.5 1995/05/09 00:25:54 jtc Exp $")
ENTRY(__sin)
fldl 4(%esp)
- fsin
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fsin
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -25,5 +34,21 @@ ENTRY(__sin)
fstp %st(1)
fsin
ret
+3:
+#ifdef PIC
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+ popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+#else
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+#endif
+ jmp 4b
END (__sin)
weak_alias (__sin, sin)
diff --git a/sysdeps/i386/fpu/s_sinf.S b/sysdeps/i386/fpu/s_sinf.S
index 5ca45f52e2..67621f70f2 100644
--- a/sysdeps/i386/fpu/s_sinf.S
+++ b/sysdeps/i386/fpu/s_sinf.S
@@ -1,15 +1,24 @@
/*
* Written by J.T. Conklin <jtc@netbsd.org>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
* Public domain.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
RCSID("$NetBSD: s_sinf.S,v 1.3 1995/05/09 00:27:53 jtc Exp $")
ENTRY(__sinf)
flds 4(%esp)
- fsin
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fsin
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -25,5 +34,21 @@ ENTRY(__sinf)
fstp %st(1)
fsin
ret
+3:
+#ifdef PIC
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+ popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+#else
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+#endif
+ jmp 4b
END (__sinf)
weak_alias (__sinf, sinf)
diff --git a/sysdeps/i386/fpu/s_sinl.S b/sysdeps/i386/fpu/s_sinl.S
index 3e215de5e1..68c4f99668 100644
--- a/sysdeps/i386/fpu/s_sinl.S
+++ b/sysdeps/i386/fpu/s_sinl.S
@@ -3,15 +3,22 @@
* Public domain.
*
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
-RCSID("$NetBSD: $")
-
ENTRY(__sinl)
fldt 4(%esp)
- fsin
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fsin
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -27,5 +34,21 @@ ENTRY(__sinl)
fstp %st(1)
fsin
ret
+3:
+#ifdef PIC
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+ popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+#else
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+#endif
+ jmp 4b
END (__sinl)
weak_alias (__sinl, sinl)
diff --git a/sysdeps/i386/fpu/s_tan.S b/sysdeps/i386/fpu/s_tan.S
index 7b3547af4c..b35bb835de 100644
--- a/sysdeps/i386/fpu/s_tan.S
+++ b/sysdeps/i386/fpu/s_tan.S
@@ -1,15 +1,24 @@
/*
* Written by J.T. Conklin <jtc@netbsd.org>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
* Public domain.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
RCSID("$NetBSD: s_tan.S,v 1.5 1995/05/09 00:30:00 jtc Exp $")
ENTRY(__tan)
fldl 4(%esp)
- fptan
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fptan
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -26,5 +35,21 @@ ENTRY(__tan)
fptan
fstp %st(0)
ret
+3:
+#ifdef PIC
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+ popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+#else
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+#endif
+ jmp 4b
END (__tan)
weak_alias (__tan, tan)
diff --git a/sysdeps/i386/fpu/s_tanf.S b/sysdeps/i386/fpu/s_tanf.S
index 355dff9c8d..74bc22fceb 100644
--- a/sysdeps/i386/fpu/s_tanf.S
+++ b/sysdeps/i386/fpu/s_tanf.S
@@ -1,15 +1,24 @@
/*
* Written by J.T. Conklin <jtc@netbsd.org>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
* Public domain.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
RCSID("$NetBSD: s_tanf.S,v 1.3 1995/05/09 00:31:09 jtc Exp $")
ENTRY(__tanf)
flds 4(%esp)
- fptan
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fptan
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -26,5 +35,21 @@ ENTRY(__tanf)
fptan
fstp %st(0)
ret
+3:
+#ifdef PIC
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+ popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+#else
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+#endif
+ jmp 4b
END (__tanf)
weak_alias (__tanf, tanf)
diff --git a/sysdeps/i386/fpu/s_tanl.S b/sysdeps/i386/fpu/s_tanl.S
index f2bdd6a605..151b77113f 100644
--- a/sysdeps/i386/fpu/s_tanl.S
+++ b/sysdeps/i386/fpu/s_tanl.S
@@ -3,15 +3,22 @@
* Public domain.
*
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
-RCSID("$NetBSD: $")
-
ENTRY(__tanl)
fldt 4(%esp)
- fptan
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fptan
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -28,5 +35,21 @@ ENTRY(__tanl)
fptan
fstp %st(0)
ret
+3:
+#ifdef PIC
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ LOAD_PIC_REG (bx)
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+ popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+#else
+ call __errno_location@PLT
+ movl $EDOM, (%eax)
+#endif
+ jmp 4b
END (__tanl)
weak_alias (__tanl, tanl)
diff --git a/sysdeps/i386/i486/bits/atomic.h b/sysdeps/i386/i486/bits/atomic.h
index 21eea7112c..4ee6fef692 100644
--- a/sysdeps/i386/i486/bits/atomic.h
+++ b/sysdeps/i386/i486/bits/atomic.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2004, 2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -500,24 +500,34 @@ typedef uintmax_t uatomic_max_t;
#define atomic_delay() asm ("rep; nop")
-#define atomic_and(mem, mask) \
+#define __arch_and_body(lock, mem, mask) \
do { \
if (sizeof (*mem) == 1) \
- __asm __volatile (LOCK_PREFIX "andb %b1, %0" \
+ __asm __volatile (lock "andb %b1, %0" \
: "=m" (*mem) \
- : "iq" (mask), "m" (*mem)); \
+ : "iq" (mask), "m" (*mem), \
+ "i" (offsetof (tcbhead_t, multiple_threads))); \
else if (sizeof (*mem) == 2) \
- __asm __volatile (LOCK_PREFIX "andw %w1, %0" \
+ __asm __volatile (lock "andw %w1, %0" \
: "=m" (*mem) \
- : "ir" (mask), "m" (*mem)); \
+ : "ir" (mask), "m" (*mem), \
+ "i" (offsetof (tcbhead_t, multiple_threads))); \
else if (sizeof (*mem) == 4) \
- __asm __volatile (LOCK_PREFIX "andl %1, %0" \
+ __asm __volatile (lock "andl %1, %0" \
: "=m" (*mem) \
- : "ir" (mask), "m" (*mem)); \
+ : "ir" (mask), "m" (*mem), \
+ "i" (offsetof (tcbhead_t, multiple_threads))); \
else \
abort (); \
} while (0)
+#define __arch_cprefix \
+ "cmpl $0, %%gs:%P3\n\tje 0f\n\tlock\n0:\t"
+
+#define atomic_and(mem, mask) __arch_and_body (LOCK_PREFIX, mem, mask)
+
+#define catomic_and(mem, mask) __arch_and_body (__arch_cprefix, mem, mask)
+
#define __arch_or_body(lock, mem, mask) \
do { \
@@ -542,7 +552,4 @@ typedef uintmax_t uatomic_max_t;
#define atomic_or(mem, mask) __arch_or_body (LOCK_PREFIX, mem, mask)
-#define __arch_or_cprefix \
- "cmpl $0, %%gs:%P3\n\tje 0f\n\tlock\n0:\t"
-
-#define catomic_or(mem, mask) __arch_or_body (__arch_or_cprefix, mem, mask)
+#define catomic_or(mem, mask) __arch_or_body (__arch_cprefix, mem, mask)
diff --git a/sysdeps/i386/i686/Makefile b/sysdeps/i386/i686/Makefile
index c7378ab21e..dbcf1c33d3 100644
--- a/sysdeps/i386/i686/Makefile
+++ b/sysdeps/i386/i686/Makefile
@@ -5,3 +5,7 @@ endif
# So that we can test __m128's alignment
stack-align-test-flags += -msse
+
+ifeq ($(subdir),string)
+sysdep_routines += cacheinfo
+endif
diff --git a/sysdeps/i386/i686/bcopy.S b/sysdeps/i386/i686/bcopy.S
new file mode 100644
index 0000000000..15ef9419a4
--- /dev/null
+++ b/sysdeps/i386/i686/bcopy.S
@@ -0,0 +1,3 @@
+#define USE_AS_BCOPY
+#define memmove bcopy
+#include <sysdeps/i386/i686/memmove.S>
diff --git a/sysdeps/i386/i686/cacheinfo.c b/sysdeps/i386/i686/cacheinfo.c
new file mode 100644
index 0000000000..f8b7f521ca
--- /dev/null
+++ b/sysdeps/i386/i686/cacheinfo.c
@@ -0,0 +1,9 @@
+#define __x86_64_data_cache_size __x86_data_cache_size
+#define __x86_64_data_cache_size_half __x86_data_cache_size_half
+#define __x86_64_shared_cache_size __x86_shared_cache_size
+#define __x86_64_shared_cache_size_half __x86_shared_cache_size_half
+
+#define DISABLE_PREFETCHW
+#define DISABLE_PREFERRED_MEMORY_INSTRUCTION
+
+#include <sysdeps/x86_64/cacheinfo.c>
diff --git a/sysdeps/i386/i686/memcpy.S b/sysdeps/i386/i686/memcpy.S
index 0b2da1ea27..86ee082beb 100644
--- a/sysdeps/i386/i686/memcpy.S
+++ b/sysdeps/i386/i686/memcpy.S
@@ -32,11 +32,11 @@
.text
#if defined PIC && !defined NOT_IN_libc
-ENTRY (__memcpy_chk)
+ENTRY_CHK (__memcpy_chk)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
jb HIDDEN_JUMPTARGET (__chk_fail)
-END (__memcpy_chk)
+END_CHK (__memcpy_chk)
#endif
ENTRY (BP_SYM (memcpy))
ENTER
diff --git a/sysdeps/i386/i686/memmove.S b/sysdeps/i386/i686/memmove.S
index b93b5c729f..981f14f4e0 100644
--- a/sysdeps/i386/i686/memmove.S
+++ b/sysdeps/i386/i686/memmove.S
@@ -26,18 +26,27 @@
#define PARMS LINKAGE+4 /* one spilled register */
#define RTN PARMS
-#define DEST RTN+RTN_SIZE
-#define SRC DEST+PTR_SIZE
-#define LEN SRC+PTR_SIZE
.text
-#if defined PIC && !defined NOT_IN_libc
-ENTRY (__memmove_chk)
+
+#ifdef USE_AS_BCOPY
+# define SRC RTN+RTN_SIZE
+# define DEST SRC+PTR_SIZE
+# define LEN DEST+PTR_SIZE
+#else
+# define DEST RTN+RTN_SIZE
+# define SRC DEST+PTR_SIZE
+# define LEN SRC+PTR_SIZE
+
+# if defined PIC && !defined NOT_IN_libc
+ENTRY_CHK (__memmove_chk)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
jb HIDDEN_JUMPTARGET (__chk_fail)
-END (__memmove_chk)
+END_CHK (__memmove_chk)
+# endif
#endif
+
ENTRY (BP_SYM (memmove))
ENTER
@@ -69,8 +78,10 @@ ENTRY (BP_SYM (memmove))
movsl
movl %edx, %esi
cfi_restore (esi)
+#ifndef USE_AS_BCOPY
movl DEST(%esp), %eax
RETURN_BOUNDED_POINTER (DEST(%esp))
+#endif
popl %edi
cfi_adjust_cfa_offset (-4)
@@ -101,8 +112,10 @@ ENTRY (BP_SYM (memmove))
movsl
movl %edx, %esi
cfi_restore (esi)
+#ifndef USE_AS_BCOPY
movl DEST(%esp), %eax
RETURN_BOUNDED_POINTER (DEST(%esp))
+#endif
cld
popl %edi
@@ -112,4 +125,6 @@ ENTRY (BP_SYM (memmove))
LEAVE
RET_PTR
END (BP_SYM (memmove))
+#ifndef USE_AS_BCOPY
libc_hidden_builtin_def (memmove)
+#endif
diff --git a/sysdeps/i386/i686/mempcpy.S b/sysdeps/i386/i686/mempcpy.S
index 6437e4a5d4..c10686fb3d 100644
--- a/sysdeps/i386/i686/mempcpy.S
+++ b/sysdeps/i386/i686/mempcpy.S
@@ -32,11 +32,11 @@
.text
#if defined PIC && !defined NOT_IN_libc
-ENTRY (__mempcpy_chk)
+ENTRY_CHK (__mempcpy_chk)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
jb HIDDEN_JUMPTARGET (__chk_fail)
-END (__mempcpy_chk)
+END_CHK (__mempcpy_chk)
#endif
ENTRY (BP_SYM (__mempcpy))
ENTER
diff --git a/sysdeps/i386/i686/memset.S b/sysdeps/i386/i686/memset.S
index dfa1aa7019..b343af7b64 100644
--- a/sysdeps/i386/i686/memset.S
+++ b/sysdeps/i386/i686/memset.S
@@ -40,11 +40,11 @@
.text
#if defined PIC && !defined NOT_IN_libc && !BZERO_P
-ENTRY (__memset_chk)
+ENTRY_CHK (__memset_chk)
movl 12(%esp), %eax
cmpl %eax, 16(%esp)
jb HIDDEN_JUMPTARGET (__chk_fail)
-END (__memset_chk)
+END_CHK (__memset_chk)
#endif
ENTRY (BP_SYM (memset))
ENTER
diff --git a/sysdeps/i386/i686/multiarch/Makefile b/sysdeps/i386/i686/multiarch/Makefile
new file mode 100644
index 0000000000..fbad9ae734
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/Makefile
@@ -0,0 +1,19 @@
+ifeq ($(subdir),csu)
+aux += init-arch
+gen-as-const-headers += ifunc-defines.sym
+endif
+
+ifeq ($(subdir),string)
+sysdep_routines += bzero-sse2 memset-sse2 memcpy-ssse3 mempcpy-ssse3 \
+ memmove-ssse3 memcpy-ssse3-rep mempcpy-ssse3-rep \
+ memmove-ssse3-rep bcopy-ssse3 bcopy-ssse3-rep \
+ memset-sse2-rep bzero-sse2-rep
+ifeq (yes,$(config-cflags-sse4))
+sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c
+CFLAGS-strcspn-c.c += -msse4
+CFLAGS-strpbrk-c.c += -msse4
+CFLAGS-strspn-c.c += -msse4
+CFLAGS-strstr.c += -msse4
+CFLAGS-strcasestr.c += -msse4
+endif
+endif
diff --git a/sysdeps/i386/i686/multiarch/bcopy-ssse3-rep.S b/sysdeps/i386/i686/multiarch/bcopy-ssse3-rep.S
new file mode 100644
index 0000000000..cbc8b420e8
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/bcopy-ssse3-rep.S
@@ -0,0 +1,4 @@
+#define USE_AS_MEMMOVE
+#define USE_AS_BCOPY
+#define MEMCPY __bcopy_ssse3_rep
+#include "memcpy-ssse3-rep.S"
diff --git a/sysdeps/i386/i686/multiarch/bcopy-ssse3.S b/sysdeps/i386/i686/multiarch/bcopy-ssse3.S
new file mode 100644
index 0000000000..36aac44b9c
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/bcopy-ssse3.S
@@ -0,0 +1,4 @@
+#define USE_AS_MEMMOVE
+#define USE_AS_BCOPY
+#define MEMCPY __bcopy_ssse3
+#include "memcpy-ssse3.S"
diff --git a/sysdeps/i386/i686/multiarch/bcopy.S b/sysdeps/i386/i686/multiarch/bcopy.S
new file mode 100644
index 0000000000..8671bf684e
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/bcopy.S
@@ -0,0 +1,89 @@
+/* Multiple versions of bcopy
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib. */
+#ifndef NOT_IN_libc
+# ifdef SHARED
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ .p2align 4
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+
+ .text
+ENTRY(bcopy)
+ .type bcopy, @gnu_indirect_function
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ call __i686.get_pc_thunk.bx
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+ jne 1f
+ call __init_cpu_features
+1: leal __bcopy_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __bcopy_ssse3@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __bcopy_ssse3_rep@GOTOFF(%ebx), %eax
+2: popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+ ret
+END(bcopy)
+# else
+ .text
+ENTRY(bcopy)
+ .type bcopy, @gnu_indirect_function
+ cmpl $0, KIND_OFFSET+__cpu_features
+ jne 1f
+ call __init_cpu_features
+1: leal __bcopy_ia32, %eax
+ testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
+ jz 2f
+ leal __bcopy_ssse3, %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features
+ jz 2f
+ leal __bcopy_ssse3_rep, %eax
+2: ret
+END(bcopy)
+# endif
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __bcopy_ia32, @function; \
+ .p2align 4; \
+ __bcopy_ia32: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __bcopy_ia32, .-__bcopy_ia32
+
+#endif
+
+#include "../bcopy.S"
diff --git a/sysdeps/i386/i686/multiarch/bzero-sse2-rep.S b/sysdeps/i386/i686/multiarch/bzero-sse2-rep.S
new file mode 100644
index 0000000000..507b288bb3
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/bzero-sse2-rep.S
@@ -0,0 +1,3 @@
+#define USE_AS_BZERO
+#define __memset_sse2_rep __bzero_sse2_rep
+#include "memset-sse2-rep.S"
diff --git a/sysdeps/i386/i686/multiarch/bzero-sse2.S b/sysdeps/i386/i686/multiarch/bzero-sse2.S
new file mode 100644
index 0000000000..8d04512e4e
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/bzero-sse2.S
@@ -0,0 +1,3 @@
+#define USE_AS_BZERO
+#define __memset_sse2 __bzero_sse2
+#include "memset-sse2.S"
diff --git a/sysdeps/i386/i686/multiarch/bzero.S b/sysdeps/i386/i686/multiarch/bzero.S
new file mode 100644
index 0000000000..8c740a42dc
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/bzero.S
@@ -0,0 +1,97 @@
+/* Multiple versions of bzero
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib. */
+#ifndef NOT_IN_libc
+# ifdef SHARED
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ .p2align 4
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+
+ .text
+ENTRY(__bzero)
+ .type __bzero, @gnu_indirect_function
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ call __i686.get_pc_thunk.bx
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+ jne 1f
+ call __init_cpu_features
+1: leal __bzero_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __bzero_sse2@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __bzero_sse2_rep@GOTOFF(%ebx), %eax
+2: popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+ ret
+END(__bzero)
+# else
+ .text
+ENTRY(__bzero)
+ .type __bzero, @gnu_indirect_function
+ cmpl $0, KIND_OFFSET+__cpu_features
+ jne 1f
+ call __init_cpu_features
+1: leal __bzero_ia32, %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features
+ jz 2f
+ leal __bzero_sse2, %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features
+ jz 2f
+ leal __bzero_sse2_rep, %eax
+2: ret
+END(__bzero)
+# endif
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __bzero_ia32, @function; \
+ .p2align 4; \
+ __bzero_ia32: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __bzero_ia32, .-__bzero_ia32
+
+# ifdef SHARED
+# undef libc_hidden_builtin_def
+/* IFUNC doesn't work with the hidden functions in shared library since
+ they will be called without setting up EBX needed for PLT which is
+ used by IFUNC. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI___bzero; __GI___bzero = __bzero_ia32
+# endif
+#endif
+
+#include "../bzero.S"
diff --git a/sysdeps/i386/i686/multiarch/ifunc-defines.sym b/sysdeps/i386/i686/multiarch/ifunc-defines.sym
new file mode 100644
index 0000000000..eb1538abcc
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/ifunc-defines.sym
@@ -0,0 +1,20 @@
+#include "init-arch.h"
+#include <stddef.h>
+
+--
+
+CPU_FEATURES_SIZE sizeof (struct cpu_features)
+KIND_OFFSET offsetof (struct cpu_features, kind)
+CPUID_OFFSET offsetof (struct cpu_features, cpuid)
+CPUID_SIZE sizeof (struct cpuid_registers)
+CPUID_EAX_OFFSET offsetof (struct cpuid_registers, eax)
+CPUID_EBX_OFFSET offsetof (struct cpuid_registers, ebx)
+CPUID_ECX_OFFSET offsetof (struct cpuid_registers, ecx)
+CPUID_EDX_OFFSET offsetof (struct cpuid_registers, edx)
+FAMILY_OFFSET offsetof (struct cpu_features, family)
+MODEL_OFFSET offsetof (struct cpu_features, model)
+FEATURE_OFFSET offsetof (struct cpu_features, feature)
+FEATURE_SIZE sizeof (unsigned int)
+
+COMMON_CPUID_INDEX_1
+FEATURE_INDEX_1
diff --git a/sysdeps/i386/i686/multiarch/init-arch.c b/sysdeps/i386/i686/multiarch/init-arch.c
new file mode 100644
index 0000000000..00a94d83dc
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/init-arch.c
@@ -0,0 +1 @@
+#include <sysdeps/x86_64/multiarch/init-arch.c>
diff --git a/sysdeps/i386/i686/multiarch/init-arch.h b/sysdeps/i386/i686/multiarch/init-arch.h
new file mode 100644
index 0000000000..cd2d0befee
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/init-arch.h
@@ -0,0 +1 @@
+#include <sysdeps/x86_64/multiarch/init-arch.h>
diff --git a/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S b/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
new file mode 100644
index 0000000000..b26037d279
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
@@ -0,0 +1,1785 @@
+/* memcpy with SSSE3 and REP string.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+
+#if !defined NOT_IN_libc \
+ && (defined SHARED \
+ || defined USE_AS_MEMMOVE \
+ || !defined USE_MULTIARCH)
+
+#include "asm-syntax.h"
+
+#ifndef MEMCPY
+# define MEMCPY __memcpy_ssse3_rep
+# define MEMCPY_CHK __memcpy_chk_ssse3_rep
+#endif
+
+#ifdef USE_AS_BCOPY
+# define SRC PARMS
+# define DEST SRC+4
+# define LEN DEST+4
+#else
+# define DEST PARMS
+# define SRC DEST+4
+# define LEN SRC+4
+#endif
+
+#define CFI_PUSH(REG) \
+ cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (REG, 0)
+
+#define CFI_POP(REG) \
+ cfi_adjust_cfa_offset (-4); \
+ cfi_restore (REG)
+
+#define PUSH(REG) pushl REG; CFI_PUSH (REG)
+#define POP(REG) popl REG; CFI_POP (REG)
+
+#ifdef SHARED
+# define PARMS 8 /* Preserve EBX. */
+# define ENTRANCE PUSH (%ebx);
+# define RETURN_END POP (%ebx); ret
+# define RETURN RETURN_END; CFI_PUSH (%ebx)
+# define JMPTBL(I, B) I - B
+
+/* Load an entry in a jump table into EBX and branch to it. TABLE is a
+ jump table with relative offsets. INDEX is a register contains the
+ index into the jump table. SCALE is the scale of INDEX. */
+# define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \
+ /* We first load PC into EBX. */ \
+ call __i686.get_pc_thunk.bx; \
+ /* Get the address of the jump table. */ \
+ addl $(TABLE - .), %ebx; \
+ /* Get the entry and convert the relative offset to the \
+ absolute address. */ \
+ addl (%ebx,INDEX,SCALE), %ebx; \
+ /* We loaded the jump table. Go. */ \
+ jmp *%ebx
+
+# define BRANCH_TO_JMPTBL_ENTRY_VALUE(TABLE) \
+ addl $(TABLE - .), %ebx
+
+# define BRANCH_TO_JMPTBL_ENTRY_TAIL(TABLE, INDEX, SCALE) \
+ addl (%ebx,INDEX,SCALE), %ebx; \
+ /* We loaded the jump table. Go. */ \
+ jmp *%ebx
+
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ ALIGN (4)
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+#else
+# define PARMS 4
+# define ENTRANCE
+# define RETURN_END ret
+# define RETURN RETURN_END
+# define JMPTBL(I, B) I
+
+/* Branch to an entry in a jump table. TABLE is a jump table with
+ absolute offsets. INDEX is a register contains the index into the
+ jump table. SCALE is the scale of INDEX. */
+# define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \
+ jmp *TABLE(,INDEX,SCALE)
+
+# define BRANCH_TO_JMPTBL_ENTRY_VALUE(TABLE)
+
+# define BRANCH_TO_JMPTBL_ENTRY_TAIL(TABLE, INDEX, SCALE) \
+ jmp *TABLE(,INDEX,SCALE)
+#endif
+
+ .section .text.ssse3,"ax",@progbits
+#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BCOPY
+ENTRY (MEMCPY_CHK)
+ movl 12(%esp), %eax
+ cmpl %eax, 16(%esp)
+ jb HIDDEN_JUMPTARGET (__chk_fail)
+END (MEMCPY_CHK)
+#endif
+ENTRY (MEMCPY)
+ ENTRANCE
+ movl LEN(%esp), %ecx
+ movl SRC(%esp), %eax
+ movl DEST(%esp), %edx
+
+#ifdef USE_AS_MEMMOVE
+ cmp %eax, %edx
+ jb L(copy_forward)
+ je L(fwd_write_0bytes)
+ cmp $32, %ecx
+ jge L(memmove_bwd)
+ jmp L(bk_write_less32bytes_2)
+L(memmove_bwd):
+ add %ecx, %eax
+ cmp %eax, %edx
+ movl SRC(%esp), %eax
+ jb L(copy_backward)
+
+L(copy_forward):
+#endif
+ cmp $48, %ecx
+ jge L(48bytesormore)
+
+L(fwd_write_less32bytes):
+#ifndef USE_AS_MEMMOVE
+ cmp %dl, %al
+ jl L(bk_write)
+#endif
+ add %ecx, %edx
+ add %ecx, %eax
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48bytes_fwd), %ecx, 4)
+#ifndef USE_AS_MEMMOVE
+L(bk_write):
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48_bytes_bwd), %ecx, 4)
+#endif
+
+ ALIGN (4)
+/* ECX > 32 and EDX is 4 byte aligned. */
+L(48bytesormore):
+ movdqu (%eax), %xmm0
+ PUSH (%edi)
+ movl %edx, %edi
+ and $-16, %edx
+ PUSH (%esi)
+ add $16, %edx
+ movl %edi, %esi
+ sub %edx, %edi
+ add %edi, %ecx
+ sub %edi, %eax
+
+#ifdef SHARED_CACHE_SIZE_HALF
+ cmp $SHARED_CACHE_SIZE_HALF, %ecx
+#else
+# ifdef SHARED
+ call __i686.get_pc_thunk.bx
+ add $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmp __x86_shared_cache_size_half@GOTOFF(%ebx), %ecx
+# else
+ cmp __x86_shared_cache_size_half, %ecx
+# endif
+#endif
+
+ mov %eax, %edi
+ jge L(large_page)
+ and $0xf, %edi
+ jz L(shl_0)
+
+ BRANCH_TO_JMPTBL_ENTRY (L(shl_table), %edi, 4)
+
+ ALIGN (4)
+L(shl_0):
+ movdqu %xmm0, (%esi)
+ xor %edi, %edi
+ cmp $127, %ecx
+ ja L(shl_0_gobble)
+ lea -32(%ecx), %ecx
+L(shl_0_loop):
+ movdqa (%eax, %edi), %xmm0
+ movdqa 16(%eax, %edi), %xmm1
+ sub $32, %ecx
+ movdqa %xmm0, (%edx, %edi)
+ movdqa %xmm1, 16(%edx, %edi)
+ lea 32(%edi), %edi
+ jl L(shl_0_end)
+
+ movdqa (%eax, %edi), %xmm0
+ movdqa 16(%eax, %edi), %xmm1
+ sub $32, %ecx
+ movdqa %xmm0, (%edx, %edi)
+ movdqa %xmm1, 16(%edx, %edi)
+ lea 32(%edi), %edi
+ jl L(shl_0_end)
+
+ movdqa (%eax, %edi), %xmm0
+ movdqa 16(%eax, %edi), %xmm1
+ sub $32, %ecx
+ movdqa %xmm0, (%edx, %edi)
+ movdqa %xmm1, 16(%edx, %edi)
+ lea 32(%edi), %edi
+ jl L(shl_0_end)
+
+ movdqa (%eax, %edi), %xmm0
+ movdqa 16(%eax, %edi), %xmm1
+ sub $32, %ecx
+ movdqa %xmm0, (%edx, %edi)
+ movdqa %xmm1, 16(%edx, %edi)
+ lea 32(%edi), %edi
+L(shl_0_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ add %edi, %eax
+ POP (%esi)
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48bytes_fwd), %ecx, 4)
+
+L(shl_0_gobble):
+
+#ifdef DATA_CACHE_SIZE_HALF
+ cmp $DATA_CACHE_SIZE_HALF, %ecx
+#else
+# ifdef SHARED
+ call __i686.get_pc_thunk.bx
+ add $_GLOBAL_OFFSET_TABLE_, %ebx
+ mov __x86_data_cache_size_half@GOTOFF(%ebx), %edi
+# else
+ mov __x86_data_cache_size_half, %edi
+# endif
+#endif
+ mov %edi, %esi
+ shr $3, %esi
+ sub %esi, %edi
+ cmp %edi, %ecx
+ jge L(shl_0_gobble_mem_start)
+ lea -128(%ecx), %ecx
+ ALIGN (4)
+L(shl_0_gobble_cache_loop):
+ movdqa (%eax), %xmm0
+ movaps 0x10(%eax), %xmm1
+ movaps 0x20(%eax), %xmm2
+ movaps 0x30(%eax), %xmm3
+ movaps 0x40(%eax), %xmm4
+ movaps 0x50(%eax), %xmm5
+ movaps 0x60(%eax), %xmm6
+ movaps 0x70(%eax), %xmm7
+ lea 0x80(%eax), %eax
+ sub $128, %ecx
+ movdqa %xmm0, (%edx)
+ movaps %xmm1, 0x10(%edx)
+ movaps %xmm2, 0x20(%edx)
+ movaps %xmm3, 0x30(%edx)
+ movaps %xmm4, 0x40(%edx)
+ movaps %xmm5, 0x50(%edx)
+ movaps %xmm6, 0x60(%edx)
+ movaps %xmm7, 0x70(%edx)
+ lea 0x80(%edx), %edx
+
+ jge L(shl_0_gobble_cache_loop)
+L(shl_0_gobble_cache_loop_tail):
+ cmp $-0x40, %ecx
+ lea 0x80(%ecx), %ecx
+ jl L(shl_0_cache_less_64bytes)
+
+ movdqa (%eax), %xmm0
+ sub $0x40, %ecx
+ movdqa 0x10(%eax), %xmm1
+
+ movdqa %xmm0, (%edx)
+ movdqa %xmm1, 0x10(%edx)
+
+ movdqa 0x20(%eax), %xmm0
+ movdqa 0x30(%eax), %xmm1
+ add $0x40, %eax
+
+ movdqa %xmm0, 0x20(%edx)
+ movdqa %xmm1, 0x30(%edx)
+ add $0x40, %edx
+L(shl_0_cache_less_64bytes):
+ cmp $0x20, %ecx
+ jl L(shl_0_cache_less_32bytes)
+ movdqa (%eax), %xmm0
+ sub $0x20, %ecx
+ movdqa 0x10(%eax), %xmm1
+ add $0x20, %eax
+ movdqa %xmm0, (%edx)
+ movdqa %xmm1, 0x10(%edx)
+ add $0x20, %edx
+L(shl_0_cache_less_32bytes):
+ cmp $0x10, %ecx
+ jl L(shl_0_cache_less_16bytes)
+ sub $0x10, %ecx
+ movdqa (%eax), %xmm0
+ add $0x10, %eax
+ movdqa %xmm0, (%edx)
+ add $0x10, %edx
+L(shl_0_cache_less_16bytes):
+ add %ecx, %edx
+ add %ecx, %eax
+ POP (%esi)
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48bytes_fwd), %ecx, 4)
+
+
+ ALIGN (4)
+L(shl_0_gobble_mem_start):
+ cmp %al, %dl
+ je L(copy_page_by_rep)
+ lea -128(%ecx), %ecx
+L(shl_0_gobble_mem_loop):
+ prefetchnta 0x1c0(%eax)
+ prefetchnta 0x280(%eax)
+ prefetchnta 0x1c0(%edx)
+ prefetchnta 0x280(%edx)
+
+ movdqa (%eax), %xmm0
+ movaps 0x10(%eax), %xmm1
+ movaps 0x20(%eax), %xmm2
+ movaps 0x30(%eax), %xmm3
+ movaps 0x40(%eax), %xmm4
+ movaps 0x50(%eax), %xmm5
+ movaps 0x60(%eax), %xmm6
+ movaps 0x70(%eax), %xmm7
+ lea 0x80(%eax), %eax
+ sub $0x80, %ecx
+ movdqa %xmm0, (%edx)
+ movaps %xmm1, 0x10(%edx)
+ movaps %xmm2, 0x20(%edx)
+ movaps %xmm3, 0x30(%edx)
+ movaps %xmm4, 0x40(%edx)
+ movaps %xmm5, 0x50(%edx)
+ movaps %xmm6, 0x60(%edx)
+ movaps %xmm7, 0x70(%edx)
+ lea 0x80(%edx), %edx
+
+ jge L(shl_0_gobble_mem_loop)
+ cmp $-0x40, %ecx
+ lea 0x80(%ecx), %ecx
+ jl L(shl_0_mem_less_64bytes)
+
+ movdqa (%eax), %xmm0
+ sub $0x40, %ecx
+ movdqa 0x10(%eax), %xmm1
+
+ movdqa %xmm0, (%edx)
+ movdqa %xmm1, 0x10(%edx)
+
+ movdqa 0x20(%eax), %xmm0
+ movdqa 0x30(%eax), %xmm1
+ add $0x40, %eax
+
+ movdqa %xmm0, 0x20(%edx)
+ movdqa %xmm1, 0x30(%edx)
+ add $0x40, %edx
+L(shl_0_mem_less_64bytes):
+ cmp $0x20, %ecx
+ jl L(shl_0_mem_less_32bytes)
+ movdqa (%eax), %xmm0
+ sub $0x20, %ecx
+ movdqa 0x10(%eax), %xmm1
+ add $0x20, %eax
+ movdqa %xmm0, (%edx)
+ movdqa %xmm1, 0x10(%edx)
+ add $0x20, %edx
+L(shl_0_mem_less_32bytes):
+ cmp $0x10, %ecx
+ jl L(shl_0_mem_less_16bytes)
+ sub $0x10, %ecx
+ movdqa (%eax), %xmm0
+ add $0x10, %eax
+ movdqa %xmm0, (%edx)
+ add $0x10, %edx
+L(shl_0_mem_less_16bytes):
+ add %ecx, %edx
+ add %ecx, %eax
+ POP (%esi)
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48bytes_fwd), %ecx, 4)
+
+
+ ALIGN (4)
+L(shl_1):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -1(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_1_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $1, %xmm2, %xmm3
+ palignr $1, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_1_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $1, %xmm2, %xmm3
+ palignr $1, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_1_loop)
+
+L(shl_1_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 1(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_2):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -2(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_2_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $2, %xmm2, %xmm3
+ palignr $2, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_2_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $2, %xmm2, %xmm3
+ palignr $2, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_2_loop)
+
+L(shl_2_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 2(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_3):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -3(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_3_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $3, %xmm2, %xmm3
+ palignr $3, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_3_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $3, %xmm2, %xmm3
+ palignr $3, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_3_loop)
+
+L(shl_3_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 3(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_4):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -4(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_4_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $4, %xmm2, %xmm3
+ palignr $4, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_4_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $4, %xmm2, %xmm3
+ palignr $4, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_4_loop)
+
+L(shl_4_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 4(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_5):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -5(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_5_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $5, %xmm2, %xmm3
+ palignr $5, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_5_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $5, %xmm2, %xmm3
+ palignr $5, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_5_loop)
+
+L(shl_5_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 5(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+
+ ALIGN (4)
+L(shl_6):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -6(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_6_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $6, %xmm2, %xmm3
+ palignr $6, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_6_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $6, %xmm2, %xmm3
+ palignr $6, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_6_loop)
+
+L(shl_6_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 6(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_7):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -7(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_7_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $7, %xmm2, %xmm3
+ palignr $7, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_7_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $7, %xmm2, %xmm3
+ palignr $7, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_7_loop)
+
+L(shl_7_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 7(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_8):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -8(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_8_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $8, %xmm2, %xmm3
+ palignr $8, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_8_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $8, %xmm2, %xmm3
+ palignr $8, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_8_loop)
+
+L(shl_8_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 8(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_9):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -9(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_9_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $9, %xmm2, %xmm3
+ palignr $9, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_9_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $9, %xmm2, %xmm3
+ palignr $9, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_9_loop)
+
+L(shl_9_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 9(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_10):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -10(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_10_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $10, %xmm2, %xmm3
+ palignr $10, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_10_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $10, %xmm2, %xmm3
+ palignr $10, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_10_loop)
+
+L(shl_10_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 10(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_11):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -11(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_11_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $11, %xmm2, %xmm3
+ palignr $11, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_11_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $11, %xmm2, %xmm3
+ palignr $11, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_11_loop)
+
+L(shl_11_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 11(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_12):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -12(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_12_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $12, %xmm2, %xmm3
+ palignr $12, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_12_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $12, %xmm2, %xmm3
+ palignr $12, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_12_loop)
+
+L(shl_12_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 12(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_13):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -13(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_13_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $13, %xmm2, %xmm3
+ palignr $13, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_13_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $13, %xmm2, %xmm3
+ palignr $13, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_13_loop)
+
+L(shl_13_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 13(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_14):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -14(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_14_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $14, %xmm2, %xmm3
+ palignr $14, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_14_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $14, %xmm2, %xmm3
+ palignr $14, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_14_loop)
+
+L(shl_14_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 14(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+
+ ALIGN (4)
+L(shl_15):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -15(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_15_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $15, %xmm2, %xmm3
+ palignr $15, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_15_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $15, %xmm2, %xmm3
+ palignr $15, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_15_loop)
+
+L(shl_15_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 15(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+
+ ALIGN (4)
+L(fwd_write_44bytes):
+ movl -44(%eax), %ecx
+ movl %ecx, -44(%edx)
+L(fwd_write_40bytes):
+ movl -40(%eax), %ecx
+ movl %ecx, -40(%edx)
+L(fwd_write_36bytes):
+ movl -36(%eax), %ecx
+ movl %ecx, -36(%edx)
+L(fwd_write_32bytes):
+ movl -32(%eax), %ecx
+ movl %ecx, -32(%edx)
+L(fwd_write_28bytes):
+ movl -28(%eax), %ecx
+ movl %ecx, -28(%edx)
+L(fwd_write_24bytes):
+ movl -24(%eax), %ecx
+ movl %ecx, -24(%edx)
+L(fwd_write_20bytes):
+ movl -20(%eax), %ecx
+ movl %ecx, -20(%edx)
+L(fwd_write_16bytes):
+ movl -16(%eax), %ecx
+ movl %ecx, -16(%edx)
+L(fwd_write_12bytes):
+ movl -12(%eax), %ecx
+ movl %ecx, -12(%edx)
+L(fwd_write_8bytes):
+ movl -8(%eax), %ecx
+ movl %ecx, -8(%edx)
+L(fwd_write_4bytes):
+ movl -4(%eax), %ecx
+ movl %ecx, -4(%edx)
+L(fwd_write_0bytes):
+#ifndef USE_AS_BCOPY
+# ifdef USE_AS_MEMPCPY
+ movl %edx, %eax
+# else
+ movl DEST(%esp), %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(fwd_write_5bytes):
+ movl -5(%eax), %ecx
+ movl -4(%eax), %eax
+ movl %ecx, -5(%edx)
+ movl %eax, -4(%edx)
+#ifndef USE_AS_BCOPY
+# ifdef USE_AS_MEMPCPY
+ movl %edx, %eax
+# else
+ movl DEST(%esp), %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(fwd_write_45bytes):
+ movl -45(%eax), %ecx
+ movl %ecx, -45(%edx)
+L(fwd_write_41bytes):
+ movl -41(%eax), %ecx
+ movl %ecx, -41(%edx)
+L(fwd_write_37bytes):
+ movl -37(%eax), %ecx
+ movl %ecx, -37(%edx)
+L(fwd_write_33bytes):
+ movl -33(%eax), %ecx
+ movl %ecx, -33(%edx)
+L(fwd_write_29bytes):
+ movl -29(%eax), %ecx
+ movl %ecx, -29(%edx)
+L(fwd_write_25bytes):
+ movl -25(%eax), %ecx
+ movl %ecx, -25(%edx)
+L(fwd_write_21bytes):
+ movl -21(%eax), %ecx
+ movl %ecx, -21(%edx)
+L(fwd_write_17bytes):
+ movl -17(%eax), %ecx
+ movl %ecx, -17(%edx)
+L(fwd_write_13bytes):
+ movl -13(%eax), %ecx
+ movl %ecx, -13(%edx)
+L(fwd_write_9bytes):
+ movl -9(%eax), %ecx
+ movl %ecx, -9(%edx)
+ movl -5(%eax), %ecx
+ movl %ecx, -5(%edx)
+L(fwd_write_1bytes):
+ movzbl -1(%eax), %ecx
+ movb %cl, -1(%edx)
+#ifndef USE_AS_BCOPY
+# ifdef USE_AS_MEMPCPY
+ movl %edx, %eax
+# else
+ movl DEST(%esp), %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(fwd_write_46bytes):
+ movl -46(%eax), %ecx
+ movl %ecx, -46(%edx)
+L(fwd_write_42bytes):
+ movl -42(%eax), %ecx
+ movl %ecx, -42(%edx)
+L(fwd_write_38bytes):
+ movl -38(%eax), %ecx
+ movl %ecx, -38(%edx)
+L(fwd_write_34bytes):
+ movl -34(%eax), %ecx
+ movl %ecx, -34(%edx)
+L(fwd_write_30bytes):
+ movl -30(%eax), %ecx
+ movl %ecx, -30(%edx)
+L(fwd_write_26bytes):
+ movl -26(%eax), %ecx
+ movl %ecx, -26(%edx)
+L(fwd_write_22bytes):
+ movl -22(%eax), %ecx
+ movl %ecx, -22(%edx)
+L(fwd_write_18bytes):
+ movl -18(%eax), %ecx
+ movl %ecx, -18(%edx)
+L(fwd_write_14bytes):
+ movl -14(%eax), %ecx
+ movl %ecx, -14(%edx)
+L(fwd_write_10bytes):
+ movl -10(%eax), %ecx
+ movl %ecx, -10(%edx)
+L(fwd_write_6bytes):
+ movl -6(%eax), %ecx
+ movl %ecx, -6(%edx)
+L(fwd_write_2bytes):
+ movzwl -2(%eax), %ecx
+ movw %cx, -2(%edx)
+#ifndef USE_AS_BCOPY
+# ifdef USE_AS_MEMPCPY
+ movl %edx, %eax
+# else
+ movl DEST(%esp), %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(fwd_write_47bytes):
+ movl -47(%eax), %ecx
+ movl %ecx, -47(%edx)
+L(fwd_write_43bytes):
+ movl -43(%eax), %ecx
+ movl %ecx, -43(%edx)
+L(fwd_write_39bytes):
+ movl -39(%eax), %ecx
+ movl %ecx, -39(%edx)
+L(fwd_write_35bytes):
+ movl -35(%eax), %ecx
+ movl %ecx, -35(%edx)
+L(fwd_write_31bytes):
+ movl -31(%eax), %ecx
+ movl %ecx, -31(%edx)
+L(fwd_write_27bytes):
+ movl -27(%eax), %ecx
+ movl %ecx, -27(%edx)
+L(fwd_write_23bytes):
+ movl -23(%eax), %ecx
+ movl %ecx, -23(%edx)
+L(fwd_write_19bytes):
+ movl -19(%eax), %ecx
+ movl %ecx, -19(%edx)
+L(fwd_write_15bytes):
+ movl -15(%eax), %ecx
+ movl %ecx, -15(%edx)
+L(fwd_write_11bytes):
+ movl -11(%eax), %ecx
+ movl %ecx, -11(%edx)
+L(fwd_write_7bytes):
+ movl -7(%eax), %ecx
+ movl %ecx, -7(%edx)
+L(fwd_write_3bytes):
+ movzwl -3(%eax), %ecx
+ movzbl -1(%eax), %eax
+ movw %cx, -3(%edx)
+ movb %al, -1(%edx)
+#ifndef USE_AS_BCOPY
+# ifdef USE_AS_MEMPCPY
+ movl %edx, %eax
+# else
+ movl DEST(%esp), %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(large_page):
+ movdqu (%eax), %xmm1
+ lea 16(%eax), %eax
+ movdqu %xmm0, (%esi)
+ movntdq %xmm1, (%edx)
+ lea 16(%edx), %edx
+ cmp %al, %dl
+ je L(copy_page_by_rep)
+L(large_page_loop_init):
+ POP (%esi)
+ lea -0x90(%ecx), %ecx
+ POP (%edi)
+L(large_page_loop):
+ prefetchnta 0x1c0(%eax)
+ prefetchnta 0x280(%eax)
+ movdqu (%eax), %xmm0
+ movdqu 0x10(%eax), %xmm1
+ movdqu 0x20(%eax), %xmm2
+ movdqu 0x30(%eax), %xmm3
+ movdqu 0x40(%eax), %xmm4
+ movdqu 0x50(%eax), %xmm5
+ movdqu 0x60(%eax), %xmm6
+ movdqu 0x70(%eax), %xmm7
+ lea 0x80(%eax), %eax
+ lfence
+ sub $0x80, %ecx
+ movntdq %xmm0, (%edx)
+ movntdq %xmm1, 0x10(%edx)
+ movntdq %xmm2, 0x20(%edx)
+ movntdq %xmm3, 0x30(%edx)
+ movntdq %xmm4, 0x40(%edx)
+ movntdq %xmm5, 0x50(%edx)
+ movntdq %xmm6, 0x60(%edx)
+ movntdq %xmm7, 0x70(%edx)
+ lea 0x80(%edx), %edx
+ jae L(large_page_loop)
+ cmp $-0x40, %ecx
+ lea 0x80(%ecx), %ecx
+ jl L(large_page_less_64bytes)
+
+ movdqu (%eax), %xmm0
+ movdqu 0x10(%eax), %xmm1
+ movdqu 0x20(%eax), %xmm2
+ movdqu 0x30(%eax), %xmm3
+ lea 0x40(%eax), %eax
+
+ movntdq %xmm0, (%edx)
+ movntdq %xmm1, 0x10(%edx)
+ movntdq %xmm2, 0x20(%edx)
+ movntdq %xmm3, 0x30(%edx)
+ lea 0x40(%edx), %edx
+ sub $0x40, %ecx
+L(large_page_less_64bytes):
+ cmp $32, %ecx
+ jl L(large_page_less_32bytes)
+ movdqu (%eax), %xmm0
+ movdqu 0x10(%eax), %xmm1
+ lea 0x20(%eax), %eax
+ movntdq %xmm0, (%edx)
+ movntdq %xmm1, 0x10(%edx)
+ lea 0x20(%edx), %edx
+ sub $0x20, %ecx
+L(large_page_less_32bytes):
+ add %ecx, %edx
+ add %ecx, %eax
+ sfence
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(copy_page_by_rep):
+ mov %eax, %esi
+ mov %edx, %edi
+ mov %ecx, %edx
+ shr $2, %ecx
+ and $3, %edx
+ rep movsl
+ jz L(copy_page_by_rep_exit)
+ cmp $2, %edx
+ jb L(copy_page_by_rep_left_1)
+ movzwl (%esi), %eax
+ movw %ax, (%edi)
+ add $2, %esi
+ add $2, %edi
+ sub $2, %edx
+ jz L(copy_page_by_rep_exit)
+L(copy_page_by_rep_left_1):
+ movzbl (%esi), %eax
+ movb %al, (%edi)
+L(copy_page_by_rep_exit):
+ POP (%esi)
+ POP (%edi)
+#ifndef USE_AS_BCOPY
+ movl DEST(%esp), %eax
+# ifdef USE_AS_MEMPCPY
+ movl LEN(%esp), %ecx
+ add %ecx, %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(bk_write_44bytes):
+ movl 40(%eax), %ecx
+ movl %ecx, 40(%edx)
+L(bk_write_40bytes):
+ movl 36(%eax), %ecx
+ movl %ecx, 36(%edx)
+L(bk_write_36bytes):
+ movl 32(%eax), %ecx
+ movl %ecx, 32(%edx)
+L(bk_write_32bytes):
+ movl 28(%eax), %ecx
+ movl %ecx, 28(%edx)
+L(bk_write_28bytes):
+ movl 24(%eax), %ecx
+ movl %ecx, 24(%edx)
+L(bk_write_24bytes):
+ movl 20(%eax), %ecx
+ movl %ecx, 20(%edx)
+L(bk_write_20bytes):
+ movl 16(%eax), %ecx
+ movl %ecx, 16(%edx)
+L(bk_write_16bytes):
+ movl 12(%eax), %ecx
+ movl %ecx, 12(%edx)
+L(bk_write_12bytes):
+ movl 8(%eax), %ecx
+ movl %ecx, 8(%edx)
+L(bk_write_8bytes):
+ movl 4(%eax), %ecx
+ movl %ecx, 4(%edx)
+L(bk_write_4bytes):
+ movl (%eax), %ecx
+ movl %ecx, (%edx)
+L(bk_write_0bytes):
+#ifndef USE_AS_BCOPY
+ movl DEST(%esp), %eax
+# ifdef USE_AS_MEMPCPY
+ movl LEN(%esp), %ecx
+ add %ecx, %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(bk_write_45bytes):
+ movl 41(%eax), %ecx
+ movl %ecx, 41(%edx)
+L(bk_write_41bytes):
+ movl 37(%eax), %ecx
+ movl %ecx, 37(%edx)
+L(bk_write_37bytes):
+ movl 33(%eax), %ecx
+ movl %ecx, 33(%edx)
+L(bk_write_33bytes):
+ movl 29(%eax), %ecx
+ movl %ecx, 29(%edx)
+L(bk_write_29bytes):
+ movl 25(%eax), %ecx
+ movl %ecx, 25(%edx)
+L(bk_write_25bytes):
+ movl 21(%eax), %ecx
+ movl %ecx, 21(%edx)
+L(bk_write_21bytes):
+ movl 17(%eax), %ecx
+ movl %ecx, 17(%edx)
+L(bk_write_17bytes):
+ movl 13(%eax), %ecx
+ movl %ecx, 13(%edx)
+L(bk_write_13bytes):
+ movl 9(%eax), %ecx
+ movl %ecx, 9(%edx)
+L(bk_write_9bytes):
+ movl 5(%eax), %ecx
+ movl %ecx, 5(%edx)
+L(bk_write_5bytes):
+ movl 1(%eax), %ecx
+ movl %ecx, 1(%edx)
+L(bk_write_1bytes):
+ movzbl (%eax), %ecx
+ movb %cl, (%edx)
+#ifndef USE_AS_BCOPY
+ movl DEST(%esp), %eax
+# ifdef USE_AS_MEMPCPY
+ movl LEN(%esp), %ecx
+ add %ecx, %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(bk_write_46bytes):
+ movl 42(%eax), %ecx
+ movl %ecx, 42(%edx)
+L(bk_write_42bytes):
+ movl 38(%eax), %ecx
+ movl %ecx, 38(%edx)
+L(bk_write_38bytes):
+ movl 34(%eax), %ecx
+ movl %ecx, 34(%edx)
+L(bk_write_34bytes):
+ movl 30(%eax), %ecx
+ movl %ecx, 30(%edx)
+L(bk_write_30bytes):
+ movl 26(%eax), %ecx
+ movl %ecx, 26(%edx)
+L(bk_write_26bytes):
+ movl 22(%eax), %ecx
+ movl %ecx, 22(%edx)
+L(bk_write_22bytes):
+ movl 18(%eax), %ecx
+ movl %ecx, 18(%edx)
+L(bk_write_18bytes):
+ movl 14(%eax), %ecx
+ movl %ecx, 14(%edx)
+L(bk_write_14bytes):
+ movl 10(%eax), %ecx
+ movl %ecx, 10(%edx)
+L(bk_write_10bytes):
+ movl 6(%eax), %ecx
+ movl %ecx, 6(%edx)
+L(bk_write_6bytes):
+ movl 2(%eax), %ecx
+ movl %ecx, 2(%edx)
+L(bk_write_2bytes):
+ movzwl (%eax), %ecx
+ movw %cx, (%edx)
+#ifndef USE_AS_BCOPY
+ movl DEST(%esp), %eax
+# ifdef USE_AS_MEMPCPY
+ movl LEN(%esp), %ecx
+ add %ecx, %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(bk_write_47bytes):
+ movl 43(%eax), %ecx
+ movl %ecx, 43(%edx)
+L(bk_write_43bytes):
+ movl 39(%eax), %ecx
+ movl %ecx, 39(%edx)
+L(bk_write_39bytes):
+ movl 35(%eax), %ecx
+ movl %ecx, 35(%edx)
+L(bk_write_35bytes):
+ movl 31(%eax), %ecx
+ movl %ecx, 31(%edx)
+L(bk_write_31bytes):
+ movl 27(%eax), %ecx
+ movl %ecx, 27(%edx)
+L(bk_write_27bytes):
+ movl 23(%eax), %ecx
+ movl %ecx, 23(%edx)
+L(bk_write_23bytes):
+ movl 19(%eax), %ecx
+ movl %ecx, 19(%edx)
+L(bk_write_19bytes):
+ movl 15(%eax), %ecx
+ movl %ecx, 15(%edx)
+L(bk_write_15bytes):
+ movl 11(%eax), %ecx
+ movl %ecx, 11(%edx)
+L(bk_write_11bytes):
+ movl 7(%eax), %ecx
+ movl %ecx, 7(%edx)
+L(bk_write_7bytes):
+ movl 3(%eax), %ecx
+ movl %ecx, 3(%edx)
+L(bk_write_3bytes):
+ movzwl 1(%eax), %ecx
+ movw %cx, 1(%edx)
+ movzbl (%eax), %eax
+ movb %al, (%edx)
+#ifndef USE_AS_BCOPY
+ movl DEST(%esp), %eax
+# ifdef USE_AS_MEMPCPY
+ movl LEN(%esp), %ecx
+ add %ecx, %eax
+# endif
+#endif
+ RETURN_END
+
+
+ .pushsection .rodata.ssse3,"a",@progbits
+ ALIGN (2)
+L(table_48bytes_fwd):
+ .int JMPTBL (L(fwd_write_0bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_1bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_2bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_3bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_4bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_5bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_6bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_7bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_8bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_9bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_10bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_11bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_12bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_13bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_14bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_15bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_16bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_17bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_18bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_19bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_20bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_21bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_22bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_23bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_24bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_25bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_26bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_27bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_28bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_29bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_30bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_31bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_32bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_33bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_34bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_35bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_36bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_37bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_38bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_39bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_40bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_41bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_42bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_43bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_44bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_45bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_46bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_47bytes), L(table_48bytes_fwd))
+
+ ALIGN (2)
+L(shl_table):
+ .int JMPTBL (L(shl_0), L(shl_table))
+ .int JMPTBL (L(shl_1), L(shl_table))
+ .int JMPTBL (L(shl_2), L(shl_table))
+ .int JMPTBL (L(shl_3), L(shl_table))
+ .int JMPTBL (L(shl_4), L(shl_table))
+ .int JMPTBL (L(shl_5), L(shl_table))
+ .int JMPTBL (L(shl_6), L(shl_table))
+ .int JMPTBL (L(shl_7), L(shl_table))
+ .int JMPTBL (L(shl_8), L(shl_table))
+ .int JMPTBL (L(shl_9), L(shl_table))
+ .int JMPTBL (L(shl_10), L(shl_table))
+ .int JMPTBL (L(shl_11), L(shl_table))
+ .int JMPTBL (L(shl_12), L(shl_table))
+ .int JMPTBL (L(shl_13), L(shl_table))
+ .int JMPTBL (L(shl_14), L(shl_table))
+ .int JMPTBL (L(shl_15), L(shl_table))
+
+ ALIGN (2)
+L(table_48_bytes_bwd):
+ .int JMPTBL (L(bk_write_0bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_1bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_2bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_3bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_4bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_5bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_6bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_7bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_8bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_9bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_10bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_11bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_12bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_13bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_14bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_15bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_16bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_17bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_18bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_19bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_20bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_21bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_22bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_23bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_24bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_25bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_26bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_27bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_28bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_29bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_30bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_31bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_32bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_33bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_34bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_35bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_36bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_37bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_38bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_39bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_40bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_41bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_42bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_43bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_44bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_45bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_46bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_47bytes), L(table_48_bytes_bwd))
+
+ .popsection
+
+#ifdef USE_AS_MEMMOVE
+ ALIGN (4)
+L(copy_backward):
+ PUSH (%esi)
+ movl %eax, %esi
+ lea (%ecx,%edx,1),%edx
+ lea (%ecx,%esi,1),%esi
+ testl $0x3, %edx
+ jnz L(bk_align)
+
+L(bk_aligned_4):
+ cmp $64, %ecx
+ jge L(bk_write_more64bytes)
+
+L(bk_write_64bytesless):
+ cmp $32, %ecx
+ jl L(bk_write_less32bytes)
+
+L(bk_write_more32bytes):
+ /* Copy 32 bytes at a time. */
+ sub $32, %ecx
+ movl -4(%esi), %eax
+ movl %eax, -4(%edx)
+ movl -8(%esi), %eax
+ movl %eax, -8(%edx)
+ movl -12(%esi), %eax
+ movl %eax, -12(%edx)
+ movl -16(%esi), %eax
+ movl %eax, -16(%edx)
+ movl -20(%esi), %eax
+ movl %eax, -20(%edx)
+ movl -24(%esi), %eax
+ movl %eax, -24(%edx)
+ movl -28(%esi), %eax
+ movl %eax, -28(%edx)
+ movl -32(%esi), %eax
+ movl %eax, -32(%edx)
+ sub $32, %edx
+ sub $32, %esi
+
+L(bk_write_less32bytes):
+ movl %esi, %eax
+ sub %ecx, %edx
+ sub %ecx, %eax
+ POP (%esi)
+L(bk_write_less32bytes_2):
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48_bytes_bwd), %ecx, 4)
+
+ ALIGN (4)
+L(bk_align):
+ cmp $8, %ecx
+ jle L(bk_write_less32bytes)
+ testl $1, %edx
+ /* We get here only if (EDX & 3 ) != 0 so if (EDX & 1) ==0,
+ then (EDX & 2) must be != 0. */
+ jz L(bk_got2)
+ sub $1, %esi
+ sub $1, %ecx
+ sub $1, %edx
+ movzbl (%esi), %eax
+ movb %al, (%edx)
+
+ testl $2, %edx
+ jz L(bk_aligned_4)
+
+L(bk_got2):
+ sub $2, %esi
+ sub $2, %ecx
+ sub $2, %edx
+ movzwl (%esi), %eax
+ movw %ax, (%edx)
+ jmp L(bk_aligned_4)
+
+ ALIGN (4)
+L(bk_write_more64bytes):
+ /* Check alignment of last byte. */
+ testl $15, %edx
+ jz L(bk_ssse3_cpy_pre)
+
+/* EDX is aligned 4 bytes, but not 16 bytes. */
+L(bk_ssse3_align):
+ sub $4, %esi
+ sub $4, %ecx
+ sub $4, %edx
+ movl (%esi), %eax
+ movl %eax, (%edx)
+
+ testl $15, %edx
+ jz L(bk_ssse3_cpy_pre)
+
+ sub $4, %esi
+ sub $4, %ecx
+ sub $4, %edx
+ movl (%esi), %eax
+ movl %eax, (%edx)
+
+ testl $15, %edx
+ jz L(bk_ssse3_cpy_pre)
+
+ sub $4, %esi
+ sub $4, %ecx
+ sub $4, %edx
+ movl (%esi), %eax
+ movl %eax, (%edx)
+
+L(bk_ssse3_cpy_pre):
+ cmp $64, %ecx
+ jl L(bk_write_more32bytes)
+
+L(bk_ssse3_cpy):
+ sub $64, %esi
+ sub $64, %ecx
+ sub $64, %edx
+ movdqu 0x30(%esi), %xmm3
+ movdqa %xmm3, 0x30(%edx)
+ movdqu 0x20(%esi), %xmm2
+ movdqa %xmm2, 0x20(%edx)
+ movdqu 0x10(%esi), %xmm1
+ movdqa %xmm1, 0x10(%edx)
+ movdqu (%esi), %xmm0
+ movdqa %xmm0, (%edx)
+ cmp $64, %ecx
+ jge L(bk_ssse3_cpy)
+ jmp L(bk_write_64bytesless)
+
+#endif
+
+END (MEMCPY)
+
+#endif
diff --git a/sysdeps/i386/i686/multiarch/memcpy-ssse3.S b/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
new file mode 100644
index 0000000000..749c82d379
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
@@ -0,0 +1,1737 @@
+/* memcpy with SSSE3
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+
+#if !defined NOT_IN_libc \
+ && (defined SHARED \
+ || defined USE_AS_MEMMOVE \
+ || !defined USE_MULTIARCH)
+
+#include "asm-syntax.h"
+
+#ifndef MEMCPY
+# define MEMCPY __memcpy_ssse3
+# define MEMCPY_CHK __memcpy_chk_ssse3
+#endif
+
+#ifdef USE_AS_BCOPY
+# define SRC PARMS
+# define DEST SRC+4
+# define LEN DEST+4
+#else
+# define DEST PARMS
+# define SRC DEST+4
+# define LEN SRC+4
+#endif
+
+#define CFI_PUSH(REG) \
+ cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (REG, 0)
+
+#define CFI_POP(REG) \
+ cfi_adjust_cfa_offset (-4); \
+ cfi_restore (REG)
+
+#define PUSH(REG) pushl REG; CFI_PUSH (REG)
+#define POP(REG) popl REG; CFI_POP (REG)
+
+#ifdef SHARED
+# define PARMS 8 /* Preserve EBX. */
+# define ENTRANCE PUSH (%ebx);
+# define RETURN_END POP (%ebx); ret
+# define RETURN RETURN_END; CFI_PUSH (%ebx)
+# define JMPTBL(I, B) I - B
+
+/* Load an entry in a jump table into EBX and branch to it. TABLE is a
+ jump table with relative offsets. INDEX is a register contains the
+ index into the jump table. SCALE is the scale of INDEX. */
+# define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \
+ /* We first load PC into EBX. */ \
+ call __i686.get_pc_thunk.bx; \
+ /* Get the address of the jump table. */ \
+ addl $(TABLE - .), %ebx; \
+ /* Get the entry and convert the relative offset to the \
+ absolute address. */ \
+ addl (%ebx,INDEX,SCALE), %ebx; \
+ /* We loaded the jump table. Go. */ \
+ jmp *%ebx
+
+# define BRANCH_TO_JMPTBL_ENTRY_VALUE(TABLE) \
+ addl $(TABLE - .), %ebx
+
+# define BRANCH_TO_JMPTBL_ENTRY_TAIL(TABLE, INDEX, SCALE) \
+ addl (%ebx,INDEX,SCALE), %ebx; \
+ /* We loaded the jump table. Go. */ \
+ jmp *%ebx
+
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ ALIGN (4)
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+#else
+# define PARMS 4
+# define ENTRANCE
+# define RETURN_END ret
+# define RETURN RETURN_END
+# define JMPTBL(I, B) I
+
+/* Branch to an entry in a jump table. TABLE is a jump table with
+ absolute offsets. INDEX is a register contains the index into the
+ jump table. SCALE is the scale of INDEX. */
+# define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \
+ jmp *TABLE(,INDEX,SCALE)
+
+# define BRANCH_TO_JMPTBL_ENTRY_VALUE(TABLE)
+
+# define BRANCH_TO_JMPTBL_ENTRY_TAIL(TABLE, INDEX, SCALE) \
+ jmp *TABLE(,INDEX,SCALE)
+#endif
+
+ .section .text.ssse3,"ax",@progbits
+#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BCOPY
+ENTRY (MEMCPY_CHK)
+ movl 12(%esp), %eax
+ cmpl %eax, 16(%esp)
+ jb HIDDEN_JUMPTARGET (__chk_fail)
+END (MEMCPY_CHK)
+#endif
+ENTRY (MEMCPY)
+ ENTRANCE
+ movl LEN(%esp), %ecx
+ movl SRC(%esp), %eax
+ movl DEST(%esp), %edx
+
+#ifdef USE_AS_MEMMOVE
+ cmp %eax, %edx
+ jb L(copy_forward)
+ je L(fwd_write_0bytes)
+ cmp $32, %ecx
+ jge L(memmove_bwd)
+ jmp L(bk_write_less32bytes_2)
+L(memmove_bwd):
+ add %ecx, %eax
+ cmp %eax, %edx
+ movl SRC(%esp), %eax
+ jb L(copy_backward)
+
+L(copy_forward):
+#endif
+ cmp $48, %ecx
+ jge L(48bytesormore)
+
+L(fwd_write_less32bytes):
+#ifndef USE_AS_MEMMOVE
+ cmp %dl, %al
+ jl L(bk_write)
+#endif
+ add %ecx, %edx
+ add %ecx, %eax
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48bytes_fwd), %ecx, 4)
+#ifndef USE_AS_MEMMOVE
+L(bk_write):
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48_bytes_bwd), %ecx, 4)
+#endif
+
+ ALIGN (4)
+/* ECX > 32 and EDX is 4 byte aligned. */
+L(48bytesormore):
+ movdqu (%eax), %xmm0
+ PUSH (%edi)
+ movl %edx, %edi
+ and $-16, %edx
+ PUSH (%esi)
+ add $16, %edx
+ movl %edi, %esi
+ sub %edx, %edi
+ add %edi, %ecx
+ sub %edi, %eax
+
+#ifdef SHARED_CACHE_SIZE_HALF
+ cmp $SHARED_CACHE_SIZE_HALF, %ecx
+#else
+# ifdef SHARED
+ call __i686.get_pc_thunk.bx
+ add $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmp __x86_shared_cache_size_half@GOTOFF(%ebx), %ecx
+# else
+ cmp __x86_shared_cache_size_half, %ecx
+# endif
+#endif
+
+ mov %eax, %edi
+ jge L(large_page)
+ and $0xf, %edi
+ jz L(shl_0)
+
+ BRANCH_TO_JMPTBL_ENTRY (L(shl_table), %edi, 4)
+
+ ALIGN (4)
+L(shl_0):
+ movdqu %xmm0, (%esi)
+ xor %edi, %edi
+ POP (%esi)
+ cmp $127, %ecx
+ ja L(shl_0_gobble)
+ lea -32(%ecx), %ecx
+L(shl_0_loop):
+ movdqa (%eax, %edi), %xmm0
+ movdqa 16(%eax, %edi), %xmm1
+ sub $32, %ecx
+ movdqa %xmm0, (%edx, %edi)
+ movdqa %xmm1, 16(%edx, %edi)
+ lea 32(%edi), %edi
+ jl L(shl_0_end)
+
+ movdqa (%eax, %edi), %xmm0
+ movdqa 16(%eax, %edi), %xmm1
+ sub $32, %ecx
+ movdqa %xmm0, (%edx, %edi)
+ movdqa %xmm1, 16(%edx, %edi)
+ lea 32(%edi), %edi
+ jl L(shl_0_end)
+
+ movdqa (%eax, %edi), %xmm0
+ movdqa 16(%eax, %edi), %xmm1
+ sub $32, %ecx
+ movdqa %xmm0, (%edx, %edi)
+ movdqa %xmm1, 16(%edx, %edi)
+ lea 32(%edi), %edi
+ jl L(shl_0_end)
+
+ movdqa (%eax, %edi), %xmm0
+ movdqa 16(%eax, %edi), %xmm1
+ sub $32, %ecx
+ movdqa %xmm0, (%edx, %edi)
+ movdqa %xmm1, 16(%edx, %edi)
+ lea 32(%edi), %edi
+L(shl_0_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ add %edi, %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48bytes_fwd), %ecx, 4)
+
+L(shl_0_gobble):
+
+#ifdef DATA_CACHE_SIZE_HALF
+ cmp $DATA_CACHE_SIZE_HALF, %ecx
+#else
+# ifdef SHARED
+ call __i686.get_pc_thunk.bx
+ add $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmp __x86_data_cache_size_half@GOTOFF(%ebx), %ecx
+# else
+ cmp __x86_data_cache_size_half, %ecx
+# endif
+#endif
+
+ POP (%edi)
+ lea -128(%ecx), %ecx
+ jge L(shl_0_gobble_mem_loop)
+L(shl_0_gobble_cache_loop):
+ movdqa (%eax), %xmm0
+ movdqa 0x10(%eax), %xmm1
+ movdqa 0x20(%eax), %xmm2
+ movdqa 0x30(%eax), %xmm3
+ movdqa 0x40(%eax), %xmm4
+ movdqa 0x50(%eax), %xmm5
+ movdqa 0x60(%eax), %xmm6
+ movdqa 0x70(%eax), %xmm7
+ lea 0x80(%eax), %eax
+ sub $128, %ecx
+ movdqa %xmm0, (%edx)
+ movdqa %xmm1, 0x10(%edx)
+ movdqa %xmm2, 0x20(%edx)
+ movdqa %xmm3, 0x30(%edx)
+ movdqa %xmm4, 0x40(%edx)
+ movdqa %xmm5, 0x50(%edx)
+ movdqa %xmm6, 0x60(%edx)
+ movdqa %xmm7, 0x70(%edx)
+ lea 0x80(%edx), %edx
+
+ jge L(shl_0_gobble_cache_loop)
+L(shl_0_gobble_cache_loop_tail):
+ cmp $-0x40, %ecx
+ lea 0x80(%ecx), %ecx
+ jl L(shl_0_cache_less_64bytes)
+
+ movdqa (%eax), %xmm0
+ sub $0x40, %ecx
+ movdqa 0x10(%eax), %xmm1
+
+ movdqa %xmm0, (%edx)
+ movdqa %xmm1, 0x10(%edx)
+
+ movdqa 0x20(%eax), %xmm0
+ movdqa 0x30(%eax), %xmm1
+ add $0x40, %eax
+
+ movdqa %xmm0, 0x20(%edx)
+ movdqa %xmm1, 0x30(%edx)
+ add $0x40, %edx
+L(shl_0_cache_less_64bytes):
+ cmp $0x20, %ecx
+ jl L(shl_0_cache_less_32bytes)
+ movdqa (%eax), %xmm0
+ sub $0x20, %ecx
+ movdqa 0x10(%eax), %xmm1
+ add $0x20, %eax
+ movdqa %xmm0, (%edx)
+ movdqa %xmm1, 0x10(%edx)
+ add $0x20, %edx
+L(shl_0_cache_less_32bytes):
+ cmp $0x10, %ecx
+ jl L(shl_0_cache_less_16bytes)
+ sub $0x10, %ecx
+ movdqa (%eax), %xmm0
+ add $0x10, %eax
+ movdqa %xmm0, (%edx)
+ add $0x10, %edx
+L(shl_0_cache_less_16bytes):
+ add %ecx, %edx
+ add %ecx, %eax
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48bytes_fwd), %ecx, 4)
+
+
+ ALIGN (4)
+L(shl_0_gobble_mem_loop):
+ prefetcht0 0x1c0(%eax)
+ prefetcht0 0x280(%eax)
+ prefetcht0 0x1c0(%edx)
+
+ movdqa (%eax), %xmm0
+ movdqa 0x10(%eax), %xmm1
+ movdqa 0x20(%eax), %xmm2
+ movdqa 0x30(%eax), %xmm3
+ movdqa 0x40(%eax), %xmm4
+ movdqa 0x50(%eax), %xmm5
+ movdqa 0x60(%eax), %xmm6
+ movdqa 0x70(%eax), %xmm7
+ lea 0x80(%eax), %eax
+ sub $0x80, %ecx
+ movdqa %xmm0, (%edx)
+ movdqa %xmm1, 0x10(%edx)
+ movdqa %xmm2, 0x20(%edx)
+ movdqa %xmm3, 0x30(%edx)
+ movdqa %xmm4, 0x40(%edx)
+ movdqa %xmm5, 0x50(%edx)
+ movdqa %xmm6, 0x60(%edx)
+ movdqa %xmm7, 0x70(%edx)
+ lea 0x80(%edx), %edx
+
+ jge L(shl_0_gobble_mem_loop)
+ cmp $-0x40, %ecx
+ lea 0x80(%ecx), %ecx
+ jl L(shl_0_mem_less_64bytes)
+
+ movdqa (%eax), %xmm0
+ sub $0x40, %ecx
+ movdqa 0x10(%eax), %xmm1
+
+ movdqa %xmm0, (%edx)
+ movdqa %xmm1, 0x10(%edx)
+
+ movdqa 0x20(%eax), %xmm0
+ movdqa 0x30(%eax), %xmm1
+ add $0x40, %eax
+
+ movdqa %xmm0, 0x20(%edx)
+ movdqa %xmm1, 0x30(%edx)
+ add $0x40, %edx
+L(shl_0_mem_less_64bytes):
+ cmp $0x20, %ecx
+ jl L(shl_0_mem_less_32bytes)
+ movdqa (%eax), %xmm0
+ sub $0x20, %ecx
+ movdqa 0x10(%eax), %xmm1
+ add $0x20, %eax
+ movdqa %xmm0, (%edx)
+ movdqa %xmm1, 0x10(%edx)
+ add $0x20, %edx
+L(shl_0_mem_less_32bytes):
+ cmp $0x10, %ecx
+ jl L(shl_0_mem_less_16bytes)
+ sub $0x10, %ecx
+ movdqa (%eax), %xmm0
+ add $0x10, %eax
+ movdqa %xmm0, (%edx)
+ add $0x10, %edx
+L(shl_0_mem_less_16bytes):
+ add %ecx, %edx
+ add %ecx, %eax
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48bytes_fwd), %ecx, 4)
+
+
+ ALIGN (4)
+L(shl_1):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -1(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_1_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $1, %xmm2, %xmm3
+ palignr $1, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_1_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $1, %xmm2, %xmm3
+ palignr $1, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_1_loop)
+
+L(shl_1_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 1(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_2):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -2(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_2_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $2, %xmm2, %xmm3
+ palignr $2, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_2_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $2, %xmm2, %xmm3
+ palignr $2, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_2_loop)
+
+L(shl_2_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 2(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_3):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -3(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_3_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $3, %xmm2, %xmm3
+ palignr $3, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_3_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $3, %xmm2, %xmm3
+ palignr $3, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_3_loop)
+
+L(shl_3_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 3(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_4):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -4(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_4_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $4, %xmm2, %xmm3
+ palignr $4, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_4_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $4, %xmm2, %xmm3
+ palignr $4, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_4_loop)
+
+L(shl_4_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 4(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_5):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -5(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_5_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $5, %xmm2, %xmm3
+ palignr $5, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_5_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $5, %xmm2, %xmm3
+ palignr $5, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_5_loop)
+
+L(shl_5_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 5(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+
+ ALIGN (4)
+L(shl_6):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -6(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_6_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $6, %xmm2, %xmm3
+ palignr $6, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_6_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $6, %xmm2, %xmm3
+ palignr $6, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_6_loop)
+
+L(shl_6_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 6(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_7):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -7(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_7_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $7, %xmm2, %xmm3
+ palignr $7, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_7_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $7, %xmm2, %xmm3
+ palignr $7, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_7_loop)
+
+L(shl_7_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 7(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_8):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -8(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_8_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $8, %xmm2, %xmm3
+ palignr $8, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_8_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $8, %xmm2, %xmm3
+ palignr $8, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_8_loop)
+
+L(shl_8_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 8(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_9):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -9(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_9_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $9, %xmm2, %xmm3
+ palignr $9, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_9_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $9, %xmm2, %xmm3
+ palignr $9, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_9_loop)
+
+L(shl_9_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 9(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_10):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -10(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_10_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $10, %xmm2, %xmm3
+ palignr $10, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_10_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $10, %xmm2, %xmm3
+ palignr $10, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_10_loop)
+
+L(shl_10_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 10(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_11):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -11(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_11_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $11, %xmm2, %xmm3
+ palignr $11, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_11_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $11, %xmm2, %xmm3
+ palignr $11, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_11_loop)
+
+L(shl_11_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 11(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_12):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -12(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_12_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $12, %xmm2, %xmm3
+ palignr $12, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_12_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $12, %xmm2, %xmm3
+ palignr $12, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_12_loop)
+
+L(shl_12_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 12(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_13):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -13(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_13_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $13, %xmm2, %xmm3
+ palignr $13, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_13_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $13, %xmm2, %xmm3
+ palignr $13, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_13_loop)
+
+L(shl_13_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 13(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+ ALIGN (4)
+L(shl_14):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -14(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_14_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $14, %xmm2, %xmm3
+ palignr $14, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_14_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $14, %xmm2, %xmm3
+ palignr $14, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_14_loop)
+
+L(shl_14_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 14(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+
+ ALIGN (4)
+L(shl_15):
+ BRANCH_TO_JMPTBL_ENTRY_VALUE(L(table_48bytes_fwd))
+ lea -15(%eax), %eax
+ movaps (%eax), %xmm1
+ xor %edi, %edi
+ lea -32(%ecx), %ecx
+ movdqu %xmm0, (%esi)
+ POP (%esi)
+L(shl_15_loop):
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm4
+ palignr $15, %xmm2, %xmm3
+ palignr $15, %xmm1, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jl L(shl_15_end)
+
+ movdqa 16(%eax, %edi), %xmm2
+ sub $32, %ecx
+ movdqa 32(%eax, %edi), %xmm3
+ movdqa %xmm3, %xmm1
+ palignr $15, %xmm2, %xmm3
+ palignr $15, %xmm4, %xmm2
+ lea 32(%edi), %edi
+ movdqa %xmm2, -32(%edx, %edi)
+ movdqa %xmm3, -16(%edx, %edi)
+
+ jae L(shl_15_loop)
+
+L(shl_15_end):
+ lea 32(%ecx), %ecx
+ add %ecx, %edi
+ add %edi, %edx
+ lea 15(%edi, %eax), %eax
+ POP (%edi)
+ BRANCH_TO_JMPTBL_ENTRY_TAIL(L(table_48bytes_fwd), %ecx, 4)
+
+
+ ALIGN (4)
+L(fwd_write_44bytes):
+ movl -44(%eax), %ecx
+ movl %ecx, -44(%edx)
+L(fwd_write_40bytes):
+ movl -40(%eax), %ecx
+ movl %ecx, -40(%edx)
+L(fwd_write_36bytes):
+ movl -36(%eax), %ecx
+ movl %ecx, -36(%edx)
+L(fwd_write_32bytes):
+ movl -32(%eax), %ecx
+ movl %ecx, -32(%edx)
+L(fwd_write_28bytes):
+ movl -28(%eax), %ecx
+ movl %ecx, -28(%edx)
+L(fwd_write_24bytes):
+ movl -24(%eax), %ecx
+ movl %ecx, -24(%edx)
+L(fwd_write_20bytes):
+ movl -20(%eax), %ecx
+ movl %ecx, -20(%edx)
+L(fwd_write_16bytes):
+ movl -16(%eax), %ecx
+ movl %ecx, -16(%edx)
+L(fwd_write_12bytes):
+ movl -12(%eax), %ecx
+ movl %ecx, -12(%edx)
+L(fwd_write_8bytes):
+ movl -8(%eax), %ecx
+ movl %ecx, -8(%edx)
+L(fwd_write_4bytes):
+ movl -4(%eax), %ecx
+ movl %ecx, -4(%edx)
+L(fwd_write_0bytes):
+#ifndef USE_AS_BCOPY
+# ifdef USE_AS_MEMPCPY
+ movl %edx, %eax
+# else
+ movl DEST(%esp), %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(fwd_write_5bytes):
+ movl -5(%eax), %ecx
+ movl -4(%eax), %eax
+ movl %ecx, -5(%edx)
+ movl %eax, -4(%edx)
+#ifndef USE_AS_BCOPY
+# ifdef USE_AS_MEMPCPY
+ movl %edx, %eax
+# else
+ movl DEST(%esp), %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(fwd_write_45bytes):
+ movl -45(%eax), %ecx
+ movl %ecx, -45(%edx)
+L(fwd_write_41bytes):
+ movl -41(%eax), %ecx
+ movl %ecx, -41(%edx)
+L(fwd_write_37bytes):
+ movl -37(%eax), %ecx
+ movl %ecx, -37(%edx)
+L(fwd_write_33bytes):
+ movl -33(%eax), %ecx
+ movl %ecx, -33(%edx)
+L(fwd_write_29bytes):
+ movl -29(%eax), %ecx
+ movl %ecx, -29(%edx)
+L(fwd_write_25bytes):
+ movl -25(%eax), %ecx
+ movl %ecx, -25(%edx)
+L(fwd_write_21bytes):
+ movl -21(%eax), %ecx
+ movl %ecx, -21(%edx)
+L(fwd_write_17bytes):
+ movl -17(%eax), %ecx
+ movl %ecx, -17(%edx)
+L(fwd_write_13bytes):
+ movl -13(%eax), %ecx
+ movl %ecx, -13(%edx)
+L(fwd_write_9bytes):
+ movl -9(%eax), %ecx
+ movl %ecx, -9(%edx)
+ movl -5(%eax), %ecx
+ movl %ecx, -5(%edx)
+L(fwd_write_1bytes):
+ movzbl -1(%eax), %ecx
+ movb %cl, -1(%edx)
+#ifndef USE_AS_BCOPY
+# ifdef USE_AS_MEMPCPY
+ movl %edx, %eax
+# else
+ movl DEST(%esp), %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(fwd_write_46bytes):
+ movl -46(%eax), %ecx
+ movl %ecx, -46(%edx)
+L(fwd_write_42bytes):
+ movl -42(%eax), %ecx
+ movl %ecx, -42(%edx)
+L(fwd_write_38bytes):
+ movl -38(%eax), %ecx
+ movl %ecx, -38(%edx)
+L(fwd_write_34bytes):
+ movl -34(%eax), %ecx
+ movl %ecx, -34(%edx)
+L(fwd_write_30bytes):
+ movl -30(%eax), %ecx
+ movl %ecx, -30(%edx)
+L(fwd_write_26bytes):
+ movl -26(%eax), %ecx
+ movl %ecx, -26(%edx)
+L(fwd_write_22bytes):
+ movl -22(%eax), %ecx
+ movl %ecx, -22(%edx)
+L(fwd_write_18bytes):
+ movl -18(%eax), %ecx
+ movl %ecx, -18(%edx)
+L(fwd_write_14bytes):
+ movl -14(%eax), %ecx
+ movl %ecx, -14(%edx)
+L(fwd_write_10bytes):
+ movl -10(%eax), %ecx
+ movl %ecx, -10(%edx)
+L(fwd_write_6bytes):
+ movl -6(%eax), %ecx
+ movl %ecx, -6(%edx)
+L(fwd_write_2bytes):
+ movzwl -2(%eax), %ecx
+ movw %cx, -2(%edx)
+#ifndef USE_AS_BCOPY
+# ifdef USE_AS_MEMPCPY
+ movl %edx, %eax
+# else
+ movl DEST(%esp), %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(fwd_write_47bytes):
+ movl -47(%eax), %ecx
+ movl %ecx, -47(%edx)
+L(fwd_write_43bytes):
+ movl -43(%eax), %ecx
+ movl %ecx, -43(%edx)
+L(fwd_write_39bytes):
+ movl -39(%eax), %ecx
+ movl %ecx, -39(%edx)
+L(fwd_write_35bytes):
+ movl -35(%eax), %ecx
+ movl %ecx, -35(%edx)
+L(fwd_write_31bytes):
+ movl -31(%eax), %ecx
+ movl %ecx, -31(%edx)
+L(fwd_write_27bytes):
+ movl -27(%eax), %ecx
+ movl %ecx, -27(%edx)
+L(fwd_write_23bytes):
+ movl -23(%eax), %ecx
+ movl %ecx, -23(%edx)
+L(fwd_write_19bytes):
+ movl -19(%eax), %ecx
+ movl %ecx, -19(%edx)
+L(fwd_write_15bytes):
+ movl -15(%eax), %ecx
+ movl %ecx, -15(%edx)
+L(fwd_write_11bytes):
+ movl -11(%eax), %ecx
+ movl %ecx, -11(%edx)
+L(fwd_write_7bytes):
+ movl -7(%eax), %ecx
+ movl %ecx, -7(%edx)
+L(fwd_write_3bytes):
+ movzwl -3(%eax), %ecx
+ movzbl -1(%eax), %eax
+ movw %cx, -3(%edx)
+ movb %al, -1(%edx)
+#ifndef USE_AS_BCOPY
+# ifdef USE_AS_MEMPCPY
+ movl %edx, %eax
+# else
+ movl DEST(%esp), %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(large_page):
+ movdqu (%eax), %xmm1
+ lea 16(%eax), %eax
+ movdqu %xmm0, (%esi)
+ movntdq %xmm1, (%edx)
+ lea 16(%edx), %edx
+ POP (%esi)
+ lea -0x90(%ecx), %ecx
+ POP (%edi)
+L(large_page_loop):
+ movdqu (%eax), %xmm0
+ movdqu 0x10(%eax), %xmm1
+ movdqu 0x20(%eax), %xmm2
+ movdqu 0x30(%eax), %xmm3
+ movdqu 0x40(%eax), %xmm4
+ movdqu 0x50(%eax), %xmm5
+ movdqu 0x60(%eax), %xmm6
+ movdqu 0x70(%eax), %xmm7
+ lea 0x80(%eax), %eax
+
+ sub $0x80, %ecx
+ movntdq %xmm0, (%edx)
+ movntdq %xmm1, 0x10(%edx)
+ movntdq %xmm2, 0x20(%edx)
+ movntdq %xmm3, 0x30(%edx)
+ movntdq %xmm4, 0x40(%edx)
+ movntdq %xmm5, 0x50(%edx)
+ movntdq %xmm6, 0x60(%edx)
+ movntdq %xmm7, 0x70(%edx)
+ lea 0x80(%edx), %edx
+ jae L(large_page_loop)
+ cmp $-0x40, %ecx
+ lea 0x80(%ecx), %ecx
+ jl L(large_page_less_64bytes)
+
+ movdqu (%eax), %xmm0
+ movdqu 0x10(%eax), %xmm1
+ movdqu 0x20(%eax), %xmm2
+ movdqu 0x30(%eax), %xmm3
+ lea 0x40(%eax), %eax
+
+ movntdq %xmm0, (%edx)
+ movntdq %xmm1, 0x10(%edx)
+ movntdq %xmm2, 0x20(%edx)
+ movntdq %xmm3, 0x30(%edx)
+ lea 0x40(%edx), %edx
+ sub $0x40, %ecx
+L(large_page_less_64bytes):
+ cmp $32, %ecx
+ jl L(large_page_less_32bytes)
+ movdqu (%eax), %xmm0
+ movdqu 0x10(%eax), %xmm1
+ lea 0x20(%eax), %eax
+ movntdq %xmm0, (%edx)
+ movntdq %xmm1, 0x10(%edx)
+ lea 0x20(%edx), %edx
+ sub $0x20, %ecx
+L(large_page_less_32bytes):
+ add %ecx, %edx
+ add %ecx, %eax
+ sfence
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48bytes_fwd), %ecx, 4)
+
+
+ ALIGN (4)
+L(bk_write_44bytes):
+ movl 40(%eax), %ecx
+ movl %ecx, 40(%edx)
+L(bk_write_40bytes):
+ movl 36(%eax), %ecx
+ movl %ecx, 36(%edx)
+L(bk_write_36bytes):
+ movl 32(%eax), %ecx
+ movl %ecx, 32(%edx)
+L(bk_write_32bytes):
+ movl 28(%eax), %ecx
+ movl %ecx, 28(%edx)
+L(bk_write_28bytes):
+ movl 24(%eax), %ecx
+ movl %ecx, 24(%edx)
+L(bk_write_24bytes):
+ movl 20(%eax), %ecx
+ movl %ecx, 20(%edx)
+L(bk_write_20bytes):
+ movl 16(%eax), %ecx
+ movl %ecx, 16(%edx)
+L(bk_write_16bytes):
+ movl 12(%eax), %ecx
+ movl %ecx, 12(%edx)
+L(bk_write_12bytes):
+ movl 8(%eax), %ecx
+ movl %ecx, 8(%edx)
+L(bk_write_8bytes):
+ movl 4(%eax), %ecx
+ movl %ecx, 4(%edx)
+L(bk_write_4bytes):
+ movl (%eax), %ecx
+ movl %ecx, (%edx)
+L(bk_write_0bytes):
+#ifndef USE_AS_BCOPY
+ movl DEST(%esp), %eax
+# ifdef USE_AS_MEMPCPY
+ movl LEN(%esp), %ecx
+ add %ecx, %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(bk_write_45bytes):
+ movl 41(%eax), %ecx
+ movl %ecx, 41(%edx)
+L(bk_write_41bytes):
+ movl 37(%eax), %ecx
+ movl %ecx, 37(%edx)
+L(bk_write_37bytes):
+ movl 33(%eax), %ecx
+ movl %ecx, 33(%edx)
+L(bk_write_33bytes):
+ movl 29(%eax), %ecx
+ movl %ecx, 29(%edx)
+L(bk_write_29bytes):
+ movl 25(%eax), %ecx
+ movl %ecx, 25(%edx)
+L(bk_write_25bytes):
+ movl 21(%eax), %ecx
+ movl %ecx, 21(%edx)
+L(bk_write_21bytes):
+ movl 17(%eax), %ecx
+ movl %ecx, 17(%edx)
+L(bk_write_17bytes):
+ movl 13(%eax), %ecx
+ movl %ecx, 13(%edx)
+L(bk_write_13bytes):
+ movl 9(%eax), %ecx
+ movl %ecx, 9(%edx)
+L(bk_write_9bytes):
+ movl 5(%eax), %ecx
+ movl %ecx, 5(%edx)
+L(bk_write_5bytes):
+ movl 1(%eax), %ecx
+ movl %ecx, 1(%edx)
+L(bk_write_1bytes):
+ movzbl (%eax), %ecx
+ movb %cl, (%edx)
+#ifndef USE_AS_BCOPY
+ movl DEST(%esp), %eax
+# ifdef USE_AS_MEMPCPY
+ movl LEN(%esp), %ecx
+ add %ecx, %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(bk_write_46bytes):
+ movl 42(%eax), %ecx
+ movl %ecx, 42(%edx)
+L(bk_write_42bytes):
+ movl 38(%eax), %ecx
+ movl %ecx, 38(%edx)
+L(bk_write_38bytes):
+ movl 34(%eax), %ecx
+ movl %ecx, 34(%edx)
+L(bk_write_34bytes):
+ movl 30(%eax), %ecx
+ movl %ecx, 30(%edx)
+L(bk_write_30bytes):
+ movl 26(%eax), %ecx
+ movl %ecx, 26(%edx)
+L(bk_write_26bytes):
+ movl 22(%eax), %ecx
+ movl %ecx, 22(%edx)
+L(bk_write_22bytes):
+ movl 18(%eax), %ecx
+ movl %ecx, 18(%edx)
+L(bk_write_18bytes):
+ movl 14(%eax), %ecx
+ movl %ecx, 14(%edx)
+L(bk_write_14bytes):
+ movl 10(%eax), %ecx
+ movl %ecx, 10(%edx)
+L(bk_write_10bytes):
+ movl 6(%eax), %ecx
+ movl %ecx, 6(%edx)
+L(bk_write_6bytes):
+ movl 2(%eax), %ecx
+ movl %ecx, 2(%edx)
+L(bk_write_2bytes):
+ movzwl (%eax), %ecx
+ movw %cx, (%edx)
+#ifndef USE_AS_BCOPY
+ movl DEST(%esp), %eax
+# ifdef USE_AS_MEMPCPY
+ movl LEN(%esp), %ecx
+ add %ecx, %eax
+# endif
+#endif
+ RETURN
+
+ ALIGN (4)
+L(bk_write_47bytes):
+ movl 43(%eax), %ecx
+ movl %ecx, 43(%edx)
+L(bk_write_43bytes):
+ movl 39(%eax), %ecx
+ movl %ecx, 39(%edx)
+L(bk_write_39bytes):
+ movl 35(%eax), %ecx
+ movl %ecx, 35(%edx)
+L(bk_write_35bytes):
+ movl 31(%eax), %ecx
+ movl %ecx, 31(%edx)
+L(bk_write_31bytes):
+ movl 27(%eax), %ecx
+ movl %ecx, 27(%edx)
+L(bk_write_27bytes):
+ movl 23(%eax), %ecx
+ movl %ecx, 23(%edx)
+L(bk_write_23bytes):
+ movl 19(%eax), %ecx
+ movl %ecx, 19(%edx)
+L(bk_write_19bytes):
+ movl 15(%eax), %ecx
+ movl %ecx, 15(%edx)
+L(bk_write_15bytes):
+ movl 11(%eax), %ecx
+ movl %ecx, 11(%edx)
+L(bk_write_11bytes):
+ movl 7(%eax), %ecx
+ movl %ecx, 7(%edx)
+L(bk_write_7bytes):
+ movl 3(%eax), %ecx
+ movl %ecx, 3(%edx)
+L(bk_write_3bytes):
+ movzwl 1(%eax), %ecx
+ movw %cx, 1(%edx)
+ movzbl (%eax), %eax
+ movb %al, (%edx)
+#ifndef USE_AS_BCOPY
+ movl DEST(%esp), %eax
+# ifdef USE_AS_MEMPCPY
+ movl LEN(%esp), %ecx
+ add %ecx, %eax
+# endif
+#endif
+ RETURN_END
+
+
+ .pushsection .rodata.ssse3,"a",@progbits
+ ALIGN (2)
+L(table_48bytes_fwd):
+ .int JMPTBL (L(fwd_write_0bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_1bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_2bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_3bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_4bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_5bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_6bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_7bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_8bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_9bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_10bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_11bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_12bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_13bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_14bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_15bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_16bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_17bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_18bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_19bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_20bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_21bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_22bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_23bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_24bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_25bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_26bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_27bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_28bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_29bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_30bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_31bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_32bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_33bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_34bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_35bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_36bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_37bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_38bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_39bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_40bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_41bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_42bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_43bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_44bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_45bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_46bytes), L(table_48bytes_fwd))
+ .int JMPTBL (L(fwd_write_47bytes), L(table_48bytes_fwd))
+
+ ALIGN (2)
+L(shl_table):
+ .int JMPTBL (L(shl_0), L(shl_table))
+ .int JMPTBL (L(shl_1), L(shl_table))
+ .int JMPTBL (L(shl_2), L(shl_table))
+ .int JMPTBL (L(shl_3), L(shl_table))
+ .int JMPTBL (L(shl_4), L(shl_table))
+ .int JMPTBL (L(shl_5), L(shl_table))
+ .int JMPTBL (L(shl_6), L(shl_table))
+ .int JMPTBL (L(shl_7), L(shl_table))
+ .int JMPTBL (L(shl_8), L(shl_table))
+ .int JMPTBL (L(shl_9), L(shl_table))
+ .int JMPTBL (L(shl_10), L(shl_table))
+ .int JMPTBL (L(shl_11), L(shl_table))
+ .int JMPTBL (L(shl_12), L(shl_table))
+ .int JMPTBL (L(shl_13), L(shl_table))
+ .int JMPTBL (L(shl_14), L(shl_table))
+ .int JMPTBL (L(shl_15), L(shl_table))
+
+ ALIGN (2)
+L(table_48_bytes_bwd):
+ .int JMPTBL (L(bk_write_0bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_1bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_2bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_3bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_4bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_5bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_6bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_7bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_8bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_9bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_10bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_11bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_12bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_13bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_14bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_15bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_16bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_17bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_18bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_19bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_20bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_21bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_22bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_23bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_24bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_25bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_26bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_27bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_28bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_29bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_30bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_31bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_32bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_33bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_34bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_35bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_36bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_37bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_38bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_39bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_40bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_41bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_42bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_43bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_44bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_45bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_46bytes), L(table_48_bytes_bwd))
+ .int JMPTBL (L(bk_write_47bytes), L(table_48_bytes_bwd))
+
+ .popsection
+
+#ifdef USE_AS_MEMMOVE
+ ALIGN (4)
+L(copy_backward):
+ PUSH (%esi)
+ movl %eax, %esi
+ lea (%ecx,%edx,1),%edx
+ lea (%ecx,%esi,1),%esi
+ testl $0x3, %edx
+ jnz L(bk_align)
+
+L(bk_aligned_4):
+ cmp $64, %ecx
+ jge L(bk_write_more64bytes)
+
+L(bk_write_64bytesless):
+ cmp $32, %ecx
+ jl L(bk_write_less32bytes)
+
+L(bk_write_more32bytes):
+ /* Copy 32 bytes at a time. */
+ sub $32, %ecx
+ movl -4(%esi), %eax
+ movl %eax, -4(%edx)
+ movl -8(%esi), %eax
+ movl %eax, -8(%edx)
+ movl -12(%esi), %eax
+ movl %eax, -12(%edx)
+ movl -16(%esi), %eax
+ movl %eax, -16(%edx)
+ movl -20(%esi), %eax
+ movl %eax, -20(%edx)
+ movl -24(%esi), %eax
+ movl %eax, -24(%edx)
+ movl -28(%esi), %eax
+ movl %eax, -28(%edx)
+ movl -32(%esi), %eax
+ movl %eax, -32(%edx)
+ sub $32, %edx
+ sub $32, %esi
+
+L(bk_write_less32bytes):
+ movl %esi, %eax
+ sub %ecx, %edx
+ sub %ecx, %eax
+ POP (%esi)
+L(bk_write_less32bytes_2):
+ BRANCH_TO_JMPTBL_ENTRY (L(table_48_bytes_bwd), %ecx, 4)
+
+ ALIGN (4)
+L(bk_align):
+ cmp $8, %ecx
+ jle L(bk_write_less32bytes)
+ testl $1, %edx
+ /* We get here only if (EDX & 3 ) != 0 so if (EDX & 1) ==0,
+ then (EDX & 2) must be != 0. */
+ jz L(bk_got2)
+ sub $1, %esi
+ sub $1, %ecx
+ sub $1, %edx
+ movzbl (%esi), %eax
+ movb %al, (%edx)
+
+ testl $2, %edx
+ jz L(bk_aligned_4)
+
+L(bk_got2):
+ sub $2, %esi
+ sub $2, %ecx
+ sub $2, %edx
+ movzwl (%esi), %eax
+ movw %ax, (%edx)
+ jmp L(bk_aligned_4)
+
+ ALIGN (4)
+L(bk_write_more64bytes):
+ /* Check alignment of last byte. */
+ testl $15, %edx
+ jz L(bk_ssse3_cpy_pre)
+
+/* EDX is aligned 4 bytes, but not 16 bytes. */
+L(bk_ssse3_align):
+ sub $4, %esi
+ sub $4, %ecx
+ sub $4, %edx
+ movl (%esi), %eax
+ movl %eax, (%edx)
+
+ testl $15, %edx
+ jz L(bk_ssse3_cpy_pre)
+
+ sub $4, %esi
+ sub $4, %ecx
+ sub $4, %edx
+ movl (%esi), %eax
+ movl %eax, (%edx)
+
+ testl $15, %edx
+ jz L(bk_ssse3_cpy_pre)
+
+ sub $4, %esi
+ sub $4, %ecx
+ sub $4, %edx
+ movl (%esi), %eax
+ movl %eax, (%edx)
+
+L(bk_ssse3_cpy_pre):
+ cmp $64, %ecx
+ jl L(bk_write_more32bytes)
+
+L(bk_ssse3_cpy):
+ sub $64, %esi
+ sub $64, %ecx
+ sub $64, %edx
+ movdqu 0x30(%esi), %xmm3
+ movdqa %xmm3, 0x30(%edx)
+ movdqu 0x20(%esi), %xmm2
+ movdqa %xmm2, 0x20(%edx)
+ movdqu 0x10(%esi), %xmm1
+ movdqa %xmm1, 0x10(%edx)
+ movdqu (%esi), %xmm0
+ movdqa %xmm0, (%edx)
+ cmp $64, %ecx
+ jge L(bk_ssse3_cpy)
+ jmp L(bk_write_64bytesless)
+
+#endif
+
+END (MEMCPY)
+
+#endif
diff --git a/sysdeps/i386/i686/multiarch/memcpy.S b/sysdeps/i386/i686/multiarch/memcpy.S
new file mode 100644
index 0000000000..bf1c7cc2d2
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memcpy.S
@@ -0,0 +1,90 @@
+/* Multiple versions of memcpy
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib and for
+ DSO. In static binaries we need memcpy before the initialization
+ happened. */
+#if defined SHARED && !defined NOT_IN_libc
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ .p2align 4
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+
+ .text
+ENTRY(memcpy)
+ .type memcpy, @gnu_indirect_function
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ call __i686.get_pc_thunk.bx
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+ jne 1f
+ call __init_cpu_features
+1: leal __memcpy_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memcpy_ssse3@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memcpy_ssse3_rep@GOTOFF(%ebx), %eax
+2: popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+ ret
+END(memcpy)
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __memcpy_ia32, @function; \
+ .p2align 4; \
+ __memcpy_ia32: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __memcpy_ia32, .-__memcpy_ia32
+
+# undef ENTRY_CHK
+# define ENTRY_CHK(name) \
+ .type __memcpy_chk_ia32, @function; \
+ .globl __memcpy_chk_ia32; \
+ .p2align 4; \
+ __memcpy_chk_ia32: cfi_startproc; \
+ CALL_MCOUNT
+# undef END_CHK
+# define END_CHK(name) \
+ cfi_endproc; .size __memcpy_chk_ia32, .-__memcpy_chk_ia32
+
+# undef libc_hidden_builtin_def
+/* IFUNC doesn't work with the hidden functions in shared library since
+ they will be called without setting up EBX needed for PLT which is
+ used by IFUNC. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_memcpy; __GI_memcpy = __memcpy_ia32
+#endif
+
+#include "../memcpy.S"
diff --git a/sysdeps/i386/i686/multiarch/memcpy_chk.S b/sysdeps/i386/i686/multiarch/memcpy_chk.S
new file mode 100644
index 0000000000..171ac8adef
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memcpy_chk.S
@@ -0,0 +1,64 @@
+/* Multiple versions of __memcpy_chk
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib and for
+ DSO. There are no multiarch memcpy functions for static binaries.
+ */
+#ifndef NOT_IN_libc
+# ifdef SHARED
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ .p2align 4
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+
+ .text
+ENTRY(__memcpy_chk)
+ .type __memcpy_chk, @gnu_indirect_function
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ call __i686.get_pc_thunk.bx
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+ jne 1f
+ call __init_cpu_features
+1: leal __memcpy_chk_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memcpy_chk_ssse3@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memcpy_chk_ssse3_rep@GOTOFF(%ebx), %eax
+2: popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+ ret
+END(__memcpy_chk)
+# else
+# include "../memcpy_chk.S"
+# endif
+#endif
diff --git a/sysdeps/i386/i686/multiarch/memmove-ssse3-rep.S b/sysdeps/i386/i686/multiarch/memmove-ssse3-rep.S
new file mode 100644
index 0000000000..d202fc4a13
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memmove-ssse3-rep.S
@@ -0,0 +1,4 @@
+#define USE_AS_MEMMOVE
+#define MEMCPY __memmove_ssse3_rep
+#define MEMCPY_CHK __memmove_chk_ssse3_rep
+#include "memcpy-ssse3-rep.S"
diff --git a/sysdeps/i386/i686/multiarch/memmove-ssse3.S b/sysdeps/i386/i686/multiarch/memmove-ssse3.S
new file mode 100644
index 0000000000..295430b1ef
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memmove-ssse3.S
@@ -0,0 +1,4 @@
+#define USE_AS_MEMMOVE
+#define MEMCPY __memmove_ssse3
+#define MEMCPY_CHK __memmove_chk_ssse3
+#include "memcpy-ssse3.S"
diff --git a/sysdeps/i386/i686/multiarch/memmove.S b/sysdeps/i386/i686/multiarch/memmove.S
new file mode 100644
index 0000000000..d3d8d3675c
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memmove.S
@@ -0,0 +1,114 @@
+/* Multiple versions of memmove
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib. */
+#ifndef NOT_IN_libc
+# ifdef SHARED
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ .p2align 4
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+
+ .text
+ENTRY(memmove)
+ .type memmove, @gnu_indirect_function
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ call __i686.get_pc_thunk.bx
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+ jne 1f
+ call __init_cpu_features
+1: leal __memmove_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memmove_ssse3@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memmove_ssse3_rep@GOTOFF(%ebx), %eax
+2: popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+ ret
+END(memmove)
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __memmove_ia32, @function; \
+ .p2align 4; \
+ __memmove_ia32: cfi_startproc; \
+ CALL_MCOUNT
+# else
+ .text
+ENTRY(memmove)
+ .type memmove, @gnu_indirect_function
+ cmpl $0, KIND_OFFSET+__cpu_features
+ jne 1f
+ call __init_cpu_features
+1: leal __memmove_ia32, %eax
+ testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
+ jz 2f
+ leal __memmove_ssse3, %eax
+2: ret
+END(memmove)
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __memmove_ia32, @function; \
+ .globl __memmove_ia32; \
+ .p2align 4; \
+ __memmove_ia32: cfi_startproc; \
+ CALL_MCOUNT
+# endif
+
+# undef END
+# define END(name) \
+ cfi_endproc; .size __memmove_ia32, .-__memmove_ia32
+
+# undef ENTRY_CHK
+# define ENTRY_CHK(name) \
+ .type __memmove_chk_ia32, @function; \
+ .globl __memmove_chk_ia32; \
+ .p2align 4; \
+ __memmove_chk_ia32: cfi_startproc; \
+ CALL_MCOUNT
+# undef END_CHK
+# define END_CHK(name) \
+ cfi_endproc; .size __memmove_chk_ia32, .-__memmove_chk_ia32
+
+# ifdef SHARED
+# undef libc_hidden_builtin_def
+/* IFUNC doesn't work with the hidden functions in shared library since
+ they will be called without setting up EBX needed for PLT which is
+ used by IFUNC. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_memmove; __GI_memmove = __memmove_ia32
+# endif
+#endif
+
+#include "../memmove.S"
diff --git a/sysdeps/i386/i686/multiarch/memmove_chk.S b/sysdeps/i386/i686/multiarch/memmove_chk.S
new file mode 100644
index 0000000000..e33f2a31b3
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memmove_chk.S
@@ -0,0 +1,112 @@
+/* Multiple versions of __memmove_chk
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib. */
+#ifndef NOT_IN_libc
+# ifdef SHARED
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ .p2align 4
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+
+ .text
+ENTRY(__memmove_chk)
+ .type __memmove_chk, @gnu_indirect_function
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ call __i686.get_pc_thunk.bx
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+ jne 1f
+ call __init_cpu_features
+1: leal __memmove_chk_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memmove_chk_ssse3@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memmove_chk_ssse3_rep@GOTOFF(%ebx), %eax
+2: popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+ ret
+END(__memmove_chk)
+# else
+ .text
+ENTRY(__memmove_chk)
+ .type __memmove_chk, @gnu_indirect_function
+ cmpl $0, KIND_OFFSET+__cpu_features
+ jne 1f
+ call __init_cpu_features
+1: leal __memmove_chk_ia32, %eax
+ testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
+ jz 2f
+ leal __memmove_chk_ssse3, %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features
+ jz 2f
+ leal __memmove_chk_ssse3_rep, %eax
+2: ret
+END(__memmove_chk)
+
+ .type __memmove_chk_ssse3, @function
+ .p2align 4;
+__memmove_chk_ssse3:
+ cfi_startproc
+ CALL_MCOUNT
+ movl 12(%esp), %eax
+ cmpl %eax, 16(%esp)
+ jb __chk_fail
+ jmp __memmove_ssse3
+ cfi_endproc
+ .size __memmove_chk_ssse3, .-__memmove_chk_ssse3
+
+ .type __memmove_chk_ssse3_rep, @function
+ .p2align 4;
+__memmove_chk_ssse3_rep:
+ cfi_startproc
+ CALL_MCOUNT
+ movl 12(%esp), %eax
+ cmpl %eax, 16(%esp)
+ jb __chk_fail
+ jmp __memmove_ssse3_rep
+ cfi_endproc
+ .size __memmove_chk_ssse3_rep, .-__memmove_chk_ssse3_rep
+
+ .type __memmove_chk_ia32, @function
+ .p2align 4;
+__memmove_chk_ia32:
+ cfi_startproc
+ CALL_MCOUNT
+ movl 12(%esp), %eax
+ cmpl %eax, 16(%esp)
+ jb __chk_fail
+ jmp __memmove_ia32
+ cfi_endproc
+ .size __memmove_chk_ia32, .-__memmove_chk_ia32
+# endif
+#endif
diff --git a/sysdeps/i386/i686/multiarch/mempcpy-ssse3-rep.S b/sysdeps/i386/i686/multiarch/mempcpy-ssse3-rep.S
new file mode 100644
index 0000000000..5357b33e18
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/mempcpy-ssse3-rep.S
@@ -0,0 +1,4 @@
+#define USE_AS_MEMPCPY
+#define MEMCPY __mempcpy_ssse3_rep
+#define MEMCPY_CHK __mempcpy_chk_ssse3_rep
+#include "memcpy-ssse3-rep.S"
diff --git a/sysdeps/i386/i686/multiarch/mempcpy-ssse3.S b/sysdeps/i386/i686/multiarch/mempcpy-ssse3.S
new file mode 100644
index 0000000000..822d98e954
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/mempcpy-ssse3.S
@@ -0,0 +1,4 @@
+#define USE_AS_MEMPCPY
+#define MEMCPY __mempcpy_ssse3
+#define MEMCPY_CHK __mempcpy_chk_ssse3
+#include "memcpy-ssse3.S"
diff --git a/sysdeps/i386/i686/multiarch/mempcpy.S b/sysdeps/i386/i686/multiarch/mempcpy.S
new file mode 100644
index 0000000000..df830d2e63
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/mempcpy.S
@@ -0,0 +1,93 @@
+/* Multiple versions of mempcpy
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib and for
+ DSO. In static binaries we need mempcpy before the initialization
+ happened. */
+#if defined SHARED && !defined NOT_IN_libc
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ .p2align 4
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+
+ .text
+ENTRY(__mempcpy)
+ .type __mempcpy, @gnu_indirect_function
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ call __i686.get_pc_thunk.bx
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+ jne 1f
+ call __init_cpu_features
+1: leal __mempcpy_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __mempcpy_ssse3@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __mempcpy_ssse3_rep@GOTOFF(%ebx), %eax
+2: popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+ ret
+END(__mempcpy)
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __mempcpy_ia32, @function; \
+ .p2align 4; \
+ __mempcpy_ia32: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __mempcpy_ia32, .-__mempcpy_ia32
+
+# undef ENTRY_CHK
+# define ENTRY_CHK(name) \
+ .type __mempcpy_chk_ia32, @function; \
+ .globl __mempcpy_chk_ia32; \
+ .p2align 4; \
+ __mempcpy_chk_ia32: cfi_startproc; \
+ CALL_MCOUNT
+# undef END_CHK
+# define END_CHK(name) \
+ cfi_endproc; .size __mempcpy_chk_ia32, .-__mempcpy_chk_ia32
+
+# undef libc_hidden_def
+# undef libc_hidden_builtin_def
+/* IFUNC doesn't work with the hidden functions in shared library since
+ they will be called without setting up EBX needed for PLT which is
+ used by IFUNC. */
+# define libc_hidden_def(name) \
+ .globl __GI_mempcpy; __GI_mempcpy = __mempcpy_ia32
+# define libc_hidden_builtin_def(name) \
+ .globl __GI___mempcpy; __GI___mempcpy = __mempcpy_ia32
+#endif
+
+#include "../mempcpy.S"
diff --git a/sysdeps/i386/i686/multiarch/mempcpy_chk.S b/sysdeps/i386/i686/multiarch/mempcpy_chk.S
new file mode 100644
index 0000000000..828fb5e608
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/mempcpy_chk.S
@@ -0,0 +1,64 @@
+/* Multiple versions of __mempcpy_chk
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib and for
+ DSO. There are no multiarch mempcpy functions for static binaries.
+ */
+#ifndef NOT_IN_libc
+# ifdef SHARED
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ .p2align 4
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+
+ .text
+ENTRY(__mempcpy_chk)
+ .type __mempcpy_chk, @gnu_indirect_function
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ call __i686.get_pc_thunk.bx
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+ jne 1f
+ call __init_cpu_features
+1: leal __mempcpy_chk_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __mempcpy_chk_ssse3@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __mempcpy_chk_ssse3_rep@GOTOFF(%ebx), %eax
+2: popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+ ret
+END(__mempcpy_chk)
+# else
+# include "../mempcpy_chk.S"
+# endif
+#endif
diff --git a/sysdeps/i386/i686/multiarch/memset-sse2-rep.S b/sysdeps/i386/i686/multiarch/memset-sse2-rep.S
new file mode 100644
index 0000000000..84afffeb66
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memset-sse2-rep.S
@@ -0,0 +1,821 @@
+/* memset with SSE2 and REP string.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef NOT_IN_libc
+
+#include <sysdep.h>
+#include "asm-syntax.h"
+
+#define CFI_PUSH(REG) \
+ cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (REG, 0)
+
+#define CFI_POP(REG) \
+ cfi_adjust_cfa_offset (-4); \
+ cfi_restore (REG)
+
+#define PUSH(REG) pushl REG; CFI_PUSH (REG)
+#define POP(REG) popl REG; CFI_POP (REG)
+
+#ifdef USE_AS_BZERO
+# define DEST PARMS
+# define LEN DEST+4
+# define SETRTNVAL
+#else
+# define DEST PARMS
+# define CHR DEST+4
+# define LEN CHR+4
+# define SETRTNVAL movl DEST(%esp), %eax
+#endif
+
+#ifdef SHARED
+# define ENTRANCE PUSH (%ebx);
+# define RETURN_END POP (%ebx); ret
+# define RETURN RETURN_END; CFI_PUSH (%ebx)
+# define PARMS 8 /* Preserve EBX. */
+# define JMPTBL(I, B) I - B
+
+/* Load an entry in a jump table into EBX and branch to it. TABLE is a
+ jump table with relative offsets. */
+# define BRANCH_TO_JMPTBL_ENTRY(TABLE) \
+ /* We first load PC into EBX. */ \
+ call __i686.get_pc_thunk.bx; \
+ /* Get the address of the jump table. */ \
+ add $(TABLE - .), %ebx; \
+ /* Get the entry and convert the relative offset to the \
+ absolute address. */ \
+ add (%ebx,%ecx,4), %ebx; \
+ add %ecx, %edx; \
+ /* We loaded the jump table and adjuested EDX. Go. */ \
+ jmp *%ebx
+
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ ALIGN (4)
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+#else
+# define ENTRANCE
+# define RETURN_END ret
+# define RETURN RETURN_END
+# define PARMS 4
+# define JMPTBL(I, B) I
+
+/* Branch to an entry in a jump table. TABLE is a jump table with
+ absolute offsets. */
+# define BRANCH_TO_JMPTBL_ENTRY(TABLE) \
+ add %ecx, %edx; \
+ jmp *TABLE(,%ecx,4)
+#endif
+
+ .section .text.sse2,"ax",@progbits
+#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BZERO
+ENTRY (__memset_chk_sse2_rep)
+ movl 12(%esp), %eax
+ cmpl %eax, 16(%esp)
+ jb HIDDEN_JUMPTARGET (__chk_fail)
+END (__memset_chk_sse2_rep)
+#endif
+ENTRY (__memset_sse2_rep)
+ ENTRANCE
+
+ movl LEN(%esp), %ecx
+#ifdef USE_AS_BZERO
+ xor %eax, %eax
+#else
+ movzbl CHR(%esp), %eax
+ movb %al, %ah
+ /* Fill the whole EAX with pattern. */
+ movl %eax, %edx
+ shl $16, %eax
+ or %edx, %eax
+#endif
+ movl DEST(%esp), %edx
+ cmp $32, %ecx
+ jae L(32bytesormore)
+
+L(write_less32bytes):
+ BRANCH_TO_JMPTBL_ENTRY (L(table_less_32bytes))
+
+
+ .pushsection .rodata.sse2,"a",@progbits
+ ALIGN (2)
+L(table_less_32bytes):
+ .int JMPTBL (L(write_0bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_1bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_2bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_3bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_4bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_5bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_6bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_7bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_8bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_9bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_10bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_11bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_12bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_13bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_14bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_15bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_16bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_17bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_18bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_19bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_20bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_21bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_22bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_23bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_24bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_25bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_26bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_27bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_28bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_29bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_30bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_31bytes), L(table_less_32bytes))
+ .popsection
+
+ ALIGN (4)
+L(write_28bytes):
+ movl %eax, -28(%edx)
+L(write_24bytes):
+ movl %eax, -24(%edx)
+L(write_20bytes):
+ movl %eax, -20(%edx)
+L(write_16bytes):
+ movl %eax, -16(%edx)
+L(write_12bytes):
+ movl %eax, -12(%edx)
+L(write_8bytes):
+ movl %eax, -8(%edx)
+L(write_4bytes):
+ movl %eax, -4(%edx)
+L(write_0bytes):
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(write_29bytes):
+ movl %eax, -29(%edx)
+L(write_25bytes):
+ movl %eax, -25(%edx)
+L(write_21bytes):
+ movl %eax, -21(%edx)
+L(write_17bytes):
+ movl %eax, -17(%edx)
+L(write_13bytes):
+ movl %eax, -13(%edx)
+L(write_9bytes):
+ movl %eax, -9(%edx)
+L(write_5bytes):
+ movl %eax, -5(%edx)
+L(write_1bytes):
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(write_30bytes):
+ movl %eax, -30(%edx)
+L(write_26bytes):
+ movl %eax, -26(%edx)
+L(write_22bytes):
+ movl %eax, -22(%edx)
+L(write_18bytes):
+ movl %eax, -18(%edx)
+L(write_14bytes):
+ movl %eax, -14(%edx)
+L(write_10bytes):
+ movl %eax, -10(%edx)
+L(write_6bytes):
+ movl %eax, -6(%edx)
+L(write_2bytes):
+ movw %ax, -2(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(write_31bytes):
+ movl %eax, -31(%edx)
+L(write_27bytes):
+ movl %eax, -27(%edx)
+L(write_23bytes):
+ movl %eax, -23(%edx)
+L(write_19bytes):
+ movl %eax, -19(%edx)
+L(write_15bytes):
+ movl %eax, -15(%edx)
+L(write_11bytes):
+ movl %eax, -11(%edx)
+L(write_7bytes):
+ movl %eax, -7(%edx)
+L(write_3bytes):
+ movw %ax, -3(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+/* ECX > 32 and EDX is 4 byte aligned. */
+L(32bytesormore):
+ /* Fill xmm0 with the pattern. */
+#ifdef USE_AS_BZERO
+ pxor %xmm0, %xmm0
+#else
+ movd %eax, %xmm0
+ punpcklbw %xmm0, %xmm0
+ pshufd $0, %xmm0, %xmm0
+#endif
+ testl $0xf, %edx
+ jz L(aligned_16)
+/* ECX > 32 and EDX is not 16 byte aligned. */
+L(not_aligned_16):
+ movdqu %xmm0, (%edx)
+ movl %edx, %eax
+ and $-16, %edx
+ add $16, %edx
+ sub %edx, %eax
+ add %eax, %ecx
+ movd %xmm0, %eax
+
+ ALIGN (4)
+L(aligned_16):
+ cmp $128, %ecx
+ jge L(128bytesormore)
+
+L(aligned_16_less128bytes):
+ BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
+
+ ALIGN (4)
+L(128bytesormore):
+ PUSH (%edi)
+#ifdef DATA_CACHE_SIZE
+ PUSH (%ebx)
+ mov $DATA_CACHE_SIZE, %ebx
+#else
+# ifdef SHARED
+ call __i686.get_pc_thunk.bx
+ add $_GLOBAL_OFFSET_TABLE_, %ebx
+ mov __x86_data_cache_size@GOTOFF(%ebx), %ebx
+# else
+ PUSH (%ebx)
+ mov __x86_data_cache_size, %ebx
+# endif
+#endif
+ mov %ebx, %edi
+ shr $4, %ebx
+ sub %ebx, %edi
+#if defined DATA_CACHE_SIZE || !defined SHARED
+ POP (%ebx)
+#endif
+/*
+ * When data size approximate the end of L1 cache,
+ * fast string will prefetch and combine data efficiently.
+ */
+ cmp %edi, %ecx
+ jae L(128bytesormore_nt)
+ subl $128, %ecx
+L(128bytesormore_normal):
+ sub $128, %ecx
+ movdqa %xmm0, (%edx)
+ movdqa %xmm0, 0x10(%edx)
+ movdqa %xmm0, 0x20(%edx)
+ movdqa %xmm0, 0x30(%edx)
+ movdqa %xmm0, 0x40(%edx)
+ movdqa %xmm0, 0x50(%edx)
+ movdqa %xmm0, 0x60(%edx)
+ movdqa %xmm0, 0x70(%edx)
+ lea 128(%edx), %edx
+ jl L(128bytesless_normal)
+
+
+ sub $128, %ecx
+ movdqa %xmm0, (%edx)
+ movdqa %xmm0, 0x10(%edx)
+ movdqa %xmm0, 0x20(%edx)
+ movdqa %xmm0, 0x30(%edx)
+ movdqa %xmm0, 0x40(%edx)
+ movdqa %xmm0, 0x50(%edx)
+ movdqa %xmm0, 0x60(%edx)
+ movdqa %xmm0, 0x70(%edx)
+ lea 128(%edx), %edx
+ jge L(128bytesormore_normal)
+
+L(128bytesless_normal):
+ POP (%edi)
+ lea 128(%ecx), %ecx
+ BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
+
+ ALIGN (4)
+L(128bytesormore_nt):
+ mov %edx, %edi
+ mov %ecx, %edx
+ shr $2, %ecx
+ and $3, %edx
+ rep stosl
+ jz L(copy_page_by_rep_exit)
+ cmp $2, %edx
+ jb L(copy_page_by_rep_left_1)
+ movw %ax, (%edi)
+ add $2, %edi
+ sub $2, %edx
+ jz L(copy_page_by_rep_exit)
+L(copy_page_by_rep_left_1):
+ movb %al, (%edi)
+L(copy_page_by_rep_exit):
+ POP (%edi)
+ SETRTNVAL
+ RETURN
+
+ .pushsection .rodata.sse2,"a",@progbits
+ ALIGN (2)
+L(table_16_128bytes):
+ .int JMPTBL (L(aligned_16_0bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_1bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_2bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_3bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_4bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_5bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_6bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_7bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_8bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_9bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_10bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_11bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_12bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_13bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_14bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_15bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_16bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_17bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_18bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_19bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_20bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_21bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_22bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_23bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_24bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_25bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_26bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_27bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_28bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_29bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_30bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_31bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_32bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_33bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_34bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_35bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_36bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_37bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_38bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_39bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_40bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_41bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_42bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_43bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_44bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_45bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_46bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_47bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_48bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_49bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_50bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_51bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_52bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_53bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_54bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_55bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_56bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_57bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_58bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_59bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_60bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_61bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_62bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_63bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_64bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_65bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_66bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_67bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_68bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_69bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_70bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_71bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_72bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_73bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_74bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_75bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_76bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_77bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_78bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_79bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_80bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_81bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_82bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_83bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_84bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_85bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_86bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_87bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_88bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_89bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_90bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_91bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_92bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_93bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_94bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_95bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_96bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_97bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_98bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_99bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_100bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_101bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_102bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_103bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_104bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_105bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_106bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_107bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_108bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_109bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_110bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_111bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_112bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_113bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_114bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_115bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_116bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_117bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_118bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_119bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_120bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_121bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_122bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_123bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_124bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_125bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_126bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_127bytes), L(table_16_128bytes))
+ .popsection
+
+ ALIGN (4)
+L(aligned_16_112bytes):
+ movdqa %xmm0, -112(%edx)
+L(aligned_16_96bytes):
+ movdqa %xmm0, -96(%edx)
+L(aligned_16_80bytes):
+ movdqa %xmm0, -80(%edx)
+L(aligned_16_64bytes):
+ movdqa %xmm0, -64(%edx)
+L(aligned_16_48bytes):
+ movdqa %xmm0, -48(%edx)
+L(aligned_16_32bytes):
+ movdqa %xmm0, -32(%edx)
+L(aligned_16_16bytes):
+ movdqa %xmm0, -16(%edx)
+L(aligned_16_0bytes):
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_113bytes):
+ movdqa %xmm0, -113(%edx)
+L(aligned_16_97bytes):
+ movdqa %xmm0, -97(%edx)
+L(aligned_16_81bytes):
+ movdqa %xmm0, -81(%edx)
+L(aligned_16_65bytes):
+ movdqa %xmm0, -65(%edx)
+L(aligned_16_49bytes):
+ movdqa %xmm0, -49(%edx)
+L(aligned_16_33bytes):
+ movdqa %xmm0, -33(%edx)
+L(aligned_16_17bytes):
+ movdqa %xmm0, -17(%edx)
+L(aligned_16_1bytes):
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_114bytes):
+ movdqa %xmm0, -114(%edx)
+L(aligned_16_98bytes):
+ movdqa %xmm0, -98(%edx)
+L(aligned_16_82bytes):
+ movdqa %xmm0, -82(%edx)
+L(aligned_16_66bytes):
+ movdqa %xmm0, -66(%edx)
+L(aligned_16_50bytes):
+ movdqa %xmm0, -50(%edx)
+L(aligned_16_34bytes):
+ movdqa %xmm0, -34(%edx)
+L(aligned_16_18bytes):
+ movdqa %xmm0, -18(%edx)
+L(aligned_16_2bytes):
+ movw %ax, -2(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_115bytes):
+ movdqa %xmm0, -115(%edx)
+L(aligned_16_99bytes):
+ movdqa %xmm0, -99(%edx)
+L(aligned_16_83bytes):
+ movdqa %xmm0, -83(%edx)
+L(aligned_16_67bytes):
+ movdqa %xmm0, -67(%edx)
+L(aligned_16_51bytes):
+ movdqa %xmm0, -51(%edx)
+L(aligned_16_35bytes):
+ movdqa %xmm0, -35(%edx)
+L(aligned_16_19bytes):
+ movdqa %xmm0, -19(%edx)
+L(aligned_16_3bytes):
+ movw %ax, -3(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_116bytes):
+ movdqa %xmm0, -116(%edx)
+L(aligned_16_100bytes):
+ movdqa %xmm0, -100(%edx)
+L(aligned_16_84bytes):
+ movdqa %xmm0, -84(%edx)
+L(aligned_16_68bytes):
+ movdqa %xmm0, -68(%edx)
+L(aligned_16_52bytes):
+ movdqa %xmm0, -52(%edx)
+L(aligned_16_36bytes):
+ movdqa %xmm0, -36(%edx)
+L(aligned_16_20bytes):
+ movdqa %xmm0, -20(%edx)
+L(aligned_16_4bytes):
+ movl %eax, -4(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_117bytes):
+ movdqa %xmm0, -117(%edx)
+L(aligned_16_101bytes):
+ movdqa %xmm0, -101(%edx)
+L(aligned_16_85bytes):
+ movdqa %xmm0, -85(%edx)
+L(aligned_16_69bytes):
+ movdqa %xmm0, -69(%edx)
+L(aligned_16_53bytes):
+ movdqa %xmm0, -53(%edx)
+L(aligned_16_37bytes):
+ movdqa %xmm0, -37(%edx)
+L(aligned_16_21bytes):
+ movdqa %xmm0, -21(%edx)
+L(aligned_16_5bytes):
+ movl %eax, -5(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_118bytes):
+ movdqa %xmm0, -118(%edx)
+L(aligned_16_102bytes):
+ movdqa %xmm0, -102(%edx)
+L(aligned_16_86bytes):
+ movdqa %xmm0, -86(%edx)
+L(aligned_16_70bytes):
+ movdqa %xmm0, -70(%edx)
+L(aligned_16_54bytes):
+ movdqa %xmm0, -54(%edx)
+L(aligned_16_38bytes):
+ movdqa %xmm0, -38(%edx)
+L(aligned_16_22bytes):
+ movdqa %xmm0, -22(%edx)
+L(aligned_16_6bytes):
+ movl %eax, -6(%edx)
+ movw %ax, -2(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_119bytes):
+ movdqa %xmm0, -119(%edx)
+L(aligned_16_103bytes):
+ movdqa %xmm0, -103(%edx)
+L(aligned_16_87bytes):
+ movdqa %xmm0, -87(%edx)
+L(aligned_16_71bytes):
+ movdqa %xmm0, -71(%edx)
+L(aligned_16_55bytes):
+ movdqa %xmm0, -55(%edx)
+L(aligned_16_39bytes):
+ movdqa %xmm0, -39(%edx)
+L(aligned_16_23bytes):
+ movdqa %xmm0, -23(%edx)
+L(aligned_16_7bytes):
+ movl %eax, -7(%edx)
+ movw %ax, -3(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_120bytes):
+ movdqa %xmm0, -120(%edx)
+L(aligned_16_104bytes):
+ movdqa %xmm0, -104(%edx)
+L(aligned_16_88bytes):
+ movdqa %xmm0, -88(%edx)
+L(aligned_16_72bytes):
+ movdqa %xmm0, -72(%edx)
+L(aligned_16_56bytes):
+ movdqa %xmm0, -56(%edx)
+L(aligned_16_40bytes):
+ movdqa %xmm0, -40(%edx)
+L(aligned_16_24bytes):
+ movdqa %xmm0, -24(%edx)
+L(aligned_16_8bytes):
+ movq %xmm0, -8(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_121bytes):
+ movdqa %xmm0, -121(%edx)
+L(aligned_16_105bytes):
+ movdqa %xmm0, -105(%edx)
+L(aligned_16_89bytes):
+ movdqa %xmm0, -89(%edx)
+L(aligned_16_73bytes):
+ movdqa %xmm0, -73(%edx)
+L(aligned_16_57bytes):
+ movdqa %xmm0, -57(%edx)
+L(aligned_16_41bytes):
+ movdqa %xmm0, -41(%edx)
+L(aligned_16_25bytes):
+ movdqa %xmm0, -25(%edx)
+L(aligned_16_9bytes):
+ movq %xmm0, -9(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_122bytes):
+ movdqa %xmm0, -122(%edx)
+L(aligned_16_106bytes):
+ movdqa %xmm0, -106(%edx)
+L(aligned_16_90bytes):
+ movdqa %xmm0, -90(%edx)
+L(aligned_16_74bytes):
+ movdqa %xmm0, -74(%edx)
+L(aligned_16_58bytes):
+ movdqa %xmm0, -58(%edx)
+L(aligned_16_42bytes):
+ movdqa %xmm0, -42(%edx)
+L(aligned_16_26bytes):
+ movdqa %xmm0, -26(%edx)
+L(aligned_16_10bytes):
+ movq %xmm0, -10(%edx)
+ movw %ax, -2(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_123bytes):
+ movdqa %xmm0, -123(%edx)
+L(aligned_16_107bytes):
+ movdqa %xmm0, -107(%edx)
+L(aligned_16_91bytes):
+ movdqa %xmm0, -91(%edx)
+L(aligned_16_75bytes):
+ movdqa %xmm0, -75(%edx)
+L(aligned_16_59bytes):
+ movdqa %xmm0, -59(%edx)
+L(aligned_16_43bytes):
+ movdqa %xmm0, -43(%edx)
+L(aligned_16_27bytes):
+ movdqa %xmm0, -27(%edx)
+L(aligned_16_11bytes):
+ movq %xmm0, -11(%edx)
+ movw %ax, -3(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_124bytes):
+ movdqa %xmm0, -124(%edx)
+L(aligned_16_108bytes):
+ movdqa %xmm0, -108(%edx)
+L(aligned_16_92bytes):
+ movdqa %xmm0, -92(%edx)
+L(aligned_16_76bytes):
+ movdqa %xmm0, -76(%edx)
+L(aligned_16_60bytes):
+ movdqa %xmm0, -60(%edx)
+L(aligned_16_44bytes):
+ movdqa %xmm0, -44(%edx)
+L(aligned_16_28bytes):
+ movdqa %xmm0, -28(%edx)
+L(aligned_16_12bytes):
+ movq %xmm0, -12(%edx)
+ movl %eax, -4(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_125bytes):
+ movdqa %xmm0, -125(%edx)
+L(aligned_16_109bytes):
+ movdqa %xmm0, -109(%edx)
+L(aligned_16_93bytes):
+ movdqa %xmm0, -93(%edx)
+L(aligned_16_77bytes):
+ movdqa %xmm0, -77(%edx)
+L(aligned_16_61bytes):
+ movdqa %xmm0, -61(%edx)
+L(aligned_16_45bytes):
+ movdqa %xmm0, -45(%edx)
+L(aligned_16_29bytes):
+ movdqa %xmm0, -29(%edx)
+L(aligned_16_13bytes):
+ movq %xmm0, -13(%edx)
+ movl %eax, -5(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_126bytes):
+ movdqa %xmm0, -126(%edx)
+L(aligned_16_110bytes):
+ movdqa %xmm0, -110(%edx)
+L(aligned_16_94bytes):
+ movdqa %xmm0, -94(%edx)
+L(aligned_16_78bytes):
+ movdqa %xmm0, -78(%edx)
+L(aligned_16_62bytes):
+ movdqa %xmm0, -62(%edx)
+L(aligned_16_46bytes):
+ movdqa %xmm0, -46(%edx)
+L(aligned_16_30bytes):
+ movdqa %xmm0, -30(%edx)
+L(aligned_16_14bytes):
+ movq %xmm0, -14(%edx)
+ movl %eax, -6(%edx)
+ movw %ax, -2(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_127bytes):
+ movdqa %xmm0, -127(%edx)
+L(aligned_16_111bytes):
+ movdqa %xmm0, -111(%edx)
+L(aligned_16_95bytes):
+ movdqa %xmm0, -95(%edx)
+L(aligned_16_79bytes):
+ movdqa %xmm0, -79(%edx)
+L(aligned_16_63bytes):
+ movdqa %xmm0, -63(%edx)
+L(aligned_16_47bytes):
+ movdqa %xmm0, -47(%edx)
+L(aligned_16_31bytes):
+ movdqa %xmm0, -31(%edx)
+L(aligned_16_15bytes):
+ movq %xmm0, -15(%edx)
+ movl %eax, -7(%edx)
+ movw %ax, -3(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN_END
+
+END (__memset_sse2_rep)
+
+#endif
diff --git a/sysdeps/i386/i686/multiarch/memset-sse2.S b/sysdeps/i386/i686/multiarch/memset-sse2.S
new file mode 100644
index 0000000000..b2b979193e
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memset-sse2.S
@@ -0,0 +1,867 @@
+/* memset with SSE2
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef NOT_IN_libc
+
+#include <sysdep.h>
+#include "asm-syntax.h"
+
+#define CFI_PUSH(REG) \
+ cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (REG, 0)
+
+#define CFI_POP(REG) \
+ cfi_adjust_cfa_offset (-4); \
+ cfi_restore (REG)
+
+#define PUSH(REG) pushl REG; CFI_PUSH (REG)
+#define POP(REG) popl REG; CFI_POP (REG)
+
+#ifdef USE_AS_BZERO
+# define DEST PARMS
+# define LEN DEST+4
+# define SETRTNVAL
+#else
+# define DEST PARMS
+# define CHR DEST+4
+# define LEN CHR+4
+# define SETRTNVAL movl DEST(%esp), %eax
+#endif
+
+#ifdef SHARED
+# define ENTRANCE PUSH (%ebx);
+# define RETURN_END POP (%ebx); ret
+# define RETURN RETURN_END; CFI_PUSH (%ebx)
+# define PARMS 8 /* Preserve EBX. */
+# define JMPTBL(I, B) I - B
+
+/* Load an entry in a jump table into EBX and branch to it. TABLE is a
+ jump table with relative offsets. */
+# define BRANCH_TO_JMPTBL_ENTRY(TABLE) \
+ /* We first load PC into EBX. */ \
+ call __i686.get_pc_thunk.bx; \
+ /* Get the address of the jump table. */ \
+ add $(TABLE - .), %ebx; \
+ /* Get the entry and convert the relative offset to the \
+ absolute address. */ \
+ add (%ebx,%ecx,4), %ebx; \
+ add %ecx, %edx; \
+ /* We loaded the jump table and adjuested EDX. Go. */ \
+ jmp *%ebx
+
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ ALIGN (4)
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+#else
+# define ENTRANCE
+# define RETURN_END ret
+# define RETURN RETURN_END
+# define PARMS 4
+# define JMPTBL(I, B) I
+
+/* Branch to an entry in a jump table. TABLE is a jump table with
+ absolute offsets. */
+# define BRANCH_TO_JMPTBL_ENTRY(TABLE) \
+ add %ecx, %edx; \
+ jmp *TABLE(,%ecx,4)
+#endif
+
+ .section .text.sse2,"ax",@progbits
+#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BZERO
+ENTRY (__memset_chk_sse2)
+ movl 12(%esp), %eax
+ cmpl %eax, 16(%esp)
+ jb HIDDEN_JUMPTARGET (__chk_fail)
+END (__memset_chk_sse2)
+#endif
+ENTRY (__memset_sse2)
+ ENTRANCE
+
+ movl LEN(%esp), %ecx
+#ifdef USE_AS_BZERO
+ xor %eax, %eax
+#else
+ movzbl CHR(%esp), %eax
+ movb %al, %ah
+ /* Fill the whole EAX with pattern. */
+ movl %eax, %edx
+ shl $16, %eax
+ or %edx, %eax
+#endif
+ movl DEST(%esp), %edx
+ cmp $32, %ecx
+ jae L(32bytesormore)
+
+L(write_less32bytes):
+ BRANCH_TO_JMPTBL_ENTRY (L(table_less_32bytes))
+
+
+ .pushsection .rodata.sse2,"a",@progbits
+ ALIGN (2)
+L(table_less_32bytes):
+ .int JMPTBL (L(write_0bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_1bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_2bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_3bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_4bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_5bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_6bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_7bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_8bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_9bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_10bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_11bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_12bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_13bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_14bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_15bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_16bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_17bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_18bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_19bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_20bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_21bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_22bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_23bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_24bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_25bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_26bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_27bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_28bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_29bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_30bytes), L(table_less_32bytes))
+ .int JMPTBL (L(write_31bytes), L(table_less_32bytes))
+ .popsection
+
+ ALIGN (4)
+L(write_28bytes):
+ movl %eax, -28(%edx)
+L(write_24bytes):
+ movl %eax, -24(%edx)
+L(write_20bytes):
+ movl %eax, -20(%edx)
+L(write_16bytes):
+ movl %eax, -16(%edx)
+L(write_12bytes):
+ movl %eax, -12(%edx)
+L(write_8bytes):
+ movl %eax, -8(%edx)
+L(write_4bytes):
+ movl %eax, -4(%edx)
+L(write_0bytes):
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(write_29bytes):
+ movl %eax, -29(%edx)
+L(write_25bytes):
+ movl %eax, -25(%edx)
+L(write_21bytes):
+ movl %eax, -21(%edx)
+L(write_17bytes):
+ movl %eax, -17(%edx)
+L(write_13bytes):
+ movl %eax, -13(%edx)
+L(write_9bytes):
+ movl %eax, -9(%edx)
+L(write_5bytes):
+ movl %eax, -5(%edx)
+L(write_1bytes):
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(write_30bytes):
+ movl %eax, -30(%edx)
+L(write_26bytes):
+ movl %eax, -26(%edx)
+L(write_22bytes):
+ movl %eax, -22(%edx)
+L(write_18bytes):
+ movl %eax, -18(%edx)
+L(write_14bytes):
+ movl %eax, -14(%edx)
+L(write_10bytes):
+ movl %eax, -10(%edx)
+L(write_6bytes):
+ movl %eax, -6(%edx)
+L(write_2bytes):
+ movw %ax, -2(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(write_31bytes):
+ movl %eax, -31(%edx)
+L(write_27bytes):
+ movl %eax, -27(%edx)
+L(write_23bytes):
+ movl %eax, -23(%edx)
+L(write_19bytes):
+ movl %eax, -19(%edx)
+L(write_15bytes):
+ movl %eax, -15(%edx)
+L(write_11bytes):
+ movl %eax, -11(%edx)
+L(write_7bytes):
+ movl %eax, -7(%edx)
+L(write_3bytes):
+ movw %ax, -3(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+/* ECX > 32 and EDX is 4 byte aligned. */
+L(32bytesormore):
+ /* Fill xmm0 with the pattern. */
+#ifdef USE_AS_BZERO
+ pxor %xmm0, %xmm0
+#else
+ movd %eax, %xmm0
+ punpcklbw %xmm0, %xmm0
+ pshufd $0, %xmm0, %xmm0
+#endif
+ testl $0xf, %edx
+ jz L(aligned_16)
+/* ECX > 32 and EDX is not 16 byte aligned. */
+L(not_aligned_16):
+ movdqu %xmm0, (%edx)
+ movl %edx, %eax
+ and $-16, %edx
+ add $16, %edx
+ sub %edx, %eax
+ add %eax, %ecx
+ movd %xmm0, %eax
+
+ ALIGN (4)
+L(aligned_16):
+ cmp $128, %ecx
+ jge L(128bytesormore)
+
+L(aligned_16_less128bytes):
+ BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
+
+ ALIGN (4)
+L(128bytesormore):
+#ifdef SHARED_CACHE_SIZE
+ PUSH (%ebx)
+ mov $SHARED_CACHE_SIZE, %ebx
+#else
+# ifdef SHARED
+ call __i686.get_pc_thunk.bx
+ add $_GLOBAL_OFFSET_TABLE_, %ebx
+ mov __x86_shared_cache_size@GOTOFF(%ebx), %ebx
+# else
+ PUSH (%ebx)
+ mov __x86_shared_cache_size, %ebx
+# endif
+#endif
+ cmp %ebx, %ecx
+ jae L(128bytesormore_nt_start)
+
+
+#ifdef DATA_CACHE_SIZE
+ POP (%ebx)
+ cmp $DATA_CACHE_SIZE, %ecx
+#else
+# ifdef SHARED
+ call __i686.get_pc_thunk.bx
+ add $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmp __x86_data_cache_size@GOTOFF(%ebx), %ecx
+# else
+ POP (%ebx)
+ cmp __x86_data_cache_size, %ecx
+# endif
+#endif
+
+ jae L(128bytes_L2_normal)
+ subl $128, %ecx
+L(128bytesormore_normal):
+ sub $128, %ecx
+ movdqa %xmm0, (%edx)
+ movdqa %xmm0, 0x10(%edx)
+ movdqa %xmm0, 0x20(%edx)
+ movdqa %xmm0, 0x30(%edx)
+ movdqa %xmm0, 0x40(%edx)
+ movdqa %xmm0, 0x50(%edx)
+ movdqa %xmm0, 0x60(%edx)
+ movdqa %xmm0, 0x70(%edx)
+ lea 128(%edx), %edx
+ jl L(128bytesless_normal)
+
+
+ sub $128, %ecx
+ movdqa %xmm0, (%edx)
+ movdqa %xmm0, 0x10(%edx)
+ movdqa %xmm0, 0x20(%edx)
+ movdqa %xmm0, 0x30(%edx)
+ movdqa %xmm0, 0x40(%edx)
+ movdqa %xmm0, 0x50(%edx)
+ movdqa %xmm0, 0x60(%edx)
+ movdqa %xmm0, 0x70(%edx)
+ lea 128(%edx), %edx
+ jge L(128bytesormore_normal)
+
+L(128bytesless_normal):
+ lea 128(%ecx), %ecx
+ BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
+
+ ALIGN (4)
+L(128bytes_L2_normal):
+ prefetcht0 0x380(%edx)
+ prefetcht0 0x3c0(%edx)
+ sub $128, %ecx
+ movdqa %xmm0, (%edx)
+ movaps %xmm0, 0x10(%edx)
+ movaps %xmm0, 0x20(%edx)
+ movaps %xmm0, 0x30(%edx)
+ movaps %xmm0, 0x40(%edx)
+ movaps %xmm0, 0x50(%edx)
+ movaps %xmm0, 0x60(%edx)
+ movaps %xmm0, 0x70(%edx)
+ add $128, %edx
+ cmp $128, %ecx
+ jge L(128bytes_L2_normal)
+
+L(128bytesless_L2_normal):
+ BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
+
+L(128bytesormore_nt_start):
+ sub %ebx, %ecx
+ ALIGN (4)
+L(128bytesormore_shared_cache_loop):
+ prefetcht0 0x3c0(%edx)
+ prefetcht0 0x380(%edx)
+ sub $0x80, %ebx
+ movdqa %xmm0, (%edx)
+ movdqa %xmm0, 0x10(%edx)
+ movdqa %xmm0, 0x20(%edx)
+ movdqa %xmm0, 0x30(%edx)
+ movdqa %xmm0, 0x40(%edx)
+ movdqa %xmm0, 0x50(%edx)
+ movdqa %xmm0, 0x60(%edx)
+ movdqa %xmm0, 0x70(%edx)
+ add $0x80, %edx
+ cmp $0x80, %ebx
+ jge L(128bytesormore_shared_cache_loop)
+ cmp $0x80, %ecx
+ jb L(shared_cache_loop_end)
+ ALIGN (4)
+L(128bytesormore_nt):
+ sub $0x80, %ecx
+ movntdq %xmm0, (%edx)
+ movntdq %xmm0, 0x10(%edx)
+ movntdq %xmm0, 0x20(%edx)
+ movntdq %xmm0, 0x30(%edx)
+ movntdq %xmm0, 0x40(%edx)
+ movntdq %xmm0, 0x50(%edx)
+ movntdq %xmm0, 0x60(%edx)
+ movntdq %xmm0, 0x70(%edx)
+ add $0x80, %edx
+ cmp $0x80, %ecx
+ jge L(128bytesormore_nt)
+ sfence
+L(shared_cache_loop_end):
+#if defined DATA_CACHE_SIZE || !defined SHARED
+ POP (%ebx)
+#endif
+ BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
+
+
+ .pushsection .rodata.sse2,"a",@progbits
+ ALIGN (2)
+L(table_16_128bytes):
+ .int JMPTBL (L(aligned_16_0bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_1bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_2bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_3bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_4bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_5bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_6bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_7bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_8bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_9bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_10bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_11bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_12bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_13bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_14bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_15bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_16bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_17bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_18bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_19bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_20bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_21bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_22bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_23bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_24bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_25bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_26bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_27bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_28bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_29bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_30bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_31bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_32bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_33bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_34bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_35bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_36bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_37bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_38bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_39bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_40bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_41bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_42bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_43bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_44bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_45bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_46bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_47bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_48bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_49bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_50bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_51bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_52bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_53bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_54bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_55bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_56bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_57bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_58bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_59bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_60bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_61bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_62bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_63bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_64bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_65bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_66bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_67bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_68bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_69bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_70bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_71bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_72bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_73bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_74bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_75bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_76bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_77bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_78bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_79bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_80bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_81bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_82bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_83bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_84bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_85bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_86bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_87bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_88bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_89bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_90bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_91bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_92bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_93bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_94bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_95bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_96bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_97bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_98bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_99bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_100bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_101bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_102bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_103bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_104bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_105bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_106bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_107bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_108bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_109bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_110bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_111bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_112bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_113bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_114bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_115bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_116bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_117bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_118bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_119bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_120bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_121bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_122bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_123bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_124bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_125bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_126bytes), L(table_16_128bytes))
+ .int JMPTBL (L(aligned_16_127bytes), L(table_16_128bytes))
+ .popsection
+
+ ALIGN (4)
+L(aligned_16_112bytes):
+ movdqa %xmm0, -112(%edx)
+L(aligned_16_96bytes):
+ movdqa %xmm0, -96(%edx)
+L(aligned_16_80bytes):
+ movdqa %xmm0, -80(%edx)
+L(aligned_16_64bytes):
+ movdqa %xmm0, -64(%edx)
+L(aligned_16_48bytes):
+ movdqa %xmm0, -48(%edx)
+L(aligned_16_32bytes):
+ movdqa %xmm0, -32(%edx)
+L(aligned_16_16bytes):
+ movdqa %xmm0, -16(%edx)
+L(aligned_16_0bytes):
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_113bytes):
+ movdqa %xmm0, -113(%edx)
+L(aligned_16_97bytes):
+ movdqa %xmm0, -97(%edx)
+L(aligned_16_81bytes):
+ movdqa %xmm0, -81(%edx)
+L(aligned_16_65bytes):
+ movdqa %xmm0, -65(%edx)
+L(aligned_16_49bytes):
+ movdqa %xmm0, -49(%edx)
+L(aligned_16_33bytes):
+ movdqa %xmm0, -33(%edx)
+L(aligned_16_17bytes):
+ movdqa %xmm0, -17(%edx)
+L(aligned_16_1bytes):
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_114bytes):
+ movdqa %xmm0, -114(%edx)
+L(aligned_16_98bytes):
+ movdqa %xmm0, -98(%edx)
+L(aligned_16_82bytes):
+ movdqa %xmm0, -82(%edx)
+L(aligned_16_66bytes):
+ movdqa %xmm0, -66(%edx)
+L(aligned_16_50bytes):
+ movdqa %xmm0, -50(%edx)
+L(aligned_16_34bytes):
+ movdqa %xmm0, -34(%edx)
+L(aligned_16_18bytes):
+ movdqa %xmm0, -18(%edx)
+L(aligned_16_2bytes):
+ movw %ax, -2(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_115bytes):
+ movdqa %xmm0, -115(%edx)
+L(aligned_16_99bytes):
+ movdqa %xmm0, -99(%edx)
+L(aligned_16_83bytes):
+ movdqa %xmm0, -83(%edx)
+L(aligned_16_67bytes):
+ movdqa %xmm0, -67(%edx)
+L(aligned_16_51bytes):
+ movdqa %xmm0, -51(%edx)
+L(aligned_16_35bytes):
+ movdqa %xmm0, -35(%edx)
+L(aligned_16_19bytes):
+ movdqa %xmm0, -19(%edx)
+L(aligned_16_3bytes):
+ movw %ax, -3(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_116bytes):
+ movdqa %xmm0, -116(%edx)
+L(aligned_16_100bytes):
+ movdqa %xmm0, -100(%edx)
+L(aligned_16_84bytes):
+ movdqa %xmm0, -84(%edx)
+L(aligned_16_68bytes):
+ movdqa %xmm0, -68(%edx)
+L(aligned_16_52bytes):
+ movdqa %xmm0, -52(%edx)
+L(aligned_16_36bytes):
+ movdqa %xmm0, -36(%edx)
+L(aligned_16_20bytes):
+ movdqa %xmm0, -20(%edx)
+L(aligned_16_4bytes):
+ movl %eax, -4(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_117bytes):
+ movdqa %xmm0, -117(%edx)
+L(aligned_16_101bytes):
+ movdqa %xmm0, -101(%edx)
+L(aligned_16_85bytes):
+ movdqa %xmm0, -85(%edx)
+L(aligned_16_69bytes):
+ movdqa %xmm0, -69(%edx)
+L(aligned_16_53bytes):
+ movdqa %xmm0, -53(%edx)
+L(aligned_16_37bytes):
+ movdqa %xmm0, -37(%edx)
+L(aligned_16_21bytes):
+ movdqa %xmm0, -21(%edx)
+L(aligned_16_5bytes):
+ movl %eax, -5(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_118bytes):
+ movdqa %xmm0, -118(%edx)
+L(aligned_16_102bytes):
+ movdqa %xmm0, -102(%edx)
+L(aligned_16_86bytes):
+ movdqa %xmm0, -86(%edx)
+L(aligned_16_70bytes):
+ movdqa %xmm0, -70(%edx)
+L(aligned_16_54bytes):
+ movdqa %xmm0, -54(%edx)
+L(aligned_16_38bytes):
+ movdqa %xmm0, -38(%edx)
+L(aligned_16_22bytes):
+ movdqa %xmm0, -22(%edx)
+L(aligned_16_6bytes):
+ movl %eax, -6(%edx)
+ movw %ax, -2(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_119bytes):
+ movdqa %xmm0, -119(%edx)
+L(aligned_16_103bytes):
+ movdqa %xmm0, -103(%edx)
+L(aligned_16_87bytes):
+ movdqa %xmm0, -87(%edx)
+L(aligned_16_71bytes):
+ movdqa %xmm0, -71(%edx)
+L(aligned_16_55bytes):
+ movdqa %xmm0, -55(%edx)
+L(aligned_16_39bytes):
+ movdqa %xmm0, -39(%edx)
+L(aligned_16_23bytes):
+ movdqa %xmm0, -23(%edx)
+L(aligned_16_7bytes):
+ movl %eax, -7(%edx)
+ movw %ax, -3(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_120bytes):
+ movdqa %xmm0, -120(%edx)
+L(aligned_16_104bytes):
+ movdqa %xmm0, -104(%edx)
+L(aligned_16_88bytes):
+ movdqa %xmm0, -88(%edx)
+L(aligned_16_72bytes):
+ movdqa %xmm0, -72(%edx)
+L(aligned_16_56bytes):
+ movdqa %xmm0, -56(%edx)
+L(aligned_16_40bytes):
+ movdqa %xmm0, -40(%edx)
+L(aligned_16_24bytes):
+ movdqa %xmm0, -24(%edx)
+L(aligned_16_8bytes):
+ movq %xmm0, -8(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_121bytes):
+ movdqa %xmm0, -121(%edx)
+L(aligned_16_105bytes):
+ movdqa %xmm0, -105(%edx)
+L(aligned_16_89bytes):
+ movdqa %xmm0, -89(%edx)
+L(aligned_16_73bytes):
+ movdqa %xmm0, -73(%edx)
+L(aligned_16_57bytes):
+ movdqa %xmm0, -57(%edx)
+L(aligned_16_41bytes):
+ movdqa %xmm0, -41(%edx)
+L(aligned_16_25bytes):
+ movdqa %xmm0, -25(%edx)
+L(aligned_16_9bytes):
+ movq %xmm0, -9(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_122bytes):
+ movdqa %xmm0, -122(%edx)
+L(aligned_16_106bytes):
+ movdqa %xmm0, -106(%edx)
+L(aligned_16_90bytes):
+ movdqa %xmm0, -90(%edx)
+L(aligned_16_74bytes):
+ movdqa %xmm0, -74(%edx)
+L(aligned_16_58bytes):
+ movdqa %xmm0, -58(%edx)
+L(aligned_16_42bytes):
+ movdqa %xmm0, -42(%edx)
+L(aligned_16_26bytes):
+ movdqa %xmm0, -26(%edx)
+L(aligned_16_10bytes):
+ movq %xmm0, -10(%edx)
+ movw %ax, -2(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_123bytes):
+ movdqa %xmm0, -123(%edx)
+L(aligned_16_107bytes):
+ movdqa %xmm0, -107(%edx)
+L(aligned_16_91bytes):
+ movdqa %xmm0, -91(%edx)
+L(aligned_16_75bytes):
+ movdqa %xmm0, -75(%edx)
+L(aligned_16_59bytes):
+ movdqa %xmm0, -59(%edx)
+L(aligned_16_43bytes):
+ movdqa %xmm0, -43(%edx)
+L(aligned_16_27bytes):
+ movdqa %xmm0, -27(%edx)
+L(aligned_16_11bytes):
+ movq %xmm0, -11(%edx)
+ movw %ax, -3(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_124bytes):
+ movdqa %xmm0, -124(%edx)
+L(aligned_16_108bytes):
+ movdqa %xmm0, -108(%edx)
+L(aligned_16_92bytes):
+ movdqa %xmm0, -92(%edx)
+L(aligned_16_76bytes):
+ movdqa %xmm0, -76(%edx)
+L(aligned_16_60bytes):
+ movdqa %xmm0, -60(%edx)
+L(aligned_16_44bytes):
+ movdqa %xmm0, -44(%edx)
+L(aligned_16_28bytes):
+ movdqa %xmm0, -28(%edx)
+L(aligned_16_12bytes):
+ movq %xmm0, -12(%edx)
+ movl %eax, -4(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_125bytes):
+ movdqa %xmm0, -125(%edx)
+L(aligned_16_109bytes):
+ movdqa %xmm0, -109(%edx)
+L(aligned_16_93bytes):
+ movdqa %xmm0, -93(%edx)
+L(aligned_16_77bytes):
+ movdqa %xmm0, -77(%edx)
+L(aligned_16_61bytes):
+ movdqa %xmm0, -61(%edx)
+L(aligned_16_45bytes):
+ movdqa %xmm0, -45(%edx)
+L(aligned_16_29bytes):
+ movdqa %xmm0, -29(%edx)
+L(aligned_16_13bytes):
+ movq %xmm0, -13(%edx)
+ movl %eax, -5(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_126bytes):
+ movdqa %xmm0, -126(%edx)
+L(aligned_16_110bytes):
+ movdqa %xmm0, -110(%edx)
+L(aligned_16_94bytes):
+ movdqa %xmm0, -94(%edx)
+L(aligned_16_78bytes):
+ movdqa %xmm0, -78(%edx)
+L(aligned_16_62bytes):
+ movdqa %xmm0, -62(%edx)
+L(aligned_16_46bytes):
+ movdqa %xmm0, -46(%edx)
+L(aligned_16_30bytes):
+ movdqa %xmm0, -30(%edx)
+L(aligned_16_14bytes):
+ movq %xmm0, -14(%edx)
+ movl %eax, -6(%edx)
+ movw %ax, -2(%edx)
+ SETRTNVAL
+ RETURN
+
+ ALIGN (4)
+L(aligned_16_127bytes):
+ movdqa %xmm0, -127(%edx)
+L(aligned_16_111bytes):
+ movdqa %xmm0, -111(%edx)
+L(aligned_16_95bytes):
+ movdqa %xmm0, -95(%edx)
+L(aligned_16_79bytes):
+ movdqa %xmm0, -79(%edx)
+L(aligned_16_63bytes):
+ movdqa %xmm0, -63(%edx)
+L(aligned_16_47bytes):
+ movdqa %xmm0, -47(%edx)
+L(aligned_16_31bytes):
+ movdqa %xmm0, -31(%edx)
+L(aligned_16_15bytes):
+ movq %xmm0, -15(%edx)
+ movl %eax, -7(%edx)
+ movw %ax, -3(%edx)
+ movb %al, -1(%edx)
+ SETRTNVAL
+ RETURN_END
+
+END (__memset_sse2)
+
+#endif
diff --git a/sysdeps/i386/i686/multiarch/memset.S b/sysdeps/i386/i686/multiarch/memset.S
new file mode 100644
index 0000000000..34dddcef7b
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memset.S
@@ -0,0 +1,112 @@
+/* Multiple versions of memset
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib. */
+#ifndef NOT_IN_libc
+# ifdef SHARED
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ .p2align 4
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+
+ .text
+ENTRY(memset)
+ .type memset, @gnu_indirect_function
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ call __i686.get_pc_thunk.bx
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+ jne 1f
+ call __init_cpu_features
+1: leal __memset_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memset_sse2@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memset_sse2_rep@GOTOFF(%ebx), %eax
+2: popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+ ret
+END(memset)
+# else
+ .text
+ENTRY(memset)
+ .type memset, @gnu_indirect_function
+ cmpl $0, KIND_OFFSET+__cpu_features
+ jne 1f
+ call __init_cpu_features
+1: leal __memset_ia32, %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features
+ jz 2f
+ leal __memset_sse2, %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features
+ jz 2f
+ leal __memset_sse2_rep, %eax
+2: ret
+END(memset)
+# endif
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __memset_ia32, @function; \
+ .globl __memset_ia32; \
+ .p2align 4; \
+ __memset_ia32: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __memset_ia32, .-__memset_ia32
+
+# undef ENTRY_CHK
+# define ENTRY_CHK(name) \
+ .type __memset_chk_ia32, @function; \
+ .globl __memset_chk_ia32; \
+ .p2align 4; \
+ __memset_chk_ia32: cfi_startproc; \
+ CALL_MCOUNT
+# undef END_CHK
+# define END_CHK(name) \
+ cfi_endproc; .size __memset_chk_ia32, .-__memset_chk_ia32
+
+# ifdef SHARED
+# undef libc_hidden_builtin_def
+/* IFUNC doesn't work with the hidden functions in shared library since
+ they will be called without setting up EBX needed for PLT which is
+ used by IFUNC. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_memset; __GI_memset = __memset_ia32
+# endif
+
+# undef strong_alias
+# define strong_alias(original, alias)
+#endif
+
+#include "../memset.S"
diff --git a/sysdeps/i386/i686/multiarch/memset_chk.S b/sysdeps/i386/i686/multiarch/memset_chk.S
new file mode 100644
index 0000000000..d659c7e56d
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/memset_chk.S
@@ -0,0 +1,116 @@
+/* Multiple versions of __memset_chk
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib. */
+#ifndef NOT_IN_libc
+# ifdef SHARED
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ .p2align 4
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+
+ .text
+ENTRY(__memset_chk)
+ .type __memset_chk, @gnu_indirect_function
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ call __i686.get_pc_thunk.bx
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+ jne 1f
+ call __init_cpu_features
+1: leal __memset_chk_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memset_chk_sse2@GOTOFF(%ebx), %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __memset_chk_sse2_rep@GOTOFF(%ebx), %eax
+2: popl %ebx
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (ebx)
+ ret
+END(__memset_chk)
+
+strong_alias (__memset_chk, __memset_zero_constant_len_parameter)
+ .section .gnu.warning.__memset_zero_constant_len_parameter
+ .string "memset used with constant zero length parameter; this could be due to transposed parameters"
+# else
+ .text
+ENTRY(__memset_chk)
+ .type __memset_chk, @gnu_indirect_function
+ cmpl $0, KIND_OFFSET+__cpu_features
+ jne 1f
+ call __init_cpu_features
+1: leal __memset_chk_ia32, %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features
+ jz 2f
+ leal __memset_chk_sse2, %eax
+ testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features
+ jz 2f
+ leal __memset_chk_sse2_rep, %eax
+2: ret
+END(__memset_chk)
+
+ .type __memset_chk_sse2, @function
+ .p2align 4;
+__memset_chk_sse2:
+ cfi_startproc
+ CALL_MCOUNT
+ movl 12(%esp), %eax
+ cmpl %eax, 16(%esp)
+ jb __chk_fail
+ jmp __memset_sse2
+ cfi_endproc
+ .size __memset_chk_sse2, .-__memset_chk_sse2
+
+ .type __memset_chk_sse2_rep, @function
+ .p2align 4;
+__memset_chk_sse2_rep:
+ cfi_startproc
+ CALL_MCOUNT
+ movl 12(%esp), %eax
+ cmpl %eax, 16(%esp)
+ jb __chk_fail
+ jmp __memset_sse2_rep
+ cfi_endproc
+ .size __memset_chk_sse2_rep, .-__memset_chk_sse2_rep
+
+ .type __memset_chk_ia32, @function
+ .p2align 4;
+__memset_chk_ia32:
+ cfi_startproc
+ CALL_MCOUNT
+ movl 12(%esp), %eax
+ cmpl %eax, 16(%esp)
+ jb __chk_fail
+ jmp __memset_ia32
+ cfi_endproc
+ .size __memset_chk_ia32, .-__memset_chk_ia32
+# endif
+#endif
diff --git a/sysdeps/i386/i686/multiarch/sched_cpucount.c b/sysdeps/i386/i686/multiarch/sched_cpucount.c
new file mode 100644
index 0000000000..7db31b02f8
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/sched_cpucount.c
@@ -0,0 +1 @@
+#include <sysdeps/x86_64/multiarch/sched_cpucount.c>
diff --git a/sysdeps/i386/i686/multiarch/strcasestr-c.c b/sysdeps/i386/i686/multiarch/strcasestr-c.c
new file mode 100644
index 0000000000..0d52b0e47a
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/strcasestr-c.c
@@ -0,0 +1,2 @@
+#define __strcasestr_sse2 __strcasestr_ia32
+#include <sysdeps/x86_64/multiarch/strcasestr-c.c>
diff --git a/sysdeps/i386/i686/multiarch/strcasestr.c b/sysdeps/i386/i686/multiarch/strcasestr.c
new file mode 100644
index 0000000000..511bb29ede
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/strcasestr.c
@@ -0,0 +1 @@
+#include <sysdeps/x86_64/multiarch/strcasestr.c>
diff --git a/sysdeps/i386/i686/multiarch/strcspn-c.c b/sysdeps/i386/i686/multiarch/strcspn-c.c
new file mode 100644
index 0000000000..6d61e190a8
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/strcspn-c.c
@@ -0,0 +1,2 @@
+#define __strcspn_sse2 __strcspn_ia32
+#include <sysdeps/x86_64/multiarch/strcspn-c.c>
diff --git a/sysdeps/i386/i686/multiarch/strcspn.S b/sysdeps/i386/i686/multiarch/strcspn.S
new file mode 100644
index 0000000000..b2310e4a8b
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/strcspn.S
@@ -0,0 +1,114 @@
+/* Multiple versions of strcspn
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <config.h>
+
+#ifdef HAVE_SSE4_SUPPORT
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+#ifdef USE_AS_STRPBRK
+#define STRCSPN_SSE42 __strpbrk_sse42
+#define STRCSPN_IA32 __strpbrk_ia32
+#define __GI_STRCSPN __GI_strpbrk
+#else
+#ifndef STRCSPN
+#define STRCSPN strcspn
+#define STRCSPN_SSE42 __strcspn_sse42
+#define STRCSPN_IA32 __strcspn_ia32
+#define __GI_STRCSPN __GI_strcspn
+#endif
+#endif
+
+/* Define multiple versions only for the definition in libc. Don't
+ define multiple versions for strpbrk in static library since we
+ need strpbrk before the initialization happened. */
+#if (defined SHARED || !defined USE_AS_STRPBRK) && !defined NOT_IN_libc
+# ifdef SHARED
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ .p2align 4
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+
+ .text
+ENTRY(STRCSPN)
+ .type STRCSPN, @gnu_indirect_function
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ call __i686.get_pc_thunk.bx
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+ jne 1f
+ call __init_cpu_features
+1: leal STRCSPN_IA32@GOTOFF(%ebx), %eax
+ testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal STRCSPN_SSE42@GOTOFF(%ebx), %eax
+2: popl %ebx
+ cfi_adjust_cfa_offset (-4);
+ cfi_restore (ebx)
+ ret
+END(STRCSPN)
+# else
+ .text
+ENTRY(STRCSPN)
+ .type STRCSPN, @gnu_indirect_function
+ cmpl $0, KIND_OFFSET+__cpu_features
+ jne 1f
+ call __init_cpu_features
+1: leal STRCSPN_IA32, %eax
+ testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
+ jz 2f
+ leal STRCSPN_SSE42, %eax
+2: ret
+END(STRCSPN)
+# endif
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type STRCSPN_IA32, @function; \
+ .globl STRCSPN_IA32; \
+ .p2align 4; \
+ STRCSPN_IA32: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size STRCSPN_IA32, .-STRCSPN_IA32
+# undef libc_hidden_builtin_def
+/* IFUNC doesn't work with the hidden functions in shared library since
+ they will be called without setting up EBX needed for PLT which is
+ used by IFUNC. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_STRCSPN; __GI_STRCSPN = STRCSPN_IA32
+#endif
+
+#endif /* HAVE_SSE4_SUPPORT */
+
+#ifdef USE_AS_STRPBRK
+#include "../../strpbrk.S"
+#else
+#include "../../strcspn.S"
+#endif
diff --git a/sysdeps/i386/i686/multiarch/strlen.S b/sysdeps/i386/i686/multiarch/strlen.S
new file mode 100644
index 0000000000..9786add745
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/strlen.S
@@ -0,0 +1,154 @@
+/* Multiple versions of strlen
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in libc and for the
+ DSO. In static binaries, we need strlen before the initialization
+ happened. */
+#if defined SHARED && !defined NOT_IN_libc
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ .p2align 4
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+
+ .text
+ENTRY(strlen)
+ .type strlen, @gnu_indirect_function
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ call __i686.get_pc_thunk.bx
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+ jne 1f
+ call __init_cpu_features
+1: leal __strlen_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __strlen_sse2@GOTOFF(%ebx), %eax
+2: popl %ebx
+ cfi_adjust_cfa_offset (-4);
+ cfi_restore (ebx)
+ ret
+END(strlen)
+
+#define CFI_POP(REG) \
+ cfi_adjust_cfa_offset (-4); \
+ cfi_restore (REG)
+
+#define RETURN popl %esi; CFI_POP (esi); ret
+
+ .text
+ENTRY (__strlen_sse2)
+/*
+ * This implementation uses SSE instructions to compare up to 16 bytes
+ * at a time looking for the end of string (null char).
+ */
+ pushl %esi
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (%esi, 0)
+ mov 8(%esp), %eax
+ mov %eax, %ecx
+ pxor %xmm0, %xmm0 /* 16 null chars */
+ mov %eax, %esi
+ and $15, %ecx
+ jz 1f /* string is 16 byte aligned */
+
+ /*
+ * Unaligned case. Round down to 16-byte boundary before comparing
+ * 16 bytes for a null char. The code then compensates for any extra chars
+ * preceding the start of the string.
+ */
+ and $-16, %esi
+
+ pcmpeqb (%esi), %xmm0
+ lea 16(%eax), %esi
+ pmovmskb %xmm0, %edx
+
+ shr %cl, %edx /* Compensate for bytes preceding the string */
+ test %edx, %edx
+ jnz 2f
+ sub %ecx, %esi /* no null, adjust to next 16-byte boundary */
+ pxor %xmm0, %xmm0 /* clear xmm0, may have been changed... */
+
+ .p2align 4
+1: /* 16 byte aligned */
+ pcmpeqb (%esi), %xmm0 /* look for null bytes */
+ pmovmskb %xmm0, %edx /* move each byte mask of %xmm0 to edx */
+
+ add $16, %esi /* prepare to search next 16 bytes */
+ test %edx, %edx /* if no null byte, %edx must be 0 */
+ jnz 2f /* found a null */
+
+ pcmpeqb (%esi), %xmm0
+ pmovmskb %xmm0, %edx
+ add $16, %esi
+ test %edx, %edx
+ jnz 2f
+
+ pcmpeqb (%esi), %xmm0
+ pmovmskb %xmm0, %edx
+ add $16, %esi
+ test %edx, %edx
+ jnz 2f
+
+ pcmpeqb (%esi), %xmm0
+ pmovmskb %xmm0, %edx
+ add $16, %esi
+ test %edx, %edx
+ jz 1b
+
+2:
+ neg %eax
+ lea -16(%eax, %esi), %eax /* calculate exact offset */
+ bsf %edx, %ecx /* Least significant 1 bit is index of null */
+ add %ecx, %eax
+ popl %esi
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (%esi)
+ ret
+
+END (__strlen_sse2)
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __strlen_ia32, @function; \
+ .globl __strlen_ia32; \
+ .p2align 4; \
+ __strlen_ia32: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __strlen_ia32, .-__strlen_ia32
+# undef libc_hidden_builtin_def
+/* IFUNC doesn't work with the hidden functions in shared library since
+ they will be called without setting up EBX needed for PLT which is
+ used by IFUNC. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_strlen; __GI_strlen = __strlen_ia32
+#endif
+
+#include "../../i586/strlen.S"
diff --git a/sysdeps/i386/i686/multiarch/strpbrk-c.c b/sysdeps/i386/i686/multiarch/strpbrk-c.c
new file mode 100644
index 0000000000..5db62053b3
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/strpbrk-c.c
@@ -0,0 +1,2 @@
+#define __strpbrk_sse2 __strpbrk_ia32
+#include <sysdeps/x86_64/multiarch/strpbrk-c.c>
diff --git a/sysdeps/i386/i686/multiarch/strpbrk.S b/sysdeps/i386/i686/multiarch/strpbrk.S
new file mode 100644
index 0000000000..ed5bca6a94
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/strpbrk.S
@@ -0,0 +1,3 @@
+#define STRCSPN strpbrk
+#define USE_AS_STRPBRK
+#include "strcspn.S"
diff --git a/sysdeps/i386/i686/multiarch/strspn-c.c b/sysdeps/i386/i686/multiarch/strspn-c.c
new file mode 100644
index 0000000000..bea09dea71
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/strspn-c.c
@@ -0,0 +1,2 @@
+#define __strspn_sse2 __strspn_ia32
+#include <sysdeps/x86_64/multiarch/strspn-c.c>
diff --git a/sysdeps/i386/i686/multiarch/strspn.S b/sysdeps/i386/i686/multiarch/strspn.S
new file mode 100644
index 0000000000..7fe6f97f41
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/strspn.S
@@ -0,0 +1,95 @@
+/* Multiple versions of strspn
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <config.h>
+
+#ifdef HAVE_SSE4_SUPPORT
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in libc. */
+#ifndef NOT_IN_libc
+# ifdef SHARED
+ .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
+ .globl __i686.get_pc_thunk.bx
+ .hidden __i686.get_pc_thunk.bx
+ .p2align 4
+ .type __i686.get_pc_thunk.bx,@function
+__i686.get_pc_thunk.bx:
+ movl (%esp), %ebx
+ ret
+
+ .text
+ENTRY(strspn)
+ .type strspn, @gnu_indirect_function
+ pushl %ebx
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (ebx, 0)
+ call __i686.get_pc_thunk.bx
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+ cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+ jne 1f
+ call __init_cpu_features
+1: leal __strspn_ia32@GOTOFF(%ebx), %eax
+ testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
+ jz 2f
+ leal __strspn_sse42@GOTOFF(%ebx), %eax
+2: popl %ebx
+ cfi_adjust_cfa_offset (-4);
+ cfi_restore (ebx)
+ ret
+END(strspn)
+# else
+ .text
+ENTRY(strspn)
+ .type strspn, @gnu_indirect_function
+ cmpl $0, KIND_OFFSET+__cpu_features
+ jne 1f
+ call __init_cpu_features
+1: leal __strspn_ia32, %eax
+ testl $index_SSE2, CPUID_OFFSET+index_SSE4_2+__cpu_features
+ jz 2f
+ leal __strspn_sse42, %eax
+2: ret
+END(strspn)
+# endif
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __strspn_ia32, @function; \
+ .globl __strspn_ia32; \
+ .p2align 4
+ __strspn_ia32: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __strspn_ia32, .-__strspn_ia32
+# undef libc_hidden_builtin_def
+/* IFUNC doesn't work with the hidden functions in shared library since
+ they will be called without setting up EBX needed for PLT which is
+ used by IFUNC. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_strspn; __GI_strspn = __strspn_ia32
+#endif
+
+#endif /* HAVE_SSE4_SUPPORT */
+
+#include "../../strspn.S"
diff --git a/sysdeps/i386/i686/multiarch/strstr-c.c b/sysdeps/i386/i686/multiarch/strstr-c.c
new file mode 100644
index 0000000000..efa9f78f81
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/strstr-c.c
@@ -0,0 +1,13 @@
+#include "init-arch.h"
+
+#define STRSTR __strstr_ia32
+#undef libc_hidden_builtin_def
+#define libc_hidden_builtin_def(name) \
+ __hidden_ver1 (__strstr_ia32, __GI_strstr, __strstr_ia32);
+
+#include "string/strstr.c"
+
+extern char *__strstr_sse42 (const char *, const char *) attribute_hidden;
+extern __typeof (__strstr_ia32) __strstr_ia32 attribute_hidden;
+
+libc_ifunc (strstr, HAS_SSE4_2 ? __strstr_sse42 : __strstr_ia32);
diff --git a/sysdeps/i386/i686/multiarch/strstr.c b/sysdeps/i386/i686/multiarch/strstr.c
new file mode 100644
index 0000000000..a97428c125
--- /dev/null
+++ b/sysdeps/i386/i686/multiarch/strstr.c
@@ -0,0 +1 @@
+#include <sysdeps/x86_64/multiarch/strstr.c>
diff --git a/sysdeps/i386/stackinfo.h b/sysdeps/i386/stackinfo.h
index a9a6745aaf..2530ea7234 100644
--- a/sysdeps/i386/stackinfo.h
+++ b/sysdeps/i386/stackinfo.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2009 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
@@ -25,4 +25,14 @@
/* On x86 the stack grows down. */
#define _STACK_GROWS_DOWN 1
+/* Access to the stack pointer. The macros are used in alloca_account
+ for which they need to act as barriers as well, hence the additional
+ (unnecessary) parameters. */
+#define stackinfo_get_sp() \
+ ({ void *p__; asm volatile ("mov %%esp, %0" : "=r" (p__)); p__; })
+#define stackinfo_sub_sp(ptr) \
+ ({ ptrdiff_t d__; \
+ asm volatile ("sub %%esp, %0" : "=r" (d__) : "0" (ptr)); \
+ d__; })
+
#endif /* stackinfo.h */
diff --git a/sysdeps/i386/sysdep.h b/sysdeps/i386/sysdep.h
index e03a8e926d..efdc82dde7 100644
--- a/sysdeps/i386/sysdep.h
+++ b/sysdeps/i386/sysdep.h
@@ -67,6 +67,9 @@
ASM_SIZE_DIRECTIVE(name) \
STABS_FUN_END(name)
+#define ENTRY_CHK(name) ENTRY (name)
+#define END_CHK(name) END (name)
+
#ifdef HAVE_CPP_ASM_DEBUGINFO
/* Disable that goop, because we just pass -g through to the assembler
and it generates proper line number information directly. */
diff --git a/sysdeps/ia64/backtrace.c b/sysdeps/ia64/backtrace.c
index 423fed80a8..5cefb86ae4 100644
--- a/sysdeps/ia64/backtrace.c
+++ b/sysdeps/ia64/backtrace.c
@@ -1,5 +1,5 @@
/* Return backtrace of current program state.
- Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
@@ -61,7 +61,13 @@ backtrace_helper (struct _Unwind_Context *ctx, void *a)
/* We are first called with address in the __backtrace function.
Skip it. */
if (arg->cnt != -1)
- arg->array[arg->cnt] = (void *) unwind_getip (ctx);
+ {
+ arg->array[arg->cnt] = (void *) unwind_getip (ctx);
+
+ /* Check whether we make any progress. */
+ if (arg->cnt > 0 && arg->array[arg->cnt - 1] == arg->array[arg->cnt])
+ return _URC_END_OF_STACK;
+ }
if (++arg->cnt == arg->size)
return _URC_END_OF_STACK;
return _URC_NO_REASON;
diff --git a/sysdeps/ia64/bits/link.h b/sysdeps/ia64/bits/link.h
index f751c23fd1..f522ab340b 100644
--- a/sysdeps/ia64/bits/link.h
+++ b/sysdeps/ia64/bits/link.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2009 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
@@ -58,6 +58,6 @@ extern unsigned int la_ia64_gnu_pltexit (Elf64_Sym *__sym, unsigned int __ndx,
uintptr_t *__defcook,
const La_ia64_regs *__inregs,
La_ia64_retval *__outregs,
- const char *symname);
+ const char *__symname);
__END_DECLS
diff --git a/sysdeps/ia64/configure b/sysdeps/ia64/configure
new file mode 100644
index 0000000000..67a4b7e620
--- /dev/null
+++ b/sysdeps/ia64/configure
@@ -0,0 +1,54 @@
+# This file is generated from configure.in by Autoconf. DO NOT EDIT!
+ # Local configure fragment for sysdeps/ia64.
+
+{ $as_echo "$as_me:$LINENO: checking if -g produces usable source locations for assembler-with-cpp" >&5
+$as_echo_n "checking if -g produces usable source locations for assembler-with-cpp... " >&6; }
+if test "${libc_cv_cpp_asm_debuginfo+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.S <<EOF
+#include "confdefs.h"
+
+/* comment on
+ two lines */
+ ${libc_cv_dot_text}
+ ${libc_cv_asm_global_directive} foo
+foo:
+ /* Unfortunately this test only works for a real instruction,
+ not for any of the machine-independent pseudo-ops.
+ So we just have to assume everybody has a "nop". */
+ nop.b 0;;
+ /* comment */
+ nop.b 0;;
+ /* comment */
+ nop.b 0;;
+EOF
+if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } && {
+ ac_pattern='conftest\.S'
+ { ac_try='readelf --debug-dump=line conftest.o |
+ grep $ac_pattern 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }
+ }; then
+ libc_cv_cpp_asm_debuginfo=yes
+else
+ libc_cv_cpp_asm_debuginfo=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_cpp_asm_debuginfo" >&5
+$as_echo "$libc_cv_cpp_asm_debuginfo" >&6; }
+if test $libc_cv_cpp_asm_debuginfo = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_CPP_ASM_DEBUGINFO 1
+_ACEOF
+
+fi
diff --git a/sysdeps/ia64/configure.in b/sysdeps/ia64/configure.in
new file mode 100644
index 0000000000..887b4cb2ed
--- /dev/null
+++ b/sysdeps/ia64/configure.in
@@ -0,0 +1,35 @@
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/ia64.
+
+AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
+ libc_cv_cpp_asm_debuginfo, [dnl
+cat > conftest.S <<EOF
+#include "confdefs.h"
+
+/* comment on
+ two lines */
+ ${libc_cv_dot_text}
+ ${libc_cv_asm_global_directive} foo
+foo:
+ /* Unfortunately this test only works for a real instruction,
+ not for any of the machine-independent pseudo-ops.
+ So we just have to assume everybody has a "nop". */
+ nop.b 0;;
+ /* comment */
+ nop.b 0;;
+ /* comment */
+ nop.b 0;;
+EOF
+if AC_TRY_COMMAND([${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) && {
+ ac_pattern='conftest\.S'
+ AC_TRY_COMMAND([readelf --debug-dump=line conftest.o |
+ grep $ac_pattern 1>&AS_MESSAGE_LOG_FD])
+ }; then
+ libc_cv_cpp_asm_debuginfo=yes
+else
+ libc_cv_cpp_asm_debuginfo=no
+fi
+rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
+if test $libc_cv_cpp_asm_debuginfo = yes; then
+ AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
+fi
diff --git a/sysdeps/ia64/elf/configure b/sysdeps/ia64/elf/configure
index 30f4850678..8bc2e4f711 100644
--- a/sysdeps/ia64/elf/configure
+++ b/sysdeps/ia64/elf/configure
@@ -4,10 +4,10 @@
if test "$usetls" != no; then
# Check for support of thread-local storage handling in assembler and
# linker.
-echo "$as_me:$LINENO: checking for ia64 TLS support" >&5
-echo $ECHO_N "checking for ia64 TLS support... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for ia64 TLS support" >&5
+$as_echo_n "checking for ia64 TLS support... " >&6; }
if test "${libc_cv_ia64_tls+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<\EOF
.section ".tdata","awT",@progbits
@@ -27,7 +27,7 @@ if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_ia64_tls=yes
else
@@ -35,8 +35,8 @@ else
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_ia64_tls" >&5
-echo "${ECHO_T}$libc_cv_ia64_tls" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_ia64_tls" >&5
+$as_echo "$libc_cv_ia64_tls" >&6; }
if test $libc_cv_ia64_tls = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TLS_SUPPORT 1
diff --git a/sysdeps/ia64/memchr.S b/sysdeps/ia64/memchr.S
index e9a7ba8230..cdd71ca5a5 100644
--- a/sysdeps/ia64/memchr.S
+++ b/sysdeps/ia64/memchr.S
@@ -96,7 +96,8 @@ ENTRY(__memchr)
mov pr.rot = 1 << 16 ;;
.l2:
(p[0]) mov addr[0] = ret0
-(p[0]) ld8 value[0] = [ret0], 8
+(p[0]) ld8.s value[0] = [ret0], 8 // speculative load
+(p[MEMLAT]) chk.s value[MEMLAT], .recovery // check and recovery
(p[MEMLAT]) xor aux[0] = value[MEMLAT], chrx8
(p[MEMLAT+1]) czx1.r poschr[0] = aux[1]
(p[MEMLAT+2]) cmp.ne p7, p0 = 8, poschr[1]
@@ -124,6 +125,29 @@ ENTRY(__memchr)
mov ar.lc = saved_lc
br.ret.sptk.many b0
+.recovery:
+#if MEMLAT != 6
+# error "MEMLAT must be 6!"
+#endif
+(p[MEMLAT-6]) add ret0 = -8, ret0;;
+(p[MEMLAT-5]) add ret0 = -8, ret0;;
+(p[MEMLAT-4]) add ret0 = -8, ret0;;
+(p[MEMLAT-3]) add ret0 = -8, ret0;;
+(p[MEMLAT-2]) add ret0 = -8, ret0;;
+(p[MEMLAT-1]) add ret0 = -8, ret0;;
+(p[MEMLAT]) add ret0 = -8, ret0;;
+(p[MEMLAT+1]) add ret0 = -8, ret0;;
+(p[MEMLAT+2]) add ret0 = -8, ret0;;
+.l4:
+ mov addr[MEMLAT+2] = ret0
+ ld8 tmp = [ret0];; // load the first unchecked 8byte
+ xor aux[1] = tmp, chrx8;;
+ czx1.r poschr[1] = aux[1];;
+ cmp.ne p7, p0 = 8, poschr[1]
+(p7) br.cond.spnt .foundit;;
+ adds ret0 = 8, ret0 // load the next unchecked 8byte
+ br.sptk .l4;;
+
END(__memchr)
weak_alias (__memchr, memchr)
diff --git a/sysdeps/ieee754/dbl-64/s_expm1.c b/sysdeps/ieee754/dbl-64/s_expm1.c
index bfd15b2e31..324354336e 100644
--- a/sysdeps/ieee754/dbl-64/s_expm1.c
+++ b/sysdeps/ieee754/dbl-64/s_expm1.c
@@ -112,6 +112,7 @@ static char rcsid[] = "$NetBSD: s_expm1.c,v 1.8 1995/05/10 20:47:09 jtc Exp $";
* to produce the hexadecimal values shown.
*/
+#include <errno.h>
#include "math.h"
#include "math_private.h"
#define one Q[0]
@@ -159,7 +160,10 @@ Q[] = {1.0, -3.33333333333331316428e-02, /* BFA11111 111110F4 */
return x+x; /* NaN */
else return (xsb==0)? x:-1.0;/* exp(+-inf)={inf,-1} */
}
- if(x > o_threshold) return huge*huge; /* overflow */
+ if(x > o_threshold) {
+ __set_errno (ERANGE);
+ return huge*huge; /* overflow */
+ }
}
if(xsb!=0) { /* x < -56*ln2, return -1.0 with inexact */
if(x+tiny<0.0) /* raise inexact */
diff --git a/sysdeps/ieee754/dbl-64/s_sin.c b/sysdeps/ieee754/dbl-64/s_sin.c
index 86e1a6d121..b40776f5e2 100644
--- a/sysdeps/ieee754/dbl-64/s_sin.c
+++ b/sysdeps/ieee754/dbl-64/s_sin.c
@@ -1,7 +1,7 @@
/*
* IBM Accurate Mathematical Library
* written by International Business Machines Corp.
- * Copyright (C) 2001 Free Software Foundation
+ * Copyright (C) 2001, 2009 Free Software Foundation
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -48,6 +48,7 @@
/****************************************************************************/
+#include <errno.h>
#include "endian.h"
#include "mydefs.h"
#include "usncs.h"
@@ -329,7 +330,11 @@ double __sin(double x){
} /* else if (k < 0x7ff00000 ) */
/*--------------------- |x| > 2^1024 ----------------------------------*/
- else return x / x;
+ else {
+ if (k == 0x7ff00000 && u.i[LOW_HALF] == 0)
+ __set_errno (EDOM);
+ return x / x;
+ }
return 0; /* unreachable */
}
@@ -572,7 +577,11 @@ double __cos(double x)
- else return x / x; /* |x| > 2^1024 */
+ else {
+ if (k == 0x7ff00000 && u.i[LOW_HALF] == 0)
+ __set_errno (EDOM);
+ return x / x; /* |x| > 2^1024 */
+ }
return 0;
}
diff --git a/sysdeps/ieee754/dbl-64/s_tan.c b/sysdeps/ieee754/dbl-64/s_tan.c
index cf8d4d0267..4e26d90ae1 100644
--- a/sysdeps/ieee754/dbl-64/s_tan.c
+++ b/sysdeps/ieee754/dbl-64/s_tan.c
@@ -1,7 +1,7 @@
/*
* IBM Accurate Mathematical Library
* written by International Business Machines Corp.
- * Copyright (C) 2001 Free Software Foundation
+ * Copyright (C) 2001, 2009 Free Software Foundation
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -33,6 +33,8 @@
/* round to nearest mode of IEEE 754 standard. */
/* */
/*********************************************************************/
+
+#include <errno.h>
#include "endian.h"
#include "dla.h"
#include "mpa.h"
@@ -61,7 +63,11 @@ double tan(double x) {
/* x=+-INF, x=NaN */
num.d = x; ux = num.i[HIGH_HALF];
- if ((ux&0x7ff00000)==0x7ff00000) return x-x;
+ if ((ux&0x7ff00000)==0x7ff00000) {
+ if ((ux&0x7fffffff)==0x7ff00000)
+ __set_errno (EDOM);
+ return x-x;
+ }
w=(x<ZERO) ? -x : x;
@@ -108,7 +114,8 @@ double tan(double x) {
fi = xfg[i][1].d; gi = xfg[i][2].d; t2 = pz*(gi+fi)/(gi-pz);
if ((y=fi+(t2-fi*u3.d))==fi+(t2+fi*u3.d)) return (s*y);
t3 = (t2<ZERO) ? -t2 : t2;
- if ((y=fi+(t2-(t4=fi*ua3.d+t3*ub3.d)))==fi+(t2+t4)) return (s*y);
+ t4 = fi*ua3.d+t3*ub3.d;
+ if ((y=fi+(t2-t4))==fi+(t2+t4)) return (s*y);
/* Second stage */
ffi = xfg[i][3].d;
@@ -216,13 +223,15 @@ double tan(double x) {
t2 = pz*(fi+gi)/(fi+pz);
if ((y=gi-(t2-gi*u10.d))==gi-(t2+gi*u10.d)) return (-sy*y);
t3 = (t2<ZERO) ? -t2 : t2;
- if ((y=gi-(t2-(t4=gi*ua10.d+t3*ub10.d)))==gi-(t2+t4)) return (-sy*y); }
+ t4 = gi*ua10.d+t3*ub10.d;
+ if ((y=gi-(t2-t4))==gi-(t2+t4)) return (-sy*y); }
else {
/* tan */
t2 = pz*(gi+fi)/(gi-pz);
if ((y=fi+(t2-fi*u9.d))==fi+(t2+fi*u9.d)) return (sy*y);
t3 = (t2<ZERO) ? -t2 : t2;
- if ((y=fi+(t2-(t4=fi*ua9.d+t3*ub9.d)))==fi+(t2+t4)) return (sy*y); }
+ t4 = fi*ua9.d+t3*ub9.d;
+ if ((y=fi+(t2-t4))==fi+(t2+t4)) return (sy*y); }
/* Second stage */
ffi = xfg[i][3].d;
@@ -327,13 +336,15 @@ double tan(double x) {
t2 = pz*(fi+gi)/(fi+pz);
if ((y=gi-(t2-gi*u18.d))==gi-(t2+gi*u18.d)) return (-sy*y);
t3 = (t2<ZERO) ? -t2 : t2;
- if ((y=gi-(t2-(t4=gi*ua18.d+t3*ub18.d)))==gi-(t2+t4)) return (-sy*y); }
+ t4 = gi*ua18.d+t3*ub18.d;
+ if ((y=gi-(t2-t4))==gi-(t2+t4)) return (-sy*y); }
else {
/* tan */
t2 = pz*(gi+fi)/(gi-pz);
if ((y=fi+(t2-fi*u17.d))==fi+(t2+fi*u17.d)) return (sy*y);
t3 = (t2<ZERO) ? -t2 : t2;
- if ((y=fi+(t2-(t4=fi*ua17.d+t3*ub17.d)))==fi+(t2+t4)) return (sy*y); }
+ t4 = fi*ua17.d+t3*ub17.d;
+ if ((y=fi+(t2-t4))==fi+(t2+t4)) return (sy*y); }
/* Second stage */
ffi = xfg[i][3].d;
@@ -431,13 +442,15 @@ double tan(double x) {
t2 = pz*(fi+gi)/(fi+pz);
if ((y=gi-(t2-gi*u26.d))==gi-(t2+gi*u26.d)) return (-sy*y);
t3 = (t2<ZERO) ? -t2 : t2;
- if ((y=gi-(t2-(t4=gi*ua26.d+t3*ub26.d)))==gi-(t2+t4)) return (-sy*y); }
+ t4 = gi*ua26.d+t3*ub26.d;
+ if ((y=gi-(t2-t4))==gi-(t2+t4)) return (-sy*y); }
else {
/* tan */
t2 = pz*(gi+fi)/(gi-pz);
if ((y=fi+(t2-fi*u25.d))==fi+(t2+fi*u25.d)) return (sy*y);
t3 = (t2<ZERO) ? -t2 : t2;
- if ((y=fi+(t2-(t4=fi*ua25.d+t3*ub25.d)))==fi+(t2+t4)) return (sy*y); }
+ t4 = fi*ua25.d+t3*ub25.d;
+ if ((y=fi+(t2-t4))==fi+(t2+t4)) return (sy*y); }
/* Second stage */
ffi = xfg[i][3].d;
diff --git a/sysdeps/ieee754/dbl-64/w_exp.c b/sysdeps/ieee754/dbl-64/w_exp.c
index 445c5788d2..1216492090 100644
--- a/sysdeps/ieee754/dbl-64/w_exp.c
+++ b/sysdeps/ieee754/dbl-64/w_exp.c
@@ -51,6 +51,7 @@ u_threshold= -7.45133219101941108420e+02; /* 0xc0874910, 0xD52D3051 */
return z;
#endif
}
+hidden_def (__exp)
weak_alias (__exp, exp)
#ifdef NO_LONG_DOUBLE
strong_alias (__exp, __expl)
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_ceil.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_ceil.c
new file mode 100644
index 0000000000..9123fdc7bd
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_ceil.c
@@ -0,0 +1,67 @@
+/* @(#)s_ceil.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * ceil(x)
+ * Return x rounded toward -inf to integral value
+ * Method:
+ * Bit twiddling.
+ * Exception:
+ * Inexact flag raised if x not equal to ceil(x).
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const double huge = 1.0e300;
+#else
+static double huge = 1.0e300;
+#endif
+
+#ifdef __STDC__
+ double __ceil(double x)
+#else
+ double __ceil(x)
+ double x;
+#endif
+{
+ int64_t i0,i;
+ int32_t j0;
+ EXTRACT_WORDS64(i0,x);
+ j0 = ((i0>>52)&0x7ff)-0x3ff;
+ if(j0<=51) {
+ if(j0<0) { /* raise inexact if x != 0 */
+ if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */
+ if(i0<0) {i0=INT64_C(0x8000000000000000);}
+ else if(i0!=0) { i0=INT64_C(0x3ff0000000000000);}
+ }
+ } else {
+ i = INT64_C(0x000fffffffffffff)>>j0;
+ if((i0&i)==0) return x; /* x is integral */
+ if(huge+x>0.0) { /* raise inexact flag */
+ if(i0>0) i0 += UINT64_C(0x0010000000000000)>>j0;
+ i0 &= (~i);
+ }
+ }
+ } else {
+ if(j0==0x400) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ }
+ INSERT_WORDS64(x,i0);
+ return x;
+}
+weak_alias (__ceil, ceil)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__ceil, __ceill)
+weak_alias (__ceil, ceill)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c
new file mode 100644
index 0000000000..c48e979a84
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c
@@ -0,0 +1,30 @@
+/*
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Changed to return -1 for -Inf by Ulrich Drepper <drepper@cygnus.com>.
+ * Public domain.
+ */
+
+/*
+ * isinf(x) returns 1 is x is inf, -1 if x is -inf, else 0;
+ * no branching!
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+int
+__isinf (double x)
+{
+ int64_t ix;
+ EXTRACT_WORDS64(ix,x);
+ int64_t t = ix & UINT64_C(0x7fffffffffffffff);
+ t ^= UINT64_C(0x7ff0000000000000);
+ t |= -t;
+ return ~(t >> 63) & (ix >> 62);
+}
+hidden_def (__isinf)
+weak_alias (__isinf, isinf)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__isinf, __isinfl)
+weak_alias (__isinf, isinfl)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c
new file mode 100644
index 0000000000..3b08c54dd4
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c
@@ -0,0 +1,39 @@
+/* @(#)s_isnan.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * isnan(x) returns 1 is x is nan, else 0;
+ * no branching!
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+ int __isnan(double x)
+#else
+ int __isnan(x)
+ double x;
+#endif
+{
+ int64_t hx;
+ EXTRACT_WORDS64(hx,x);
+ hx &= UINT64_C(0x7fffffffffffffff);
+ hx = UINT64_C(0x7ff0000000000000) - hx;
+ return (int)(((uint64_t)hx)>>63);
+}
+hidden_def (__isnan)
+weak_alias (__isnan, isnan)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__isnan, __isnanl)
+weak_alias (__isnan, isnanl)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_llround.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_llround.c
new file mode 100644
index 0000000000..f7c9ea568f
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_llround.c
@@ -0,0 +1 @@
+/* The code is the same as lround. Use an alias, see l_round.c. */
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_lround.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_lround.c
new file mode 100644
index 0000000000..30ea5db7cc
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_lround.c
@@ -0,0 +1,80 @@
+/* Round double value to long int.
+ Copyright (C) 1997, 2004, 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#define llround __hidden_llround
+#define __llround __hidden___llround
+
+#include <math.h>
+
+#include "math_private.h"
+
+
+long int
+__lround (double x)
+{
+ int32_t j0;
+ int64_t i0;
+ long int result;
+ int sign;
+
+ EXTRACT_WORDS64 (i0, x);
+ j0 = ((i0 >> 52) & 0x7ff) - 0x3ff;
+ sign = i0 < 0 ? -1 : 1;
+ i0 &= UINT64_C(0xfffffffffffff);
+ i0 |= UINT64_C(0x10000000000000);
+
+ if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
+ {
+ if (j0 < 0)
+ return j0 < -1 ? 0 : sign;
+ else if (j0 >= 52)
+ result = i0 << (j0 - 52);
+ else
+ {
+ i0 += UINT64_C(0x8000000000000) >> j0;
+
+ result = i0 >> (52 - j0);
+ }
+ }
+ else
+ {
+ /* The number is too large. It is left implementation defined
+ what happens. */
+ return (long int) x;
+ }
+
+ return sign * result;
+}
+
+weak_alias (__lround, lround)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__lround, __lroundl)
+weak_alias (__lround, lroundl)
+#endif
+
+/* long long has the same width as long on 64-bit machines. */
+#undef llround
+#undef __llround
+strong_alias (__lround, __llround)
+weak_alias (__lround, llround)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__lround, __llroundl)
+weak_alias (__lround, llroundl)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c
new file mode 100644
index 0000000000..cb49019ddb
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c
@@ -0,0 +1,86 @@
+/* Adapted for use as nearbyint by Ulrich Drepper <drepper@cygnus.com>. */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * rint(x)
+ * Return x rounded to integral value according to the prevailing
+ * rounding mode.
+ * Method:
+ * Using floating addition.
+ * Exception:
+ * Inexact flag raised if x not equal to rint(x).
+ */
+
+#include <fenv.h>
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const double
+#else
+static double
+#endif
+TWO52[2]={
+ 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
+ -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
+};
+
+#ifdef __STDC__
+ double __nearbyint(double x)
+#else
+ double __nearbyint(x)
+ double x;
+#endif
+{
+ fenv_t env;
+ int64_t i0,sx;
+ int32_t j0;
+ EXTRACT_WORDS64(i0,x);
+ sx = (i0>>63)&1;
+ j0 = ((i0>>52)&0x7ff)-0x3ff;
+ if(j0<52) {
+ if(j0<0) {
+ if((i0&UINT64_C(0x7fffffffffffffff))==0) return x;
+ uint64_t i = i0 & UINT64_C(0xfffffffffffff);
+ i0 &= UINT64_C(0xfffe000000000000);
+ i0 |= (((i|-i) >> 12) & UINT64_C(0x8000000000000));
+ INSERT_WORDS64(x,i0);
+ feholdexcept (&env);
+ double w = TWO52[sx]+x;
+ double t = w-TWO52[sx];
+ fesetenv (&env);
+ EXTRACT_WORDS64(i0,t);
+ INSERT_WORDS64(t,(i0&UINT64_C(0x7fffffffffffffff))|(sx<<63));
+ return t;
+ } else {
+ uint64_t i = UINT64_C(0x000fffffffffffff)>>j0;
+ if((i0&i)==0) return x; /* x is integral */
+ i>>=1;
+ if((i0&i)!=0)
+ i0 = (i0&(~i))|(UINT64_C(0x4000000000000)>>j0);
+ }
+ } else {
+ if(j0==0x400) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ }
+ INSERT_WORDS64(x,i0);
+ feholdexcept (&env);
+ double w = TWO52[sx]+x;
+ double t = w-TWO52[sx];
+ fesetenv (&env);
+ return t;
+}
+weak_alias (__nearbyint, nearbyint)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__nearbyint, __nearbyintl)
+weak_alias (__nearbyint, nearbyintl)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_rint.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_rint.c
new file mode 100644
index 0000000000..4a60aa3278
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_rint.c
@@ -0,0 +1,79 @@
+/* @(#)s_rint.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * rint(x)
+ * Return x rounded to integral value according to the prevailing
+ * rounding mode.
+ * Method:
+ * Using floating addition.
+ * Exception:
+ * Inexact flag raised if x not equal to rint(x).
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const double
+#else
+static double
+#endif
+TWO52[2]={
+ 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
+ -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
+};
+
+#ifdef __STDC__
+ double __rint(double x)
+#else
+ double __rint(x)
+ double x;
+#endif
+{
+ int64_t i0,sx;
+ int32_t j0;
+ EXTRACT_WORDS64(i0,x);
+ sx = (i0>>63)&1;
+ j0 = ((i0>>52)&0x7ff)-0x3ff;
+ if(j0<52) {
+ if(j0<0) {
+ if((i0 & UINT64_C(0x7fffffffffffffff))==0) return x;
+ uint64_t i = i0 & UINT64_C(0xfffffffffffff);
+ i0 &= UINT64_C(0xfffe000000000000);
+ i0 |= (((i|-i) >> 12) & UINT64_C(0x8000000000000));
+ INSERT_WORDS64(x,i0);
+ double w = TWO52[sx]+x;
+ double t = w-TWO52[sx];
+ EXTRACT_WORDS64(i0,t);
+ INSERT_WORDS64(t,(i0&UINT64_C(0x7fffffffffffffff))|(sx<<63));
+ return t;
+ } else {
+ uint64_t i = UINT64_C(0x000fffffffffffff)>>j0;
+ if((i0&i)==0) return x; /* x is integral */
+ i>>=1;
+ if((i0&i)!=0)
+ i0 = (i0&(~i))|(UINT64_C(0x4000000000000)>>j0);
+ }
+ } else {
+ if(j0==0x400) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ }
+ INSERT_WORDS64(x,i0);
+ double w = TWO52[sx]+x;
+ return w-TWO52[sx];
+}
+weak_alias (__rint, rint)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__rint, __rintl)
+weak_alias (__rint, rintl)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_round.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_round.c
new file mode 100644
index 0000000000..5bd857910c
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_round.c
@@ -0,0 +1,77 @@
+/* Round double to integer away from zero.
+ Copyright (C) 1997, 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <math.h>
+
+#include "math_private.h"
+
+
+static const double huge = 1.0e300;
+
+
+double
+__round (double x)
+{
+ int64_t i0, j0;
+
+ EXTRACT_WORDS64 (i0, x);
+ j0 = ((i0 >> 52) & 0x7ff) - 0x3ff;
+ if (__builtin_expect (j0 < 52, 1))
+ {
+ if (j0 < 0)
+ {
+ if (huge + x > 0.0)
+ {
+ i0 &= UINT64_C(0x8000000000000000);
+ if (j0 == -1)
+ i0 |= UINT64_C(0x3ff0000000000000);
+ }
+ }
+ else
+ {
+ uint64_t i = UINT64_C(0x000fffffffffffff) >> j0;
+ if ((i0 & i) == 0)
+ /* X is integral. */
+ return x;
+ if (huge + x > 0.0)
+ {
+ /* Raise inexact if x != 0. */
+ i0 += UINT64_C(0x0008000000000000) >> j0;
+ i0 &= ~i;
+ }
+ }
+ }
+ else
+ {
+ if (j0 == 0x400)
+ /* Inf or NaN. */
+ return x + x;
+ else
+ return x;
+ }
+
+ INSERT_WORDS64 (x, i0);
+ return x;
+}
+weak_alias (__round, round)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__round, __roundl)
+weak_alias (__round, roundl)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c
new file mode 100644
index 0000000000..25cf3b1699
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c
@@ -0,0 +1,68 @@
+/* @(#)s_scalbn.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * scalbn (double x, int n)
+ * scalbn(x,n) returns x* 2**n computed by exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const double
+#else
+static double
+#endif
+two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */
+twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */
+huge = 1.0e+300,
+tiny = 1.0e-300;
+
+#ifdef __STDC__
+ double __scalbn (double x, int n)
+#else
+ double __scalbn (x,n)
+ double x; int n;
+#endif
+{
+ int64_t ix;
+ int64_t k;
+ EXTRACT_WORDS64(ix,x);
+ k = (ix >> 52) & 0x7ff; /* extract exponent */
+ if (k==0) { /* 0 or subnormal x */
+ if ((ix & UINT64_C(0xfffffffffffff))==0) return x; /* +-0 */
+ x *= two54;
+ EXTRACT_WORDS64(ix,x);
+ k = ((ix >> 52) & 0x7ff) - 54;
+ }
+ if (k==0x7ff) return x+x; /* NaN or Inf */
+ k = k+n;
+ if (n> 50000 || k > 0x7fe)
+ return huge*__copysign(huge,x); /* overflow */
+ if (n< -50000) return tiny*__copysign(tiny,x); /*underflow*/
+ if (k > 0) /* normal result */
+ {INSERT_WORDS64(x,(ix&UINT64_C(0x800fffffffffffff))|(k<<52));
+ return x;}
+ if (k <= -54)
+ return tiny*__copysign(tiny,x); /*underflow*/
+ k += 54; /* subnormal result */
+ INSERT_WORDS64(x,(ix&INT64_C(0x800fffffffffffff))|(k<<52));
+ return x*twom54;
+}
+weak_alias (__scalbn, scalbn)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__scalbn, __scalbnl)
+weak_alias (__scalbn, scalbnl)
+#endif
diff --git a/sysdeps/alpha/fpu/s_trunc.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c
index 11a279a53f..9add5ade71 100644
--- a/sysdeps/alpha/fpu/s_trunc.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c
@@ -1,6 +1,7 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
+/* Truncate argument to nearest integral value not larger than the argument.
+ Copyright (C) 1997, 1998, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Richard Henderson.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -18,36 +19,38 @@
02111-1307 USA. */
#include <math.h>
-#include <math_ldbl_opt.h>
+#include "math_private.h"
-/* Use the chopped rounding mode conversion instructions to implement trunc. */
double
__trunc (double x)
{
- double two52 = copysign (0x1.0p52, x);
- double r, tmp;
-
- __asm (
-#ifdef _IEEE_FP_INEXACT
- "addt/suic %2, %3, %1\n\tsubt/suic %1, %3, %0"
-#else
- "addt/suc %2, %3, %1\n\tsubt/suc %1, %3, %0"
-#endif
- : "=&f"(r), "=&f"(tmp)
- : "f"(x), "f"(two52));
-
- /* trunc(-0) == -0, and in general we'll always have the same
- sign as our input. */
- return copysign (r, x);
+ int64_t i0, j0;
+ int64_t sx;
+
+ EXTRACT_WORDS64 (i0, x);
+ sx = i0 & UINT64_C(0x8000000000000000);
+ j0 = ((i0 >> 52) & 0x7ff) - 0x3ff;
+ if (j0 < 52)
+ {
+ if (j0 < 0)
+ /* The magnitude of the number is < 1 so the result is +-0. */
+ INSERT_WORDS64 (x, sx);
+ else
+ INSERT_WORDS64 (x, sx | (i0 & ~(UINT64_C(0x000fffffffffffff) >> j0)));
+ }
+ else
+ {
+ if (j0 == 0x400)
+ /* x is inf or NaN. */
+ return x + x;
+ }
+
+ return x;
}
-
weak_alias (__trunc, trunc)
#ifdef NO_LONG_DOUBLE
strong_alias (__trunc, __truncl)
weak_alias (__trunc, truncl)
#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/ieee754/flt-32/s_cosf.c b/sysdeps/ieee754/flt-32/s_cosf.c
index 86c59d440c..4f9f239f6f 100644
--- a/sysdeps/ieee754/flt-32/s_cosf.c
+++ b/sysdeps/ieee754/flt-32/s_cosf.c
@@ -8,7 +8,7 @@
*
* Developed at SunPro, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
+ * software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
@@ -17,6 +17,7 @@
static char rcsid[] = "$NetBSD: s_cosf.c,v 1.4 1995/05/10 20:47:03 jtc Exp $";
#endif
+#include <errno.h>
#include "math.h"
#include "math_private.h"
@@ -43,7 +44,11 @@ static float one=1.0;
if(ix <= 0x3f490fd8) return __kernel_cosf(x,z);
/* cos(Inf or NaN) is NaN */
- else if (ix>=0x7f800000) return x-x;
+ else if (ix>=0x7f800000) {
+ if (ix == 0x7f800000)
+ __set_errno (EDOM);
+ return x-x;
+ }
/* argument reduction needed */
else {
diff --git a/sysdeps/ieee754/flt-32/s_expm1f.c b/sysdeps/ieee754/flt-32/s_expm1f.c
index 1f032be25f..3f4536b906 100644
--- a/sysdeps/ieee754/flt-32/s_expm1f.c
+++ b/sysdeps/ieee754/flt-32/s_expm1f.c
@@ -17,6 +17,7 @@
static char rcsid[] = "$NetBSD: s_expm1f.c,v 1.5 1995/05/10 20:47:11 jtc Exp $";
#endif
+#include <errno.h>
#include "math.h"
#include "math_private.h"
@@ -63,7 +64,10 @@ Q5 = -2.0109921195e-07; /* 0xb457edbb */
return x+x; /* NaN */
if(hx==0x7f800000)
return (xsb==0)? x:-1.0;/* exp(+-inf)={inf,-1} */
- if(x > o_threshold) return huge*huge; /* overflow */
+ if(x > o_threshold) {
+ __set_errno (ERANGE);
+ return huge*huge; /* overflow */
+ }
}
if(xsb!=0) { /* x < -27*ln2, return -1.0 with inexact */
if(x+tiny<(float)0.0) /* raise inexact */
diff --git a/sysdeps/ieee754/flt-32/s_sinf.c b/sysdeps/ieee754/flt-32/s_sinf.c
index 76a7c21fcb..673e379f0c 100644
--- a/sysdeps/ieee754/flt-32/s_sinf.c
+++ b/sysdeps/ieee754/flt-32/s_sinf.c
@@ -8,7 +8,7 @@
*
* Developed at SunPro, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
+ * software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
@@ -17,6 +17,7 @@
static char rcsid[] = "$NetBSD: s_sinf.c,v 1.4 1995/05/10 20:48:16 jtc Exp $";
#endif
+#include <errno.h>
#include "math.h"
#include "math_private.h"
@@ -37,7 +38,11 @@ static char rcsid[] = "$NetBSD: s_sinf.c,v 1.4 1995/05/10 20:48:16 jtc Exp $";
if(ix <= 0x3f490fd8) return __kernel_sinf(x,z,0);
/* sin(Inf or NaN) is NaN */
- else if (ix>=0x7f800000) return x-x;
+ else if (ix>=0x7f800000) {
+ if (ix == 0x7f800000)
+ __set_errno (EDOM);
+ return x-x;
+ }
/* argument reduction needed */
else {
diff --git a/sysdeps/ieee754/flt-32/s_tanf.c b/sysdeps/ieee754/flt-32/s_tanf.c
index e8f6016c32..4a852cb1f4 100644
--- a/sysdeps/ieee754/flt-32/s_tanf.c
+++ b/sysdeps/ieee754/flt-32/s_tanf.c
@@ -8,7 +8,7 @@
*
* Developed at SunPro, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
+ * software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
@@ -17,6 +17,7 @@
static char rcsid[] = "$NetBSD: s_tanf.c,v 1.4 1995/05/10 20:48:20 jtc Exp $";
#endif
+#include <errno.h>
#include "math.h"
#include "math_private.h"
@@ -37,7 +38,11 @@ static char rcsid[] = "$NetBSD: s_tanf.c,v 1.4 1995/05/10 20:48:20 jtc Exp $";
if(ix <= 0x3f490fda) return __kernel_tanf(x,z,1);
/* tan(Inf or NaN) is NaN */
- else if (ix>=0x7f800000) return x-x; /* NaN */
+ else if (ix>=0x7f800000) {
+ if (ix==0x7f800000)
+ __set_errno (EDOM);
+ return x-x; /* NaN */
+ }
/* argument reduction needed */
else {
diff --git a/sysdeps/ieee754/flt-32/w_expf.c b/sysdeps/ieee754/flt-32/w_expf.c
index 4ba21c7c42..83b268f570 100644
--- a/sysdeps/ieee754/flt-32/w_expf.c
+++ b/sysdeps/ieee754/flt-32/w_expf.c
@@ -56,4 +56,5 @@ u_threshold= -1.0397208405e+02; /* 0xc2cff1b5 */
return z;
#endif
}
+hidden_def (__expf)
weak_alias (__expf, expf)
diff --git a/sysdeps/ieee754/k_standard.c b/sysdeps/ieee754/k_standard.c
index d8fa2a4493..ede5157454 100644
--- a/sysdeps/ieee754/k_standard.c
+++ b/sysdeps/ieee754/k_standard.c
@@ -383,7 +383,7 @@ static double zero = 0.0; /* used as const */
else
exc.retval = HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
- __set_errno (EDOM);
+ __set_errno (ERANGE);
else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("lgamma: SING error\n", 19);
@@ -528,7 +528,7 @@ static double zero = 0.0; /* used as const */
else
exc.retval = -HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
- __set_errno (EDOM);
+ __set_errno (ERANGE);
else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("pow(0,neg): DOMAIN error\n", 25);
@@ -547,7 +547,7 @@ static double zero = 0.0; /* used as const */
else
exc.retval = HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
- __set_errno (EDOM);
+ __set_errno (ERANGE);
else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("pow(0,neg): DOMAIN error\n", 25);
@@ -692,7 +692,7 @@ static double zero = 0.0; /* used as const */
? "atanhf" : "atanhl");
exc.retval = x/zero; /* sign(x)*inf */
if (_LIB_VERSION == _POSIX_)
- __set_errno (EDOM);
+ __set_errno (ERANGE);
else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("atanh: SING error\n", 18);
@@ -990,7 +990,7 @@ static double zero = 0.0; /* used as const */
__set_errno (ERANGE);
}
break;
-
+
/* #### Last used is 50/150/250 ### */
}
return exc.retval;
diff --git a/sysdeps/ieee754/ldbl-128/s_ceill.c b/sysdeps/ieee754/ldbl-128/s_ceill.c
index 76bda9fc0b..71f2fee91b 100644
--- a/sysdeps/ieee754/ldbl-128/s_ceill.c
+++ b/sysdeps/ieee754/ldbl-128/s_ceill.c
@@ -30,9 +30,9 @@ static char rcsid[] = "$NetBSD: $";
#include "math_private.h"
#ifdef __STDC__
-static const long double huge = 1.0e4930;
+static const long double huge = 1.0e4930L;
#else
-static long double huge = 1.0e4930;
+static long double huge = 1.0e4930L;
#endif
#ifdef __STDC__
diff --git a/sysdeps/ieee754/ldbl-128/s_cosl.c b/sysdeps/ieee754/ldbl-128/s_cosl.c
index d1258b2cf1..ef61c3afdb 100644
--- a/sysdeps/ieee754/ldbl-128/s_cosl.c
+++ b/sysdeps/ieee754/ldbl-128/s_cosl.c
@@ -44,6 +44,7 @@
* TRIG(x) returns trig(x) nearly rounded
*/
+#include <errno.h>
#include "math.h"
#include "math_private.h"
@@ -66,7 +67,14 @@
return __kernel_cosl(x,z);
/* cos(Inf or NaN) is NaN */
- else if (ix>=0x7fff000000000000LL) return x-x;
+ else if (ix>=0x7fff000000000000LL) {
+ if (ix == 0x7fff000000000000LL) {
+ GET_LDOUBLE_LSW64(n,x);
+ if (n == 0)
+ __set_errno (EDOM);
+ }
+ return x-x;
+ }
/* argument reduction needed */
else {
diff --git a/sysdeps/ieee754/ldbl-128/s_expm1l.c b/sysdeps/ieee754/ldbl-128/s_expm1l.c
index 78bbe65b53..dec6404af6 100644
--- a/sysdeps/ieee754/ldbl-128/s_expm1l.c
+++ b/sysdeps/ieee754/ldbl-128/s_expm1l.c
@@ -53,6 +53,7 @@
+#include <errno.h>
#include "math.h"
#include "math_private.h"
@@ -85,7 +86,7 @@ static const long double
/* ln (2^16384 * (1 - 2^-113)) */
maxlog = 1.1356523406294143949491931077970764891253E4L,
/* ln 2^-114 */
- minarg = -7.9018778583833765273564461846232128760607E1L, big = 2e4932L;
+ minarg = -7.9018778583833765273564461846232128760607E1L, big = 1e4932L;
long double
@@ -121,7 +122,10 @@ __expm1l (long double x)
/* Overflow. */
if (x > maxlog)
- return (big * big);
+ {
+ __set_errno (ERANGE);
+ return (big * big);
+ }
/* Minimum value. */
if (x < minarg)
diff --git a/sysdeps/ieee754/ldbl-128/s_floorl.c b/sysdeps/ieee754/ldbl-128/s_floorl.c
index ff5b98da9d..2a60a79fc5 100644
--- a/sysdeps/ieee754/ldbl-128/s_floorl.c
+++ b/sysdeps/ieee754/ldbl-128/s_floorl.c
@@ -30,9 +30,9 @@ static char rcsid[] = "$NetBSD: $";
#include "math_private.h"
#ifdef __STDC__
-static const long double huge = 1.0e4930;
+static const long double huge = 1.0e4930L;
#else
-static long double huge = 1.0e4930;
+static long double huge = 1.0e4930L;
#endif
#ifdef __STDC__
diff --git a/sysdeps/ieee754/ldbl-128/s_log1pl.c b/sysdeps/ieee754/ldbl-128/s_log1pl.c
index defbe76f5e..5e9cf49055 100644
--- a/sysdeps/ieee754/ldbl-128/s_log1pl.c
+++ b/sysdeps/ieee754/ldbl-128/s_log1pl.c
@@ -117,7 +117,6 @@ static const long double C2 = 1.428606820309417232121458176568075500134E-6L;
static const long double sqrth = 0.7071067811865475244008443621048490392848L;
/* ln (2^16384 * (1 - 2^-113)) */
static const long double maxlog = 1.1356523406294143949491931077970764891253E4L;
-static const long double big = 2e4932L;
static const long double zero = 0.0L;
long double
diff --git a/sysdeps/ieee754/ldbl-128/s_nexttowardf.c b/sysdeps/ieee754/ldbl-128/s_nexttowardf.c
index 1a22e0102c..1f37d80e04 100644
--- a/sysdeps/ieee754/ldbl-128/s_nexttowardf.c
+++ b/sysdeps/ieee754/ldbl-128/s_nexttowardf.c
@@ -44,10 +44,12 @@ static char rcsid[] = "$NetBSD: $";
return x+y;
if((long double) x==y) return y; /* x=y, return y */
if(ix==0) { /* x == 0 */
- float x2;
+ float u;
SET_FLOAT_WORD(x,(u_int32_t)((hy>>32)&0x80000000)|1);/* return +-minsub*/
- x2 = x*x;
- if(x2==x) return x2; else return x; /* raise underflow flag */
+ u = math_opt_barrier (x);
+ u = u * u;
+ math_force_eval (u); /* raise underflow flag */
+ return x;
}
if(hx>=0) { /* x > 0 */
if(hy<0||(ix>>23)>(iy>>48)-0x3f80
@@ -68,12 +70,9 @@ static char rcsid[] = "$NetBSD: $";
}
hy = hx&0x7f800000;
if(hy>=0x7f800000) return x+x; /* overflow */
- if(hy<0x00800000) { /* underflow */
- float x2 = x*x;
- if(x2!=x) { /* raise underflow flag */
- SET_FLOAT_WORD(x2,hx);
- return x2;
- }
+ if(hy<0x00800000) {
+ float u = x*x; /* underflow */
+ math_force_eval (u); /* raise underflow flag */
}
SET_FLOAT_WORD(x,hx);
return x;
diff --git a/sysdeps/ieee754/ldbl-128/s_sinl.c b/sysdeps/ieee754/ldbl-128/s_sinl.c
index 446a75f126..dc509e72e5 100644
--- a/sysdeps/ieee754/ldbl-128/s_sinl.c
+++ b/sysdeps/ieee754/ldbl-128/s_sinl.c
@@ -44,6 +44,7 @@
* TRIG(x) returns trig(x) nearly rounded
*/
+#include <errno.h>
#include "math.h"
#include "math_private.h"
@@ -66,7 +67,14 @@
return __kernel_sinl(x,z,0);
/* sin(Inf or NaN) is NaN */
- else if (ix>=0x7fff000000000000LL) return x-x;
+ else if (ix>=0x7fff000000000000LL) {
+ if (ix == 0x7fff000000000000LL) {
+ GET_LDOUBLE_LSW64(n,x);
+ if (n == 0)
+ __set_errno (EDOM);
+ }
+ return x-x;
+ }
/* argument reduction needed */
else {
diff --git a/sysdeps/ieee754/ldbl-128/s_tanl.c b/sysdeps/ieee754/ldbl-128/s_tanl.c
index ea9d053d9b..2349da67f1 100644
--- a/sysdeps/ieee754/ldbl-128/s_tanl.c
+++ b/sysdeps/ieee754/ldbl-128/s_tanl.c
@@ -44,6 +44,7 @@
* TRIG(x) returns trig(x) nearly rounded
*/
+#include <errno.h>
#include "math.h"
#include "math_private.h"
@@ -65,7 +66,14 @@
if(ix <= 0x3ffe921fb54442d1LL) return __kernel_tanl(x,z,1);
/* tanl(Inf or NaN) is NaN */
- else if (ix>=0x7fff000000000000LL) return x-x; /* NaN */
+ else if (ix>=0x7fff000000000000LL) {
+ if (ix == 0x7fff000000000000LL) {
+ GET_LDOUBLE_LSW64(n,x);
+ if (n == 0)
+ __set_errno (EDOM);
+ }
+ return x-x; /* NaN */
+ }
/* argument reduction needed */
else {
diff --git a/sysdeps/ieee754/ldbl-128/w_expl.c b/sysdeps/ieee754/ldbl-128/w_expl.c
index 816ce3caa6..d6205d3ef8 100644
--- a/sysdeps/ieee754/ldbl-128/w_expl.c
+++ b/sysdeps/ieee754/ldbl-128/w_expl.c
@@ -55,4 +55,5 @@ u_threshold= -1.1433462743336297878837243843452621503410E4;
return z;
#endif
}
+hidden_def (__expl)
weak_alias (__expl, expl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_cosl.c b/sysdeps/ieee754/ldbl-128ibm/s_cosl.c
index 59a8196706..8470850fc8 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_cosl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_cosl.c
@@ -44,6 +44,7 @@
* TRIG(x) returns trig(x) nearly rounded
*/
+#include <errno.h>
#include "math.h"
#include "math_private.h"
#include <math_ldbl_opt.h>
@@ -67,9 +68,11 @@
return __kernel_cosl(x,z);
/* cos(Inf or NaN) is NaN */
- else if (ix>=0x7ff0000000000000LL)
+ else if (ix>=0x7ff0000000000000LL) {
+ if (ix == 0x7ff0000000000000LL)
+ __set_errno (EDOM);
return x-x;
-
+ }
/* argument reduction needed */
else {
n = __ieee754_rem_pio2l(x,y);
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c b/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c
index 735006575f..f631eddf59 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c
@@ -51,6 +51,7 @@
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+#include <errno.h>
#include "math.h"
#include "math_private.h"
#include <math_ldbl_opt.h>
@@ -120,7 +121,10 @@ __expm1l (long double x)
/* Overflow. */
if (x > maxlog)
- return (big * big);
+ {
+ __set_errno (ERANGE);
+ return (big * big);
+ }
/* Minimum value. */
if (x < minarg)
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_sinl.c b/sysdeps/ieee754/ldbl-128ibm/s_sinl.c
index 8cc592c612..bd72225e18 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_sinl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_sinl.c
@@ -44,6 +44,7 @@
* TRIG(x) returns trig(x) nearly rounded
*/
+#include <errno.h>
#include "math.h"
#include "math_private.h"
#include <math_ldbl_opt.h>
@@ -67,8 +68,11 @@
return __kernel_sinl(x,z,0);
/* sin(Inf or NaN) is NaN */
- else if (ix>=0x7ff0000000000000LL) return x-x;
-
+ else if (ix>=0x7ff0000000000000LL) {
+ if (ix == 0x7ff0000000000000LL)
+ __set_errno (EDOM);
+ return x-x;
+ }
/* argument reduction needed */
else {
n = __ieee754_rem_pio2l(x,y);
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_tanl.c b/sysdeps/ieee754/ldbl-128ibm/s_tanl.c
index ea5a7f0ffb..913f38f243 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_tanl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_tanl.c
@@ -44,6 +44,7 @@
* TRIG(x) returns trig(x) nearly rounded
*/
+#include <errno.h>
#include "math.h"
#include "math_private.h"
#include <math_ldbl_opt.h>
@@ -66,8 +67,11 @@
if(ix <= 0x3fe921fb54442d10LL) return __kernel_tanl(x,z,1);
/* tanl(Inf or NaN) is NaN */
- else if (ix>=0x7ff0000000000000LL) return x-x; /* NaN */
-
+ else if (ix>=0x7ff0000000000000LL) {
+ if (ix == 0x7ff0000000000000LL)
+ __set_errno (EDOM);
+ return x-x; /* NaN */
+ }
/* argument reduction needed */
else {
n = __ieee754_rem_pio2l(x,y);
diff --git a/sysdeps/ieee754/ldbl-96/s_cosl.c b/sysdeps/ieee754/ldbl-96/s_cosl.c
index 9765f7fd4e..e33abc9afd 100644
--- a/sysdeps/ieee754/ldbl-96/s_cosl.c
+++ b/sysdeps/ieee754/ldbl-96/s_cosl.c
@@ -49,6 +49,7 @@ static char rcsid[] = "$NetBSD: $";
* TRIG(x) returns trig(x) nearly rounded
*/
+#include <errno.h>
#include "math.h"
#include "math_private.h"
@@ -71,7 +72,11 @@ static char rcsid[] = "$NetBSD: $";
return __kernel_cosl(x,z);
/* cos(Inf or NaN) is NaN */
- else if (se==0x7fff) return x-x;
+ else if (se==0x7fff) {
+ if ((i0 | i1) == 0)
+ __set_errno (EDOM);
+ return x-x;
+ }
/* argument reduction needed */
else {
diff --git a/sysdeps/ieee754/ldbl-96/s_sinl.c b/sysdeps/ieee754/ldbl-96/s_sinl.c
index 4fd48805b4..b939bd6a99 100644
--- a/sysdeps/ieee754/ldbl-96/s_sinl.c
+++ b/sysdeps/ieee754/ldbl-96/s_sinl.c
@@ -49,6 +49,7 @@ static char rcsid[] = "$NetBSD: $";
* TRIG(x) returns trig(x) nearly rounded
*/
+#include <errno.h>
#include "math.h"
#include "math_private.h"
@@ -71,7 +72,11 @@ static char rcsid[] = "$NetBSD: $";
return __kernel_sinl(x,z,0);
/* sin(Inf or NaN) is NaN */
- else if (se==0x7fff) return x-x;
+ else if (se==0x7fff) {
+ if ((i0 | i1) == 0)
+ __set_errno (EDOM);
+ return x-x;
+ }
/* argument reduction needed */
else {
diff --git a/sysdeps/ieee754/ldbl-96/w_expl.c b/sysdeps/ieee754/ldbl-96/w_expl.c
index b8152cea65..53bb143734 100644
--- a/sysdeps/ieee754/ldbl-96/w_expl.c
+++ b/sysdeps/ieee754/ldbl-96/w_expl.c
@@ -57,4 +57,5 @@ u_threshold= -1.140019167866942050398521670162263001513e4;
return z;
#endif
}
+hidden_def (__expl)
weak_alias (__expl, expl)
diff --git a/sysdeps/ieee754/ldbl-opt/configure b/sysdeps/ieee754/ldbl-opt/configure
index dc81365318..065a3c8364 100755..100644
--- a/sysdeps/ieee754/ldbl-opt/configure
+++ b/sysdeps/ieee754/ldbl-opt/configure
@@ -2,10 +2,10 @@
# Local configure fragment for sysdeps/ieee754/ldbl-opt/.
-echo "$as_me:$LINENO: checking whether $CC $CFLAGS supports -mlong-double-128" >&5
-echo $ECHO_N "checking whether $CC $CFLAGS supports -mlong-double-128... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking whether $CC $CFLAGS supports -mlong-double-128" >&5
+$as_echo_n "checking whether $CC $CFLAGS supports -mlong-double-128... " >&6; }
if test "${libc_cv_mlong_double_128+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -mlong-double-128"
@@ -29,41 +29,38 @@ long double foobar (long double x) { return x; }
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
libc_cv_mlong_double_128=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-libc_cv_mlong_double_128=no
+ libc_cv_mlong_double_128=no
fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS="$save_CFLAGS"
fi
-echo "$as_me:$LINENO: result: $libc_cv_mlong_double_128" >&5
-echo "${ECHO_T}$libc_cv_mlong_double_128" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_mlong_double_128" >&5
+$as_echo "$libc_cv_mlong_double_128" >&6; }
if test "$libc_cv_mlong_double_128" = no; then
- { { echo "$as_me:$LINENO: error: this configuration requires -mlong-double-128 support" >&5
-echo "$as_me: error: this configuration requires -mlong-double-128 support" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: this configuration requires -mlong-double-128 support" >&5
+$as_echo "$as_me: error: this configuration requires -mlong-double-128 support" >&2;}
{ (exit 1); exit 1; }; }
fi
diff --git a/sysdeps/mach/alpha/machine-lock.h b/sysdeps/mach/alpha/machine-lock.h
deleted file mode 100644
index bd27d2a51f..0000000000
--- a/sysdeps/mach/alpha/machine-lock.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Machine-specific definition for spin locks. Alpha version.
- Copyright (C) 1994, 1997, 2007 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _MACHINE_LOCK_H
-#define _MACHINE_LOCK_H
-
-/* The type of a spin lock variable. */
-
-typedef __volatile long int __spin_lock_t;
-
-/* Value to initialize `__spin_lock_t' variables to. */
-
-#define __SPIN_LOCK_INITIALIZER 0L
-
-
-#ifndef _EXTERN_INLINE
-#define _EXTERN_INLINE __extern_inline
-#endif
-
-/* Unlock LOCK. */
-
-_EXTERN_INLINE void
-__spin_unlock (__spin_lock_t *__lock)
-{
- __asm__ __volatile__ ("mb; stq $31, %0; mb"
- : "=m" (__lock));
-}
-
-/* Try to lock LOCK; return nonzero if we locked it, zero if another has. */
-
-_EXTERN_INLINE int
-__spin_try_lock (register __spin_lock_t *__lock)
-{
- register long int __rtn, __tmp;
-
- do
- {
- __asm__ __volatile__ ("mb; ldq_l %0,%1" /* Load lock value into TMP. */
- : "=r" (__tmp) : "m" (*__lock));
- __rtn = 2; /* Load locked value into RTN. */
- if (__tmp)
- /* The lock is already taken. */
- return 0;
-
- /* The lock is not taken; try to get it now. */
- __asm__ __volatile__ ("stq_c %0,%1"
- : "=r" (__rtn), "=m" (*__lock)
- : "0" (__rtn), "1" (*__lock));
- /* RTN is clear if stq_c was interrupted; loop to try the lock again. */
- } while (! __rtn);
- /* RTN is now nonzero; we have the lock. */
- return __rtn;
-}
-
-/* Return nonzero if LOCK is locked. */
-
-_EXTERN_INLINE int
-__spin_lock_locked (__spin_lock_t *__lock)
-{
- return *__lock != 0;
-}
-
-
-#endif /* machine-lock.h */
diff --git a/sysdeps/mach/alpha/machine-sp.h b/sysdeps/mach/alpha/machine-sp.h
deleted file mode 100644
index e6df63c9ac..0000000000
--- a/sysdeps/mach/alpha/machine-sp.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Machine-specific function to return the stack pointer. Alpha version.
- Copyright (C) 1994, 1997, 2007 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _MACHINE_SP_H
-#define _MACHINE_SP_H
-
-/* Return the current stack pointer. */
-
-#ifndef _EXTERN_INLINE
-#define _EXTERN_INLINE __extern_inline
-#endif
-
-_EXTERN_INLINE void *
-__thread_stack_pointer (void)
-{
- register void *__sp__ __asm__ ("$30");
- return __sp__;
-}
-
-#endif /* machine-sp.h */
diff --git a/sysdeps/mach/alpha/setfpucw.c b/sysdeps/mach/alpha/setfpucw.c
deleted file mode 100644
index a2887c8dfb..0000000000
--- a/sysdeps/mach/alpha/setfpucw.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Set FP exception mask and rounding mode. Mach/Alpha version.
- Copyright (C) 2002 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fpu_control.h>
-
-
-#define FPCR_DYN_SHIFT 58 /* first dynamic rounding mode bit */
-#define FPCR_DYN_CHOPPED (0x0UL << FPCR_DYN_SHIFT) /* towards 0 */
-#define FPCR_DYN_MINUS (0x1UL << FPCR_DYN_SHIFT) /* towards -INF */
-#define FPCR_DYN_NORMAL (0x2UL << FPCR_DYN_SHIFT) /* towards nearest */
-#define FPCR_DYN_PLUS (0x3UL << FPCR_DYN_SHIFT) /* towards +INF */
-#define FPCR_DYN_MASK (0x3UL << FPCR_DYN_SHIFT)
-
-static inline unsigned long
-rdfpcr (void)
-{
- unsigned long fpcr;
- asm ("excb; mf_fpcr %0" : "=f"(fpcr));
- return fpcr;
-}
-
-static inline void
-wrfpcr (unsigned long fpcr)
-{
- asm volatile ("mt_fpcr %0; excb" : : "f"(fpcr));
-}
-
-
-void
-__setfpucw (fpu_control_t fpu_control)
-{
- unsigned long fpcr;
-
- if (!fpu_control)
- fpu_control = _FPU_DEFAULT;
-
- /* first, set dynamic rounding mode: */
-
- fpcr = rdfpcr();
- fpcr &= ~FPCR_DYN_MASK;
- switch (fpu_control & 0xc00)
- {
- case _FPU_RC_NEAREST: fpcr |= FPCR_DYN_NORMAL; break;
- case _FPU_RC_DOWN: fpcr |= FPCR_DYN_MINUS; break;
- case _FPU_RC_UP: fpcr |= FPCR_DYN_PLUS; break;
- case _FPU_RC_ZERO: fpcr |= FPCR_DYN_CHOPPED; break;
- }
- wrfpcr(fpcr);
-
- /* XXX trap bits? */
-
- __fpu_control = fpu_control; /* update global copy */
-}
diff --git a/sysdeps/mach/alpha/syscall.S b/sysdeps/mach/alpha/syscall.S
deleted file mode 100644
index 15fc5b75b7..0000000000
--- a/sysdeps/mach/alpha/syscall.S
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 1994,97,2002 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-
-ENTRY (syscall)
- mov a0, v0 /* Load system call number from first arg. */
- mov a1, a0
- mov a2, a1
- mov a3, a2
- mov a4, a3
- mov a5, a4
- /* Load the remaining possible args (up to 11) from the stack. */
- ldq a5,0(sp)
- ldq t0,8(sp)
- ldq t1,16(sp)
- ldq t2,24(sp)
- ldq t3,32(sp)
- ldq t4,40(sp)
- callsys
- ret
-END (syscall)
diff --git a/sysdeps/mach/alpha/sysdep.h b/sysdeps/mach/alpha/sysdep.h
deleted file mode 100644
index 84e21c8d5d..0000000000
--- a/sysdeps/mach/alpha/sysdep.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copyright (C) 1994,97,2002 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define MOVE(x,y) mov x, y
-
-#define LOSE asm volatile ("call_pal 0") /* halt */
-
-#define START_MACHDEP \
- asm ("_start: mov $30, $16\n" /* Put initial SP in a0. */ \
- " br $27, 1f\n" /* Load GP from PC. */ \
- "1: ldgp $29, 0($27)\n" \
- " jmp $26, _start0"); /* Jump to _start0; don't return. */
-#define START_ARGS char **sparg
-#define SNARF_ARGS(argc, argv, envp) \
- (envp = &(argv = &sparg[1])[(argc = *(int *) sparg) + 1])
-
-#define CALL_WITH_SP(fn, sp) \
- ({ register long int __fn = (long int) fn, __sp = (long int) sp; \
- asm volatile ("mov %0,$30; jmp $31, (%1); ldgp $29, 0(%1)" \
- : : "r" (__sp), "r" (__fn)); })
-
-#define STACK_GROWTH_DOWN
-
-#define RETURN_TO(sp, pc, retval) \
- asm volatile ("mov %0,$30; jmp $31, (%1); mov %2,$0" \
- : : "r" (sp), "r" (pc), "r" ((long int) (retval)));
-
-#define ALIGN 3
-#include <sysdeps/mach/sysdep.h>
-
-/* Alpha needs the .ent and .frame magic that the generic version lacks. */
-#undef ENTRY
-#define ENTRY(name) \
- .globl name; \
- .align 3; \
- .ent name, 0; \
- name##: \
- .frame sp, 0, ra
-
-#include <mach/alpha/asm.h>
-#undef at
-#define at 28
-#define AT $28
-#define fp s6
diff --git a/sysdeps/mach/alpha/thread_state.h b/sysdeps/mach/alpha/thread_state.h
deleted file mode 100644
index 0c9527bd26..0000000000
--- a/sysdeps/mach/alpha/thread_state.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Mach thread state definitions for machine-independent code. Alpha version.
- Copyright (C) 1994, 1997 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <mach/machine/thread_status.h>
-
-#define MACHINE_THREAD_STATE_FLAVOR ALPHA_THREAD_STATE
-#define MACHINE_THREAD_STATE_COUNT ALPHA_THREAD_STATE_COUNT
-
-#define machine_thread_state alpha_thread_state
-
-#define PC pc
-#define SP r30
-#define SYSRETURN r0
-
-struct machine_thread_all_state
- {
- int set; /* Mask of bits (1 << FLAVOR). */
- struct alpha_thread_state basic;
- struct alpha_exc_state exc;
- struct alpha_float_state fpu;
- };
-
-#include <sysdeps/mach/thread_state.h>
diff --git a/sysdeps/mach/configure b/sysdeps/mach/configure
index bf4f98d4d5..32763ebaca 100644
--- a/sysdeps/mach/configure
+++ b/sysdeps/mach/configure
@@ -3,10 +3,10 @@
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}mig", so it can be a program name with args.
set dummy ${ac_tool_prefix}mig; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_MIG+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$MIG"; then
ac_cv_prog_MIG="$MIG" # Let the user override the test.
@@ -17,34 +17,36 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_MIG="${ac_tool_prefix}mig"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
+IFS=$as_save_IFS
fi
fi
MIG=$ac_cv_prog_MIG
if test -n "$MIG"; then
- echo "$as_me:$LINENO: result: $MIG" >&5
-echo "${ECHO_T}$MIG" >&6
+ { $as_echo "$as_me:$LINENO: result: $MIG" >&5
+$as_echo "$MIG" >&6; }
else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
+
fi
if test -z "$ac_cv_prog_MIG"; then
ac_ct_MIG=$MIG
# Extract the first word of "mig", so it can be a program name with args.
set dummy mig; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_ac_ct_MIG+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_MIG"; then
ac_cv_prog_ac_ct_MIG="$ac_ct_MIG" # Let the user override the test.
@@ -55,44 +57,54 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_MIG="mig"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
+IFS=$as_save_IFS
- test -z "$ac_cv_prog_ac_ct_MIG" && ac_cv_prog_ac_ct_MIG="MISSING"
fi
fi
ac_ct_MIG=$ac_cv_prog_ac_ct_MIG
if test -n "$ac_ct_MIG"; then
- echo "$as_me:$LINENO: result: $ac_ct_MIG" >&5
-echo "${ECHO_T}$ac_ct_MIG" >&6
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_MIG" >&5
+$as_echo "$ac_ct_MIG" >&6; }
else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
fi
- MIG=$ac_ct_MIG
+ if test "x$ac_ct_MIG" = x; then
+ MIG="MISSING"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ MIG=$ac_ct_MIG
+ fi
else
MIG="$ac_cv_prog_MIG"
fi
if test "x$MIG" = xMISSING; then
- { { echo "$as_me:$LINENO: error: cannot find required build tool mig" >&5
-echo "$as_me: error: cannot find required build tool mig" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: cannot find required build tool mig" >&5
+$as_echo "$as_me: error: cannot find required build tool mig" >&2;}
{ (exit 1); exit 1; }; }
fi
### Sanity checks for Mach header installation
-echo "$as_me:$LINENO: checking for mach/mach_types.h" >&5
-echo $ECHO_N "checking for mach/mach_types.h... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for mach/mach_types.h" >&5
+$as_echo_n "checking for mach/mach_types.h... " >&6; }
if test "${ac_cv_header_mach_mach_types_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -102,48 +114,48 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <mach/mach_types.h>
_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
ac_cv_header_mach_mach_types_h=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_mach_mach_types_h=no
fi
+
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: $ac_cv_header_mach_mach_types_h" >&5
-echo "${ECHO_T}$ac_cv_header_mach_mach_types_h" >&6
-if test $ac_cv_header_mach_mach_types_h = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_mach_mach_types_h" >&5
+$as_echo "$ac_cv_header_mach_mach_types_h" >&6; }
+if test "x$ac_cv_header_mach_mach_types_h" = x""yes; then
:
else
- { { echo "$as_me:$LINENO: error: cannot find Mach headers" >&5
-echo "$as_me: error: cannot find Mach headers" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: cannot find Mach headers" >&5
+$as_echo "$as_me: error: cannot find Mach headers" >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:$LINENO: checking for mach/mach_types.defs" >&5
-echo $ECHO_N "checking for mach/mach_types.defs... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for mach/mach_types.defs" >&5
+$as_echo_n "checking for mach/mach_types.defs... " >&6; }
if test "${ac_cv_header_mach_mach_types_defs+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -153,40 +165,40 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <mach/mach_types.defs>
_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
ac_cv_header_mach_mach_types_defs=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_mach_mach_types_defs=no
fi
+
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: $ac_cv_header_mach_mach_types_defs" >&5
-echo "${ECHO_T}$ac_cv_header_mach_mach_types_defs" >&6
-if test $ac_cv_header_mach_mach_types_defs = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_mach_mach_types_defs" >&5
+$as_echo "$ac_cv_header_mach_mach_types_defs" >&6; }
+if test "x$ac_cv_header_mach_mach_types_defs" = x""yes; then
:
else
- { { echo "$as_me:$LINENO: error: cannot find Mach .defs files" >&5
-echo "$as_me: error: cannot find Mach .defs files" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: cannot find Mach .defs files" >&5
+$as_echo "$as_me: error: cannot find Mach .defs files" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -194,10 +206,10 @@ fi
-echo "$as_me:$LINENO: checking for task_t in mach/mach_types.h" >&5
-echo $ECHO_N "checking for task_t in mach/mach_types.h... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for task_t in mach/mach_types.h" >&5
+$as_echo_n "checking for task_t in mach/mach_types.h... " >&6; }
if test "${libc_cv_mach_task_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -215,45 +227,42 @@ extern task_t foo;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
libc_cv_mach_task_t=task_t
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-libc_cv_mach_task_t=task_port_t
+ libc_cv_mach_task_t=task_port_t
fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: $libc_cv_mach_task_t" >&5
-echo "${ECHO_T}$libc_cv_mach_task_t" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_mach_task_t" >&5
+$as_echo "$libc_cv_mach_task_t" >&6; }
if test $libc_cv_mach_task_t != task_t; then
DEFINES="$DEFINES -Dtask_t=task_port_t"
fi
-echo "$as_me:$LINENO: checking for thread_t in mach/mach_types.h" >&5
-echo $ECHO_N "checking for thread_t in mach/mach_types.h... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for thread_t in mach/mach_types.h" >&5
+$as_echo_n "checking for thread_t in mach/mach_types.h... " >&6; }
if test "${libc_cv_mach_thread_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -271,46 +280,43 @@ extern thread_t foo;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
libc_cv_mach_thread_t=thread_t
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-libc_cv_mach_thread_t=thread_port_t
+ libc_cv_mach_thread_t=thread_port_t
fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: $libc_cv_mach_thread_t" >&5
-echo "${ECHO_T}$libc_cv_mach_thread_t" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_mach_thread_t" >&5
+$as_echo "$libc_cv_mach_thread_t" >&6; }
if test $libc_cv_mach_thread_t != thread_t; then
DEFINES="$DEFINES -Dthread_t=thread_port_t"
fi
-echo "$as_me:$LINENO: checking for creation_time in task_basic_info" >&5
-echo $ECHO_N "checking for creation_time in task_basic_info... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for creation_time in task_basic_info" >&5
+$as_echo_n "checking for creation_time in task_basic_info... " >&6; }
if test "${libc_cv_mach_task_creation_time+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -331,41 +337,38 @@ long s = i->creation_time.seconds;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
libc_cv_mach_task_creation_time=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-libc_cv_mach_task_creation_time=no
+ libc_cv_mach_task_creation_time=no
fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: $libc_cv_mach_task_creation_time" >&5
-echo "${ECHO_T}$libc_cv_mach_task_creation_time" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_mach_task_creation_time" >&5
+$as_echo "$libc_cv_mach_task_creation_time" >&6; }
if test $libc_cv_mach_task_creation_time = no; then
- { { echo "$as_me:$LINENO: error: you need Mach headers supporting task_info.creation_time" >&5
-echo "$as_me: error: you need Mach headers supporting task_info.creation_time" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: you need Mach headers supporting task_info.creation_time" >&5
+$as_echo "$as_me: error: you need Mach headers supporting task_info.creation_time" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -376,11 +379,11 @@ for ifc in mach mach4 \
memory_object memory_object_default default_pager \
i386/mach_i386 \
; do
- as_ac_Header=`echo "ac_cv_header_mach/${ifc}.defs" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for mach/${ifc}.defs" >&5
-echo $ECHO_N "checking for mach/${ifc}.defs... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ as_ac_Header=`$as_echo "ac_cv_header_mach/${ifc}.defs" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for mach/${ifc}.defs" >&5
+$as_echo_n "checking for mach/${ifc}.defs... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -390,66 +393,189 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <mach/${ifc}.defs>
_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
eval "$as_ac_Header=yes"
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_Header=no"
fi
+
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ if test "x$as_val" = x""yes; then
mach_interface_list="$mach_interface_list $ifc"
fi
done
if test "x$mach_interface_list" = x; then
- { { echo "$as_me:$LINENO: error: what manner of Mach is this?" >&5
-echo "$as_me: error: what manner of Mach is this?" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: what manner of Mach is this?" >&5
+$as_echo "$as_me: error: what manner of Mach is this?" >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
-if test "${ac_cv_prog_egrep+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+ $as_echo_n "(cached) " >&6
else
- if echo a | (grep -E '(a|b)') >/dev/null 2>&1
- then ac_cv_prog_egrep='grep -E'
- else ac_cv_prog_egrep='egrep'
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ ac_count=`expr $ac_count + 1`
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
- EGREP=$ac_cv_prog_egrep
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
-echo "$as_me:$LINENO: checking for host_page_size in mach_host.defs" >&5
-echo $ECHO_N "checking for host_page_size in mach_host.defs... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ ac_count=`expr $ac_count + 1`
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for host_page_size in mach_host.defs" >&5
+$as_echo_n "checking for host_page_size in mach_host.defs... " >&6; }
if test "${libc_cv_mach_host_page_size+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -469,8 +595,8 @@ fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_mach_host_page_size" >&5
-echo "${ECHO_T}$libc_cv_mach_host_page_size" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_mach_host_page_size" >&5
+$as_echo "$libc_cv_mach_host_page_size" >&6; }
if test $libc_cv_mach_host_page_size = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_HOST_PAGE_SIZE 1
@@ -478,10 +604,10 @@ _ACEOF
fi
-echo "$as_me:$LINENO: checking for mach/machine/ndr_def.h" >&5
-echo $ECHO_N "checking for mach/machine/ndr_def.h... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for mach/machine/ndr_def.h" >&5
+$as_echo_n "checking for mach/machine/ndr_def.h... " >&6; }
if test "${ac_cv_header_mach_machine_ndr_def_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -491,42 +617,42 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <mach/machine/ndr_def.h>
_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
ac_cv_header_mach_machine_ndr_def_h=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_mach_machine_ndr_def_h=no
fi
+
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: $ac_cv_header_mach_machine_ndr_def_h" >&5
-echo "${ECHO_T}$ac_cv_header_mach_machine_ndr_def_h" >&6
-if test $ac_cv_header_mach_machine_ndr_def_h = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_mach_machine_ndr_def_h" >&5
+$as_echo "$ac_cv_header_mach_machine_ndr_def_h" >&6; }
+if test "x$ac_cv_header_mach_machine_ndr_def_h" = x""yes; then
DEFINES="$DEFINES -DNDR_DEF_HEADER='<mach/machine/ndr_def.h>'"
else
- echo "$as_me:$LINENO: checking for machine/ndr_def.h" >&5
-echo $ECHO_N "checking for machine/ndr_def.h... $ECHO_C" >&6
+ { $as_echo "$as_me:$LINENO: checking for machine/ndr_def.h" >&5
+$as_echo_n "checking for machine/ndr_def.h... " >&6; }
if test "${ac_cv_header_machine_ndr_def_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -536,36 +662,36 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <machine/ndr_def.h>
_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
ac_cv_header_machine_ndr_def_h=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_machine_ndr_def_h=no
fi
+
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: $ac_cv_header_machine_ndr_def_h" >&5
-echo "${ECHO_T}$ac_cv_header_machine_ndr_def_h" >&6
-if test $ac_cv_header_machine_ndr_def_h = yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_machine_ndr_def_h" >&5
+$as_echo "$ac_cv_header_machine_ndr_def_h" >&6; }
+if test "x$ac_cv_header_machine_ndr_def_h" = x""yes; then
DEFINES="$DEFINES -DNDR_DEF_HEADER='<machine/ndr_def.h>'"
fi
@@ -574,10 +700,10 @@ fi
-echo "$as_me:$LINENO: checking for i386_io_perm_modify in mach_i386.defs" >&5
-echo $ECHO_N "checking for i386_io_perm_modify in mach_i386.defs... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for i386_io_perm_modify in mach_i386.defs" >&5
+$as_echo_n "checking for i386_io_perm_modify in mach_i386.defs... " >&6; }
if test "${libc_cv_mach_i386_ioports+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -597,8 +723,8 @@ fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_mach_i386_ioports" >&5
-echo "${ECHO_T}$libc_cv_mach_i386_ioports" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_mach_i386_ioports" >&5
+$as_echo "$libc_cv_mach_i386_ioports" >&6; }
if test $libc_cv_mach_i386_ioports = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_I386_IO_PERM_MODIFY 1
@@ -606,10 +732,10 @@ _ACEOF
fi
-echo "$as_me:$LINENO: checking for i386_set_gdt in mach_i386.defs" >&5
-echo $ECHO_N "checking for i386_set_gdt in mach_i386.defs... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for i386_set_gdt in mach_i386.defs" >&5
+$as_echo_n "checking for i386_set_gdt in mach_i386.defs... " >&6; }
if test "${libc_cv_mach_i386_gdt+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -629,8 +755,8 @@ fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_mach_i386_gdt" >&5
-echo "${ECHO_T}$libc_cv_mach_i386_gdt" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_mach_i386_gdt" >&5
+$as_echo "$libc_cv_mach_i386_gdt" >&6; }
if test $libc_cv_mach_i386_gdt = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_I386_SET_GDT 1
@@ -641,10 +767,10 @@ fi
# See if mig groks `retcode'.
-echo "$as_me:$LINENO: checking whether $MIG supports the retcode keyword" >&5
-echo $ECHO_N "checking whether $MIG supports the retcode keyword... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking whether $MIG supports the retcode keyword" >&5
+$as_echo_n "checking whether $MIG supports the retcode keyword... " >&6; }
if test "${hurd_cv_mig_retcode+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.defs <<\EOF
#include <mach/std_types.defs>
@@ -660,7 +786,7 @@ if { ac_try='CC="${CC}" ${MIG-false} -n conftest.defs 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
hurd_cv_mig_retcode=yes
else
@@ -668,8 +794,8 @@ else
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $hurd_cv_mig_retcode" >&5
-echo "${ECHO_T}$hurd_cv_mig_retcode" >&6
+{ $as_echo "$as_me:$LINENO: result: $hurd_cv_mig_retcode" >&5
+$as_echo "$hurd_cv_mig_retcode" >&6; }
if test $hurd_cv_mig_retcode = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_MIG_RETCODE 1
diff --git a/sysdeps/mach/hurd/.cvsignore b/sysdeps/mach/hurd/.cvsignore
deleted file mode 100644
index 1f69fd919a..0000000000
--- a/sysdeps/mach/hurd/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile
index 8677515cd9..95d7ba3800 100644
--- a/sysdeps/mach/hurd/Makefile
+++ b/sysdeps/mach/hurd/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1993,94,95,96,97,98,99,2000,2001,2002, 2003, 2004
+# Copyright (C) 1993,94,95,96,97,98,99,2000,2001,2002,2003,2004,2009
# Free Software Foundation, Inc.
# This file is part of the GNU C Library.
@@ -206,4 +206,9 @@ ifeq ($(subdir),sunrpc)
sysdep_headers += nfs/nfs.h
endif
+ifeq ($(subdir),socket)
+sysdep_headers += net/ethernet.h net/if_arp.h net/if_ether.h net/if_ppp.h \
+ net/route.h
+endif
+
endif # in-Makerules
diff --git a/sysdeps/mach/hurd/alpha/bits/sigcontext.h b/sysdeps/mach/hurd/alpha/bits/sigcontext.h
deleted file mode 100644
index 4f13a2c9b2..0000000000
--- a/sysdeps/mach/hurd/alpha/bits/sigcontext.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Machine-dependent signal context structure for GNU Hurd. Alpha version.
- Copyright (C) 1994,97,2001 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
-# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
-#endif
-
-#ifndef sc_alpha_thread_state
-
-/* Signal handlers are actually called:
- void handler (int sig, int code, struct sigcontext *scp); */
-
-/* State of this thread when the signal was taken. */
-struct sigcontext
- {
- /* These first members are machine-independent. */
-
- long int sc_onstack; /* Nonzero if running on sigstack. */
- __sigset_t sc_mask; /* Blocked signals to restore. */
-
- /* MiG reply port this thread is using. */
- unsigned long int sc_reply_port;
-
- /* Port this thread is doing an interruptible RPC on. */
- unsigned long int sc_intr_port;
-
- /* Error code associated with this signal (interpreted as `error_t'). */
- int sc_error;
-
- /* All following members are machine-dependent. The rest of this
- structure is written to be laid out identically to:
- {
- struct alpha_thread_state basic;
- struct alpha_exc_state exc;
- struct alpha_float_state fpu;
- }
- trampoline.c knows this, so it must be changed if this changes. */
-
-#define sc_alpha_thread_state sc_regs /* Beginning of correspondence. */
- long int sc_regs[31]; /* General registers $0..$30. */
- long int sc_pc; /* Program counter. */
-
- /* struct alpha_exc_state */
-#define sc_alpha_exc_state sc_badvaddr
- unsigned long int sc_badvaddr;
- unsigned int sc_cause; /* Machine-level trap code. */
-#define SC_CAUSE_SET_SSTEP 1
- int sc_used_fpa; /* Nonzero if FPU was used. */
-
- /* struct alpha_float_state
- This is only filled in if sc_used_fpa is nonzero. */
-#define sc_alpha_float_state sc_fpregs
- double sc_fpregs[31]; /* Floating point registers $f0..$f30. */
- long int sc_fpcsr; /* Floating point control/status register. */
- };
-
-#endif /* sc_alpha_thread_state */
diff --git a/sysdeps/mach/hurd/alpha/exc2signal.c b/sysdeps/mach/hurd/alpha/exc2signal.c
deleted file mode 100644
index 5f3fbbbbb1..0000000000
--- a/sysdeps/mach/hurd/alpha/exc2signal.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Translate Mach exception codes into signal numbers. Alpha version.
- Copyright (C) 1994,97,2002 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <hurd.h>
-#include <hurd/signal.h>
-#include <mach/exception.h>
-
-/* Translate the Mach exception codes, as received in an `exception_raise' RPC,
- into a signal number and signal subcode. */
-
-void
-_hurd_exception2signal (struct hurd_signal_detail *detail, int *signo)
-{
- detail->error = 0;
-
- switch (detail->exc)
- {
- default:
- *signo = SIGIOT;
- detail->code = detail->exc;
- break;
-
- case EXC_BAD_ACCESS:
- if (detail->exc_code == KERN_PROTECTION_FAILURE)
- *signo = SIGSEGV;
- else
- *signo = SIGBUS;
- detail->code = detail->exc_subcode;
- detail->error = detail->exc_code;
- break;
-
- case EXC_BAD_INSTRUCTION:
- *signo = SIGILL;
- detail->code = detail->exc_code;
- break;
-
- case EXC_ARITHMETIC:
- *signo = SIGFPE;
- detail->code = detail->exc_code;
- break;
- break;
-
- case EXC_EMULATION:
- /* 3.0 doesn't give this one, why, I don't know. */
- *signo = SIGEMT;
- detail->code = detail->exc_code;
- break;
-
- case EXC_SOFTWARE:
- *signo = SIGEMT;
- detail->code = detail->exc_code;
- break;
-
- case EXC_BREAKPOINT:
- *signo = SIGTRAP;
- detail->code = detail->exc_code;
- break;
- }
-}
diff --git a/sysdeps/mach/hurd/alpha/init-first.c b/sysdeps/mach/hurd/alpha/init-first.c
deleted file mode 100644
index 6e55225890..0000000000
--- a/sysdeps/mach/hurd/alpha/init-first.c
+++ /dev/null
@@ -1,302 +0,0 @@
-/* Initialization code run first thing by the ELF startup code. Alpha/Hurd.
- Copyright (C) 1995,96,97,98,99,2000,01,02,03 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <assert.h>
-#include <hurd.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-#include <sysdep.h>
-#include <set-hooks.h>
-#include "hurdstartup.h"
-#include "hurdmalloc.h" /* XXX */
-
-extern void __mach_init (void);
-extern void __init_misc (int, char **, char **);
-#ifdef USE_NONOPTION_FLAGS
-extern void __getopt_clean_environment (char **);
-#endif
-#ifndef SHARED
-extern void _dl_non_dynamic_init (void) internal_function;
-#endif
-extern void __libc_global_ctors (void);
-
-unsigned int __hurd_threadvar_max;
-unsigned long int __hurd_threadvar_stack_offset;
-unsigned long int __hurd_threadvar_stack_mask;
-
-#ifndef SHARED
-int __libc_enable_secure;
-#endif
-int __libc_multiple_libcs attribute_hidden = 1;
-
-extern int __libc_argc attribute_hidden;
-extern char **__libc_argv attribute_hidden;
-extern char **_dl_argv;
-
-void *(*_cthread_init_routine) (void); /* Returns new SP to use. */
-void (*_cthread_exit_routine) (int status) __attribute__ ((__noreturn__));
-
-/* Things that want to be run before _hurd_init or much anything else.
- Importantly, these are called before anything tries to use malloc. */
-DEFINE_HOOK (_hurd_preinit_hook, (void));
-
-
-/* We call this once the Hurd magic is all set up and we are ready to be a
- Posixoid program. This does the same things the generic version does. */
-static void
-posixland_init (int argc, char **argv, char **envp)
-{
- __libc_argc = argc;
- __libc_argv = argv;
- __environ = envp;
-
-#ifndef SHARED
- _dl_non_dynamic_init ();
-#endif
- __init_misc (argc, argv, envp);
-
-#ifdef USE_NONOPTION_FLAGS
- /* This is a hack to make the special getopt in GNU libc working. */
- __getopt_clean_environment (envp);
-#endif
-
-#ifdef SHARED
- __libc_global_ctors ();
-#endif
-}
-
-
-static void
-init1 (intptr_t *data)
-{
- int argc = (intptr_t) *data;
- char **argv = (char **) &data[1];
- char **envp = &argv[argc + 1];
- struct hurd_startup_data *d;
-
- while (*envp)
- ++envp;
- d = (void *) ++envp;
-
- /* If we are the bootstrap task started by the kernel,
- then after the environment pointers there is no Hurd
- data block; the argument strings start there. */
- /* OSF Mach starts the bootstrap task with argc == 0.
- XXX This fails if a non-bootstrap task gets started
- with argc == 0. */
- if (argc && (void *) d != argv[0])
- {
- _hurd_init_dtable = d->dtable;
- _hurd_init_dtablesize = d->dtablesize;
-
- {
- /* Check if the stack we are now on is different from
- the one described by _hurd_stack_{base,size}. */
-
- char dummy;
- const vm_address_t newsp = (vm_address_t) &dummy;
-
- if (d->stack_size != 0 && (newsp < d->stack_base ||
- newsp - d->stack_base > d->stack_size))
- /* The new stack pointer does not intersect with the
- stack the exec server set up for us, so free that stack. */
- __vm_deallocate (__mach_task_self (), d->stack_base, d->stack_size);
- }
- }
-
- if ((void *) d != argv[0] && (d->portarray || d->intarray))
- /* Initialize library data structures, start signal processing, etc. */
- _hurd_init (d->flags, argv,
- d->portarray, d->portarraysize,
- d->intarray, d->intarraysize);
-
-#ifndef SHARED
- __libc_enable_secure = d->flags & EXEC_SECURE;
-#endif
-}
-
-
-static inline void
-init (intptr_t *data)
-{
- int argc = *data;
- char **argv = (void *) (data + 1);
- char **envp = &argv[argc + 1];
- struct hurd_startup_data *d;
- unsigned long int threadvars[_HURD_THREADVAR_MAX];
-
- /* Provide temporary storage for thread-specific variables on the
- startup stack so the cthreads initialization code can use them
- for malloc et al, or so we can use malloc below for the real
- threadvars array. */
- memset (threadvars, 0, sizeof threadvars);
- __hurd_threadvar_stack_offset = (unsigned long int) threadvars;
-
- /* Since the cthreads initialization code uses malloc, and the
- malloc initialization code needs to get at the environment, make
- sure we can find it. We'll need to do this again later on since
- switching stacks changes the location where the environment is
- stored. */
- __environ = envp;
-
- while (*envp)
- ++envp;
- d = (void *) ++envp;
-
- /* The user might have defined a value for this, to get more variables.
- Otherwise it will be zero on startup. We must make sure it is set
- properly before before cthreads initialization, so cthreads can know
- how much space to leave for thread variables. */
- if (__hurd_threadvar_max < _HURD_THREADVAR_MAX)
- __hurd_threadvar_max = _HURD_THREADVAR_MAX;
-
-
- /* After possibly switching stacks, call `init1' (above) with the user
- code as the return address, and the argument data immediately above
- that on the stack. */
-
- if (_cthread_init_routine)
- {
- /* Initialize cthreads, which will allocate us a new stack to run on. */
- void *newsp = (*_cthread_init_routine) ();
- struct hurd_startup_data *od;
-
- void switch_stacks (void);
-
- /* Copy per-thread variables from that temporary
- area onto the new cthread stack. */
- memcpy (__hurd_threadvar_location_from_sp (0, newsp),
- threadvars, sizeof threadvars);
-
- /* Copy the argdata from the old stack to the new one. */
- newsp = memcpy (newsp - ((char *) &d[1] - (char *) data), data,
- (char *) d - (char *) data);
-
-#ifdef SHARED
- /* And readjust the dynamic linker's idea of where the argument
- vector lives. */
- assert (_dl_argv == argv);
- _dl_argv = (void *) ((int *) newsp + 1);
-#endif
-
- /* Set up the Hurd startup data block immediately following
- the argument and environment pointers on the new stack. */
- od = (newsp + ((char *) d - (char *) data));
- if ((void *) argv[0] == d)
- /* We were started up by the kernel with arguments on the stack.
- There is no Hurd startup data, so zero the block. */
- memset (od, 0, sizeof *od);
- else
- /* Copy the Hurd startup data block to the new stack. */
- *od = *d;
-
- /*
- Force NEWSP into sp and &init1 into pv, then branch to pv (call init1).
- */
- asm volatile ("lda $30,0(%0); lda $27,0(%1); jsr $26,($27)"
- : : "r" (newsp), "r" (&init1));
- }
- else
- {
- /* We are not using cthreads, so we will have just a single allocated
- area for the per-thread variables of the main user thread. */
- unsigned long int *array;
- unsigned int i;
-
- array = malloc (__hurd_threadvar_max * sizeof (unsigned long int));
- if (array == NULL)
- __libc_fatal ("Can't allocate single-threaded thread variables.");
-
- /* Copy per-thread variables from the temporary array into the
- newly malloc'd space. */
- memcpy (array, threadvars, sizeof threadvars);
- __hurd_threadvar_stack_offset = (unsigned long int) array;
- for (i = _HURD_THREADVAR_MAX; i < __hurd_threadvar_max; ++i)
- array[i] = 0;
-
- init1 (data);
- }
-}
-
-
-/* Do the first essential initializations that must precede all else. */
-static inline void
-first_init (void)
-{
- /* Initialize data structures so we can do RPCs. */
- __mach_init ();
-
- RUN_HOOK (_hurd_preinit_hook, ());
-}
-
-#ifdef SHARED
-/* This function is called specially by the dynamic linker to do early
- initialization of the shared C library before normal initializers
- expecting a Posixoid environment can run. It gets called with the
- stack set up just as the user will see it, so it can switch stacks. */
-
-void
-_dl_init_first (intptr_t argc, ...)
-{
- first_init ();
-
- init (&argc);
-}
-#endif
-
-
-#ifdef SHARED
-/* The regular posixland initialization is what goes into libc's
- normal initializer. */
-/* NOTE! The linker notices the magical name `_init' and sets the DT_INIT
- pointer in the dynamic section based solely on that. It is convention
- for this function to be in the `.init' section, but the symbol name is
- the only thing that really matters!! */
-strong_alias (posixland_init, _init);
-
-void
-__libc_init_first (int argc, char **argv, char **envp)
-{
- /* Everything was done in the shared library initializer, _init. */
-}
-#else
-strong_alias (posixland_init, __libc_init_first);
-
-
-void
-_hurd_stack_setup (volatile intptr_t argc, ...)
-{
- first_init ();
-
- _hurd_startup ((void **) &argc, &init);
-}
-#endif
-
-
-/* This function is defined here so that if this file ever gets into
- ld.so we will get a link error. Having this file silently included
- in ld.so causes disaster, because the _init definition above will
- cause ld.so to gain an init function, which is not a cool thing. */
-
-void
-_dl_start (void)
-{
- abort ();
-}
diff --git a/sysdeps/mach/hurd/alpha/intr-msg.h b/sysdeps/mach/hurd/alpha/intr-msg.h
deleted file mode 100644
index 4f172124e3..0000000000
--- a/sysdeps/mach/hurd/alpha/intr-msg.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Machine-dependent details of interruptible RPC messaging. Alpha version.
- Copyright (C) 2002 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define INTR_MSG_TRAP(msg, option, send_size, rcv_size, rcv_name, timeout, notify) \
-({ \
- error_t err; \
- asm (".globl _hurd_intr_rpc_msg_do_trap\n" \
- ".globl _hurd_intr_rpc_msg_in_trap\n" \
- " mov %1, $16\n" \
- " mov %2, $17\n" \
- " mov %3, $18\n" \
- " mov %4, $19\n" \
- " mov %5, $20\n" \
- " mov %6, $21\n" \
- " mov %7, $1\n" \
- " lda $0, -25\n" \
- "_hurd_intr_rpc_msg_do_trap: callsys\n" \
- "_hurd_intr_rpc_msg_in_trap: ret\n" \
- : "=r" (err) \
- : "r" (msg), "r" (option), "r" (send_size), "r" (rcv_size), \
- "r" (rcv_name), "r" (timeout), "r" (notify) \
- : "16", "17", "18", "19", "20", "21", "1", "0"); \
- err; \
-})
-
-static void inline
-INTR_MSG_BACK_OUT (struct alpha_thread_state *state)
-{
- return;
-}
-
-#include "hurdfault.h"
-
-/* This cannot be an inline function because it calls setjmp. */
-#define SYSCALL_EXAMINE(state, callno) \
-({ \
- u_int32_t *p = (void *) ((state)->pc - 4); \
- int result; \
- _hurdsig_catch_memory_fault (p) ? 0 : \
- ({ \
- result = (*p == 0x00000083); \
- _hurdsig_end_catch_fault (); \
- if (result) \
- /* The PC is just after a `callsys' instruction. \
- This is a system call in progress; v0 holds the call number. */ \
- *(callno) = (state)->r0; \
- result; \
- }); \
-})
-
-struct mach_msg_trap_args
- {
- /* This is the order of arguments to mach_msg_trap. */
- mach_msg_header_t *msg;
- mach_msg_option_t option;
- mach_msg_size_t send_size;
- mach_msg_size_t rcv_size;
- mach_port_t rcv_name;
- mach_msg_timeout_t timeout;
- mach_port_t notify;
- };
-
-/* This cannot be an inline function because it calls setjmp. */
-#define MSG_EXAMINE(state, msgid, rcv_name, send_name, option, timeout) \
-({ \
- mach_msg_header_t *msg = (mach_msg_header_t *) (state)->r16; \
- *(option) = (mach_msg_option_t) (state)->r17; \
- *(rcv_name) = (mach_port_t) (state)->r18; \
- *(timeout) = (mach_msg_timeout_t) (state)->r19; \
- (msg == 0) ? \
- ({ \
- *(send_name) = MACH_PORT_NULL; \
- *(msgid) = 0; \
- 0; \
- }) : \
- (_hurdsig_catch_memory_fault (msg) ? -1 : \
- ({ \
- *(send_name) = msg->msgh_remote_port; \
- *(msgid) = msg->msgh_id; \
- _hurdsig_end_catch_fault (); \
- 0; \
- }) \
- ); \
-})
diff --git a/sysdeps/mach/hurd/alpha/longjmp-ts.c b/sysdeps/mach/hurd/alpha/longjmp-ts.c
deleted file mode 100644
index f472dbcb30..0000000000
--- a/sysdeps/mach/hurd/alpha/longjmp-ts.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Perform a `longjmp' on a Mach thread_state. Alpha version.
- Copyright (C) 2002, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <hurd/signal.h>
-#include <setjmp.h>
-#include <jmpbuf-offsets.h>
-#include <mach/thread_status.h>
-
-
-/* Set up STATE to do the equivalent of `longjmp (ENV, VAL);'. */
-
-void
-_hurd_longjmp_thread_state (void *state, jmp_buf env, int val)
-{
- struct alpha_thread_state *const ts = state;
-
- ts->r9 = env[0].__jmpbuf[JB_S0];
- ts->r10 = env[0].__jmpbuf[JB_S1];
- ts->r11 = env[0].__jmpbuf[JB_S2];
- ts->r12 = env[0].__jmpbuf[JB_S3];
- ts->r13 = env[0].__jmpbuf[JB_S4];
- ts->r13 = env[0].__jmpbuf[JB_S5];
- ts->pc = env[0].__jmpbuf[JB_PC];
- ts->r15 = env[0].__jmpbuf[JB_FP];
- ts->r30 = env[0].__jmpbuf[JB_SP];
- ts->r0 = val ?: 1;
-
- /* XXX
- To mimic longjmp we ought to restore some fp registers too.
- But those registers are in struct alpha_float_state.
- The only use of this is in fork, and it probably won't matter.
- */
-}
diff --git a/sysdeps/mach/hurd/alpha/sigreturn.c b/sysdeps/mach/hurd/alpha/sigreturn.c
deleted file mode 100644
index 182d4cbd84..0000000000
--- a/sysdeps/mach/hurd/alpha/sigreturn.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/* Return from signal handler in GNU C library for Hurd. Alpha version.
- Copyright (C) 1994,95,97,98,2002 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <hurd.h>
-#include <hurd/signal.h>
-#include <hurd/threadvar.h>
-#include <hurd/msg.h>
-#include <stdlib.h>
-#include <string.h>
-
-int
-__sigreturn (struct sigcontext *scp)
-{
- struct hurd_sigstate *ss;
- mach_port_t *reply_port;
-
- if (scp == NULL || (scp->sc_mask & _SIG_CANT_MASK))
- {
- errno = EINVAL;
- return -1;
- }
-
- ss = _hurd_self_sigstate ();
- __spin_lock (&ss->lock);
-
- /* Restore the set of blocked signals, and the intr_port slot. */
- ss->blocked = scp->sc_mask;
- ss->intr_port = scp->sc_intr_port;
-
- /* Check for pending signals that were blocked by the old set. */
- if (ss->pending & ~ss->blocked)
- {
- /* There are pending signals that just became unblocked. Wake up the
- signal thread to deliver them. But first, squirrel away SCP where
- the signal thread will notice it if it runs another handler, and
- arrange to have us called over again in the new reality. */
- ss->context = scp;
- /* Clear the intr_port slot, since we are not in fact doing
- an interruptible RPC right now. If SS->intr_port is not null,
- the SCP context is doing an interruptible RPC, but the signal
- thread will examine us while we are blocked in the sig_post RPC. */
- ss->intr_port = MACH_PORT_NULL;
- __spin_unlock (&ss->lock);
- __msg_sig_post (_hurd_msgport, 0, 0, __mach_task_self ());
- /* If a pending signal was handled, sig_post never returned. */
- __spin_lock (&ss->lock);
- }
-
- if (scp->sc_onstack)
- {
- ss->sigaltstack.ss_flags &= ~SS_ONSTACK; /* XXX threadvars */
- /* XXX cannot unlock until off sigstack */
- abort ();
- }
- else
- __spin_unlock (&ss->lock);
-
- /* Destroy the MiG reply port used by the signal handler, and restore the
- reply port in use by the thread when interrupted. */
- reply_port =
- (mach_port_t *) __hurd_threadvar_location (_HURD_THREADVAR_MIG_REPLY);
- if (*reply_port)
- __mach_port_destroy (__mach_task_self (), *reply_port);
- *reply_port = scp->sc_reply_port;
-
- if (scp->sc_used_fpa)
- {
- /* Restore FPU state. */
-
- /* Restore the floating-point control/status register.
- We must do this first because the compiler will need
- a temporary FP register for the load. */
- asm volatile ("mt_fpcr %0" : : "f" (scp->sc_fpcsr));
-
- /* Restore floating-point registers. */
-#define restore_fpr(n) \
- asm volatile ("ldt $f" #n ",%0" : : "m" (scp->sc_fpregs[n]))
- restore_fpr (0);
- restore_fpr (1);
- restore_fpr (2);
- restore_fpr (3);
- restore_fpr (4);
- restore_fpr (5);
- restore_fpr (6);
- restore_fpr (7);
- restore_fpr (8);
- restore_fpr (9);
- restore_fpr (10);
- restore_fpr (11);
- restore_fpr (12);
- restore_fpr (13);
- restore_fpr (14);
- restore_fpr (15);
- restore_fpr (16);
- restore_fpr (17);
- restore_fpr (18);
- restore_fpr (19);
- restore_fpr (20);
- restore_fpr (21);
- restore_fpr (22);
- restore_fpr (23);
- restore_fpr (24);
- restore_fpr (25);
- restore_fpr (26);
- restore_fpr (27);
- restore_fpr (28);
- restore_fpr (29);
- restore_fpr (30);
- }
-
- /* Load all the registers from the sigcontext. */
-#define restore_gpr(n) \
- asm volatile ("ldq $" #n ",%0" : : "m" (scpreg->sc_regs[n]))
-
- {
- /* The `rei' PAL pseudo-instruction restores registers $2..$7, the PC
- and processor status. So we can use these few registers for our
- working variables. Unfortunately, it finds its data on the stack
- and merely pops the SP ($30) over the words of state restored,
- allowing no other option for the new SP value. So we must push the
- registers and PSW it will to restore, onto the user's stack and let
- it pop them from there. */
- register const struct sigcontext *const scpreg asm ("$2") = scp;
- register integer_t *usp asm ("$3") = (integer_t *) scpreg->sc_regs[30];
- register integer_t usp_align asm ("$4");
-
- /* Push an 8-word "trap frame" onto the user stack for `rei':
- registers $2..$7, the PC, and the PSW. */
-
- register struct rei_frame
- {
- integer_t regs[5], pc, ps;
- } *rei_frame asm ("$5");
-
- usp -= 8;
- /* `rei' demands that the stack be aligned to a 64 byte (8 word)
- boundary; bits 61..56 of the PSW are OR'd back into the SP value
- after popping the 8-word trap frame, so we store (sp % 64)
- there and this restores the original user SP. */
- usp_align = (integer_t) usp & 63L;
- rei_frame = (void *) ((integer_t) usp & ~63L);
-
- /* Copy the registers and PC from the sigcontext. */
- memcpy (rei_frame->regs, &scpreg->sc_regs[2], sizeof rei_frame->regs);
- rei_frame->pc = scpreg->sc_pc;
-
- /* Compute the new PS value to be restored. `rei' adds the value at
- bits 61..56 to the SP to compensate for the alignment above that
- cleared the low 6 bits; bits 5..3 are the new mode/privilege level
- (must be >= current mode; 3 == user mode); bits 2..0 are "software",
- unused by the processor or kernel (XXX should trampoline save these?
- How?); in user mode, `rei' demands that all other bits be zero. */
- rei_frame->ps = (usp_align << 56) | (3 << 3); /* XXX low 3 bits??? */
-
- /* Restore the other general registers: everything except $2..$7, which
- are in the `rei' trap frame we set up above, and $30, which is the
- SP which is popped by `rei'. */
- restore_gpr (1);
- restore_gpr (8);
- restore_gpr (9);
- restore_gpr (10);
- restore_gpr (11);
- restore_gpr (12);
- restore_gpr (13);
- restore_gpr (14);
- restore_gpr (15);
- restore_gpr (16);
- restore_gpr (17);
- restore_gpr (18);
- restore_gpr (19);
- restore_gpr (20);
- restore_gpr (21);
- restore_gpr (22);
- restore_gpr (23);
- restore_gpr (24);
- restore_gpr (25);
- restore_gpr (26);
- restore_gpr (27);
- restore_gpr (28);
- restore_gpr (29);
-
- /* Switch the stack pointer to the trap frame set up on
- the user stack and do the magical `rei' PAL call. */
- asm volatile ("mov %0, $30\n"
- "call_pal %1"
- : : "r" (rei_frame), "i" (63)); /* PAL_rti */
- /* Firewall. */
- asm volatile ("halt");
- }
-
- /* NOTREACHED */
- return -1;
-}
-
-weak_alias (__sigreturn, sigreturn)
diff --git a/sysdeps/mach/hurd/alpha/trampoline.c b/sysdeps/mach/hurd/alpha/trampoline.c
deleted file mode 100644
index 2360cbb469..0000000000
--- a/sysdeps/mach/hurd/alpha/trampoline.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/* Set thread_state for sighandler, and sigcontext to recover. Alpha version.
- Copyright (C) 1994,95,97,98,2002 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <hurd/signal.h>
-#include "thread_state.h"
-#include "hurdfault.h"
-#include <assert.h>
-
-struct mach_msg_trap_args
- {
- /* This is the order of arguments to mach_msg_trap. */
- mach_msg_header_t *msg;
- mach_msg_option_t option;
- mach_msg_size_t send_size;
- mach_msg_size_t rcv_size;
- mach_port_t rcv_name;
- mach_msg_timeout_t timeout;
- mach_port_t notify;
- };
-
-
-struct sigcontext *
-_hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler,
- int signo, struct hurd_signal_detail *detail,
- int rpc_wait, struct machine_thread_all_state *state)
-{
- __label__ trampoline, rpc_wait_trampoline;
- void *sigsp;
- struct sigcontext *scp;
-
- if (ss->context)
- {
- /* We have a previous sigcontext that sigreturn was about
- to restore when another signal arrived. We will just base
- our setup on that. */
- if (! _hurdsig_catch_memory_fault (ss->context))
- {
- memcpy (&state->basic, &ss->context->sc_alpha_thread_state,
- sizeof (state->basic));
- memcpy (&state->exc, &ss->context->sc_alpha_exc_state,
- sizeof (state->exc));
- state->set = (1 << ALPHA_THREAD_STATE) | (1 << ALPHA_EXC_STATE);
- if (state->exc.used_fpa)
- {
- memcpy (&state->fpu, &ss->context->sc_alpha_float_state,
- sizeof (state->fpu));
- state->set |= (1 << ALPHA_FLOAT_STATE);
- }
- assert (! rpc_wait);
- /* The intr_port slot was cleared before sigreturn sent us the
- sig_post that made us notice this pending signal, so
- _hurd_internal_post_signal wouldn't do interrupt_operation.
- After we return, our caller will set SCP->sc_intr_port (in the
- new context) from SS->intr_port and clear SS->intr_port. Now
- that we are restoring this old context recorded by sigreturn,
- we want to restore its intr_port too; so store it in
- SS->intr_port now, so it will end up in SCP->sc_intr_port
- later. */
- ss->intr_port = ss->context->sc_intr_port;
- }
- _hurdsig_end_catch_fault ();
-
- /* If the sigreturn context was bogus, just ignore it. */
- ss->context = NULL;
- }
- else if (! machine_get_basic_state (ss->thread, state))
- return NULL;
-
- if ((ss->actions[signo].sa_flags & SA_ONSTACK) &&
- !(ss->sigaltstack.ss_flags & (SS_DISABLE|SS_ONSTACK)))
- {
- sigsp = ss->sigaltstack.ss_sp + ss->sigaltstack.ss_size;
- ss->sigaltstack.ss_flags |= SS_ONSTACK;
- /* XXX need to set up base of new stack for
- per-thread variables, cthreads. */
- }
- else
- sigsp = (char *) state->basic.SP;
-
- /* Set up the sigcontext structure on the stack. This is all the stack
- needs, since the args are passed in registers (below). */
- sigsp -= sizeof (*scp);
- scp = sigsp;
-
- if (_hurdsig_catch_memory_fault (scp))
- {
- /* We got a fault trying to write the stack frame.
- We cannot set up the signal handler.
- Returning NULL tells our caller, who will nuke us with a SIGILL. */
- return NULL;
- }
- else
- {
- /* Set up the sigcontext from the current state of the thread. */
-
- scp->sc_onstack = ss->sigaltstack.ss_flags & SS_ONSTACK ? 1 : 0;
-
- /* struct sigcontext is laid out so that starting at sc_regs
- mimics a struct alpha_thread_state. */
- memcpy (&scp->sc_alpha_thread_state,
- &state->basic, sizeof (state->basic));
-
- /* struct sigcontext is laid out so that starting at sc_badvaddr
- mimics a struct mips_exc_state. */
- if (! machine_get_state (ss->thread, state, ALPHA_EXC_STATE,
- &state->exc, &scp->sc_alpha_exc_state,
- sizeof (state->exc)))
- return NULL;
-
- if (state->exc.used_fpa &&
- /* struct sigcontext is laid out so that starting at sc_fpregs
- mimics a struct alpha_float_state. This state
- is only meaningful if the coprocessor was used. */
- ! machine_get_state (ss->thread, state, ALPHA_FLOAT_STATE,
- &state->fpu,
- &scp->sc_alpha_float_state,
- sizeof (state->fpu)))
- return NULL;
-
- _hurdsig_end_catch_fault ();
- }
-
- /* Modify the thread state to call the trampoline code on the new stack. */
- if (rpc_wait)
- {
- /* The signalee thread was blocked in a mach_msg_trap system call,
- still waiting for a reply. We will have it run the special
- trampoline code which retries the message receive before running
- the signal handler.
-
- To do this we change the OPTION argument in its registers to
- enable only message reception, since the request message has
- already been sent. */
-
- /* The system call arguments are stored in consecutive registers
- starting with a0 ($16). */
- struct mach_msg_trap_args *args = (void *) &state->basic.r16;
-
- assert (args->option & MACH_RCV_MSG);
- /* Disable the message-send, since it has already completed. The
- calls we retry need only wait to receive the reply message. */
- args->option &= ~MACH_SEND_MSG;
-
- /* Limit the time to receive the reply message, in case the server
- claimed that `interrupt_operation' succeeded but in fact the RPC
- is hung. */
- args->option |= MACH_RCV_TIMEOUT;
- args->timeout = _hurd_interrupted_rpc_timeout;
-
- state->basic.pc = (long int) &&rpc_wait_trampoline;
- /* After doing the message receive, the trampoline code will need to
- update the v0 ($0) value to be restored by sigreturn. To simplify
- the assembly code, we pass the address of its slot in SCP to the
- trampoline code in at ($28). */
- state->basic.r28 = (long int) &scp->sc_regs[0];
- /* We must preserve the mach_msg_trap args in a0..a5 and t0
- ($16..$21, $1). Pass the handler args to the trampoline code in
- t8..t10 ($22.$24). */
- state->basic.r22 = signo;
- state->basic.r23 = detail->code;
- state->basic.r24 = (long int) scp;
- }
- else
- {
- state->basic.pc = (long int) &&trampoline;
- state->basic.r16 = signo;
- state->basic.r17 = detail->code;
- state->basic.r18 = (long int) scp;
- }
-
- state->basic.r30 = (long int) sigsp; /* $30 is the stack pointer. */
-
- /* We pass the handler function to the trampoline code in ra ($26). */
- state->basic.r26 = (long int) handler;
- /* In the callee-saved register t12/pv ($27), we store the
- address of __sigreturn itself, for the trampoline code to use. */
- state->basic.r27 = (long int) &__sigreturn;
- /* In the callee-saved register t11/ai ($25), we save the SCP value to pass
- to __sigreturn after the handler returns. */
- state->basic.r25 = (long int) scp;
-
- return scp;
-
- /* The trampoline code follows. This is not actually executed as part of
- this function, it is just convenient to write it that way. */
-
- rpc_wait_trampoline:
- /* This is the entry point when we have an RPC reply message to receive
- before running the handler. The MACH_MSG_SEND bit has already been
- cleared in the OPTION argument in our registers. For our convenience,
- at ($28) points to the sc_regs[0] member of the sigcontext (saved v0
- ($0)). */
- asm volatile
- (/* Retry the interrupted mach_msg system call. */
- "lda $0, -25($31)\n" /* mach_msg_trap */
- "callsys\n" /* Magic system call instruction. */
- /* When the sigcontext was saved, v0 was MACH_RCV_INTERRUPTED. But
- now the message receive has completed and the original caller of
- the RPC (i.e. the code running when the signal arrived) needs to
- see the final return value of the message receive in v0. So
- store the new v0 value into the sc_regs[0] member of the sigcontext
- (whose address is in at to make this code simpler). */
- "stq $0, 0($28)\n"
- /* Since the argument registers needed to have the mach_msg_trap
- arguments, we've stored the arguments to the handler function
- in registers t8..t10 ($22..$24). */
- "mov $22, $16\n"
- "mov $23, $17\n"
- "mov $24, $18\n");
-
- trampoline:
- /* Entry point for running the handler normally. The arguments to the
- handler function are already in the standard registers:
-
- a0 SIGNO
- a1 SIGCODE
- a2 SCP
-
- t12 also contains SCP; this value is callee-saved (and so should not get
- clobbered by running the handler). We use this saved value to pass to
- __sigreturn, so the handler can clobber the argument registers if it
- likes. */
- /* Call the handler function, saving return address in ra ($26). */
- asm volatile ("jsr $26, ($26)");
- /* Reset gp ($29) from the return address (here) in ra ($26). */
- asm volatile ("ldgp $29, 0($26)");
- asm volatile ("mov $25, $16"); /* Move saved SCP to argument register. */
- /* Call __sigreturn (SCP); this cannot return. */
- asm volatile ("jmp $31, ($27)");
-
- /* NOTREACHED */
- return NULL;
-}
diff --git a/sysdeps/mach/hurd/bits/libc-lock.h b/sysdeps/mach/hurd/bits/libc-lock.h
index 3bd037a3bd..013615e573 100644
--- a/sysdeps/mach/hurd/bits/libc-lock.h
+++ b/sysdeps/mach/hurd/bits/libc-lock.h
@@ -34,6 +34,7 @@ typedef struct
void *owner;
int count;
} __libc_lock_recursive_t;
+typedef __libc_lock_recursive_t __rtld_lock_recursive_t;
#define __libc_lock_owner_self() ((void *) __hurd_threadvar_location (0))
@@ -124,6 +125,8 @@ typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t;
#define __rtld_lock_init_recursive(NAME) \
__libc_lock_init_recursive (NAME)
+#define __rtld_lock_initialize(NAME) \
+ (void) ((NAME) = (__rtld_lock_recursive_t) _RTLD_LOCK_RECURSIVE_INITIALIZER)
#define __rtld_lock_trylock_recursive(NAME) \
__libc_lock_trylock_recursive (NAME)
#define __rtld_lock_lock_recursive(NAME) \
diff --git a/sysdeps/mach/hurd/bits/posix_opt.h b/sysdeps/mach/hurd/bits/posix_opt.h
index 6747bc276e..775c921eeb 100644
--- a/sysdeps/mach/hurd/bits/posix_opt.h
+++ b/sysdeps/mach/hurd/bits/posix_opt.h
@@ -1,5 +1,5 @@
/* Define POSIX options for GNU/Hurd.
- Copyright (C) 1998,2000,2001,2002,2006 Free Software Foundation, Inc.
+ Copyright (C) 1998,2000,2001,2002,2006,2009 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
@@ -35,19 +35,19 @@
#undef _POSIX_SYNCHRONIZED_IO
/* The fsync function is present. */
-#define _POSIX_FSYNC 200112L
+#define _POSIX_FSYNC 200809L
/* Mapping of files to memory is supported. */
-#define _POSIX_MAPPED_FILES 200112L
+#define _POSIX_MAPPED_FILES 200809L
/* Locking of all memory could be supported in future. */
#define _POSIX_MEMLOCK 0
/* Locking of ranges of memory is supported. */
-#define _POSIX_MEMLOCK_RANGE 200112L
+#define _POSIX_MEMLOCK_RANGE 200809L
/* Setting of memory protections is supported. */
-#define _POSIX_MEMORY_PROTECTION 200112L
+#define _POSIX_MEMORY_PROTECTION 200809L
/* Elements of the `c_cc' member of `struct termios' structure
can be disabled by using the value _POSIX_VDISABLE. */
@@ -66,7 +66,7 @@
/* We have the reentrant functions described in POSIX. */
#define _POSIX_REENTRANT_FUNCTIONS 1
-#define _POSIX_THREAD_SAFE_FUNCTIONS 200112L
+#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
/* These are all things that won't be supported when _POSIX_THREADS is not. */
#define _POSIX_THREAD_PRIORITY_SCHEDULING -1
@@ -112,7 +112,7 @@
#define _POSIX_TIMEOUTS -1
/* The `spawn' function family is supported. */
-#define _POSIX_SPAWN 200112L
+#define _POSIX_SPAWN 200809L
/* We do not have POSIX timers, but could in future without ABI change. */
#define _POSIX_TIMERS 0
@@ -130,19 +130,19 @@
#define _POSIX_MONOTONIC_CLOCK 0
/* The clock selection interfaces are available. */
-#define _POSIX_CLOCK_SELECTION 200112L
+#define _POSIX_CLOCK_SELECTION 200809L
/* Advisory information interfaces could be available in future. */
#define _POSIX_ADVISORY_INFO 0
/* IPv6 support is available. */
-#define _POSIX_IPV6 200112L
+#define _POSIX_IPV6 200809L
/* Raw socket support is available. */
-#define _POSIX_RAW_SOCKETS 200112L
+#define _POSIX_RAW_SOCKETS 200809L
/* We have at least one terminal. */
-#define _POSIX2_CHAR_TERM 200112L
+#define _POSIX2_CHAR_TERM 200809L
/* Neither process nor thread sporadic server interfaces is available. */
#define _POSIX_SPORADIC_SERVER -1
diff --git a/sysdeps/mach/hurd/bits/stat.h b/sysdeps/mach/hurd/bits/stat.h
index c3f96660cc..b64a658fbd 100644
--- a/sysdeps/mach/hurd/bits/stat.h
+++ b/sysdeps/mach/hurd/bits/stat.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1992,93,94,96,97,99,2000,2005 Free Software Foundation, Inc.
+/* Copyright (C) 1992-1994,1996,1997,1999,2000,2005,2010
+ 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
@@ -16,10 +17,13 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SYS_STAT_H
+#if !defined _SYS_STAT_H && !defined _FCNTL_H
# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
#endif
+#ifndef _BITS_STAT_H
+#define _BITS_STAT_H 1
+
#include <bits/types.h>
/* NOTE: The size of this structure (32 ints) is known in
@@ -192,5 +196,7 @@ struct stat64
/* Default file creation mask (umask). */
#ifdef __USE_BSD
-#define CMASK 0022
+# define CMASK 0022
#endif
+
+#endif /* bits/stat.h */
diff --git a/sysdeps/mach/hurd/configure b/sysdeps/mach/hurd/configure
index 959a779fa5..ebf8bb03a5 100755..100644
--- a/sysdeps/mach/hurd/configure
+++ b/sysdeps/mach/hurd/configure
@@ -13,8 +13,8 @@ _ACEOF
inhibit_glue=yes
if test "x$prefix" != x; then
- { echo "$as_me:$LINENO: WARNING: --prefix= (empty) is required for GNU/Hurd to work normally" >&5
-echo "$as_me: WARNING: --prefix= (empty) is required for GNU/Hurd to work normally" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: --prefix= (empty) is required for GNU/Hurd to work normally" >&5
+$as_echo "$as_me: WARNING: --prefix= (empty) is required for GNU/Hurd to work normally" >&2;}
fi
case "$machine" in
@@ -28,10 +28,10 @@ case "$machine" in
esac
-echo "$as_me:$LINENO: checking Hurd header version" >&5
-echo $ECHO_N "checking Hurd header version... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking Hurd header version" >&5
+$as_echo_n "checking Hurd header version... " >&6; }
if test "${libc_cv_hurd_version+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -53,40 +53,37 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
libc_cv_hurd_version=ok
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-libc_cv_hurd_version=bad
+ libc_cv_hurd_version=bad
fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: $libc_cv_hurd_version" >&5
-echo "${ECHO_T}$libc_cv_hurd_version" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_hurd_version" >&5
+$as_echo "$libc_cv_hurd_version" >&6; }
if test "x$libc_cv_hurd_version" != xok; then
- { { echo "$as_me:$LINENO: error: Hurd headers not installed or too old" >&5
-echo "$as_me: error: Hurd headers not installed or too old" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: Hurd headers not installed or too old" >&5
+$as_echo "$as_me: error: Hurd headers not installed or too old" >&2;}
{ (exit 1); exit 1; }; }
fi
diff --git a/sysdeps/mach/hurd/getcwd.c b/sysdeps/mach/hurd/getcwd.c
index 7e07e6b404..7da677eec9 100644
--- a/sysdeps/mach/hurd/getcwd.c
+++ b/sysdeps/mach/hurd/getcwd.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,92,93,94,95,96,97,98,2002,04 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,94,95,96,97,98,2002,2004,2009
+ 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
@@ -60,7 +61,6 @@ _hurd_canonicalize_directory_name_internal (file_t thisdir,
__mach_port_deallocate (__mach_task_self (), thisid);
__mach_port_deallocate (__mach_task_self (), thisdevid);
__mach_port_deallocate (__mach_task_self (), rootid);
- __mach_port_deallocate (__mach_task_self (), rootdevid);
if (dirbuf != NULL)
__vm_deallocate (__mach_task_self (),
diff --git a/sysdeps/mach/hurd/mkdirat.c b/sysdeps/mach/hurd/mkdirat.c
index 321d59f2fd..a300745690 100644
--- a/sysdeps/mach/hurd/mkdirat.c
+++ b/sysdeps/mach/hurd/mkdirat.c
@@ -22,6 +22,7 @@
#include <stddef.h>
#include <sys/stat.h>
#include <hurd.h>
+#include <hurd/fd.h>
int
mkdirat (fd, path, mode)
@@ -31,7 +32,7 @@ mkdirat (fd, path, mode)
{
error_t err;
const char *name;
- file_t parent = __directory_name_split (path, (char **) &name);
+ file_t parent = __directory_name_split_at (fd, path, (char **) &name);
if (parent == MACH_PORT_NULL)
return -1;
err = __dir_mkdir (parent, name, mode & ~_hurd_umask);
diff --git a/sysdeps/mach/strerror_l.c b/sysdeps/mach/strerror_l.c
new file mode 100644
index 0000000000..ccd3bad7ed
--- /dev/null
+++ b/sysdeps/mach/strerror_l.c
@@ -0,0 +1,102 @@
+/* strerror_l - Get errno description string in given locale. Mach version.
+ Copyright (C) 2007, 2008 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <libintl.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <mach/error.h>
+#include <errorlib.h>
+#include <sys/param.h>
+
+
+static __thread char *last_value;
+
+
+static const char *
+translate (const char *str, locale_t loc)
+{
+ locale_t oldloc = __uselocale (loc);
+ const char *res = _(str);
+ __uselocale (oldloc);
+ return res;
+}
+
+
+/* Return a string describing the errno code in ERRNUM. */
+char *
+strerror_l (int errnum, locale_t loc)
+{
+ int system;
+ int sub;
+ int code;
+ const struct error_system *es;
+ extern void __mach_error_map_compat (int *);
+
+ __mach_error_map_compat (&errnum);
+
+ system = err_get_system (errnum);
+ sub = err_get_sub (errnum);
+ code = err_get_code (errnum);
+
+ if (system > err_max_system || ! __mach_error_systems[system].bad_sub)
+ {
+ free (last_value);
+ if (__asprintf (&last_value, "%s%X",
+ translate ("Error in unknown error system: ", loc),
+ errnum) == -1)
+ last_value = NULL;
+
+ return last_value;
+ }
+
+ es = &__mach_error_systems[system];
+
+ if (sub >= es->max_sub)
+ return (char *) translate (es->bad_sub, loc);
+
+ if (code >= es->subsystem[sub].max_code)
+ {
+ free (last_value);
+ if (__asprintf (&last_value, "%s%s %d",
+ translate ("Unknown error ", loc),
+ translate (es->subsystem[sub].subsys_name, loc),
+ errnum) == -1)
+ last_value = NULL;
+
+ return last_value;
+ }
+
+ return (char *) translate (es->subsystem[sub].codes[code], loc);
+}
+
+
+#ifdef _LIBC
+# ifdef _LIBC_REENTRANT
+/* This is called when a thread is exiting to free the last_value string. */
+static void __attribute__ ((section ("__libc_thread_freeres_fn")))
+strerror_thread_freeres (void)
+{
+ free (last_value);
+}
+text_set_element (__libc_thread_subfreeres, strerror_thread_freeres);
+text_set_element (__libc_subfreeres, strerror_thread_freeres);
+# endif
+#endif
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index 97f3af9938..62c38f69be 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -714,16 +714,13 @@ gaih_inet (const char *name, const struct gaih_service *service,
status = DL_CALL_FCT (fct4, (name, pat, tmpbuf,
tmpbuflen, &rc, &herrno,
NULL));
+ if (status == NSS_STATUS_SUCCESS)
+ break;
if (status != NSS_STATUS_TRYAGAIN
|| rc != ERANGE || herrno != NETDB_INTERNAL)
{
- if (herrno == NETDB_INTERNAL)
- {
- __set_h_errno (herrno);
- _res.options = old_res_options;
- return -EAI_SYSTEM;
- }
- if (herrno == TRY_AGAIN)
+ if (status == NSS_STATUS_TRYAGAIN
+ && herrno == TRY_AGAIN)
no_data = EAI_AGAIN;
else
no_data = herrno == NO_DATA;
@@ -733,6 +730,8 @@ gaih_inet (const char *name, const struct gaih_service *service,
tmpbuflen, 2 * tmpbuflen);
}
+ no_inet6_data = no_data;
+
if (status == NSS_STATUS_SUCCESS)
{
if ((req->ai_flags & AI_CANONNAME) != 0 && canon == NULL)
@@ -829,6 +828,8 @@ gaih_inet (const char *name, const struct gaih_service *service,
&& inet6_status != NSS_STATUS_UNAVAIL)
status = inet6_status;
}
+ else
+ status = NSS_STATUS_UNAVAIL;
}
if (nss_next_action (nip, status) == NSS_ACTION_RETURN)
@@ -2108,7 +2109,7 @@ getaddrinfo (const char *name, const char *service,
{
/* If we haven't seen both IPv4 and IPv6 interfaces we can
narrow down the search. */
- if (! seen_ipv4 || ! seen_ipv6)
+ if ((! seen_ipv4 || ! seen_ipv6) && (seen_ipv4 || seen_ipv6))
{
local_hints = *hints;
local_hints.ai_family = seen_ipv4 ? PF_INET : PF_INET6;
diff --git a/sysdeps/posix/libc_fatal.c b/sysdeps/posix/libc_fatal.c
index c611b84363..4f11c0fcb0 100644
--- a/sysdeps/posix/libc_fatal.c
+++ b/sysdeps/posix/libc_fatal.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993,1994,1995,1997,2000,2004,2005
+/* Copyright (C) 1993-1995,1997,2000,2004,2005,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -17,6 +17,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <atomic.h>
#include <errno.h>
#include <fcntl.h>
#include <paths.h>
@@ -123,6 +124,20 @@ __libc_message (int do_abort, const char *fmt, ...)
if (TEMP_FAILURE_RETRY (__writev (fd, iov, nlist)) == total)
written = true;
+
+ char *buf = do_abort ? malloc (total + 1) : NULL;
+ if (buf != NULL)
+ {
+ char *wp = buf;
+ for (int cnt = 0; cnt < nlist; ++cnt)
+ wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len);
+ *wp = '\0';
+
+ /* We have to free the old buffer since the application might
+ catch the SIGABRT signal. */
+ char *old = atomic_exchange_acq (&__abort_msg, buf);
+ free (old);
+ }
}
va_end (ap);
diff --git a/sysdeps/posix/preadv.c b/sysdeps/posix/preadv.c
new file mode 100644
index 0000000000..791077399e
--- /dev/null
+++ b/sysdeps/posix/preadv.c
@@ -0,0 +1,108 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <limits.h>
+#include <stdbool.h>
+#include <sys/param.h>
+#if __WORDSIZE == 64 && !defined PREADV
+/* Hide the preadv64 declaration. */
+# define preadv64 __redirect_preadv64
+#endif
+#include <sys/uio.h>
+#include <bits/wordsize.h>
+
+#ifndef PREADV
+# define PREADV preadv
+# define PREAD __pread
+# define OFF_T off_t
+#endif
+
+
+static void
+ifree (char **ptrp)
+{
+ free (*ptrp);
+}
+
+
+/* Read data from file descriptor FD at the given position OFFSET
+ without change the file pointer, and put the result in the buffers
+ described by VECTOR, which is a vector of COUNT 'struct iovec's.
+ The buffers are filled in the order specified. Operates just like
+ 'pread' (see <unistd.h>) except that data are put in VECTOR instead
+ of a contiguous buffer. */
+ssize_t
+PREADV (int fd, const struct iovec *vector, int count, OFF_T offset)
+{
+ /* Find the total number of bytes to be read. */
+ size_t bytes = 0;
+ for (int i = 0; i < count; ++i)
+ {
+ /* Check for ssize_t overflow. */
+ if (SSIZE_MAX - bytes < vector[i].iov_len)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+ bytes += vector[i].iov_len;
+ }
+
+ /* Allocate a temporary buffer to hold the data. We should normally
+ use alloca since it's faster and does not require synchronization
+ with other threads. But we cannot if the amount of memory
+ required is too large. */
+ char *buffer;
+ char *malloced_buffer __attribute__ ((__cleanup__ (ifree))) = NULL;
+ if (__libc_use_alloca (bytes))
+ buffer = (char *) __alloca (bytes);
+ else
+ {
+ malloced_buffer = buffer = (char *) malloc (bytes);
+ if (buffer == NULL)
+ return -1;
+ }
+
+ /* Read the data. */
+ ssize_t bytes_read = PREAD (fd, buffer, bytes, offset);
+ if (bytes_read < 0)
+ return -1;
+
+ /* Copy the data from BUFFER into the memory specified by VECTOR. */
+ bytes = bytes_read;
+ for (int i = 0; i < count; ++i)
+ {
+ size_t copy = MIN (vector[i].iov_len, bytes);
+
+ (void) memcpy ((void *) vector[i].iov_base, (void *) buffer, copy);
+
+ buffer += copy;
+ bytes -= copy;
+ if (bytes == 0)
+ break;
+ }
+
+ return bytes_read;
+}
+#if __WORDSIZE == 64 && defined preadv64
+# undef preadv64
+strong_alias (preadv, preadv64)
+#endif
diff --git a/sysdeps/posix/preadv64.c b/sysdeps/posix/preadv64.c
new file mode 100644
index 0000000000..198622353a
--- /dev/null
+++ b/sysdeps/posix/preadv64.c
@@ -0,0 +1,9 @@
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 32
+# define PREADV preadv64
+# define PREAD __pread64
+# define OFF_T off64_t
+
+# include "preadv.c"
+#endif
diff --git a/sysdeps/posix/pwritev.c b/sysdeps/posix/pwritev.c
new file mode 100644
index 0000000000..f2f0574aac
--- /dev/null
+++ b/sysdeps/posix/pwritev.c
@@ -0,0 +1,96 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <limits.h>
+#include <stdbool.h>
+#include <sys/param.h>
+#if __WORDSIZE == 64 && !defined PWRITEV
+/* Hide the pwritev64 declaration. */
+# define pwritev64 __redirect_pwritev64
+#endif
+#include <sys/uio.h>
+#include <bits/wordsize.h>
+
+#ifndef PWRITEV
+# define PWRITEV pwritev
+# define PWRITE __pwrite
+# define OFF_T off_t
+#endif
+
+
+static void
+ifree (char **ptrp)
+{
+ free (*ptrp);
+}
+
+
+/* Write data pointed by the buffers described by IOVEC, which is a
+ vector of COUNT 'struct iovec's, to file descriptor FD at the given
+ position OFFSET without change the file pointer. The data is
+ written in the order specified. Operates just like 'write' (see
+ <unistd.h>) except that the data are taken from IOVEC instead of a
+ contiguous buffer. */
+ssize_t
+PWRITEV (int fd, const struct iovec *vector, int count, OFF_T offset)
+{
+ /* Find the total number of bytes to be read. */
+ size_t bytes = 0;
+ for (int i = 0; i < count; ++i)
+ {
+ /* Check for ssize_t overflow. */
+ if (SSIZE_MAX - bytes < vector[i].iov_len)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+ bytes += vector[i].iov_len;
+ }
+
+ /* Allocate a temporary buffer to hold the data. We should normally
+ use alloca since it's faster and does not require synchronization
+ with other threads. But we cannot if the amount of memory
+ required is too large. */
+ char *buffer;
+ char *malloced_buffer __attribute__ ((__cleanup__ (ifree))) = NULL;
+ if (__libc_use_alloca (bytes))
+ buffer = (char *) __alloca (bytes);
+ else
+ {
+ malloced_buffer = buffer = (char *) malloc (bytes);
+ if (buffer == NULL)
+ return -1;
+ }
+
+ /* Copy the data from BUFFER into the memory specified by VECTOR. */
+ char *ptr = buffer;
+ for (int i = 0; i < count; ++i)
+ ptr = __mempcpy ((void *) ptr, (void *) vector[i].iov_base,
+ vector[i].iov_len);
+
+ /* Write the data. */
+ return PWRITE (fd, buffer, bytes, offset);
+}
+#if __WORDSIZE == 64 && defined pwritev64
+# undef pwritev64
+strong_alias (pwritev, pwritev64)
+#endif
diff --git a/sysdeps/posix/pwritev64.c b/sysdeps/posix/pwritev64.c
new file mode 100644
index 0000000000..4948d2efee
--- /dev/null
+++ b/sysdeps/posix/pwritev64.c
@@ -0,0 +1,9 @@
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 32
+# define PWRITEV pwritev64
+# define PWRITE __pwrite64
+# define OFF_T off64_t
+
+# include "pwritev.c"
+#endif
diff --git a/sysdeps/posix/readv.c b/sysdeps/posix/readv.c
index f0e78e6662..6f16b9d946 100644
--- a/sysdeps/posix/readv.c
+++ b/sysdeps/posix/readv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1996, 1997, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1996,1997,2002,2009 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
@@ -25,24 +25,24 @@
#include <sys/uio.h>
#include <errno.h>
+
+static void
+ifree (char **ptrp)
+{
+ free (*ptrp);
+}
+
/* Read data from file descriptor FD, and put the result in the
- buffers described by VECTOR, which is a vector of COUNT `struct iovec's.
+ buffers described by VECTOR, which is a vector of COUNT 'struct iovec's.
The buffers are filled in the order specified.
- Operates just like `read' (see <unistd.h>) except that data are
+ Operates just like 'read' (see <unistd.h>) except that data are
put in VECTOR instead of a contiguous buffer. */
ssize_t
__libc_readv (int fd, const struct iovec *vector, int count)
{
- char *buffer;
- char *buffer_start;
- size_t bytes;
- ssize_t bytes_read;
- int i;
- bool use_malloc = false;
-
/* Find the total number of bytes to be read. */
- bytes = 0;
- for (i = 0; i < count; ++i)
+ size_t bytes = 0;
+ for (int i = 0; i < count; ++i)
{
/* Check for ssize_t overflow. */
if (SSIZE_MAX - bytes < vector[i].iov_len)
@@ -57,28 +57,25 @@ __libc_readv (int fd, const struct iovec *vector, int count)
use alloca since it's faster and does not require synchronization
with other threads. But we cannot if the amount of memory
required is too large. */
+ char *buffer;
+ char *malloced_buffer __attribute__ ((__cleanup__ (ifree))) = NULL;
if (__libc_use_alloca (bytes))
buffer = (char *) __alloca (bytes);
else
{
- buffer = (char *) malloc (bytes);
+ malloced_buffer = buffer = (char *) malloc (bytes);
if (buffer == NULL)
- /* XXX I don't know whether it is acceptable to try reading
- the data in chunks. Probably not so we just fail here. */
return -1;
-
- use_malloc = true;
}
/* Read the data. */
- bytes_read = __read (fd, buffer, bytes);
- if (bytes_read <= 0)
+ ssize_t bytes_read = __read (fd, buffer, bytes);
+ if (bytes_read < 0)
return -1;
/* Copy the data from BUFFER into the memory specified by VECTOR. */
bytes = bytes_read;
- buffer_start = buffer;
- for (i = 0; i < count; ++i)
+ for (int i = 0; i < count; ++i)
{
size_t copy = MIN (vector[i].iov_len, bytes);
@@ -90,9 +87,6 @@ __libc_readv (int fd, const struct iovec *vector, int count)
break;
}
- if (use_malloc)
- free (buffer_start);
-
return bytes_read;
}
#ifndef __libc_readv
diff --git a/sysdeps/posix/sysconf.c b/sysdeps/posix/sysconf.c
index 0c0d7d1418..e734fdd9bd 100644
--- a/sysdeps/posix/sysconf.c
+++ b/sysdeps/posix/sysconf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1993,1995-1997,1999-2003,2004,2006
+/* Copyright (C) 1991,1993,1995-1997,1999-2003,2004,2006,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -38,7 +38,9 @@
(!defined _XBS5_ILP32_OFF32 || !defined _XBS5_ILP32_OFFBIG \
|| !defined _XBS5_LP64_OFF64 || !defined _XBS5_LPBIG_OFFBIG \
|| !defined _POSIX_V6_ILP32_OFF32 || !defined _POSIX_V6_ILP32_OFFBIG \
- || !defined _POSIX_V6_LP64_OFF64 || !defined _POSIX_V6_LPBIG_OFFBIG)
+ || !defined _POSIX_V6_LP64_OFF64 || !defined _POSIX_V6_LPBIG_OFFBIG \
+ || !defined _POSIX_V7_ILP32_OFF32 || !defined _POSIX_V7_ILP32_OFFBIG \
+ || !defined _POSIX_V7_LP64_OFF64 || !defined _POSIX_V7_LPBIG_OFFBIG)
#if NEED_CHECK_SPEC
static long int __sysconf_check_spec (const char *spec);
#endif
@@ -840,6 +842,31 @@ __sysconf (name)
return __sysconf_check_spec ("LPBIG_OFFBIG");
#endif
+ case _SC_V7_ILP32_OFF32:
+#ifdef _POSIX_V7_ILP32_OFF32
+ return _POSIX_V7_ILP32_OFF32;
+#else
+ return __sysconf_check_spec ("ILP32_OFF32");
+#endif
+ case _SC_V7_ILP32_OFFBIG:
+#ifdef _POSIX_V7_ILP32_OFFBIG
+ return _POSIX_V7_ILP32_OFFBIG;
+#else
+ return __sysconf_check_spec ("ILP32_OFFBIG");
+#endif
+ case _SC_V7_LP64_OFF64:
+#ifdef _POSIX_V7_LP64_OFF64
+ return _POSIX_V7_LP64_OFF64;
+#else
+ return __sysconf_check_spec ("LP64_OFF64");
+#endif
+ case _SC_V7_LPBIG_OFFBIG:
+#ifdef _POSIX_V7_LPBIG_OFFBIG
+ return _POSIX_V7_LPBIG_OFFBIG;
+#else
+ return __sysconf_check_spec ("LPBIG_OFFBIG");
+#endif
+
case _SC_XOPEN_LEGACY:
return _XOPEN_LEGACY;
@@ -1178,6 +1205,16 @@ __sysconf (name)
return -1;
#endif
+ case _SC_TRACE_EVENT_NAME_MAX:
+ case _SC_TRACE_NAME_MAX:
+ case _SC_TRACE_SYS_MAX:
+ case _SC_TRACE_USER_EVENT_MAX:
+ /* No support for tracing. */
+
+ case _SC_XOPEN_STREAMS:
+ /* No support for STREAMS. */
+ return -1;
+
case _SC_LEVEL1_ICACHE_SIZE:
case _SC_LEVEL1_ICACHE_ASSOC:
case _SC_LEVEL1_ICACHE_LINESIZE:
diff --git a/sysdeps/posix/tempname.c b/sysdeps/posix/tempname.c
index be979d8c8a..57ce5a942c 100644
--- a/sysdeps/posix/tempname.c
+++ b/sysdeps/posix/tempname.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2001, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2001, 2006, 2007, 2009 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
@@ -210,9 +210,9 @@ static const char letters[] =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
/* Generate a temporary file name based on TMPL. TMPL must match the
- rules for mk[s]temp (i.e. end in "XXXXXX"). The name constructed
- does not exist at the time of the call to __gen_tempname. TMPL is
- overwritten with the result.
+ rules for mk[s]temp (i.e. end in "XXXXXX", possibly with a suffix).
+ The name constructed does not exist at the time of the call to
+ __gen_tempname. TMPL is overwritten with the result.
KIND may be one of:
__GT_NOCREATE: simply verify that the name does not exist
@@ -223,7 +223,7 @@ static const char letters[] =
We use a clever algorithm to get hard-to-predict names. */
int
-__gen_tempname (char *tmpl, int flags, int kind)
+__gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
{
int len;
char *XXXXXX;
@@ -251,14 +251,14 @@ __gen_tempname (char *tmpl, int flags, int kind)
#endif
len = strlen (tmpl);
- if (len < 6 || strcmp (&tmpl[len - 6], "XXXXXX"))
+ if (len < 6 + suffixlen || memcmp (&tmpl[len - 6 - suffixlen], "XXXXXX", 6))
{
__set_errno (EINVAL);
return -1;
}
/* This is where the Xs start. */
- XXXXXX = &tmpl[len - 6];
+ XXXXXX = &tmpl[len - 6 - suffixlen];
/* Get some more or less random data. */
#ifdef RANDOM_BITS
diff --git a/sysdeps/posix/writev.c b/sysdeps/posix/writev.c
index a347cc2eac..203cf9cebd 100644
--- a/sysdeps/posix/writev.c
+++ b/sysdeps/posix/writev.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1996, 1997, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1996,1997,2002,2009 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
@@ -25,24 +25,25 @@
#include <sys/uio.h>
#include <errno.h>
+
+static void
+ifree (char **ptrp)
+{
+ free (*ptrp);
+}
+
+
/* Write data pointed by the buffers described by VECTOR, which
- is a vector of COUNT `struct iovec's, to file descriptor FD.
+ is a vector of COUNT 'struct iovec's, to file descriptor FD.
The data is written in the order specified.
- Operates just like `write' (see <unistd.h>) except that the data
+ Operates just like 'write' (see <unistd.h>) except that the data
are taken from VECTOR instead of a contiguous buffer. */
ssize_t
__libc_writev (int fd, const struct iovec *vector, int count)
{
- char *buffer;
- register char *bp;
- size_t bytes, to_copy;
- ssize_t bytes_written;
- int i;
- bool use_malloc = false;
-
/* Find the total number of bytes to be written. */
- bytes = 0;
- for (i = 0; i < count; ++i)
+ size_t bytes = 0;
+ for (int i = 0; i < count; ++i)
{
/* Check for ssize_t overflow. */
if (SSIZE_MAX - bytes < vector[i].iov_len)
@@ -57,23 +58,23 @@ __libc_writev (int fd, const struct iovec *vector, int count)
use alloca since it's faster and does not require synchronization
with other threads. But we cannot if the amount of memory
required is too large. */
+ char *buffer;
+ char *malloced_buffer __attribute__ ((__cleanup__ (ifree))) = NULL;
if (__libc_use_alloca (bytes))
buffer = (char *) __alloca (bytes);
else
{
- buffer = (char *) malloc (bytes);
+ malloced_buffer = buffer = (char *) malloc (bytes);
if (buffer == NULL)
/* XXX I don't know whether it is acceptable to try writing
the data in chunks. Probably not so we just fail here. */
return -1;
-
- use_malloc = true;
}
/* Copy the data into BUFFER. */
- to_copy = bytes;
- bp = buffer;
- for (i = 0; i < count; ++i)
+ size_t to_copy = bytes;
+ char *bp = buffer;
+ for (int i = 0; i < count; ++i)
{
size_t copy = MIN (vector[i].iov_len, to_copy);
@@ -84,10 +85,7 @@ __libc_writev (int fd, const struct iovec *vector, int count)
break;
}
- bytes_written = __write (fd, buffer, bytes);
-
- if (use_malloc)
- free (buffer);
+ ssize_t bytes_written = __write (fd, buffer, bytes);
return bytes_written;
}
diff --git a/sysdeps/powerpc/bits/link.h b/sysdeps/powerpc/bits/link.h
index 6c6f6042a1..24baba09c4 100644
--- a/sysdeps/powerpc/bits/link.h
+++ b/sysdeps/powerpc/bits/link.h
@@ -1,5 +1,5 @@
/* Machine-specific declarations for dynamic linker interface. PowerPC version
- Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2009 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
@@ -60,7 +60,7 @@ extern unsigned int la_ppc32_gnu_pltexit (Elf32_Sym *__sym,
uintptr_t *__defcook,
const La_ppc32_regs *__inregs,
La_ppc32_retval *__outregs,
- const char *symname);
+ const char *__symname);
__END_DECLS
@@ -104,7 +104,7 @@ extern unsigned int la_ppc64_gnu_pltexit (Elf64_Sym *__sym,
uintptr_t *__defcook,
const La_ppc64_regs *__inregs,
La_ppc64_retval *__outregs,
- const char *symname);
+ const char *__symname);
__END_DECLS
diff --git a/sysdeps/powerpc/configure b/sysdeps/powerpc/configure
index 07e3d091b1..b347754f35 100755..100644
--- a/sysdeps/powerpc/configure
+++ b/sysdeps/powerpc/configure
@@ -2,10 +2,10 @@
# Local configure fragment for sysdeps/powerpc.
# Accept binutils which knows about ".machine".
-echo "$as_me:$LINENO: checking for .machine support" >&5
-echo $ECHO_N "checking for .machine support... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for .machine support" >&5
+$as_echo_n "checking for .machine support... " >&6; }
if test "${libc_cv_ppc_machine+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<\EOF
.machine "altivec"
@@ -15,7 +15,7 @@ if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_ppc_machine=yes
else
@@ -23,14 +23,14 @@ else
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_ppc_machine" >&5
-echo "${ECHO_T}$libc_cv_ppc_machine" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_ppc_machine" >&5
+$as_echo "$libc_cv_ppc_machine" >&6; }
if test $libc_cv_ppc_machine != yes; then
- { { echo "$as_me:$LINENO: error:
+ { { $as_echo "$as_me:$LINENO: error:
*** A binutils version which can handle
*** .machine \"altivec\"
*** is needed." >&5
-echo "$as_me: error:
+$as_echo "$as_me: error:
*** A binutils version which can handle
*** .machine \"altivec\"
*** is needed." >&2;}
diff --git a/sysdeps/powerpc/elf/ifunc-sel.h b/sysdeps/powerpc/elf/ifunc-sel.h
new file mode 100644
index 0000000000..526d8ed88b
--- /dev/null
+++ b/sysdeps/powerpc/elf/ifunc-sel.h
@@ -0,0 +1,46 @@
+/* Used by the elf ifunc tests. */
+#ifndef ELF_IFUNC_SEL_H
+#define ELF_IFUNC_SEL_H 1
+
+extern int global;
+
+static inline void *
+ifunc_sel (int (*f1) (void), int (*f2) (void), int (*f3) (void))
+{
+ register void *ret __asm__ ("r3");
+ __asm__ ("mflr 12\n\t"
+ "bcl 20,31,1f\n"
+ "1:\tmflr 11\n\t"
+ "mtlr 12\n\t"
+ "addis 12,11,global-1b@ha\n\t"
+ "lwz 12,global-1b@l(12)\n\t"
+ "addis %0,11,%2-1b@ha\n\t"
+ "addi %0,%0,%2-1b@l\n\t"
+ "cmpwi 12,1\n\t"
+ "beqlr\n\t"
+ "addis %0,11,%3-1b@ha\n\t"
+ "addi %0,%0,%3-1b@l\n\t"
+ "cmpwi 12,-1\n\t"
+ "beqlr\n\t"
+ "addis %0,11,%4-1b@ha\n\t"
+ "addi %0,%0,%4-1b@l"
+ : "=r" (ret)
+ : "X" (&global), "X" (f1), "X" (f2), "X" (f3));
+ return ret;
+}
+
+static inline void *
+ifunc_one (int (*f1) (void))
+{
+ register void *ret __asm__ ("r3");
+ __asm__ ("mflr 12\n\t"
+ "bcl 20,31,1f\n"
+ "1:\tmflr %0\n\t"
+ "mtlr 12\n\t"
+ "addis %0,%0,%1-1b@ha\n\t"
+ "addi %0,%0,%1-1b@l"
+ : "=r" (ret)
+ : "X" (f1));
+ return ret;
+}
+#endif
diff --git a/sysdeps/powerpc/fpu/e_sqrt.c b/sysdeps/powerpc/fpu/e_sqrt.c
index 24e0dd3523..e95b786a00 100644
--- a/sysdeps/powerpc/fpu/e_sqrt.c
+++ b/sysdeps/powerpc/fpu/e_sqrt.c
@@ -35,7 +35,7 @@ extern const float __t_sqrt[1024];
/* The method is based on a description in
Computation of elementary functions on the IBM RISC System/6000 processor,
P. W. Markstein, IBM J. Res. Develop, 34(1) 1990.
- Basically, it consists of two interleaved Newton-Rhapson approximations,
+ Basically, it consists of two interleaved Newton-Raphson approximations,
one to find the actual square root, and one to find its reciprocal
without the expense of a division operation. The tricky bit here
is the use of the POWER/PowerPC multiply-add operation to get the
@@ -44,7 +44,7 @@ extern const float __t_sqrt[1024];
The argument reduction works by a combination of table lookup to
obtain the initial guesses, and some careful modification of the
generated guesses (which mostly runs on the integer unit, while the
- Newton-Rhapson is running on the FPU). */
+ Newton-Raphson is running on the FPU). */
#ifdef __STDC__
double
@@ -102,7 +102,7 @@ __slow_ieee754_sqrt (x)
/* complete the INSERT_WORDS (sx, sxi, xi1) operation. */
sx = iw_u.value;
- /* Here we have three Newton-Rhapson iterations each of a
+ /* Here we have three Newton-Raphson iterations each of a
division and a square root and the remainder of the
argument reduction, all interleaved. */
sd = -(sg * sg - sx);
diff --git a/sysdeps/powerpc/fpu/e_sqrtf.c b/sysdeps/powerpc/fpu/e_sqrtf.c
index 8e8138a17d..ca44fac559 100644
--- a/sysdeps/powerpc/fpu/e_sqrtf.c
+++ b/sysdeps/powerpc/fpu/e_sqrtf.c
@@ -35,7 +35,7 @@ extern const float __t_sqrt[1024];
/* The method is based on a description in
Computation of elementary functions on the IBM RISC System/6000 processor,
P. W. Markstein, IBM J. Res. Develop, 34(1) 1990.
- Basically, it consists of two interleaved Newton-Rhapson approximations,
+ Basically, it consists of two interleaved Newton-Raphson approximations,
one to find the actual square root, and one to find its reciprocal
without the expense of a division operation. The tricky bit here
is the use of the POWER/PowerPC multiply-add operation to get the
@@ -44,7 +44,7 @@ extern const float __t_sqrt[1024];
The argument reduction works by a combination of table lookup to
obtain the initial guesses, and some careful modification of the
generated guesses (which mostly runs on the integer unit, while the
- Newton-Rhapson is running on the FPU). */
+ Newton-Raphson is running on the FPU). */
#ifdef __STDC__
float
@@ -90,7 +90,7 @@ __slow_ieee754_sqrtf (x)
sg = t_sqrt[0];
sy = t_sqrt[1];
- /* Here we have three Newton-Rhapson iterations each of a
+ /* Here we have three Newton-Raphson iterations each of a
division and a square root and the remainder of the
argument reduction, all interleaved. */
sd = -(sg * sg - sx);
diff --git a/sysdeps/powerpc/fpu/fenv_libc.h b/sysdeps/powerpc/fpu/fenv_libc.h
index c70f85130d..0a4a57da68 100644
--- a/sysdeps/powerpc/fpu/fenv_libc.h
+++ b/sysdeps/powerpc/fpu/fenv_libc.h
@@ -1,5 +1,5 @@
/* Internal libc stuff for floating point environment routines.
- Copyright (C) 1997, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2006, 2008, 2009 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
@@ -39,7 +39,10 @@ libm_hidden_proto (__fe_nomask_env)
do { \
double d = (env); \
if(GLRO(dl_hwcap) & PPC_FEATURE_HAS_DFP) \
- asm volatile ("mtfsf 0xff,%0,1,0" : : "f" (d)); \
+ asm volatile (".machine push; " \
+ ".machine \"power6\"; " \
+ "mtfsf 0xff,%0,1,0; " \
+ ".machine pop" : : "f" (d)); \
else \
asm volatile ("mtfsf 0xff,%0" : : "f" (d)); \
} while(0)
@@ -52,8 +55,9 @@ libm_hidden_proto (__fe_nomask_env)
functions. */
#define relax_fenv_state() \
do { \
- if(GLRO(dl_hwcap) & PPC_FEATURE_HAS_DFP) \
- asm ("mtfsfi 7,0,1"); \
+ if (GLRO(dl_hwcap) & PPC_FEATURE_HAS_DFP) \
+ asm (".machine push; .machine \"power6\"; " \
+ "mtfsfi 7,0,1; .machine pop"); \
asm ("mtfsfi 7,0"); \
} while(0)
diff --git a/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c b/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c
index 973fb3f77a..e75a7f1941 100644
--- a/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c
+++ b/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001,2002,2004,2006,2007,2008 Free Software Foundation, Inc.
+/* Copyright (C) 2001,2002,2004,2006-2008,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ryan S. Arnold <rsa@us.ibm.com>
Sean Curry <spcurry@us.ibm.com>
@@ -104,12 +104,20 @@ typedef unsigned int si_fpscr_t __attribute__ ((__mode__ (__SI__)));
(__fpscr)=tmp.fpscr; \
tmp.fpscr; })
+/* We make sure to zero fp0 after we use it in order to prevent stale data
+ in an fp register from making a test-case pass erroneously. */
# define _SET_DI_FPSCR(__fpscr) { \
union { double d; di_fpscr_t fpscr; } \
tmp __attribute__ ((__aligned__(8))); \
tmp.fpscr = __fpscr; \
/* Set the entire 64-bit FPSCR. */ \
- __asm__ ("lfd%U0 0,%0; mtfsf 255,0,1,0" : : "m" (tmp.d) : "fr0"); \
+ __asm__ ("lfd%U0 0,%0; " \
+ ".machine push; " \
+ ".machine \"power6\"; " \
+ "mtfsf 255,0,1,0; " \
+ ".machine pop" : : "m" (tmp.d) : "fr0"); \
+ tmp.d = 0; \
+ __asm__("lfd%U0 0,%0" : : "m" (tmp.d) : "fr0"); \
}
# define _GET_SI_FPSCR(__fpscr) ({ \
@@ -120,6 +128,8 @@ typedef unsigned int si_fpscr_t __attribute__ ((__mode__ (__SI__)));
(__fpscr)=tmp.cw[1]; \
tmp.cw[0]; })
+/* We make sure to zero fp0 after we use it in order to prevent stale data
+ in an fp register from making a test-case pass erroneously. */
# define _SET_SI_FPSCR(__fpscr) { \
union { double d; si_fpscr_t fpscr[2]; } \
tmp __attribute__ ((__aligned__(8))); \
@@ -127,6 +137,8 @@ typedef unsigned int si_fpscr_t __attribute__ ((__mode__ (__SI__)));
tmp.fpscr[0] = 0xFFF80000; \
tmp.fpscr[1] = __fpscr; \
__asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \
+ tmp.d = 0; \
+ __asm__("lfd%U0 0,%0" : : "m" (tmp.d) : "fr0"); \
}
void prime_special_regs(int which)
diff --git a/sysdeps/powerpc/powerpc32/__longjmp-common.S b/sysdeps/powerpc/powerpc32/__longjmp-common.S
index 2093b7e337..955161ef2b 100644
--- a/sysdeps/powerpc/powerpc32/__longjmp-common.S
+++ b/sysdeps/powerpc/powerpc32/__longjmp-common.S
@@ -1,5 +1,5 @@
/* longjmp for PowerPC.
- Copyright (C) 1995-1997, 1999-2001, 2003, 2004, 2005, 2006
+ Copyright (C) 1995-1997, 1999-2001, 2003, 2004, 2005, 2006, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -31,8 +31,15 @@
ENTRY (BP_SYM (__longjmp))
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
-#ifdef PTR_DEMANGLE
+#if defined PTR_DEMANGLE || defined CHECK_SP
lwz r24,(JB_GPR1*4)(r3)
+# ifdef CHECK_SP
+# ifdef PTR_DEMANGLE
+ PTR_DEMANGLE3 (r24, r24, r25)
+# endif
+ CHECK_SP (r24)
+ mr r1,r24
+# endif
#else
lwz r1,(JB_GPR1*4)(r3)
#endif
@@ -45,7 +52,9 @@ ENTRY (BP_SYM (__longjmp))
lwz r19,((JB_GPRS+5)*4)(r3)
lwz r20,((JB_GPRS+6)*4)(r3)
#ifdef PTR_DEMANGLE
+# ifndef CHECK_SP
PTR_DEMANGLE3 (r1, r24, r25)
+# endif
PTR_DEMANGLE2 (r0, r25)
#endif
mtlr r0
diff --git a/sysdeps/powerpc/powerpc32/cell/memcpy.S b/sysdeps/powerpc/powerpc32/cell/memcpy.S
new file mode 100644
index 0000000000..cc1da99fd9
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/cell/memcpy.S
@@ -0,0 +1,245 @@
+/* Optimized memcpy implementation for CELL BE PowerPC.
+ Copyright (C) 2010 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <bp-sym.h>
+#include <bp-asm.h>
+
+#define PREFETCH_AHEAD 6 /* no cache lines SRC prefetching ahead */
+#define ZERO_AHEAD 4 /* no cache lines DST zeroing ahead */
+
+/* memcpy routine optimized for CELL-BE-PPC v2.0
+ *
+ * The CELL PPC core has 1 integer unit and 1 load/store unit
+ * CELL:
+ * 1st level data cache = 32K
+ * 2nd level data cache = 512K
+ * 3rd level data cache = 0K
+ * With 3.2 GHz clockrate the latency to 2nd level cache is >36 clocks,
+ * latency to memory is >400 clocks
+ * To improve copy performance we need to prefetch source data
+ * far ahead to hide this latency
+ * For best performance instructionforms ending in "." like "andi."
+ * should be avoided as the are implemented in microcode on CELL.
+ * The below code is loop unrolled for the CELL cache line of 128 bytes
+ */
+
+.align 7
+
+EALIGN (BP_SYM (memcpy), 5, 0)
+ CALL_MCOUNT
+
+ dcbt 0,r4 /* Prefetch ONE SRC cacheline */
+ cmplwi cr1,r5,16 /* is size < 16 ? */
+ mr r6,r3
+ blt+ cr1,.Lshortcopy
+
+.Lbigcopy:
+ neg r8,r3 /* LS 3 bits = # bytes to 8-byte dest bdry */
+ clrlwi r8,r8,32-4 /* aling to 16byte boundary */
+ sub r7,r4,r3
+ cmplwi cr0,r8,0
+ beq+ .Ldst_aligned
+
+.Ldst_unaligned:
+ mtcrf 0x01,r8 /* put #bytes to boundary into cr7 */
+ subf r5,r8,r5
+
+ bf cr7*4+3,1f
+ lbzx r0,r7,r6 /* copy 1 byte */
+ stb r0,0(r6)
+ addi r6,r6,1
+1: bf cr7*4+2,2f
+ lhzx r0,r7,r6 /* copy 2 byte */
+ sth r0,0(r6)
+ addi r6,r6,2
+2: bf cr7*4+1,4f
+ lwzx r0,r7,r6 /* copy 4 byte */
+ stw r0,0(r6)
+ addi r6,r6,4
+4: bf cr7*4+0,8f
+ lfdx fp9,r7,r6 /* copy 8 byte */
+ stfd fp9,0(r6)
+ addi r6,r6,8
+8:
+ add r4,r7,r6
+
+.Ldst_aligned:
+
+ cmpwi cr5,r5,128-1
+
+ neg r7,r6
+ addi r6,r6,-8 /* prepare for stfdu */
+ addi r4,r4,-8 /* prepare for lfdu */
+
+ clrlwi r7,r7,32-7 /* align to cacheline boundary */
+ ble+ cr5,.Llessthancacheline
+
+ cmplwi cr6,r7,0
+ subf r5,r7,r5
+ srwi r7,r7,4 /* divide size by 16 */
+ srwi r10,r5,7 /* number of cache lines to copy */
+
+ cmplwi r10,0
+ li r11,0 /* number cachelines to copy with prefetch */
+ beq .Lnocacheprefetch
+
+ cmplwi r10,PREFETCH_AHEAD
+ li r12,128+8 /* prefetch distance */
+ ble .Llessthanmaxprefetch
+
+ subi r11,r10,PREFETCH_AHEAD
+ li r10,PREFETCH_AHEAD
+
+.Llessthanmaxprefetch:
+ mtctr r10
+
+.LprefetchSRC:
+ dcbt r12,r4
+ addi r12,r12,128
+ bdnz .LprefetchSRC
+
+.Lnocacheprefetch:
+ mtctr r7
+ cmplwi cr1,r5,128
+ clrlwi r5,r5,32-7
+ beq cr6,.Lcachelinealigned
+
+.Laligntocacheline:
+ lfd fp9,0x08(r4)
+ lfdu fp10,0x10(r4)
+ stfd fp9,0x08(r6)
+ stfdu fp10,0x10(r6)
+ bdnz .Laligntocacheline
+
+
+.Lcachelinealigned: /* copy while cache lines */
+
+ blt- cr1,.Llessthancacheline /* size <128 */
+
+.Louterloop:
+ cmpwi r11,0
+ mtctr r11
+ beq- .Lendloop
+
+ li r11,128*ZERO_AHEAD +8 /* DCBZ dist */
+
+.align 4
+ /* Copy whole cachelines, optimized by prefetching SRC cacheline */
+.Lloop: /* Copy aligned body */
+ dcbt r12,r4 /* PREFETCH SOURCE some cache lines ahead */
+ lfd fp9, 0x08(r4)
+ dcbz r11,r6
+ lfd fp10, 0x10(r4) /* 4 register stride copy is optimal */
+ lfd fp11, 0x18(r4) /* to hide 1st level cache lantency. */
+ lfd fp12, 0x20(r4)
+ stfd fp9, 0x08(r6)
+ stfd fp10, 0x10(r6)
+ stfd fp11, 0x18(r6)
+ stfd fp12, 0x20(r6)
+ lfd fp9, 0x28(r4)
+ lfd fp10, 0x30(r4)
+ lfd fp11, 0x38(r4)
+ lfd fp12, 0x40(r4)
+ stfd fp9, 0x28(r6)
+ stfd fp10, 0x30(r6)
+ stfd fp11, 0x38(r6)
+ stfd fp12, 0x40(r6)
+ lfd fp9, 0x48(r4)
+ lfd fp10, 0x50(r4)
+ lfd fp11, 0x58(r4)
+ lfd fp12, 0x60(r4)
+ stfd fp9, 0x48(r6)
+ stfd fp10, 0x50(r6)
+ stfd fp11, 0x58(r6)
+ stfd fp12, 0x60(r6)
+ lfd fp9, 0x68(r4)
+ lfd fp10, 0x70(r4)
+ lfd fp11, 0x78(r4)
+ lfdu fp12, 0x80(r4)
+ stfd fp9, 0x68(r6)
+ stfd fp10, 0x70(r6)
+ stfd fp11, 0x78(r6)
+ stfdu fp12, 0x80(r6)
+
+ bdnz .Lloop
+
+.Lendloop:
+ cmpwi r10,0
+ slwi r10,r10,2 /* adjust from 128 to 32 byte stride */
+ beq- .Lendloop2
+ mtctr r10
+
+.Lloop2: /* Copy aligned body */
+ lfd fp9, 0x08(r4)
+ lfd fp10, 0x10(r4)
+ lfd fp11, 0x18(r4)
+ lfdu fp12, 0x20(r4)
+ stfd fp9, 0x08(r6)
+ stfd fp10, 0x10(r6)
+ stfd fp11, 0x18(r6)
+ stfdu fp12, 0x20(r6)
+
+ bdnz .Lloop2
+.Lendloop2:
+
+.Llessthancacheline: /* less than cache to do ? */
+ cmplwi cr0,r5,16
+ srwi r7,r5,4 /* divide size by 16 */
+ blt- .Ldo_lt16
+ mtctr r7
+
+.Lcopy_remaining:
+ lfd fp9,0x08(r4)
+ lfdu fp10,0x10(r4)
+ stfd fp9,0x08(r6)
+ stfdu fp10,0x10(r6)
+ bdnz .Lcopy_remaining
+
+.Ldo_lt16: /* less than 16 ? */
+ cmplwi cr0,r5,0 /* copy remaining bytes (0-15) */
+ beqlr+ /* no rest to copy */
+ addi r4,r4,8
+ addi r6,r6,8
+
+.Lshortcopy: /* SIMPLE COPY to handle size =< 15 bytes */
+ mtcrf 0x01,r5
+ sub r7,r4,r6
+ bf- cr7*4+0,8f
+ lfdx fp9,r7,r6 /* copy 8 byte */
+ stfd fp9,0(r6)
+ addi r6,r6,8
+8:
+ bf cr7*4+1,4f
+ lwzx r0,r7,r6 /* copy 4 byte */
+ stw r0,0(r6)
+ addi r6,r6,4
+4:
+ bf cr7*4+2,2f
+ lhzx r0,r7,r6 /* copy 2 byte */
+ sth r0,0(r6)
+ addi r6,r6,2
+2:
+ bf cr7*4+3,1f
+ lbzx r0,r7,r6 /* copy 1 byte */
+ stb r0,0(r6)
+1: blr
+
+END (BP_SYM (memcpy))
+libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc32/configure b/sysdeps/powerpc/powerpc32/configure
index 0ff56c936a..9b76c57886 100644
--- a/sysdeps/powerpc/powerpc32/configure
+++ b/sysdeps/powerpc/powerpc32/configure
@@ -2,10 +2,10 @@
# Local configure fragment for sysdeps/powerpc/powerpc32.
# See whether gas has R_PPC_REL16 relocs.
-echo "$as_me:$LINENO: checking for R_PPC_REL16 gas support" >&5
-echo $ECHO_N "checking for R_PPC_REL16 gas support... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for R_PPC_REL16 gas support" >&5
+$as_echo_n "checking for R_PPC_REL16 gas support... " >&6; }
if test "${libc_cv_ppc_rel16+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<\EOF
.text
@@ -15,7 +15,7 @@ if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_ppc_rel16=yes
else
@@ -23,8 +23,8 @@ else
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_ppc_rel16" >&5
-echo "${ECHO_T}$libc_cv_ppc_rel16" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_ppc_rel16" >&5
+$as_echo "$libc_cv_ppc_rel16" >&6; }
if test $libc_cv_ppc_rel16 = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_ASM_PPC_REL16 1
@@ -33,10 +33,10 @@ _ACEOF
fi
# See whether GCC uses -msecure-plt.
-echo "$as_me:$LINENO: checking for -msecure-plt by default" >&5
-echo $ECHO_N "checking for -msecure-plt by default... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for -msecure-plt by default" >&5
+$as_echo_n "checking for -msecure-plt by default... " >&6; }
if test "${libc_cv_ppc_secure_plt+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
echo 'int foo (void) { extern int bar; return bar; }' > conftest.c
libc_cv_ppc_secure_plt=no
@@ -44,7 +44,7 @@ if { ac_try='${CC-cc} -S $CFLAGS conftest.c -fpic -o conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
if grep '_GLOBAL_OFFSET_TABLE_-.*@ha' conftest.s > /dev/null 2>&1; then
libc_cv_ppc_secure_plt=yes
@@ -52,8 +52,8 @@ if { ac_try='${CC-cc} -S $CFLAGS conftest.c -fpic -o conftest.s 1>&5'
fi
rm -rf conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_ppc_secure_plt" >&5
-echo "${ECHO_T}$libc_cv_ppc_secure_plt" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_ppc_secure_plt" >&5
+$as_echo "$libc_cv_ppc_secure_plt" >&6; }
if test $libc_cv_ppc_secure_plt = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_PPC_SECURE_PLT 1
diff --git a/sysdeps/alpha/fpu/s_copysign.c b/sysdeps/powerpc/powerpc32/dl-irel.h
index 52c632ec4c..3f204cd7ae 100644
--- a/sysdeps/alpha/fpu/s_copysign.c
+++ b/sysdeps/powerpc/powerpc32/dl-irel.h
@@ -1,6 +1,7 @@
-/* Copyright (C) 2000, 2006 Free Software Foundation, Inc.
+/* Machine-dependent ELF indirect relocation inline functions.
+ PowerPC version.
+ Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Richard Henderson.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -17,25 +18,28 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <math.h>
-#include <math_ldbl_opt.h>
+#ifndef _DL_IREL_H
+#define _DL_IREL_H
-double
-__copysign (double x, double y)
+#include <stdio.h>
+#include <unistd.h>
+
+#define ELF_MACHINE_IRELA 1
+
+static inline void
+__attribute ((always_inline))
+elf_irela (const Elf32_Rela *reloc)
{
- __asm ("cpys %1, %2, %0" : "=f" (x) : "f" (y), "f" (x));
- return x;
+ unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
+
+ if (__builtin_expect (r_type == R_PPC_IRELATIVE, 1))
+ {
+ Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
+ Elf32_Addr value = ((Elf32_Addr (*) (void)) reloc->r_addend) ();
+ *reloc_addr = value;
+ }
+ else
+ __libc_fatal ("unexpected reloc type in static binary");
}
-weak_alias (__copysign, copysign)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__copysign, __copysignl)
-weak_alias (__copysign, copysignl)
-#endif
-#ifdef IS_IN_libm
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __copysign, copysignl, GLIBC_2_0);
-#endif
+#endif /* dl-irel.h */
diff --git a/sysdeps/powerpc/powerpc32/dl-machine.c b/sysdeps/powerpc/powerpc32/dl-machine.c
index 71540bd185..ee4c3e0c1c 100644
--- a/sysdeps/powerpc/powerpc32/dl-machine.c
+++ b/sysdeps/powerpc/powerpc32/dl-machine.c
@@ -337,7 +337,7 @@ __elf_machine_runtime_setup (struct link_map *map, int lazy, int profile)
}
Elf32_Addr
-__elf_machine_fixup_plt (struct link_map *map, const Elf32_Rela *reloc,
+__elf_machine_fixup_plt (struct link_map *map,
Elf32_Addr *reloc_addr, Elf32_Addr finaladdr)
{
Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
@@ -430,6 +430,10 @@ __process_machine_rela (struct link_map *map,
*reloc_addr = finaladdr;
return;
+ case R_PPC_IRELATIVE:
+ *reloc_addr = ((Elf32_Addr (*) (void)) finaladdr) ();
+ return;
+
case R_PPC_UADDR32:
((char *) reloc_addr)[0] = finaladdr >> 24;
((char *) reloc_addr)[1] = finaladdr >> 16;
diff --git a/sysdeps/powerpc/powerpc32/dl-machine.h b/sysdeps/powerpc/powerpc32/dl-machine.h
index a50ffdd1c2..6f8d0f506e 100644
--- a/sysdeps/powerpc/powerpc32/dl-machine.h
+++ b/sysdeps/powerpc/powerpc32/dl-machine.h
@@ -226,7 +226,6 @@ elf_machine_runtime_setup (struct link_map *map,
/* Change the PLT entry whose reloc is 'reloc' to call the actual routine. */
extern Elf32_Addr __elf_machine_fixup_plt (struct link_map *map,
- const Elf32_Rela *reloc,
Elf32_Addr *reloc_addr,
Elf32_Addr finaladdr);
@@ -237,7 +236,7 @@ elf_machine_fixup_plt (struct link_map *map, lookup_t t,
{
if (map->l_info[DT_PPC(GOT)] == 0)
/* Handle old style PLT. */
- return __elf_machine_fixup_plt (map, reloc, reloc_addr, finaladdr);
+ return __elf_machine_fixup_plt (map, reloc_addr, finaladdr);
*reloc_addr = finaladdr;
return finaladdr;
@@ -317,6 +316,11 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
value = reloc->r_addend;
#endif
+ if (sym != NULL
+ && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)
+ && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1))
+ value = ((Elf32_Addr (*) (void)) value) ();
+
/* A small amount of code is duplicated here for speed. In libc,
more than 90% of the relocs are R_PPC_RELATIVE; in the X11 shared
libraries, 60% are R_PPC_RELATIVE, 24% are R_PPC_GLOB_DAT or
diff --git a/sysdeps/powerpc/powerpc32/elf/configure b/sysdeps/powerpc/powerpc32/elf/configure
index 536052e0eb..dfa5770756 100755..100644
--- a/sysdeps/powerpc/powerpc32/elf/configure
+++ b/sysdeps/powerpc/powerpc32/elf/configure
@@ -4,10 +4,10 @@
if test "$usetls" != no; then
# Check for support of thread-local storage handling in assembler and
# linker.
-echo "$as_me:$LINENO: checking for powerpc32 TLS support" >&5
-echo $ECHO_N "checking for powerpc32 TLS support... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for powerpc32 TLS support" >&5
+$as_echo_n "checking for powerpc32 TLS support... " >&6; }
if test "${libc_cv_powerpc32_tls+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<\EOF
.section ".tdata","awT",@progbits
@@ -33,7 +33,7 @@ if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_powerpc32_tls=yes
else
@@ -41,8 +41,8 @@ else
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_powerpc32_tls" >&5
-echo "${ECHO_T}$libc_cv_powerpc32_tls" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_powerpc32_tls" >&5
+$as_echo "$libc_cv_powerpc32_tls" >&6; }
if test $libc_cv_powerpc32_tls = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TLS_SUPPORT 1
diff --git a/sysdeps/powerpc/powerpc32/elf/start.S b/sysdeps/powerpc/powerpc32/elf/start.S
index bafd2ae001..a8abdca0c6 100644
--- a/sysdeps/powerpc/powerpc32/elf/start.S
+++ b/sysdeps/powerpc/powerpc32/elf/start.S
@@ -1,5 +1,6 @@
/* Startup code for programs linked with GNU libc.
- Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ Copyright (C) 1998,1999,2000,2001,2002,2003,2009
+ 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
@@ -98,4 +99,5 @@ END(_start)
.section ".data"
.globl __data_start
__data_start:
+ .long 0
weak_alias (__data_start, data_start)
diff --git a/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S b/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
index 7c6e27c209..04ed6da68b 100644
--- a/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
+++ b/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
@@ -1,5 +1,5 @@
/* longjmp for PowerPC.
- Copyright (C) 1995-99, 2000, 2003-2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1995-99, 2000, 2003-2006, 2009 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
@@ -64,7 +64,7 @@ ENTRY (BP_SYM (__longjmp))
andi. r6,r5,0xf
lwz r0,((JB_VRSAVE)*4)(3)
mtspr VRSAVE,r0
- beq+ aligned_restore_vmx
+ beq+ L(aligned_restore_vmx)
addi r6,r5,16
lvsl v0,0,r5
lvx v1,0,r5
@@ -88,7 +88,7 @@ ENTRY (BP_SYM (__longjmp))
lvx v1,0,r5
vperm v31,v31,v1,v0
b L(no_vmx)
-aligned_restore_vmx:
+L(aligned_restore_vmx):
addi r6,r5,16
lvx v20,0,r5
addi r5,r5,32
@@ -114,8 +114,15 @@ aligned_restore_vmx:
lvx v31,0,r6
L(no_vmx):
#endif
-#ifdef PTR_DEMANGLE
+#if defined PTR_DEMANGLE || defined CHECK_SP
lwz r24,(JB_GPR1*4)(r3)
+# ifdef CHECK_SP
+# ifdef PTR_DEMANGLE
+ PTR_DEMANGLE3 (r24, r24, r25)
+# endif
+ CHECK_SP (r24)
+ mr r1,r24
+# endif
#else
lwz r1,(JB_GPR1*4)(r3)
#endif
@@ -135,7 +142,9 @@ L(no_vmx):
lwz r20,((JB_GPRS+6)*4)(r3)
lfd fp20,((JB_FPRS+6*2)*4)(r3)
#ifdef PTR_DEMANGLE
+# ifndef CHECK_SP
PTR_DEMANGLE3 (r1, r24, r25)
+# endif
PTR_DEMANGLE2 (r0, r25)
#endif
mtlr r0
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.S b/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.S
index 6aef4e301b..95a0b3915d 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.S
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.S
@@ -60,8 +60,8 @@ EALIGN (__sqrt, 5, 0)
fmr fp12,fp2
stw r0,20(r1)
stw r30,8(r1)
- cfi_offset(lr,20)
- cfi_offset(r30,8)
+ cfi_offset(lr,20-16)
+ cfi_offset(r30,8-16)
#ifdef SHARED
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,.LCF1
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S b/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S
index e5b8b9d565..c31555194b 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S
@@ -60,8 +60,8 @@ EALIGN (__sqrtf, 5, 0)
fmr fp12,fp2
stw r0,20(r1)
stw r30,8(r1)
- cfi_offset(lr,20)
- cfi_offset(r30,8)
+ cfi_offset(lr,20-16)
+ cfi_offset(r30,8-16)
#ifdef SHARED
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,.LCF1
diff --git a/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt.S b/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt.S
index 925930bf77..105b5912a1 100644
--- a/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt.S
+++ b/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt.S
@@ -60,8 +60,8 @@ EALIGN (__sqrt, 5, 0)
fmr fp12,fp2
stw r0,20(r1)
stw r30,8(r1)
- cfi_offset(lr,20)
- cfi_offset(r30,8)
+ cfi_offset(lr,20-16)
+ cfi_offset(r30,8-16)
#ifdef SHARED
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,.LCF1
diff --git a/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf.S b/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf.S
index 891e69c9c0..14bc0a2ceb 100644
--- a/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf.S
+++ b/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf.S
@@ -60,8 +60,8 @@ EALIGN (__sqrtf, 5, 0)
fmr fp12,fp2
stw r0,20(r1)
stw r30,8(r1)
- cfi_offset(lr,20)
- cfi_offset(r30,8)
+ cfi_offset(lr,20-16)
+ cfi_offset(r30,8-16)
#ifdef SHARED
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,.LCF1
diff --git a/sysdeps/powerpc/powerpc32/power6/memcpy.S b/sysdeps/powerpc/powerpc32/power6/memcpy.S
index ba45fd250c..cafe9174fd 100644
--- a/sysdeps/powerpc/powerpc32/power6/memcpy.S
+++ b/sysdeps/powerpc/powerpc32/power6/memcpy.S
@@ -1,5 +1,5 @@
/* Optimized memcpy implementation for PowerPC32 on POWER6.
- Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2006, 2009 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
@@ -25,9 +25,9 @@
Returns 'dst'.
Memcpy handles short copies (< 32-bytes) using a binary move blocks
- (no loops) of lwz/stw. The tail (remaining 1-3) bytes is handled
- with the appropriate combination of byte and halfword load/stores.
- There is minimal effort to optimize the alignment of short moves.
+ (no loops) of lwz/stw. The tail (remaining 1-3) bytes is handled
+ with the appropriate combination of byte and halfword load/stores.
+ There is minimal effort to optimize the alignment of short moves.
Longer moves (>= 32-bytes) justify the effort to get at least the
destination word (4-byte) aligned. Further optimization is
@@ -80,11 +80,11 @@ EALIGN (BP_SYM (memcpy), 5, 0)
bne- cr6,L(wdu) /* If source is not word aligned. .L6 */
clrlwi 11,31,30 /* calculate the number of tail bytes */
b L(word_aligned)
- /* Copy words from source to destination, assuming the destination is
+ /* Copy words from source to destination, assuming the destination is
aligned on a word boundary.
At this point we know there are at least 29 bytes left (32-3) to copy.
- The next step is to determine if the source is also word aligned.
+ The next step is to determine if the source is also word aligned.
If not branch to the unaligned move code at .L6. which uses
a load, shift, store strategy.
@@ -100,9 +100,9 @@ EALIGN (BP_SYM (memcpy), 5, 0)
/* Move words where destination and source are word aligned.
Use an unrolled loop to copy 4 words (16-bytes) per iteration.
- If the the copy is not an exact multiple of 16 bytes, 1-3
+ If the the copy is not an exact multiple of 16 bytes, 1-3
words are copied as needed to set up the main loop. After
- the main loop exits there may be a tail of 1-3 bytes. These bytes are
+ the main loop exits there may be a tail of 1-3 bytes. These bytes are
copied a halfword/byte at a time as needed to preserve alignment. */
L(word_aligned):
mtcrf 0x01,9
@@ -121,7 +121,7 @@ L(word_aligned):
addi 10,3,8
bf 31,4f
lwz 0,8(12)
- stw 0,8(3)
+ stw 0,8(3)
blt cr1,3f
addi 11,12,12
addi 10,3,12
@@ -135,7 +135,7 @@ L(word_aligned):
addi 11,12,4
stw 6,0(3)
addi 10,3,4
-
+
.align 4
4:
lwz 6,0(11)
@@ -149,14 +149,14 @@ L(word_aligned):
addi 11,11,16
addi 10,10,16
bdnz 4b
-3:
+3:
clrrwi 0,31,2
mtcrf 0x01,31
beq cr6,0f
.L9:
add 3,3,0
add 12,12,0
-
+
/* At this point we have a tail of 0-3 bytes and we know that the
destination is word aligned. */
2: bf 30,1f
@@ -175,7 +175,7 @@ L(word_aligned):
addi 1,1,32
blr
-/* Copy up to 31 bytes. This divided into two cases 0-8 bytes and 9-31
+/* Copy up to 31 bytes. This divided into two cases 0-8 bytes and 9-31
bytes. Each case is handled without loops, using binary (1,2,4,8)
tests.
@@ -208,7 +208,7 @@ L(word_unaligned_short):
andi. 0,8,3
beq cr6,L(wus_8) /* Handle moves of 8 bytes. */
/* At least 9 bytes left. Get the source word aligned. */
- cmpldi cr1,5,16
+ cmplwi cr1,5,16
mr 12,4
ble cr6,L(wus_4) /* Handle moves of 0-8 bytes. */
mr 11,3
@@ -220,7 +220,7 @@ L(word_unaligned_short):
subf 10,0,5
add 12,4,0
blt cr6,5f
- srdi 7,6,16
+ srwi 7,6,16
bgt cr6,3f
sth 6,0(3)
b 7f
@@ -241,7 +241,7 @@ L(wus_tail):
/* At least 6 bytes left and the source is word aligned. This allows
some speculative loads up front. */
/* We need to special case the fall-through because the biggest delays
- are due to address computation not being ready in time for the
+ are due to address computation not being ready in time for the
AGEN. */
lwz 6,0(12)
lwz 7,4(12)
@@ -336,7 +336,7 @@ L(wus_tail4): /* Move 4 bytes. */
L(wus_tail2): /* Move 2-3 bytes. */
bf 30,L(wus_tail1)
lhz 6,0(12)
- sth 6,0(11)
+ sth 6,0(11)
bf 31,L(wus_tailX)
lbz 7,2(12)
stb 7,2(11)
@@ -368,7 +368,7 @@ L(wus_4):
stw 6,0(3)
bf 30,L(wus_5)
lhz 7,4(4)
- sth 7,4(3)
+ sth 7,4(3)
bf 31,L(wus_0)
lbz 8,6(4)
stb 8,6(3)
@@ -386,7 +386,7 @@ L(wus_5):
L(wus_2): /* Move 2-3 bytes. */
bf 30,L(wus_1)
lhz 6,0(4)
- sth 6,0(3)
+ sth 6,0(3)
bf 31,L(wus_0)
lbz 7,2(4)
stb 7,2(3)
@@ -410,13 +410,13 @@ L(wdu):
/* Copy words where the destination is aligned but the source is
not. For power4, power5 and power6 machines there is penalty for
- unaligned loads (src) that cross 32-byte, cacheline, or page
+ unaligned loads (src) that cross 32-byte, cacheline, or page
boundaries. So we want to use simple (unaligned) loads where
posible but avoid them where we know the load would span a 32-byte
- boundary.
+ boundary.
At this point we know we have at least 29 (32-3) bytes to copy
- the src is unaligned. and we may cross at least one 32-byte
+ the src is unaligned. and we may cross at least one 32-byte
boundary. Also we have the following regester values:
r3 == adjusted dst, word aligned
r4 == unadjusted src
@@ -427,7 +427,7 @@ L(wdu):
r31 == adjusted len
First we need to copy word upto but not crossing the next 32-byte
- boundary. Then perform aligned loads just before and just after
+ boundary. Then perform aligned loads just before and just after
the boundary and use shifts and or to gernerate the next aligned
word for dst. If more then 32 bytes remain we copy (unaligned src)
the next 7 words and repeat the loop until less then 32-bytes
@@ -442,7 +442,7 @@ L(wdu):
mr 4,12 /* restore unaligned adjusted src ptr */
clrlwi 0,12,27 /* Find dist from previous 32-byte boundary. */
slwi 10,10,3 /* calculate number of bits to shift 1st word left */
- cmplwi cr5,0,16
+ cmplwi cr5,0,16
subfic 8,0,32 /* Number of bytes to next 32-byte boundary. */
mtcrf 0x01,8
@@ -532,7 +532,7 @@ L(wdu_32):
lwz 6,0(12)
cmplwi cr6,31,4
srwi 8,31,5 /* calculate the 32 byte loop count */
- slw 0,6,10
+ slw 0,6,10
clrlwi 31,31,27 /* The remaining bytes, < 32. */
blt cr5,L(wdu_32tail)
mtctr 8
@@ -543,7 +543,7 @@ L(wdu_loop32):
lwz 8,4(12)
addi 12,12,32
lwz 7,4(4)
- srw 8,8,9
+ srw 8,8,9
or 0,0,8
stw 0,0(3)
stw 7,4(3)
@@ -562,7 +562,7 @@ L(wdu_loop32):
stw 6,24(3)
stw 7,28(3)
addi 3,3,32
- slw 0,8,10
+ slw 0,8,10
bdnz+ L(wdu_loop32)
L(wdu_32tail):
@@ -571,7 +571,7 @@ L(wdu_32tail):
blt cr6,L(wdu_4tail)
/* calculate and store the final word */
lwz 8,4(12)
- srw 8,8,9
+ srw 8,8,9
or 6,0,8
b L(wdu_32tailx)
#endif
@@ -816,7 +816,7 @@ L(wdu_4tail):
beq cr6,L(wdus_0) /* If the tail is 0 bytes we are done! */
bf 30,L(wdus_3)
lhz 7,0(4)
- sth 7,0(3)
+ sth 7,0(3)
bf 31,L(wdus_0)
lbz 8,2(4)
stb 8,2(3)
diff --git a/sysdeps/powerpc/powerpc32/power6/memset.S b/sysdeps/powerpc/powerpc32/power6/memset.S
index 10fb7b9786..cc65b7be9a 100644
--- a/sysdeps/powerpc/powerpc32/power6/memset.S
+++ b/sysdeps/powerpc/powerpc32/power6/memset.S
@@ -1,5 +1,5 @@
/* Optimized 32-bit memset implementation for POWER6.
- Copyright (C) 1997,99, 2000,02,03,06,2007 Free Software Foundation, Inc.
+ Copyright (C) 1997,99,2000,02,03,06,2007,2009 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
@@ -240,7 +240,7 @@ L(nzCacheAligned256):
cmplwi cr1,rLEN,256
addi rMEMP3,rMEMP,64
#ifdef NOT_IN_libc
-/* When we are not in libc we should use only GPRs to avoid the FPU lock
+/* When we are not in libc we should use only GPRs to avoid the FPU lock
interrupt. */
stw rCHR,0(rMEMP)
stw rCHR,4(rMEMP)
@@ -381,7 +381,7 @@ L(cacheAligned):
blt cr1,L(cacheAligned1)
li rMEMP2,128
L(cacheAlignedx):
- cmpldi cr5,rLEN,640
+ cmplwi cr5,rLEN,640
blt cr6,L(cacheAligned128)
bgt cr5,L(cacheAligned512)
cmplwi cr6,rLEN,512
diff --git a/sysdeps/powerpc/powerpc32/power7/Implies b/sysdeps/powerpc/powerpc32/power7/Implies
new file mode 100644
index 0000000000..03899d8a3c
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/power7/Implies
@@ -0,0 +1 @@
+powerpc/powerpc32/power5
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/Implies b/sysdeps/powerpc/powerpc32/power7/fpu/Implies
new file mode 100644
index 0000000000..819a7d7979
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/power7/fpu/Implies
@@ -0,0 +1 @@
+powerpc/powerpc32/power5/fpu
diff --git a/sysdeps/powerpc/powerpc64/__longjmp-common.S b/sysdeps/powerpc/powerpc64/__longjmp-common.S
index 700a2a543c..1be1f8f3bb 100644
--- a/sysdeps/powerpc/powerpc64/__longjmp-common.S
+++ b/sysdeps/powerpc/powerpc64/__longjmp-common.S
@@ -1,6 +1,5 @@
/* longjmp for PowerPC64.
- Copyright (C) 1995, 1996,1997,1999,2000,2001,2002,2003,2004,2005,2006
- Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996,1997,1999-2006,2009 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
@@ -58,7 +57,7 @@ ENTRY (BP_SYM (__longjmp))
andi. r6,r5,0xf
lwz r0,((JB_VRSAVE)*8)(3)
mtspr VRSAVE,r0
- beq+ aligned_restore_vmx
+ beq+ L(aligned_restore_vmx)
addi r6,r5,16
lvsl v0,0,r5
lvx v1,0,r5
@@ -82,7 +81,7 @@ ENTRY (BP_SYM (__longjmp))
lvx v1,0,r5
vperm v31,v31,v1,v0
b L(no_vmx)
-aligned_restore_vmx:
+L(aligned_restore_vmx):
addi r6,r5,16
lvx v20,0,r5
addi r5,r5,32
@@ -108,12 +107,22 @@ aligned_restore_vmx:
lvx v31,0,r6
L(no_vmx):
#endif
-#ifdef PTR_DEMANGLE
+#if defined PTR_DEMANGLE || defined CHECK_SP
ld r22,(JB_GPR1*8)(r3)
- PTR_DEMANGLE3 (r1, r22, r25)
#else
ld r1,(JB_GPR1*8)(r3)
#endif
+#ifdef PTR_DEMANGLE
+# ifdef CHECK_SP
+ PTR_DEMANGLE3 (r22, r22, r25)
+# else
+ PTR_DEMANGLE3 (r1, r22, r25)
+# endif
+#endif
+#ifdef CHECK_SP
+ CHECK_SP (r22)
+ mr r1,r22
+#endif
ld r2,(JB_GPR2*8)(r3)
ld r0,(JB_LR*8)(r3)
ld r14,((JB_GPRS+0)*8)(r3)
diff --git a/sysdeps/powerpc/powerpc64/cell/memcpy.S b/sysdeps/powerpc/powerpc64/cell/memcpy.S
new file mode 100644
index 0000000000..c6ee730e4e
--- /dev/null
+++ b/sysdeps/powerpc/powerpc64/cell/memcpy.S
@@ -0,0 +1,245 @@
+/* Optimized memcpy implementation for CELL BE PowerPC.
+ Copyright (C) 2010 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <bp-sym.h>
+#include <bp-asm.h>
+
+#define PREFETCH_AHEAD 6 /* no cache lines SRC prefetching ahead */
+#define ZERO_AHEAD 4 /* no cache lines DST zeroing ahead */
+
+/* memcpy routine optimized for CELL-BE-PPC v2.0
+ *
+ * The CELL PPC core has 1 integer unit and 1 load/store unit
+ * CELL:
+ * 1st level data cache = 32K
+ * 2nd level data cache = 512K
+ * 3rd level data cache = 0K
+ * With 3.2 GHz clockrate the latency to 2nd level cache is >36 clocks,
+ * latency to memory is >400 clocks
+ * To improve copy performance we need to prefetch source data
+ * far ahead to hide this latency
+ * For best performance instructionforms ending in "." like "andi."
+ * should be avoided as the are implemented in microcode on CELL.
+ * The below code is loop unrolled for the CELL cache line of 128 bytes
+ */
+
+.align 7
+
+EALIGN (BP_SYM (memcpy), 5, 0)
+ CALL_MCOUNT 3
+
+ dcbt 0,r4 /* Prefetch ONE SRC cacheline */
+ cmpldi cr1,r5,16 /* is size < 16 ? */
+ mr r6,r3
+ blt+ cr1,.Lshortcopy
+
+.Lbigcopy:
+ neg r8,r3 /* LS 3 bits = # bytes to 8-byte dest bdry */
+ clrldi r8,r8,64-4 /* aling to 16byte boundary */
+ sub r7,r4,r3
+ cmpldi cr0,r8,0
+ beq+ .Ldst_aligned
+
+.Ldst_unaligned:
+ mtcrf 0x01,r8 /* put #bytes to boundary into cr7 */
+ subf r5,r8,r5
+
+ bf cr7*4+3,1f
+ lbzx r0,r7,r6 /* copy 1 byte */
+ stb r0,0(r6)
+ addi r6,r6,1
+1: bf cr7*4+2,2f
+ lhzx r0,r7,r6 /* copy 2 byte */
+ sth r0,0(r6)
+ addi r6,r6,2
+2: bf cr7*4+1,4f
+ lwzx r0,r7,r6 /* copy 4 byte */
+ stw r0,0(r6)
+ addi r6,r6,4
+4: bf cr7*4+0,8f
+ ldx r0,r7,r6 /* copy 8 byte */
+ std r0,0(r6)
+ addi r6,r6,8
+8:
+ add r4,r7,r6
+
+.Ldst_aligned:
+
+ cmpdi cr5,r5,128-1
+
+ neg r7,r6
+ addi r6,r6,-8 /* prepare for stdu */
+ addi r4,r4,-8 /* prepare for ldu */
+
+ clrldi r7,r7,64-7 /* align to cacheline boundary */
+ ble+ cr5,.Llessthancacheline
+
+ cmpldi cr6,r7,0
+ subf r5,r7,r5
+ srdi r7,r7,4 /* divide size by 16 */
+ srdi r10,r5,7 /* number of cache lines to copy */
+
+ cmpldi r10,0
+ li r11,0 /* number cachelines to copy with prefetch */
+ beq .Lnocacheprefetch
+
+ cmpldi r10,PREFETCH_AHEAD
+ li r12,128+8 /* prefetch distance */
+ ble .Llessthanmaxprefetch
+
+ subi r11,r10,PREFETCH_AHEAD
+ li r10,PREFETCH_AHEAD
+
+.Llessthanmaxprefetch:
+ mtctr r10
+
+.LprefetchSRC:
+ dcbt r12,r4
+ addi r12,r12,128
+ bdnz .LprefetchSRC
+
+.Lnocacheprefetch:
+ mtctr r7
+ cmpldi cr1,r5,128
+ clrldi r5,r5,64-7
+ beq cr6,.Lcachelinealigned
+
+.Laligntocacheline:
+ ld r9,0x08(r4)
+ ldu r7,0x10(r4)
+ std r9,0x08(r6)
+ stdu r7,0x10(r6)
+ bdnz .Laligntocacheline
+
+
+.Lcachelinealigned: /* copy while cache lines */
+
+ blt- cr1,.Llessthancacheline /* size <128 */
+
+.Louterloop:
+ cmpdi r11,0
+ mtctr r11
+ beq- .Lendloop
+
+ li r11,128*ZERO_AHEAD +8 /* DCBZ dist */
+
+.align 4
+ /* Copy whole cachelines, optimized by prefetching SRC cacheline */
+.Lloop: /* Copy aligned body */
+ dcbt r12,r4 /* PREFETCH SOURCE some cache lines ahead */
+ ld r9, 0x08(r4)
+ dcbz r11,r6
+ ld r7, 0x10(r4) /* 4 register stride copy is optimal */
+ ld r8, 0x18(r4) /* to hide 1st level cache lantency. */
+ ld r0, 0x20(r4)
+ std r9, 0x08(r6)
+ std r7, 0x10(r6)
+ std r8, 0x18(r6)
+ std r0, 0x20(r6)
+ ld r9, 0x28(r4)
+ ld r7, 0x30(r4)
+ ld r8, 0x38(r4)
+ ld r0, 0x40(r4)
+ std r9, 0x28(r6)
+ std r7, 0x30(r6)
+ std r8, 0x38(r6)
+ std r0, 0x40(r6)
+ ld r9, 0x48(r4)
+ ld r7, 0x50(r4)
+ ld r8, 0x58(r4)
+ ld r0, 0x60(r4)
+ std r9, 0x48(r6)
+ std r7, 0x50(r6)
+ std r8, 0x58(r6)
+ std r0, 0x60(r6)
+ ld r9, 0x68(r4)
+ ld r7, 0x70(r4)
+ ld r8, 0x78(r4)
+ ldu r0, 0x80(r4)
+ std r9, 0x68(r6)
+ std r7, 0x70(r6)
+ std r8, 0x78(r6)
+ stdu r0, 0x80(r6)
+
+ bdnz .Lloop
+
+.Lendloop:
+ cmpdi r10,0
+ sldi r10,r10,2 /* adjust from 128 to 32 byte stride */
+ beq- .Lendloop2
+ mtctr r10
+
+.Lloop2: /* Copy aligned body */
+ ld r9, 0x08(r4)
+ ld r7, 0x10(r4)
+ ld r8, 0x18(r4)
+ ldu r0, 0x20(r4)
+ std r9, 0x08(r6)
+ std r7, 0x10(r6)
+ std r8, 0x18(r6)
+ stdu r0, 0x20(r6)
+
+ bdnz .Lloop2
+.Lendloop2:
+
+.Llessthancacheline: /* less than cache to do ? */
+ cmpldi cr0,r5,16
+ srdi r7,r5,4 /* divide size by 16 */
+ blt- .Ldo_lt16
+ mtctr r7
+
+.Lcopy_remaining:
+ ld r8,0x08(r4)
+ ldu r7,0x10(r4)
+ std r8,0x08(r6)
+ stdu r7,0x10(r6)
+ bdnz .Lcopy_remaining
+
+.Ldo_lt16: /* less than 16 ? */
+ cmpldi cr0,r5,0 /* copy remaining bytes (0-15) */
+ beqlr+ /* no rest to copy */
+ addi r4,r4,8
+ addi r6,r6,8
+
+.Lshortcopy: /* SIMPLE COPY to handle size =< 15 bytes */
+ mtcrf 0x01,r5
+ sub r7,r4,r6
+ bf- cr7*4+0,8f
+ ldx r0,r7,r6 /* copy 8 byte */
+ std r0,0(r6)
+ addi r6,r6,8
+8:
+ bf cr7*4+1,4f
+ lwzx r0,r7,r6 /* copy 4 byte */
+ stw r0,0(r6)
+ addi r6,r6,4
+4:
+ bf cr7*4+2,2f
+ lhzx r0,r7,r6 /* copy 2 byte */
+ sth r0,0(r6)
+ addi r6,r6,2
+2:
+ bf cr7*4+3,1f
+ lbzx r0,r7,r6 /* copy 1 byte */
+ stb r0,0(r6)
+1: blr
+
+END_GEN_TB (BP_SYM (memcpy),TB_TOCLESS)
+libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc64/configure b/sysdeps/powerpc/powerpc64/configure
index 9075a5c8c4..a9b6722c11 100644
--- a/sysdeps/powerpc/powerpc64/configure
+++ b/sysdeps/powerpc/powerpc64/configure
@@ -3,10 +3,10 @@
# The Aix ld uses global .symbol_names instead of symbol_names
# and unfortunately early Linux PPC64 linkers use it as well.
-echo "$as_me:$LINENO: checking for support for omitting dot symbols" >&5
-echo $ECHO_N "checking for support for omitting dot symbols... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for support for omitting dot symbols" >&5
+$as_echo_n "checking for support for omitting dot symbols... " >&6; }
if test "${libc_cv_omit_dot_syms+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
libc_cv_omit_dot_syms=no
echo 'void foo (void) {}' > conftest.c
@@ -14,7 +14,7 @@ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
if grep -w '\.foo' conftest.s > /dev/null; then
:
@@ -25,8 +25,8 @@ fi
rm -f conftest.c conftest.s
fi
-echo "$as_me:$LINENO: result: $libc_cv_omit_dot_syms" >&5
-echo "${ECHO_T}$libc_cv_omit_dot_syms" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_omit_dot_syms" >&5
+$as_echo "$libc_cv_omit_dot_syms" >&6; }
if test x$libc_cv_omit_dot_syms != xyes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_ASM_GLOBAL_DOT_NAME 1
@@ -34,10 +34,10 @@ _ACEOF
fi
-echo "$as_me:$LINENO: checking for linker support for overlapping .opd entries" >&5
-echo $ECHO_N "checking for linker support for overlapping .opd entries... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for linker support for overlapping .opd entries" >&5
+$as_echo_n "checking for linker support for overlapping .opd entries... " >&6; }
if test "${libc_cv_overlapping_opd+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
libc_cv_overlapping_opd=no
echo 'void foo (void) {}' > conftest.c
@@ -45,7 +45,7 @@ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
if grep '\.TOC\.@tocbase' conftest.s > /dev/null; then
if grep '\.TOC\.@tocbase[ ]*,[ ]*0' conftest.s > /dev/null; then
@@ -58,8 +58,8 @@ fi
rm -f conftest.c conftest.s
fi
-echo "$as_me:$LINENO: result: $libc_cv_overlapping_opd" >&5
-echo "${ECHO_T}$libc_cv_overlapping_opd" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_overlapping_opd" >&5
+$as_echo "$libc_cv_overlapping_opd" >&6; }
if test x$libc_cv_overlapping_opd = xyes; then
cat >>confdefs.h <<\_ACEOF
#define USE_PPC64_OVERLAPPING_OPD 1
diff --git a/sysdeps/powerpc/powerpc64/dl-irel.h b/sysdeps/powerpc/powerpc64/dl-irel.h
new file mode 100644
index 0000000000..6cded5091d
--- /dev/null
+++ b/sysdeps/powerpc/powerpc64/dl-irel.h
@@ -0,0 +1,58 @@
+/* Machine-dependent ELF indirect relocation inline functions.
+ PowerPC64 version.
+ Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _DL_IREL_H
+#define _DL_IREL_H
+
+#include <stdio.h>
+#include <unistd.h>
+
+#define ELF_MACHINE_IRELA 1
+
+typedef struct
+{
+ Elf64_Addr fd_func;
+ Elf64_Addr fd_toc;
+ Elf64_Addr fd_aux;
+} Elf64_FuncDesc;
+
+static inline void
+__attribute ((always_inline))
+elf_irela (const Elf64_Rela *reloc)
+{
+ unsigned int r_type = ELF64_R_TYPE (reloc->r_info);
+
+ if (__builtin_expect (r_type == R_PPC64_IRELATIVE, 1))
+ {
+ Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
+ Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) ();
+ *reloc_addr = value;
+ }
+ else if (__builtin_expect (r_type == R_PPC64_JMP_IREL, 1))
+ {
+ Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
+ Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) ();
+ *(Elf64_FuncDesc *) reloc_addr = *(Elf64_FuncDesc *) value;
+ }
+ else
+ __libc_fatal ("unexpected reloc type in static binary");
+}
+
+#endif /* dl-irel.h */
diff --git a/sysdeps/powerpc/powerpc64/dl-machine.h b/sysdeps/powerpc/powerpc64/dl-machine.h
index b674dbef43..00888587af 100644
--- a/sysdeps/powerpc/powerpc64/dl-machine.h
+++ b/sysdeps/powerpc/powerpc64/dl-machine.h
@@ -526,6 +526,31 @@ elf_machine_tprel (struct link_map *map,
}
#endif
+/* Call function at address VALUE (an OPD entry) to resolve ifunc relocs. */
+auto inline Elf64_Addr __attribute__ ((always_inline))
+resolve_ifunc (Elf64_Addr value,
+ const struct link_map *map, const struct link_map *sym_map)
+{
+#ifndef RESOLVE_CONFLICT_FIND_MAP
+ /* The function we are calling may not yet have its opd entry relocated. */
+ Elf64_FuncDesc opd;
+ if (map != sym_map
+# if !defined RTLD_BOOTSTRAP && defined SHARED
+ /* Bootstrap map doesn't have l_relocated set for it. */
+ && sym_map != &GL(dl_rtld_map)
+# endif
+ && !sym_map->l_relocated)
+ {
+ Elf64_FuncDesc *func = (Elf64_FuncDesc *) value;
+ opd.fd_func = func->fd_func + sym_map->l_addr;
+ opd.fd_toc = func->fd_toc + sym_map->l_addr;
+ opd.fd_aux = func->fd_aux;
+ value = (Elf64_Addr) &opd;
+ }
+#endif
+ return ((Elf64_Addr (*) (void)) value) ();
+}
+
/* Perform the relocation specified by RELOC and SYM (which is fully
resolved). MAP is the object containing the reloc. */
auto inline void __attribute__ ((always_inline))
@@ -550,11 +575,17 @@ elf_machine_rela (struct link_map *map,
if (__builtin_expect (r_type == R_PPC64_NONE, 0))
return;
- /* We need SYM_MAP even in the absence of TLS, for elf_machine_fixup_plt. */
+ /* We need SYM_MAP even in the absence of TLS, for elf_machine_fixup_plt
+ and STT_GNU_IFUNC. */
struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
Elf64_Addr value = ((sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value)
+ reloc->r_addend);
+ if (sym != NULL
+ && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)
+ && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1))
+ value = resolve_ifunc (value, map, sym_map);
+
/* For relocs that don't edit code, return.
For relocs that might edit instructions, break from the switch. */
switch (r_type)
@@ -564,6 +595,14 @@ elf_machine_rela (struct link_map *map,
*reloc_addr = value;
return;
+ case R_PPC64_IRELATIVE:
+ value = resolve_ifunc (value, map, sym_map);
+ *reloc_addr = value;
+ return;
+
+ case R_PPC64_JMP_IREL:
+ value = resolve_ifunc (value, map, sym_map);
+ /* Fall thru */
case R_PPC64_JMP_SLOT:
#ifdef RESOLVE_CONFLICT_FIND_MAP
elf_machine_plt_conflict (reloc_addr, value);
diff --git a/sysdeps/powerpc/powerpc64/elf/configure b/sysdeps/powerpc/powerpc64/elf/configure
index ab79a5ab40..6ca1510a2c 100644
--- a/sysdeps/powerpc/powerpc64/elf/configure
+++ b/sysdeps/powerpc/powerpc64/elf/configure
@@ -4,10 +4,10 @@
if test "$usetls" != no; then
# Check for support of thread-local storage handling in assembler and
# linker.
-echo "$as_me:$LINENO: checking for powerpc64 TLS support" >&5
-echo $ECHO_N "checking for powerpc64 TLS support... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for powerpc64 TLS support" >&5
+$as_echo_n "checking for powerpc64 TLS support... " >&6; }
if test "${libc_cv_powerpc64_tls+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<\EOF
.section ".tdata","awT",@progbits
@@ -52,7 +52,7 @@ if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_powerpc64_tls=yes
else
@@ -60,8 +60,8 @@ else
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_powerpc64_tls" >&5
-echo "${ECHO_T}$libc_cv_powerpc64_tls" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_powerpc64_tls" >&5
+$as_echo "$libc_cv_powerpc64_tls" >&6; }
if test $libc_cv_powerpc64_tls = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TLS_SUPPORT 1
diff --git a/sysdeps/powerpc/powerpc64/elf/start.S b/sysdeps/powerpc/powerpc64/elf/start.S
index c9119a2624..e559b87841 100644
--- a/sysdeps/powerpc/powerpc64/elf/start.S
+++ b/sysdeps/powerpc/powerpc64/elf/start.S
@@ -1,5 +1,6 @@
/* Startup code for programs linked with GNU libc. PowerPC64 version.
- Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ Copyright (C) 1998,1999,2000,2001,2002,2003,2009
+ 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
@@ -83,4 +84,5 @@ END(_start)
.section ".data"
.globl __data_start
__data_start:
+ .long 0
weak_alias (__data_start, data_start)
diff --git a/sysdeps/powerpc/powerpc64/power7/Implies b/sysdeps/powerpc/powerpc64/power7/Implies
new file mode 100644
index 0000000000..13b03309fb
--- /dev/null
+++ b/sysdeps/powerpc/powerpc64/power7/Implies
@@ -0,0 +1 @@
+powerpc/powerpc64/power5
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/Implies b/sysdeps/powerpc/powerpc64/power7/fpu/Implies
new file mode 100644
index 0000000000..13b03309fb
--- /dev/null
+++ b/sysdeps/powerpc/powerpc64/power7/fpu/Implies
@@ -0,0 +1 @@
+powerpc/powerpc64/power5
diff --git a/sysdeps/powerpc/sysdep.h b/sysdeps/powerpc/sysdep.h
index 43edeb71eb..f5c79c54ef 100644
--- a/sysdeps/powerpc/sysdep.h
+++ b/sysdeps/powerpc/sysdep.h
@@ -44,8 +44,8 @@
#define PPC_FEATURE_PA6T 0x00000800 /* PA Semi 6T Core */
#define PPC_FEATURE_HAS_DFP 0x00000400 /* Decimal FP Unit */
#define PPC_FEATURE_POWER6_EXT 0x00000200 /* P6 + mffgpr/mftgpr */
-#define PPC_FEATURE_HAS_VSX 0x00000100 /* P7 Vector Extension. */
-#define PPC_FEATURE_ARCH_2_06 0x00000080 /* ISA 2.06 */
+#define PPC_FEATURE_ARCH_2_06 0x00000100 /* ISA 2.06 */
+#define PPC_FEATURE_HAS_VSX 0x00000080 /* P7 Vector Extension. */
#define PPC_FEATURE_970 (PPC_FEATURE_POWER4 + PPC_FEATURE_HAS_ALTIVEC)
#ifdef __ASSEMBLER__
diff --git a/sysdeps/pthread/aio_misc.c b/sysdeps/pthread/aio_misc.c
index fd3fcbb755..c82acbbc2d 100644
--- a/sysdeps/pthread/aio_misc.c
+++ b/sysdeps/pthread/aio_misc.c
@@ -1,5 +1,5 @@
/* Handle general operations.
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2006, 2007
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2006, 2007, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -372,9 +372,13 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
/* Simply enqueue it after the running one according to the
priority. */
+ last = NULL;
while (runp->next_prio != NULL
&& runp->next_prio->aiocbp->aiocb.__abs_prio >= prio)
- runp = runp->next_prio;
+ {
+ last = runp;
+ runp = runp->next_prio;
+ }
newp->next_prio = runp->next_prio;
runp->next_prio = newp;
@@ -403,6 +407,7 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
}
newp->next_prio = NULL;
+ last = NULL;
}
if (running == yes)
@@ -423,7 +428,8 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
running = newp->running = allocated;
/* Now try to start a thread. */
- if (aio_create_helper_thread (&thid, handle_fildes_io, newp) == 0)
+ result = aio_create_helper_thread (&thid, handle_fildes_io, newp);
+ if (result == 0)
/* We managed to enqueue the request. All errors which can
happen now can be recognized by calls to `aio_return' and
`aio_error'. */
@@ -434,10 +440,14 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
running = newp->running = yes;
if (nthreads == 0)
- /* We cannot create a thread in the moment and there is
- also no thread running. This is a problem. `errno' is
- set to EAGAIN if this is only a temporary problem. */
- result = -1;
+ {
+ /* We cannot create a thread in the moment and there is
+ also no thread running. This is a problem. `errno' is
+ set to EAGAIN if this is only a temporary problem. */
+ __aio_remove_request (last, newp, 0);
+ }
+ else
+ result = 0;
}
}
}
@@ -459,6 +469,8 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
{
/* Something went wrong. */
__aio_free_request (newp);
+ aiocbp->aiocb.__error_code = result;
+ __set_errno (result);
newp = NULL;
}
diff --git a/sysdeps/s390/bits/link.h b/sysdeps/s390/bits/link.h
index 70f0043820..bb6f54664c 100644
--- a/sysdeps/s390/bits/link.h
+++ b/sysdeps/s390/bits/link.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2009 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
@@ -104,7 +104,7 @@ extern unsigned int la_s390_64_gnu_pltexit (Elf64_Sym *__sym,
uintptr_t *__defcook,
const La_s390_64_regs *__inregs,
La_s390_64_retval *__outregs,
- const char *symname);
+ const char *__symname);
__END_DECLS
diff --git a/sysdeps/s390/dl-procinfo.c b/sysdeps/s390/dl-procinfo.c
index 32c6aef951..d51d7b2379 100644
--- a/sysdeps/s390/dl-procinfo.c
+++ b/sysdeps/s390/dl-procinfo.c
@@ -1,5 +1,5 @@
/* Data for s390 version of processor capability information.
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2006.
@@ -47,11 +47,11 @@
#if !defined PROCINFO_DECL && defined SHARED
._dl_s390_cap_flags
#else
-PROCINFO_CLASS const char _dl_s390_cap_flags[7][6]
+PROCINFO_CLASS const char _dl_s390_cap_flags[10][8]
#endif
#ifndef PROCINFO_DECL
= {
- "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp"
+ "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp", "hpage", "etf3enh", "highgprs"
}
#endif
#if !defined SHARED || defined PROCINFO_DECL
@@ -63,11 +63,11 @@ PROCINFO_CLASS const char _dl_s390_cap_flags[7][6]
#if !defined PROCINFO_DECL && defined SHARED
._dl_s390_platforms
#else
-PROCINFO_CLASS const char _dl_s390_platforms[4][7]
+PROCINFO_CLASS const char _dl_s390_platforms[5][7]
#endif
#ifndef PROCINFO_DECL
= {
- "g5", "z900", "z990", "z9-109"
+ "g5", "z900", "z990", "z9-109", "z10"
}
#endif
#if !defined SHARED || defined PROCINFO_DECL
diff --git a/sysdeps/s390/dl-procinfo.h b/sysdeps/s390/dl-procinfo.h
index 178d7cc017..0a7ebd3be9 100644
--- a/sysdeps/s390/dl-procinfo.h
+++ b/sysdeps/s390/dl-procinfo.h
@@ -1,5 +1,5 @@
/* s390 version of processor capability information handling macros.
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2006.
@@ -22,9 +22,9 @@
#define _DL_PROCINFO_H 1
#include <ldsodefs.h>
-#define _DL_HWCAP_COUNT 7
+#define _DL_HWCAP_COUNT 10
-#define _DL_PLATFORMS_COUNT 4
+#define _DL_PLATFORMS_COUNT 5
/* The kernel provides up to 32 capability bits with elf_hwcap. */
#define _DL_FIRST_PLATFORM 32
@@ -45,6 +45,9 @@ enum
HWCAP_S390_LDISP = 1 << 4,
HWCAP_S390_EIMM = 1 << 5,
HWCAP_S390_DFP = 1 << 6,
+ HWCAP_S390_HPAGE = 1 << 7,
+ HWCAP_S390_ETF3EH = 1 << 8,
+ HWCAP_S390_HIGH_GPRS = 1 << 9,
};
#define HWCAP_IMPORTANT (HWCAP_S390_ZARCH | HWCAP_S390_LDISP \
diff --git a/sysdeps/s390/s390-32/__longjmp.c b/sysdeps/s390/s390-32/__longjmp.c
index c47ebbc52a..4abc0ec81c 100644
--- a/sysdeps/s390/s390-32/__longjmp.c
+++ b/sysdeps/s390/s390-32/__longjmp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2005, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
@@ -33,6 +33,11 @@ __longjmp (__jmp_buf env, int val)
#ifdef PTR_DEMANGLE
register uintptr_t r3 __asm ("%r3") = THREAD_GET_POINTER_GUARD ();
register void *r1 __asm ("%r1") = (void *) env;
+# ifdef CHECK_SP
+ CHECK_SP (env, r3);
+# endif
+#elif defined CHECK_SP
+ CHECK_SP (env, 0);
#endif
/* Restore registers and jump back. */
asm volatile ("ld %%f6,48(%1)\n\t"
diff --git a/sysdeps/s390/s390-32/dl-machine.h b/sysdeps/s390/s390-32/dl-machine.h
index 64bf3423b6..415b388012 100644
--- a/sysdeps/s390/s390-32/dl-machine.h
+++ b/sysdeps/s390/s390-32/dl-machine.h
@@ -27,6 +27,7 @@
#include <sys/param.h>
#include <string.h>
#include <link.h>
+#include <sysdeps/s390/dl-procinfo.h>
/* This is an older, now obsolete value. */
#define EM_S390_OLD 0xA390
@@ -35,6 +36,12 @@
static inline int
elf_machine_matches_host (const Elf32_Ehdr *ehdr)
{
+ /* Check if the kernel provides the high gpr facility if needed by
+ the binary. */
+ if ((ehdr->e_flags & EF_S390_HIGH_GPRS)
+ && !(GLRO (dl_hwcap) & HWCAP_S390_HIGH_GPRS))
+ return 0;
+
return (ehdr->e_machine == EM_S390 || ehdr->e_machine == EM_S390_OLD)
&& ehdr->e_ident[EI_CLASS] == ELFCLASS32;
}
@@ -389,10 +396,13 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
*reloc_addr = value + reloc->r_addend - (Elf32_Addr) reloc_addr;
break;
case R_390_PC16DBL:
- case R_390_PLT16DBL:
*(unsigned short *) reloc_addr = (unsigned short)
((short) (value + reloc->r_addend - (Elf32_Addr) reloc_addr) >> 1);
break;
+ case R_390_PC32DBL:
+ *(unsigned int *) reloc_addr = (unsigned int)
+ ((int) (value + reloc->r_addend - (Elf32_Addr) reloc_addr) >> 1);
+ break;
case R_390_PC16:
*(unsigned short *) reloc_addr =
value + reloc->r_addend - (Elf32_Addr) reloc_addr;
diff --git a/sysdeps/s390/s390-32/dl-trampoline.S b/sysdeps/s390/s390-32/dl-trampoline.S
index fbbbc189db..cedef46382 100644
--- a/sysdeps/s390/s390-32/dl-trampoline.S
+++ b/sysdeps/s390/s390-32/dl-trampoline.S
@@ -45,6 +45,7 @@
_dl_runtime_resolve:
stm %r2,%r5,32(%r15) # save registers
st %r14,8(%r15)
+ cfi_offset (r14, -88)
lr %r0,%r15 # create stack frame
ahi %r15,-96
cfi_adjust_cfa_offset (96)
@@ -76,6 +77,11 @@ _dl_runtime_profile:
st %r6,8(%r15)
st %r12,12(%r15)
st %r14,16(%r15)
+ cfi_offset (r6, -64)
+ cfi_offset (f0, -40)
+ cfi_offset (f2, -32)
+ cfi_offset (r12, -84)
+ cfi_offset (r14, -80)
lr %r12,%r15 # create stack frame
cfi_def_cfa_register (12)
ahi %r15,-96
diff --git a/sysdeps/s390/s390-32/elf/configure b/sysdeps/s390/s390-32/elf/configure
index 684573049d..72abdbdd78 100644
--- a/sysdeps/s390/s390-32/elf/configure
+++ b/sysdeps/s390/s390-32/elf/configure
@@ -4,10 +4,10 @@
if test "$usetls" != no; then
# Check for support of thread-local storage handling in assembler and
# linker.
-echo "$as_me:$LINENO: checking for s390 TLS support" >&5
-echo $ECHO_N "checking for s390 TLS support... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for s390 TLS support" >&5
+$as_echo_n "checking for s390 TLS support... " >&6; }
if test "${libc_cv_390_tls+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.S <<\EOF
.section ".tdata", "awT", @progbits
@@ -28,7 +28,7 @@ if { ac_try='${CC-cc} -S $CFLAGS conftest.S 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_390_tls=yes
else
@@ -36,8 +36,8 @@ else
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_390_tls" >&5
-echo "${ECHO_T}$libc_cv_390_tls" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_390_tls" >&5
+$as_echo "$libc_cv_390_tls" >&6; }
if test $libc_cv_390_tls = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TLS_SUPPORT 1
diff --git a/sysdeps/s390/s390-32/elf/start.S b/sysdeps/s390/s390-32/elf/start.S
index f7290106ce..066f7f0aa1 100644
--- a/sysdeps/s390/s390-32/elf/start.S
+++ b/sysdeps/s390/s390-32/elf/start.S
@@ -59,6 +59,88 @@
.globl _start
.type _start,@function
_start:
+ /* Check if the kernel provides highgprs facility if needed by
+ the binary. */
+
+ lr %r6,%r15
+ la %r6,4(%r6) /* Skip the argument counter. */
+
+.L11: l %r5,0(%r6) /* Skip the argument vector. */
+ la %r6,4(%r6)
+ ltr %r5,%r5
+ jne .L11
+
+.L12: l %r5,0(%r6) /* Skip the environment vector. */
+ la %r6,4(%r6)
+ ltr %r5,%r5
+ jne .L12
+
+ /* Obtain the needed values from the auxiliary vector. */
+
+ lhi %r7,16 /* AT_HWCAP */
+ lhi %r8,3 /* AT_PHDR */
+ lhi %r9,5 /* AT_PHNUM */
+ lhi %r2,4 /* AT_PHENT */
+.L13: l %r5,0(%r6)
+ clr %r5,%r7
+ jne .L15
+ l %r10,4(%r6) /* r10 = AT_HWCAP value. */
+.L15: clr %r5,%r8
+ jne .L16
+ l %r11,4(%r6) /* r11 = AT_PHDR value. */
+.L16: clr %r5,%r9
+ jne .L17
+ l %r12,4(%r6) /* r12 = AT_PHNUM value. */
+.L17: clr %r5,%r2
+ jne .L18
+ l %r0,4(%r6) /* r0 = AT_PHENT value. */
+.L18: ltr %r5,%r5
+ la %r6,8(%r6)
+ jnz .L13
+
+ /* Locate the ELF header by looking for the first PT_LOAD
+ segment with a p_offset of zero. */
+
+ lr %r4,%r11 /* Backup AT_PHDR. */
+ lhi %r7,1 /* PT_LOAD id */
+ lhi %r8,0
+.L19: cl %r7,0(%r4) /* p_type == PT_LOAD? */
+ jne .L20
+ cl %r8,4(%r4) /* p_offset == 0? */
+ jne .L20
+ l %r9,8(%r4) /* r9 = p_vaddr <- ELF header address */
+ j .L24
+.L20: alr %r4,%r0 /* r4 += AT_PHENT value */
+ brct %r12,.L19
+
+ j .+2 /* Trap, there must be such a phdr. */
+
+.L24: lr %r4,%r11 /* Backup AT_PHDR. */
+ lhi %r2,6 /* PT_PHDR id */
+.L23: cl %r2,0(%r4)
+ jne .L22
+ l %r3,8(%r4) /* r3 = PT_PHDR p_vaddr */
+ j .L25
+.L22: alr %r4,%r0 /* r4 += AT_PHENT value */
+ brct %r12,.L23
+
+ ltr %r9,%r9 /* Load address == 0? */
+ jz .L14 /* No checking for PIE without PT_PHDR. */
+ j .L21
+
+.L25: clr %r3,%r11 /* PT_PHDR p_vaddr == AT_PHDR? */
+ je .L21
+ lr %r9,%r11
+ slr %r9,%r3 /* elf_header_addr = AT_PHDR - PT_PHDR.p_vaddr */
+
+.L21: l %r5,36(%r9) /* Load the e_flags field. */
+ tml %r5,1
+ jz .L14 /* Binary does not require highgprs facility. */
+
+ tml %r10,512 /* Check the AT_HWCAP value. */
+ jz 2 /* Trap if no highgprs facility available. */
+.L14:
+
/* Setup pointer to literal pool of _start */
basr %r13,0
.L0: ahi %r13,.Llit-.L0
diff --git a/sysdeps/s390/s390-32/s390-mcount.S b/sysdeps/s390/s390-32/s390-mcount.S
index 6d11f9bbdb..aae433bbc5 100644
--- a/sysdeps/s390/s390-32/s390-mcount.S
+++ b/sysdeps/s390/s390-32/s390-mcount.S
@@ -50,11 +50,15 @@
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(_mcount)
ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function)
+ cfi_startproc
.align ALIGNARG(4)
C_LABEL(_mcount)
/* Save the caller-clobbered registers. */
ahi %r15,-128
+ cfi_adjust_cfa_offset (128)
stm %r14,%r5,96(%r15)
+ cfi_offset (r14, 0)
+ cfi_offset (r15, 4)
l %r2,132(%r15) # callers address = first parameter
la %r2,0(%r2) # clear bit 0
la %r3,0(%r14) # callees address = second parameter
@@ -77,7 +81,9 @@ C_LABEL(_mcount)
*/
lm %r14,%r5,96(%r15)
ahi %r15,128
+ cfi_adjust_cfa_offset (-128)
br %r14
+ cfi_endproc
ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(_mcount))
#undef mcount
diff --git a/sysdeps/s390/s390-64/Makefile b/sysdeps/s390/s390-64/Makefile
index 0a5051449d..1814f37abd 100644
--- a/sysdeps/s390/s390-64/Makefile
+++ b/sysdeps/s390/s390-64/Makefile
@@ -9,3 +9,70 @@ CFLAGS-rtld.c += -Wno-uninitialized -Wno-unused
CFLAGS-dl-load.c += -Wno-unused
CFLAGS-dl-reloc.c += -Wno-unused
endif
+
+ifeq ($(subdir),iconvdata)
+ISO-8859-1_CP037_Z900-routines := iso-8859-1_cp037_z900
+ISO-8859-1_CP037_Z900-map := gconv.map
+
+UTF8_UTF32_Z9-routines := utf8-utf32-z9
+UTF8_UTF32_Z9-map := gconv.map
+
+UTF16_UTF32_Z9-routines := utf16-utf32-z9
+UTF16_UTF32_Z9-map := gconv.map
+
+UTF8_UTF16_Z9-routines := utf8-utf16-z9
+UTF8_UTF16_Z9-map := gconv.map
+
+s390x-iconv-modules = ISO-8859-1_CP037_Z900 UTF8_UTF16_Z9 UTF16_UTF32_Z9 UTF8_UTF32_Z9
+
+extra-modules-left += $(s390x-iconv-modules)
+include extra-module.mk
+
+extra-objs += $(addsuffix .so, $(s390x-iconv-modules))
+install-others += $(patsubst %, $(inst_gconvdir)/%.so, $(s390x-iconv-modules))
+
+distribute += iso-8859-1_cp037_z900.c utf8-utf32-z9.c utf16-utf32-z9.c utf8-utf16-z9.c
+
+$(patsubst %, $(inst_gconvdir)/%.so, $(s390x-iconv-modules)) : \
+$(inst_gconvdir)/%.so: $(objpfx)%.so $(+force)
+ $(do-install-program)
+
+$(objpfx)gconv-modules-s390: gconv-modules $(+force)
+ cp $< $@
+ echo >> $@
+ echo "# S/390 hardware accelerated modules" >> $@
+ echo -n "module ISO-8859-1// IBM037// " >> $@
+ echo " ISO-8859-1_CP037_Z900 1" >> $@
+ echo -n "module IBM037// ISO-8859-1// " >> $@
+ echo " ISO-8859-1_CP037_Z900 1" >> $@
+ echo -n "module ISO-10646/UTF8/ UTF-32// " >> $@
+ echo " UTF8_UTF32_Z9 1" >> $@
+ echo -n "module UTF-32BE// ISO-10646/UTF8/ " >> $@
+ echo " UTF8_UTF32_Z9 1" >> $@
+ echo -n "module ISO-10646/UTF8/ UTF-32BE// " >> $@
+ echo " UTF8_UTF32_Z9 1" >> $@
+ echo -n "module UTF-16BE// UTF-32// " >> $@
+ echo " UTF16_UTF32_Z9 1" >> $@
+ echo -n "module UTF-32BE// UTF-16// " >> $@
+ echo " UTF16_UTF32_Z9 1" >> $@
+ echo -n "module INTERNAL UTF-16// " >> $@
+ echo " UTF16_UTF32_Z9 1" >> $@
+ echo -n "module UTF-32BE// UTF-16BE// " >> $@
+ echo " UTF16_UTF32_Z9 1" >> $@
+ echo -n "module INTERNAL UTF-16BE// " >> $@
+ echo " UTF16_UTF32_Z9 1" >> $@
+ echo -n "module UTF-16BE// UTF-32BE// " >> $@
+ echo " UTF16_UTF32_Z9 1" >> $@
+ echo -n "module UTF-16BE// INTERNAL " >> $@
+ echo " UTF16_UTF32_Z9 1" >> $@
+ echo -n "module UTF-16BE// ISO-10646/UTF8/ " >> $@
+ echo " UTF8_UTF16_Z9 1" >> $@
+ echo -n "module ISO-10646/UTF8/ UTF-16// " >> $@
+ echo " UTF8_UTF16_Z9 1" >> $@
+ echo -n "module ISO-10646/UTF8/ UTF-16BE// " >> $@
+ echo " UTF8_UTF16_Z9 1" >> $@
+
+$(inst_gconvdir)/gconv-modules: $(objpfx)gconv-modules-s390 $(+force)
+ $(do-install)
+
+endif
diff --git a/sysdeps/s390/s390-64/__longjmp.c b/sysdeps/s390/s390-64/__longjmp.c
index 030fb5b515..445bd3baf3 100644
--- a/sysdeps/s390/s390-64/__longjmp.c
+++ b/sysdeps/s390/s390-64/__longjmp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2005, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
@@ -33,6 +33,11 @@ __longjmp (__jmp_buf env, int val)
#ifdef PTR_DEMANGLE
register uintptr_t r3 __asm ("%r3") = THREAD_GET_POINTER_GUARD ();
register void *r1 __asm ("%r1") = (void *) env;
+# ifdef CHECK_SP
+ CHECK_SP (env, r3);
+# endif
+#elif defined CHECK_SP
+ CHECK_SP (env, 0);
#endif
/* Restore registers and jump back. */
asm volatile ("ld %%f7,104(%1)\n\t"
diff --git a/sysdeps/s390/s390-64/dl-machine.h b/sysdeps/s390/s390-64/dl-machine.h
index fa893befdf..c4df274cdb 100644
--- a/sysdeps/s390/s390-64/dl-machine.h
+++ b/sysdeps/s390/s390-64/dl-machine.h
@@ -371,7 +371,6 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
*reloc_addr = value +reloc->r_addend - (Elf64_Addr) reloc_addr;
break;
case R_390_PC32DBL:
- case R_390_PLT32DBL:
*(unsigned int *) reloc_addr = (unsigned int)
((int) (value + reloc->r_addend - (Elf64_Addr) reloc_addr) >> 1);
break;
@@ -380,7 +379,6 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
value + reloc->r_addend - (Elf64_Addr) reloc_addr;
break;
case R_390_PC16DBL:
- case R_390_PLT16DBL:
*(unsigned short *) reloc_addr = (unsigned short)
((short) (value + reloc->r_addend - (Elf64_Addr) reloc_addr) >> 1);
break;
diff --git a/sysdeps/s390/s390-64/dl-trampoline.S b/sysdeps/s390/s390-64/dl-trampoline.S
index 72043c9779..b49c68108d 100644
--- a/sysdeps/s390/s390-64/dl-trampoline.S
+++ b/sysdeps/s390/s390-64/dl-trampoline.S
@@ -42,6 +42,7 @@
_dl_runtime_resolve:
stmg 2,5,64(15) # save registers
stg 14,96(15)
+ cfi_offset (r14, -64)
lgr 0,15 # create stack frame
aghi 15,-160
cfi_adjust_cfa_offset (160)
@@ -72,6 +73,13 @@ _dl_runtime_profile:
stg %r6,16(%r15)
stg %r12,24(%r15)
stg %r14,32(%r15)
+ cfi_offset (r6, -96)
+ cfi_offset (f0, -56)
+ cfi_offset (f2, -48)
+ cfi_offset (f4, -40)
+ cfi_offset (f6, -32)
+ cfi_offset (r12, -136)
+ cfi_offset (r14, -128)
lgr %r12,%r15 # create stack frame
cfi_def_cfa_register (12)
aghi %r15,-160
diff --git a/sysdeps/s390/s390-64/elf/configure b/sysdeps/s390/s390-64/elf/configure
index adf5174ab9..3851674c7c 100644
--- a/sysdeps/s390/s390-64/elf/configure
+++ b/sysdeps/s390/s390-64/elf/configure
@@ -4,10 +4,10 @@
if test "$usetls" != no; then
# Check for support of thread-local storage handling in assembler and
# linker.
-echo "$as_me:$LINENO: checking for s390 TLS support" >&5
-echo $ECHO_N "checking for s390 TLS support... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for s390 TLS support" >&5
+$as_echo_n "checking for s390 TLS support... " >&6; }
if test "${libc_cv_390_tls+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.S <<\EOF
.section ".tdata", "awT", @progbits
@@ -28,7 +28,7 @@ if { ac_try='${CC-cc} -S $CFLAGS conftest.S 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_390_tls=yes
else
@@ -36,8 +36,8 @@ else
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_390_tls" >&5
-echo "${ECHO_T}$libc_cv_390_tls" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_390_tls" >&5
+$as_echo "$libc_cv_390_tls" >&6; }
if test $libc_cv_390_tls = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TLS_SUPPORT 1
diff --git a/sysdeps/s390/s390-64/iso-8859-1_cp037_z900.c b/sysdeps/s390/s390-64/iso-8859-1_cp037_z900.c
new file mode 100644
index 0000000000..d4c4931f22
--- /dev/null
+++ b/sysdeps/s390/s390-64/iso-8859-1_cp037_z900.c
@@ -0,0 +1,238 @@
+/* Conversion between ISO 8859-1 and IBM037.
+
+ This module uses the Z900 variant of the Translate One To One
+ instruction.
+ Copyright (C) 1997-2009 Free Software Foundation, Inc.
+
+ Author: Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+ Based on the work by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ Thanks to Daniel Appich who covered the relevant performance work
+ in his diploma thesis.
+
+ This 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.
+
+ This 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <dlfcn.h>
+#include <stdint.h>
+
+// conversion table from ISO-8859-1 to IBM037
+static const unsigned char table_iso8859_1_to_cp037[256]
+__attribute__ ((aligned (8))) =
+{
+ [0x00] = 0x00, [0x01] = 0x01, [0x02] = 0x02, [0x03] = 0x03,
+ [0x04] = 0x37, [0x05] = 0x2D, [0x06] = 0x2E, [0x07] = 0x2F,
+ [0x08] = 0x16, [0x09] = 0x05, [0x0A] = 0x25, [0x0B] = 0x0B,
+ [0x0C] = 0x0C, [0x0D] = 0x0D, [0x0E] = 0x0E, [0x0F] = 0x0F,
+ [0x10] = 0x10, [0x11] = 0x11, [0x12] = 0x12, [0x13] = 0x13,
+ [0x14] = 0x3C, [0x15] = 0x3D, [0x16] = 0x32, [0x17] = 0x26,
+ [0x18] = 0x18, [0x19] = 0x19, [0x1A] = 0x3F, [0x1B] = 0x27,
+ [0x1C] = 0x1C, [0x1D] = 0x1D, [0x1E] = 0x1E, [0x1F] = 0x1F,
+ [0x20] = 0x40, [0x21] = 0x5A, [0x22] = 0x7F, [0x23] = 0x7B,
+ [0x24] = 0x5B, [0x25] = 0x6C, [0x26] = 0x50, [0x27] = 0x7D,
+ [0x28] = 0x4D, [0x29] = 0x5D, [0x2A] = 0x5C, [0x2B] = 0x4E,
+ [0x2C] = 0x6B, [0x2D] = 0x60, [0x2E] = 0x4B, [0x2F] = 0x61,
+ [0x30] = 0xF0, [0x31] = 0xF1, [0x32] = 0xF2, [0x33] = 0xF3,
+ [0x34] = 0xF4, [0x35] = 0xF5, [0x36] = 0xF6, [0x37] = 0xF7,
+ [0x38] = 0xF8, [0x39] = 0xF9, [0x3A] = 0x7A, [0x3B] = 0x5E,
+ [0x3C] = 0x4C, [0x3D] = 0x7E, [0x3E] = 0x6E, [0x3F] = 0x6F,
+ [0x40] = 0x7C, [0x41] = 0xC1, [0x42] = 0xC2, [0x43] = 0xC3,
+ [0x44] = 0xC4, [0x45] = 0xC5, [0x46] = 0xC6, [0x47] = 0xC7,
+ [0x48] = 0xC8, [0x49] = 0xC9, [0x4A] = 0xD1, [0x4B] = 0xD2,
+ [0x4C] = 0xD3, [0x4D] = 0xD4, [0x4E] = 0xD5, [0x4F] = 0xD6,
+ [0x50] = 0xD7, [0x51] = 0xD8, [0x52] = 0xD9, [0x53] = 0xE2,
+ [0x54] = 0xE3, [0x55] = 0xE4, [0x56] = 0xE5, [0x57] = 0xE6,
+ [0x58] = 0xE7, [0x59] = 0xE8, [0x5A] = 0xE9, [0x5B] = 0xBA,
+ [0x5C] = 0xE0, [0x5D] = 0xBB, [0x5E] = 0xB0, [0x5F] = 0x6D,
+ [0x60] = 0x79, [0x61] = 0x81, [0x62] = 0x82, [0x63] = 0x83,
+ [0x64] = 0x84, [0x65] = 0x85, [0x66] = 0x86, [0x67] = 0x87,
+ [0x68] = 0x88, [0x69] = 0x89, [0x6A] = 0x91, [0x6B] = 0x92,
+ [0x6C] = 0x93, [0x6D] = 0x94, [0x6E] = 0x95, [0x6F] = 0x96,
+ [0x70] = 0x97, [0x71] = 0x98, [0x72] = 0x99, [0x73] = 0xA2,
+ [0x74] = 0xA3, [0x75] = 0xA4, [0x76] = 0xA5, [0x77] = 0xA6,
+ [0x78] = 0xA7, [0x79] = 0xA8, [0x7A] = 0xA9, [0x7B] = 0xC0,
+ [0x7C] = 0x4F, [0x7D] = 0xD0, [0x7E] = 0xA1, [0x7F] = 0x07,
+ [0x80] = 0x20, [0x81] = 0x21, [0x82] = 0x22, [0x83] = 0x23,
+ [0x84] = 0x24, [0x85] = 0x15, [0x86] = 0x06, [0x87] = 0x17,
+ [0x88] = 0x28, [0x89] = 0x29, [0x8A] = 0x2A, [0x8B] = 0x2B,
+ [0x8C] = 0x2C, [0x8D] = 0x09, [0x8E] = 0x0A, [0x8F] = 0x1B,
+ [0x90] = 0x30, [0x91] = 0x31, [0x92] = 0x1A, [0x93] = 0x33,
+ [0x94] = 0x34, [0x95] = 0x35, [0x96] = 0x36, [0x97] = 0x08,
+ [0x98] = 0x38, [0x99] = 0x39, [0x9A] = 0x3A, [0x9B] = 0x3B,
+ [0x9C] = 0x04, [0x9D] = 0x14, [0x9E] = 0x3E, [0x9F] = 0xFF,
+ [0xA0] = 0x41, [0xA1] = 0xAA, [0xA2] = 0x4A, [0xA3] = 0xB1,
+ [0xA4] = 0x9F, [0xA5] = 0xB2, [0xA6] = 0x6A, [0xA7] = 0xB5,
+ [0xA8] = 0xBD, [0xA9] = 0xB4, [0xAA] = 0x9A, [0xAB] = 0x8A,
+ [0xAC] = 0x5F, [0xAD] = 0xCA, [0xAE] = 0xAF, [0xAF] = 0xBC,
+ [0xB0] = 0x90, [0xB1] = 0x8F, [0xB2] = 0xEA, [0xB3] = 0xFA,
+ [0xB4] = 0xBE, [0xB5] = 0xA0, [0xB6] = 0xB6, [0xB7] = 0xB3,
+ [0xB8] = 0x9D, [0xB9] = 0xDA, [0xBA] = 0x9B, [0xBB] = 0x8B,
+ [0xBC] = 0xB7, [0xBD] = 0xB8, [0xBE] = 0xB9, [0xBF] = 0xAB,
+ [0xC0] = 0x64, [0xC1] = 0x65, [0xC2] = 0x62, [0xC3] = 0x66,
+ [0xC4] = 0x63, [0xC5] = 0x67, [0xC6] = 0x9E, [0xC7] = 0x68,
+ [0xC8] = 0x74, [0xC9] = 0x71, [0xCA] = 0x72, [0xCB] = 0x73,
+ [0xCC] = 0x78, [0xCD] = 0x75, [0xCE] = 0x76, [0xCF] = 0x77,
+ [0xD0] = 0xAC, [0xD1] = 0x69, [0xD2] = 0xED, [0xD3] = 0xEE,
+ [0xD4] = 0xEB, [0xD5] = 0xEF, [0xD6] = 0xEC, [0xD7] = 0xBF,
+ [0xD8] = 0x80, [0xD9] = 0xFD, [0xDA] = 0xFE, [0xDB] = 0xFB,
+ [0xDC] = 0xFC, [0xDD] = 0xAD, [0xDE] = 0xAE, [0xDF] = 0x59,
+ [0xE0] = 0x44, [0xE1] = 0x45, [0xE2] = 0x42, [0xE3] = 0x46,
+ [0xE4] = 0x43, [0xE5] = 0x47, [0xE6] = 0x9C, [0xE7] = 0x48,
+ [0xE8] = 0x54, [0xE9] = 0x51, [0xEA] = 0x52, [0xEB] = 0x53,
+ [0xEC] = 0x58, [0xED] = 0x55, [0xEE] = 0x56, [0xEF] = 0x57,
+ [0xF0] = 0x8C, [0xF1] = 0x49, [0xF2] = 0xCD, [0xF3] = 0xCE,
+ [0xF4] = 0xCB, [0xF5] = 0xCF, [0xF6] = 0xCC, [0xF7] = 0xE1,
+ [0xF8] = 0x70, [0xF9] = 0xDD, [0xFA] = 0xDE, [0xFB] = 0xDB,
+ [0xFC] = 0xDC, [0xFD] = 0x8D, [0xFE] = 0x8E, [0xFF] = 0xDF
+};
+
+// conversion table from IBM037 to ISO-8859-1
+static const unsigned char table_cp037_iso8859_1[256]
+__attribute__ ((aligned (8))) =
+{
+ [0x00] = 0x00, [0x01] = 0x01, [0x02] = 0x02, [0x03] = 0x03,
+ [0x04] = 0x9C, [0x05] = 0x09, [0x06] = 0x86, [0x07] = 0x7F,
+ [0x08] = 0x97, [0x09] = 0x8D, [0x0A] = 0x8E, [0x0B] = 0x0B,
+ [0x0C] = 0x0C, [0x0D] = 0x0D, [0x0E] = 0x0E, [0x0F] = 0x0F,
+ [0x10] = 0x10, [0x11] = 0x11, [0x12] = 0x12, [0x13] = 0x13,
+ [0x14] = 0x9D, [0x15] = 0x85, [0x16] = 0x08, [0x17] = 0x87,
+ [0x18] = 0x18, [0x19] = 0x19, [0x1A] = 0x92, [0x1B] = 0x8F,
+ [0x1C] = 0x1C, [0x1D] = 0x1D, [0x1E] = 0x1E, [0x1F] = 0x1F,
+ [0x20] = 0x80, [0x21] = 0x81, [0x22] = 0x82, [0x23] = 0x83,
+ [0x24] = 0x84, [0x25] = 0x0A, [0x26] = 0x17, [0x27] = 0x1B,
+ [0x28] = 0x88, [0x29] = 0x89, [0x2A] = 0x8A, [0x2B] = 0x8B,
+ [0x2C] = 0x8C, [0x2D] = 0x05, [0x2E] = 0x06, [0x2F] = 0x07,
+ [0x30] = 0x90, [0x31] = 0x91, [0x32] = 0x16, [0x33] = 0x93,
+ [0x34] = 0x94, [0x35] = 0x95, [0x36] = 0x96, [0x37] = 0x04,
+ [0x38] = 0x98, [0x39] = 0x99, [0x3A] = 0x9A, [0x3B] = 0x9B,
+ [0x3C] = 0x14, [0x3D] = 0x15, [0x3E] = 0x9E, [0x3F] = 0x1A,
+ [0x40] = 0x20, [0x41] = 0xA0, [0x42] = 0xE2, [0x43] = 0xE4,
+ [0x44] = 0xE0, [0x45] = 0xE1, [0x46] = 0xE3, [0x47] = 0xE5,
+ [0x48] = 0xE7, [0x49] = 0xF1, [0x4A] = 0xA2, [0x4B] = 0x2E,
+ [0x4C] = 0x3C, [0x4D] = 0x28, [0x4E] = 0x2B, [0x4F] = 0x7C,
+ [0x50] = 0x26, [0x51] = 0xE9, [0x52] = 0xEA, [0x53] = 0xEB,
+ [0x54] = 0xE8, [0x55] = 0xED, [0x56] = 0xEE, [0x57] = 0xEF,
+ [0x58] = 0xEC, [0x59] = 0xDF, [0x5A] = 0x21, [0x5B] = 0x24,
+ [0x5C] = 0x2A, [0x5D] = 0x29, [0x5E] = 0x3B, [0x5F] = 0xAC,
+ [0x60] = 0x2D, [0x61] = 0x2F, [0x62] = 0xC2, [0x63] = 0xC4,
+ [0x64] = 0xC0, [0x65] = 0xC1, [0x66] = 0xC3, [0x67] = 0xC5,
+ [0x68] = 0xC7, [0x69] = 0xD1, [0x6A] = 0xA6, [0x6B] = 0x2C,
+ [0x6C] = 0x25, [0x6D] = 0x5F, [0x6E] = 0x3E, [0x6F] = 0x3F,
+ [0x70] = 0xF8, [0x71] = 0xC9, [0x72] = 0xCA, [0x73] = 0xCB,
+ [0x74] = 0xC8, [0x75] = 0xCD, [0x76] = 0xCE, [0x77] = 0xCF,
+ [0x78] = 0xCC, [0x79] = 0x60, [0x7A] = 0x3A, [0x7B] = 0x23,
+ [0x7C] = 0x40, [0x7D] = 0x27, [0x7E] = 0x3D, [0x7F] = 0x22,
+ [0x80] = 0xD8, [0x81] = 0x61, [0x82] = 0x62, [0x83] = 0x63,
+ [0x84] = 0x64, [0x85] = 0x65, [0x86] = 0x66, [0x87] = 0x67,
+ [0x88] = 0x68, [0x89] = 0x69, [0x8A] = 0xAB, [0x8B] = 0xBB,
+ [0x8C] = 0xF0, [0x8D] = 0xFD, [0x8E] = 0xFE, [0x8F] = 0xB1,
+ [0x90] = 0xB0, [0x91] = 0x6A, [0x92] = 0x6B, [0x93] = 0x6C,
+ [0x94] = 0x6D, [0x95] = 0x6E, [0x96] = 0x6F, [0x97] = 0x70,
+ [0x98] = 0x71, [0x99] = 0x72, [0x9A] = 0xAA, [0x9B] = 0xBA,
+ [0x9C] = 0xE6, [0x9D] = 0xB8, [0x9E] = 0xC6, [0x9F] = 0xA4,
+ [0xA0] = 0xB5, [0xA1] = 0x7E, [0xA2] = 0x73, [0xA3] = 0x74,
+ [0xA4] = 0x75, [0xA5] = 0x76, [0xA6] = 0x77, [0xA7] = 0x78,
+ [0xA8] = 0x79, [0xA9] = 0x7A, [0xAA] = 0xA1, [0xAB] = 0xBF,
+ [0xAC] = 0xD0, [0xAD] = 0xDD, [0xAE] = 0xDE, [0xAF] = 0xAE,
+ [0xB0] = 0x5E, [0xB1] = 0xA3, [0xB2] = 0xA5, [0xB3] = 0xB7,
+ [0xB4] = 0xA9, [0xB5] = 0xA7, [0xB6] = 0xB6, [0xB7] = 0xBC,
+ [0xB8] = 0xBD, [0xB9] = 0xBE, [0xBA] = 0x5B, [0xBB] = 0x5D,
+ [0xBC] = 0xAF, [0xBD] = 0xA8, [0xBE] = 0xB4, [0xBF] = 0xD7,
+ [0xC0] = 0x7B, [0xC1] = 0x41, [0xC2] = 0x42, [0xC3] = 0x43,
+ [0xC4] = 0x44, [0xC5] = 0x45, [0xC6] = 0x46, [0xC7] = 0x47,
+ [0xC8] = 0x48, [0xC9] = 0x49, [0xCA] = 0xAD, [0xCB] = 0xF4,
+ [0xCC] = 0xF6, [0xCD] = 0xF2, [0xCE] = 0xF3, [0xCF] = 0xF5,
+ [0xD0] = 0x7D, [0xD1] = 0x4A, [0xD2] = 0x4B, [0xD3] = 0x4C,
+ [0xD4] = 0x4D, [0xD5] = 0x4E, [0xD6] = 0x4F, [0xD7] = 0x50,
+ [0xD8] = 0x51, [0xD9] = 0x52, [0xDA] = 0xB9, [0xDB] = 0xFB,
+ [0xDC] = 0xFC, [0xDD] = 0xF9, [0xDE] = 0xFA, [0xDF] = 0xFF,
+ [0xE0] = 0x5C, [0xE1] = 0xF7, [0xE2] = 0x53, [0xE3] = 0x54,
+ [0xE4] = 0x55, [0xE5] = 0x56, [0xE6] = 0x57, [0xE7] = 0x58,
+ [0xE8] = 0x59, [0xE9] = 0x5A, [0xEA] = 0xB2, [0xEB] = 0xD4,
+ [0xEC] = 0xD6, [0xED] = 0xD2, [0xEE] = 0xD3, [0xEF] = 0xD5,
+ [0xF0] = 0x30, [0xF1] = 0x31, [0xF2] = 0x32, [0xF3] = 0x33,
+ [0xF4] = 0x34, [0xF5] = 0x35, [0xF6] = 0x36, [0xF7] = 0x37,
+ [0xF8] = 0x38, [0xF9] = 0x39, [0xFA] = 0xB3, [0xFB] = 0xDB,
+ [0xFC] = 0xDC, [0xFD] = 0xD9, [0xFE] = 0xDA, [0xFF] = 0x9F
+};
+
+/* Definitions used in the body of the `gconv' function. */
+#define CHARSET_NAME "ISO-8859-1//"
+#define FROM_LOOP iso8859_1_to_cp037_z900
+#define TO_LOOP cp037_to_iso8859_1_z900
+#define DEFINE_INIT 1
+#define DEFINE_FINI 1
+#define MIN_NEEDED_FROM 1
+#define MIN_NEEDED_TO 1
+
+/* The Z900 variant of troo forces us to always specify a test
+ character which ends the translation. So if we run into the
+ situation where the translation has been interrupted due to the
+ test character we translate the character by hand and jump back
+ into the instruction. */
+
+#define TROO_LOOP(TABLE) \
+ { \
+ register const unsigned char test asm ("0") = 0; \
+ register const unsigned char *pTable asm ("1") = TABLE; \
+ register unsigned char *pOutput asm ("2") = outptr; \
+ register uint64_t length asm ("3"); \
+ const unsigned char* pInput = inptr; \
+ uint64_t tmp; \
+ \
+ length = (inend - inptr < outend - outptr \
+ ? inend - inptr : outend - outptr); \
+ \
+ asm volatile ("0: \n\t" \
+ " troo %0,%1 \n\t" \
+ " jz 1f \n\t" \
+ " jo 0b \n\t" \
+ " llgc %3,0(%1) \n\t" \
+ " la %3,0(%3,%4) \n\t" \
+ " mvc 0(1,%0),0(%3) \n\t" \
+ " aghi %1,1 \n\t" \
+ " aghi %0,1 \n\t" \
+ " aghi %2,-1 \n\t" \
+ " j 0b \n\t" \
+ "1: \n" \
+ \
+ : "+a" (pOutput), "+a" (pInput), "+d" (length), "=&a" (tmp) \
+ : "a" (pTable), "d" (test) \
+ : "cc"); \
+ \
+ inptr = pInput; \
+ outptr = pOutput; \
+ }
+
+/* First define the conversion function from ISO 8859-1 to CP037. */
+#define MIN_NEEDED_INPUT MIN_NEEDED_FROM
+#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO
+#define LOOPFCT FROM_LOOP
+#define BODY TROO_LOOP (table_iso8859_1_to_cp037)
+
+#include <iconv/loop.c>
+
+
+/* Next, define the conversion function from CP037 to ISO 8859-1. */
+#define MIN_NEEDED_INPUT MIN_NEEDED_TO
+#define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM
+#define LOOPFCT TO_LOOP
+#define BODY TROO_LOOP (table_cp037_iso8859_1);
+
+#include <iconv/loop.c>
+
+
+/* Now define the toplevel functions. */
+#include <iconv/skeleton.c>
diff --git a/sysdeps/s390/s390-64/s390x-mcount.S b/sysdeps/s390/s390-64/s390x-mcount.S
index 78b55218a9..e866c3f5a9 100644
--- a/sysdeps/s390/s390-64/s390x-mcount.S
+++ b/sysdeps/s390/s390-64/s390x-mcount.S
@@ -46,11 +46,15 @@
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(_mcount)
ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function)
+ cfi_startproc
.align ALIGNARG(4)
C_LABEL(_mcount)
/* Save the caller-clobbered registers. */
aghi %r15,-224
+ cfi_adjust_cfa_offset (224)
stmg %r14,%r5,160(%r15)
+ cfi_offset (r14, 0)
+ cfi_offset (r15, 8)
lg %r2,232(%r15) # callers address = first parameter
la %r2,0(%r2) # clear bit 0
la %r3,0(%r14) # callees address = second parameter
@@ -65,7 +69,9 @@ C_LABEL(_mcount)
return value. */
lmg %r14,%r5,160(%r15)
aghi %r15,224
+ cfi_adjust_cfa_offset (-224)
br %r14
+ cfi_endproc
ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(_mcount))
#undef mcount
diff --git a/sysdeps/s390/s390-64/utf16-utf32-z9.c b/sysdeps/s390/s390-64/utf16-utf32-z9.c
new file mode 100644
index 0000000000..868dea68ca
--- /dev/null
+++ b/sysdeps/s390/s390-64/utf16-utf32-z9.c
@@ -0,0 +1,325 @@
+/* Conversion between UTF-16 and UTF-32 BE/internal.
+
+ This module uses the Z9-109 variants of the Convert Unicode
+ instructions.
+ Copyright (C) 1997-2009 Free Software Foundation, Inc.
+
+ Author: Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+ Based on the work by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ Thanks to Daniel Appich who covered the relevant performance work
+ in his diploma thesis.
+
+ This 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.
+
+ This 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <dlfcn.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <dl-procinfo.h>
+#include <gconv.h>
+
+/* UTF-32 big endian byte order mark. */
+#define BOM_UTF32 0x0000feffu
+
+/* UTF-16 big endian byte order mark. */
+#define BOM_UTF16 0xfeff
+
+#define DEFINE_INIT 0
+#define DEFINE_FINI 0
+#define MIN_NEEDED_FROM 2
+#define MAX_NEEDED_FROM 4
+#define MIN_NEEDED_TO 4
+#define FROM_LOOP from_utf16_loop
+#define TO_LOOP to_utf16_loop
+#define FROM_DIRECTION (dir == from_utf16)
+#define PREPARE_LOOP \
+ enum direction dir = ((struct utf16_data *) step->__data)->dir; \
+ int emit_bom = ((struct utf16_data *) step->__data)->emit_bom; \
+ \
+ if (emit_bom && !data->__internal_use \
+ && data->__invocation_counter == 0) \
+ { \
+ if (dir == to_utf16) \
+ { \
+ /* Emit the UTF-16 Byte Order Mark. */ \
+ if (__builtin_expect (outbuf + 2 > outend, 0)) \
+ return __GCONV_FULL_OUTPUT; \
+ \
+ put16u (outbuf, BOM_UTF16); \
+ outbuf += 2; \
+ } \
+ else \
+ { \
+ /* Emit the UTF-32 Byte Order Mark. */ \
+ if (__builtin_expect (outbuf + 4 > outend, 0)) \
+ return __GCONV_FULL_OUTPUT; \
+ \
+ put32u (outbuf, BOM_UTF32); \
+ outbuf += 4; \
+ } \
+ }
+
+/* Direction of the transformation. */
+enum direction
+{
+ illegal_dir,
+ to_utf16,
+ from_utf16
+};
+
+struct utf16_data
+{
+ enum direction dir;
+ int emit_bom;
+};
+
+
+extern int gconv_init (struct __gconv_step *step);
+int
+gconv_init (struct __gconv_step *step)
+{
+ /* Determine which direction. */
+ struct utf16_data *new_data;
+ enum direction dir = illegal_dir;
+ int emit_bom;
+ int result;
+
+ emit_bom = (__strcasecmp (step->__to_name, "UTF-32//") == 0
+ || __strcasecmp (step->__to_name, "UTF-16//") == 0);
+
+ if (__strcasecmp (step->__from_name, "UTF-16BE//") == 0
+ && (__strcasecmp (step->__to_name, "UTF-32//") == 0
+ || __strcasecmp (step->__to_name, "UTF-32BE//") == 0
+ || __strcasecmp (step->__to_name, "INTERNAL") == 0))
+ {
+ dir = from_utf16;
+ }
+ else if ((__strcasecmp (step->__to_name, "UTF-16//") == 0
+ || __strcasecmp (step->__to_name, "UTF-16BE//") == 0)
+ && (__strcasecmp (step->__from_name, "UTF-32BE//") == 0
+ || __strcasecmp (step->__from_name, "INTERNAL") == 0))
+ {
+ dir = to_utf16;
+ }
+
+ result = __GCONV_NOCONV;
+ if (dir != illegal_dir)
+ {
+ new_data = (struct utf16_data *) malloc (sizeof (struct utf16_data));
+
+ result = __GCONV_NOMEM;
+ if (new_data != NULL)
+ {
+ new_data->dir = dir;
+ new_data->emit_bom = emit_bom;
+ step->__data = new_data;
+
+ if (dir == from_utf16)
+ {
+ step->__min_needed_from = MIN_NEEDED_FROM;
+ step->__max_needed_from = MIN_NEEDED_FROM;
+ step->__min_needed_to = MIN_NEEDED_TO;
+ step->__max_needed_to = MIN_NEEDED_TO;
+ }
+ else
+ {
+ step->__min_needed_from = MIN_NEEDED_TO;
+ step->__max_needed_from = MIN_NEEDED_TO;
+ step->__min_needed_to = MIN_NEEDED_FROM;
+ step->__max_needed_to = MIN_NEEDED_FROM;
+ }
+
+ step->__stateful = 0;
+
+ result = __GCONV_OK;
+ }
+ }
+
+ return result;
+}
+
+
+extern void gconv_end (struct __gconv_step *data);
+void
+gconv_end (struct __gconv_step *data)
+{
+ free (data->__data);
+}
+
+/* The macro for the hardware loop. This is used for both
+ directions. */
+#define HARDWARE_CONVERT(INSTRUCTION) \
+ { \
+ register const unsigned char* pInput asm ("8") = inptr; \
+ register unsigned long long inlen asm ("9") = inend - inptr; \
+ register unsigned char* pOutput asm ("10") = outptr; \
+ register unsigned long long outlen asm("11") = outend - outptr; \
+ uint64_t cc = 0; \
+ \
+ asm volatile ("0: " INSTRUCTION " \n\t" \
+ " jo 0b \n\t" \
+ " ipm %2 \n" \
+ : "+a" (pOutput), "+a" (pInput), "+d" (cc), \
+ "+d" (outlen), "+d" (inlen) \
+ : \
+ : "cc", "memory"); \
+ \
+ inptr = pInput; \
+ outptr = pOutput; \
+ cc >>= 28; \
+ \
+ if (cc == 1) \
+ { \
+ result = __GCONV_FULL_OUTPUT; \
+ break; \
+ } \
+ else if (cc == 2) \
+ { \
+ result = __GCONV_ILLEGAL_INPUT; \
+ break; \
+ } \
+ }
+
+/* Conversion function from UTF-16 to UTF-32 internal/BE. */
+
+#define MIN_NEEDED_INPUT MIN_NEEDED_FROM
+#define MAX_NEEDED_INPUT MAX_NEEDED_FROM
+#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO
+#define LOOPFCT FROM_LOOP
+/* The software routine is copied from utf-16.c (minus bytes
+ swapping). */
+#define BODY \
+ { \
+ if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \
+ { \
+ HARDWARE_CONVERT ("cu24 %0, %1, 1"); \
+ if (inptr != inend) \
+ { \
+ /* Check if the third byte is \
+ a valid start of a UTF-16 surrogate. */ \
+ if (inend - inptr == 3 && (inptr[3] & 0xfc) != 0xdc) \
+ STANDARD_FROM_LOOP_ERR_HANDLER (3); \
+ \
+ result = __GCONV_INCOMPLETE_INPUT; \
+ break; \
+ } \
+ continue; \
+ } \
+ \
+ uint16_t u1 = get16 (inptr); \
+ \
+ if (__builtin_expect (u1 < 0xd800, 1) || u1 > 0xdfff) \
+ { \
+ /* No surrogate. */ \
+ put32 (outptr, u1); \
+ inptr += 2; \
+ } \
+ else \
+ { \
+ /* It's a surrogate character. At least the first word says \
+ it is. */ \
+ if (__builtin_expect (inptr + 4 > inend, 0)) \
+ { \
+ /* We don't have enough input for another complete input \
+ character. */ \
+ result = __GCONV_INCOMPLETE_INPUT; \
+ break; \
+ } \
+ \
+ inptr += 2; \
+ uint16_t u2 = get16 (inptr); \
+ if (__builtin_expect (u2 < 0xdc00, 0) \
+ || __builtin_expect (u2 > 0xdfff, 0)) \
+ { \
+ /* This is no valid second word for a surrogate. */ \
+ inptr -= 2; \
+ STANDARD_FROM_LOOP_ERR_HANDLER (2); \
+ } \
+ \
+ put32 (outptr, ((u1 - 0xd7c0) << 10) + (u2 - 0xdc00)); \
+ inptr += 2; \
+ } \
+ outptr += 4; \
+ }
+#define LOOP_NEED_FLAGS
+#include <iconv/loop.c>
+
+/* Conversion from UTF-32 internal/BE to UTF-16. */
+
+#define MIN_NEEDED_INPUT MIN_NEEDED_TO
+#define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM
+#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM
+#define LOOPFCT TO_LOOP
+/* The software routine is copied from utf-16.c (minus bytes
+ swapping). */
+#define BODY \
+ { \
+ if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \
+ { \
+ HARDWARE_CONVERT ("cu42 %0, %1"); \
+ \
+ if (inptr != inend) \
+ { \
+ result = __GCONV_INCOMPLETE_INPUT; \
+ break; \
+ } \
+ continue; \
+ } \
+ \
+ uint32_t c = get32 (inptr); \
+ \
+ if (__builtin_expect (c <= 0xd7ff, 1) \
+ || (c >=0xdc00 && c <= 0xffff)) \
+ { \
+ /* Two UTF-16 chars. */ \
+ put16 (outptr, c); \
+ } \
+ else if (__builtin_expect (c >= 0x10000, 1) \
+ && __builtin_expect (c <= 0x10ffff, 1)) \
+ { \
+ /* Four UTF-16 chars. */ \
+ uint16_t zabcd = ((c & 0x1f0000) >> 16) - 1; \
+ uint16_t out; \
+ \
+ /* Generate a surrogate character. */ \
+ if (__builtin_expect (outptr + 4 > outend, 0)) \
+ { \
+ /* Overflow in the output buffer. */ \
+ result = __GCONV_FULL_OUTPUT; \
+ break; \
+ } \
+ \
+ out = 0xd800; \
+ out |= (zabcd & 0xff) << 6; \
+ out |= (c >> 10) & 0x3f; \
+ put16 (outptr, out); \
+ outptr += 2; \
+ \
+ out = 0xdc00; \
+ out |= c & 0x3ff; \
+ put16 (outptr, out); \
+ } \
+ else \
+ { \
+ STANDARD_TO_LOOP_ERR_HANDLER (4); \
+ } \
+ outptr += 2; \
+ inptr += 4; \
+ }
+#define LOOP_NEED_FLAGS
+#include <iconv/loop.c>
+
+#include <iconv/skeleton.c>
diff --git a/sysdeps/s390/s390-64/utf8-utf16-z9.c b/sysdeps/s390/s390-64/utf8-utf16-z9.c
new file mode 100644
index 0000000000..531d3ebd4b
--- /dev/null
+++ b/sysdeps/s390/s390-64/utf8-utf16-z9.c
@@ -0,0 +1,463 @@
+/* Conversion between UTF-16 and UTF-32 BE/internal.
+
+ This module uses the Z9-109 variants of the Convert Unicode
+ instructions.
+ Copyright (C) 1997-2009 Free Software Foundation, Inc.
+
+ Author: Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+ Based on the work by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ Thanks to Daniel Appich who covered the relevant performance work
+ in his diploma thesis.
+
+ This 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.
+
+ This 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <dlfcn.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <dl-procinfo.h>
+#include <gconv.h>
+
+/* UTF-16 big endian byte order mark. */
+#define BOM_UTF16 0xfeff
+
+#define DEFINE_INIT 0
+#define DEFINE_FINI 0
+#define MIN_NEEDED_FROM 1
+#define MAX_NEEDED_FROM 4
+#define MIN_NEEDED_TO 2
+#define MAX_NEEDED_TO 4
+#define FROM_LOOP from_utf8_loop
+#define TO_LOOP to_utf8_loop
+#define FROM_DIRECTION (dir == from_utf8)
+#define PREPARE_LOOP \
+ enum direction dir = ((struct utf8_data *) step->__data)->dir; \
+ int emit_bom = ((struct utf8_data *) step->__data)->emit_bom; \
+ \
+ if (emit_bom && !data->__internal_use \
+ && data->__invocation_counter == 0) \
+ { \
+ /* Emit the UTF-16 Byte Order Mark. */ \
+ if (__builtin_expect (outbuf + 2 > outend, 0)) \
+ return __GCONV_FULL_OUTPUT; \
+ \
+ put16u (outbuf, BOM_UTF16); \
+ outbuf += 2; \
+ }
+
+/* Direction of the transformation. */
+enum direction
+{
+ illegal_dir,
+ to_utf8,
+ from_utf8
+};
+
+struct utf8_data
+{
+ enum direction dir;
+ int emit_bom;
+};
+
+
+extern int gconv_init (struct __gconv_step *step);
+int
+gconv_init (struct __gconv_step *step)
+{
+ /* Determine which direction. */
+ struct utf8_data *new_data;
+ enum direction dir = illegal_dir;
+ int emit_bom;
+ int result;
+
+ emit_bom = (__strcasecmp (step->__to_name, "UTF-16//") == 0);
+
+ if (__strcasecmp (step->__from_name, "ISO-10646/UTF8/") == 0
+ && (__strcasecmp (step->__to_name, "UTF-16//") == 0
+ || __strcasecmp (step->__to_name, "UTF-16BE//") == 0))
+ {
+ dir = from_utf8;
+ }
+ else if (__strcasecmp (step->__from_name, "UTF-16BE//") == 0
+ && __strcasecmp (step->__to_name, "ISO-10646/UTF8/") == 0)
+ {
+ dir = to_utf8;
+ }
+
+ result = __GCONV_NOCONV;
+ if (dir != illegal_dir)
+ {
+ new_data = (struct utf8_data *) malloc (sizeof (struct utf8_data));
+
+ result = __GCONV_NOMEM;
+ if (new_data != NULL)
+ {
+ new_data->dir = dir;
+ new_data->emit_bom = emit_bom;
+ step->__data = new_data;
+
+ if (dir == from_utf8)
+ {
+ step->__min_needed_from = MIN_NEEDED_FROM;
+ step->__max_needed_from = MIN_NEEDED_FROM;
+ step->__min_needed_to = MIN_NEEDED_TO;
+ step->__max_needed_to = MIN_NEEDED_TO;
+ }
+ else
+ {
+ step->__min_needed_from = MIN_NEEDED_TO;
+ step->__max_needed_from = MIN_NEEDED_TO;
+ step->__min_needed_to = MIN_NEEDED_FROM;
+ step->__max_needed_to = MIN_NEEDED_FROM;
+ }
+
+ step->__stateful = 0;
+
+ result = __GCONV_OK;
+ }
+ }
+
+ return result;
+}
+
+
+extern void gconv_end (struct __gconv_step *data);
+void
+gconv_end (struct __gconv_step *data)
+{
+ free (data->__data);
+}
+
+/* The macro for the hardware loop. This is used for both
+ directions. */
+#define HARDWARE_CONVERT(INSTRUCTION) \
+ { \
+ register const unsigned char* pInput asm ("8") = inptr; \
+ register unsigned long long inlen asm ("9") = inend - inptr; \
+ register unsigned char* pOutput asm ("10") = outptr; \
+ register unsigned long long outlen asm("11") = outend - outptr; \
+ uint64_t cc = 0; \
+ \
+ asm volatile ("0: " INSTRUCTION " \n\t" \
+ " jo 0b \n\t" \
+ " ipm %2 \n" \
+ : "+a" (pOutput), "+a" (pInput), "+d" (cc), \
+ "+d" (outlen), "+d" (inlen) \
+ : \
+ : "cc", "memory"); \
+ \
+ inptr = pInput; \
+ outptr = pOutput; \
+ cc >>= 28; \
+ \
+ if (cc == 1) \
+ { \
+ result = __GCONV_FULL_OUTPUT; \
+ break; \
+ } \
+ else if (cc == 2) \
+ { \
+ result = __GCONV_ILLEGAL_INPUT; \
+ break; \
+ } \
+ }
+
+/* Conversion function from UTF-8 to UTF-16. */
+
+#define MIN_NEEDED_INPUT MIN_NEEDED_FROM
+#define MAX_NEEDED_INPUT MAX_NEEDED_FROM
+#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO
+#define LOOPFCT FROM_LOOP
+/* The software implementation is based on the code in gconv_simple.c. */
+#define BODY \
+ { \
+ if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \
+ { \
+ HARDWARE_CONVERT ("cu12 %0, %1, 1"); \
+ \
+ if (inptr != inend) \
+ { \
+ int i; \
+ for (i = 1; inptr + i < inend; ++i) \
+ if ((inptr[i] & 0xc0) != 0x80) \
+ break; \
+ \
+ if (__builtin_expect (inptr + i == inend, 1)) \
+ { \
+ result = __GCONV_INCOMPLETE_INPUT; \
+ break; \
+ } \
+ STANDARD_FROM_LOOP_ERR_HANDLER (i); \
+ } \
+ continue; \
+ } \
+ \
+ /* Next input byte. */ \
+ uint16_t ch = *inptr; \
+ \
+ if (__builtin_expect (ch < 0x80, 1)) \
+ { \
+ /* One byte sequence. */ \
+ ++inptr; \
+ } \
+ else \
+ { \
+ uint_fast32_t cnt; \
+ uint_fast32_t i; \
+ \
+ if (ch >= 0xc2 && ch < 0xe0) \
+ { \
+ /* We expect two bytes. The first byte cannot be 0xc0 \
+ or 0xc1, otherwise the wide character could have been \
+ represented using a single byte. */ \
+ cnt = 2; \
+ ch &= 0x1f; \
+ } \
+ else if (__builtin_expect ((ch & 0xf0) == 0xe0, 1)) \
+ { \
+ /* We expect three bytes. */ \
+ cnt = 3; \
+ ch &= 0x0f; \
+ } \
+ else if (__builtin_expect ((ch & 0xf8) == 0xf0, 1)) \
+ { \
+ /* We expect four bytes. */ \
+ cnt = 4; \
+ ch &= 0x07; \
+ } \
+ else \
+ { \
+ /* Search the end of this ill-formed UTF-8 character. This \
+ is the next byte with (x & 0xc0) != 0x80. */ \
+ i = 0; \
+ do \
+ ++i; \
+ while (inptr + i < inend \
+ && (*(inptr + i) & 0xc0) == 0x80 \
+ && i < 5); \
+ \
+ errout: \
+ STANDARD_FROM_LOOP_ERR_HANDLER (i); \
+ } \
+ \
+ if (__builtin_expect (inptr + cnt > inend, 0)) \
+ { \
+ /* We don't have enough input. But before we report \
+ that check that all the bytes are correct. */ \
+ for (i = 1; inptr + i < inend; ++i) \
+ if ((inptr[i] & 0xc0) != 0x80) \
+ break; \
+ \
+ if (__builtin_expect (inptr + i == inend, 1)) \
+ { \
+ result = __GCONV_INCOMPLETE_INPUT; \
+ break; \
+ } \
+ \
+ goto errout; \
+ } \
+ \
+ if (cnt == 4) \
+ { \
+ /* For 4 byte UTF-8 chars two UTF-16 chars (high and \
+ low) are needed. */ \
+ uint16_t zabcd, high, low; \
+ \
+ if (__builtin_expect (outptr + 4 > outend, 0)) \
+ { \
+ /* Overflow in the output buffer. */ \
+ result = __GCONV_FULL_OUTPUT; \
+ break; \
+ } \
+ \
+ /* See Principles of Operations cu12. */ \
+ zabcd = (((inptr[0] & 0x7) << 2) | \
+ ((inptr[1] & 0x30) >> 4)) - 1; \
+ \
+ /* z-bit must be zero after subtracting 1. */ \
+ if (zabcd & 0x10) \
+ STANDARD_FROM_LOOP_ERR_HANDLER (4) \
+ \
+ high = (uint16_t)(0xd8 << 8); /* high surrogate id */ \
+ high |= zabcd << 6; /* abcd bits */ \
+ high |= (inptr[1] & 0xf) << 2; /* efgh bits */ \
+ high |= (inptr[2] & 0x30) >> 4; /* ij bits */ \
+ \
+ low = (uint16_t)(0xdc << 8); /* low surrogate id */ \
+ low |= ((uint16_t)inptr[2] & 0xc) << 6; /* kl bits */ \
+ low |= (inptr[2] & 0x3) << 6; /* mn bits */ \
+ low |= inptr[3] & 0x3f; /* opqrst bits */ \
+ \
+ put16 (outptr, high); \
+ outptr += 2; \
+ put16 (outptr, low); \
+ outptr += 2; \
+ inptr += 4; \
+ continue; \
+ } \
+ else \
+ { \
+ /* Read the possible remaining bytes. */ \
+ for (i = 1; i < cnt; ++i) \
+ { \
+ uint16_t byte = inptr[i]; \
+ \
+ if ((byte & 0xc0) != 0x80) \
+ /* This is an illegal encoding. */ \
+ break; \
+ \
+ ch <<= 6; \
+ ch |= byte & 0x3f; \
+ } \
+ inptr += cnt; \
+ \
+ } \
+ } \
+ /* Now adjust the pointers and store the result. */ \
+ *((uint16_t *) outptr) = ch; \
+ outptr += sizeof (uint16_t); \
+ }
+
+#define LOOP_NEED_FLAGS
+#include <iconv/loop.c>
+
+/* Conversion from UTF-16 to UTF-8. */
+
+#define MIN_NEEDED_INPUT MIN_NEEDED_TO
+#define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM
+#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM
+#define LOOPFCT TO_LOOP
+/* The software routine is based on the functionality of the S/390
+ hardware instruction (cu21) as described in the Principles of
+ Operation. */
+#define BODY \
+ { \
+ if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \
+ { \
+ HARDWARE_CONVERT ("cu21 %0, %1"); \
+ if (inptr != inend) \
+ { \
+ /* Check if the third byte is \
+ a valid start of a UTF-16 surrogate. */ \
+ if (inend - inptr == 3 && (inptr[3] & 0xfc) != 0xdc) \
+ STANDARD_TO_LOOP_ERR_HANDLER (3); \
+ \
+ result = __GCONV_INCOMPLETE_INPUT; \
+ break; \
+ } \
+ continue; \
+ } \
+ \
+ uint16_t c = get16 (inptr); \
+ \
+ if (__builtin_expect (c <= 0x007f, 1)) \
+ { \
+ /* Single byte UTF-8 char. */ \
+ *outptr = c & 0xff; \
+ outptr++; \
+ } \
+ else if (c >= 0x0080 && c <= 0x07ff) \
+ { \
+ /* Two byte UTF-8 char. */ \
+ \
+ if (__builtin_expect (outptr + 2 > outend, 0)) \
+ { \
+ /* Overflow in the output buffer. */ \
+ result = __GCONV_FULL_OUTPUT; \
+ break; \
+ } \
+ \
+ outptr[0] = 0xc0; \
+ outptr[0] |= c >> 6; \
+ \
+ outptr[1] = 0x80; \
+ outptr[1] |= c & 0x3f; \
+ \
+ outptr += 2; \
+ } \
+ else if (c >= 0x0800 && c <= 0xd7ff) \
+ { \
+ /* Three byte UTF-8 char. */ \
+ \
+ if (__builtin_expect (outptr + 3 > outend, 0)) \
+ { \
+ /* Overflow in the output buffer. */ \
+ result = __GCONV_FULL_OUTPUT; \
+ break; \
+ } \
+ outptr[0] = 0xe0; \
+ outptr[0] |= c >> 12; \
+ \
+ outptr[1] = 0x80; \
+ outptr[1] |= (c >> 6) & 0x3f; \
+ \
+ outptr[2] = 0x80; \
+ outptr[2] |= c & 0x3f; \
+ \
+ outptr += 3; \
+ } \
+ else if (c >= 0xd800 && c <= 0xdbff) \
+ { \
+ /* Four byte UTF-8 char. */ \
+ uint16_t low, uvwxy; \
+ \
+ if (__builtin_expect (outptr + 4 > outend, 0)) \
+ { \
+ /* Overflow in the output buffer. */ \
+ result = __GCONV_FULL_OUTPUT; \
+ break; \
+ } \
+ inptr += 2; \
+ if (__builtin_expect (inptr + 2 > inend, 0)) \
+ { \
+ result = __GCONV_INCOMPLETE_INPUT; \
+ break; \
+ } \
+ \
+ low = get16 (inptr); \
+ \
+ if ((low & 0xfc00) != 0xdc00) \
+ { \
+ inptr -= 2; \
+ STANDARD_TO_LOOP_ERR_HANDLER (2); \
+ } \
+ uvwxy = ((c >> 6) & 0xf) + 1; \
+ outptr[0] = 0xf0; \
+ outptr[0] |= uvwxy >> 2; \
+ \
+ outptr[1] = 0x80; \
+ outptr[1] |= (uvwxy << 4) & 0x30; \
+ outptr[1] |= (c >> 2) & 0x0f; \
+ \
+ outptr[2] = 0x80; \
+ outptr[2] |= (c & 0x03) << 4; \
+ outptr[2] |= (low >> 6) & 0x0f; \
+ \
+ outptr[3] = 0x80; \
+ outptr[3] |= low & 0x3f; \
+ \
+ outptr += 4; \
+ } \
+ else \
+ { \
+ STANDARD_TO_LOOP_ERR_HANDLER (2); \
+ } \
+ inptr += 2; \
+ }
+#define LOOP_NEED_FLAGS
+#include <iconv/loop.c>
+
+#include <iconv/skeleton.c>
diff --git a/sysdeps/s390/s390-64/utf8-utf32-z9.c b/sysdeps/s390/s390-64/utf8-utf32-z9.c
new file mode 100644
index 0000000000..17ef8bc890
--- /dev/null
+++ b/sysdeps/s390/s390-64/utf8-utf32-z9.c
@@ -0,0 +1,508 @@
+/* Conversion between UTF-8 and UTF-32 BE/internal.
+
+ This module uses the Z9-109 variants of the Convert Unicode
+ instructions.
+ Copyright (C) 1997-2009 Free Software Foundation, Inc.
+
+ Author: Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+ Based on the work by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ Thanks to Daniel Appich who covered the relevant performance work
+ in his diploma thesis.
+
+ This 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.
+
+ This 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <dlfcn.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <dl-procinfo.h>
+#include <gconv.h>
+
+/* UTF-32 big endian byte order mark. */
+#define BOM 0x0000feffu
+
+#define DEFINE_INIT 0
+#define DEFINE_FINI 0
+/* These definitions apply to the UTF-8 to UTF-32 direction. The
+ software implementation for UTF-8 still supports multibyte
+ characters up to 6 bytes whereas the hardware variant does not. */
+#define MIN_NEEDED_FROM 1
+#define MAX_NEEDED_FROM 6
+#define MIN_NEEDED_TO 4
+#define FROM_LOOP from_utf8_loop
+#define TO_LOOP to_utf8_loop
+#define FROM_DIRECTION (dir == from_utf8)
+#define PREPARE_LOOP \
+ enum direction dir = ((struct utf8_data *) step->__data)->dir; \
+ int emit_bom = ((struct utf8_data *) step->__data)->emit_bom; \
+ \
+ if (emit_bom && !data->__internal_use \
+ && data->__invocation_counter == 0) \
+ { \
+ /* Emit the Byte Order Mark. */ \
+ if (__builtin_expect (outbuf + 4 > outend, 0)) \
+ return __GCONV_FULL_OUTPUT; \
+ \
+ put32u (outbuf, BOM); \
+ outbuf += 4; \
+ }
+
+/* Direction of the transformation. */
+enum direction
+{
+ illegal_dir,
+ to_utf8,
+ from_utf8
+};
+
+struct utf8_data
+{
+ enum direction dir;
+ int emit_bom;
+};
+
+
+extern int gconv_init (struct __gconv_step *step);
+int
+gconv_init (struct __gconv_step *step)
+{
+ /* Determine which direction. */
+ struct utf8_data *new_data;
+ enum direction dir = illegal_dir;
+ int emit_bom;
+ int result;
+
+ emit_bom = (__strcasecmp (step->__to_name, "UTF-32//") == 0);
+
+ if (__strcasecmp (step->__from_name, "ISO-10646/UTF8/") == 0
+ && (__strcasecmp (step->__to_name, "UTF-32//") == 0
+ || __strcasecmp (step->__to_name, "UTF-32BE//") == 0
+ || __strcasecmp (step->__to_name, "INTERNAL") == 0))
+ {
+ dir = from_utf8;
+ }
+ else if (__strcasecmp (step->__to_name, "ISO-10646/UTF8/") == 0
+ && (__strcasecmp (step->__from_name, "UTF-32BE//") == 0
+ || __strcasecmp (step->__from_name, "INTERNAL") == 0))
+ {
+ dir = to_utf8;
+ }
+
+ result = __GCONV_NOCONV;
+ if (dir != illegal_dir)
+ {
+ new_data = (struct utf8_data *) malloc (sizeof (struct utf8_data));
+
+ result = __GCONV_NOMEM;
+ if (new_data != NULL)
+ {
+ new_data->dir = dir;
+ new_data->emit_bom = emit_bom;
+ step->__data = new_data;
+
+ if (dir == from_utf8)
+ {
+ step->__min_needed_from = MIN_NEEDED_FROM;
+ step->__max_needed_from = MIN_NEEDED_FROM;
+ step->__min_needed_to = MIN_NEEDED_TO;
+ step->__max_needed_to = MIN_NEEDED_TO;
+ }
+ else
+ {
+ step->__min_needed_from = MIN_NEEDED_TO;
+ step->__max_needed_from = MIN_NEEDED_TO;
+ step->__min_needed_to = MIN_NEEDED_FROM;
+ step->__max_needed_to = MIN_NEEDED_FROM;
+ }
+
+ step->__stateful = 0;
+
+ result = __GCONV_OK;
+ }
+ }
+
+ return result;
+}
+
+
+extern void gconv_end (struct __gconv_step *data);
+void
+gconv_end (struct __gconv_step *data)
+{
+ free (data->__data);
+}
+
+/* The macro for the hardware loop. This is used for both
+ directions. */
+#define HARDWARE_CONVERT(INSTRUCTION) \
+ { \
+ register const unsigned char* pInput asm ("8") = inptr; \
+ register unsigned long long inlen asm ("9") = inend - inptr; \
+ register unsigned char* pOutput asm ("10") = outptr; \
+ register unsigned long long outlen asm("11") = outend - outptr; \
+ uint64_t cc = 0; \
+ \
+ asm volatile ("0: " INSTRUCTION " \n\t" \
+ " jo 0b \n\t" \
+ " ipm %2 \n" \
+ : "+a" (pOutput), "+a" (pInput), "+d" (cc), \
+ "+d" (outlen), "+d" (inlen) \
+ : \
+ : "cc", "memory"); \
+ \
+ inptr = pInput; \
+ outptr = pOutput; \
+ cc >>= 28; \
+ \
+ if (cc == 1) \
+ { \
+ result = __GCONV_FULL_OUTPUT; \
+ break; \
+ } \
+ else if (cc == 2) \
+ { \
+ result = __GCONV_ILLEGAL_INPUT; \
+ break; \
+ } \
+ }
+
+/* Conversion function from UTF-8 to UTF-32 internal/BE. */
+
+#define MIN_NEEDED_INPUT MIN_NEEDED_FROM
+#define MAX_NEEDED_INPUT MAX_NEEDED_FROM
+#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO
+#define LOOPFCT FROM_LOOP
+/* The software routine is copied from gconv_simple.c. */
+#define BODY \
+ { \
+ if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \
+ { \
+ HARDWARE_CONVERT ("cu14 %0, %1, 1"); \
+ \
+ if (inptr != inend) \
+ { \
+ int i; \
+ for (i = 1; inptr + i < inend; ++i) \
+ if ((inptr[i] & 0xc0) != 0x80) \
+ break; \
+ \
+ if (__builtin_expect (inptr + i == inend, 1)) \
+ { \
+ result = __GCONV_INCOMPLETE_INPUT; \
+ break; \
+ } \
+ STANDARD_FROM_LOOP_ERR_HANDLER (i); \
+ } \
+ continue; \
+ } \
+ \
+ /* Next input byte. */ \
+ uint32_t ch = *inptr; \
+ \
+ if (__builtin_expect (ch < 0x80, 1)) \
+ { \
+ /* One byte sequence. */ \
+ ++inptr; \
+ } \
+ else \
+ { \
+ uint_fast32_t cnt; \
+ uint_fast32_t i; \
+ \
+ if (ch >= 0xc2 && ch < 0xe0) \
+ { \
+ /* We expect two bytes. The first byte cannot be 0xc0 or \
+ 0xc1, otherwise the wide character could have been \
+ represented using a single byte. */ \
+ cnt = 2; \
+ ch &= 0x1f; \
+ } \
+ else if (__builtin_expect ((ch & 0xf0) == 0xe0, 1)) \
+ { \
+ /* We expect three bytes. */ \
+ cnt = 3; \
+ ch &= 0x0f; \
+ } \
+ else if (__builtin_expect ((ch & 0xf8) == 0xf0, 1)) \
+ { \
+ /* We expect four bytes. */ \
+ cnt = 4; \
+ ch &= 0x07; \
+ } \
+ else if (__builtin_expect ((ch & 0xfc) == 0xf8, 1)) \
+ { \
+ /* We expect five bytes. */ \
+ cnt = 5; \
+ ch &= 0x03; \
+ } \
+ else if (__builtin_expect ((ch & 0xfe) == 0xfc, 1)) \
+ { \
+ /* We expect six bytes. */ \
+ cnt = 6; \
+ ch &= 0x01; \
+ } \
+ else \
+ { \
+ /* Search the end of this ill-formed UTF-8 character. This \
+ is the next byte with (x & 0xc0) != 0x80. */ \
+ i = 0; \
+ do \
+ ++i; \
+ while (inptr + i < inend \
+ && (*(inptr + i) & 0xc0) == 0x80 \
+ && i < 5); \
+ \
+ errout: \
+ STANDARD_FROM_LOOP_ERR_HANDLER (i); \
+ } \
+ \
+ if (__builtin_expect (inptr + cnt > inend, 0)) \
+ { \
+ /* We don't have enough input. But before we report \
+ that check that all the bytes are correct. */ \
+ for (i = 1; inptr + i < inend; ++i) \
+ if ((inptr[i] & 0xc0) != 0x80) \
+ break; \
+ \
+ if (__builtin_expect (inptr + i == inend, 1)) \
+ { \
+ result = __GCONV_INCOMPLETE_INPUT; \
+ break; \
+ } \
+ \
+ goto errout; \
+ } \
+ \
+ /* Read the possible remaining bytes. */ \
+ for (i = 1; i < cnt; ++i) \
+ { \
+ uint32_t byte = inptr[i]; \
+ \
+ if ((byte & 0xc0) != 0x80) \
+ /* This is an illegal encoding. */ \
+ break; \
+ \
+ ch <<= 6; \
+ ch |= byte & 0x3f; \
+ } \
+ \
+ /* If i < cnt, some trail byte was not >= 0x80, < 0xc0. \
+ If cnt > 2 and ch < 2^(5*cnt-4), the wide character ch could \
+ have been represented with fewer than cnt bytes. */ \
+ if (i < cnt || (cnt > 2 && (ch >> (5 * cnt - 4)) == 0)) \
+ { \
+ /* This is an illegal encoding. */ \
+ goto errout; \
+ } \
+ \
+ inptr += cnt; \
+ } \
+ \
+ /* Now adjust the pointers and store the result. */ \
+ *((uint32_t *) outptr) = ch; \
+ outptr += sizeof (uint32_t); \
+ }
+#define LOOP_NEED_FLAGS
+
+#define STORE_REST \
+ { \
+ /* We store the remaining bytes while converting them into the UCS4 \
+ format. We can assume that the first byte in the buffer is \
+ correct and that it requires a larger number of bytes than there \
+ are in the input buffer. */ \
+ wint_t ch = **inptrp; \
+ size_t cnt, r; \
+ \
+ state->__count = inend - *inptrp; \
+ \
+ if (ch >= 0xc2 && ch < 0xe0) \
+ { \
+ /* We expect two bytes. The first byte cannot be 0xc0 or \
+ 0xc1, otherwise the wide character could have been \
+ represented using a single byte. */ \
+ cnt = 2; \
+ ch &= 0x1f; \
+ } \
+ else if (__builtin_expect ((ch & 0xf0) == 0xe0, 1)) \
+ { \
+ /* We expect three bytes. */ \
+ cnt = 3; \
+ ch &= 0x0f; \
+ } \
+ else if (__builtin_expect ((ch & 0xf8) == 0xf0, 1)) \
+ { \
+ /* We expect four bytes. */ \
+ cnt = 4; \
+ ch &= 0x07; \
+ } \
+ else if (__builtin_expect ((ch & 0xfc) == 0xf8, 1)) \
+ { \
+ /* We expect five bytes. */ \
+ cnt = 5; \
+ ch &= 0x03; \
+ } \
+ else \
+ { \
+ /* We expect six bytes. */ \
+ cnt = 6; \
+ ch &= 0x01; \
+ } \
+ \
+ /* The first byte is already consumed. */ \
+ r = cnt - 1; \
+ while (++(*inptrp) < inend) \
+ { \
+ ch <<= 6; \
+ ch |= **inptrp & 0x3f; \
+ --r; \
+ } \
+ \
+ /* Shift for the so far missing bytes. */ \
+ ch <<= r * 6; \
+ \
+ /* Store the number of bytes expected for the entire sequence. */ \
+ state->__count |= cnt << 8; \
+ \
+ /* Store the value. */ \
+ state->__value.__wch = ch; \
+ }
+
+#define UNPACK_BYTES \
+ { \
+ static const unsigned char inmask[5] = { 0xc0, 0xe0, 0xf0, 0xf8, 0xfc }; \
+ wint_t wch = state->__value.__wch; \
+ size_t ntotal = state->__count >> 8; \
+ \
+ inlen = state->__count & 255; \
+ \
+ bytebuf[0] = inmask[ntotal - 2]; \
+ \
+ do \
+ { \
+ if (--ntotal < inlen) \
+ bytebuf[ntotal] = 0x80 | (wch & 0x3f); \
+ wch >>= 6; \
+ } \
+ while (ntotal > 1); \
+ \
+ bytebuf[0] |= wch; \
+ }
+
+#define CLEAR_STATE \
+ state->__count = 0
+
+#include <iconv/loop.c>
+
+/* Conversion from UTF-32 internal/BE to UTF-8. */
+
+#define MIN_NEEDED_INPUT MIN_NEEDED_TO
+#define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM
+#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM
+#define LOOPFCT TO_LOOP
+/* The software routine mimics the S/390 cu41 instruction. */
+#define BODY \
+ { \
+ if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \
+ { \
+ HARDWARE_CONVERT ("cu41 %0, %1"); \
+ \
+ if (inptr != inend) \
+ { \
+ result = __GCONV_INCOMPLETE_INPUT; \
+ break; \
+ } \
+ continue; \
+ } \
+ \
+ uint32_t wc = *((const uint32_t *) inptr); \
+ \
+ if (__builtin_expect (wc <= 0x7f, 1)) \
+ { \
+ /* Single UTF-8 char. */ \
+ *outptr = (uint8_t)wc; \
+ outptr++; \
+ } \
+ else if (wc <= 0x7ff) \
+ { \
+ /* Two UTF-8 chars. */ \
+ if (__builtin_expect (outptr + 2 > outend, 0)) \
+ { \
+ /* Overflow in the output buffer. */ \
+ result = __GCONV_FULL_OUTPUT; \
+ break; \
+ } \
+ \
+ outptr[0] = 0xc0; \
+ outptr[0] |= wc >> 6; \
+ \
+ outptr[1] = 0x80; \
+ outptr[1] |= wc & 0x3f; \
+ \
+ outptr += 2; \
+ } \
+ else if (wc <= 0xffff) \
+ { \
+ /* Three UTF-8 chars. */ \
+ if (__builtin_expect (outptr + 3 > outend, 0)) \
+ { \
+ /* Overflow in the output buffer. */ \
+ result = __GCONV_FULL_OUTPUT; \
+ break; \
+ } \
+ outptr[0] = 0xe0; \
+ outptr[0] |= wc >> 12; \
+ \
+ outptr[1] = 0x80; \
+ outptr[1] |= (wc >> 6) & 0x3f; \
+ \
+ outptr[2] = 0x80; \
+ outptr[2] |= wc & 0x3f; \
+ \
+ outptr += 3; \
+ } \
+ else if (wc <= 0x10ffff) \
+ { \
+ /* Four UTF-8 chars. */ \
+ if (__builtin_expect (outptr + 4 > outend, 0)) \
+ { \
+ /* Overflow in the output buffer. */ \
+ result = __GCONV_FULL_OUTPUT; \
+ break; \
+ } \
+ outptr[0] = 0xf0; \
+ outptr[0] |= wc >> 18; \
+ \
+ outptr[1] = 0x80; \
+ outptr[1] |= (wc >> 12) & 0x3f; \
+ \
+ outptr[2] = 0x80; \
+ outptr[2] |= (wc >> 6) & 0x3f; \
+ \
+ outptr[3] = 0x80; \
+ outptr[3] |= wc & 0x3f; \
+ \
+ outptr += 4; \
+ } \
+ else \
+ { \
+ STANDARD_TO_LOOP_ERR_HANDLER (4); \
+ } \
+ inptr += 4; \
+ }
+#define LOOP_NEED_FLAGS
+#include <iconv/loop.c>
+
+#include <iconv/skeleton.c>
diff --git a/sysdeps/sh/____longjmp_chk.S b/sysdeps/sh/____longjmp_chk.S
new file mode 100644
index 0000000000..2ff4f586ef
--- /dev/null
+++ b/sysdeps/sh/____longjmp_chk.S
@@ -0,0 +1,70 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+ .section .rodata.str1.1,"aMS",@progbits,1
+ .type longjmp_msg,@object
+longjmp_msg:
+ .string "longjmp causes uninitialized stack frame"
+ .size longjmp_msg, .-longjmp_msg
+ .text
+
+#define __longjmp ____longjmp_chk
+
+#ifdef PIC
+# define CALL_FAIL \
+ mov.l .Lfail, r1; \
+ mov.l .Lstr, r4; \
+ mova .Lgot, r0; \
+ mov.l .Lgot, r12; \
+ add r0, r12; \
+ bsrf r1; \
+ add r12, r4; \
+.Lfail0: \
+ bra 0f; \
+ nop; \
+ .align 2; \
+.Lgot: \
+ .long _GLOBAL_OFFSET_TABLE_; \
+.Lstr: \
+ .long longjmp_msg@GOTOFF; \
+.Lfail: \
+ .long __GI___fortify_fail@PLT-(.Lfail0-.); \
+0:
+#else
+# define CALL_FAIL \
+ mov.l .Lfail, r1; \
+ mov.l .Lstr, r4; \
+ jsr @r1; \
+ nop; \
+ bra 0f; \
+ nop; \
+ .align 2; \
+.Lstr: \
+ .long longjmp_msg; \
+.Lfail: \
+ .long __fortify_fail; \
+0:
+#endif
+
+#define CHECK_SP(reg) \
+ cmp/hs r15, reg; \
+ bt .Lok; \
+ CALL_FAIL \
+.Lok:
+
+#include <__longjmp.S>
diff --git a/sysdeps/sh/bits/link.h b/sysdeps/sh/bits/link.h
index 2826677336..f650aa302e 100644
--- a/sysdeps/sh/bits/link.h
+++ b/sysdeps/sh/bits/link.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2009 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
@@ -65,6 +65,6 @@ extern unsigned int la_sh_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
uintptr_t *__defcook,
const La_sh_regs *__inregs,
La_sh_retval *__outregs,
- const char *symname);
+ const char *__symname);
__END_DECLS
diff --git a/sysdeps/sh/bits/setjmp.h b/sysdeps/sh/bits/setjmp.h
index 7e3fbd3394..6196abedd6 100644
--- a/sysdeps/sh/bits/setjmp.h
+++ b/sysdeps/sh/bits/setjmp.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999,2000,2003,2005,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1999,2000,2003,2005,2006,2009 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
@@ -25,7 +25,7 @@
#endif
#ifndef _ASM
-typedef struct
+typedef struct __jmp_buf_internal_tag
{
/* Callee-saved registers r8 through r15. */
int __regs[8];
diff --git a/sysdeps/sh/elf/configure b/sysdeps/sh/elf/configure
index d38b0ece5d..95efaca496 100644
--- a/sysdeps/sh/elf/configure
+++ b/sysdeps/sh/elf/configure
@@ -4,10 +4,10 @@
if test "$usetls" != no; then
# Check for support of thread-local storage handling in assembler and
# linker.
-echo "$as_me:$LINENO: checking for SH TLS support" >&5
-echo $ECHO_N "checking for SH TLS support... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for SH TLS support" >&5
+$as_echo_n "checking for SH TLS support... " >&6; }
if test "${libc_cv_sh_tls+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.S <<\EOF
.section ".tdata", "awT", @progbits
@@ -23,7 +23,7 @@ if { ac_try='${CC-cc} -S $CFLAGS conftest.S 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_sh_tls=yes
else
@@ -31,8 +31,8 @@ else
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_sh_tls" >&5
-echo "${ECHO_T}$libc_cv_sh_tls" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_sh_tls" >&5
+$as_echo "$libc_cv_sh_tls" >&6; }
if test $libc_cv_sh_tls = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TLS_SUPPORT 1
diff --git a/sysdeps/sh/elf/initfini.c b/sysdeps/sh/elf/initfini.c
index 6c8ed85292..2ae328caa2 100644
--- a/sysdeps/sh/elf/initfini.c
+++ b/sysdeps/sh/elf/initfini.c
@@ -1,5 +1,5 @@
/* Special .init and .fini section support for SH.
- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2002, 2009 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
@@ -47,52 +47,48 @@
__asm__ ("\
\n\
#include \"defs.h\"\n\
-#define SHARED\n\
\n\
/*@HEADER_ENDS*/\n\
\n\
/*@TESTS_BEGIN*/\n\
-\n\
+ .align 5\n\
/*@TESTS_END*/\n\
\n\
/*@_init_PROLOG_BEGINS*/\n\
- .section .init\n\
+ .section .init,\"ax\",@progbits\n\
.align 5\n\
.global _init\n\
- .type _init,@function\n\
+ .type _init, @function\n\
_init:\n\
mov.l r12,@-r15\n\
+ mova .L12,r0\n\
+ mov.l .L12,r12\n\
mov.l r14,@-r15\n\
- sts.l pr,@-r15\n\
-#ifdef SHARED\n\
- mova .L22,r0\n\
- mov.l .L22,r12\n\
add r0,r12\n\
- mova .L23,r0\n\
- mov.l .L23,r1\n\
- add r0,r1\n\
-#else\n\
- mov.l .L23,r1\n\
-#endif\n\
- jsr @r1\n\
- mov r15,r14\n\
+ mov.l .L13,r0\n\
+ sts.l pr,@-r15\n\
+ mov.l @(r0,r12),r1\n\
+ tst r1,r1\n\
+ bt/s .L8\n\
+ mov r15,r14\n\
+ mov.l .L14,r1\n\
+ bsrf r1\n\
+.LPCS0:\n\
+ nop\n\
+.L8:\n\
bra 1f\n\
- nop\n\
+ nop\n\
.align 2\n\
-#ifdef SHARED\n\
-.L22:\n\
+.L12:\n\
.long _GLOBAL_OFFSET_TABLE_\n\
-.L23:\n\
- .long __gmon_start__@PLT\n\
-#else\n\
-.L23:\n\
- .long __gmon_start__\n\
-#endif\n\
+.L13:\n\
+ .long __gmon_start__@GOT\n\
+.L14:\n\
+ .long __gmon_start__@PLT-(.LPCS0+2-(.))\n\
1:\n\
ALIGN\n\
END_INIT\n\
\n\
- \n\
/*@_init_PROLOG_ENDS*/\n\
\n\
/*@_init_EPILOG_BEGINS*/\n\
@@ -100,60 +96,58 @@ _init:\n\
mov r14,r15\n\
lds.l @r15+,pr\n\
mov.l @r15+,r14\n\
- rts \n\
mov.l @r15+,r12\n\
- END_INIT\n\
- .section .text\n\
- .align 5\n\
- .weak __gmon_start__\n\
- .type __gmon_start__,@function\n\
-__gmon_start__:\n\
- mov.l r14,@-r15\n\
- mov r15,r14\n\
- mov r14,r15\n\
rts \n\
- mov.l @r15+,r14\n\
- \n\
+ nop\n\
+ END_INIT\n\
+\n\
/*@_init_EPILOG_ENDS*/\n\
\n\
/*@_fini_PROLOG_BEGINS*/\n\
- .section .fini\n\
+ .section .fini,\"ax\",@progbits\n\
.align 5\n\
.global _fini\n\
- .type _fini,@function\n\
+ .type _fini, @function\n\
_fini:\n\
mov.l r12,@-r15\n\
+ mova .L19,r0\n\
mov.l r14,@-r15\n\
sts.l pr,@-r15\n\
-#ifdef SHARED\n\
- mova .L27,r0\n\
- mov.l .L27,r12\n\
- add r0,r12\n\
-#endif\n\
+ mov.l .L19,r12\n\
mov r15,r14\n\
+ add r0,r12\n\
+ bra 0f\n\
+ nop\n\
+ .align 2\n\
+.L19:\n\
+ .long _GLOBAL_OFFSET_TABLE_\n\
+0:\n\
ALIGN\n\
END_FINI\n\
-#ifdef SHARED\n\
+\n\
+/*@_fini_PROLOG_ENDS*/\n\
+ mov.l .L20,r1\n\
+ bsrf r1\n\
+.LPCS1:\n\
+ nop\n\
bra 1f\n\
- nop\n\
- .align 2\n\
-.L27:\n\
- .long _GLOBAL_OFFSET_TABLE_\n\
-#endif\n\
+ nop\n\
+ .align 2\n\
+.L20:\n\
+ .long i_am_not_a_leaf@PLT-(.LPCS1+2-(.))\n\
1:\n\
-/*@_fini_PROLOG_ENDS*/\n\
-\n\
/*@_fini_EPILOG_BEGINS*/\n\
.section .fini\n\
mov r14,r15\n\
lds.l @r15+,pr\n\
mov.l @r15+,r14\n\
- rts \n\
mov.l @r15+,r12\n\
-\n\
+ rts \n\
+ nop\n\
END_FINI\n\
- \n\
+\n\
/*@_fini_EPILOG_ENDS*/\n\
\n\
-/*@TRAILER_BEGINS*/\
+/*@TRAILER_BEGINS*/\n\
+ .weak __gmon_start__\n\
");
diff --git a/sysdeps/alpha/libc-tls.c b/sysdeps/sh/libc-tls.c
index 7e02769171..1a7db55c50 100644
--- a/sysdeps/alpha/libc-tls.c
+++ b/sysdeps/sh/libc-tls.c
@@ -1,5 +1,5 @@
-/* Thread-local storage handling in the ELF dynamic linker. Alpha version.
- Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
+/* Thread-local storage handling in the ELF dynamic linker. SH version.
+ Copyright (C) 2009 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
@@ -20,7 +20,7 @@
#include <csu/libc-tls.c>
#include <dl-tls.h>
-/* On Alpha, linker optimizations are not required, so __tls_get_addr
+/* On SH, linker optimizations are not required, so __tls_get_addr
can be called even in statically linked binaries. In this case module
must be always 1 and PT_TLS segment exist in the binary, otherwise it
would not link. */
diff --git a/sysdeps/sh/sh3/__longjmp.S b/sysdeps/sh/sh3/__longjmp.S
index c6d8a3214c..8c84aff9b4 100644
--- a/sysdeps/sh/sh3/__longjmp.S
+++ b/sysdeps/sh/sh3/__longjmp.S
@@ -1,5 +1,5 @@
/* longjmp for SH.
- Copyright (C) 1999, 2000, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2005, 2006, 2009 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
@@ -42,6 +42,9 @@ ENTRY (__longjmp)
mov r2, r14
mov.l @r4+, r2
PTR_DEMANGLE2 (r2, r1)
+# ifdef CHECK_SP
+ CHECK_SP (r2)
+# endif
mov r2, r15
mov.l @r4+, r2
PTR_DEMANGLE2 (r2, r1)
@@ -49,6 +52,10 @@ ENTRY (__longjmp)
mov #0, r1
#else
mov.l @r4+, r14
+# ifdef CHECK_SP
+ mov.l @r4, r2
+ CHECK_SP (r2)
+# endif
mov.l @r4+, r15
lds.l @r4+, pr
#endif
diff --git a/sysdeps/sh/sh4/__longjmp.S b/sysdeps/sh/sh4/__longjmp.S
index 320a7d11f7..f2e4b7535a 100644
--- a/sysdeps/sh/sh4/__longjmp.S
+++ b/sysdeps/sh/sh4/__longjmp.S
@@ -1,5 +1,5 @@
/* longjmp for SH.
- Copyright (C) 1999, 2000, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2005, 2006, 2009 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
@@ -42,6 +42,9 @@ ENTRY (__longjmp)
mov r2, r14
mov.l @r4+, r2
PTR_DEMANGLE2 (r2, r1)
+# ifdef CHECK_SP
+ CHECK_SP (r2)
+# endif
mov r2, r15
mov.l @r4+, r2
PTR_DEMANGLE2 (r2, r1)
@@ -49,9 +52,14 @@ ENTRY (__longjmp)
mov #0, r1
#else
mov.l @r4+, r14
+# ifdef CHECK_SP
+ mov.l @r4, r2
+ CHECK_SP (r2)
+# endif
mov.l @r4+, r15
lds.l @r4+, pr
#endif
+#ifdef __SH_FPU_ANY__
ldc.l @r4+, gbr
lds.l @r4+, fpscr
fmov.s @r4+, fr12
@@ -59,4 +67,8 @@ ENTRY (__longjmp)
fmov.s @r4+, fr14
rts
fmov.s @r4+, fr15
+#else
+ rts
+ ldc.l @r4+, gbr
+#endif /* !__SH_FPU_ANY__ */
END (__longjmp)
diff --git a/sysdeps/sh/sh4/dl-trampoline.S b/sysdeps/sh/sh4/dl-trampoline.S
index f9529851a1..bd9bb7e5bd 100644
--- a/sysdeps/sh/sh4/dl-trampoline.S
+++ b/sysdeps/sh/sh4/dl-trampoline.S
@@ -1,2 +1,4 @@
-#define HAVE_FPU
+#ifdef __SH_FPU_ANY__
+# define HAVE_FPU
+#endif
#include <sysdeps/sh/dl-trampoline.S>
diff --git a/sysdeps/sh/sh4/fpu/fpu_control.h b/sysdeps/sh/sh4/fpu/fpu_control.h
index 43eb9e5492..d1be46d12f 100644
--- a/sysdeps/sh/sh4/fpu/fpu_control.h
+++ b/sysdeps/sh/sh4/fpu/fpu_control.h
@@ -1,5 +1,5 @@
/* FPU control word definitions. SH version.
- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2009 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
@@ -45,6 +45,8 @@ typedef unsigned int fpu_control_t;
#define _FPU_GETCW(cw) __asm__ ("sts fpscr,%0" : "=r" (cw))
#if defined __GNUC__
+/* GCC provides this function. */
+extern void __set_fpscr (unsigned long);
#define _FPU_SETCW(cw) __set_fpscr ((cw))
#else
#define _FPU_SETCW(cw) __asm__ ("lds %0,fpscr" : : "r" (cw))
diff --git a/sysdeps/sh/sh4/setjmp.S b/sysdeps/sh/sh4/setjmp.S
index f9a4f0a8ce..9d8fab7a99 100644
--- a/sysdeps/sh/sh4/setjmp.S
+++ b/sysdeps/sh/sh4/setjmp.S
@@ -1,5 +1,5 @@
/* setjmp for SH4.
- Copyright (C) 1999, 2000, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2005, 2006, 2009 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
@@ -22,12 +22,16 @@
ENTRY (__sigsetjmp)
/* Save registers */
+#ifdef __SH_FPU_ANY__
add #JB_SIZE, r4
fmov.s fr15, @-r4
fmov.s fr14, @-r4
fmov.s fr13, @-r4
fmov.s fr12, @-r4
sts.l fpscr, @-r4
+#else
+ add #(JB_SIZE - 4 * 5), r4
+#endif /* __SH_FPU_ANY__ */
stc.l gbr, @-r4
#ifdef PTR_MANGLE
sts pr, r2
diff --git a/sysdeps/sparc/bits/link.h b/sysdeps/sparc/bits/link.h
index 9b8434f56f..e0550e84ac 100644
--- a/sysdeps/sparc/bits/link.h
+++ b/sysdeps/sparc/bits/link.h
@@ -1,5 +1,5 @@
/* Machine-specific audit interfaces for dynamic linker. SPARC version.
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 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
@@ -75,7 +75,7 @@ extern unsigned int la_sparc32_gnu_pltexit (Elf32_Sym *__sym,
uintptr_t *__defcook,
const La_sparc32_regs *__inregs,
La_sparc32_retval *__outregs,
- const char *symname);
+ const char *__symname);
#else
@@ -93,7 +93,7 @@ extern unsigned int la_sparc64_gnu_pltexit (Elf64_Sym *__sym,
uintptr_t *__defcook,
const La_sparc64_regs *__inregs,
La_sparc64_retval *__outregs,
- const char *symname);
+ const char *__symname);
#endif
diff --git a/sysdeps/sparc/sparc32/elf/configure b/sysdeps/sparc/sparc32/elf/configure
index d4f9517959..37522c3454 100644
--- a/sysdeps/sparc/sparc32/elf/configure
+++ b/sysdeps/sparc/sparc32/elf/configure
@@ -3,10 +3,10 @@
if test "$usetls" != no; then
# Check for support of thread-local storage handling in assembler and linker.
-echo "$as_me:$LINENO: checking for sparc32 TLS support" >&5
-echo $ECHO_N "checking for sparc32 TLS support... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for sparc32 TLS support" >&5
+$as_echo_n "checking for sparc32 TLS support... " >&6; }
if test "${libc_cv_sparc32_tls+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<\EOF
.section ".tdata", "awT", @progbits
@@ -38,7 +38,7 @@ if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_sparc32_tls=yes
else
@@ -46,8 +46,8 @@ else
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_sparc32_tls" >&5
-echo "${ECHO_T}$libc_cv_sparc32_tls" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_sparc32_tls" >&5
+$as_echo "$libc_cv_sparc32_tls" >&6; }
if test $libc_cv_sparc32_tls = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TLS_SUPPORT 1
@@ -57,10 +57,10 @@ fi
fi
# Check for broken WDISP22 in the linker.
-echo "$as_me:$LINENO: checking for sparc32 ld WDISP22 handling" >&5
-echo $ECHO_N "checking for sparc32 ld WDISP22 handling... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for sparc32 ld WDISP22 handling" >&5
+$as_echo_n "checking for sparc32 ld WDISP22 handling... " >&6; }
if test "${libc_cv_sparc32_wdisp22+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
echo 'bne foo; nop' > conftest1.s
echo '.globl foo; .hidden foo; foo: nop' > conftest2.s
@@ -69,7 +69,7 @@ if { ac_try='${CC-cc} -nostdlib -shared $CFLAGS conftest1.s conftest2.s -o conft
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
if readelf -r conftest.so | grep -q R_SPARC_WDISP22; then
libc_cv_sparc32_wdisp22=broken
@@ -79,8 +79,8 @@ if { ac_try='${CC-cc} -nostdlib -shared $CFLAGS conftest1.s conftest2.s -o conft
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_sparc32_wdisp22" >&5
-echo "${ECHO_T}$libc_cv_sparc32_wdisp22" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_sparc32_wdisp22" >&5
+$as_echo "$libc_cv_sparc32_wdisp22" >&6; }
if test $libc_cv_sparc32_wdisp22 != ok; then
cat >>confdefs.h <<\_ACEOF
#define BROKEN_SPARC_WDISP22 1
diff --git a/sysdeps/sparc/sparc32/elf/start.S b/sysdeps/sparc/sparc32/elf/start.S
index 85adb7322f..7ff4bd68f6 100644
--- a/sysdeps/sparc/sparc32/elf/start.S
+++ b/sysdeps/sparc/sparc32/elf/start.S
@@ -1,5 +1,6 @@
/* Startup code for elf32-sparc
- Copyright (C) 1997, 1998, 2002, 2004, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 2002, 2004, 2007, 2009
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997.
@@ -96,4 +97,5 @@ _start:
.data
.globl __data_start
__data_start:
+ .long 0
weak_alias (__data_start, data_start)
diff --git a/sysdeps/sparc/sparc64/elf/configure b/sysdeps/sparc/sparc64/elf/configure
index 46181524c7..2c9e29e6f6 100644
--- a/sysdeps/sparc/sparc64/elf/configure
+++ b/sysdeps/sparc/sparc64/elf/configure
@@ -3,10 +3,10 @@
if test "$usetls" != no; then
# Check for support of thread-local storage handling in assembler and linker.
-echo "$as_me:$LINENO: checking for sparc64 TLS support" >&5
-echo $ECHO_N "checking for sparc64 TLS support... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for sparc64 TLS support" >&5
+$as_echo_n "checking for sparc64 TLS support... " >&6; }
if test "${libc_cv_sparc64_tls+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<\EOF
.section ".tdata", "awT", @progbits
@@ -39,7 +39,7 @@ if { ac_try='${CC-cc} -o conftest.bin $CFLAGS conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_sparc64_tls=yes
else
@@ -47,8 +47,8 @@ else
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_sparc64_tls" >&5
-echo "${ECHO_T}$libc_cv_sparc64_tls" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_sparc64_tls" >&5
+$as_echo "$libc_cv_sparc64_tls" >&6; }
if test $libc_cv_sparc64_tls = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TLS_SUPPORT 1
@@ -58,10 +58,10 @@ fi
fi
# Check for broken WDISP22 in the linker.
-echo "$as_me:$LINENO: checking for sparc64 ld WDISP22 handling" >&5
-echo $ECHO_N "checking for sparc64 ld WDISP22 handling... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking for sparc64 ld WDISP22 handling" >&5
+$as_echo_n "checking for sparc64 ld WDISP22 handling... " >&6; }
if test "${libc_cv_sparc64_wdisp22+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
echo 'bne foo; nop' > conftest1.s
echo '.globl foo; .hidden foo; foo: nop' > conftest2.s
@@ -70,7 +70,7 @@ if { ac_try='${CC-cc} -nostdlib -shared $CFLAGS conftest1.s conftest2.s -o conft
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
if readelf -r conftest.so | grep -q R_SPARC_WDISP22; then
libc_cv_sparc64_wdisp22=broken
@@ -80,8 +80,8 @@ if { ac_try='${CC-cc} -nostdlib -shared $CFLAGS conftest1.s conftest2.s -o conft
fi
rm -f conftest*
fi
-echo "$as_me:$LINENO: result: $libc_cv_sparc64_wdisp22" >&5
-echo "${ECHO_T}$libc_cv_sparc64_wdisp22" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_sparc64_wdisp22" >&5
+$as_echo "$libc_cv_sparc64_wdisp22" >&6; }
if test $libc_cv_sparc64_wdisp22 != ok; then
cat >>confdefs.h <<\_ACEOF
#define BROKEN_SPARC_WDISP22 1
diff --git a/sysdeps/sparc/sparc64/elf/start.S b/sysdeps/sparc/sparc64/elf/start.S
index 650d3d3048..406ea0f55e 100644
--- a/sysdeps/sparc/sparc64/elf/start.S
+++ b/sysdeps/sparc/sparc64/elf/start.S
@@ -1,5 +1,6 @@
/* Startup code for elf64-sparc
- Copyright (C) 1997, 1998, 2002, 2004, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 2002, 2004, 2007, 2009
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997.
@@ -97,4 +98,5 @@ _start:
.data
.globl __data_start
__data_start:
+ .long 0
weak_alias (__data_start, data_start)
diff --git a/sysdeps/unix/Makefile b/sysdeps/unix/Makefile
index 2696e7fb62..f7140884a1 100644
--- a/sysdeps/unix/Makefile
+++ b/sysdeps/unix/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991,1992,1993,1994,1995,1996,1997,1998,1999,2003, 2006, 2008
+# Copyright (C) 1991,1992,1993,1994,1995,1996,1997,1998,1999,2003,2006,2008,2009
# Free Software Foundation, Inc.
# This file is part of the GNU C Library.
@@ -260,7 +260,6 @@ ifndef inhibit-unix-syscalls
# which specifies objects to be compiled as simple Unix system calls.
-include $(common-objpfx)sysd-syscalls
-omit-deps += $(foreach t,$(sysd-rules-targets),$(unix-syscalls:%=$t))
ifeq (misc,$(subdir))
sysdep_routines += $(unix-extra-syscalls)
@@ -306,9 +305,9 @@ endif
endif
# This is the end of the pipeline for compiling the syscall stubs.
-# The stdin in assembler with cpp using sysdep.h macros.
-# Be sure to disable debugging info since it would all just say "<stdin>".
-compile-syscall = $(filter-out -g%,$(COMPILE.S)) -x assembler-with-cpp -o $@ -
+# The stdin is assembler with cpp using sysdep.h macros.
+compile-syscall = $(COMPILE.S) -o $@ -x assembler-with-cpp - \
+ $(compile-mkdep-flags)
ifndef avoid-generated
$(common-objpfx)sysd-syscalls: $(..)sysdeps/unix/make-syscalls.sh \
@@ -323,16 +322,13 @@ $(common-objpfx)sysd-syscalls: $(..)sysdeps/unix/make-syscalls.sh \
mv -f $@T $@
endif
-# The syscall objects depend on s-proto.d or s-proto-cancel.d, which
-# are generated to specify dependencies generated syscalls have on
-# headers.
+# The $(bppfx)syscall.ob objects depend on s-proto-bp.d, which are
+# generated to specify dependencies generated BP stubs have on headers.
# These deps use file names relative to a subdir, so don't
# include them in the parent directory.
ifneq (,$(filter $(unix-syscalls),$(routines) $(sysdep_routines) $(aux)))
ifndef no_deps
--include $(common-objpfx)s-proto.d
-include $(common-objpfx)s-proto-bp.d
--include $(common-objpfx)s-proto-cancel.d
endif
endif
@@ -340,7 +336,7 @@ $(common-objpfx)s-%.d: $(..)sysdeps/unix/s-%.S \
$(wildcard $(+sysdep_dirs:%=%/syscalls.list))
$(+make-deps)
-common-generated += s-proto.d s-proto-bp.d s-proto-cancel.d
+common-generated += s-proto-bp.d
postclean-generated += sysd-syscalls
endif
diff --git a/sysdeps/unix/alpha/Makefile b/sysdeps/unix/alpha/Makefile
deleted file mode 100644
index 441aa02a83..0000000000
--- a/sysdeps/unix/alpha/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-ifeq ($(subdir),rt)
-librt-sysdep_routines += rt-sysdep
-endif
diff --git a/sysdeps/unix/alpha/pipe.S b/sysdeps/unix/alpha/pipe.S
deleted file mode 100644
index 2da4d78abd..0000000000
--- a/sysdeps/unix/alpha/pipe.S
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright (C) 1993, 1995, 1997, 2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* __pipe is a special syscall since it returns two values. */
-
-#include <sysdep.h>
-
-PSEUDO (__pipe, pipe, 0)
- stl r0, 0(a0)
- stl r1, 4(a0)
- mov zero, v0
- ret
-PSEUDO_END(__pipe)
-
-libc_hidden_def (__pipe)
-weak_alias (__pipe, pipe)
diff --git a/sysdeps/unix/alpha/rt-sysdep.S b/sysdeps/unix/alpha/rt-sysdep.S
deleted file mode 100644
index f966bf1e59..0000000000
--- a/sysdeps/unix/alpha/rt-sysdep.S
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdep.S>
diff --git a/sysdeps/unix/alpha/sysdep.S b/sysdeps/unix/alpha/sysdep.S
deleted file mode 100644
index c67a6542f6..0000000000
--- a/sysdeps/unix/alpha/sysdep.S
+++ /dev/null
@@ -1,135 +0,0 @@
-/* Copyright (C) 1993, 1996, 1998, 2002, 2003, 2004
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#include <features.h>
-
-#if defined(__ELF__) && defined(PIC)
- /* Put this at the end of libc's text segment so that all of
- the direct branches from the syscalls are forward, and
- thus predicted not taken. */
- .section .text.last, "ax", @progbits
-#else
- .text
-#endif
-
-#ifdef PIC
- /* When building a shared library, we branch here without
- having loaded the GP. Nor, since it was a direct branch,
- have we loaded PV with our address. Do both. */
-# define LOADGP br pv, 1f; 1: ldgp gp, 0(pv)
-# define PROLOGUE .prologue 0
-# define EPILOGUE
-#else
- /* When building the static library, we tail call here from
- elsewhere, which might use a different GP. The entertaining
- part is that we have to return with the GP of our caller
- in place, so that linker relaxation works properly. */
- /* ??? This is so ugly. Consider always putting the errno
- setting code with the syscall in the static case. */
-# define GPSAVEREG t10
-# define LOADGP ldah t11, 0(pv) !gpdisp!1; \
- br 1f; \
- .subsection 2; \
- 1: mov gp, GPSAVEREG; \
- lda gp, 0(t11) !gpdisp!1; \
- br 2f; \
- .previous; \
- mov gp, GPSAVEREG; \
- 2:
-# define PROLOGUE .prologue 1
-# define EPILOGUE mov GPSAVEREG, gp
-#endif
-
- .align 4
- .globl __syscall_error
- .ent __syscall_error
-__syscall_error:
-
-#if defined(_LIBC_REENTRANT) && USE___THREAD
-
-#ifndef NOT_IN_libc
-# define SYSCALL_ERROR_ERRNO __libc_errno
-#else
-# define SYSCALL_ERROR_ERRNO errno
-#endif
-
- LOADGP
- PROLOGUE
- mov v0, t0
- call_pal PAL_rduniq
- ldq t1, SYSCALL_ERROR_ERRNO(gp) !gottprel
- addq v0, t1, v0
- stl t0, 0(v0)
- lda v0, -1
- EPILOGUE
- ret
-
-#elif defined(_LIBC_REENTRANT)
-
- LOADGP
- lda sp, -32(sp)
- .frame sp, 32, ra, 0
- stq ra, 0(sp)
- stq v0, 8(sp)
-#ifdef GPSAVEREG
- stq GPSAVEREG, 16(sp)
-#endif
- .mask 0x4000001, -32
- PROLOGUE
-
- /* Find our per-thread errno address */
-#if defined PIC && !defined IS_IN_librt
- bsr ra, __errno_location !samegp
-#else
- jsr ra, __errno_location
-#ifndef GPSAVEREG
- ldgp gp, 0(ra)
-#endif
-#endif
-
- /* Store the error value. */
- ldq t0, 8(sp)
- stl t0, 0(v0)
-
- /* And kick back a -1. */
- ldi v0, -1
-
-#ifdef GPSAVEREG
- ldq GPSAVEREG, 16(sp)
-#endif
- ldq ra, 0(sp)
- lda sp, 32(sp)
- EPILOGUE
- ret
-
-#else
-
- LOADGP
- PROLOGUE
- stl v0, errno
- lda v0, -1
- EPILOGUE
- ret
-
-#endif
-
- .subsection 3
- .end __syscall_error
diff --git a/sysdeps/unix/alpha/sysdep.h b/sysdeps/unix/alpha/sysdep.h
deleted file mode 100644
index 2e5bc798eb..0000000000
--- a/sysdeps/unix/alpha/sysdep.h
+++ /dev/null
@@ -1,438 +0,0 @@
-/* Copyright (C) 1992, 1995, 1996, 2000, 2003, 2004, 2006
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdeps/unix/sysdep.h>
-
-#ifdef __ASSEMBLER__
-
-#ifdef __linux__
-# include <alpha/regdef.h>
-#else
-# include <regdef.h>
-#endif
-
-#include <tls.h> /* Defines USE___THREAD. */
-
-#ifdef IS_IN_rtld
-# include <dl-sysdep.h> /* Defines RTLD_PRIVATE_ERRNO. */
-#endif
-
-
-#ifdef __STDC__
-#define __LABEL(x) x##:
-#else
-#define __LABEL(x) x/**/:
-#endif
-
-#define LEAF(name, framesize) \
- .globl name; \
- .align 4; \
- .ent name, 0; \
- __LABEL(name) \
- .frame sp, framesize, ra
-
-#define ENTRY(name) \
- .globl name; \
- .align 4; \
- .ent name, 0; \
- __LABEL(name) \
- .frame sp, 0, ra
-
-/* Mark the end of function SYM. */
-#undef END
-#define END(sym) .end sym
-
-#ifdef PROF
-# define PSEUDO_PROLOGUE \
- .frame sp, 0, ra; \
- ldgp gp,0(pv); \
- .set noat; \
- lda AT,_mcount; \
- jsr AT,(AT),_mcount; \
- .set at; \
- .prologue 1
-#elif defined PIC
-# define PSEUDO_PROLOGUE \
- .frame sp, 0, ra; \
- .prologue 0
-#else
-# define PSEUDO_PROLOGUE \
- .frame sp, 0, ra; \
- ldgp gp,0(pv); \
- .prologue 1
-#endif /* PROF */
-
-#if RTLD_PRIVATE_ERRNO
-# define SYSCALL_ERROR_LABEL $syscall_error
-# define SYSCALL_ERROR_HANDLER \
- stl v0, rtld_errno(gp) !gprel; \
- lda v0, -1; \
- ret
-#elif defined(PIC)
-# define SYSCALL_ERROR_LABEL __syscall_error
-# define SYSCALL_ERROR_HANDLER \
- br $31, __syscall_error !samegp
-#else
-# define SYSCALL_ERROR_LABEL $syscall_error
-# define SYSCALL_ERROR_HANDLER \
- jmp $31, __syscall_error
-#endif /* RTLD_PRIVATE_ERRNO */
-
-/* Overridden by specific syscalls. */
-#undef PSEUDO_PREPARE_ARGS
-#define PSEUDO_PREPARE_ARGS /* Nothing. */
-
-#define PSEUDO(name, syscall_name, args) \
- .globl name; \
- .align 4; \
- .ent name,0; \
-__LABEL(name) \
- PSEUDO_PROLOGUE; \
- PSEUDO_PREPARE_ARGS \
- lda v0, SYS_ify(syscall_name); \
- call_pal PAL_callsys; \
- bne a3, SYSCALL_ERROR_LABEL
-
-#undef PSEUDO_END
-#if defined(PIC) && !RTLD_PRIVATE_ERRNO
-# define PSEUDO_END(sym) END(sym)
-#else
-# define PSEUDO_END(sym) \
-$syscall_error: \
- SYSCALL_ERROR_HANDLER; \
- END(sym)
-#endif
-
-#define PSEUDO_NOERRNO(name, syscall_name, args) \
- .globl name; \
- .align 4; \
- .ent name,0; \
-__LABEL(name) \
- PSEUDO_PROLOGUE; \
- PSEUDO_PREPARE_ARGS \
- lda v0, SYS_ify(syscall_name); \
- call_pal PAL_callsys;
-
-#undef PSEUDO_END_NOERRNO
-#define PSEUDO_END_NOERRNO(sym) END(sym)
-
-#define ret_NOERRNO ret
-
-#define PSEUDO_ERRVAL(name, syscall_name, args) \
- .globl name; \
- .align 4; \
- .ent name,0; \
-__LABEL(name) \
- PSEUDO_PROLOGUE; \
- PSEUDO_PREPARE_ARGS \
- lda v0, SYS_ify(syscall_name); \
- call_pal PAL_callsys;
-
-#undef PSEUDO_END_ERRVAL
-#define PSEUDO_END_ERRVAL(sym) END(sym)
-
-#define ret_ERRVAL ret
-
-#define r0 v0
-#define r1 a4
-
-#define MOVE(x,y) mov x,y
-
-#else /* !ASSEMBLER */
-
-/* ??? Linux needs to be able to override INLINE_SYSCALL for one
- particular special case. Make this easy. */
-
-#undef INLINE_SYSCALL
-#define INLINE_SYSCALL(name, nr, args...) \
- INLINE_SYSCALL1(name, nr, args)
-
-#define INLINE_SYSCALL1(name, nr, args...) \
-({ \
- long _sc_ret, _sc_err; \
- inline_syscall##nr(__NR_##name, args); \
- if (__builtin_expect (_sc_err, 0)) \
- { \
- __set_errno (_sc_ret); \
- _sc_ret = -1L; \
- } \
- _sc_ret; \
-})
-
-#define INTERNAL_SYSCALL(name, err_out, nr, args...) \
- INTERNAL_SYSCALL1(name, err_out, nr, args)
-
-#define INTERNAL_SYSCALL1(name, err_out, nr, args...) \
- INTERNAL_SYSCALL_NCS(__NR_##name, err_out, nr, args)
-
-#define INTERNAL_SYSCALL_NCS(name, err_out, nr, args...) \
-({ \
- long _sc_ret, _sc_err; \
- inline_syscall##nr(name, args); \
- err_out = _sc_err; \
- _sc_ret; \
-})
-
-#define INTERNAL_SYSCALL_DECL(err) long int err
-#define INTERNAL_SYSCALL_ERROR_P(val, err) err
-#define INTERNAL_SYSCALL_ERRNO(val, err) val
-
-#define inline_syscall_clobbers \
- "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", \
- "$22", "$23", "$24", "$25", "$27", "$28", "memory"
-
-/* If TLS is in use, we have a conflict between the PAL_rduniq primitive,
- as modeled within GCC, and explicit use of the R0 register. If we use
- the register via the asm, the scheduler may place the PAL_rduniq insn
- before we've copied the data from R0 into _sc_ret. If this happens
- we'll get a reload abort, since R0 is live at the same time it is
- needed for the PAL_rduniq.
-
- Solve this by using the "v" constraint instead of an asm for the syscall
- output. We don't do this unconditionally to allow compilation with
- older compilers. */
-
-#ifdef HAVE___THREAD
-#define inline_syscall_r0_asm
-#define inline_syscall_r0_out_constraint "=v"
-#else
-#define inline_syscall_r0_asm __asm__("$0")
-#define inline_syscall_r0_out_constraint "=r"
-#endif
-
-/* It is moderately important optimization-wise to limit the lifetime
- of the hard-register variables as much as possible. Thus we copy
- in/out as close to the asm as possible. */
-
-#define inline_syscall0(name, args...) \
-{ \
- register long _sc_0 inline_syscall_r0_asm; \
- register long _sc_19 __asm__("$19"); \
- \
- _sc_0 = name; \
- __asm__ __volatile__ \
- ("callsys # %0 %1 <= %2" \
- : inline_syscall_r0_out_constraint (_sc_0), \
- "=r"(_sc_19) \
- : "0"(_sc_0) \
- : inline_syscall_clobbers, \
- "$16", "$17", "$18", "$20", "$21"); \
- _sc_ret = _sc_0, _sc_err = _sc_19; \
-}
-
-#define inline_syscall1(name,arg1) \
-{ \
- register long _sc_0 inline_syscall_r0_asm; \
- register long _sc_16 __asm__("$16"); \
- register long _sc_19 __asm__("$19"); \
- register long _tmp_16 = (long) (arg1); \
- \
- _sc_0 = name; \
- _sc_16 = _tmp_16; \
- __asm__ __volatile__ \
- ("callsys # %0 %1 <= %2 %3" \
- : inline_syscall_r0_out_constraint (_sc_0), \
- "=r"(_sc_19), "=r"(_sc_16) \
- : "0"(_sc_0), "2"(_sc_16) \
- : inline_syscall_clobbers, \
- "$17", "$18", "$20", "$21"); \
- _sc_ret = _sc_0, _sc_err = _sc_19; \
-}
-
-#define inline_syscall2(name,arg1,arg2) \
-{ \
- register long _sc_0 inline_syscall_r0_asm; \
- register long _sc_16 __asm__("$16"); \
- register long _sc_17 __asm__("$17"); \
- register long _sc_19 __asm__("$19"); \
- register long _tmp_16 = (long) (arg1); \
- register long _tmp_17 = (long) (arg2); \
- \
- _sc_0 = name; \
- _sc_16 = _tmp_16; \
- _sc_17 = _tmp_17; \
- __asm__ __volatile__ \
- ("callsys # %0 %1 <= %2 %3 %4" \
- : inline_syscall_r0_out_constraint (_sc_0), \
- "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17) \
- : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17) \
- : inline_syscall_clobbers, \
- "$18", "$20", "$21"); \
- _sc_ret = _sc_0, _sc_err = _sc_19; \
-}
-
-#define inline_syscall3(name,arg1,arg2,arg3) \
-{ \
- register long _sc_0 inline_syscall_r0_asm; \
- register long _sc_16 __asm__("$16"); \
- register long _sc_17 __asm__("$17"); \
- register long _sc_18 __asm__("$18"); \
- register long _sc_19 __asm__("$19"); \
- register long _tmp_16 = (long) (arg1); \
- register long _tmp_17 = (long) (arg2); \
- register long _tmp_18 = (long) (arg3); \
- \
- _sc_0 = name; \
- _sc_16 = _tmp_16; \
- _sc_17 = _tmp_17; \
- _sc_18 = _tmp_18; \
- __asm__ __volatile__ \
- ("callsys # %0 %1 <= %2 %3 %4 %5" \
- : inline_syscall_r0_out_constraint (_sc_0), \
- "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17), \
- "=r"(_sc_18) \
- : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \
- "4"(_sc_18) \
- : inline_syscall_clobbers, "$20", "$21"); \
- _sc_ret = _sc_0, _sc_err = _sc_19; \
-}
-
-#define inline_syscall4(name,arg1,arg2,arg3,arg4) \
-{ \
- register long _sc_0 inline_syscall_r0_asm; \
- register long _sc_16 __asm__("$16"); \
- register long _sc_17 __asm__("$17"); \
- register long _sc_18 __asm__("$18"); \
- register long _sc_19 __asm__("$19"); \
- register long _tmp_16 = (long) (arg1); \
- register long _tmp_17 = (long) (arg2); \
- register long _tmp_18 = (long) (arg3); \
- register long _tmp_19 = (long) (arg4); \
- \
- _sc_0 = name; \
- _sc_16 = _tmp_16; \
- _sc_17 = _tmp_17; \
- _sc_18 = _tmp_18; \
- _sc_19 = _tmp_19; \
- __asm__ __volatile__ \
- ("callsys # %0 %1 <= %2 %3 %4 %5 %6" \
- : inline_syscall_r0_out_constraint (_sc_0), \
- "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17), \
- "=r"(_sc_18) \
- : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \
- "4"(_sc_18), "1"(_sc_19) \
- : inline_syscall_clobbers, "$20", "$21"); \
- _sc_ret = _sc_0, _sc_err = _sc_19; \
-}
-
-#define inline_syscall5(name,arg1,arg2,arg3,arg4,arg5) \
-{ \
- register long _sc_0 inline_syscall_r0_asm; \
- register long _sc_16 __asm__("$16"); \
- register long _sc_17 __asm__("$17"); \
- register long _sc_18 __asm__("$18"); \
- register long _sc_19 __asm__("$19"); \
- register long _sc_20 __asm__("$20"); \
- register long _tmp_16 = (long) (arg1); \
- register long _tmp_17 = (long) (arg2); \
- register long _tmp_18 = (long) (arg3); \
- register long _tmp_19 = (long) (arg4); \
- register long _tmp_20 = (long) (arg5); \
- \
- _sc_0 = name; \
- _sc_16 = _tmp_16; \
- _sc_17 = _tmp_17; \
- _sc_18 = _tmp_18; \
- _sc_19 = _tmp_19; \
- _sc_20 = _tmp_20; \
- __asm__ __volatile__ \
- ("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7" \
- : inline_syscall_r0_out_constraint (_sc_0), \
- "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17), \
- "=r"(_sc_18), "=r"(_sc_20) \
- : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \
- "4"(_sc_18), "1"(_sc_19), "5"(_sc_20) \
- : inline_syscall_clobbers, "$21"); \
- _sc_ret = _sc_0, _sc_err = _sc_19; \
-}
-
-#define inline_syscall6(name,arg1,arg2,arg3,arg4,arg5,arg6) \
-{ \
- register long _sc_0 inline_syscall_r0_asm; \
- register long _sc_16 __asm__("$16"); \
- register long _sc_17 __asm__("$17"); \
- register long _sc_18 __asm__("$18"); \
- register long _sc_19 __asm__("$19"); \
- register long _sc_20 __asm__("$20"); \
- register long _sc_21 __asm__("$21"); \
- register long _tmp_16 = (long) (arg1); \
- register long _tmp_17 = (long) (arg2); \
- register long _tmp_18 = (long) (arg3); \
- register long _tmp_19 = (long) (arg4); \
- register long _tmp_20 = (long) (arg5); \
- register long _tmp_21 = (long) (arg6); \
- \
- _sc_0 = name; \
- _sc_16 = _tmp_16; \
- _sc_17 = _tmp_17; \
- _sc_18 = _tmp_18; \
- _sc_19 = _tmp_19; \
- _sc_20 = _tmp_20; \
- _sc_21 = _tmp_21; \
- __asm__ __volatile__ \
- ("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7 %8" \
- : inline_syscall_r0_out_constraint (_sc_0), \
- "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17), \
- "=r"(_sc_18), "=r"(_sc_20), "=r"(_sc_21) \
- : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), "4"(_sc_18), \
- "1"(_sc_19), "5"(_sc_20), "6"(_sc_21) \
- : inline_syscall_clobbers); \
- _sc_ret = _sc_0, _sc_err = _sc_19; \
-}
-
-/* Pointer mangling support. Note that tls access is slow enough that
- we don't deoptimize things by placing the pointer check value there. */
-
-#include <stdint.h>
-
-#if defined NOT_IN_libc && defined IS_IN_rtld
-# ifdef __ASSEMBLER__
-# define PTR_MANGLE(dst, src, tmp) \
- ldah tmp, __pointer_chk_guard_local($29) !gprelhigh; \
- ldq tmp, __pointer_chk_guard_local(tmp) !gprellow; \
- xor src, tmp, dst
-# define PTR_MANGLE2(dst, src, tmp) \
- xor src, tmp, dst
-# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp)
-# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp)
-# else
-extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
-# define PTR_MANGLE(var) \
- (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
-# define PTR_DEMANGLE(var) PTR_MANGLE(var)
-# endif
-#elif defined PIC
-# ifdef __ASSEMBLER__
-# define PTR_MANGLE(dst, src, tmp) \
- ldq tmp, __pointer_chk_guard; \
- xor src, tmp, dst
-# define PTR_MANGLE2(dst, src, tmp) \
- xor src, tmp, dst
-# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp)
-# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp)
-# else
-extern uintptr_t __pointer_chk_guard attribute_relro;
-# define PTR_MANGLE(var) \
- (var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
-# define PTR_DEMANGLE(var) PTR_MANGLE(var)
-# endif
-#endif
-
-#endif /* ASSEMBLER */
diff --git a/sysdeps/unix/bsd/bits/stat.h b/sysdeps/unix/bsd/bits/stat.h
index 84a58ffbc9..6eeab3b0ee 100644
--- a/sysdeps/unix/bsd/bits/stat.h
+++ b/sysdeps/unix/bsd/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 96, 97, 99, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1996-2000,2010 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
@@ -16,10 +16,13 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SYS_STAT_H
+#if !defined _SYS_STAT_H && !defined _FCNTL_H
# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
#endif
+#ifndef _BITS_STAT_H
+#define _BITS_STAT_H 1
+
#include <bits/types.h>
/* Structure describing file characteristics. */
@@ -84,3 +87,5 @@ struct stat
#define __S_IREAD 0400 /* Read by owner. */
#define __S_IWRITE 0200 /* Write by owner. */
#define __S_IEXEC 0100 /* Execute by owner. */
+
+#endif /* bits/stat.h */
diff --git a/sysdeps/unix/common/.cvsignore b/sysdeps/unix/common/.cvsignore
deleted file mode 100644
index 1f69fd919a..0000000000
--- a/sysdeps/unix/common/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
diff --git a/sysdeps/unix/grantpt.c b/sysdeps/unix/grantpt.c
index bdedbacec8..260e8273f8 100644
--- a/sysdeps/unix/grantpt.c
+++ b/sysdeps/unix/grantpt.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2001, 2002, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 1998.
@@ -19,6 +19,7 @@
#include <assert.h>
#include <errno.h>
+#include <fcntl.h>
#include <grp.h>
#include <limits.h>
#include <stdlib.h>
@@ -37,7 +38,7 @@
this buffer, a sufficiently long buffer is allocated using malloc,
and returned in PTS. 0 is returned upon success, -1 otherwise. */
static int
-pts_name (int fd, char **pts, size_t buf_len)
+pts_name (int fd, char **pts, size_t buf_len, struct stat64 *stp)
{
int rv;
char *buf = *pts;
@@ -48,7 +49,7 @@ pts_name (int fd, char **pts, size_t buf_len)
if (buf_len)
{
- rv = __ptsname_r (fd, buf, buf_len);
+ rv = __ptsname_internal (fd, buf, buf_len, stp);
if (rv != 0)
{
if (rv == ENOTTY)
@@ -107,36 +108,53 @@ grantpt (int fd)
#endif
char *buf = _buf;
struct stat64 st;
- char *grtmpbuf;
- struct group grbuf;
- size_t grbuflen = __sysconf (_SC_GETGR_R_SIZE_MAX);
- struct group *p;
- uid_t uid;
- gid_t gid;
- pid_t pid;
-
- if (pts_name (fd, &buf, sizeof (_buf)))
- return -1;
-
- if (__xstat64 (_STAT_VER, buf, &st) < 0)
- goto cleanup;
+
+ if (__builtin_expect (pts_name (fd, &buf, sizeof (_buf), &st), 0))
+ {
+ int save_errno = errno;
+
+ /* Check, if the file descriptor is valid. pts_name returns the
+ wrong errno number, so we cannot use that. */
+ if (__libc_fcntl (fd, F_GETFD) == -1 && errno == EBADF)
+ return -1;
+
+ /* If the filedescriptor is no TTY, grantpt has to set errno
+ to EINVAL. */
+ if (save_errno == ENOTTY)
+ __set_errno (EINVAL);
+ else
+ __set_errno (save_errno);
+
+ return -1;
+ }
/* Make sure that we own the device. */
- uid = __getuid ();
+ uid_t uid = __getuid ();
if (st.st_uid != uid)
{
if (__chown (buf, uid, st.st_gid) < 0)
goto helper;
}
- /* Get the group ID of the special `tty' group. */
- if (grbuflen == (size_t) -1L)
- /* `sysconf' does not support _SC_GETGR_R_SIZE_MAX.
- Try a moderate value. */
- grbuflen = 1024;
- grtmpbuf = (char *) __alloca (grbuflen);
- __getgrnam_r (TTY_GROUP, &grbuf, grtmpbuf, grbuflen, &p);
- gid = p ? p->gr_gid : __getgid ();
+ static int tty_gid = -1;
+ if (__builtin_expect (tty_gid == -1, 0))
+ {
+ char *grtmpbuf;
+ struct group grbuf;
+ size_t grbuflen = __sysconf (_SC_GETGR_R_SIZE_MAX);
+ struct group *p;
+
+ /* Get the group ID of the special `tty' group. */
+ if (grbuflen == (size_t) -1L)
+ /* `sysconf' does not support _SC_GETGR_R_SIZE_MAX.
+ Try a moderate value. */
+ grbuflen = 1024;
+ grtmpbuf = (char *) __alloca (grbuflen);
+ __getgrnam_r (TTY_GROUP, &grbuf, grtmpbuf, grbuflen, &p);
+ if (p != NULL)
+ tty_gid = p->gr_gid;
+ }
+ gid_t gid = tty_gid == -1 ? __getgid () : tty_gid;
/* Make sure the group of the device is that special group. */
if (st.st_gid != gid)
@@ -157,9 +175,9 @@ grantpt (int fd)
goto cleanup;
/* We have to use the helper program. */
- helper:
+ helper:;
- pid = __fork ();
+ pid_t pid = __fork ();
if (pid == -1)
goto cleanup;
else if (pid == 0)
@@ -173,6 +191,10 @@ grantpt (int fd)
if (__dup2 (fd, PTY_FILENO) < 0)
_exit (FAIL_EBADF);
+#ifdef CLOSE_ALL_FDS
+ CLOSE_ALL_FDS ();
+#endif
+
execle (_PATH_PT_CHOWN, basename (_PATH_PT_CHOWN), NULL, NULL);
_exit (FAIL_EXEC);
}
@@ -185,7 +207,7 @@ grantpt (int fd)
if (!WIFEXITED (w))
__set_errno (ENOEXEC);
else
- switch (WEXITSTATUS(w))
+ switch (WEXITSTATUS (w))
{
case 0:
retval = 0;
@@ -202,6 +224,9 @@ grantpt (int fd)
case FAIL_EXEC:
__set_errno (ENOEXEC);
break;
+ case FAIL_ENOMEM:
+ __set_errno (ENOMEM);
+ break;
default:
assert(! "getpt: internal error: invalid exit code from pt_chown");
diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh
index ca82e1f331..a8b8a262a7 100644
--- a/sysdeps/unix/make-syscalls.sh
+++ b/sysdeps/unix/make-syscalls.sh
@@ -83,12 +83,13 @@ while read file srcfile caller syscall args strong weak; do
;;
esac
- cancellable=
- noerrno=
+ cancellable=0
+ noerrno=0
+ errval=0
case $args in
- C*) cancellable=-cancel; args=`echo $args | sed 's/C:\?//'`;;
- E*) noerrno=_NOERRNO; args=`echo $args | sed 's/E:\?//'`;;
- V*) noerrno=_ERRVAL; args=`echo $args | sed 's/V:\?//'`;;
+ C*) cancellable=1; args=`echo $args | sed 's/C:\?//'`;;
+ E*) noerrno=1; args=`echo $args | sed 's/E:\?//'`;;
+ V*) errval=1; args=`echo $args | sed 's/V:\?//'`;;
esac
# Derive the number of arguments from the argument signature
@@ -115,7 +116,7 @@ while read file srcfile caller syscall args strong weak; do
x--)
# Undefined callnum for an extra syscall.
if [ x$caller != x- ]; then
- if [ x$noerrno != x ]; then
+ if [ $noerrno != 0 ]; then
echo >&2 "$0: no number for $fileno, no-error syscall ($strong $weak)"
exit 2
fi
@@ -151,20 +152,27 @@ shared-only-routines += $file
;;
esac
- echo " \$(common-objpfx)s-proto$cancellable.d"
+ echo " \$(..)sysdeps/unix/make-syscalls.sh"
case x"$callnum" in
x_)
echo "\
+ \$(make-target-directory)
(echo '/* Dummy module requested by syscalls.list */'; \\"
;;
x*)
echo "\
\$(make-target-directory)
- (echo '#include <sysdep$cancellable.h>'; \\
- echo 'PSEUDO$noerrno ($strong, $syscall, $nargs)'; \\
- echo ' ret$noerrno'; \\
- echo 'PSEUDO_END$noerrno($strong)'; \\
- echo 'libc_hidden_def ($strong)'; \\"
+ (echo '#define SYSCALL_NAME $syscall'; \\
+ echo '#define SYSCALL_NARGS $nargs'; \\
+ echo '#define SYSCALL_SYMBOL $strong'; \\"
+ [ $cancellable = 0 ] || echo "\
+ echo '#define SYSCALL_CANCELLABLE 1'; \\"
+ [ $noerrno = 0 ] || echo "\
+ echo '#define SYSCALL_NOERRNO 1'; \\"
+ [ $errval = 0 ] || echo "\
+ echo '#define SYSCALL_ERRVAL 1'; \\"
+ echo "\
+ echo '#include <syscall-template.S>'; \\"
;;
esac
@@ -200,7 +208,7 @@ shared-only-routines += $file
vcount=`expr $vcount + 1`
echo " echo 'strong_alias ($strong, $source)'; \\"
fi
- echo " echo 'symbol_version($source, $base, $ver)'; \\"
+ echo " echo 'symbol_version ($source, $base, $ver)'; \\"
;;
!*)
name=`echo $name | sed 's/.//'`
diff --git a/sysdeps/unix/opendir.c b/sysdeps/unix/opendir.c
index 92029c6547..fbf14f5eec 100644
--- a/sysdeps/unix/opendir.c
+++ b/sysdeps/unix/opendir.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1996,98,2000-2003,2005,2007
+/* Copyright (C) 1991-1996,98,2000-2003,2005,2007,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -81,6 +81,7 @@ DIR *
__opendir (const char *name)
{
struct stat64 statbuf;
+ struct stat64 *statp = NULL;
if (__builtin_expect (name[0], '\1') == '\0')
{
@@ -119,16 +120,14 @@ __opendir (const char *name)
if (__builtin_expect (fd, 0) < 0)
return NULL;
- /* Now make sure this really is a directory and nothing changed since
- the `stat' call. We do not have to perform the test for the
- descriptor being associated with a directory if we know the
- O_DIRECTORY flag is honored by the kernel. */
- if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &statbuf), 0) < 0)
- goto lose;
#ifdef O_DIRECTORY
if (o_directory_works <= 0)
#endif
{
+ /* Now make sure this really is a directory and nothing changed since
+ the `stat' call. */
+ if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &statbuf), 0) < 0)
+ goto lose;
if (__builtin_expect (! S_ISDIR (statbuf.st_mode), 0))
{
__set_errno (ENOTDIR);
@@ -136,9 +135,10 @@ __opendir (const char *name)
close_not_cancel_no_status (fd);
return NULL;
}
+ statp = &statbuf;
}
- return __alloc_dir (fd, true, &statbuf);
+ return __alloc_dir (fd, true, statp);
}
weak_alias (__opendir, opendir)
@@ -171,29 +171,23 @@ __alloc_dir (int fd, bool close_fd, const struct stat64 *statp)
goto lose;
}
- const size_t default_allocation = (BUFSIZ < sizeof (struct dirent64)
- ? sizeof (struct dirent64) : BUFSIZ);
- size_t allocation;
+ const size_t default_allocation = (4 * BUFSIZ < sizeof (struct dirent64)
+ ? sizeof (struct dirent64) : 4 * BUFSIZ);
+ const size_t small_allocation = (BUFSIZ < sizeof (struct dirent64)
+ ? sizeof (struct dirent64) : BUFSIZ);
+ size_t allocation = default_allocation;
#ifdef _STATBUF_ST_BLKSIZE
- if (__builtin_expect ((size_t) statp->st_blksize >= sizeof (struct dirent64),
- 1))
+ if (statp != NULL && default_allocation < statp->st_blksize)
allocation = statp->st_blksize;
- else
#endif
- allocation = default_allocation;
DIR *dirp = (DIR *) malloc (sizeof (DIR) + allocation);
if (dirp == NULL)
{
-#ifdef _STATBUF_ST_BLKSIZE
- if (allocation == statp->st_blksize
- && allocation != default_allocation)
- {
- allocation = default_allocation;
- dirp = (DIR *) malloc (sizeof (DIR) + allocation);
- }
+ allocation = small_allocation;
+ dirp = (DIR *) malloc (sizeof (DIR) + allocation);
+
if (dirp == NULL)
-#endif
lose:
{
if (close_fd)
diff --git a/sysdeps/unix/syscall-template.S b/sysdeps/unix/syscall-template.S
new file mode 100644
index 0000000000..66319f158b
--- /dev/null
+++ b/sysdeps/unix/syscall-template.S
@@ -0,0 +1,88 @@
+/* Assembly code template for system call stubs.
+ Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* The real guts of this work are in the macros defined in the
+ machine- and kernel-specific sysdep.h header file. When we
+ are defining a cancellable system call, the sysdep-cancel.h
+ versions of those macros are what we really use.
+
+ Each system call's object is built by a rule in sysd-syscalls
+ generated by make-syscalls.sh that #include's this file after
+ defining a few macros:
+ SYSCALL_NAME syscall name
+ SYSCALL_NARGS number of arguments this call takes
+ SYSCALL_SYMBOL primary symbol name
+ SYSCALL_CANCELLABLE 1 if the call is a cancelation point
+ SYSCALL_NOERRNO 1 to define a no-errno version (see below)
+ SYSCALL_ERRVAL 1 to define an error-value version (see below)
+
+ We used to simply pipe the correct three lines below through cpp into
+ the assembler. The main reason to have this file instead is so that
+ stub objects can be assembled with -g and get source line information
+ that leads a user back to a source file and these fine comments. The
+ average user otherwise has a hard time knowing which "syscall-like"
+ functions in libc are plain stubs and which have nontrivial C wrappers.
+ Some versions of the "plain" stub generation macros are more than a few
+ instructions long and the untrained eye might not distinguish them from
+ some compiled code that inexplicably lacks source line information. */
+
+#if SYSCALL_CANCELLABLE
+# include <sysdep-cancel.h>
+#else
+# include <sysdep.h>
+#endif
+
+#define T_PSEUDO(SYMBOL, NAME, N) PSEUDO (SYMBOL, NAME, N)
+#define T_PSEUDO_NOERRNO(SYMBOL, NAME, N) PSEUDO_NOERRNO (SYMBOL, NAME, N)
+#define T_PSEUDO_ERRVAL(SYMBOL, NAME, N) PSEUDO_ERRVAL (SYMBOL, NAME, N)
+#define T_PSEUDO_END(SYMBOL) PSEUDO_END (SYMBOL)
+#define T_PSEUDO_END_NOERRNO(SYMBOL) PSEUDO_END_NOERRNO (SYMBOL)
+#define T_PSEUDO_END_ERRVAL(SYMBOL) PSEUDO_END_ERRVAL (SYMBOL)
+
+#if SYSCALL_NOERRNO
+
+/* This kind of system call stub never returns an error.
+ We return the return value register to the caller unexamined. */
+
+T_PSEUDO_NOERRNO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
+ ret_NOERRNO
+T_PSEUDO_END_NOERRNO (SYSCALL_SYMBOL)
+
+#elif SYSCALL_ERRVAL
+
+/* This kind of system call stub returns the errno code as its return
+ value, or zero for success. We may massage the kernel's return value
+ to meet that ABI, but we never set errno here. */
+
+T_PSEUDO_ERRVAL (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
+ ret_ERRVAL
+T_PSEUDO_END_ERRVAL (SYSCALL_SYMBOL)
+
+#else
+
+/* This is a "normal" system call stub: if there is an error,
+ it returns -1 and sets errno. */
+
+T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
+ ret
+T_PSEUDO_END (SYSCALL_SYMBOL)
+
+#endif
+
+libc_hidden_def (SYSCALL_SYMBOL)
diff --git a/sysdeps/unix/sysv/bits/stat.h b/sysdeps/unix/sysv/bits/stat.h
index f9a9e614d5..2fb619a2e4 100644
--- a/sysdeps/unix/sysv/bits/stat.h
+++ b/sysdeps/unix/sysv/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1996, 1997, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1996, 1997, 2000, 2010 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
@@ -16,10 +16,13 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SYS_STAT_H
+#if !defined _SYS_STAT_H && !defined _FCNTL_H
# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
#endif
+#ifndef _BITS_STAT_H
+#define _BITS_STAT_H 1
+
struct stat
{
short int st_dev;
@@ -63,3 +66,5 @@ struct stat
#define __S_IREAD 0400 /* Read by owner. */
#define __S_IWRITE 0200 /* Write by owner. */
#define __S_IEXEC 0100 /* Execute by owner. */
+
+#endif /* bits/stat.h */
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index c93538c1ea..91c123b2b3 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -11,6 +11,10 @@ ifeq ($(subdir),malloc)
CFLAGS-malloc.c += -DMORECORE_CLEARS=2
endif
+ifeq ($(subdir),socket)
+sysdep_routines += internal_accept4
+endif
+
ifeq ($(subdir),misc)
sysdep_routines += sysctl clone llseek umount umount2 readahead \
setfsuid setfsgid makedev epoll_pwait signalfd \
@@ -80,8 +84,8 @@ endif
$(inst_includedir)/bits/syscall.h: $(objpfx)syscall-list.h $(+force)
$(make-target-directory)
if test -r $@ && cmp -s $< $@; \
- then echo 'bits/syscall.h unchanged'; \
- else $(INSTALL_DATA) $< $@; fi
+ then echo 'bits/syscall.h unchanged'; \
+ else $(INSTALL_DATA) $< $@; fi
ifndef no_deps
# Get the generated list of dependencies (probably /usr/include/asm/unistd.h).
@@ -93,7 +97,7 @@ endif
ifeq ($(subdir),time)
sysdep_headers += sys/timex.h
-sysdep_routines += ntp_gettime
+sysdep_routines += ntp_gettime ntp_gettimex
endif
ifeq ($(subdir),socket)
@@ -139,7 +143,7 @@ endif
ifeq ($(subdir),io)
sysdep_routines += xstatconv internal_statvfs internal_statvfs64 \
- sync_file_range open_2 open64_2
+ sync_file_range open_2 open64_2 fallocate fallocate64
endif
ifeq ($(subdir),elf)
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 76ecae0013..f09ef6d983 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -138,6 +138,17 @@ libc {
GLIBC_2.9 {
epoll_create1; inotify_init1;
}
+ GLIBC_2.10 {
+ fallocate;
+ }
+ GLIBC_2.12 {
+ #errlist-compat 134
+ _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
+
+ ntp_gettimex;
+
+ recvmmsg;
+ }
GLIBC_PRIVATE {
# functions used in other libraries
__syscall_rt_sigqueueinfo;
diff --git a/sysdeps/unix/sysv/linux/accept4.c b/sysdeps/unix/sysv/linux/accept4.c
new file mode 100644
index 0000000000..9ef9f479b0
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/accept4.c
@@ -0,0 +1,97 @@
+/* Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2008.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <signal.h>
+#include <sys/socket.h>
+
+#include <sysdep-cancel.h>
+#include <sys/syscall.h>
+#include <kernel-features.h>
+
+
+#ifdef __NR_accept4
+int
+accept4 (int fd, __SOCKADDR_ARG addr, socklen_t *addr_len, int flags)
+{
+ if (SINGLE_THREAD_P)
+ return INLINE_SYSCALL (accept4, 4, fd, addr.__sockaddr__, addr_len, flags);
+
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+ int result = INLINE_SYSCALL (accept4, 4, fd, addr.__sockaddr__, addr_len,
+ flags);
+
+ LIBC_CANCEL_RESET (oldtype);
+
+ return result;
+}
+#elif defined __NR_socketcall
+# ifndef __ASSUME_ACCEPT4
+extern int __internal_accept4 (int fd, __SOCKADDR_ARG addr,
+ socklen_t *addr_len, int flags)
+ attribute_hidden;
+
+static int have_accept4;
+
+int
+accept4 (int fd, __SOCKADDR_ARG addr, socklen_t *addr_len, int flags)
+{
+ if (__builtin_expect (have_accept4 >= 0, 1))
+ {
+ int ret = __internal_accept4 (fd, addr, addr_len, flags);
+ /* The kernel returns -EINVAL for unknown socket operations.
+ We need to convert that error to an ENOSYS error. */
+ if (__builtin_expect (ret < 0, 0)
+ && have_accept4 == 0
+ && errno == EINVAL)
+ {
+ /* Try another call, this time with the FLAGS parameter
+ cleared and an invalid file descriptor. This call will not
+ cause any harm and it will return immediately. */
+ ret = __internal_accept4 (-1, addr, addr_len, 0);
+ if (errno == EINVAL)
+ {
+ have_accept4 = -1;
+ __set_errno (ENOSYS);
+ }
+ else
+ {
+ have_accept4 = 1;
+ __set_errno (EINVAL);
+ }
+ return -1;
+ }
+ return ret;
+ }
+ __set_errno (ENOSYS);
+ return -1;
+}
+# else
+/* When __ASSUME_ACCEPT4 accept4 is defined in internal_accept4.S. */
+# endif
+#else
+int
+accept4 (int fd, __SOCKADDR_ARG addr, socklen_t *addr_len, int flags)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+stub_warning (accept4)
+#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/Implies b/sysdeps/unix/sysv/linux/alpha/Implies
deleted file mode 100644
index 1616efecbe..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/Implies
+++ /dev/null
@@ -1,4 +0,0 @@
-unix/sysv/linux/wordsize-64
-# These supply the ABI compatibility for when long double was double.
-ieee754/ldbl-64-128
-ieee754/ldbl-opt
diff --git a/sysdeps/unix/sysv/linux/alpha/Makefile b/sysdeps/unix/sysv/linux/alpha/Makefile
deleted file mode 100644
index f64f23fd7a..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-ifeq ($(subdir),posix)
-sysdep_routines += oldglob
-endif
-
-ifeq ($(subdir),stdlib)
-gen-as-const-headers += ucontext-offsets.sym
-endif
-
-ifeq ($(subdir),misc)
-sysdep_headers += alpha/ptrace.h alpha/regdef.h sys/io.h
-
-sysdep_routines += ieee_get_fp_control ieee_set_fp_control \
- ioperm llseek
-
-# Support old timeval32 entry points
-sysdep_routines += osf_select osf_gettimeofday osf_settimeofday \
- osf_getitimer osf_setitimer osf_utimes \
- osf_getrusage osf_wait4
-
-# Support old ipc control
-sysdep_routines += oldmsgctl oldsemctl oldshmctl
-
-CFLAGS-ioperm.c = -Wa,-mev6
-endif
-
-ifeq ($(subdir),signal)
-sysdep_routines += rt_sigaction
-endif
-
-ifeq ($(subdir),math)
-# These 2 routines are normally in libgcc{.a,_s.so.1}.
-# However, alpha -mlong-double-128 libgcc relies on
-# glibc providing _Ots* routines and without these files
-# glibc relies on __multc3/__divtc3 only provided
-# by libgcc if configured with -mlong-double-128.
-# Provide these routines here as well.
-libm-routines += multc3 divtc3
-endif # math
diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions
deleted file mode 100644
index 8709dd2a38..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/Versions
+++ /dev/null
@@ -1,94 +0,0 @@
-libc {
- # The comment lines with "#errlist-compat" are magic; see
- # sysdeps/gnu/errlist-compat.awk.
- # When you get an error from errlist-compat.awk, you need to add a new
- # version here. Don't do this blindly, since this means changing the ABI
- # for all GNU/Linux configurations.
-
- GLIBC_2.0 {
- #errlist-compat 131
- _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
-
- # Unfortunately in wider use.
- _inb; _inw; _inl; _outb; _outw; _outl; _bus_base; _bus_base_sparse;
- _hae_shift;
-
- # Exception handling support functions from libgcc
- __register_frame; __register_frame_table; __deregister_frame;
- __frame_state_for; __register_frame_info_table;
-
- # b*
- bus_base; bus_base_sparse;
-
- # h*
- hae_shift;
-
- # i*
- inb; inl; inw; ioperm; iopl;
-
- # o*
- outb; outl; outw;
-
- # p*
- pciconfig_read; pciconfig_write; sethae;
- }
- GLIBC_2.1 {
- #errlist-compat 131
- _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
-
- # Linux/Alpha 64-bit timeval functions.
- __select; select;
- adjtime; adjtimex; __adjtimex;
- __gettimeofday;
-
- # glob interface change
- glob; globfree;
-
- # limit type change
- getrusage;
-
- # time type change
- gettimeofday; getitimer;
-
- # i*
- ieee_get_fp_control; ieee_set_fp_control;
-
- # s*
- setitimer; settimeofday;
-
- # u*
- utimes;
-
- # w*
- wait4;
- }
- GLIBC_2.1.4 {
- pciconfig_iobase;
- }
- GLIBC_2.2.2 {
- # w*
- wordexp;
- }
- GLIBC_2.3 {
- #errlist-compat 132
- _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
- }
- GLIBC_2.4 {
- #errlist-compat 138
- _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
- }
- GLIBC_PRIVATE {
- __libc_alpha_cache_shape;
- }
-}
-ld {
- GLIBC_PRIVATE {
- __libc_alpha_cache_shape;
- }
-}
-librt {
- GLIBC_2.3 {
- # AIO functions.
- aio_cancel; aio_cancel64;
- }
-}
diff --git a/sysdeps/unix/sysv/linux/alpha/a.out.h b/sysdeps/unix/sysv/linux/alpha/a.out.h
deleted file mode 100644
index a7699f0fe0..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/a.out.h
+++ /dev/null
@@ -1,197 +0,0 @@
-#ifndef __A_OUT_GNU_H__
-#define __A_OUT_GNU_H__
-
-#include <bits/a.out.h>
-
-#define __GNU_EXEC_MACROS__
-
-/*
- * OSF/1 ECOFF header structs. ECOFF files consist of:
- * - a file header (struct filehdr),
- * - an a.out header (struct aouthdr),
- * - one or more section headers (struct scnhdr).
- * The filhdr's "f_nscns" field contains the
- * number of section headers.
- */
-
-struct filehdr
-{
- /* OSF/1 "file" header */
- unsigned short f_magic, f_nscns;
- unsigned int f_timdat;
- unsigned long f_symptr;
- unsigned int f_nsyms;
- unsigned short f_opthdr, f_flags;
-};
-
-struct aouthdr
-{
- unsigned long info; /* After that it looks quite normal.. */
- unsigned long tsize;
- unsigned long dsize;
- unsigned long bsize;
- unsigned long entry;
- unsigned long text_start; /* With a few additions that actually make sense. */
- unsigned long data_start;
- unsigned long bss_start;
- unsigned int gprmask, fprmask; /* Bitmask of general & floating point regs used in binary. */
- unsigned long gpvalue;
-};
-
-struct scnhdr
-{
- char s_name[8];
- unsigned long s_paddr;
- unsigned long s_vaddr;
- unsigned long s_size;
- unsigned long s_scnptr;
- unsigned long s_relptr;
- unsigned long s_lnnoptr;
- unsigned short s_nreloc;
- unsigned short s_nlnno;
- unsigned int s_flags;
-};
-
-struct exec
-{
- /* OSF/1 "file" header */
- struct filehdr fh;
- struct aouthdr ah;
-};
-
-#define a_info ah.info
-#define a_text ah.tsize
-#define a_data ah.dsize
-#define a_bss ah.bsize
-#define a_entry ah.entry
-#define a_textstart ah.text_start
-#define a_datastart ah.data_start
-#define a_bssstart ah.bss_start
-#define a_gprmask ah.gprmask
-#define a_fprmask ah.fprmask
-#define a_gpvalue ah.gpvalue
-
-
-#define AOUTHSZ sizeof(struct aouthdr)
-#define SCNHSZ sizeof(struct scnhdr)
-#define SCNROUND 16
-
-enum machine_type
-{
- M_OLDSUN2 = 0,
- M_68010 = 1,
- M_68020 = 2,
- M_SPARC = 3,
- M_386 = 100,
- M_MIPS1 = 151,
- M_MIPS2 = 152
-};
-
-#define N_MAGIC(exec) ((exec).a_info & 0xffff)
-#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
-#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
-#define N_SET_INFO(exec, magic, type, flags) \
- ((exec).a_info = ((magic) & 0xffff) \
- | (((int)(type) & 0xff) << 16) \
- | (((flags) & 0xff) << 24))
-#define N_SET_MAGIC(exec, magic) \
- ((exec).a_info = ((exec).a_info & 0xffff0000) | ((magic) & 0xffff))
-#define N_SET_MACHTYPE(exec, machtype) \
- ((exec).a_info = \
- ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
-#define N_SET_FLAGS(exec, flags) \
- ((exec).a_info = \
- ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
-
-/* Code indicating object file or impure executable. */
-#define OMAGIC 0407
-/* Code indicating pure executable. */
-#define NMAGIC 0410
-/* Code indicating demand-paged executable. */
-#define ZMAGIC 0413
-/* This indicates a demand-paged executable with the header in the text.
- The first page is unmapped to help trap NULL pointer references. */
-#define QMAGIC 0314
-/* Code indicating core file. */
-#define CMAGIC 0421
-
-#define N_TRSIZE(x) 0
-#define N_DRSIZE(x) 0
-#define N_SYMSIZE(x) 0
-#define N_BADMAG(x) \
- (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC \
- && N_MAGIC(x) != ZMAGIC && N_MAGIC(x) != QMAGIC)
-#define _N_HDROFF(x) (1024 - sizeof (struct exec))
-#define N_TXTOFF(x) \
- ((long) N_MAGIC(x) == ZMAGIC ? 0 : \
- (sizeof (struct exec) + (x).fh.f_nscns * SCNHSZ + SCNROUND - 1) \
- & ~(SCNROUND - 1))
-
-#define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text)
-#define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
-#define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x))
-#define N_SYMOFF(x) (N_DRELOFF(x) + N_DRSIZE(x))
-#define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x))
-
-/* Address of text segment in memory after it is loaded. */
-#define N_TXTADDR(x) ((x).a_textstart)
-
-/* Address of data segment in memory after it is loaded. */
-#define SEGMENT_SIZE 1024
-
-#define _N_SEGMENT_ROUND(x) (((x) + SEGMENT_SIZE - 1) & ~(SEGMENT_SIZE - 1))
-#define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text)
-
-#define N_DATADDR(x) ((x).a_datastart)
-#define N_BSSADDR(x) ((x).a_bssstart)
-
-#if !defined (N_NLIST_DECLARED)
-struct nlist
-{
- union
- {
- char *n_name;
- struct nlist *n_next;
- long n_strx;
- } n_un;
- unsigned char n_type;
- char n_other;
- short n_desc;
- unsigned long n_value;
-};
-#endif /* no N_NLIST_DECLARED. */
-
-#define N_UNDF 0
-#define N_ABS 2
-#define N_TEXT 4
-#define N_DATA 6
-#define N_BSS 8
-#define N_FN 15
-#define N_EXT 1
-#define N_TYPE 036
-#define N_STAB 0340
-#define N_INDR 0xa
-#define N_SETA 0x14 /* Absolute set element symbol. */
-#define N_SETT 0x16 /* Text set element symbol. */
-#define N_SETD 0x18 /* Data set element symbol. */
-#define N_SETB 0x1A /* Bss set element symbol. */
-#define N_SETV 0x1C /* Pointer to set vector in data area. */
-
-#if !defined (N_RELOCATION_INFO_DECLARED)
-/* This structure describes a single relocation to be performed.
- The text-relocation section of the file is a vector of these structures,
- all of which apply to the text section.
- Likewise, the data-relocation section applies to the data section. */
-
-struct relocation_info
-{
- int r_address;
- unsigned int r_symbolnum:24;
- unsigned int r_pcrel:1;
- unsigned int r_length:2;
- unsigned int r_extern:1;
- unsigned int r_pad:4;
-};
-#endif /* no N_RELOCATION_INFO_DECLARED. */
-
-#endif /* __A_OUT_GNU_H__ */
diff --git a/sysdeps/unix/sysv/linux/alpha/adjtime.c b/sysdeps/unix/sysv/linux/alpha/adjtime.c
deleted file mode 100644
index 1700524d34..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/adjtime.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* Copyright (C) 1998,2000,2002,2003,2004,2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <shlib-compat.h>
-#include <sysdep.h>
-#include <sys/time.h>
-#include <kernel-features.h>
-
-#if !defined __ASSUME_TIMEVAL64 || SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
-struct timeval32
-{
- int tv_sec, tv_usec;
-};
-
-struct timex32 {
- unsigned int modes; /* mode selector */
- long offset; /* time offset (usec) */
- long freq; /* frequency offset (scaled ppm) */
- long maxerror; /* maximum error (usec) */
- long esterror; /* estimated error (usec) */
- int status; /* clock command/status */
- long constant; /* pll time constant */
- long precision; /* clock precision (usec) (read only) */
- long tolerance; /* clock frequency tolerance (ppm)
- * (read only)
- */
- struct timeval32 time; /* (read only) */
- long tick; /* (modified) usecs between clock ticks */
-
- long ppsfreq; /* pps frequency (scaled ppm) (ro) */
- long jitter; /* pps jitter (us) (ro) */
- int shift; /* interval duration (s) (shift) (ro) */
- long stabil; /* pps stability (scaled ppm) (ro) */
- long jitcnt; /* jitter limit exceeded (ro) */
- long calcnt; /* calibration intervals (ro) */
- long errcnt; /* calibration errors (ro) */
- long stbcnt; /* stability limit exceeded (ro) */
-
- int :32; int :32; int :32; int :32;
- int :32; int :32; int :32; int :32;
- int :32; int :32; int :32; int :32;
-};
-
-#define TIMEVAL timeval32
-#define TIMEX timex32
-#define ADJTIME attribute_compat_text_section __adjtime_tv32
-#define ADJTIMEX(x) INLINE_SYSCALL (old_adjtimex, 1, x)
-#define ADJTIMEX32(x) INLINE_SYSCALL (old_adjtimex, 1, x)
-#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
-#define LINKAGE
-#else
-#define LINKAGE static
-#endif
-
-LINKAGE int ADJTIME (const struct TIMEVAL *itv, struct TIMEVAL *otv);
-
-#include <sysdeps/unix/sysv/linux/adjtime.c>
-
-#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
-int
-attribute_compat_text_section
-__adjtimex_tv32 (struct timex32 *tx) { return ADJTIMEX (tx); }
-strong_alias (__adjtimex_tv32, __adjtimex_tv32_1);
-strong_alias (__adjtimex_tv32, __adjtimex_tv32_2);
-compat_symbol (libc, __adjtimex_tv32_1, __adjtimex, GLIBC_2_0);
-compat_symbol (libc, __adjtimex_tv32_2, adjtimex, GLIBC_2_0);
-compat_symbol (libc, __adjtime_tv32, adjtime, GLIBC_2_0);
-#endif
-#endif /* !__ASSUME_TIMEVAL64 || SHLIB_COMPAT */
-
-#undef TIMEVAL
-#define TIMEVAL timeval
-#undef TIMEX
-#define TIMEX timex
-#undef ADJTIMEX
-#define ADJTIMEX(x) INLINE_SYSCALL (adjtimex, 1, x)
-
-#undef LINKAGE
-#undef ADJTIME
-#if !defined __ASSUME_TIMEVAL64
-#define LINKAGE static
-#define ADJTIME __adjtime_tv64
-#endif
-
-#include <sysdeps/unix/sysv/linux/adjtime.c>
-#include <stdbool.h>
-
-#if !defined __ASSUME_TIMEVAL64
-static bool missing_adjtimex;
-
-int
-__adjtime (itv, otv)
- const struct timeval *itv;
- struct timeval *otv;
-{
- struct timeval32 itv32, otv32;
- int ret;
-
- switch (missing_adjtimex)
- {
- case false:
- ret = __adjtime_tv64 (itv, otv);
- if (ret && errno == ENOSYS)
- missing_adjtimex = 1;
- else
- break;
-
- /* FALLTHRU */
-
- default:
- itv32.tv_sec = itv->tv_sec;
- itv32.tv_usec = itv->tv_usec;
- ret = __adjtime_tv32 (&itv32, &otv32);
- if (ret == 0)
- {
- otv->tv_sec = otv32.tv_sec;
- otv->tv_usec = otv32.tv_usec;
- }
- break;
- }
-
- return ret;
-}
-#endif
-
-versioned_symbol (libc, __adjtime, adjtime, GLIBC_2_1);
-
-int
-__adjtimex_tv64 (struct timex *tx)
-{
-#if defined __ASSUME_TIMEVAL64
- return ADJTIMEX (tx);
-#else
- struct timex32 tx32;
- int ret;
-
- switch (missing_adjtimex)
- {
- case false:
- ret = ADJTIMEX (tx);
- if (ret && errno == ENOSYS)
- missing_adjtimex = 1;
- else
- break;
-
- /* FALLTHRU */
-
- default:
- tx32.modes = tx->modes;
- tx32.offset = tx->offset;
- tx32.freq = tx->freq;
- tx32.maxerror = tx->maxerror;
- tx32.esterror = tx->esterror;
- tx32.status = tx->status;
- tx32.constant = tx->constant;
- tx32.precision = tx->precision;
- tx32.tolerance = tx->tolerance;
- tx32.time.tv_sec = tx->time.tv_sec;
- tx32.time.tv_sec = tx->time.tv_usec;
- tx32.tick = tx->tick;
- tx32.ppsfreq = tx->ppsfreq;
- tx32.jitter = tx->jitter;
- tx32.shift = tx->shift;
- tx32.stabil = tx->stabil;
- tx32.jitcnt = tx->jitcnt;
- tx32.calcnt = tx->calcnt;
- tx32.errcnt = tx->errcnt;
- tx32.stbcnt = tx->stbcnt;
-
- ret = ADJTIMEX32 (&tx32);
- if (ret == 0)
- {
- tx->modes = tx32.modes;
- tx->offset = tx32.offset;
- tx->freq = tx32.freq;
- tx->maxerror = tx32.maxerror;
- tx->esterror = tx32.esterror;
- tx->status = tx32.status;
- tx->constant = tx32.constant;
- tx->precision = tx32.precision;
- tx->tolerance = tx32.tolerance;
- tx->time.tv_sec = tx32.time.tv_sec;
- tx->time.tv_usec = tx32.time.tv_sec;
- tx->tick = tx32.tick;
- tx->ppsfreq = tx32.ppsfreq;
- tx->jitter = tx32.jitter;
- tx->shift = tx32.shift;
- tx->stabil = tx32.stabil;
- tx->jitcnt = tx32.jitcnt;
- tx->calcnt = tx32.calcnt;
- tx->errcnt = tx32.errcnt;
- tx->stbcnt = tx32.stbcnt;
- }
- break;
- }
-
- return ret;
-#endif
-}
-
-strong_alias (__adjtimex_tv64, __adjtimex_internal);
-strong_alias (__adjtimex_tv64, __adjtimex_tv64p);
-weak_alias (__adjtimex_tv64, ntp_adjtime);
-versioned_symbol (libc, __adjtimex_tv64, __adjtimex, GLIBC_2_1);
-versioned_symbol (libc, __adjtimex_tv64p, adjtimex, GLIBC_2_1);
diff --git a/sysdeps/unix/sysv/linux/alpha/alpha/ptrace.h b/sysdeps/unix/sysv/linux/alpha/alpha/ptrace.h
deleted file mode 100644
index 57b96d64db..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/alpha/ptrace.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef __alpha_ptrace_h__
-#define __alpha_ptrace_h__
-
-/*
- * Mostly for OSF/1 compatibility.
- */
-
-#define REG_BASE 0
-#define NGP_REGS 32
-#define NFP_REGS 32
-
-#define GPR_BASE REG_BASE
-#define FPR_BASE (GPR_BASE+NGP_REGS)
-#define PC (FPR_BASE+NFP_REGS)
-#define SPR_PS (PC+1)
-#define NPTRC_REGS (SPR_PS+1)
-
-#endif /* __alpha_ptrace_h__ */
diff --git a/sysdeps/unix/sysv/linux/alpha/alpha/regdef.h b/sysdeps/unix/sysv/linux/alpha/alpha/regdef.h
deleted file mode 100644
index 142df9c4f8..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/alpha/regdef.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef __alpha_regdef_h__
-#define __alpha_regdef_h__
-
-#define v0 $0 /* function return value */
-
-#define t0 $1 /* temporary registers (caller-saved) */
-#define t1 $2
-#define t2 $3
-#define t3 $4
-#define t4 $5
-#define t5 $6
-#define t6 $7
-#define t7 $8
-
-#define s0 $9 /* saved-registers (callee-saved registers) */
-#define s1 $10
-#define s2 $11
-#define s3 $12
-#define s4 $13
-#define s5 $14
-#define s6 $15
-#define fp s6 /* frame-pointer (s6 in frame-less procedures) */
-
-#define a0 $16 /* argument registers (caller-saved) */
-#define a1 $17
-#define a2 $18
-#define a3 $19
-#define a4 $20
-#define a5 $21
-
-#define t8 $22 /* more temps (caller-saved) */
-#define t9 $23
-#define t10 $24
-#define t11 $25
-#define ra $26 /* return address register */
-#define t12 $27
-
-#define pv t12 /* procedure-variable register */
-#define AT $at /* assembler temporary */
-#define gp $29 /* global pointer */
-#define sp $30 /* stack pointer */
-#define zero $31 /* reads as zero, writes are noops */
-
-#endif /* __alpha_regdef_h__ */
diff --git a/sysdeps/unix/sysv/linux/alpha/alphaev6/fpu/Implies b/sysdeps/unix/sysv/linux/alpha/alphaev6/fpu/Implies
deleted file mode 100644
index 0d7000dc2d..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/alphaev6/fpu/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-# Override ldbl-opt with alpha specific routines.
-alpha/alphaev6/fpu
diff --git a/sysdeps/unix/sysv/linux/alpha/alphaev67/fpu/Implies b/sysdeps/unix/sysv/linux/alpha/alphaev67/fpu/Implies
deleted file mode 100644
index 617c388d2d..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/alphaev67/fpu/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-# Override ldbl-opt with alpha specific routines.
-alpha/alphaev67/fpu
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/a.out.h b/sysdeps/unix/sysv/linux/alpha/bits/a.out.h
deleted file mode 100644
index 82a3dd4c0d..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/a.out.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef __A_OUT_GNU_H__
-# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
-#endif
-#ifndef __A_OUT_GNU_H__
-# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
-#endif
-#ifndef __A_OUT_GNU_H__
-# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/dirent.h b/sysdeps/unix/sysv/linux/alpha/bits/dirent.h
deleted file mode 100644
index 6ed74783ad..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/dirent.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright (C) 1996, 1997 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _BITS_DIRENT_H
-#define _BITS_DIRENT_H 1
-
-struct dirent
- {
-#ifdef __USE_FILE_OFFSET64
- __ino64_t d_ino;
-#else
- __ino_t d_ino;
- int __pad;
-#endif
- __off_t d_off;
- unsigned short int d_reclen;
- unsigned char d_type;
- char d_name[256]; /* We must not include limits.h! */
- };
-
-#ifdef __USE_LARGEFILE64
-/* Note dirent64 is the same as dirent. */
-struct dirent64
- {
- __ino64_t d_ino;
- __off64_t d_off;
- unsigned short int d_reclen;
- unsigned char d_type;
- char d_name[256]; /* We must not include limits.h! */
- };
-#endif
-
-#define d_fileno d_ino /* Backwards compatibility. */
-
-#undef _DIRENT_HAVE_D_NAMLEN
-#define _DIRENT_HAVE_D_RECLEN
-#define _DIRENT_HAVE_D_OFF
-#define _DIRENT_HAVE_D_TYPE
-
-#endif /* bits/dirent.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/elfclass.h b/sysdeps/unix/sysv/linux/alpha/bits/elfclass.h
deleted file mode 100644
index e5aa4a0fbd..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/elfclass.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* This file specifies the native word size of the machine, which indicates
- the ELF file class used for executables and shared objects on this
- machine. */
-
-#ifndef _LINK_H
-# error "Never use <bits/elfclass.h> directly; include <link.h> instead."
-#endif
-
-#include <bits/wordsize.h>
-
-#define __ELF_NATIVE_CLASS __WORDSIZE
-
-/* Linux/Alpha is exceptional as it has .hash section with 64 bit entries. */
-typedef uint64_t Elf_Symndx;
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/errno.h b/sysdeps/unix/sysv/linux/alpha/bits/errno.h
deleted file mode 100644
index 8b2f152a1c..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/errno.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Error constants. Linux/Alpha specific version.
- Copyright (C) 1996,1997,1998,1999,2002,2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifdef _ERRNO_H
-
-# undef EDOM
-# undef EILSEQ
-# undef ERANGE
-# include <linux/errno.h>
-
-/* Linux has no ENOTSUP error code. */
-# define ENOTSUP EOPNOTSUPP
-
-# ifndef ECANCELED
-# define ECANCELED 131
-# endif
-
-/* Support for error codes to support robust mutexes was added later, too. */
-# ifndef EOWNERDEAD
-# define EOWNERDEAD 136
-# define ENOTRECOVERABLE 137
-# endif
-
-# ifndef __ASSEMBLER__
-/* Function to get address of global `errno' variable. */
-extern int *__errno_location (void) __THROW __attribute__ ((__const__));
-
-# if !defined _LIBC || defined _LIBC_REENTRANT
-/* When using threads, errno is a per-thread value. */
-# define errno (*__errno_location ())
-# endif
-# endif /* !__ASSEMBLER__ */
-#endif /* _ERRNO_H */
-
-#if !defined _ERRNO_H && defined __need_Emath
-/* This is ugly but the kernel header is not clean enough. We must
- define only the values EDOM, EILSEQ and ERANGE in case __need_Emath is
- defined. */
-# define EDOM 33 /* Math argument out of domain of function. */
-# define EILSEQ 116 /* Illegal byte sequence. */
-# define ERANGE 34 /* Math result not representable. */
-#endif /* !_ERRNO_H && __need_Emath */
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h b/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h
deleted file mode 100644
index 710bace21f..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h
+++ /dev/null
@@ -1,232 +0,0 @@
-/* O_*, F_*, FD_* bit values for Linux.
- Copyright (C) 1995-2000,2004,2005,2006,2007 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _FCNTL_H
-# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
-#endif
-
-#include <sys/types.h>
-#ifdef __USE_GNU
-# include <bits/uio.h>
-#endif
-
-
-/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
- located on an ext2 file system */
-#define O_ACCMODE 0003
-#define O_RDONLY 00
-#define O_WRONLY 01
-#define O_RDWR 02
-#define O_CREAT 01000 /* not fcntl */
-#define O_TRUNC 02000 /* not fcntl */
-#define O_EXCL 04000 /* not fcntl */
-#define O_NOCTTY 010000 /* not fcntl */
-
-#define O_NONBLOCK 00004
-#define O_APPEND 00010
-#define O_NDELAY O_NONBLOCK
-#define O_SYNC 040000
-#define O_FSYNC O_SYNC
-#define O_ASYNC 020000 /* fcntl, for BSD compatibility */
-
-#ifdef __USE_GNU
-# define O_DIRECTORY 0100000 /* Must be a directory. */
-# define O_NOFOLLOW 0200000 /* Do not follow links. */
-# define O_DIRECT 02000000 /* Direct disk access. */
-# define O_NOATIME 04000000 /* Do not set atime. */
-# define O_CLOEXEC 010000000 /* Set close_on_exec. */
-#endif
-
-#ifdef __USE_LARGEFILE64
-/* Not necessary, files are always with 64bit off_t. */
-# define O_LARGEFILE 0
-#endif
-
-/* For now Linux has synchronisity options for data and read operations.
- We define the symbols here but let them do the same as O_SYNC since
- this is a superset. */
-#if defined __USE_POSIX199309 || defined __USE_UNIX98
-# define O_DSYNC O_SYNC /* Synchronize data. */
-# define O_RSYNC O_SYNC /* Synchronize read operations. */
-#endif
-
-/* Values for the second argument to `fcntl'. */
-#define F_DUPFD 0 /* Duplicate file descriptor. */
-#define F_GETFD 1 /* Get file descriptor flags. */
-#define F_SETFD 2 /* Set file descriptor flags. */
-#define F_GETFL 3 /* Get file status flags. */
-#define F_SETFL 4 /* Set file status flags. */
-#define F_GETLK 7 /* Get record locking info. */
-#define F_SETLK 8 /* Set record locking info (non-blocking). */
-#define F_SETLKW 9 /* Set record locking info (blocking). */
-#define F_GETLK64 F_GETLK /* Get record locking info. */
-#define F_SETLK64 F_SETLK /* Set record locking info (non-blocking). */
-#define F_SETLKW64 F_SETLKW /* Set record locking info (blocking). */
-
-#if defined __USE_BSD || defined __USE_UNIX98
-# define F_SETOWN 5 /* Get owner of socket (receiver of SIGIO). */
-# define F_GETOWN 6 /* Set owner of socket (receiver of SIGIO). */
-#endif
-
-#ifdef __USE_GNU
-# define F_SETSIG 10 /* Set number of signal to be sent. */
-# define F_GETSIG 11 /* Get number of signal to be sent. */
-#endif
-
-#ifdef __USE_GNU
-# define F_SETLEASE 1024 /* Set a lease. */
-# define F_GETLEASE 1025 /* Enquire what lease is active. */
-# define F_NOTIFY 1026 /* Request notfications on a directory. */
-# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with
- close-on-exit set. */
-#endif
-
-/* for F_[GET|SET]FD */
-#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
-
-/* For posix fcntl() and `l_type' field of a `struct flock' for lockf() */
-#define F_RDLCK 1 /* Read lock. */
-#define F_WRLCK 2 /* Write lock. */
-#define F_UNLCK 8 /* Remove lock. */
-
-/* for old implementation of bsd flock () */
-#define F_EXLCK 16 /* or 3 */
-#define F_SHLCK 32 /* or 4 */
-
-/* Operations for bsd flock(), also used by the kernel implementation */
-#ifdef __USE_BSD
-# define LOCK_SH 1 /* shared lock */
-# define LOCK_EX 2 /* exclusive lock */
-# define LOCK_NB 4 /* or'd with one of the above to prevent
- blocking */
-# define LOCK_UN 8 /* remove lock */
-#endif
-
-#ifdef __USE_GNU
-# define LOCK_MAND 32 /* This is a mandatory flock: */
-# define LOCK_READ 64 /* ... which allows concurrent read operations. */
-# define LOCK_WRITE 128 /* ... which allows concurrent write operations. */
-# define LOCK_RW 192 /* ... Which allows concurrent read & write operations. */
-#endif
-
-#ifdef __USE_GNU
-/* Types of directory notifications that may be requested with F_NOTIFY. */
-# define DN_ACCESS 0x00000001 /* File accessed. */
-# define DN_MODIFY 0x00000002 /* File modified. */
-# define DN_CREATE 0x00000004 /* File created. */
-# define DN_DELETE 0x00000008 /* File removed. */
-# define DN_RENAME 0x00000010 /* File renamed. */
-# define DN_ATTRIB 0x00000020 /* File changed attibutes. */
-# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */
-#endif
-
-/* We don't need to support __USE_FILE_OFFSET64. */
-struct flock
- {
- short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
- short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
- __off_t l_start; /* Offset where the lock begins. */
- __off_t l_len; /* Size of the locked area; zero means until EOF. */
- __pid_t l_pid; /* Process holding the lock. */
- };
-
-#ifdef __USE_LARGEFILE64
-struct flock64
- {
- short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
- short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
- __off64_t l_start; /* Offset where the lock begins. */
- __off64_t l_len; /* Size of the locked area; zero means until EOF. */
- __pid_t l_pid; /* Process holding the lock. */
- };
-#endif
-
-
-/* Define some more compatibility macros to be backward compatible with
- BSD systems which did not managed to hide these kernel macros. */
-#ifdef __USE_BSD
-# define FAPPEND O_APPEND
-# define FFSYNC O_FSYNC
-# define FASYNC O_ASYNC
-# define FNONBLOCK O_NONBLOCK
-# define FNDELAY O_NDELAY
-#endif /* Use BSD. */
-
-/* Advise to `posix_fadvise'. */
-#ifdef __USE_XOPEN2K
-# define POSIX_FADV_NORMAL 0 /* No further special treatment. */
-# define POSIX_FADV_RANDOM 1 /* Expect random page references. */
-# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
-# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
-# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
-# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
-#endif
-
-
-#ifdef __USE_GNU
-/* Flags for SYNC_FILE_RANGE. */
-# define SYNC_FILE_RANGE_WAIT_BEFORE 1 /* Wait upon writeout of all pages
- in the range before performing the
- write. */
-# define SYNC_FILE_RANGE_WRITE 2 /* Initiate writeout of all those
- dirty pages in the range which are
- not presently under writeback. */
-# define SYNC_FILE_RANGE_WAIT_AFTER 4 /* Wait upon writeout of all pages in
- the range after performing the
- write. */
-
-/* Flags for SPLICE and VMSPLICE. */
-# define SPLICE_F_MOVE 1 /* Move pages instead of copying. */
-# define SPLICE_F_NONBLOCK 2 /* Don't block on the pipe splicing
- (but we may still block on the fd
- we splice from/to). */
-# define SPLICE_F_MORE 4 /* Expect more data. */
-# define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */
-#endif
-
-__BEGIN_DECLS
-
-#ifdef __USE_GNU
-
-/* Provide kernel hint to read ahead. */
-extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
- __THROW;
-
-
-/* Selective file content synch'ing. */
-extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
- unsigned int __flags);
-
-
-/* Splice address range into a pipe. */
-extern ssize_t vmsplice (int __fdout, const struct iovec *__iov,
- size_t __count, unsigned int __flags);
-
-/* Splice two files together. */
-extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
- __off64_t *__offout, size_t __len,
- unsigned int __flags);
-
-/* In-kernel implementation of tee for pipe buffers. */
-extern ssize_t tee (int __fdin, int __fdout, size_t __len,
- unsigned int __flags);
-
-#endif
-
-__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/ioctls.h b/sysdeps/unix/sysv/linux/alpha/bits/ioctls.h
deleted file mode 100644
index c525046e5c..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/ioctls.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 1996, 1997 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_IOCTL_H
-# error "Never use <bits/ioctls.h> directly; include <sys/ioctl.h> instead."
-#endif
-
-/* Use the definitions from the kernel header files. */
-#include <asm/ioctls.h>
-
-/* Oh well, this is necessary since the kernel data structure is
- different from the user-level version. */
-#undef TCGETS
-#undef TCSETS
-#undef TCSETSW
-#undef TCSETSF
-#define TCGETS _IOR ('t', 19, char[44])
-#define TCSETS _IOW ('t', 20, char[44])
-#define TCSETSW _IOW ('t', 21, char[44])
-#define TCSETSF _IOW ('t', 22, char[44])
-
-#include <linux/sockios.h>
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/ipc.h b/sysdeps/unix/sysv/linux/alpha/bits/ipc.h
deleted file mode 100644
index 77f3c938d4..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/ipc.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_IPC_H
-# error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
-#endif
-
-#include <bits/types.h>
-
-/* Mode bits for `msgget', `semget', and `shmget'. */
-#define IPC_CREAT 01000 /* Create key if key does not exist. */
-#define IPC_EXCL 02000 /* Fail if key exists. */
-#define IPC_NOWAIT 04000 /* Return error on wait. */
-
-/* Control commands for `msgctl', `semctl', and `shmctl'. */
-#define IPC_RMID 0 /* Remove identifier. */
-#define IPC_SET 1 /* Set `ipc_perm' options. */
-#define IPC_STAT 2 /* Get `ipc_perm' options. */
-#ifdef __USE_GNU
-# define IPC_INFO 3 /* See ipcs. */
-#endif
-
-/* Special key values. */
-#define IPC_PRIVATE ((__key_t) 0) /* Private key. */
-
-
-/* Data structure used to pass permission information to IPC operations. */
-struct ipc_perm
- {
- __key_t __key; /* Key. */
- unsigned int uid; /* Owner's user ID. */
- unsigned int gid; /* Owner's group ID. */
- unsigned int cuid; /* Creator's user ID. */
- unsigned int cgid; /* Creator's group ID. */
- unsigned int mode; /* Read/write permission. */
- unsigned short int __seq; /* Sequence number. */
- unsigned short int __pad1;
- unsigned long int __unused1;
- unsigned long int __unused2;
- };
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/mman.h b/sysdeps/unix/sysv/linux/alpha/bits/mman.h
deleted file mode 100644
index 2f0e564916..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/mman.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Definitions for POSIX memory map interface. Linux/Alpha version.
- Copyright (C) 1997, 1998, 2000, 2003, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_MMAN_H
-# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
-#endif
-
-/* The following definitions basically come from the kernel headers.
- But the kernel header is not namespace clean. */
-
-
-/* Protections are chosen from these bits, OR'd together. The
- implementation does not necessarily support PROT_EXEC or PROT_WRITE
- without PROT_READ. The only guarantees are that no writing will be
- allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
-
-#define PROT_READ 0x1 /* Page can be read. */
-#define PROT_WRITE 0x2 /* Page can be written. */
-#define PROT_EXEC 0x4 /* Page can be executed. */
-#define PROT_NONE 0x0 /* Page can not be accessed. */
-#define PROT_GROWSDOWN 0x01000000 /* Extend change to start of
- growsdown vma (mprotect only). */
-#define PROT_GROWSUP 0x02000000 /* Extend change to start of
- growsup vma (mprotect only). */
-
-/* Sharing types (must choose one and only one of these). */
-#define MAP_SHARED 0x01 /* Share changes. */
-#define MAP_PRIVATE 0x02 /* Changes are private. */
-#ifdef __USE_MISC
-# define MAP_TYPE 0x0f /* Mask for type of mapping. */
-#endif
-
-/* Other flags. */
-#define MAP_FIXED 0x100 /* Interpret addr exactly. */
-#ifdef __USE_MISC
-# define MAP_FILE 0
-# define MAP_ANONYMOUS 0x10 /* Don't use a file. */
-# define MAP_ANON MAP_ANONYMOUS
-#endif
-
-/* Not used by Linux, but here to make sure we don't clash with
- OSF/1 defines. */
-#if 0 && defined __USE_BSD
-# define MAP_HASSEMAPHORE 0x0200
-# define MAP_INHERIT 0x0400
-# define MAP_UNALIGNED 0x0800
-#endif
-
-/* These are Linux-specific. */
-#ifdef __USE_MISC
-# define MAP_GROWSDOWN 0x01000 /* Stack-like segment. */
-# define MAP_DENYWRITE 0x02000 /* ETXTBSY */
-# define MAP_EXECUTABLE 0x04000 /* Mark it as an executable. */
-# define MAP_LOCKED 0x08000 /* Lock the mapping. */
-# define MAP_NORESERVE 0x10000 /* Don't check for reservations. */
-# define MAP_POPULATE 0x20000 /* Populate (prefault) pagetables. */
-# define MAP_NONBLOCK 0x40000 /* Do not block on IO. */
-#endif
-
-/* Flags to `msync'. */
-#define MS_ASYNC 1 /* Sync memory asynchronously. */
-#define MS_SYNC 2 /* Synchronous memory sync. */
-#define MS_INVALIDATE 4 /* Invalidate the caches. */
-
-/* Flags for `mlockall'. */
-#define MCL_CURRENT 8192 /* Lock all currently mapped pages. */
-#define MCL_FUTURE 16384 /* Lock all additions to address
- space. */
-
-/* Flags for `mremap'. */
-#ifdef __USE_GNU
-# define MREMAP_MAYMOVE 1
-# define MREMAP_FIXED 2
-#endif
-
-/* Advice to `madvise'. */
-#ifdef __USE_BSD
-# define MADV_NORMAL 0 /* No further special treatment. */
-# define MADV_RANDOM 1 /* Expect random page references. */
-# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
-# define MADV_WILLNEED 3 /* Will need these pages. */
-# define MADV_DONTNEED 6 /* Don't need these pages. */
-# define MADV_REMOVE 9 /* Remove these pages and resources. */
-# define MADV_DONTFORK 10 /* Do not inherit across fork. */
-# define MADV_DOFORK 11 /* Do inherit across fork. */
-#endif
-
-/* The POSIX people had to invent similar names for the same things. */
-#ifdef __USE_XOPEN2K
-# define POSIX_MADV_NORMAL 0 /* No further special treatment. */
-# define POSIX_MADV_RANDOM 1 /* Expect random page references. */
-# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */
-# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */
-# define POSIX_MADV_DONTNEED 6 /* Don't need these pages. */
-#endif
-
-/* Not used by Linux, but here to make sure we don't clash with
- OSF/1 defines. */
-#if 0 && defined __USE_BSD
-# define MADV_DONTNEED_COMPAT 4 /* Old version? */
-# define MADV_SPACEAVAIL 5 /* Ensure resources are available. */
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/msq.h b/sysdeps/unix/sysv/linux/alpha/bits/msq.h
deleted file mode 100644
index ab251eaf76..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/msq.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Copyright (C) 1995, 1996, 1997, 2000 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_MSG_H
-# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
-#endif
-
-#include <bits/types.h>
-
-/* Define options for message queue functions. */
-#define MSG_NOERROR 010000 /* no error if message is too big */
-#ifdef __USE_GNU
-# define MSG_EXCEPT 020000 /* recv any msg except of specified type */
-#endif
-
-/* Types used in the structure definition. */
-typedef unsigned long int msgqnum_t;
-typedef unsigned long int msglen_t;
-
-
-/* Structure of record for one message inside the kernel.
- The type `struct msg' is opaque. */
-struct msqid_ds
-{
- struct ipc_perm msg_perm; /* structure describing operation permission */
- __time_t msg_stime; /* time of last msgsnd command */
- __time_t msg_rtime; /* time of last msgrcv command */
- __time_t msg_ctime; /* time of last change */
- unsigned long int __msg_cbytes; /* current number of bytes on queue */
- msgqnum_t msg_qnum; /* number of messages currently on queue */
- msglen_t msg_qbytes; /* max number of bytes allowed on queue */
- __pid_t msg_lspid; /* pid of last msgsnd() */
- __pid_t msg_lrpid; /* pid of last msgrcv() */
- unsigned long int __unused1;
- unsigned long int __unused2;
-};
-
-#ifdef __USE_MISC
-
-# define msg_cbytes __msg_cbytes
-
-/* ipcs ctl commands */
-# define MSG_STAT 11
-# define MSG_INFO 12
-
-/* buffer for msgctl calls IPC_INFO, MSG_INFO */
-struct msginfo
- {
- int msgpool;
- int msgmap;
- int msgmax;
- int msgmnb;
- int msgmni;
- int msgssz;
- int msgtql;
- unsigned short int msgseg;
- };
-
-#endif /* __USE_MISC */
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/netdb.h b/sysdeps/unix/sysv/linux/alpha/bits/netdb.h
deleted file mode 100644
index e3664fd292..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/netdb.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _NETDB_H
-# error "Never include <bits/netdb.h> directly; use <netdb.h> instead."
-#endif
-
-
-/* Description of data base entry for a single network. NOTE: here a
- poor assumption is made. The network number is expected to fit
- into an unsigned long int variable. */
-struct netent
-{
- char *n_name; /* Official name of network. */
- char **n_aliases; /* Alias list. */
- int n_addrtype; /* Net address type. */
- /* XXX We should probably use uint32_t for the field and ensure
- compatiblity by adding appropriate padding. */
- unsigned long int n_net; /* Network number. */
-};
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/resource.h b/sysdeps/unix/sysv/linux/alpha/bits/resource.h
deleted file mode 100644
index 92d0199dcd..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/resource.h
+++ /dev/null
@@ -1,233 +0,0 @@
-/* Bit values & structures for resource limits. Alpha/Linux version.
- Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004, 2005
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_RESOURCE_H
-# error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
-#endif
-
-#include <bits/types.h>
-
-/* Transmute defines to enumerations. The macro re-definitions are
- necessary because some programs want to test for operating system
- features with #ifdef RUSAGE_SELF. In ISO C the reflexive
- definition is a no-op. */
-
-/* Kinds of resource limit. */
-enum __rlimit_resource
-{
- /* Per-process CPU limit, in seconds. */
- RLIMIT_CPU = 0,
-#define RLIMIT_CPU RLIMIT_CPU
-
- /* Largest file that can be created, in bytes. */
- RLIMIT_FSIZE = 1,
-#define RLIMIT_FSIZE RLIMIT_FSIZE
-
- /* Maximum size of data segment, in bytes. */
- RLIMIT_DATA = 2,
-#define RLIMIT_DATA RLIMIT_DATA
-
- /* Maximum size of stack segment, in bytes. */
- RLIMIT_STACK = 3,
-#define RLIMIT_STACK RLIMIT_STACK
-
- /* Largest core file that can be created, in bytes. */
- RLIMIT_CORE = 4,
-#define RLIMIT_CORE RLIMIT_CORE
-
- /* Largest resident set size, in bytes.
- This affects swapping; processes that are exceeding their
- resident set size will be more likely to have physical memory
- taken from them. */
- __RLIMIT_RSS = 5,
-#define RLIMIT_RSS __RLIMIT_RSS
-
- /* Number of open files. */
- RLIMIT_NOFILE = 6,
- __RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */
-#define RLIMIT_NOFILE RLIMIT_NOFILE
-#define RLIMIT_OFILE __RLIMIT_OFILE
-
- /* Address space limit (?) */
- RLIMIT_AS = 7,
-#define RLIMIT_AS RLIMIT_AS
-
- /* Number of processes. */
- __RLIMIT_NPROC = 8,
-#define RLIMIT_NPROC __RLIMIT_NPROC
-
- /* Locked-in-memory address space. */
- __RLIMIT_MEMLOCK = 9,
-#define RLIMIT_MEMLOCK __RLIMIT_MEMLOCK
-
- /* Maximum number of file locks. */
- __RLIMIT_LOCKS = 10,
-#define RLIMIT_LOCKS __RLIMIT_LOCKS
-
- /* Maximum number of pending signals. */
- __RLIMIT_SIGPENDING = 11,
-#define RLIMIT_SIGPENDING __RLIMIT_SIGPENDING
-
- /* Maximum bytes in POSIX message queues. */
- __RLIMIT_MSGQUEUE = 12,
-#define RLIMIT_MSGQUEUE __RLIMIT_MSGQUEUE
-
- /* Maximum nice priority allowed to raise to.
- Nice levels 19 .. -20 correspond to 0 .. 39
- values of this resource limit. */
- __RLIMIT_NICE = 13,
-#define RLIMIT_NICE __RLIMIT_NICE
-
- /* Maximum realtime priority allowed for non-priviledged
- processes. */
- __RLIMIT_RTPRIO = 14,
-#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
-
- __RLIMIT_NLIMITS = 15,
- __RLIM_NLIMITS = __RLIMIT_NLIMITS
-#define RLIMIT_NLIMITS __RLIMIT_NLIMITS
-#define RLIM_NLIMITS __RLIM_NLIMITS
-};
-
-/* Value to indicate that there is no limit. */
-#ifndef __USE_FILE_OFFSET64
-# define RLIM_INFINITY ((long int)(~0UL >> 1))
-#else
-# define RLIM_INFINITY 0x7fffffffffffffffLL
-#endif
-
-#ifdef __USE_LARGEFILE64
-# define RLIM64_INFINITY 0x7fffffffffffffffLL
-#endif
-
-/* We can represent all limits. */
-#define RLIM_SAVED_MAX RLIM_INFINITY
-#define RLIM_SAVED_CUR RLIM_INFINITY
-
-
-/* Type for resource quantity measurement. */
-#ifndef __USE_FILE_OFFSET64
-typedef __rlim_t rlim_t;
-#else
-typedef __rlim64_t rlim_t;
-#endif
-#ifdef __USE_LARGEFILE64
-typedef __rlim64_t rlim64_t;
-#endif
-
-struct rlimit
- {
- /* The current (soft) limit. */
- rlim_t rlim_cur;
- /* The hard limit. */
- rlim_t rlim_max;
- };
-
-#ifdef __USE_LARGEFILE64
-struct rlimit64
- {
- /* The current (soft) limit. */
- rlim64_t rlim_cur;
- /* The hard limit. */
- rlim64_t rlim_max;
- };
-#endif
-
-/* Whose usage statistics do you want? */
-enum __rusage_who
-{
- /* The calling process. */
- RUSAGE_SELF = 0,
-#define RUSAGE_SELF RUSAGE_SELF
-
- /* All of its terminated child processes. */
- RUSAGE_CHILDREN = -1,
-#define RUSAGE_CHILDREN RUSAGE_CHILDREN
-
-#ifdef __USE_GNU
- /* The calling thread. */
- RUSAGE_THREAD = 1
-# define RUSAGE_THREAD RUSAGE_THREAD
- /* Name for the same functionality on Solaris. */
-# define RUSAGE_LWP RUSAGE_THREAD
-#endif
-};
-
-#define __need_timeval
-#include <bits/time.h> /* For `struct timeval'. */
-
-/* Structure which says how much of each resource has been used. */
-struct rusage
- {
- /* Total amount of user time used. */
- struct timeval ru_utime;
- /* Total amount of system time used. */
- struct timeval ru_stime;
- /* Maximum resident set size (in kilobytes). */
- long int ru_maxrss;
- /* Amount of sharing of text segment memory
- with other processes (kilobyte-seconds). */
- long int ru_ixrss;
- /* Amount of data segment memory used (kilobyte-seconds). */
- long int ru_idrss;
- /* Amount of stack memory used (kilobyte-seconds). */
- long int ru_isrss;
- /* Number of soft page faults (i.e. those serviced by reclaiming
- a page from the list of pages awaiting reallocation. */
- long int ru_minflt;
- /* Number of hard page faults (i.e. those that required I/O). */
- long int ru_majflt;
- /* Number of times a process was swapped out of physical memory. */
- long int ru_nswap;
- /* Number of input operations via the file system. Note: This
- and `ru_oublock' do not include operations with the cache. */
- long int ru_inblock;
- /* Number of output operations via the file system. */
- long int ru_oublock;
- /* Number of IPC messages sent. */
- long int ru_msgsnd;
- /* Number of IPC messages received. */
- long int ru_msgrcv;
- /* Number of signals delivered. */
- long int ru_nsignals;
- /* Number of voluntary context switches, i.e. because the process
- gave up the process before it had to (usually to wait for some
- resource to be available). */
- long int ru_nvcsw;
- /* Number of involuntary context switches, i.e. a higher priority process
- became runnable or the current process used up its time slice. */
- long int ru_nivcsw;
- };
-
-/* Priority limits. */
-#define PRIO_MIN -20 /* Minimum priority a process can have. */
-#define PRIO_MAX 20 /* Maximum priority a process can have. */
-
-/* The type of the WHICH argument to `getpriority' and `setpriority',
- indicating what flavor of entity the WHO argument specifies. */
-enum __priority_which
-{
- PRIO_PROCESS = 0, /* WHO is a process ID. */
-#define PRIO_PROCESS PRIO_PROCESS
- PRIO_PGRP = 1, /* WHO is a process group ID. */
-#define PRIO_PGRP PRIO_PGRP
- PRIO_USER = 2 /* WHO is a user ID. */
-#define PRIO_USER PRIO_USER
-};
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/sem.h b/sysdeps/unix/sysv/linux/alpha/bits/sem.h
deleted file mode 100644
index f63360b2bc..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/sem.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* Copyright (C) 1995, 1996, 1997, 1998, 2000 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_SEM_H
-# error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
-#endif
-
-#include <sys/types.h>
-
-/* Flags for `semop'. */
-#define SEM_UNDO 0x1000 /* undo the operation on exit */
-
-/* Commands for `semctl'. */
-#define GETPID 11 /* get sempid */
-#define GETVAL 12 /* get semval */
-#define GETALL 13 /* get all semval's */
-#define GETNCNT 14 /* get semncnt */
-#define GETZCNT 15 /* get semzcnt */
-#define SETVAL 16 /* set semval */
-#define SETALL 17 /* set all semval's */
-
-
-/* Data structure describing a set of semaphores. */
-struct semid_ds
-{
- struct ipc_perm sem_perm; /* operation permission struct */
- __time_t sem_otime; /* last semop() time */
- __time_t sem_ctime; /* last time changed by semctl() */
- unsigned long int sem_nsems; /* number of semaphores in set */
- unsigned long int __unused1;
- unsigned long int __unused2;
-};
-
-/* The user should define a union like the following to use it for arguments
- for `semctl'.
-
- union semun
- {
- int val; <= value for SETVAL
- struct semid_ds *buf; <= buffer for IPC_STAT & IPC_SET
- unsigned short int *array; <= array for GETALL & SETALL
- struct seminfo *__buf; <= buffer for IPC_INFO
- };
-
- Previous versions of this file used to define this union but this is
- incorrect. One can test the macro _SEM_SEMUN_UNDEFINED to see whether
- one must define the union or not. */
-#define _SEM_SEMUN_UNDEFINED 1
-
-#ifdef __USE_MISC
-
-/* ipcs ctl cmds */
-# define SEM_STAT 18
-# define SEM_INFO 19
-
-struct seminfo
-{
- int semmap;
- int semmni;
- int semmns;
- int semmnu;
- int semmsl;
- int semopm;
- int semume;
- int semusz;
- int semvmx;
- int semaem;
-};
-
-#endif /* __USE_MISC */
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/shm.h b/sysdeps/unix/sysv/linux/alpha/bits/shm.h
deleted file mode 100644
index cb214e6412..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/shm.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* Copyright (C) 1995, 1996, 1997, 2000, 2002, 2004
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_SHM_H
-# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
-#endif
-
-#include <bits/types.h>
-
-/* Permission flag for shmget. */
-#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */
-#define SHM_W 0200 /* or S_IWUGO from <linux/stat.h> */
-
-/* Flags for `shmat'. */
-#define SHM_RDONLY 010000 /* attach read-only else read-write */
-#define SHM_RND 020000 /* round attach address to SHMLBA */
-#define SHM_REMAP 040000 /* take-over region on attach */
-
-/* Commands for `shmctl'. */
-#define SHM_LOCK 11 /* lock segment (root only) */
-#define SHM_UNLOCK 12 /* unlock segment (root only) */
-
-__BEGIN_DECLS
-
-/* Segment low boundary address multiple. */
-#define SHMLBA (__getpagesize ())
-extern int __getpagesize (void) __THROW __attribute__ ((__const__));
-
-
-/* Type to count number of attaches. */
-typedef unsigned long int shmatt_t;
-
-/* Data structure describing a shared memory segment. */
-struct shmid_ds
- {
- struct ipc_perm shm_perm; /* operation permission struct */
- size_t shm_segsz; /* size of segment in bytes */
- __time_t shm_atime; /* time of last shmat() */
- __time_t shm_dtime; /* time of last shmdt() */
- __time_t shm_ctime; /* time of last change by shmctl() */
- __pid_t shm_cpid; /* pid of creator */
- __pid_t shm_lpid; /* pid of last shmop */
- shmatt_t shm_nattch; /* number of current attaches */
- unsigned long int __unused1;
- unsigned long int __unused2;
- };
-
-#ifdef __USE_MISC
-
-/* ipcs ctl commands */
-# define SHM_STAT 13
-# define SHM_INFO 14
-
-/* shm_mode upper byte flags */
-# define SHM_DEST 01000 /* segment will be destroyed on last detach */
-# define SHM_LOCKED 02000 /* segment will not be swapped */
-# define SHM_HUGETLB 04000 /* segment is mapped via hugetlb */
-# define SHM_NORESERVE 010000 /* don't check for reservations */
-
-struct shminfo
- {
- unsigned long int shmmax;
- unsigned long int shmmin;
- unsigned long int shmmni;
- unsigned long int shmseg;
- unsigned long int shmall;
- unsigned long int __unused1;
- unsigned long int __unused2;
- unsigned long int __unused3;
- unsigned long int __unused4;
- };
-
-struct shm_info
- {
- int used_ids;
- unsigned long int shm_tot; /* total allocated shm */
- unsigned long int shm_rss; /* total resident shm */
- unsigned long int shm_swp; /* total swapped shm */
- unsigned long int swap_attempts;
- unsigned long int swap_successes;
- };
-
-#endif /* __USE_MISC */
-
-__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/sigaction.h b/sysdeps/unix/sysv/linux/alpha/bits/sigaction.h
deleted file mode 100644
index 80feb2fa2d..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/sigaction.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* The proper definitions for Linux/Alpha sigaction.
- Copyright (C) 1996, 1997, 1999, 2000 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SIGNAL_H
-# error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
-#endif
-
-/* Structure describing the action to be taken when a signal arrives. */
-struct sigaction
- {
- /* Signal handler. */
-#ifdef __USE_POSIX199309
- union
- {
- /* Used if SA_SIGINFO is not set. */
- __sighandler_t sa_handler;
- /* Used if SA_SIGINFO is set. */
- void (*sa_sigaction) (int, siginfo_t *, void *);
- }
- __sigaction_handler;
-# define sa_handler __sigaction_handler.sa_handler
-# define sa_sigaction __sigaction_handler.sa_sigaction
-#else
- __sighandler_t sa_handler;
-#endif
-
- /* Additional set of signals to be blocked. */
- __sigset_t sa_mask;
-
- /* Special flags. */
- unsigned int sa_flags;
- };
-
-/* Bits in `sa_flags'. */
-#define SA_NOCLDSTOP 0x00000004 /* Don't send SIGCHLD when children stop. */
-#define SA_NOCLDWAIT 0x00000020 /* Don't create zombie on child death. */
-#define SA_SIGINFO 0x00000040 /* Invoke signal-catching function with
- three arguments instead of one. */
-#if defined __USE_UNIX98 || defined __USE_MISC
-# define SA_ONSTACK 0x00000001 /* Use signal stack by using `sa_restorer'. */
-# define SA_RESTART 0x00000002 /* Restart syscall on signal return. */
-# define SA_NODEFER 0x00000008 /* Don't automatically block the signal
- when its handler is being executed. */
-# define SA_RESETHAND 0x00000010 /* Reset to SIG_DFL on entry to handler. */
-#endif
-#ifdef __USE_MISC
-# define SA_INTERRUPT 0x20000000 /* Historical no-op. */
-
-/* Some aliases for the SA_ constants. */
-# define SA_NOMASK SA_NODEFER
-# define SA_ONESHOT SA_RESETHAND
-# define SA_STACK SA_ONSTACK
-#endif
-
-/* Values for the HOW argument to `sigprocmask'. */
-#define SIG_BLOCK 1 /* Block signals. */
-#define SIG_UNBLOCK 2 /* Unblock signals. */
-#define SIG_SETMASK 3 /* Set the set of blocked signals. */
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h b/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h
deleted file mode 100644
index a2aacc04b1..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h
+++ /dev/null
@@ -1,303 +0,0 @@
-/* siginfo_t, sigevent and constants. Linux/Alpha version.
- Copyright (C) 1997-2002, 2003 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#if !defined _SIGNAL_H && !defined __need_siginfo_t \
- && !defined __need_sigevent_t
-# error "Never include this file directly. Use <signal.h> instead"
-#endif
-
-#if (!defined __have_sigval_t \
- && (defined _SIGNAL_H || defined __need_siginfo_t \
- || defined __need_sigevent_t))
-# define __have_sigval_t 1
-
-/* Type for data associated with a signal. */
-typedef union sigval
- {
- int sival_int;
- void *sival_ptr;
- } sigval_t;
-#endif
-
-#if (!defined __have_siginfo_t \
- && (defined _SIGNAL_H || defined __need_siginfo_t))
-# define __have_siginfo_t 1
-
-# define __SI_MAX_SIZE 128
-# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
-
-typedef struct siginfo
- {
- int si_signo; /* Signal number. */
- int si_errno; /* If non-zero, an errno value associated with
- this signal, as defined in <errno.h>. */
- int si_code; /* Signal code. */
-
- union
- {
- int _pad[__SI_PAD_SIZE];
-
- /* kill(). */
- struct
- {
- __pid_t si_pid; /* Sending process ID. */
- __uid_t si_uid; /* Real user ID of sending process. */
- } _kill;
-
- /* POSIX.1b timers. */
- struct
- {
- int si_tid; /* Timer ID. */
- int si_overrun; /* Overrun count. */
- sigval_t si_sigval; /* Signal value. */
- } _timer;
-
- /* POSIX.1b signals. */
- struct
- {
- __pid_t si_pid; /* Sending process ID. */
- __uid_t si_uid; /* Real user ID of sending process. */
- sigval_t si_sigval; /* Signal value. */
- } _rt;
-
- /* SIGCHLD. */
- struct
- {
- __pid_t si_pid; /* Which child. */
- __uid_t si_uid; /* Real user ID of sending process. */
- int si_status; /* Exit value or signal. */
- __clock_t si_utime;
- __clock_t si_stime;
- } _sigchld;
-
- /* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */
- struct
- {
- void *si_addr; /* Faulting insn/memory ref. */
- } _sigfault;
-
- /* SIGPOLL. */
- struct
- {
- int si_band; /* Band event for SIGPOLL. */
- int si_fd;
- } _sigpoll;
- } _sifields;
- } siginfo_t;
-
-
-/* X/Open requires some more fields with fixed names. */
-# define si_pid _sifields._kill.si_pid
-# define si_uid _sifields._kill.si_uid
-# define si_timerid _sifields._timer.si_tid
-# define si_overrun _sifields._timer.si_overrun
-# define si_status _sifields._sigchld.si_status
-# define si_utime _sifields._sigchld.si_utime
-# define si_stime _sifields._sigchld.si_stime
-# define si_value _sifields._rt.si_sigval
-# define si_int _sifields._rt.si_sigval.sival_int
-# define si_ptr _sifields._rt.si_sigval.sival_ptr
-# define si_addr _sifields._sigfault.si_addr
-# define si_band _sifields._sigpoll.si_band
-# define si_fd _sifields._sigpoll.si_fd
-
-
-/* Values for `si_code'. Positive values are reserved for kernel-generated
- signals. */
-enum
-{
- SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
-# define SI_ASYNCNL SI_ASYNCNL
- SI_TKILL = -6, /* Sent by tkill. */
-# define SI_TKILL SI_TKILL
- SI_SIGIO, /* Sent by queued SIGIO. */
-# define SI_SIGIO SI_SIGIO
- SI_ASYNCIO, /* Sent by AIO completion. */
-# define SI_ASYNCIO SI_ASYNCIO
- SI_MESGQ, /* Sent by real time mesq state change. */
-# define SI_MESGQ SI_MESGQ
- SI_TIMER, /* Sent by timer expiration. */
-# define SI_TIMER SI_TIMER
- SI_QUEUE, /* Sent by sigqueue. */
-# define SI_QUEUE SI_QUEUE
- SI_USER, /* Sent by kill, sigsend, raise. */
-# define SI_USER SI_USER
- SI_KERNEL = 0x80 /* Send by kernel. */
-#define SI_KERNEL SI_KERNEL
-};
-
-
-/* `si_code' values for SIGILL signal. */
-enum
-{
- ILL_ILLOPC = 1, /* Illegal opcode. */
-# define ILL_ILLOPC ILL_ILLOPC
- ILL_ILLOPN, /* Illegal operand. */
-# define ILL_ILLOPN ILL_ILLOPN
- ILL_ILLADR, /* Illegal addressing mode. */
-# define ILL_ILLADR ILL_ILLADR
- ILL_ILLTRP, /* Illegal trap. */
-# define ILL_ILLTRP ILL_ILLTRP
- ILL_PRVOPC, /* Privileged opcode. */
-# define ILL_PRVOPC ILL_PRVOPC
- ILL_PRVREG, /* Privileged register. */
-# define ILL_PRVREG ILL_PRVREG
- ILL_COPROC, /* Coprocessor error. */
-# define ILL_COPROC ILL_COPROC
- ILL_BADSTK /* Internal stack error. */
-# define ILL_BADSTK ILL_BADSTK
-};
-
-/* `si_code' values for SIGFPE signal. */
-enum
-{
- FPE_INTDIV = 1, /* Integer divide by zero. */
-# define FPE_INTDIV FPE_INTDIV
- FPE_INTOVF, /* Integer overflow. */
-# define FPE_INTOVF FPE_INTOVF
- FPE_FLTDIV, /* Floating point divide by zero. */
-# define FPE_FLTDIV FPE_FLTDIV
- FPE_FLTOVF, /* Floating point overflow. */
-# define FPE_FLTOVF FPE_FLTOVF
- FPE_FLTUND, /* Floating point underflow. */
-# define FPE_FLTUND FPE_FLTUND
- FPE_FLTRES, /* Floating point inexact result. */
-# define FPE_FLTRES FPE_FLTRES
- FPE_FLTINV, /* Floating point invalid operation. */
-# define FPE_FLTINV FPE_FLTINV
- FPE_FLTSUB /* Subscript out of range. */
-# define FPE_FLTSUB FPE_FLTSUB
-};
-
-/* `si_code' values for SIGSEGV signal. */
-enum
-{
- SEGV_MAPERR = 1, /* Address not mapped to object. */
-# define SEGV_MAPERR SEGV_MAPERR
- SEGV_ACCERR /* Invalid permissions for mapped object. */
-# define SEGV_ACCERR SEGV_ACCERR
-};
-
-/* `si_code' values for SIGBUS signal. */
-enum
-{
- BUS_ADRALN = 1, /* Invalid address alignment. */
-# define BUS_ADRALN BUS_ADRALN
- BUS_ADRERR, /* Non-existant physical address. */
-# define BUS_ADRERR BUS_ADRERR
- BUS_OBJERR /* Object specific hardware error. */
-# define BUS_OBJERR BUS_OBJERR
-};
-
-/* `si_code' values for SIGTRAP signal. */
-enum
-{
- TRAP_BRKPT = 1, /* Process breakpoint. */
-# define TRAP_BRKPT TRAP_BRKPT
- TRAP_TRACE /* Process trace trap. */
-# define TRAP_TRACE TRAP_TRACE
-};
-
-/* `si_code' values for SIGCHLD signal. */
-enum
-{
- CLD_EXITED = 1, /* Child has exited. */
-# define CLD_EXITED CLD_EXITED
- CLD_KILLED, /* Child was killed. */
-# define CLD_KILLED CLD_KILLED
- CLD_DUMPED, /* Child terminated abnormally. */
-# define CLD_DUMPED CLD_DUMPED
- CLD_TRAPPED, /* Traced child has trapped. */
-# define CLD_TRAPPED CLD_TRAPPED
- CLD_STOPPED, /* Child has stopped. */
-# define CLD_STOPPED CLD_STOPPED
- CLD_CONTINUED /* Stopped child has continued. */
-# define CLD_CONTINUED CLD_CONTINUED
-};
-
-/* `si_code' values for SIGPOLL signal. */
-enum
-{
- POLL_IN = 1, /* Data input available. */
-# define POLL_IN POLL_IN
- POLL_OUT, /* Output buffers available. */
-# define POLL_OUT POLL_OUT
- POLL_MSG, /* Input message available. */
-# define POLL_MSG POLL_MSG
- POLL_ERR, /* I/O error. */
-# define POLL_ERR POLL_ERR
- POLL_PRI, /* High priority input available. */
-# define POLL_PRI POLL_PRI
- POLL_HUP /* Device disconnected. */
-# define POLL_HUP POLL_HUP
-};
-
-# undef __need_siginfo_t
-#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */
-
-
-#if (defined _SIGNAL_H || defined __need_sigevent_t) \
- && !defined __have_sigevent_t
-# define __have_sigevent_t 1
-
-/* Structure to transport application-defined values with signals. */
-# define __SIGEV_MAX_SIZE 64
-# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-
-typedef struct sigevent
- {
- sigval_t sigev_value;
- int sigev_signo;
- int sigev_notify;
-
- union
- {
- int _pad[__SIGEV_PAD_SIZE];
-
- /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
- thread to receive the signal. */
- __pid_t _tid;
-
- struct
- {
- void (*_function) (sigval_t); /* Function to start. */
- void *_attribute; /* Really pthread_attr_t. */
- } _sigev_thread;
- } _sigev_un;
- } sigevent_t;
-
-/* POSIX names to access some of the members. */
-# define sigev_notify_function _sigev_un._sigev_thread._function
-# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
-
-/* `sigev_notify' values. */
-enum
-{
- SIGEV_SIGNAL = 0, /* Notify via signal. */
-# define SIGEV_SIGNAL SIGEV_SIGNAL
- SIGEV_NONE, /* Other notification: meaningless. */
-# define SIGEV_NONE SIGEV_NONE
- SIGEV_THREAD, /* Deliver via thread creation. */
-# define SIGEV_THREAD SIGEV_THREAD
-
- SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
-#define SIGEV_THREAD_ID SIGEV_THREAD_ID
-};
-
-#endif /* have _SIGNAL_H. */
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/signum.h b/sysdeps/unix/sysv/linux/alpha/bits/signum.h
deleted file mode 100644
index 477c13175d..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/signum.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* Signal number definitions. Linux/Alpha version.
- Copyright (C) 1996, 1997, 1998, 1999, 2003 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifdef _SIGNAL_H
-
-/* Fake signal functions. */
-#define SIG_ERR ((__sighandler_t) -1) /* Error return. */
-#define SIG_DFL ((__sighandler_t) 0) /* Default action. */
-#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */
-
-#ifdef __USE_UNIX98
-# define SIG_HOLD ((__sighandler_t) 2) /* Add signal to hold mask. */
-#endif
-
-/*
- * Linux/AXP has different signal numbers that Linux/i386: I'm trying
- * to make it OSF/1 binary compatible, at least for normal binaries.
- */
-#define SIGHUP 1
-#define SIGINT 2
-#define SIGQUIT 3
-#define SIGILL 4
-#define SIGTRAP 5
-#define SIGABRT 6
-#define SIGEMT 7
-#define SIGFPE 8
-#define SIGKILL 9
-#define SIGBUS 10
-#define SIGSEGV 11
-#define SIGSYS 12
-#define SIGPIPE 13
-#define SIGALRM 14
-#define SIGTERM 15
-#define SIGURG 16
-#define SIGSTOP 17
-#define SIGTSTP 18
-#define SIGCONT 19
-#define SIGCHLD 20
-#define SIGCLD SIGCHLD
-#define SIGTTIN 21
-#define SIGTTOU 22
-#define SIGIO 23
-#define SIGXCPU 24
-#define SIGXFSZ 25
-#define SIGVTALRM 26
-#define SIGPROF 27
-#define SIGWINCH 28
-#define SIGINFO 29
-#define SIGUSR1 30
-#define SIGUSR2 31
-
-#define SIGPOLL SIGIO
-#define SIGPWR SIGINFO
-#define SIGIOT SIGABRT
-
-#define _NSIG 65 /* Biggest signal number + 1. */
-
-#define SIGRTMIN (__libc_current_sigrtmin ())
-#define SIGRTMAX (__libc_current_sigrtmax ())
-
-/* These are the hard limits of the kernel. These values should not be
- used directly at user level. */
-#define __SIGRTMIN 32
-#define __SIGRTMAX (_NSIG - 1)
-
-#endif /* <signal.h> included. */
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/sigstack.h b/sysdeps/unix/sysv/linux/alpha/bits/sigstack.h
deleted file mode 100644
index 7faaf98d54..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/sigstack.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* sigstack, sigaltstack definitions.
- Copyright (C) 1998 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SIGNAL_H
-# error "Never include this file directly. Use <signal.h> instead"
-#endif
-
-
-/* Structure describing a signal stack (obsolete). */
-struct sigstack
- {
- __ptr_t ss_sp; /* Signal stack pointer. */
- int ss_onstack; /* Nonzero if executing on this stack. */
- };
-
-
-/* Possible values for `ss_flags.'. */
-enum
-{
- SS_ONSTACK = 1,
-#define SS_ONSTACK SS_ONSTACK
- SS_DISABLE
-#define SS_DISABLE SS_DISABLE
-};
-
-/* Minimum stack size for a signal handler. */
-#define MINSIGSTKSZ 4096
-
-/* System default stack size. */
-#define SIGSTKSZ 16384
-
-
-/* Alternate, preferred interface. */
-typedef struct sigaltstack
- {
- __ptr_t ss_sp;
- int ss_flags;
- size_t ss_size;
- } stack_t;
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/stat.h b/sysdeps/unix/sysv/linux/alpha/bits/stat.h
deleted file mode 100644
index 42748be762..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/stat.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/* Copyright (C) 1996,1997,1998,1999,2000,2001,2004
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_STAT_H
-# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
-#endif
-
-/* Versions of the `struct stat' data structure. */
-#define _STAT_VER_KERNEL 0
-#define _STAT_VER_GLIBC2 1
-#define _STAT_VER_GLIBC2_1 2
-#define _STAT_VER_KERNEL64 3
-#define _STAT_VER_GLIBC2_3_4 3
-#define _STAT_VER _STAT_VER_GLIBC2_3_4
-
-/* Versions of the `xmknod' interface. */
-#define _MKNOD_VER_LINUX 0
-
-
-/* Nanosecond resolution timestamps are stored in a format equivalent to
- 'struct timespec'. This is the type used whenever possible but the
- Unix namespace rules do not allow the identifier 'timespec' to appear
- in the <sys/stat.h> header. Therefore we have to handle the use of
- this header in strictly standard-compliant sources special.
-
- Use neat tidy anonymous unions and structures when possible. */
-
-#ifdef __USE_MISC
-# if __GNUC_PREREQ(3,3)
-# define __ST_TIME(X) \
- __extension__ union { \
- struct timespec st_##X##tim; \
- struct { \
- __time_t st_##X##time; \
- unsigned long st_##X##timensec; \
- }; \
- }
-# else
-# define __ST_TIME(X) struct timespec st_##X##tim
-# define st_atime st_atim.tv_sec
-# define st_mtime st_mtim.tv_sec
-# define st_ctime st_ctim.tv_sec
-# endif
-#else
-# define __ST_TIME(X) \
- __time_t st_##X##time; \
- unsigned long st_##X##timensec
-#endif
-
-
-struct stat
- {
- __dev_t st_dev; /* Device. */
-#ifdef __USE_FILE_OFFSET64
- __ino64_t st_ino; /* File serial number. */
-#else
- __ino_t st_ino; /* File serial number. */
- int __pad0; /* 64-bit st_ino. */
-#endif
- __dev_t st_rdev; /* Device number, if device. */
- __off_t st_size; /* Size of file, in bytes. */
-#ifdef __USE_FILE_OFFSET64
- __blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */
-#else
- __blkcnt_t st_blocks; /* Nr. 512-byte blocks allocated. */
- int __pad1; /* 64-bit st_blocks. */
-#endif
- __mode_t st_mode; /* File mode. */
- __uid_t st_uid; /* User ID of the file's owner. */
- __gid_t st_gid; /* Group ID of the file's group.*/
- __blksize_t st_blksize; /* Optimal block size for I/O. */
- __nlink_t st_nlink; /* Link count. */
- int __pad2; /* Real padding. */
- __ST_TIME(a); /* Time of last access. */
- __ST_TIME(m); /* Time of last modification. */
- __ST_TIME(c); /* Time of last status change. */
- long __unused[3];
- };
-
-#ifdef __USE_LARGEFILE64
-/* Note stat64 is the same shape as stat. */
-struct stat64
- {
- __dev_t st_dev; /* Device. */
- __ino64_t st_ino; /* File serial number. */
- __dev_t st_rdev; /* Device number, if device. */
- __off_t st_size; /* Size of file, in bytes. */
- __blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */
- __mode_t st_mode; /* File mode. */
- __uid_t st_uid; /* User ID of the file's owner. */
- __gid_t st_gid; /* Group ID of the file's group.*/
- __blksize_t st_blksize; /* Optimal block size for I/O. */
- __nlink_t st_nlink; /* Link count. */
- int __pad0; /* Real padding. */
- __ST_TIME(a); /* Time of last access. */
- __ST_TIME(m); /* Time of last modification. */
- __ST_TIME(c); /* Time of last status change. */
- long __unused[3];
- };
-#endif
-
-#undef __ST_TIME
-
-/* Tell code we have these members. */
-#define _STATBUF_ST_BLKSIZE
-#define _STATBUF_ST_RDEV
-#define _STATBUF_ST_NSEC
-
-/* Encoding of the file mode. */
-
-#define __S_IFMT 0170000 /* These bits determine file type. */
-
-/* File types. */
-#define __S_IFDIR 0040000 /* Directory. */
-#define __S_IFCHR 0020000 /* Character device. */
-#define __S_IFBLK 0060000 /* Block device. */
-#define __S_IFREG 0100000 /* Regular file. */
-#define __S_IFIFO 0010000 /* FIFO. */
-#define __S_IFLNK 0120000 /* Symbolic link. */
-#define __S_IFSOCK 0140000 /* Socket. */
-
-/* POSIX.1b objects. Note that these macros always evaluate to zero. But
- they do it by enforcing the correct use of the macros. */
-#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
-#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
-
-/* Protection bits. */
-
-#define __S_ISUID 04000 /* Set user ID on execution. */
-#define __S_ISGID 02000 /* Set group ID on execution. */
-#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
-#define __S_IREAD 0400 /* Read by owner. */
-#define __S_IWRITE 0200 /* Write by owner. */
-#define __S_IEXEC 0100 /* Execute by owner. */
-
-#if defined __USE_ATFILE || defined __USE_GNU
-/* XXX This will change to the macro for the next 2008 POSIX revision. */
-# define UTIME_NOW ((1l << 30) - 1l)
-# define UTIME_OMIT ((1l << 30) - 2l)
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/statfs.h b/sysdeps/unix/sysv/linux/alpha/bits/statfs.h
deleted file mode 100644
index d838e6bf4a..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/statfs.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Copyright (C) 1997, 1998, 2000, 2003 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_STATFS_H
-# error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
-#endif
-
-#include <bits/types.h> /* for __fsid_t and __fsblkcnt_t. */
-
-struct statfs
- {
- int f_type;
- int f_bsize;
-#ifndef __USE_FILE_OFFSET64
- __fsblkcnt_t f_blocks;
- __fsblkcnt_t f_bfree;
- __fsblkcnt_t f_bavail;
- __fsfilcnt_t f_files;
- __fsfilcnt_t f_ffree;
-#else
- __fsblkcnt64_t f_blocks;
- __fsblkcnt64_t f_bfree;
- __fsblkcnt64_t f_bavail;
- __fsfilcnt64_t f_files;
- __fsfilcnt64_t f_ffree;
-#endif
- __fsid_t f_fsid;
- int f_namelen;
- int f_frsize;
- int f_spare[5];
- };
-
-#ifdef __USE_LARGEFILE64
-struct statfs64
- {
- int f_type;
- int f_bsize;
- __fsblkcnt64_t f_blocks;
- __fsblkcnt64_t f_bfree;
- __fsblkcnt64_t f_bavail;
- __fsfilcnt64_t f_files;
- __fsfilcnt64_t f_ffree;
- __fsid_t f_fsid;
- int f_namelen;
- int f_frsize;
- int f_spare[5];
- };
-#endif
-
-/* Tell code we have this member. */
-#define _STATFS_F_NAMELEN
-#define _STATFS_F_FRSIZE
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/termios.h b/sysdeps/unix/sysv/linux/alpha/bits/termios.h
deleted file mode 100644
index 966ccf94da..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/termios.h
+++ /dev/null
@@ -1,226 +0,0 @@
-/* termios type and macro definitions. Linux version.
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1999, 2003, 2005
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _TERMIOS_H
-# error "Never include <bits/termios.h> directly; use <termios.h> instead."
-#endif
-
-typedef unsigned char cc_t;
-typedef unsigned int speed_t;
-typedef unsigned int tcflag_t;
-
-#define NCCS 32
-struct termios
- {
- tcflag_t c_iflag; /* input mode flags */
- tcflag_t c_oflag; /* output mode flags */
- tcflag_t c_cflag; /* control mode flags */
- tcflag_t c_lflag; /* local mode flags */
- cc_t c_cc[NCCS]; /* control characters */
- cc_t c_line; /* line discipline (== c_cc[33]) */
- speed_t c_ispeed; /* input speed */
- speed_t c_ospeed; /* output speed */
-#define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
-#define _HAVE_STRUCT_TERMIOS_C_OSPEED 1
- };
-
-/* c_cc characters */
-#define VEOF 0
-#define VEOL 1
-#define VEOL2 2
-#define VERASE 3
-#define VWERASE 4
-#define VKILL 5
-#define VREPRINT 6
-#define VSWTC 7
-#define VINTR 8
-#define VQUIT 9
-#define VSUSP 10
-#define VSTART 12
-#define VSTOP 13
-#define VLNEXT 14
-#define VDISCARD 15
-#define VMIN 16
-#define VTIME 17
-
-/* c_iflag bits */
-#define IGNBRK 0000001
-#define BRKINT 0000002
-#define IGNPAR 0000004
-#define PARMRK 0000010
-#define INPCK 0000020
-#define ISTRIP 0000040
-#define INLCR 0000100
-#define IGNCR 0000200
-#define ICRNL 0000400
-#define IXON 0001000
-#define IXOFF 0002000
-#ifdef __USE_BSD
- /* POSIX.1 doesn't want these... */
-# define IXANY 0004000
-# define IUCLC 0010000
-# define IMAXBEL 0020000
-# define IUTF8 0040000
-#endif
-
-/* c_oflag bits */
-#define OPOST 0000001
-#define ONLCR 0000002
-#define OLCUC 0000004
-
-#define OCRNL 0000010
-#define ONOCR 0000020
-#define ONLRET 0000040
-
-#define OFILL 00000100
-#define OFDEL 00000200
-#if defined __USE_MISC || defined __USE_XOPEN
-# define NLDLY 00001400
-# define NL0 00000000
-# define NL1 00000400
-# define NL2 00001000
-# define NL3 00001400
-# define TABDLY 00006000
-# define TAB0 00000000
-# define TAB1 00002000
-# define TAB2 00004000
-# define TAB3 00006000
-# define CRDLY 00030000
-# define CR0 00000000
-# define CR1 00010000
-# define CR2 00020000
-# define CR3 00030000
-# define FFDLY 00040000
-# define FF0 00000000
-# define FF1 00040000
-# define BSDLY 00100000
-# define BS0 00000000
-# define BS1 00100000
-#endif
-
-#define VTDLY 00200000
-#define VT0 00000000
-#define VT1 00200000
-
-#ifdef __USE_MISC
-# define XTABS 01000000 /* Hmm.. Linux/i386 considers this part of TABDLY.. */
-#endif
-
-/* c_cflag bit meaning */
-#ifdef __USE_MISC
-# define CBAUD 0000037
-#endif
-#define B0 0000000 /* hang up */
-#define B50 0000001
-#define B75 0000002
-#define B110 0000003
-#define B134 0000004
-#define B150 0000005
-#define B200 0000006
-#define B300 0000007
-#define B600 0000010
-#define B1200 0000011
-#define B1800 0000012
-#define B2400 0000013
-#define B4800 0000014
-#define B9600 0000015
-#define B19200 0000016
-#define B38400 0000017
-#ifdef __USE_MISC
-# define EXTA B19200
-# define EXTB B38400
-# define CBAUDEX 0000000
-#endif
-#define B57600 00020
-#define B115200 00021
-#define B230400 00022
-#define B460800 00023
-#define B500000 00024
-#define B576000 00025
-#define B921600 00026
-#define B1000000 00027
-#define B1152000 00030
-#define B1500000 00031
-#define B2000000 00032
-#define B2500000 00033
-#define B3000000 00034
-#define B3500000 00035
-#define B4000000 00036
-
-#define __MAX_BAUD B4000000
-
-#define CSIZE 00001400
-#define CS5 00000000
-#define CS6 00000400
-#define CS7 00001000
-#define CS8 00001400
-
-#define CSTOPB 00002000
-#define CREAD 00004000
-#define PARENB 00010000
-#define PARODD 00020000
-#define HUPCL 00040000
-
-#define CLOCAL 00100000
-#ifdef __USE_MISC
-# define CMSPAR 010000000000 /* mark or space (stick) parity */
-# define CRTSCTS 020000000000 /* flow control */
-#endif
-
-/* c_lflag bits */
-#define ISIG 0x00000080
-#define ICANON 0x00000100
-#if defined __USE_MISC || defined __USE_XOPEN
-# define XCASE 0x00004000
-#endif
-#define ECHO 0x00000008
-#define ECHOE 0x00000002
-#define ECHOK 0x00000004
-#define ECHONL 0x00000010
-#define NOFLSH 0x80000000
-#define TOSTOP 0x00400000
-#ifdef __USE_MISC
-# define ECHOCTL 0x00000040
-# define ECHOPRT 0x00000020
-# define ECHOKE 0x00000001
-# define FLUSHO 0x00800000
-# define PENDIN 0x20000000
-#endif
-#define IEXTEN 0x00000400
-
-/* Values for the ACTION argument to `tcflow'. */
-#define TCOOFF 0
-#define TCOON 1
-#define TCIOFF 2
-#define TCION 3
-
-/* Values for the QUEUE_SELECTOR argument to `tcflush'. */
-#define TCIFLUSH 0
-#define TCOFLUSH 1
-#define TCIOFLUSH 2
-
-/* Values for the OPTIONAL_ACTIONS argument to `tcsetattr'. */
-#define TCSANOW 0
-#define TCSADRAIN 1
-#define TCSAFLUSH 2
-
-
-#define _IOT_termios /* Hurd ioctl type field. */ \
- _IOT (_IOTS (cflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2)
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h b/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
deleted file mode 100644
index 201585af1f..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* bits/typesizes.h -- underlying types for *_t. Linux/Alpha version.
- Copyright (C) 2002, 2003 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _BITS_TYPES_H
-# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
-#endif
-
-#ifndef _BITS_TYPESIZES_H
-#define _BITS_TYPESIZES_H 1
-
-/* See <bits/types.h> for the meaning of these macros. This file exists so
- that <bits/types.h> need not vary across different GNU platforms. */
-
-#define __DEV_T_TYPE __U64_TYPE
-#define __UID_T_TYPE __U32_TYPE
-#define __GID_T_TYPE __U32_TYPE
-#define __INO_T_TYPE __U32_TYPE
-#define __INO64_T_TYPE __U64_TYPE
-#define __MODE_T_TYPE __U32_TYPE
-#define __NLINK_T_TYPE __U32_TYPE
-#define __OFF_T_TYPE __SLONGWORD_TYPE
-#define __OFF64_T_TYPE __S64_TYPE
-#define __PID_T_TYPE __S32_TYPE
-#define __RLIM_T_TYPE __ULONGWORD_TYPE
-#define __RLIM64_T_TYPE __U64_TYPE
-#define __BLKCNT_T_TYPE __U32_TYPE
-#define __BLKCNT64_T_TYPE __U64_TYPE
-#define __FSBLKCNT_T_TYPE __S32_TYPE
-#define __FSBLKCNT64_T_TYPE __S64_TYPE
-#define __FSFILCNT_T_TYPE __U32_TYPE
-#define __FSFILCNT64_T_TYPE __U64_TYPE
-#define __ID_T_TYPE __U32_TYPE
-#define __CLOCK_T_TYPE __SLONGWORD_TYPE
-#define __TIME_T_TYPE __SLONGWORD_TYPE
-#define __USECONDS_T_TYPE __U32_TYPE
-#define __SUSECONDS_T_TYPE __S64_TYPE
-#define __DADDR_T_TYPE __S32_TYPE
-#define __SWBLK_T_TYPE __SLONGWORD_TYPE
-#define __KEY_T_TYPE __S32_TYPE
-#define __CLOCKID_T_TYPE __S32_TYPE
-#define __TIMER_T_TYPE void *
-#define __BLKSIZE_T_TYPE __U32_TYPE
-#define __FSID_T_TYPE struct { int __val[2]; }
-#define __SSIZE_T_TYPE __SWORD_TYPE
-
-/* Number of descriptors that can fit in an `fd_set'. */
-#define __FD_SETSIZE 1024
-
-
-#endif /* bits/typesizes.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/wordsize.h b/sysdeps/unix/sysv/linux/alpha/bits/wordsize.h
deleted file mode 100644
index 22fc64109c..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/wordsize.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 1999, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __WORDSIZE 64
-
-#if !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL
-
-/* Signal that we didn't used to have a `long double'. The changes all
- the `long double' function variants to be redirects to the double
- functions. */
-# define __LONG_DOUBLE_MATH_OPTIONAL 1
-# ifndef __LONG_DOUBLE_128__
-# define __NO_LONG_DOUBLE_MATH 1
-# endif
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/brk.S b/sysdeps/unix/sysv/linux/alpha/brk.S
deleted file mode 100644
index e01abebe0e..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/brk.S
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe <brendan@zen.org>, 1993.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* __brk is a special syscall under Linux since it never returns an
- error. Instead, the error condition is indicated by returning the old
- break value (instead of the new, requested one). */
-
-#include <sysdep.h>
-#define _ERRNO_H
-#include <bits/errno.h>
-
-#ifdef PIC
-.section .bss
- .align 3
- .globl __curbrk
-__curbrk: .skip 8
- .type __curbrk,@object
- .size __curbrk,8
-#else
-.comm __curbrk, 8
-#endif
-
- .text
-LEAF(__brk, 8)
- ldgp gp, 0(t12)
- subq sp, 8, sp
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- /* Save the requested brk across the system call. */
- stq a0, 0(sp)
-
- ldiq v0, __NR_brk
- call_pal PAL_callsys
-
- ldq a0, 0(sp)
-
- /* Be prepared for an OSF-style brk. */
- bne a3, $err1
- beq v0, $ok
-
- /* Correctly handle the brk(0) query case. */
- cmoveq a0, v0, a0
- xor a0, v0, t0
- bne t0, $err0
-
- /* Update __curbrk and return cleanly. */
- mov zero, v0
-$ok: stq a0, __curbrk
- addq sp, 8, sp
- ret
-
- /* What a horrible way to die. */
-$err0: ldi v0, ENOMEM
-$err1: addq sp, 8, sp
- SYSCALL_ERROR_HANDLER
-
- END(__brk)
-
-weak_alias (__brk, brk)
diff --git a/sysdeps/unix/sysv/linux/alpha/clone.S b/sysdeps/unix/sysv/linux/alpha/clone.S
deleted file mode 100644
index 5e0b21ea15..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/clone.S
+++ /dev/null
@@ -1,149 +0,0 @@
-/* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1996.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* clone() is even more special than fork() as it mucks with stacks
- and invokes a function in the right context after its all over. */
-
-#include <sysdep.h>
-#define _ERRNO_H 1
-#include <bits/errno.h>
-
-#define CLONE_VM 0x00000100
-#define CLONE_THREAD 0x00010000
-
-/* int clone(int (*fn)(void *arg), void *child_stack, int flags,
- void *arg, pid_t *ptid, void *tls, pid_t *ctid);
-
- Note that everything past ARG is technically optional, based
- on FLAGS, and that CTID is arg 7, and thus is on the stack.
- However, since a load from top-of-stack better be legal always,
- we don't bother checking FLAGS. */
-
- .text
-ENTRY(__clone)
-#ifdef PROF
- ldgp gp,0(pv)
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
- .prologue 1
-#else
- .prologue 0
-#endif
-
- /* Sanity check arguments. */
- ldiq v0,EINVAL
- beq a0,$error /* no NULL function pointers */
- beq a1,$error /* no NULL stack pointers */
-
- /* Save the fn ptr and arg on the new stack. */
- subq a1,32,a1
- stq a0,0(a1)
- stq a3,8(a1)
-#ifdef RESET_PID
- stq a2,16(a1)
-#endif
-
- /* The syscall is of the form clone(flags, usp, ptid, ctid, tls).
- Shift the flags, ptid, ctid, tls arguments into place; the
- child_stack argument is already correct. */
- mov a2,a0
- mov a4,a2
- ldq a3,0(sp)
- mov a5,a4
-
- /* Do the system call. */
- ldiq v0,__NR_clone
- call_pal PAL_callsys
-
- bne a3,$error
- beq v0,thread_start
-
- /* Successful return from the parent. */
- ret
-
- /* Something bad happened -- no child created. */
-$error:
-#ifndef PROF
- br gp,1f
-1: ldgp gp,0(gp)
-#endif
- SYSCALL_ERROR_HANDLER
-
- END(__clone)
-
-/* Load up the arguments to the function. Put this block of code in
- its own function so that we can terminate the stack trace with our
- debug info. */
-
- .ent thread_start
-thread_start:
- .frame fp,0,fp,0
- mov 0, fp
- .prologue 0
-
-#ifdef RESET_PID
- /* Check and see if we need to reset the PID. */
- ldq t0,16(sp)
- lda t1,CLONE_THREAD
- and t0,t1,t2
- beq t2,2f
-1:
-#endif
-
- /* Load up the arguments. */
- ldq pv,0(sp)
- ldq a0,8(sp)
- addq sp,32,sp
-
- /* Call the user's function. */
- jsr ra,(pv)
- ldgp gp,0(ra)
-
- /* Call _exit rather than doing it inline for breakpoint purposes. */
- mov v0,a0
-#ifdef PIC
- bsr ra, HIDDEN_JUMPTARGET(_exit) !samegp
-#else
- jsr ra, HIDDEN_JUMPTARGET(_exit)
-#endif
-
- /* Die horribly. */
- halt
-
-#ifdef RESET_PID
-2:
- rduniq
- lda t1, CLONE_VM
- mov v0, s0
- lda v0, -1
- and t0, t1, t2
- bne t2, 3f
- lda v0, __NR_getxpid
- callsys
-3:
- stl v0, PID_OFFSET(s0)
- stl v0, TID_OFFSET(s0)
- br 1b
-#endif
-
- .end thread_start
-
-weak_alias (__clone, clone)
diff --git a/sysdeps/unix/sysv/linux/alpha/dl-auxv.h b/sysdeps/unix/sysv/linux/alpha/dl-auxv.h
deleted file mode 100644
index 8afc4dba3b..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/dl-auxv.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Auxiliary vector processing for Linux/Alpha.
- Copyright (C) 2007 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* Scan the Aux Vector for the cache shape entries. */
-
-long __libc_alpha_cache_shape[4] = { -2, -2, -2, -2 };
-
-#define DL_PLATFORM_AUXV \
- case AT_L1I_CACHESHAPE: \
- __libc_alpha_cache_shape[0] = av->a_un.a_val; \
- break; \
- case AT_L1D_CACHESHAPE: \
- __libc_alpha_cache_shape[1] = av->a_un.a_val; \
- break; \
- case AT_L2_CACHESHAPE: \
- __libc_alpha_cache_shape[2] = av->a_un.a_val; \
- break; \
- case AT_L3_CACHESHAPE: \
- __libc_alpha_cache_shape[3] = av->a_un.a_val; \
- break;
diff --git a/sysdeps/unix/sysv/linux/alpha/dl-brk.S b/sysdeps/unix/sysv/linux/alpha/dl-brk.S
deleted file mode 100644
index eeb96544e3..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/dl-brk.S
+++ /dev/null
@@ -1 +0,0 @@
-#include <brk.S>
diff --git a/sysdeps/unix/sysv/linux/alpha/dl-support.c b/sysdeps/unix/sysv/linux/alpha/dl-support.c
deleted file mode 100644
index 290217671c..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/dl-support.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "dl-auxv.h"
-#include <elf/dl-support.c>
diff --git a/sysdeps/unix/sysv/linux/alpha/dl-sysdep.c b/sysdeps/unix/sysv/linux/alpha/dl-sysdep.c
deleted file mode 100644
index 4034820f4d..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/dl-sysdep.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "dl-auxv.h"
-#include <sysdeps/unix/sysv/linux/dl-sysdep.c>
diff --git a/sysdeps/unix/sysv/linux/alpha/fpu/Implies b/sysdeps/unix/sysv/linux/alpha/fpu/Implies
deleted file mode 100644
index d76f511c2e..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/fpu/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-# Override ldbl-opt with alpha specific routines.
-alpha/fpu
diff --git a/sysdeps/unix/sysv/linux/alpha/fraiseexcpt.c b/sysdeps/unix/sysv/linux/alpha/fraiseexcpt.c
deleted file mode 100644
index 5e63be5cc7..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/fraiseexcpt.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright (C) 2004,2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <float.h>
-#include <kernel-features.h>
-#include "kernel_sysinfo.h"
-
-
-int
-__feraiseexcept (int excepts)
-{
- INTERNAL_SYSCALL_DECL (err);
- unsigned long t = excepts;
- long r;
-
- r = INTERNAL_SYSCALL (osf_setsysinfo, err, 2, SSI_IEEE_RAISE_EXCEPTION, &t);
-
-#ifndef __ASSUME_IEEE_RAISE_EXCEPTION
- if (!INTERNAL_SYSCALL_ERROR_P (r, err))
- return 0;
-
- double d;
-
- /* If we got an error from SSI_IEEE_RAISE_EXCEPTION, assume it means that
- the system call isn't actually implemented. Do the best we can. */
-
- /* Invalid implemented with 0 / 0 -> NaN. */
- if (excepts & FE_INVALID)
- __asm__ __volatile__ ("divs/su $f31,$f31,%0; trapb" : "=f"(d) : );
-
- /* Division By Zero implemented with 1 / 0 -> NaN. */
- if (excepts & FE_DIVBYZERO)
- __asm__ __volatile__ ("divs/su %1,$f31,%0; trapb" : "=&f"(d) : "f"(1.0f));
-
- /* Overflow and underflow cannot be had all by themselves. We can
- generate them with arithmetic, but we always get INEXACT raised
- at the same time. Prepare to undo. */
- if ((excepts & (FE_OVERFLOW | FE_UNDERFLOW)) && !(excepts & FE_INEXACT))
- INTERNAL_SYSCALL (osf_getsysinfo, err, 2, GSI_IEEE_FP_CONTROL, &t);
-
- /* Overflow implemented with FLT_MAX + FLT_MAX -> Inf. */
- if (excepts & FE_OVERFLOW)
- __asm__ __volatile__ ("adds/sui %1,%1,%0; trapb"
- : "=&f"(d) : "f"(FLT_MAX));
-
- /* Underflow implemented with FLT_MIN * FLT_MIN -> 0. */
- if (excepts & FE_UNDERFLOW)
- __asm__ __volatile__ ("muls/sui %1,%1,%0; trapb"
- : "=&f"(d) : "f"(FLT_MIN));
-
- /* Inexact implemented with (long)0.5 -> 0. */
- if ((excepts & (FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)) == FE_INEXACT)
- __asm__ __volatile__ ("cvttq/svi %1,%0; trapb" : "=&f"(d) : "f"(0.5f));
-
- /* If we raised inexact when not asked, and inexact was not previously
- raised, then clear that exception. */
- if ((excepts & (FE_OVERFLOW | FE_UNDERFLOW))
- && !((excepts | t) & FE_INEXACT))
- {
- t |= excepts & SWCR_STATUS_MASK;
- INTERNAL_SYSCALL (osf_setsysinfo, err, 2, SSI_IEEE_FP_CONTROL, &t);
- }
-#endif /* !__ASSUME_IEEE_RAISE_EXCEPTION */
-
- return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feraiseexcept, __old_feraiseexcept)
-compat_symbol (libm, __old_feraiseexcept, feraiseexcept, GLIBC_2_1);
-#endif
-
-libm_hidden_ver (__feraiseexcept, feraiseexcept)
-versioned_symbol (libm, __feraiseexcept, feraiseexcept, GLIBC_2_2);
diff --git a/sysdeps/unix/sysv/linux/alpha/fxstat.c b/sysdeps/unix/sysv/linux/alpha/fxstat.c
deleted file mode 100644
index 40e08fd86e..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/fxstat.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* fxstat using old-style Unix stat system call.
- Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __fxstat64 __fxstat64_disable
-
-#include <errno.h>
-#include <stddef.h>
-#include <sys/stat.h>
-#include <kernel_stat.h>
-#include <sysdep.h>
-#include <sys/syscall.h>
-#include <xstatconv.h>
-
-#undef __fxstat64
-
-
-/* Get information about the file NAME in BUF. */
-int
-__fxstat (int vers, int fd, struct stat *buf)
-{
- INTERNAL_SYSCALL_DECL (err);
- int result, errno_out;
- struct kernel_stat kbuf;
-
- if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
- {
- result = INTERNAL_SYSCALL (fstat64, err, 2, fd, buf);
- if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
- return result;
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
- if (errno_out != ENOSYS)
- goto fail;
- __libc_missing_axp_stat64 = 1;
- }
-
- result = INTERNAL_SYSCALL (fstat, err, 2, fd, &kbuf);
- if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
- return __xstat_conv (vers, &kbuf, buf);
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
-
- fail:
- __set_errno (errno_out);
- return -1;
-}
-hidden_def (__fxstat)
-weak_alias (__fxstat, _fxstat);
-strong_alias (__fxstat, __fxstat64);
-hidden_ver (__fxstat, __fxstat64)
diff --git a/sysdeps/unix/sysv/linux/alpha/fxstatat.c b/sysdeps/unix/sysv/linux/alpha/fxstatat.c
deleted file mode 100644
index 497694619a..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/fxstatat.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* Copyright (C) 2005, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __fxstatat64 __fxstatat64_disable
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <sys/stat.h>
-#include <kernel_stat.h>
-#include <sysdep.h>
-#include <sys/syscall.h>
-#include <xstatconv.h>
-
-#undef __fxstatat64
-
-
-/* Get information about the file NAME in BUF. */
-int
-__fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
-{
- if (flag & ~AT_SYMLINK_NOFOLLOW)
- {
- __set_errno (EINVAL);
- return -1;
- }
-
- char *buf = NULL;
-
- if (fd != AT_FDCWD && file[0] != '/')
- {
- size_t filelen = strlen (file);
- static const char procfd[] = "/proc/self/fd/%d/%s";
- /* Buffer for the path name we are going to use. It consists of
- - the string /proc/self/fd/
- - the file descriptor number
- - the file name provided.
- The final NUL is included in the sizeof. A bit of overhead
- due to the format elements compensates for possible negative
- numbers. */
- size_t buflen = sizeof (procfd) + sizeof (int) * 3 + filelen;
- buf = alloca (buflen);
-
- __snprintf (buf, buflen, procfd, fd, file);
- file = buf;
- }
-
- INTERNAL_SYSCALL_DECL (err);
- int result, errno_out;
- struct kernel_stat kst;
-
- if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
- {
- if (flag & AT_SYMLINK_NOFOLLOW)
- result = INTERNAL_SYSCALL (lstat64, err, 2, file, st);
- else
- result = INTERNAL_SYSCALL (stat64, err, 2, file, st);
-
- if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
- return result;
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
- if (errno_out != ENOSYS)
- goto fail;
- __libc_missing_axp_stat64 = 1;
- }
-
- if (flag & AT_SYMLINK_NOFOLLOW)
- result = INTERNAL_SYSCALL (lstat, err, 2, file, &kst);
- else
- result = INTERNAL_SYSCALL (stat, err, 2, file, &kst);
-
- if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
- return __xstat_conv (vers, &kst, st);
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
-
- fail:
- __atfct_seterrno (errno_out, fd, buf);
-
- return -1;
-}
-libc_hidden_def (__fxstatat)
-strong_alias (__fxstatat, __fxstatat64);
-libc_hidden_ver(__fxstatat, __fxstatat64);
diff --git a/sysdeps/unix/sysv/linux/alpha/getclktck.c b/sysdeps/unix/sysv/linux/alpha/getclktck.c
deleted file mode 100644
index 6636bbe689..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/getclktck.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define SYSTEM_CLK_TCK 1024
-#include <sysdeps/unix/sysv/linux/getclktck.c>
diff --git a/sysdeps/unix/sysv/linux/alpha/getcontext.S b/sysdeps/unix/sysv/linux/alpha/getcontext.S
deleted file mode 100644
index f010f337e6..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/getcontext.S
+++ /dev/null
@@ -1,188 +0,0 @@
-/* Save current context.
- Copyright (C) 2004, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#include <ucontext-offsets.h>
-
-/* ??? Should be a better place for this that's asm friendly. */
-#define SIG_BLOCK 1
-
-
-ENTRY (__getcontext)
-#ifdef PROF
- ldgp gp, 0(pv)
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
- .prologue 1
-#else
- .prologue 0
-#endif
-
- bsr $0, __getcontext_x
- mov $31, $0
- ret
-
-END(__getcontext)
-weak_alias (__getcontext, getcontext)
-
-
-/* An internal routine used by getcontext and setcontext.
- The incomming return address register is $0. */
-
- .align 4
- .globl __getcontext_x
- .hidden __getcontext_x
- .usepv __getcontext_x, no
-
- cfi_startproc
- cfi_return_column (64)
-__getcontext_x:
- cfi_register (64, 0)
-
- .set noat
-
- /* Return value of getcontext. $0 is the only register
- whose value is not preserved. */
- stq $31, UC_SIGCTX+SC_REGS($16)
-
- /* Store all registers into the context. */
- stq $1, UC_SIGCTX+SC_REGS+1*8($16)
- stq $2, UC_SIGCTX+SC_REGS+2*8($16)
- stq $3, UC_SIGCTX+SC_REGS+3*8($16)
- stq $4, UC_SIGCTX+SC_REGS+4*8($16)
- stq $5, UC_SIGCTX+SC_REGS+5*8($16)
- stq $6, UC_SIGCTX+SC_REGS+6*8($16)
- stq $7, UC_SIGCTX+SC_REGS+7*8($16)
- stq $8, UC_SIGCTX+SC_REGS+8*8($16)
- stq $9, UC_SIGCTX+SC_REGS+9*8($16)
- stq $10, UC_SIGCTX+SC_REGS+10*8($16)
- stq $11, UC_SIGCTX+SC_REGS+11*8($16)
- stq $12, UC_SIGCTX+SC_REGS+12*8($16)
- stq $13, UC_SIGCTX+SC_REGS+13*8($16)
- stq $14, UC_SIGCTX+SC_REGS+14*8($16)
- stq $15, UC_SIGCTX+SC_REGS+15*8($16)
- stq $16, UC_SIGCTX+SC_REGS+16*8($16)
- stq $17, UC_SIGCTX+SC_REGS+17*8($16)
- stq $18, UC_SIGCTX+SC_REGS+18*8($16)
- stq $19, UC_SIGCTX+SC_REGS+19*8($16)
- stq $20, UC_SIGCTX+SC_REGS+20*8($16)
- stq $21, UC_SIGCTX+SC_REGS+21*8($16)
- stq $22, UC_SIGCTX+SC_REGS+22*8($16)
- stq $23, UC_SIGCTX+SC_REGS+23*8($16)
- stq $24, UC_SIGCTX+SC_REGS+24*8($16)
- stq $25, UC_SIGCTX+SC_REGS+25*8($16)
- stq $26, UC_SIGCTX+SC_REGS+26*8($16)
- stq $27, UC_SIGCTX+SC_REGS+27*8($16)
- stq $28, UC_SIGCTX+SC_REGS+28*8($16)
- stq $29, UC_SIGCTX+SC_REGS+29*8($16)
- stq $30, UC_SIGCTX+SC_REGS+30*8($16)
- stq $31, UC_SIGCTX+SC_REGS+31*8($16)
-
- stt $f0, UC_SIGCTX+SC_FPREGS+0*8($16)
- stt $f1, UC_SIGCTX+SC_FPREGS+1*8($16)
- stt $f2, UC_SIGCTX+SC_FPREGS+2*8($16)
- stt $f3, UC_SIGCTX+SC_FPREGS+3*8($16)
- stt $f4, UC_SIGCTX+SC_FPREGS+4*8($16)
- stt $f5, UC_SIGCTX+SC_FPREGS+5*8($16)
- stt $f6, UC_SIGCTX+SC_FPREGS+6*8($16)
- stt $f7, UC_SIGCTX+SC_FPREGS+7*8($16)
- stt $f8, UC_SIGCTX+SC_FPREGS+8*8($16)
- stt $f9, UC_SIGCTX+SC_FPREGS+9*8($16)
- stt $f10, UC_SIGCTX+SC_FPREGS+10*8($16)
- stt $f11, UC_SIGCTX+SC_FPREGS+11*8($16)
- stt $f12, UC_SIGCTX+SC_FPREGS+12*8($16)
- stt $f13, UC_SIGCTX+SC_FPREGS+13*8($16)
- stt $f14, UC_SIGCTX+SC_FPREGS+14*8($16)
- stt $f15, UC_SIGCTX+SC_FPREGS+15*8($16)
- stt $f16, UC_SIGCTX+SC_FPREGS+16*8($16)
- stt $f17, UC_SIGCTX+SC_FPREGS+17*8($16)
- stt $f18, UC_SIGCTX+SC_FPREGS+18*8($16)
- stt $f19, UC_SIGCTX+SC_FPREGS+19*8($16)
- stt $f20, UC_SIGCTX+SC_FPREGS+20*8($16)
- stt $f21, UC_SIGCTX+SC_FPREGS+21*8($16)
- stt $f22, UC_SIGCTX+SC_FPREGS+22*8($16)
- stt $f23, UC_SIGCTX+SC_FPREGS+23*8($16)
- stt $f24, UC_SIGCTX+SC_FPREGS+24*8($16)
- stt $f25, UC_SIGCTX+SC_FPREGS+25*8($16)
- stt $f26, UC_SIGCTX+SC_FPREGS+26*8($16)
- stt $f27, UC_SIGCTX+SC_FPREGS+27*8($16)
- stt $f28, UC_SIGCTX+SC_FPREGS+28*8($16)
- stt $f29, UC_SIGCTX+SC_FPREGS+29*8($16)
- stt $f30, UC_SIGCTX+SC_FPREGS+30*8($16)
- stt $f31, UC_SIGCTX+SC_FPREGS+31*8($16)
-
- mf_fpcr $f0
- lda $1, 8
- stt $f0, UC_SIGCTX+SC_FPCR($16)
-
- /* The return address of getcontext is the restart pc. */
- stq $26, UC_SIGCTX+SC_PC($16)
-
- /* Userlevel always has a processor status word of 8. */
- stq $1, UC_SIGCTX+SC_PS($16)
-
- /* Save registers around the syscall. We preserve $17
- for the benefit of swapcontext. */
- subq $30, 4*8, $30
- cfi_adjust_cfa_offset(4*8)
- stq $0, 0($30)
- cfi_rel_offset(64, 0)
- stq $16, 8($30)
- stq $17, 16($30)
-
- /* Save the current signal mask. Whee, there are three
- copies of this in the alpha ucontext_t. */
- lda $16, SIG_BLOCK
- lda $17, 0
- lda $0, __NR_osf_sigprocmask
- callsys
-
- ldq $16, 8($30)
- ldq $17, 16($30)
-
- stq $0, UC_OSF_SIGMASK($16)
- stq $0, UC_SIGCTX+SC_MASK($16)
- stq $0, UC_SIGMASK($16)
- stq $31, UC_SIGMASK + 1*8($16)
- stq $31, UC_SIGMASK + 2*8($16)
- stq $31, UC_SIGMASK + 3*8($16)
- stq $31, UC_SIGMASK + 4*8($16)
- stq $31, UC_SIGMASK + 5*8($16)
- stq $31, UC_SIGMASK + 6*8($16)
- stq $31, UC_SIGMASK + 7*8($16)
- stq $31, UC_SIGMASK + 8*8($16)
- stq $31, UC_SIGMASK + 9*8($16)
- stq $31, UC_SIGMASK +10*8($16)
- stq $31, UC_SIGMASK +11*8($16)
- stq $31, UC_SIGMASK +12*8($16)
- stq $31, UC_SIGMASK +13*8($16)
- stq $31, UC_SIGMASK +14*8($16)
- stq $31, UC_SIGMASK +15*8($16)
-
- ldq $0, 0($30)
- addq $30, 4*8, $30
- cfi_register (64, 0)
- cfi_adjust_cfa_offset(-4*8)
- ret $31, ($0), 1
-
- cfi_endproc
- .size __getcontext_x, .-__getcontext_x
- .type __getcontext_x, @function
diff --git a/sysdeps/unix/sysv/linux/alpha/getdents.c b/sysdeps/unix/sysv/linux/alpha/getdents.c
deleted file mode 100644
index dfecfef924..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/getdents.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#define DIRENT_SET_DP_INO(dp, value) \
- do { (dp)->d_ino = (value); (dp)->__pad = 0; } while (0)
-#include <sysdeps/unix/sysv/linux/getdents.c>
diff --git a/sysdeps/unix/sysv/linux/alpha/getdents64.c b/sysdeps/unix/sysv/linux/alpha/getdents64.c
deleted file mode 100644
index e53570c036..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/getdents64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../getdents64.c"
diff --git a/sysdeps/unix/sysv/linux/alpha/getitimer.S b/sysdeps/unix/sysv/linux/alpha/getitimer.S
deleted file mode 100644
index 6644a5c36d..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/getitimer.S
+++ /dev/null
@@ -1,113 +0,0 @@
-/* Copyright (C) 1998, 2003, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#define _ERRNO_H 1
-#include <bits/errno.h>
-#include <kernel-features.h>
-
-.text
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-#define GETITIMER __getitimer_tv64
-#else
-#define GETITIMER getitimer
-#endif
-
-#if defined __ASSUME_TIMEVAL64
-PSEUDO(GETITIMER, getitimer, 2)
- ret
-PSEUDO_END(GETITIMER)
-#else
-/* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-
- So now we have to do compatibility stuff. */
-
-/* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. */
-.comm __libc_missing_axp_tv64, 4
-
-LEAF(GETITIMER, 16)
- ldgp gp, 0(pv)
- subq sp, 16, sp
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- ldl t0, __libc_missing_axp_tv64
-
- /* Save arguments in case we do need to fall back. */
- stq a0, 0(sp)
- stq a1, 8(sp)
-
- bne t0, $do32
-
- ldi v0, SYS_ify(getitimer)
- callsys
- bne a3, $err64
-
- /* Everything ok. */
- addq sp, 16, sp
- ret
-
- /* If we didn't get ENOSYS, it is a real error. */
- .align 3
-$err64: cmpeq v0, ENOSYS, t0
- beq t0, $error
- stl t0, __libc_missing_axp_tv64
-
- /* Recover the saved arguments. */
- ldq a1, 8(sp)
- ldq a0, 0(sp)
-
- .align 3
-$do32: ldi v0, SYS_ify(osf_getitimer)
- callsys
- bne a3, $error
-
- /* Copy back to proper format. */
- ldq a1, 8(sp)
- ldl t0, 0(a1)
- ldl t1, 4(a1)
- ldl t2, 8(a1)
- ldl t3, 12(a1)
- stq t0, 0(a1)
- stq t1, 8(a1)
- stq t2, 16(a1)
- stq t3, 24(a1)
-
- addq sp, 16, sp
- ret
-
- .align 3
-$error:
- addq sp, 16, sp
- SYSCALL_ERROR_HANDLER
-
-END(GETITIMER)
-#endif /* __ASSUME_TIMEVAL64 */
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-default_symbol_version (__getitimer_tv64, getitimer, GLIBC_2.1)
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/getrusage.S b/sysdeps/unix/sysv/linux/alpha/getrusage.S
deleted file mode 100644
index 0bca4b5f23..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/getrusage.S
+++ /dev/null
@@ -1,149 +0,0 @@
-/* Copyright (C) 1998, 2003, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#define _ERRNO_H 1
-#include <bits/errno.h>
-#include <kernel-features.h>
-
-.text
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-#define GETRUSAGE __getrusage_tv64
-#else
-#define GETRUSAGE __getrusage
-#endif
-
-#if defined __ASSUME_TIMEVAL64
-PSEUDO(GETRUSAGE, getrusage, 2)
- ret
-PSEUDO_END(GETRUSAGE)
-#else
-/* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-
- So now we have to do compatibility stuff. */
-
-/* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. */
-.comm __libc_missing_axp_tv64, 4
-
-LEAF(GETRUSAGE, 16)
- ldgp gp, 0(pv)
- subq sp, 16, sp
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- ldl t0, __libc_missing_axp_tv64
-
- /* Save arguments in case we do need to fall back. */
- stq a0, 0(sp)
- stq a1, 8(sp)
-
- bne t0, $do32
-
- ldi v0, SYS_ify(getrusage)
- callsys
- bne a3, $err64
-
- /* Everything ok. */
- addq sp, 16, sp
- ret
-
- /* If we didn't get ENOSYS, it is a real error. */
- .align 3
-$err64: cmpeq v0, ENOSYS, t0
- beq t0, $error
- stl t0, __libc_missing_axp_tv64
-
- /* Recover the saved arguments. */
- ldq a1, 8(sp)
- ldq a0, 0(sp)
-
- .align 3
-$do32: ldi v0, SYS_ify(osf_getrusage)
- callsys
- bne a3, $error
-
- /* Copy back to proper format. */
- ldq a1, 8(sp)
- ldl t0, 0(a1) # ru_utime.tv_sec
- ldl t1, 4(a1) # ru_utime.tv_usec
- ldl t2, 8(a1) # ru_stime.tv_sec
- ldl t3, 12(a1) # ru_stime.tv_usec
- ldt $f15, 16(a1) # ru_maxrss
- ldt $f16, 24(a1) # ru_ixrss
- ldt $f17, 32(a1) # ru_idrss
- ldt $f18, 40(a1) # ru_isrss
- ldt $f19, 48(a1) # ru_minflt
- ldt $f20, 56(a1) # ru_majflt
- ldt $f21, 64(a1) # ru_nswap
- ldt $f22, 72(a1) # ru_inblock
- ldt $f23, 80(a1) # ru_oublock
- ldt $f24, 88(a1) # ru_msgsend
- ldt $f25, 96(a1) # ru_msgrcv
- ldt $f26, 104(a1) # ru_nsignals
- ldt $f27, 112(a1) # ru_nvcsw
- .set noat
- ldt $f28, 120(a1) # ru_nivcsw
- .set at
- stq t0, 0(a1)
- stq t1, 8(a1)
- stq t2, 16(a1)
- stq t3, 24(a1)
- stt $f15, 32(a1)
- stt $f16, 40(a1)
- stt $f17, 48(a1)
- stt $f18, 56(a1)
- stt $f19, 64(a1)
- stt $f20, 72(a1)
- stt $f21, 80(a1)
- stt $f22, 88(a1)
- stt $f23, 96(a1)
- stt $f24, 104(a1)
- stt $f25, 112(a1)
- stt $f26, 120(a1)
- stt $f27, 128(a1)
- .set noat
- stt $f28, 136(a1)
- .set at
-
- addq sp, 16, sp
- ret
-
- .align 3
-$error:
- addq sp, 16, sp
- SYSCALL_ERROR_HANDLER
-
-END(GETRUSAGE)
-#endif /* __ASSUME_TIMEVAL64 */
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-strong_alias(__getrusage_tv64, ____getrusage_tv64)
-default_symbol_version (____getrusage_tv64, __getrusage, GLIBC_2.1)
-default_symbol_version (__getrusage_tv64, getrusage, GLIBC_2.1)
-#else
-weak_alias (__getrusage, getrusage)
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/getsysstats.c b/sysdeps/unix/sysv/linux/alpha/getsysstats.c
deleted file mode 100644
index 0e49a84526..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/getsysstats.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Determine various system internal values, Linux/Alpha version.
- Copyright (C) 1999 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Schwab <schwab@suse.de>
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-
-/* We need to define a special parser for /proc/cpuinfo. */
-#define GET_NPROCS_PARSER(FP, BUFFER, RESULT) \
- do \
- { \
- /* Find the line that contains the information about the number of \
- active cpus. We don't have to fear extremely long lines since \
- the kernel will not generate them. 8192 bytes are really enough. \
- If there is no "CPUs ..." line then we are on a UP system. */ \
- (RESULT) = 1; \
- while (fgets_unlocked (BUFFER, sizeof (BUFFER), FP) != NULL) \
- if ((sscanf (BUFFER, "cpus active : %d", &(RESULT)) == 1) \
- || (sscanf (BUFFER, "CPUs probed %*d active %d", \
- &(RESULT)) == 1)) \
- break; \
- } \
- while (0)
-
-
-/* On the Alpha we can distinguish between the number of configured and
- active cpus. */
-#define GET_NPROCS_CONF_PARSER(FP, BUFFER, RESULT) \
- do \
- { \
- /* Find the line that contains the information about the number of \
- probed cpus. We don't have to fear extremely long lines since \
- the kernel will not generate them. 8192 bytes are really enough. \
- If there is no "CPUs ..." line then we are on a UP system. */ \
- (RESULT) = 1; \
- while (fgets_unlocked ((BUFFER), sizeof (BUFFER), (FP)) != NULL) \
- if ((sscanf (buffer, "cpus detected : %d", &(RESULT)) == 1) \
- || (sscanf (buffer, "CPUs probed %d", &(RESULT)) == 1)) \
- break; \
- } \
- while (0)
-
-#include <sysdeps/unix/sysv/linux/getsysstats.c>
diff --git a/sysdeps/unix/sysv/linux/alpha/gettimeofday.S b/sysdeps/unix/sysv/linux/alpha/gettimeofday.S
deleted file mode 100644
index 7c9183a4fe..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/gettimeofday.S
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright (C) 1998, 2002, 2003, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#define _ERRNO_H 1
-#include <bits/errno.h>
-#include <kernel-features.h>
-
-.text
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-#define GETTIMEOFDAY __gettimeofday_tv64
-#else
-#define GETTIMEOFDAY __gettimeofday
-#endif
-
-#if defined __ASSUME_TIMEVAL64
-PSEUDO(GETTIMEOFDAY, gettimeofday, 2)
- ret
-PSEUDO_END(GETTIMEOFDAY)
-#else
-
-/* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-
- So now we have to do compatibility stuff. */
-
-/* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. */
-.comm __libc_missing_axp_tv64, 4
-
-LEAF(GETTIMEOFDAY, 16)
- ldgp gp, 0(pv)
- subq sp, 16, sp
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- ldl t0, __libc_missing_axp_tv64
-
- /* Save arguments in case we do need to fall back. */
- stq a0, 0(sp)
- stq a1, 8(sp)
-
- bne t0, $do32
-
- ldi v0, SYS_ify(gettimeofday)
- callsys
- bne a3, $err64
-
- /* Everything ok. */
- addq sp, 16, sp
- ret
-
- /* If we didn't get ENOSYS, it is a real error. */
- .align 3
-$err64: cmpeq v0, ENOSYS, t0
- beq t0, $error
- stl t0, __libc_missing_axp_tv64
-
- /* Recover the saved arguments. */
- ldq a1, 8(sp)
- ldq a0, 0(sp)
-
- .align 3
-$do32: ldi v0, SYS_ify(osf_gettimeofday)
- callsys
- bne a3, $error
-
- /* Copy back to proper format. */
- ldq a0, 0(sp)
- beq a0, 2f
- ldl t0, 0(a0)
- ldl t1, 4(a0)
- stq t0, 0(a0)
- stq t1, 8(a0)
-
-2: addq sp, 16, sp
- ret
-
- .align 3
-$error:
- addq sp, 16, sp
- SYSCALL_ERROR_HANDLER
-
-END(GETTIMEOFDAY)
-#endif /* __ASSUME_TIMEVAL64 */
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-default_symbol_version (__gettimeofday_tv64, __gettimeofday, GLIBC_2.1)
-
-/* It seems to me to be a misfeature of the assembler that we can only
- have one version-alias per symbol. So create an alias ourselves.
- The 'p' is for 'public'. *Shrug* */
-strong_alias (__gettimeofday_tv64, __gettimeofday_tv64p)
-default_symbol_version (__gettimeofday_tv64p, gettimeofday, GLIBC_2.1)
-#else
-weak_alias (__gettimeofday, gettimeofday)
-#endif
-strong_alias(GETTIMEOFDAY, __gettimeofday_internal)
diff --git a/sysdeps/unix/sysv/linux/alpha/glob.c b/sysdeps/unix/sysv/linux/alpha/glob.c
deleted file mode 100644
index 84573899d6..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/glob.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (C) 1998, 2000, 2002, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define glob64 __no_glob64_decl
-#define globfree64 __no_globfree64_decl
-
-#include <sys/types.h>
-#include <glob.h>
-#include <shlib-compat.h>
-
-/* For Linux/Alpha we have to make the glob symbols versioned. */
-#define glob(pattern, flags, errfunc, pglob) \
- __new_glob (pattern, flags, errfunc, pglob)
-#define globfree(pglob) \
- __new_globfree (pglob)
-
-/* We need prototypes for these new names. */
-extern int __new_glob (const char *__pattern, int __flags,
- int (*__errfunc) (const char *, int),
- glob_t *__pglob);
-extern void __new_globfree (glob_t *__pglob);
-
-#include <posix/glob.c>
-
-#undef glob
-#undef globfree
-#undef glob64
-#undef globfree64
-
-versioned_symbol (libc, __new_glob, glob, GLIBC_2_1);
-versioned_symbol (libc, __new_globfree, globfree, GLIBC_2_1);
-libc_hidden_ver (__new_glob, glob)
-libc_hidden_ver (__new_globfree, globfree)
-
-weak_alias (__new_glob, glob64)
-weak_alias (__new_globfree, globfree64)
-libc_hidden_ver (__new_globfree, globfree64)
diff --git a/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S b/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S
deleted file mode 100644
index 4779f175e5..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright (C) 1993, 1995, 1996, 2003, 2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger <davidm@azstarnet.com>, 1995.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#include "kernel_sysinfo.h"
-
-
- .text
-
-LEAF(__ieee_get_fp_control, 16)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda sp, -16(sp)
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
- .prologue 1
-#elif defined PIC
- lda sp, -16(sp)
- .prologue 0
-#else
- ldgp gp, 0(pv)
- lda sp, -16(sp)
- .prologue 1
-#endif
-
- mov sp, a1
- ldi a0, GSI_IEEE_FP_CONTROL
- ldi v0, __NR_osf_getsysinfo
- call_pal PAL_callsys
- bne a3, $error
-
- ldq v0, 0(sp)
- lda sp, 16(sp)
- ret
-
-$error:
- lda sp, 16(sp)
- SYSCALL_ERROR_HANDLER
-
- END(__ieee_get_fp_control)
-
-libc_hidden_def(__ieee_get_fp_control)
-weak_alias (__ieee_get_fp_control, ieee_get_fp_control)
diff --git a/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S b/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S
deleted file mode 100644
index a9c0891aae..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright (C) 1993, 1995, 1996, 1997, 2003, 2004
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger <davidm@azstarnet.com>, 1995.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#include "kernel_sysinfo.h"
-
-
-LEAF(__ieee_set_fp_control, 16)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda sp, -16(sp)
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
- .prologue 1
-#elif defined PIC
- lda sp, -16(sp)
- .prologue 0
-#else
- ldgp gp, 0(pv)
- lda sp, -16(sp)
- .prologue 1
-#endif
-
- stq a0, 0(sp)
- mov sp, a1
- ldi a0, SSI_IEEE_FP_CONTROL
- ldi v0, __NR_osf_setsysinfo
- call_pal PAL_callsys
-
- bne a3, $error
-
- lda sp, 16(sp)
- ret
-
-$error:
- lda sp, 16(sp)
- SYSCALL_ERROR_HANDLER
-
- END(__ieee_set_fp_control)
-
-libc_hidden_def(__ieee_set_fp_control)
-weak_alias (__ieee_set_fp_control, ieee_set_fp_control)
diff --git a/sysdeps/unix/sysv/linux/alpha/ioperm.c b/sysdeps/unix/sysv/linux/alpha/ioperm.c
deleted file mode 100644
index 32e96ec2f2..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/ioperm.c
+++ /dev/null
@@ -1,883 +0,0 @@
-/* Copyright (C) 1992, 1996-1999, 2000 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* I/O access is restricted to ISA port space (ports 0..65535).
- Modern devices hopefully are sane enough not to put any performance
- critical registers in i/o space.
-
- On the first call to ioperm, the entire (E)ISA port space is mapped
- into the virtual address space at address io.base. mprotect calls
- are then used to enable/disable access to ports. Per page, there
- are PAGE_SIZE>>IO_SHIFT I/O ports (e.g., 256 ports on a Low Cost Alpha
- based system using 8KB pages).
-
- Keep in mind that this code should be able to run in a 32bit address
- space. It is therefore unreasonable to expect mmap'ing the entire
- sparse address space would work (e.g., the Low Cost Alpha chip has an
- I/O address space that's 512MB large!). */
-
-/* Make sure the ldbu/stb asms below are not expaneded to macros. */
-#ifndef __alpha_bwx__
-asm(".arch ev56");
-#endif
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <sys/io.h>
-
-#include <sysdep.h>
-#include <sys/syscall.h>
-
-#define PATH_ALPHA_SYSTYPE "/etc/alpha_systype"
-#define PATH_CPUINFO "/proc/cpuinfo"
-
-#define MAX_PORT 0x10000
-#define vip volatile int *
-#define vuip volatile unsigned int *
-#define vusp volatile unsigned short *
-#define vucp volatile unsigned char *
-
-#define JENSEN_IO_BASE (0x300000000UL)
-#define JENSEN_SPARSE_MEM (0x200000000UL)
-
-/* With respect to the I/O architecture, APECS and LCA are identical,
- so the following defines apply to LCA as well. */
-#define APECS_IO_BASE (0x1c0000000UL)
-#define APECS_SPARSE_MEM (0x200000000UL)
-#define APECS_DENSE_MEM (0x300000000UL)
-
-/* The same holds for CIA and PYXIS, except for PYXIS we prefer BWX. */
-#define CIA_IO_BASE (0x8580000000UL)
-#define CIA_SPARSE_MEM (0x8000000000UL)
-#define CIA_DENSE_MEM (0x8600000000UL)
-
-#define PYXIS_IO_BASE (0x8900000000UL)
-#define PYXIS_DENSE_MEM (0x8800000000UL)
-
-/* SABLE is EV4, GAMMA is EV5 */
-#define T2_IO_BASE (0x3a0000000UL)
-#define T2_SPARSE_MEM (0x200000000UL)
-#define T2_DENSE_MEM (0x3c0000000UL)
-
-#define GAMMA_IO_BASE (0x83a0000000UL)
-#define GAMMA_SPARSE_MEM (0x8200000000UL)
-#define GAMMA_DENSE_MEM (0x83c0000000UL)
-
-/* NOTE: these are hardwired to PCI bus 0 addresses!!! */
-#define MCPCIA_IO_BASE (0xf980000000UL)
-#define MCPCIA_SPARSE_MEM (0xf800000000UL)
-#define MCPCIA_DENSE_MEM (0xf900000000UL)
-
-/* Tsunami and Irongate use the same offsets, at least for hose 0. */
-#define TSUNAMI_IO_BASE (0x801fc000000UL)
-#define TSUNAMI_DENSE_MEM (0x80000000000UL)
-
-/* Polaris has SPARSE space, but we prefer to use only DENSE
- because of some idiosyncracies in actually using SPARSE. */
-#define POLARIS_IO_BASE (0xf9fc000000UL)
-#define POLARIS_DENSE_MEM (0xf900000000UL)
-
-typedef enum {
- IOSYS_UNKNOWN, IOSYS_JENSEN, IOSYS_APECS, IOSYS_CIA, IOSYS_PYXIS, IOSYS_T2,
- IOSYS_TSUNAMI, IOSYS_MCPCIA, IOSYS_GAMMA, IOSYS_POLARIS,
- IOSYS_CPUDEP, IOSYS_PCIDEP
-} iosys_t;
-
-typedef enum {
- IOSWIZZLE_JENSEN, IOSWIZZLE_SPARSE, IOSWIZZLE_DENSE
-} ioswizzle_t;
-
-static struct io_system {
- unsigned long int bus_memory_base;
- unsigned long int sparse_bus_mem_base;
- unsigned long int bus_io_base;
-} io_system[] = { /* NOTE! must match iosys_t enumeration */
-/* UNKNOWN */ {0, 0, 0},
-/* JENSEN */ {0, JENSEN_SPARSE_MEM, JENSEN_IO_BASE},
-/* APECS */ {APECS_DENSE_MEM, APECS_SPARSE_MEM, APECS_IO_BASE},
-/* CIA */ {CIA_DENSE_MEM, CIA_SPARSE_MEM, CIA_IO_BASE},
-/* PYXIS */ {PYXIS_DENSE_MEM, 0, PYXIS_IO_BASE},
-/* T2 */ {T2_DENSE_MEM, T2_SPARSE_MEM, T2_IO_BASE},
-/* TSUNAMI */ {TSUNAMI_DENSE_MEM, 0, TSUNAMI_IO_BASE},
-/* MCPCIA */ {MCPCIA_DENSE_MEM, MCPCIA_SPARSE_MEM, MCPCIA_IO_BASE},
-/* GAMMA */ {GAMMA_DENSE_MEM, GAMMA_SPARSE_MEM, GAMMA_IO_BASE},
-/* POLARIS */ {POLARIS_DENSE_MEM, 0, POLARIS_IO_BASE},
-/* CPUDEP */ {0, 0, 0}, /* for platforms dependent on CPU type */
-/* PCIDEP */ {0, 0, 0}, /* for platforms dependent on core logic */
-};
-
-static struct platform {
- const char *name;
- iosys_t io_sys;
-} platform[] = {
- {"Alcor", IOSYS_CIA},
- {"Avanti", IOSYS_APECS},
- {"Cabriolet", IOSYS_APECS},
- {"EB164", IOSYS_PCIDEP},
- {"EB64+", IOSYS_APECS},
- {"EB66", IOSYS_APECS},
- {"EB66P", IOSYS_APECS},
- {"Jensen", IOSYS_JENSEN},
- {"Miata", IOSYS_PYXIS},
- {"Mikasa", IOSYS_CPUDEP},
- {"Nautilus", IOSYS_TSUNAMI},
- {"Noname", IOSYS_APECS},
- {"Noritake", IOSYS_CPUDEP},
- {"Rawhide", IOSYS_MCPCIA},
- {"Ruffian", IOSYS_PYXIS},
- {"Sable", IOSYS_CPUDEP},
- {"Takara", IOSYS_CIA},
- {"Tsunami", IOSYS_TSUNAMI},
- {"XL", IOSYS_APECS},
-};
-
-struct ioswtch {
- void (*sethae)(unsigned long int addr);
- void (*outb)(unsigned char b, unsigned long int port);
- void (*outw)(unsigned short b, unsigned long int port);
- void (*outl)(unsigned int b, unsigned long int port);
- unsigned int (*inb)(unsigned long int port);
- unsigned int (*inw)(unsigned long int port);
- unsigned int (*inl)(unsigned long int port);
-};
-
-static struct {
- unsigned long int hae_cache;
- unsigned long int base;
- struct ioswtch * swp;
- unsigned long int bus_memory_base;
- unsigned long int sparse_bus_memory_base;
- unsigned long int io_base;
- ioswizzle_t swiz;
-} io;
-
-static inline void
-stb_mb(unsigned char val, unsigned long addr)
-{
- __asm__("stb %1,%0; mb" : "=m"(*(vucp)addr) : "r"(val));
-}
-
-static inline void
-stw_mb(unsigned short val, unsigned long addr)
-{
- __asm__("stw %1,%0; mb" : "=m"(*(vusp)addr) : "r"(val));
-}
-
-static inline void
-stl_mb(unsigned int val, unsigned long addr)
-{
- __asm__("stl %1,%0; mb" : "=m"(*(vip)addr) : "r"(val));
-}
-
-/* No need to examine error -- sethae never fails. */
-static inline void
-__sethae(unsigned long value)
-{
- register unsigned long r16 __asm__("$16") = value;
- register unsigned long r0 __asm__("$0") = __NR_sethae;
- __asm__ __volatile__ ("callsys"
- : "=r"(r0)
- : "0"(r0), "r" (r16)
- : inline_syscall_clobbers, "$19");
-}
-
-extern long __pciconfig_iobase(enum __pciconfig_iobase_which __which,
- unsigned long int __bus,
- unsigned long int __dfn);
-
-static inline unsigned long int
-port_to_cpu_addr (unsigned long int port, ioswizzle_t ioswiz, int size)
-{
- if (ioswiz == IOSWIZZLE_SPARSE)
- return io.base + (port << 5) + ((size - 1) << 3);
- else if (ioswiz == IOSWIZZLE_DENSE)
- return port + io.base;
- else
- return io.base + (port << 7) + ((size - 1) << 5);
-}
-
-static inline void
-inline_sethae (unsigned long int addr, ioswizzle_t ioswiz)
-{
- if (ioswiz == IOSWIZZLE_SPARSE)
- {
- unsigned long int msb;
-
- /* no need to set hae if msb is 0: */
- msb = addr & 0xf8000000;
- if (msb && msb != io.hae_cache)
- {
- io.hae_cache = msb;
- __sethae (msb);
- }
- }
- else if (ioswiz == IOSWIZZLE_JENSEN)
- {
- /* HAE on the Jensen is bits 31:25 shifted right. */
- addr >>= 25;
- if (addr != io.hae_cache)
- {
- io.hae_cache = addr;
- __sethae (addr);
- }
- }
-}
-
-static inline void
-inline_outb (unsigned char b, unsigned long int port, ioswizzle_t ioswiz)
-{
- unsigned int w;
- unsigned long int addr = port_to_cpu_addr (port, ioswiz, 1);
-
- asm ("insbl %2,%1,%0" : "=r" (w) : "ri" (port & 0x3), "r" (b));
- stl_mb(w, addr);
-}
-
-
-static inline void
-inline_outw (unsigned short int b, unsigned long int port, ioswizzle_t ioswiz)
-{
- unsigned long w;
- unsigned long int addr = port_to_cpu_addr (port, ioswiz, 2);
-
- asm ("inswl %2,%1,%0" : "=r" (w) : "ri" (port & 0x3), "r" (b));
- stl_mb(w, addr);
-}
-
-
-static inline void
-inline_outl (unsigned int b, unsigned long int port, ioswizzle_t ioswiz)
-{
- unsigned long int addr = port_to_cpu_addr (port, ioswiz, 4);
-
- stl_mb(b, addr);
-}
-
-
-static inline unsigned int
-inline_inb (unsigned long int port, ioswizzle_t ioswiz)
-{
- unsigned long int addr = port_to_cpu_addr (port, ioswiz, 1);
- int result;
-
- result = *(vip) addr;
- result >>= (port & 3) * 8;
- return 0xffUL & result;
-}
-
-
-static inline unsigned int
-inline_inw (unsigned long int port, ioswizzle_t ioswiz)
-{
- unsigned long int addr = port_to_cpu_addr (port, ioswiz, 2);
- int result;
-
- result = *(vip) addr;
- result >>= (port & 3) * 8;
- return 0xffffUL & result;
-}
-
-
-static inline unsigned int
-inline_inl (unsigned long int port, ioswizzle_t ioswiz)
-{
- unsigned long int addr = port_to_cpu_addr (port, ioswiz, 4);
-
- return *(vuip) addr;
-}
-
-/*
- * Now define the inline functions for CPUs supporting byte/word insns,
- * and whose core logic supports I/O space accesses utilizing them.
- *
- * These routines could be used by MIATA, for example, because it has
- * and EV56 plus PYXIS, but it currently uses SPARSE anyway. This is
- * also true of RX164 which used POLARIS, but we will choose to use
- * these routines in that case instead of SPARSE.
- *
- * These routines are necessary for TSUNAMI/TYPHOON based platforms,
- * which will have (at least) EV6.
- */
-
-static inline unsigned long int
-dense_port_to_cpu_addr (unsigned long int port)
-{
- return port + io.base;
-}
-
-static inline void
-inline_bwx_outb (unsigned char b, unsigned long int port)
-{
- unsigned long int addr = dense_port_to_cpu_addr (port);
- stb_mb (b, addr);
-}
-
-static inline void
-inline_bwx_outw (unsigned short int b, unsigned long int port)
-{
- unsigned long int addr = dense_port_to_cpu_addr (port);
- stw_mb (b, addr);
-}
-
-static inline void
-inline_bwx_outl (unsigned int b, unsigned long int port)
-{
- unsigned long int addr = dense_port_to_cpu_addr (port);
- stl_mb (b, addr);
-}
-
-static inline unsigned int
-inline_bwx_inb (unsigned long int port)
-{
- unsigned long int addr = dense_port_to_cpu_addr (port);
- unsigned char r;
-
- __asm__ ("ldbu %0,%1" : "=r"(r) : "m"(*(vucp)addr));
- return r;
-}
-
-static inline unsigned int
-inline_bwx_inw (unsigned long int port)
-{
- unsigned long int addr = dense_port_to_cpu_addr (port);
- unsigned short r;
-
- __asm__ ("ldwu %0,%1" : "=r"(r) : "m"(*(vusp)addr));
- return r;
-}
-
-static inline unsigned int
-inline_bwx_inl (unsigned long int port)
-{
- unsigned long int addr = dense_port_to_cpu_addr (port);
-
- return *(vuip) addr;
-}
-
-/* macros to define routines with appropriate names and functions */
-
-/* these do either SPARSE or JENSEN swizzle */
-
-#define DCL_SETHAE(name, ioswiz) \
-static void \
-name##_sethae (unsigned long int addr) \
-{ \
- inline_sethae (addr, IOSWIZZLE_##ioswiz); \
-}
-
-#define DCL_OUT(name, func, type, ioswiz) \
-static void \
-name##_##func (unsigned type b, unsigned long int addr) \
-{ \
- inline_##func (b, addr, IOSWIZZLE_##ioswiz); \
-}
-
-#define DCL_IN(name, func, ioswiz) \
-static unsigned int \
-name##_##func (unsigned long int addr) \
-{ \
- return inline_##func (addr, IOSWIZZLE_##ioswiz); \
-}
-
-/* these do DENSE, so no swizzle is needed */
-
-#define DCL_OUT_BWX(name, func, type) \
-static void \
-name##_##func (unsigned type b, unsigned long int addr) \
-{ \
- inline_bwx_##func (b, addr); \
-}
-
-#define DCL_IN_BWX(name, func) \
-static unsigned int \
-name##_##func (unsigned long int addr) \
-{ \
- return inline_bwx_##func (addr); \
-}
-
-/* now declare/define the necessary routines */
-
-DCL_SETHAE(jensen, JENSEN)
-DCL_OUT(jensen, outb, char, JENSEN)
-DCL_OUT(jensen, outw, short int, JENSEN)
-DCL_OUT(jensen, outl, int, JENSEN)
-DCL_IN(jensen, inb, JENSEN)
-DCL_IN(jensen, inw, JENSEN)
-DCL_IN(jensen, inl, JENSEN)
-
-DCL_SETHAE(sparse, SPARSE)
-DCL_OUT(sparse, outb, char, SPARSE)
-DCL_OUT(sparse, outw, short int, SPARSE)
-DCL_OUT(sparse, outl, int, SPARSE)
-DCL_IN(sparse, inb, SPARSE)
-DCL_IN(sparse, inw, SPARSE)
-DCL_IN(sparse, inl, SPARSE)
-
-DCL_SETHAE(dense, DENSE)
-DCL_OUT_BWX(dense, outb, char)
-DCL_OUT_BWX(dense, outw, short int)
-DCL_OUT_BWX(dense, outl, int)
-DCL_IN_BWX(dense, inb)
-DCL_IN_BWX(dense, inw)
-DCL_IN_BWX(dense, inl)
-
-/* define the "swizzle" switch */
-static struct ioswtch ioswtch[] = {
- {
- jensen_sethae,
- jensen_outb, jensen_outw, jensen_outl,
- jensen_inb, jensen_inw, jensen_inl
- },
- {
- sparse_sethae,
- sparse_outb, sparse_outw, sparse_outl,
- sparse_inb, sparse_inw, sparse_inl
- },
- {
- dense_sethae,
- dense_outb, dense_outw, dense_outl,
- dense_inb, dense_inw, dense_inl
- }
-};
-
-#undef DEBUG_IOPERM
-
-/* Routine to process the /proc/cpuinfo information into the fields
- that are required for correctly determining the platform parameters. */
-
-struct cpuinfo_data
-{
- char systype[256]; /* system type field */
- char sysvari[256]; /* system variation field */
- char cpumodel[256]; /* cpu model field */
-};
-
-static inline int
-process_cpuinfo(struct cpuinfo_data *data)
-{
- int got_type, got_vari, got_model;
- char dummy[256];
- FILE * fp;
- int n;
-
- data->systype[0] = 0;
- data->sysvari[0] = 0;
- data->cpumodel[0] = 0;
-
- /* If there's an /etc/alpha_systype link, we're intending to override
- whatever's in /proc/cpuinfo. */
- n = __readlink (PATH_ALPHA_SYSTYPE, data->systype, 256 - 1);
- if (n > 0)
- {
- data->systype[n] = '\0';
- return 1;
- }
-
- fp = fopen (PATH_CPUINFO, "r");
- if (!fp)
- return 0;
-
- got_type = got_vari = got_model = 0;
-
- while (1)
- {
- if (fgets (dummy, 256, fp) == NULL)
- break;
- if (!got_type &&
- sscanf (dummy, "system type : %256[^\n]\n", data->systype) == 1)
- got_type = 1;
- if (!got_vari &&
- sscanf (dummy, "system variation : %256[^\n]\n", data->sysvari) == 1)
- got_vari = 1;
- if (!got_model &&
- sscanf (dummy, "cpu model : %256[^\n]\n", data->cpumodel) == 1)
- got_model = 1;
- }
-
- fclose (fp);
-
-#ifdef DEBUG_IOPERM
- fprintf(stderr, "system type: `%s'\n", data->systype);
- fprintf(stderr, "system vari: `%s'\n", data->sysvari);
- fprintf(stderr, "cpu model: `%s'\n", data->cpumodel);
-#endif
-
- return got_type + got_vari + got_model;
-}
-
-
-/*
- * Initialize I/O system.
- */
-static int
-init_iosys (void)
-{
- long addr;
- int i, olderrno = errno;
- struct cpuinfo_data data;
-
- /* First try the pciconfig_iobase syscall added to 2.2.15 and 2.3.99. */
-
-#ifdef __NR_pciconfig_iobase
- addr = __pciconfig_iobase (IOBASE_DENSE_MEM, 0, 0);
- if (addr != -1)
- {
- ioswizzle_t io_swiz;
-
- if (addr == 0)
- {
- /* Only Jensen doesn't have dense mem space. */
- io.sparse_bus_memory_base
- = io_system[IOSYS_JENSEN].sparse_bus_mem_base;
- io.io_base = io_system[IOSYS_JENSEN].bus_io_base;
- io_swiz = IOSWIZZLE_JENSEN;
- }
- else
- {
- io.bus_memory_base = addr;
-
- addr = __pciconfig_iobase (IOBASE_DENSE_IO, 0, 0);
- if (addr != 0)
- {
- /* The X server uses _bus_base_sparse == 0 to know that
- BWX access are supported to dense mem space. This is
- true of every system that supports dense io space, so
- never fill in io.sparse_bus_memory_base in this case. */
- io_swiz = IOSWIZZLE_DENSE;
- io.io_base = addr;
- }
- else
- {
- io.sparse_bus_memory_base
- = __pciconfig_iobase (IOBASE_SPARSE_MEM, 0, 0);
- io.io_base = __pciconfig_iobase (IOBASE_SPARSE_IO, 0, 0);
- io_swiz = IOSWIZZLE_SPARSE;
- }
- }
-
- io.swiz = io_swiz;
- io.swp = &ioswtch[io_swiz];
-
- return 0;
- }
-#endif
-
- /* Second, collect the contents of /etc/alpha_systype or /proc/cpuinfo. */
-
- if (process_cpuinfo(&data) == 0)
- {
- /* This can happen if the format of /proc/cpuinfo changes. */
- fprintf (stderr,
- "ioperm.init_iosys: Unable to determine system type.\n"
- "\t(May need " PATH_ALPHA_SYSTYPE " symlink?)\n");
- __set_errno (ENODEV);
- return -1;
- }
-
- /* Translate systype name into i/o system. */
- for (i = 0; i < sizeof (platform) / sizeof (platform[0]); ++i)
- {
- if (strcmp (platform[i].name, data.systype) == 0)
- {
- iosys_t io_sys = platform[i].io_sys;
-
- /* Some platforms can have either EV4 or EV5 CPUs. */
- if (io_sys == IOSYS_CPUDEP)
- {
- /* SABLE or MIKASA or NORITAKE so far. */
- if (strcmp (platform[i].name, "Sable") == 0)
- {
- if (strncmp (data.cpumodel, "EV4", 3) == 0)
- io_sys = IOSYS_T2;
- else if (strncmp (data.cpumodel, "EV5", 3) == 0)
- io_sys = IOSYS_GAMMA;
- }
- else
- {
- /* This covers MIKASA/NORITAKE. */
- if (strncmp (data.cpumodel, "EV4", 3) == 0)
- io_sys = IOSYS_APECS;
- else if (strncmp (data.cpumodel, "EV5", 3) == 0)
- io_sys = IOSYS_CIA;
- }
- if (io_sys == IOSYS_CPUDEP)
- {
- /* This can happen if the format of /proc/cpuinfo changes.*/
- fprintf (stderr, "ioperm.init_iosys: Unable to determine"
- " CPU model.\n");
- __set_errno (ENODEV);
- return -1;
- }
- }
- /* Some platforms can have different core logic chipsets */
- if (io_sys == IOSYS_PCIDEP)
- {
- /* EB164 so far */
- if (strcmp (data.systype, "EB164") == 0)
- {
- if (strncmp (data.sysvari, "RX164", 5) == 0)
- io_sys = IOSYS_POLARIS;
- else if (strncmp (data.sysvari, "LX164", 5) == 0
- || strncmp (data.sysvari, "SX164", 5) == 0)
- io_sys = IOSYS_PYXIS;
- else
- io_sys = IOSYS_CIA;
- }
- if (io_sys == IOSYS_PCIDEP)
- {
- /* This can happen if the format of /proc/cpuinfo changes.*/
- fprintf (stderr, "ioperm.init_iosys: Unable to determine"
- " core logic chipset.\n");
- __set_errno (ENODEV);
- return -1;
- }
- }
- io.bus_memory_base = io_system[io_sys].bus_memory_base;
- io.sparse_bus_memory_base = io_system[io_sys].sparse_bus_mem_base;
- io.io_base = io_system[io_sys].bus_io_base;
-
- if (io_sys == IOSYS_JENSEN)
- io.swiz = IOSWIZZLE_JENSEN;
- else if (io_sys == IOSYS_TSUNAMI
- || io_sys == IOSYS_POLARIS
- || io_sys == IOSYS_PYXIS)
- io.swiz = IOSWIZZLE_DENSE;
- else
- io.swiz = IOSWIZZLE_SPARSE;
- io.swp = &ioswtch[io.swiz];
-
- __set_errno (olderrno);
- return 0;
- }
- }
-
- __set_errno (ENODEV);
- fprintf(stderr, "ioperm.init_iosys: Platform not recognized.\n"
- "\t(May need " PATH_ALPHA_SYSTYPE " symlink?)\n");
- return -1;
-}
-
-
-int
-_ioperm (unsigned long int from, unsigned long int num, int turn_on)
-{
- unsigned long int addr, len, pagesize = __getpagesize();
- int prot;
-
- if (!io.swp && init_iosys() < 0)
- {
-#ifdef DEBUG_IOPERM
- fprintf(stderr, "ioperm: init_iosys() failed (%m)\n");
-#endif
- return -1;
- }
-
- /* This test isn't as silly as it may look like; consider overflows! */
- if (from >= MAX_PORT || from + num > MAX_PORT)
- {
- __set_errno (EINVAL);
-#ifdef DEBUG_IOPERM
- fprintf(stderr, "ioperm: from/num out of range\n");
-#endif
- return -1;
- }
-
-#ifdef DEBUG_IOPERM
- fprintf(stderr, "ioperm: turn_on %d io.base %ld\n", turn_on, io.base);
-#endif
-
- if (turn_on)
- {
- if (!io.base)
- {
- int fd;
-
- io.hae_cache = 0;
- if (io.swiz != IOSWIZZLE_DENSE)
- {
- /* Synchronize with hw. */
- __sethae (0);
- }
-
- fd = __open ("/dev/mem", O_RDWR);
- if (fd < 0)
- {
-#ifdef DEBUG_IOPERM
- fprintf(stderr, "ioperm: /dev/mem open failed (%m)\n");
-#endif
- return -1;
- }
-
- addr = port_to_cpu_addr (0, io.swiz, 1);
- len = port_to_cpu_addr (MAX_PORT, io.swiz, 1) - addr;
- io.base =
- (unsigned long int) __mmap (0, len, PROT_NONE, MAP_SHARED,
- fd, io.io_base);
- __close (fd);
-#ifdef DEBUG_IOPERM
- fprintf(stderr, "ioperm: mmap of len 0x%lx returned 0x%lx\n",
- len, io.base);
-#endif
- if ((long) io.base == -1)
- return -1;
- }
- prot = PROT_READ | PROT_WRITE;
- }
- else
- {
- if (!io.base)
- return 0; /* never was turned on... */
-
- /* turnoff access to relevant pages: */
- prot = PROT_NONE;
- }
- addr = port_to_cpu_addr (from, io.swiz, 1);
- addr &= ~(pagesize - 1);
- len = port_to_cpu_addr (from + num, io.swiz, 1) - addr;
- return __mprotect ((void *) addr, len, prot);
-}
-
-
-int
-_iopl (int level)
-{
- switch (level)
- {
- case 0:
- return 0;
-
- case 1: case 2: case 3:
- return _ioperm (0, MAX_PORT, 1);
-
- default:
- __set_errno (EINVAL);
- return -1;
- }
-}
-
-
-void
-_sethae (unsigned long int addr)
-{
- if (!io.swp && init_iosys () < 0)
- return;
-
- io.swp->sethae (addr);
-}
-
-
-void
-_outb (unsigned char b, unsigned long int port)
-{
- if (port >= MAX_PORT)
- return;
-
- io.swp->outb (b, port);
-}
-
-
-void
-_outw (unsigned short b, unsigned long int port)
-{
- if (port >= MAX_PORT)
- return;
-
- io.swp->outw (b, port);
-}
-
-
-void
-_outl (unsigned int b, unsigned long int port)
-{
- if (port >= MAX_PORT)
- return;
-
- io.swp->outl (b, port);
-}
-
-
-unsigned int
-_inb (unsigned long int port)
-{
- return io.swp->inb (port);
-}
-
-
-unsigned int
-_inw (unsigned long int port)
-{
- return io.swp->inw (port);
-}
-
-
-unsigned int
-_inl (unsigned long int port)
-{
- return io.swp->inl (port);
-}
-
-
-unsigned long int
-_bus_base(void)
-{
- if (!io.swp && init_iosys () < 0)
- return -1;
- return io.bus_memory_base;
-}
-
-unsigned long int
-_bus_base_sparse(void)
-{
- if (!io.swp && init_iosys () < 0)
- return -1;
- return io.sparse_bus_memory_base;
-}
-
-int
-_hae_shift(void)
-{
- if (!io.swp && init_iosys () < 0)
- return -1;
- if (io.swiz == IOSWIZZLE_JENSEN)
- return 7;
- if (io.swiz == IOSWIZZLE_SPARSE)
- return 5;
- return 0;
-}
-
-weak_alias (_sethae, sethae);
-weak_alias (_ioperm, ioperm);
-weak_alias (_iopl, iopl);
-weak_alias (_inb, inb);
-weak_alias (_inw, inw);
-weak_alias (_inl, inl);
-weak_alias (_outb, outb);
-weak_alias (_outw, outw);
-weak_alias (_outl, outl);
-weak_alias (_bus_base, bus_base);
-weak_alias (_bus_base_sparse, bus_base_sparse);
-weak_alias (_hae_shift, hae_shift);
diff --git a/sysdeps/unix/sysv/linux/alpha/ipc_priv.h b/sysdeps/unix/sysv/linux/alpha/ipc_priv.h
deleted file mode 100644
index 0328dc08e2..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/ipc_priv.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright (C) 1995-1999, 2000, 2003 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sys/ipc.h>
-
-#define __IPC_64 0x100
-
-struct __old_ipc_perm
-{
- __key_t __key; /* Key. */
- unsigned int uid; /* Owner's user ID. */
- unsigned int gid; /* Owner's group ID. */
- unsigned int cuid; /* Creator's user ID. */
- unsigned int cgid; /* Creator's group ID. */
- unsigned int mode; /* Read/write permission. */
- unsigned short int __seq; /* Sequence number. */
-};
-
-
-/* The codes for the functions to use the ipc syscall multiplexer. */
-#define IPCOP_semop 1
-#define IPCOP_semget 2
-#define IPCOP_semctl 3
-#define IPCOP_semtimedop 4
-#define IPCOP_msgsnd 11
-#define IPCOP_msgrcv 12
-#define IPCOP_msgget 13
-#define IPCOP_msgctl 14
-#define IPCOP_shmat 21
-#define IPCOP_shmdt 22
-#define IPCOP_shmget 23
-#define IPCOP_shmctl 24
diff --git a/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h b/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h
deleted file mode 100644
index 4c35d969cf..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* This is the sigaction struction from the Linux 2.1.20 kernel. */
-
-struct old_kernel_sigaction {
- __sighandler_t k_sa_handler;
- unsigned long sa_mask;
- unsigned int sa_flags;
-};
-
-/* This is the sigaction structure from the Linux 2.1.68 kernel. */
-
-struct kernel_sigaction {
- __sighandler_t k_sa_handler;
- unsigned int sa_flags;
- sigset_t sa_mask;
-};
diff --git a/sysdeps/unix/sysv/linux/alpha/kernel_stat.h b/sysdeps/unix/sysv/linux/alpha/kernel_stat.h
deleted file mode 100644
index a1d012ab01..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/kernel_stat.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Definition of `struct stat' used in the kernel. */
-struct kernel_stat
- {
- unsigned int st_dev;
- unsigned int st_ino;
- unsigned int st_mode;
- unsigned int st_nlink;
- unsigned int st_uid;
- unsigned int st_gid;
- unsigned int st_rdev;
- long int st_size;
- unsigned long int st_atime;
- unsigned long int st_mtime;
- unsigned long int st_ctime;
- unsigned int st_blksize;
- int st_blocks;
- unsigned int st_flags;
- unsigned int st_gen;
- };
-
-/* Definition of `struct stat64' used in the kernel. */
-struct kernel_stat64
- {
- unsigned long st_dev;
- unsigned long st_ino;
- unsigned long st_rdev;
- long st_size;
- unsigned long st_blocks;
-
- unsigned int st_mode;
- unsigned int st_uid;
- unsigned int st_gid;
- unsigned int st_blksize;
- unsigned int st_nlink;
- unsigned int __pad0;
-
- unsigned long st_atime;
- unsigned long st_atimensec;
- unsigned long st_mtime;
- unsigned long st_mtimensec;
- unsigned long st_ctime;
- unsigned long st_ctimensec;
- long __unused[3];
- };
-
-/* Definition of `struct stat' used by glibc 2.0. */
-struct glibc2_stat
- {
- __dev_t st_dev;
- __ino_t st_ino;
- __mode_t st_mode;
- __nlink_t st_nlink;
- __uid_t st_uid;
- __gid_t st_gid;
- __dev_t st_rdev;
- __off_t st_size;
- __time_t st_atime;
- __time_t st_mtime;
- __time_t st_ctime;
- unsigned int st_blksize;
- int st_blocks;
- unsigned int st_flags;
- unsigned int st_gen;
- };
-
-/* Definition of `struct stat' used by glibc 2.1. */
-struct glibc21_stat
- {
- __dev_t st_dev;
- __ino64_t st_ino;
- __mode_t st_mode;
- __nlink_t st_nlink;
- __uid_t st_uid;
- __gid_t st_gid;
- __dev_t st_rdev;
- __off_t st_size;
- __time_t st_atime;
- __time_t st_mtime;
- __time_t st_ctime;
- __blkcnt64_t st_blocks;
- __blksize_t st_blksize;
- unsigned int st_flags;
- unsigned int st_gen;
- int __pad3;
- long __unused[4];
- };
-
-#define XSTAT_IS_XSTAT64 1
diff --git a/sysdeps/unix/sysv/linux/alpha/kernel_sysinfo.h b/sysdeps/unix/sysv/linux/alpha/kernel_sysinfo.h
deleted file mode 100644
index a3edec2269..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/kernel_sysinfo.h
+++ /dev/null
@@ -1,6 +0,0 @@
-/* A copy of the couple of bits we need from <asm/sysinfo.h>. */
-
-#define GSI_IEEE_FP_CONTROL 45
-
-#define SSI_IEEE_FP_CONTROL 14
-#define SSI_IEEE_RAISE_EXCEPTION 1001
diff --git a/sysdeps/unix/sysv/linux/alpha/kernel_termios.h b/sysdeps/unix/sysv/linux/alpha/kernel_termios.h
deleted file mode 100644
index c38f1fac1a..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/kernel_termios.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright (C) 1997 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _KERNEL_TERMIOS_H
-#define _KERNEL_TERMIOS_H 1
-
-/* The following corresponds to the values from the Linux 2.1.20 kernel. */
-
-/* We need the definition of tcflag_t, cc_t, and speed_t. */
-#include <termios.h>
-
-#define __KERNEL_NCCS 19
-
-struct __kernel_termios
- {
- tcflag_t c_iflag; /* input mode flags */
- tcflag_t c_oflag; /* output mode flags */
- tcflag_t c_cflag; /* control mode flags */
- tcflag_t c_lflag; /* local mode flags */
- cc_t c_cc[__KERNEL_NCCS]; /* control characters */
- cc_t c_line; /* line discipline */
- speed_t c_ispeed; /* input speed */
- speed_t c_ospeed; /* output speed */
- };
-
-#define _HAVE_C_ISPEED 1
-#define _HAVE_C_OSPEED 1
-
-#endif /* kernel_termios.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/lxstat.c b/sysdeps/unix/sysv/linux/alpha/lxstat.c
deleted file mode 100644
index 38fac2e2b2..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/lxstat.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* lxstat using old-style Unix stat system call.
- Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __lxstat64 __lxstat64_disable
-
-#include <errno.h>
-#include <stddef.h>
-#include <sys/stat.h>
-#include <kernel_stat.h>
-#include <sysdep.h>
-#include <sys/syscall.h>
-#include <xstatconv.h>
-
-#undef __lxstat64
-
-
-/* Get information about the file NAME in BUF. */
-int
-__lxstat (int vers, const char *name, struct stat *buf)
-{
- INTERNAL_SYSCALL_DECL (err);
- int result, errno_out;
- struct kernel_stat kbuf;
-
- if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
- {
- result = INTERNAL_SYSCALL (lstat64, err, 2, name, buf);
- if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
- return result;
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
- if (errno_out != ENOSYS)
- goto fail;
- __libc_missing_axp_stat64 = 1;
- }
-
- result = INTERNAL_SYSCALL (lstat, err, 2, name, &kbuf);
- if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
- return __xstat_conv (vers, &kbuf, buf);
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
-
- fail:
- __set_errno (errno_out);
- return -1;
-}
-hidden_def (__lxstat)
-weak_alias (__lxstat, _lxstat);
-strong_alias (__lxstat, __lxstat64);
-hidden_ver (__lxstat, __lxstat64)
diff --git a/sysdeps/unix/sysv/linux/alpha/makecontext.S b/sysdeps/unix/sysv/linux/alpha/makecontext.S
deleted file mode 100644
index 223117e26d..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/makecontext.S
+++ /dev/null
@@ -1,164 +0,0 @@
-/* Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#include <ucontext-offsets.h>
-
-
-ENTRY(__makecontext)
- ldgp $29, 0($27)
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- /* Compute top of stack, including arguments. */
- ldq $1, UC_STACK+SS_SP($16)
- ldq $2, UC_STACK+SS_SIZE($16)
- addq $1, $2, $8
- subq $18, 6, $1
- cmovlt $1, 0, $1
- s8addq $1, 0, $2
- subq $8, $2, $8
-
- /* Copy all parameters. Switch statement header here. */
- ldah $3, $jumptable($29) !gprelhigh
- cmple $18, 6, $1
- mov $18, $2
- cmoveq $1, 7, $2
- s4addq $2, $3, $3
- ldl $4, $jumptable($3) !gprellow
- addq $4, $29, $4
- jmp $31, ($4), $args1
-
- .section .rodata
- .align 2
-$jumptable:
- .gprel32 $args0
- .gprel32 $args1
- .gprel32 $args2
- .gprel32 $args3
- .gprel32 $args4
- .gprel32 $args5
- .gprel32 $args6
- .gprel32 $argsN
- .text
-
- /* Here we process arguments 7 through N. This is a straight
- stack-to-stack copy. */
- .align 4
-$argsN:
- subq $18, 6, $1
- lda $2, 0($8)
- lda $3, 3*8($30)
- .align 4
-1:
- ldq $0, 0($3)
- subq $1, 1, $1
- lda $3, 8($3)
- stq $0, 0($2)
- lda $2, 8($2)
- bne $1, 1b
-
- /* Here we process arguments 6 through 0. This involves
- copying into the register save areas of the ucontext. */
- .align 4
-$args6:
- ldq $0, 2*8($30)
- stq $0, UC_SIGCTX+SC_REGS+21*8($16)
- unop
- stq $0, UC_SIGCTX+SC_FPREGS+21*8($16)
-$args5:
- ldq $0, 1*8($30)
- stq $0, UC_SIGCTX+SC_REGS+20*8($16)
- unop
- stq $0, UC_SIGCTX+SC_FPREGS+20*8($16)
-$args4:
- ldq $0, 0*8($30)
- stq $0, UC_SIGCTX+SC_REGS+19*8($16)
- unop
- stq $0, UC_SIGCTX+SC_FPREGS+19*8($16)
-$args3:
- unop
- stq $21, UC_SIGCTX+SC_REGS+18*8($16)
- unop
- stt $f21, UC_SIGCTX+SC_FPREGS+18*8($16)
-$args2:
- unop
- stq $20, UC_SIGCTX+SC_REGS+17*8($16)
- unop
- stt $f20, UC_SIGCTX+SC_FPREGS+17*8($16)
-$args1:
- unop
- stq $19, UC_SIGCTX+SC_REGS+16*8($16)
- unop
- stt $f19, UC_SIGCTX+SC_FPREGS+16*8($16)
-$args0:
-
- /* Set up the registers ready to invoke __startcontext.
- We seed $27 with the target function address, and $9
- with the link from ucp. */
- ldah $0, __startcontext($29) !gprelhigh
- ldq $1, UC_LINK($16)
- lda $0, __startcontext($0) !gprellow
- stq $17, UC_SIGCTX+SC_REGS+27*8($16)
- stq $8, UC_SIGCTX+SC_REGS+30*8($16)
- stq $0, UC_SIGCTX+SC_PC($16)
- stq $1, UC_SIGCTX+SC_REGS+9*8($16)
-
- /* No return value from makecontext. */
- ret
-
-END(__makecontext)
-weak_alias (__makecontext, makecontext)
-
-/* This function is where a new makecontext "thread" begins life.
- We have already set up $27 for calling the target function, and
- we've set $9 to the UC_LINK of the parent context.
-
- If the function returns, we either jump to the linked context
- (if non-null) or exit. */
-
- .align 4
- .ent __startcontext
-__startcontext:
- .frame $31, 0, $31, 0
- .prologue 0
-
- jsr $26, ($27), 0
- ldgp $29, 0($26)
- mov $9, $16
- beq $9, 1f
-
-#ifdef PIC
- bsr $26, __setcontext !samegp
-1: mov $31, $16
- bsr $26, HIDDEN_JUMPTARGET(exit) !samegp
-#else
- jsr $26, __setcontext
- ldgp $29, 0($26)
-1: mov $31, $16
- jsr $26, HIDDEN_JUMPTARGET(exit)
-#endif
-
- halt
-
- .end __startcontext
diff --git a/sysdeps/unix/sysv/linux/alpha/msgctl.c b/sysdeps/unix/sysv/linux/alpha/msgctl.c
deleted file mode 100644
index a59911fe40..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/msgctl.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/* Copyright (C) 1995,1997,1998,2000,2003,2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <sys/msg.h>
-#include <ipc_priv.h>
-
-#include <sysdep.h>
-#include <string.h>
-#include <sys/syscall.h>
-#include <bp-checks.h>
-
-#include <kernel-features.h>
-
-struct __old_msqid_ds
-{
- struct __old_ipc_perm msg_perm; /* structure describing operation permission */
- struct msg *__unbounded __msg_first; /* pointer to first message on queue */
- struct msg *__unbounded __msg_last; /* pointer to last message on queue */
- __time_t msg_stime; /* time of last msgsnd command */
- __time_t msg_rtime; /* time of last msgrcv command */
- __time_t msg_ctime; /* time of last change */
- struct wait_queue *__unbounded __wwait; /* ??? */
- struct wait_queue *__unbounded __rwait; /* ??? */
- unsigned short int __msg_cbytes; /* current number of bytes on queue */
- unsigned short int msg_qnum; /* number of messages currently on queue */
- unsigned short int msg_qbytes; /* max number of bytes allowed on queue */
- __ipc_pid_t msg_lspid; /* pid of last msgsnd() */
- __ipc_pid_t msg_lrpid; /* pid of last msgrcv() */
-};
-
-/* Allows to control internal state and destruction of message queue
- objects. */
-int __new_msgctl (int, int, struct msqid_ds *);
-
-int
-__new_msgctl (int msqid, int cmd, struct msqid_ds *buf)
-{
- /* This is a misnomer -- Alpha had 32-bit uids at the beginning
- of time. However, msg_qnum and msg_qbytes changed size at
- the same time the size of uid changed elsewhere. */
-#if __ASSUME_32BITUIDS > 0
- return INLINE_SYSCALL (msgctl, 3, msqid, cmd | __IPC_64, CHECK_1 (buf));
-#else
- switch (cmd) {
- case MSG_STAT:
- case IPC_STAT:
- case IPC_SET:
- break;
- default:
- return INLINE_SYSCALL (msgctl, 3, msqid, cmd, CHECK_1 (buf));
- }
-
- {
- int save_errno = errno, result;
- struct __old_msqid_ds old;
-
- /* Unfortunately there is no way how to find out for sure whether
- we should use old or new msgctl. */
- result = INLINE_SYSCALL (msgctl, 3, msqid, cmd | __IPC_64, CHECK_1 (buf));
- if (result != -1 || errno != EINVAL)
- return result;
-
- __set_errno(save_errno);
- if (cmd == IPC_SET)
- {
- old.msg_perm.uid = buf->msg_perm.uid;
- old.msg_perm.gid = buf->msg_perm.gid;
- old.msg_perm.mode = buf->msg_perm.mode;
- old.msg_qbytes = buf->msg_qbytes;
- if (old.msg_perm.uid != buf->msg_perm.uid ||
- old.msg_perm.gid != buf->msg_perm.gid ||
- old.msg_qbytes != buf->msg_qbytes)
- {
- __set_errno (EINVAL);
- return -1;
- }
- }
- result = INLINE_SYSCALL (msgctl, 3, msqid, cmd, __ptrvalue (&old));
- if (result != -1 && cmd != IPC_SET)
- {
- memset(buf, 0, sizeof(*buf));
- buf->msg_perm.__key = old.msg_perm.__key;
- buf->msg_perm.uid = old.msg_perm.uid;
- buf->msg_perm.gid = old.msg_perm.gid;
- buf->msg_perm.cuid = old.msg_perm.cuid;
- buf->msg_perm.cgid = old.msg_perm.cgid;
- buf->msg_perm.mode = old.msg_perm.mode;
- buf->msg_perm.__seq = old.msg_perm.__seq;
- buf->msg_stime = old.msg_stime;
- buf->msg_rtime = old.msg_rtime;
- buf->msg_ctime = old.msg_ctime;
- buf->__msg_cbytes = old.__msg_cbytes;
- buf->msg_qnum = old.msg_qnum;
- buf->msg_qbytes = old.msg_qbytes;
- buf->msg_lspid = old.msg_lspid;
- buf->msg_lrpid = old.msg_lrpid;
- }
- return result;
- }
-#endif
-}
-
-#include <shlib-compat.h>
-versioned_symbol (libc, __new_msgctl, msgctl, GLIBC_2_2);
diff --git a/sysdeps/unix/sysv/linux/alpha/nldbl-abi.h b/sysdeps/unix/sysv/linux/alpha/nldbl-abi.h
deleted file mode 100644
index bd985cc59c..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/nldbl-abi.h
+++ /dev/null
@@ -1,8 +0,0 @@
-/* ABI version for long double switch.
- This is used by the Versions and math_ldbl_opt.h files in
- sysdeps/ieee754/ldbl-opt/. It gives the ABI version where
- long double == double was replaced with proper long double
- for libm *l functions and libc functions using long double. */
-
-#define NLDBL_VERSION GLIBC_2.4
-#define LONG_DOUBLE_COMPAT_VERSION GLIBC_2_4
diff --git a/sysdeps/unix/sysv/linux/alpha/oldglob.c b/sysdeps/unix/sysv/linux/alpha/oldglob.c
deleted file mode 100644
index 6d9b79f2c3..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/oldglob.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Copyright (C) 1998, 2000, 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* This file contains only wrappers around the real glob functions. It
- became necessary since the glob_t structure changed. */
-#include <sys/types.h>
-#include <glob.h>
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
-
-/* This is the old structure. The difference is that the gl_pathc and
- gl_offs elements have type `int'. */
-typedef struct
- {
- int gl_pathc; /* Count of paths matched by the pattern. */
- char **gl_pathv; /* List of matched pathnames. */
- int gl_offs; /* Slots to reserve in `gl_pathv'. */
- int gl_flags; /* Set to FLAGS, maybe | GLOB_MAGCHAR. */
-
- /* If the GLOB_ALTDIRFUNC flag is set, the following functions
- are used instead of the normal file access functions. */
- void (*gl_closedir) (void *);
- struct dirent *(*gl_readdir) (void *);
- __ptr_t (*gl_opendir) (__const char *);
- int (*gl_lstat) (__const char *, struct stat *);
- int (*gl_stat) (__const char *, struct stat *);
- } old_glob_t;
-
-
-int
-attribute_compat_text_section
-__old_glob (const char *pattern, int flags,
- int (*errfunc) (const char *, int),
- old_glob_t *pglob)
-{
- glob_t correct;
- int result;
-
- /* Construct an object of correct type. */
- correct.gl_pathc = pglob->gl_pathc;
- correct.gl_pathv = pglob->gl_pathv;
- correct.gl_offs = pglob->gl_offs;
- correct.gl_flags = pglob->gl_flags;
- correct.gl_closedir = pglob->gl_closedir;
- correct.gl_readdir = pglob->gl_readdir;
- correct.gl_opendir = pglob->gl_opendir;
- correct.gl_lstat = pglob->gl_lstat;
- correct.gl_stat = pglob->gl_stat;
-
- result = glob (pattern, flags, errfunc, &correct);
-
- /* And convert it back. */
- pglob->gl_pathc = correct.gl_pathc;
- pglob->gl_pathv = correct.gl_pathv;
- pglob->gl_offs = correct.gl_offs;
- pglob->gl_flags = correct.gl_flags;
- pglob->gl_closedir = correct.gl_closedir;
- pglob->gl_readdir = correct.gl_readdir;
- pglob->gl_opendir = correct.gl_opendir;
- pglob->gl_lstat = correct.gl_lstat;
- pglob->gl_stat = correct.gl_stat;
-
- return result;
-}
-compat_symbol (libc, __old_glob, glob, GLIBC_2_0);
-
-
-/* Free storage allocated in PGLOB by a previous `glob' call. */
-void
-attribute_compat_text_section
-__old_globfree (old_glob_t *pglob)
-{
- glob_t correct;
-
- /* We only need these two symbols. */
- correct.gl_pathc = pglob->gl_pathc;
- correct.gl_pathv = pglob->gl_pathv;
- correct.gl_offs = pglob->gl_offs;
-
- globfree (&correct);
-}
-compat_symbol (libc, __old_globfree, globfree, GLIBC_2_0);
-
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/pipe.S b/sysdeps/unix/sysv/linux/alpha/pipe.S
deleted file mode 100644
index 1e7ec1c199..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/pipe.S
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/alpha/pipe.S>
diff --git a/sysdeps/unix/sysv/linux/alpha/register-dump.h b/sysdeps/unix/sysv/linux/alpha/register-dump.h
deleted file mode 100644
index 77f962952a..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/register-dump.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/* Dump registers.
- Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <stddef.h>
-#include <string.h>
-
-/* We will print the register dump in this format:
-
- V0: XXXXXXXXXXXXXXXX T0: XXXXXXXXXXXXXXXX T1: XXXXXXXXXXXXXXXX
- T2: XXXXXXXXXXXXXXXX T3: XXXXXXXXXXXXXXXX T4: XXXXXXXXXXXXXXXX
- T5: XXXXXXXXXXXXXXXX T6: XXXXXXXXXXXXXXXX T7: XXXXXXXXXXXXXXXX
- S0: XXXXXXXXXXXXXXXX S1: XXXXXXXXXXXXXXXX S2: XXXXXXXXXXXXXXXX
- S3: XXXXXXXXXXXXXXXX S4: XXXXXXXXXXXXXXXX S5: XXXXXXXXXXXXXXXX
- S6: XXXXXXXXXXXXXXXX A0: XXXXXXXXXXXXXXXX A1: XXXXXXXXXXXXXXXX
- A2: XXXXXXXXXXXXXXXX A3: XXXXXXXXXXXXXXXX A4: XXXXXXXXXXXXXXXX
- A5: XXXXXXXXXXXXXXXX T8: XXXXXXXXXXXXXXXX T9: XXXXXXXXXXXXXXXX
- T10: XXXXXXXXXXXXXXXX T11: XXXXXXXXXXXXXXXX RA: XXXXXXXXXXXXXXXX
- T12: XXXXXXXXXXXXXXXX AT: XXXXXXXXXXXXXXXX GP: XXXXXXXXXXXXXXXX
- SP: XXXXXXXXXXXXXXXX PC: XXXXXXXXXXXXXXXX
-
- FP0: XXXXXXXXXXXXXXXX FP1: XXXXXXXXXXXXXXXX FP2: XXXXXXXXXXXXXXXX
- FP3: XXXXXXXXXXXXXXXX FP4: XXXXXXXXXXXXXXXX FP5: XXXXXXXXXXXXXXXX
- FP6: XXXXXXXXXXXXXXXX FP7: XXXXXXXXXXXXXXXX FP8: XXXXXXXXXXXXXXXX
- FP9: XXXXXXXXXXXXXXXX FP10: XXXXXXXXXXXXXXXX FP11: XXXXXXXXXXXXXXXX
- FP12: XXXXXXXXXXXXXXXX FP13: XXXXXXXXXXXXXXXX FP14: XXXXXXXXXXXXXXXX
- FP15: XXXXXXXXXXXXXXXX FP16: XXXXXXXXXXXXXXXX FP17: XXXXXXXXXXXXXXXX
- FP18: XXXXXXXXXXXXXXXX FP19: XXXXXXXXXXXXXXXX FP20: XXXXXXXXXXXXXXXX
- FP21: XXXXXXXXXXXXXXXX FP22: XXXXXXXXXXXXXXXX FP23: XXXXXXXXXXXXXXXX
- FP24: XXXXXXXXXXXXXXXX FP25: XXXXXXXXXXXXXXXX FP26: XXXXXXXXXXXXXXXX
- FP27: XXXXXXXXXXXXXXXX FP28: XXXXXXXXXXXXXXXX FP29: XXXXXXXXXXXXXXXX
- FP30: XXXXXXXXXXXXXXXX FPCR: XXXXXXXXXXXXXXXX
-
- TA0: XXXXXXXXXXXXXXXX TA1: XXXXXXXXXXXXXXXX TA2: XXXXXXXXXXXXXXXX
-*/
-
-#define NREGS (32+32+3)
-
-static const char __attribute__((aligned(8))) regnames[NREGS][8] =
-{
- " V0: ", " T0: ", " T1: ",
- " T2: ", " T3: ", " T4: ",
- " T5: ", " T6: ", " T7: ",
- " S0: ", " S1: ", " S2: ",
- " S3: ", " S4: ", " S5: ",
- " S6: ", " A0: ", " A1: ",
- " A2: ", " A3: ", " A4: ",
- " A5: ", " T8: ", " T9: ",
- " T10: ", " T11: ", " RA: ",
- " T12: ", " AT: ", " GP: ",
- " SP: ", " PC: ",
-
- " FP0: ", " FP1: ", " FP2: ",
- " FP3: ", " FP4: ", " FP5: ",
- " FP6: ", " FP7: ", " FP8: ",
- " FP9: ", " FP10: ", " FP11: ",
- " FP12: ", " FP13: ", " FP14: ",
- " FP15: ", " FP16: ", " FP17: ",
- " FP18: ", " FP19: ", " FP20: ",
- " FP21: ", " FP22: ", " FP23: ",
- " FP24: ", " FP25: ", " FP26: ",
- " FP27: ", " FP28: ", " FP29: ",
- " FP30: ", " FPCR: ",
-
- " TA0: ", " TA1: ", " TA2: "
-};
-
-#define O(FIELD, LF) offsetof(struct sigcontext, FIELD) + LF
-
-static const int offsets[NREGS] =
-{
- O(sc_regs[0], 0), O(sc_regs[1], 0), O(sc_regs[2], 1),
- O(sc_regs[3], 0), O(sc_regs[4], 0), O(sc_regs[5], 1),
- O(sc_regs[6], 0), O(sc_regs[7], 0), O(sc_regs[8], 1),
- O(sc_regs[9], 0), O(sc_regs[10], 0), O(sc_regs[11], 1),
- O(sc_regs[12], 0), O(sc_regs[13], 0), O(sc_regs[14], 1),
- O(sc_regs[15], 0), O(sc_regs[16], 0), O(sc_regs[17], 1),
- O(sc_regs[18], 0), O(sc_regs[19], 0), O(sc_regs[20], 1),
- O(sc_regs[21], 0), O(sc_regs[22], 0), O(sc_regs[23], 1),
- O(sc_regs[24], 0), O(sc_regs[25], 0), O(sc_regs[26], 1),
- O(sc_regs[27], 0), O(sc_regs[28], 0), O(sc_regs[29], 1),
- O(sc_regs[30], 0), O(sc_pc, 2),
-
- O(sc_fpregs[0], 0), O(sc_fpregs[1], 0), O(sc_fpregs[2], 1),
- O(sc_fpregs[3], 0), O(sc_fpregs[4], 0), O(sc_fpregs[5], 1),
- O(sc_fpregs[6], 0), O(sc_fpregs[7], 0), O(sc_fpregs[8], 1),
- O(sc_fpregs[9], 0), O(sc_fpregs[10], 0), O(sc_fpregs[11], 1),
- O(sc_fpregs[12], 0), O(sc_fpregs[13], 0), O(sc_fpregs[14], 1),
- O(sc_fpregs[15], 0), O(sc_fpregs[16], 0), O(sc_fpregs[17], 1),
- O(sc_fpregs[18], 0), O(sc_fpregs[19], 0), O(sc_fpregs[20], 1),
- O(sc_fpregs[21], 0), O(sc_fpregs[22], 0), O(sc_fpregs[23], 1),
- O(sc_fpregs[24], 0), O(sc_fpregs[25], 0), O(sc_fpregs[26], 1),
- O(sc_fpregs[27], 0), O(sc_fpregs[28], 0), O(sc_fpregs[29], 1),
- O(sc_fpregs[30], 0), O(sc_fpcr, 2),
-
- O(sc_traparg_a0, 0), O(sc_traparg_a1, 0), O(sc_traparg_a2, 1)
-};
-
-#undef O
-
-static void
-register_dump (int fd, struct sigcontext *ctx)
-{
- char buf[NREGS*(8+16) + 25 + 80];
- char *p = buf;
- size_t i;
-
- p = stpcpy (p, "Register dump:\n\n");
-
- for (i = 0; i < NREGS; ++i)
- {
- int this_offset, this_lf;
- unsigned long val;
- signed long j;
-
- this_offset = offsets[i];
- this_lf = this_offset & 7;
-
- val = *(unsigned long *)(((size_t)ctx + this_offset) & -8);
-
- memcpy (p, regnames[i], 8);
- p += 8;
-
- for (j = 60; j >= 0; j -= 4)
- {
- unsigned long x = (val >> j) & 15;
- x += x < 10 ? '0' : 'a' - 10;
- *p++ = x;
- }
-
- if (this_lf > 0)
- {
- if (this_lf > 1)
- *p++ = '\n';
- *p++ = '\n';
- }
- }
-
- write (fd, buf, p - buf);
-}
-
-#define REGISTER_DUMP register_dump (fd, ctx)
diff --git a/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S b/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S
deleted file mode 100644
index e27949feff..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright (C) 1998, 2003, 2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@cygnus.com>, 1998
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-
-/* On Alpha we desparately want to avoid having to issue an imb. Ordinarily
- the kernel would have to issue one after setting up the signal return
- stack, but the Linux rt_sigaction syscall is prepared to accept a pointer
- to the sigreturn syscall, instead of inlining it on the stack.
-
- This just about halves signal delivery time. */
-
- .text
-
-ENTRY(__syscall_rt_sigaction)
- .frame sp,0,ra,0
- ldgp gp,0(pv)
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- beq a1, 0f
- ldl t0, 8(a1) # sa_flags
-
- /* The unwinder will subtract one from the return address when
- attempting to find the call instruction that led us here.
- Since we didn't get here via a normal call, if we do nothing
- we would pick up the wrong symbol and the wrong FDE. Account
- for this by adding a nop to the start of the function and
- then skipping it here by adding 4. */
- ldah a4, __syscall_sigreturn+4(gp) !gprelhigh
- ldah t1, __syscall_rt_sigreturn+4(gp) !gprelhigh
- lda a4, __syscall_sigreturn+4(a4) !gprellow
- lda t1, __syscall_rt_sigreturn+4(t1) !gprellow
- and t0, 0x40, t0 # SA_SIGINFO
- cmovne t0, t1, a4
-
-0: ldi v0, __NR_rt_sigaction
- callsys
- bne a3, SYSCALL_ERROR_LABEL
- ret
-
-PSEUDO_END(__syscall_rt_sigaction)
-
-/* To enable unwinding through the signal frame without special hackery
- elsewhere, describe the entire struct sigcontext with unwind info.
-
- In order to minimize the size of the encoding, we set the CFA to the
- end of the sigcontext, which makes all of the registers have small
- negative offsets from that. */
-
- .macro SIGCONTEXT_REGS_I base, from=0
- cfi_offset (\from, \base + (4 + \from) * 8)
- .if 30-\from
- SIGCONTEXT_REGS_I \base, "(\from+1)"
- .endif
- .endm
-
- .macro SIGCONTEXT_REGS_F base, from=32
- cfi_offset (\from, \base + (4 + 1 + \from) * 8)
- .if 62-\from
- SIGCONTEXT_REGS_F \base, "(\from+1)"
- .endif
- .endm
-
- .macro SIGCONTEXT_REGS base
- SIGCONTEXT_REGS_I \base
- SIGCONTEXT_REGS_F \base
- cfi_offset (63, \base + (4 + 32 + 1 + 32) * 8)
- cfi_offset (64, \base + 2 * 8)
- .endm
-
- .align 4
- nop
- nop
- nop
-
- cfi_startproc
- cfi_return_column (64)
- SIGCONTEXT_REGS -648
-
- cfi_def_cfa_offset (648)
-__syscall_sigreturn:
- nop
- mov sp, a0
- ldi v0, __NR_sigreturn
- callsys
- .size __syscall_sigreturn, .-__syscall_sigreturn
- .type __syscall_sigreturn, @function
-
- cfi_def_cfa_offset (176 + 648)
-__syscall_rt_sigreturn:
- nop
- mov sp,a0
- ldi v0,__NR_rt_sigreturn
- callsys
- .size __syscall_rt_sigreturn, .-__syscall_rt_sigreturn
- .type __syscall_rt_sigreturn, @function
-
- cfi_endproc
diff --git a/sysdeps/unix/sysv/linux/alpha/select.S b/sysdeps/unix/sysv/linux/alpha/select.S
deleted file mode 100644
index 35a81e949f..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/select.S
+++ /dev/null
@@ -1,241 +0,0 @@
-/* Copyright (C) 1998,2002,2003,2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep-cancel.h>
-#define _ERRNO_H 1
-#include <bits/errno.h>
-#include <kernel-features.h>
-
-.text
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-#define SELECT __select_tv64
-#else
-#define SELECT __select
-#endif
-
-#if defined __ASSUME_TIMEVAL64
-PSEUDO(SELECT, select, 5)
- ret
-PSEUDO_END(SELECT)
-#else
-/* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-
- So now we have to do compatibility stuff. */
-
-/* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. */
-.comm __libc_missing_axp_tv64, 4
-
-LEAF(SELECT, 64)
- ldgp gp, 0(pv)
- subq sp, 64, sp
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- stq ra, 40(sp)
- .mask 0x4000000, 40-64
- .prologue 1
-
-#ifdef CENABLE
- SINGLE_THREAD_P (t1)
-#else
- ldl t0, __libc_missing_axp_tv64
-#endif
-
- /* Save timeout early, since we'll need to recover this after
- the system call. */
- stq a4, 48(sp)
-
-#ifdef CENABLE
- bne t1, $do_cancel
-#endif
-
- bne t0, $do32
-
- /* Save arguments in case we do need to fall back. */
- stq a0, 8(sp)
- stq a1, 16(sp)
- stq a2, 24(sp)
- stq a3, 32(sp)
-
- ldi v0, SYS_ify(select)
- callsys
- bne a3, $err64
-
- /* Everything ok. */
- addq sp, 64, sp
- ret
-
- /* If we didn't get ENOSYS, it is a real error. */
- .align 3
-$err64: cmpeq v0, ENOSYS, t0
- beq t0, $error
- stl t0, __libc_missing_axp_tv64
-
- /* Recover the saved arguments. */
- ldq a4, 48(sp)
- ldq a3, 32(sp)
- ldq a2, 24(sp)
- ldq a1, 16(sp)
- ldq a0, 8(sp)
-
- .align 3
-$do32:
- /* If the timeout argument is present bounce to the smaller fmt. */
- beq a4, 1f
- ldq t0, 0(a4)
- ldq t1, 8(a4)
- stl t0, 0(sp)
- stl t1, 4(sp)
- mov sp, a4
-
-1: ldi v0, SYS_ify(osf_select)
- callsys
- bne a3, $error
-
- /* ... and bounce the remaining timeout back. */
- ldq a4, 48(sp)
- beq a4, 2f
- ldl t0, 0(sp)
- ldl t1, 4(sp)
- stq t0, 0(a4)
- stq t1, 8(a4)
-
-2: addq sp, 64, sp
- ret
-
-#ifdef CENABLE
- .align 3
-$do_cancel:
- /* Save arguments. */
- stq a0, 8(sp)
- stq a1, 16(sp)
- stq a2, 24(sp)
- stq a3, 32(sp)
-
- CENABLE
- mov v0, ra
-
- ldl t0, __libc_missing_axp_tv64
- bne t0, $do_cancel32
-
- /* Recover the saved arguments. */
- ldq a4, 48(sp)
- ldq a3, 32(sp)
- ldq a2, 24(sp)
- ldq a1, 16(sp)
- ldq a0, 8(sp)
-
- ldi v0, SYS_ify(select)
- callsys
-
- mov ra, a0
- bne a3, $cancel_err64
-
- stq v0, 8(sp)
- CDISABLE
- ldq v0, 8(sp)
- ldq ra, 40(sp)
-
- /* Everything ok. */
- addq sp, 64, sp
- ret
-
- /* If we didn't get ENOSYS, it is a real error. */
- .align 3
-$cancel_err64:
- cmpeq v0, ENOSYS, t0
- beq t0, $cancel_error
- stl t0, __libc_missing_axp_tv64
-
- /* Recover the saved arguments. */
- .align 3
-$do_cancel32:
- ldq a4, 48(sp)
- ldq a3, 32(sp)
- ldq a2, 24(sp)
- ldq a1, 16(sp)
- ldq a0, 8(sp)
-
- /* If the timeout argument is present bounce to the smaller fmt. */
- beq a4, 1f
- ldq t0, 0(a4)
- ldq t1, 8(a4)
- stl t0, 0(sp)
- stl t1, 4(sp)
- mov sp, a4
-
-1: ldi v0, SYS_ify(osf_select)
- callsys
-
- mov ra, a0
- bne a3, $cancel_error
-
- /* ... and bounce the remaining timeout back. */
- ldq a4, 48(sp)
- beq a4, 2f
- ldl t0, 0(sp)
- ldl t1, 4(sp)
- stq t0, 0(a4)
- stq t1, 8(a4)
-
-2: stq v0, 8(sp)
- CDISABLE
- ldq v0, 8(sp)
- ldq ra, 40(sp)
-
- addq sp, 64, sp
- ret
-
- .align 3
-$cancel_error:
- stq v0, 8(sp)
- CDISABLE
- ldq v0, 8(sp)
- ldq ra, 40(sp)
-#endif
-
- .align 3
-$error:
- addq sp, 64, sp
- SYSCALL_ERROR_HANDLER
-
-END(SELECT)
-#endif /* __ASSUME_TIMEVAL64 */
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-default_symbol_version (__select_tv64, __select, GLIBC_2.1)
-
-/* It seems to me to be a misfeature of the assembler that we can only
- have one version-alias per symbol. So create an alias ourselves.
- The 'p' is for 'public'. *Shrug* */
-strong_alias (__select_tv64, __select_tv64p)
-default_symbol_version (__select_tv64p, select, GLIBC_2.1)
-libc_hidden_ver (__select_tv64, __select)
-strong_alias (__select_tv64, __libc_select)
-#else
-strong_alias (__select, __libc_select)
-weak_alias (__select, select)
-libc_hidden_def (__select)
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/semctl.c b/sysdeps/unix/sysv/linux/alpha/semctl.c
deleted file mode 100644
index 9957f983bf..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/semctl.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* Copyright (C) 1995,1997,1998,2000,2003,2006
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <stdarg.h>
-#include <sys/sem.h>
-#include <ipc_priv.h>
-
-#include <sysdep.h>
-#include <string.h>
-#include <sys/syscall.h>
-
-#include <kernel-features.h>
-
-struct __old_semid_ds
-{
- struct __old_ipc_perm sem_perm; /* operation permission struct */
- __time_t sem_otime; /* last semop() time */
- __time_t sem_ctime; /* last time changed by semctl() */
- struct sem *__sembase; /* ptr to first semaphore in array */
- struct sem_queue *__sem_pending; /* pending operations */
- struct sem_queue *__sem_pending_last; /* last pending operation */
- struct sem_undo *__undo; /* ondo requests on this array */
- unsigned short int sem_nsems; /* number of semaphores in set */
-};
-
-/* Define a `union semun' suitable for Linux here. */
-union semun
-{
- int val; /* value for SETVAL */
- struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
- unsigned short int *array; /* array for GETALL & SETALL */
- struct seminfo *__buf; /* buffer for IPC_INFO */
-};
-
-#include <bp-checks.h>
-#include <bp-semctl.h> /* definition of CHECK_SEMCTL needs union semum */
-
-/* Return identifier for array of NSEMS semaphores associated with
- KEY. */
-int __new_semctl (int semid, int semnum, int cmd, ...);
-
-int
-__new_semctl (int semid, int semnum, int cmd, ...)
-{
- union semun arg;
- va_list ap;
-
- va_start (ap, cmd);
-
- /* Get the argument. */
- arg = va_arg (ap, union semun);
-
- va_end (ap);
-
-#if __ASSUME_32BITUIDS > 0
- return INLINE_SYSCALL (semctl, 4, semid, semnum, cmd | __IPC_64,
- CHECK_SEMCTL (&arg, semid, cmd | __IPC_64)->array);
-#else
- switch (cmd) {
- case SEM_STAT:
- case IPC_STAT:
- case IPC_SET:
- break;
- default:
- return INLINE_SYSCALL (semctl, 4, semid, semnum, cmd,
- CHECK_SEMCTL (&arg, semid, cmd)->array);
- }
-
- {
- int save_errno = errno, result;
- struct __old_semid_ds old;
- struct semid_ds *buf;
-
- /* Unfortunately there is no way how to find out for sure whether
- we should use old or new semctl. */
- result = INLINE_SYSCALL (semctl, 4, semid, semnum, cmd | __IPC_64,
- CHECK_SEMCTL (&arg, semid, cmd | __IPC_64)->array);
- if (result != -1 || errno != EINVAL)
- return result;
-
- __set_errno(save_errno);
- buf = arg.buf;
- arg.buf = (void *)&old;
- if (cmd == IPC_SET)
- {
- old.sem_perm.uid = buf->sem_perm.uid;
- old.sem_perm.gid = buf->sem_perm.gid;
- old.sem_perm.mode = buf->sem_perm.mode;
- if (old.sem_perm.uid != buf->sem_perm.uid ||
- old.sem_perm.gid != buf->sem_perm.gid)
- {
- __set_errno (EINVAL);
- return -1;
- }
- }
- result = INLINE_SYSCALL (semctl, 4, semid, semnum, cmd,
- CHECK_SEMCTL (&arg, semid, cmd)->array);
- if (result != -1 && cmd != IPC_SET)
- {
- memset(buf, 0, sizeof(*buf));
- buf->sem_perm.__key = old.sem_perm.__key;
- buf->sem_perm.uid = old.sem_perm.uid;
- buf->sem_perm.gid = old.sem_perm.gid;
- buf->sem_perm.cuid = old.sem_perm.cuid;
- buf->sem_perm.cgid = old.sem_perm.cgid;
- buf->sem_perm.mode = old.sem_perm.mode;
- buf->sem_perm.__seq = old.sem_perm.__seq;
- buf->sem_otime = old.sem_otime;
- buf->sem_ctime = old.sem_ctime;
- buf->sem_nsems = old.sem_nsems;
- }
- return result;
- }
-#endif
-}
-
-#include <shlib-compat.h>
-versioned_symbol (libc, __new_semctl, semctl, GLIBC_2_2);
diff --git a/sysdeps/unix/sysv/linux/alpha/setcontext.S b/sysdeps/unix/sysv/linux/alpha/setcontext.S
deleted file mode 100644
index 27abfd0c12..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/setcontext.S
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Install given context.
- Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#include <ucontext-offsets.h>
-
-
-/* In case the user fiddled it, copy the "official" signal mask
- from the ucontext_t into the sigcontext structure. */
-#undef PSEUDO_PREPARE_ARGS
-#define PSEUDO_PREPARE_ARGS \
- ldq $0, UC_SIGMASK($16); \
- stq $0, UC_SIGCTX+SC_MASK($16); \
- lda $16, UC_SIGCTX($16);
-
-PSEUDO(__setcontext, sigreturn, 1)
- ret
-PSEUDO_END(__setcontext)
-weak_alias (__setcontext, setcontext)
diff --git a/sysdeps/unix/sysv/linux/alpha/setfpucw.c b/sysdeps/unix/sysv/linux/alpha/setfpucw.c
deleted file mode 100644
index a7e3a55812..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/setfpucw.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Set FP exception mask and rounding mode.
- Copyright (C) 1996, 1997, 1998, 2003 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <fpu_control.h>
-#include <asm/fpu.h>
-
-extern void __ieee_set_fp_control (unsigned long);
-libc_hidden_proto(__ieee_set_fp_control)
-
-extern unsigned long __ieee_get_fp_control (void);
-libc_hidden_proto(__ieee_get_fp_control)
-
-static inline unsigned long
-rdfpcr (void)
-{
- unsigned long fpcr;
- asm ("excb; mf_fpcr %0" : "=f"(fpcr));
- return fpcr;
-}
-
-
-static inline void
-wrfpcr (unsigned long fpcr)
-{
- asm volatile ("mt_fpcr %0; excb" : : "f"(fpcr));
-}
-
-
-void
-__setfpucw (fpu_control_t fpu_control)
-{
- unsigned long fpcr = 0, fpcw = 0;
-
- if (!fpu_control)
- fpu_control = _FPU_DEFAULT;
-
- /* first, set dynamic rounding mode: */
-
- fpcr = rdfpcr();
- fpcr &= ~FPCR_DYN_MASK;
- switch (fpu_control & 0xc00)
- {
- case _FPU_RC_NEAREST: fpcr |= FPCR_DYN_NORMAL; break;
- case _FPU_RC_DOWN: fpcr |= FPCR_DYN_MINUS; break;
- case _FPU_RC_UP: fpcr |= FPCR_DYN_PLUS; break;
- case _FPU_RC_ZERO: fpcr |= FPCR_DYN_CHOPPED; break;
- }
- wrfpcr(fpcr);
-
- /* now tell kernel about traps that we like to hear about: */
-
- fpcw = __ieee_get_fp_control();
- fpcw &= ~IEEE_TRAP_ENABLE_MASK;
-
- if (!(fpu_control & _FPU_MASK_IM)) fpcw |= IEEE_TRAP_ENABLE_INV;
- if (!(fpu_control & _FPU_MASK_DM)) fpcw |= IEEE_TRAP_ENABLE_UNF;
- if (!(fpu_control & _FPU_MASK_ZM)) fpcw |= IEEE_TRAP_ENABLE_DZE;
- if (!(fpu_control & _FPU_MASK_OM)) fpcw |= IEEE_TRAP_ENABLE_OVF;
- if (!(fpu_control & _FPU_MASK_PM)) fpcw |= IEEE_TRAP_ENABLE_INE;
-
- __fpu_control = fpu_control; /* update global copy */
-
- __ieee_set_fp_control(fpcw);
-}
diff --git a/sysdeps/unix/sysv/linux/alpha/setitimer.S b/sysdeps/unix/sysv/linux/alpha/setitimer.S
deleted file mode 100644
index 59caeac680..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/setitimer.S
+++ /dev/null
@@ -1,137 +0,0 @@
-/* Copyright (C) 1998, 2003, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#define _ERRNO_H 1
-#include <bits/errno.h>
-#include <kernel-features.h>
-
-.text
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-#define SETITIMER __setitimer_tv64
-#else
-#define SETITIMER __setitimer
-#endif
-
-#if defined __ASSUME_TIMEVAL64
-PSEUDO(SETITIMER, setitimer, 3)
- ret
-PSEUDO_END(SETITIMER)
-#else
-/* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-
- So now we have to do compatibility stuff. */
-
-/* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. */
-.comm __libc_missing_axp_tv64, 4
-
-LEAF(SETITIMER, 48)
- ldgp gp, 0(pv)
- subq sp, 48, sp
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- ldl t0, __libc_missing_axp_tv64
-
- /* Save arguments in case we do need to fall back. */
- stq a0, 0(sp)
- stq a1, 8(sp)
- stq a2, 16(sp)
-
- bne t0, $do32
-
- ldi v0, SYS_ify(setitimer)
- callsys
- bne a3, $err64
-
- /* Everything ok. */
- addq sp, 48, sp
- ret
-
- /* If we didn't get ENOSYS, it is a real error. */
- .align 3
-$err64: cmpeq v0, ENOSYS, t0
- beq t0, $error
- stl t0, __libc_missing_axp_tv64
-
- /* Recover the saved arguments. */
- ldq a2, 16(sp)
- ldq a1, 8(sp)
- ldq a0, 0(sp)
-
- .align 3
-$do32:
- /* Conditionally bounce new value down. */
- beq a1, 1f
- ldq t0, 0(a1)
- ldq t1, 8(a1)
- ldq t2, 16(a1)
- ldq t3, 24(a1)
- stl t0, 32(sp)
- stl t1, 36(sp)
- stl t2, 40(sp)
- stl t3, 44(sp)
- addq sp, 32, a1
-
-1: ldi v0, SYS_ify(osf_setitimer)
- callsys
- bne a3, $error
-
- /* Conditionaly bounce old value up. */
- ldq a2, 16(sp)
- bne a2, 2f
- ldl t0, 0(a2)
- ldl t1, 4(a2)
- ldl t2, 8(a2)
- ldl t3, 12(a2)
- stq t0, 0(a2)
- stq t1, 8(a2)
- stq t2, 48(a2)
- stq t3, 24(a2)
-
-2: addq sp, 48, sp
- ret
-
- .align 3
-$error:
- addq sp, 48, sp
- SYSCALL_ERROR_HANDLER
-
-END(SETITIMER)
-#endif /* __ASSUME_TIMEVAL64 */
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-default_symbol_version (__setitimer_tv64, __setitimer, GLIBC_2.1)
-
-/* It seems to me to be a misfeature of the assembler that we can only
- have one version-alias per symbol. So create an alias ourselves.
- The 'p' is for 'public'. *Shrug* */
-strong_alias (__setitimer_tv64, __setitimer_tv64p)
-default_symbol_version (__setitimer_tv64p, setitimer, GLIBC_2.1)
-#else
-weak_alias (__setitimer, setitimer)
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/setreuid.c b/sysdeps/unix/sysv/linux/alpha/setreuid.c
deleted file mode 100644
index a23a34792e..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/setreuid.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 1998, 2000, 2003, 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <unistd.h>
-#include <setxid.h>
-
-
-int
-__setreuid (uid_t ruid, uid_t euid)
-{
- return INLINE_SETXID_SYSCALL (setreuid, 2, (int) ruid, (int) euid);
-}
-#ifndef __setreuid
-weak_alias (__setreuid, setreuid)
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/settimeofday.S b/sysdeps/unix/sysv/linux/alpha/settimeofday.S
deleted file mode 100644
index e39eadc208..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/settimeofday.S
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Copyright (C) 1998, 2003, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#define _ERRNO_H 1
-#include <bits/errno.h>
-#include <kernel-features.h>
-
-.text
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-#define SETTIMEOFDAY __settimeofday_tv64
-#else
-#define SETTIMEOFDAY __settimeofday
-#endif
-
-#if defined __ASSUME_TIMEVAL64
-PSEUDO(SETTIMEOFDAY, settimeofday, 2)
- ret
-PSEUDO_END(SETTIMEOFDAY)
-#else
-/* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-
- So now we have to do compatibility stuff. */
-
-/* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. */
-.comm __libc_missing_axp_tv64, 4
-
-LEAF(SETTIMEOFDAY, 16)
- ldgp gp, 0(pv)
- subq sp, 16, sp
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- ldl t0, __libc_missing_axp_tv64
- bne t0, $do32
-
- /* Save arguments in case we do need to fall back. */
- stq a0, 0(sp)
- stq a1, 8(sp)
-
- ldi v0, SYS_ify(settimeofday)
- callsys
- bne a3, $err64
-
- /* Everything ok. */
- addq sp, 16, sp
- ret
-
- /* If we didn't get ENOSYS, it is a real error. */
- .align 3
-$err64: cmpeq v0, ENOSYS, t0
- beq t0, $error
- stl t0, __libc_missing_axp_tv64
-
- /* Recover the saved arguments. */
- ldq a1, 8(sp)
- ldq a0, 0(sp)
-
- .align 3
-$do32:
- /* Conditionally bounce the timeval down. */
- beq a0, 1f
- ldq t0, 0(a0)
- ldq t1, 8(a0)
- stl t0, 0(sp)
- stl t1, 4(sp)
- mov sp, a0
-
-1: ldi v0, SYS_ify(osf_settimeofday)
- callsys
- bne a3, $error
-
- addq sp, 16, sp
- ret
-
- .align 3
-$error:
- addq sp, 16, sp
- SYSCALL_ERROR_HANDLER
-
-END(SETTIMEOFDAY)
-#endif /* __ASSUME_TIMEVAL64 */
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-default_symbol_version (__settimeofday_tv64, __settimeofday, GLIBC_2.1)
-
-/* It seems to me to be a misfeature of the assembler that we can only
- have one version-alias per symbol. So create an alias ourselves.
- The 'p' is for 'public'. *Shrug* */
-strong_alias (__settimeofday_tv64, __settimeofday_tv64p)
-default_symbol_version (__settimeofday_tv64p, settimeofday, GLIBC_2.1)
-#else
-weak_alias (__settimeofday, settimeofday)
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/shmctl.c b/sysdeps/unix/sysv/linux/alpha/shmctl.c
deleted file mode 100644
index e63211fa00..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/shmctl.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/* Copyright (C) 1995,1997,1998,2000,2003,2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <sys/shm.h>
-#include <ipc_priv.h>
-
-#include <sysdep.h>
-#include <string.h>
-#include <sys/syscall.h>
-#include <bits/wordsize.h>
-#include <bp-checks.h>
-
-#include <kernel-features.h>
-
-struct __old_shmid_ds
-{
- struct __old_ipc_perm shm_perm; /* operation permission struct */
- int shm_segsz; /* size of segment in bytes */
- __time_t shm_atime; /* time of last shmat() */
- __time_t shm_dtime; /* time of last shmdt() */
- __time_t shm_ctime; /* time of last change by shmctl() */
- __ipc_pid_t shm_cpid; /* pid of creator */
- __ipc_pid_t shm_lpid; /* pid of last shmop */
- unsigned short int shm_nattch; /* number of current attaches */
- unsigned short int __shm_npages; /* size of segment (pages) */
- unsigned long int *__unbounded __shm_pages; /* array of ptrs to frames -> SHMMAX */
- struct vm_area_struct *__unbounded __attaches; /* descriptors for attaches */
-};
-
-struct __old_shminfo
-{
- int shmmax;
- int shmmin;
- int shmmni;
- int shmseg;
- int shmall;
-};
-
-/* Provide operations to control over shared memory segments. */
-int __new_shmctl (int, int, struct shmid_ds *);
-
-int
-__new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
-{
-#if __ASSUME_32BITUIDS > 0
- return INLINE_SYSCALL (shmctl, 3, shmid, cmd | __IPC_64, CHECK_1 (buf));
-#else
- switch (cmd) {
- case SHM_STAT:
- case IPC_STAT:
- case IPC_SET:
- case IPC_INFO:
- break;
- default:
- return INLINE_SYSCALL (shmctl, 3, shmid, cmd, CHECK_1 (buf));
- }
-
- {
- int save_errno = errno, result;
- struct __old_shmid_ds old;
-
- /* Unfortunately there is no way how to find out for sure whether
- we should use old or new shmctl. */
- result = INLINE_SYSCALL (shmctl, 3, shmid, cmd | __IPC_64, CHECK_1 (buf));
- if (result != -1 || errno != EINVAL)
- return result;
-
- __set_errno(save_errno);
- if (cmd == IPC_SET)
- {
- old.shm_perm.uid = buf->shm_perm.uid;
- old.shm_perm.gid = buf->shm_perm.gid;
- old.shm_perm.mode = buf->shm_perm.mode;
- if (old.shm_perm.uid != buf->shm_perm.uid ||
- old.shm_perm.gid != buf->shm_perm.gid)
- {
- __set_errno (EINVAL);
- return -1;
- }
- }
- result = INLINE_SYSCALL (shmctl, 3, shmid, cmd, __ptrvalue (&old));
- if (result != -1 && (cmd == SHM_STAT || cmd == IPC_STAT))
- {
- memset(buf, 0, sizeof(*buf));
- buf->shm_perm.__key = old.shm_perm.__key;
- buf->shm_perm.uid = old.shm_perm.uid;
- buf->shm_perm.gid = old.shm_perm.gid;
- buf->shm_perm.cuid = old.shm_perm.cuid;
- buf->shm_perm.cgid = old.shm_perm.cgid;
- buf->shm_perm.mode = old.shm_perm.mode;
- buf->shm_perm.__seq = old.shm_perm.__seq;
- buf->shm_atime = old.shm_atime;
- buf->shm_dtime = old.shm_dtime;
- buf->shm_ctime = old.shm_ctime;
- buf->shm_segsz = old.shm_segsz;
- buf->shm_nattch = old.shm_nattch;
- buf->shm_cpid = old.shm_cpid;
- buf->shm_lpid = old.shm_lpid;
- }
- else if (result != -1 && cmd == IPC_INFO)
- {
- struct __old_shminfo *oldi = (void *)&old;
- struct shminfo *i = (struct shminfo *)buf;
-
- memset(i, 0, sizeof(*i));
- i->shmmax = oldi->shmmax;
- i->shmmin = oldi->shmmin;
- i->shmmni = oldi->shmmni;
- i->shmseg = oldi->shmseg;
- i->shmall = oldi->shmall;
- }
- return result;
- }
-#endif
-}
-
-#include <shlib-compat.h>
-versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_2);
diff --git a/sysdeps/unix/sysv/linux/alpha/sigaction.c b/sysdeps/unix/sysv/linux/alpha/sigaction.c
deleted file mode 100644
index 26b081d9a3..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sigaction.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 2003 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#include <sys/cdefs.h>
-#include <stddef.h>
-
-/*
- * In order to get the hidden arguments for rt_sigaction set up
- * properly, we need to call the assembly version. Detect this in the
- * INLINE_SYSCALL macro, and fail to expand inline in that case.
- */
-
-#undef INLINE_SYSCALL
-#define INLINE_SYSCALL(name, nr, args...) \
- (__NR_##name == __NR_rt_sigaction \
- ? __syscall_rt_sigaction(args) \
- : INLINE_SYSCALL1(name, nr, args))
-
-struct kernel_sigaction;
-extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
- struct kernel_sigaction *__unbounded, size_t);
-
-#include <sysdeps/unix/sysv/linux/sigaction.c>
diff --git a/sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h b/sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h
deleted file mode 100644
index 16c5dcbc5b..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright (C) 1999, 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define SIGCONTEXT int _code, struct sigcontext *
-#define SIGCONTEXT_EXTRA_ARGS _code,
-#define GET_PC(ctx) ((void *) (ctx)->sc_pc)
-#define GET_FRAME(ctx) ((void *) (ctx)->sc_regs[15])
-#define GET_STACK(ctx) ((void *) (ctx)->sc_regs[30])
-#define CALL_SIGHANDLER(handler, signo, ctx) \
- (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
diff --git a/sysdeps/unix/sysv/linux/alpha/sigprocmask.c b/sysdeps/unix/sysv/linux/alpha/sigprocmask.c
deleted file mode 100644
index 1916111a22..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sigprocmask.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Copyright (C) 1993, 1995, 1997, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger (davidm@azstarnet.com).
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <sysdep.h>
-#include <signal.h>
-
-/* When there is kernel support for more than 64 signals, we'll have to
- switch to a new system call convention here. */
-
-int
-__sigprocmask (int how, const sigset_t *set, sigset_t *oset)
-{
- unsigned long int setval;
- long result;
-
- if (set)
- setval = set->__val[0];
- else
- {
- setval = 0;
- how = SIG_BLOCK; /* ensure blocked mask doesn't get changed */
- }
-
- result = INLINE_SYSCALL (osf_sigprocmask, 2, how, setval);
- if (result == -1)
- /* If there are ever more than 63 signals, we need to recode this
- in assembler since we wouldn't be able to distinguish a mask of
- all 1s from -1, but for now, we're doing just fine... */
- return result;
-
- if (oset)
- {
- oset->__val[0] = result;
- result = _SIGSET_NWORDS;
- while (--result > 0)
- oset->__val[result] = 0;
- }
- return 0;
-}
-
-weak_alias (__sigprocmask, sigprocmask);
diff --git a/sysdeps/unix/sysv/linux/alpha/sigsuspend.S b/sysdeps/unix/sysv/linux/alpha/sigsuspend.S
deleted file mode 100644
index 6863c07ec1..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sigsuspend.S
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright (C) 1993,1995,1996,1997,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger <davidm@cs.arizona.edu>, 1995.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* sigsuspend is a special syscall since it needs to dereference the
- sigset. This will have to change when we have more than 64 signals. */
-
-#ifndef NO_CANCELLATION
-#include <sysdep.h>
-
-#undef PSEUDO_PREPARE_ARGS
-#define PSEUDO_PREPARE_ARGS ldq a0, 0(a0);
-
-PSEUDO(__sigsuspend_nocancel, sigsuspend, 1)
- ret
-/* Use END, not PSEUDO_END, so that we don't issue two $syscall_error
- symbols; we'll jump into __sigsuspend for the error case. */
-END(__sigsuspend_nocancel)
-#endif /* NO_CANCELLATION */
-
-#include <sysdep-cancel.h>
-
-#undef PSEUDO_PREPARE_ARGS
-#define PSEUDO_PREPARE_ARGS ldq a0, 0(a0);
-
-PSEUDO(__sigsuspend, sigsuspend, 1)
- ret
-PSEUDO_END(__sigsuspend)
-libc_hidden_def (__sigsuspend)
-weak_alias (__sigsuspend, sigsuspend)
-strong_alias (__sigsuspend, __libc_sigsuspend)
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/acct.h b/sysdeps/unix/sysv/linux/alpha/sys/acct.h
deleted file mode 100644
index 1e00006ef7..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sys/acct.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright (C) 1996, 1997, 2000 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_ACCT_H
-
-#define _SYS_ACCT_H 1
-#include <features.h>
-
-#define __need_time_t
-#include <time.h>
-
-
-__BEGIN_DECLS
-
-#define ACCT_COMM 16
-
-struct acct
- {
- char ac_comm[ACCT_COMM]; /* Accounting command name. */
- time_t ac_utime; /* Accounting user time. */
- time_t ac_stime; /* Accounting system time. */
- time_t ac_etime; /* Accounting elapsed time. */
- time_t ac_btime; /* Beginning time. */
- unsigned int ac_uid; /* Accounting user ID. */
- unsigned int ac_gid; /* Accounting group ID. */
- unsigned int ac_tty; /* Controlling tty. */
- /* Please note that the value of the `ac_tty' field, a device number,
- is encoded differently in the kernel and for the libc dev_t type. */
- char ac_flag; /* Accounting flag. */
- long int ac_minflt; /* Accounting minor pagefaults. */
- long int ac_majflt; /* Accounting major pagefaults. */
- long int ac_exitcode; /* Accounting process exitcode. */
- };
-
-enum
- {
- AFORK = 0001, /* Has executed fork, but no exec. */
- ASU = 0002, /* Used super-user privileges. */
- ACORE = 0004, /* Dumped core. */
- AXSIG = 0010 /* Killed by a signal. */
- };
-
-#define AHZ 100
-
-
-/* Switch process accounting on and off. */
-extern int acct (__const char *__filename) __THROW;
-
-__END_DECLS
-
-#endif /* sys/acct.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/epoll.h b/sysdeps/unix/sysv/linux/alpha/sys/epoll.h
deleted file mode 100644
index 9f983a5156..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sys/epoll.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Copyright (C) 2002-2006, 2007, 2008 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_EPOLL_H
-#define _SYS_EPOLL_H 1
-
-#include <stdint.h>
-#include <sys/types.h>
-
-/* Get __sigset_t. */
-#include <bits/sigset.h>
-
-#ifndef __sigset_t_defined
-# define __sigset_t_defined
-typedef __sigset_t sigset_t;
-#endif
-
-
-/* Flags to be passed to epoll_create2. */
-enum
- {
- EPOLL_CLOEXEC = 010000000,
-#define EPOLL_CLOEXEC EPOLL_CLOEXEC
- EPOLL_NONBLOCK = 04
-#define EPOLL_NONBLOCK EPOLL_NONBLOCK
- };
-
-
-enum EPOLL_EVENTS
- {
- EPOLLIN = 0x001,
-#define EPOLLIN EPOLLIN
- EPOLLPRI = 0x002,
-#define EPOLLPRI EPOLLPRI
- EPOLLOUT = 0x004,
-#define EPOLLOUT EPOLLOUT
- EPOLLRDNORM = 0x040,
-#define EPOLLRDNORM EPOLLRDNORM
- EPOLLRDBAND = 0x080,
-#define EPOLLRDBAND EPOLLRDBAND
- EPOLLWRNORM = 0x100,
-#define EPOLLWRNORM EPOLLWRNORM
- EPOLLWRBAND = 0x200,
-#define EPOLLWRBAND EPOLLWRBAND
- EPOLLMSG = 0x400,
-#define EPOLLMSG EPOLLMSG
- EPOLLERR = 0x008,
-#define EPOLLERR EPOLLERR
- EPOLLHUP = 0x010,
-#define EPOLLHUP EPOLLHUP
- EPOLLRDHUP = 0x2000,
-#define EPOLLRDHUP EPOLLRDHUP
- EPOLLONESHOT = (1 << 30),
-#define EPOLLONESHOT EPOLLONESHOT
- EPOLLET = (1 << 31)
-#define EPOLLET EPOLLET
- };
-
-
-/* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */
-#define EPOLL_CTL_ADD 1 /* Add a file descriptor to the interface. */
-#define EPOLL_CTL_DEL 2 /* Remove a file descriptor from the interface. */
-#define EPOLL_CTL_MOD 3 /* Change file descriptor epoll_event structure. */
-
-
-typedef union epoll_data
-{
- void *ptr;
- int fd;
- uint32_t u32;
- uint64_t u64;
-} epoll_data_t;
-
-struct epoll_event
-{
- uint32_t events; /* Epoll events */
- epoll_data_t data; /* User data variable */
-};
-
-
-__BEGIN_DECLS
-
-/* Creates an epoll instance. Returns an fd for the new instance.
- The "size" parameter is a hint specifying the number of file
- descriptors to be associated with the new instance. The fd
- returned by epoll_create() should be closed with close(). */
-extern int epoll_create (int __size) __THROW;
-
-/* Same as epoll_create but with an additional FLAGS parameter. */
-extern int epoll_create2 (int __size, int __flags) __THROW;
-
-
-/* Manipulate an epoll instance "epfd". Returns 0 in case of success,
- -1 in case of error ( the "errno" variable will contain the
- specific error code ) The "op" parameter is one of the EPOLL_CTL_*
- constants defined above. The "fd" parameter is the target of the
- operation. The "event" parameter describes which events the caller
- is interested in and any associated user data. */
-extern int epoll_ctl (int __epfd, int __op, int __fd,
- struct epoll_event *__event) __THROW;
-
-
-/* Wait for events on an epoll instance "epfd". Returns the number of
- triggered events returned in "events" buffer. Or -1 in case of
- error with the "errno" variable set to the specific error code. The
- "events" parameter is a buffer that will contain triggered
- events. The "maxevents" is the maximum number of events to be
- returned ( usually size of "events" ). The "timeout" parameter
- specifies the maximum wait time in milliseconds (-1 == infinite).
-
- This function is a cancellation point and therefore not marked with
- __THROW. */
-extern int epoll_wait (int __epfd, struct epoll_event *__events,
- int __maxevents, int __timeout);
-
-
-/* Same as epoll_wait, but the thread's signal mask is temporarily
- and atomically replaced with the one provided as parameter.
-
- This function is a cancellation point and therefore not marked with
- __THROW. */
-extern int epoll_pwait (int __epfd, struct epoll_event *__events,
- int __maxevents, int __timeout,
- __const __sigset_t *__ss);
-
-__END_DECLS
-
-#endif /* sys/epoll.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/eventfd.h b/sysdeps/unix/sysv/linux/alpha/sys/eventfd.h
deleted file mode 100644
index c8ce554625..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sys/eventfd.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (C) 2007, 2008 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_EVENTFD_H
-#define _SYS_EVENTFD_H 1
-
-#include <stdint.h>
-
-
-/* Type for event counter. */
-typedef uint64_t eventfd_t;
-
-/* Flags for signalfd. */
-enum
- {
- EFD_CLOEXEC = 010000000,
-#define EFD_CLOEXEC EFD_CLOEXEC
- EFD_NONBLOCK = 04
-#define EFD_NONBLOCK EFD_NONBLOCK
- };
-
-
-__BEGIN_DECLS
-
-/* Return file descriptor for generic event channel. Set initial
- value to COUNT. */
-extern int eventfd (int __count, int __flags) __THROW;
-
-/* Read event counter and possibly wait for events. */
-extern int eventfd_read (int __fd, eventfd_t *__value);
-
-/* Increment event counter. */
-extern int eventfd_write (int __fd, eventfd_t value);
-
-__END_DECLS
-
-#endif /* sys/eventfd.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/inotify.h b/sysdeps/unix/sysv/linux/alpha/sys/inotify.h
deleted file mode 100644
index d61c700d5d..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sys/inotify.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/* Copyright (C) 2005, 2006, 2008 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_INOTIFY_H
-#define _SYS_INOTIFY_H 1
-
-#include <stdint.h>
-
-
-/* Flags for the parameter of inotify_init1. */
-enum
- {
- IN_CLOEXEC = 010000000,
-#define IN_CLOEXEC IN_CLOEXEC
- IN_NONBLOCK = 04
-#define IN_NONBLOCK IN_NONBLOCK
- };
-
-
-/* Structure describing an inotify event. */
-struct inotify_event
-{
- int wd; /* Watch descriptor. */
- uint32_t mask; /* Watch mask. */
- uint32_t cookie; /* Cookie to synchronize two events. */
- uint32_t len; /* Length (including NULs) of name. */
- char name __flexarr; /* Name. */
-};
-
-
-/* Supported events suitable for MASK parameter of INOTIFY_ADD_WATCH. */
-#define IN_ACCESS 0x00000001 /* File was accessed. */
-#define IN_MODIFY 0x00000002 /* File was modified. */
-#define IN_ATTRIB 0x00000004 /* Metadata changed. */
-#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed. */
-#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed. */
-#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close. */
-#define IN_OPEN 0x00000020 /* File was opened. */
-#define IN_MOVED_FROM 0x00000040 /* File was moved from X. */
-#define IN_MOVED_TO 0x00000080 /* File was moved to Y. */
-#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* Moves. */
-#define IN_CREATE 0x00000100 /* Subfile was created. */
-#define IN_DELETE 0x00000200 /* Subfile was deleted. */
-#define IN_DELETE_SELF 0x00000400 /* Self was deleted. */
-#define IN_MOVE_SELF 0x00000800 /* Self was moved. */
-
-/* Events sent by the kernel. */
-#define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted. */
-#define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed. */
-#define IN_IGNORED 0x00008000 /* File was ignored. */
-
-/* Helper events. */
-#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close. */
-#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* Moves. */
-
-/* Special flags. */
-#define IN_ONLYDIR 0x01000000 /* Only watch the path if it is a
- directory. */
-#define IN_DONT_FOLLOW 0x02000000 /* Do not follow a sym link. */
-#define IN_MASK_ADD 0x20000000 /* Add to the mask of an already
- existing watch. */
-#define IN_ISDIR 0x40000000 /* Event occurred against dir. */
-#define IN_ONESHOT 0x80000000 /* Only send event once. */
-
-/* All events which a program can wait on. */
-#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE \
- | IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM \
- | IN_MOVED_TO | IN_CREATE | IN_DELETE \
- | IN_DELETE_SELF | IN_MOVE_SELF)
-
-
-__BEGIN_DECLS
-
-/* Create and initialize inotify instance. */
-extern int inotify_init (void) __THROW;
-
-/* Create and initialize inotify instance. */
-extern int inotify_init1 (int __flags) __THROW;
-
-/* Add watch of object NAME to inotify instance FD. Notify about
- events specified by MASK. */
-extern int inotify_add_watch (int __fd, const char *__name, uint32_t __mask)
- __THROW;
-
-/* Remove the watch specified by WD from the inotify instance FD. */
-extern int inotify_rm_watch (int __fd, uint32_t __wd) __THROW;
-
-__END_DECLS
-
-#endif /* sys/inotify.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/io.h b/sysdeps/unix/sysv/linux/alpha/sys/io.h
deleted file mode 100644
index 4334c63925..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sys/io.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright (C) 1996, 1999 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_IO_H
-
-#define _SYS_IO_H 1
-#include <features.h>
-
-__BEGIN_DECLS
-
-/* If TURN_ON is TRUE, request for permission to do direct i/o on the
- port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
- permission off for that range. This call requires root privileges.
-
- Portability note: not all Linux platforms support this call. Most
- platforms based on the PC I/O architecture probably will, however.
- E.g., Linux/Alpha for Alpha PCs supports this. */
-extern int ioperm (unsigned long int __from, unsigned long int __num,
- int __turn_on) __THROW;
-
-/* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
- access any I/O port is granted. This call requires root
- privileges. */
-extern int iopl (int __level) __THROW;
-
-/* Return the physical address of the DENSE I/O memory or NULL if none
- is available (e.g. on a jensen). */
-extern unsigned long int _bus_base (void) __THROW __attribute__ ((const));
-extern unsigned long int bus_base (void) __THROW __attribute__ ((const));
-
-/* Return the physical address of the SPARSE I/O memory. */
-extern unsigned long _bus_base_sparse (void) __THROW __attribute__ ((const));
-extern unsigned long bus_base_sparse (void) __THROW __attribute__ ((const));
-
-/* Return the HAE shift used by the SPARSE I/O memory. */
-extern int _hae_shift (void) __THROW __attribute__ ((const));
-extern int hae_shift (void) __THROW __attribute__ ((const));
-
-/* Previous three are deprecated in favour of the following, which
- knows about multiple PCI "hoses". Provide the PCI bus and dfn
- numbers just as to pciconfig_read/write. */
-
-enum __pciconfig_iobase_which
-{
- IOBASE_HOSE = 0, /* Return hose index. */
- IOBASE_SPARSE_MEM = 1, /* Return physical memory addresses. */
- IOBASE_DENSE_MEM = 2,
- IOBASE_SPARSE_IO = 3,
- IOBASE_DENSE_IO = 4
-};
-
-extern long pciconfig_iobase(enum __pciconfig_iobase_which __which,
- unsigned long int __bus,
- unsigned long int __dfn)
- __THROW __attribute__ ((const));
-
-/* Access PCI space protected from machine checks. */
-extern int pciconfig_read (unsigned long int __bus,
- unsigned long int __dfn,
- unsigned long int __off,
- unsigned long int __len,
- unsigned char *__buf) __THROW;
-
-extern int pciconfig_write (unsigned long int __bus,
- unsigned long int __dfn,
- unsigned long int __off,
- unsigned long int __len,
- unsigned char *__buf) __THROW;
-
-/* Userspace declarations. */
-extern unsigned int inb (unsigned long __port) __THROW;
-extern unsigned int inw (unsigned long __port) __THROW;
-extern unsigned int inl (unsigned long __port) __THROW;
-extern void outb (unsigned char __b, unsigned long __port) __THROW;
-extern void outw (unsigned short __w, unsigned long __port) __THROW;
-extern void outl (unsigned int __l, unsigned long __port) __THROW;
-
-__END_DECLS
-
-#endif /* _SYS_IO_H */
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/procfs.h b/sysdeps/unix/sysv/linux/alpha/sys/procfs.h
deleted file mode 100644
index bee51f94e2..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sys/procfs.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Copyright (C) 1996, 1997, 1999 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_PROCFS_H
-#define _SYS_PROCFS_H 1
-
-/* This is somehow modelled after the file of the same name on SysVr4
- systems. It provides a definition of the core file format for ELF
- used on Linux. */
-
-#include <features.h>
-#include <signal.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/ucontext.h>
-#include <sys/user.h>
-#include <asm/elf.h>
-
-__BEGIN_DECLS
-
-struct elf_siginfo
- {
- int si_signo; /* Signal number. */
- int si_code; /* Extra code. */
- int si_errno; /* Errno. */
- };
-
-/* Definitions to generate Intel SVR4-like core files. These mostly
- have the same names as the SVR4 types with "elf_" tacked on the
- front to prevent clashes with linux definitions, and the typedef
- forms have been avoided. This is mostly like the SVR4 structure,
- but more Linuxy, with things that Linux does not support and which
- gdb doesn't really use excluded. Fields present but not used are
- marked with "XXX". */
-struct elf_prstatus
- {
-#if 0
- long int pr_flags; /* XXX Process flags. */
- short int pr_why; /* XXX Reason for process halt. */
- short int pr_what; /* XXX More detailed reason. */
-#endif
- struct elf_siginfo pr_info; /* Info associated with signal. */
- short int pr_cursig; /* Current signal. */
- unsigned long int pr_sigpend; /* Set of pending signals. */
- unsigned long int pr_sighold; /* Set of held signals. */
-#if 0
- struct sigaltstack pr_altstack; /* Alternate stack info. */
- struct sigaction pr_action; /* Signal action for current sig. */
-#endif
- __pid_t pr_pid;
- __pid_t pr_ppid;
- __pid_t pr_pgrp;
- __pid_t pr_sid;
- struct timeval pr_utime; /* User time. */
- struct timeval pr_stime; /* System time. */
- struct timeval pr_cutime; /* Cumulative user time. */
- struct timeval pr_cstime; /* Cumulative system time. */
-#if 0
- long int pr_instr; /* Current instruction. */
-#endif
- elf_gregset_t pr_reg; /* GP registers. */
- int pr_fpvalid; /* True if math copro being used. */
- };
-
-
-#define ELF_PRARGSZ (80) /* Number of chars for args */
-
-struct elf_prpsinfo
- {
- char pr_state; /* Numeric process state. */
- char pr_sname; /* Char for pr_state. */
- char pr_zomb; /* Zombie. */
- char pr_nice; /* Nice val. */
- unsigned long int pr_flag; /* Flags. */
- unsigned int pr_uid;
- unsigned int pr_gid;
- int pr_pid, pr_ppid, pr_pgrp, pr_sid;
- /* Lots missing */
- char pr_fname[16]; /* Filename of executable. */
- char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
- };
-
-/* Addresses. */
-typedef void *psaddr_t;
-
-/* Register sets. Linux has different names. */
-typedef gregset_t prgregset_t;
-typedef fpregset_t prfpregset_t;
-
-/* We don't have any differences between processes and threads,
- therefore habe only ine PID type. */
-typedef __pid_t lwpid_t;
-
-
-typedef struct elf_prstatus prstatus_t;
-typedef struct elf_prpsinfo prpsinfo_t;
-
-__END_DECLS
-
-#endif /* sys/procfs.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/signalfd.h b/sysdeps/unix/sysv/linux/alpha/sys/signalfd.h
deleted file mode 100644
index 4cbe977768..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sys/signalfd.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright (C) 2007, 2008 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_SIGNALFD_H
-#define _SYS_SIGNALFD_H 1
-
-#define __need_sigset_t
-#include <signal.h>
-#include <stdint.h>
-
-
-struct signalfd_siginfo
-{
- uint32_t ssi_signo;
- int32_t ssi_errno;
- int32_t ssi_code;
- uint32_t ssi_pid;
- uint32_t ssi_uid;
- int32_t ssi_fd;
- uint32_t ssi_tid;
- uint32_t ssi_band;
- uint32_t ssi_overrun;
- uint32_t ssi_trapno;
- int32_t ssi_status;
- int32_t ssi_int;
- uint64_t ssi_ptr;
- uint64_t ssi_utime;
- uint64_t ssi_stime;
- uint64_t ssi_addr;
- uint8_t __pad[48];
-};
-
-/* Flags for signalfd. */
-enum
- {
- SFD_CLOEXEC = 010000000,
-#define SFD_CLOEXEC SFD_CLOEXEC
- SFD_NONBLOCK = 04
-#define SFD_NONBLOCK SFD_NONBLOCK
- };
-
-__BEGIN_DECLS
-
-/* Request notification for delivery of signals in MASK to be
- performed using descriptor FD.*/
-extern int signalfd (int __fd, const sigset_t *__mask, int __flags)
- __THROW __nonnull ((2));
-
-__END_DECLS
-
-#endif /* sys/signalfd.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/timerfd.h b/sysdeps/unix/sysv/linux/alpha/sys/timerfd.h
deleted file mode 100644
index 09d6ccf6cc..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sys/timerfd.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Copyright (C) 2008 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_TIMERFD_H
-#define _SYS_TIMERFD_H 1
-
-#include <time.h>
-
-
-/* Bits to be set in the FLAGS parameter of `timerfd_create'. */
-enum
- {
- TFD_CLOEXEC = 010000000,
-#define TFD_CLOEXEC TFD_CLOEXEC
- TFD_NONBLOCK = 04
-#define TFD_NONBLOCK TFD_NONBLOCK
- };
-
-
-/* Bits to be set in the FLAGS parameter of `timerfd_settime'. */
-enum
- {
- TFD_TIMER_ABSTIME = 1 << 0
-#define TFD_TIMER_ABSTIME TFD_TIMER_ABSTIME
- };
-
-
-__BEGIN_DECLS
-
-/* Return file descriptor for new interval timer source. */
-extern int timerfd_create (clockid_t __clock_id, int __flags) __THROW;
-
-/* Set next expiration time of interval timer source UFD to UTMR. If
- FLAGS has the TFD_TIMER_ABSTIME flag set the timeout value is
- absolute. Optionally return the old expiration time in OTMR. */
-extern int timerfd_settime (int __ufd, int __flags,
- __const struct itimerspec *__utmr,
- struct itimerspec *__otmr) __THROW;
-
-/* Return the next expiration time of UFD. */
-extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
-
-__END_DECLS
-
-#endif /* sys/timerfd.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h b/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
deleted file mode 100644
index 438293c62b..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright (C) 1998, 1999 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_UCONTEXT_H
-#define _SYS_UCONTEXT_H 1
-
-#include <features.h>
-#include <signal.h>
-
-#include <bits/sigcontext.h>
-
-
-/* Type for general register. */
-typedef long int greg_t;
-
-/* Number of general registers. */
-#define NGREG 33
-
-/* Container for all general registers. */
-typedef greg_t gregset_t[NGREG];
-
-/* Type for floating-point register. */
-typedef long int fpreg_t;
-
-/* Number of general registers. */
-#define NFPREG 32
-
-/* Container for all general registers. */
-typedef fpreg_t fpregset_t[NFPREG];
-
-
-/* A machine context is exactly a sigcontext. */
-typedef struct sigcontext mcontext_t;
-
-/* Userlevel context. */
-typedef struct ucontext
- {
- unsigned long int uc_flags;
- struct ucontext *uc_link;
- unsigned long __uc_osf_sigmask;
- stack_t uc_stack;
- mcontext_t uc_mcontext;
- __sigset_t uc_sigmask;
- } ucontext_t;
-
-#endif /* sys/ucontext.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/user.h b/sysdeps/unix/sysv/linux/alpha/sys/user.h
deleted file mode 100644
index 4cd29d2ff8..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sys/user.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright (C) 1999 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_USER_H
-#define _SYS_USER_H 1
-
-/* The whole purpose of this file is for gdb/strace and gdb/strace
- only. Don't read too much into it. Don't use it for anything other
- than gdb/strace unless you know what you are doing. */
-
-#include <asm/page.h>
-#include <asm/reg.h>
-
-struct user
-{
- unsigned long int regs[EF_SIZE / 8 + 32]; /* integer and fp regs */
- size_t u_tsize; /* text size (pages) */
- size_t u_dsize; /* data size (pages) */
- size_t u_ssize; /* stack size (pages) */
- unsigned long int start_code; /* text starting address */
- unsigned long int start_data; /* data starting address */
- unsigned long int start_stack; /* stack starting address */
- long int signal; /* signal causing core dump */
- struct regs *u_ar0; /* help gdb find registers */
- unsigned long int magic; /* identifies a core file */
- char u_comm[32]; /* user command name */
-};
-
-#define NBPG PAGE_SIZE
-#define UPAGES 1
-#define HOST_TEXT_START_ADDR (u.start_code)
-#define HOST_DATA_START_ADDR (u.start_data)
-#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
-
-#endif /* sys/user.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/syscall.S b/sysdeps/unix/sysv/linux/alpha/syscall.S
deleted file mode 100644
index 0c4081363a..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/syscall.S
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger <davidm@azstarnet.com>, 1996.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-
-/*
- * This is for COMPATIBILITY with Linux/x86 only. Linux/Alpha system
- * calls return an error indication in a3. This allows arbitrary 64bit
- * values to be returned in v0 (because negative values are not
- * mistaken as error numbers). However, C allows only one value to
- * be returned, so the interface below folds the error indication passed in
- * a3 back into v0: it sets v0 to -errno if an error occurs. Thus,
- * no negative 64bit numbers can be returned. To avoid this problem,
- * use assembly stubs wherever possible/convenient.
- *
- * Usage:
- *
- * long syscall(syscall_number, arg1, arg2, arg3, arg4, arg5)
- *
- * syscall_number = the index of the system call we're invoking
- * arg1-arg5 = up to 5 integer arguments to the system call
- *
- * We need to do some arg shifting: the kernel expects the
- * syscall number in v0 and the first five args in a0-a4.
- *
- */
-
-
-LEAF(__syscall, 0)
-#ifdef PROF
- ldgp gp, 0(pv)
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
- .prologue 1
-#else
- .prologue 0
-#endif
-
- mov a0, v0 /* Syscall number -> v0 */
- mov a1, a0 /* arg1-arg5 -> a0-a4 */
- mov a2, a1
- mov a3, a2
- mov a4, a3
- mov a5, a4
-
- call_pal PAL_callsys /* Invoke system call */
- bne a3, $error
- ret
-
-$error:
-#ifndef PROF
- br gp, 2f
-2: ldgp gp, 0(gp)
-#endif
- SYSCALL_ERROR_HANDLER
-
-END(__syscall)
-
-weak_alias (__syscall, syscall)
diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list
deleted file mode 100644
index de2c3ceac0..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/syscalls.list
+++ /dev/null
@@ -1,55 +0,0 @@
-# File name Caller Syscall name # args Strong name Weak names
-
-oldmsgctl EXTRA msgctl i:iip __old_msgctl msgctl@GLIBC_2.0
-msgget - msgget i:ii __msgget msgget
-msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv
-msgsnd - msgsnd Ci:ibni __msgsnd msgsnd
-shmat - osf_shmat i:ipi __shmat shmat
-oldshmctl EXTRA shmctl i:iip __old_shmctl shmctl@GLIBC_2.0
-shmdt - shmdt i:s __shmdt shmdt
-shmget - shmget i:iii __shmget shmget
-semop - semop i:ipi __semop semop
-semtimedop - semtimedop i:ipip semtimedop
-semget - semget i:iii __semget semget
-oldsemctl EXTRA semctl i:iiii __old_semctl semctl@GLIBC_2.0
-
-sigstack - sigstack 2 sigstack
-vfork - vfork 0 __vfork vfork
-
-getpriority - getpriority i:ii __getpriority getpriority
-
-# proper socket implementations:
-accept - accept Ci:iBN __libc_accept __accept accept
-bind - bind i:ipi __bind bind
-connect - connect Ci:ipi __libc_connect __connect_internal __connect connect
-getpeername - getpeername i:ipp __getpeername getpeername
-getsockname - getsockname i:ipp __getsockname getsockname
-getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
-listen - listen i:ii __listen listen
-recv - recv Ci:ibni __libc_recv __recv recv
-recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom
-recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg
-send - send Ci:ibni __libc_send __send send
-sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg
-sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto
-setsockopt - setsockopt i:iiibn __setsockopt setsockopt
-shutdown - shutdown i:ii __shutdown shutdown
-socket - socket i:iii __socket socket
-socketpair - socketpair i:iiif __socketpair socketpair
-
-ptrace - ptrace 4 __ptrace ptrace
-
-# access pci space protected from machine checks:
-pciconfig_read EXTRA pciconfig_read 5 pciconfig_read
-pciconfig_write EXTRA pciconfig_write 5 pciconfig_write
-pciconfig_iobase EXTRA pciconfig_iobase 3 __pciconfig_iobase pciconfig_iobase
-
-# support old timeval32 entry points
-osf_select - osf_select C:5 __select_tv32 __select@GLIBC_2.0 select@GLIBC_2.0
-osf_gettimeofday - osf_gettimeofday 2 __gettimeofday_tv32 __gettimeofday@GLIBC_2.0 gettimeofday@GLIBC_2.0
-osf_settimeofday - osf_settimeofday 2 __settimeofday_tv32 settimeofday@GLIBC_2.0
-osf_getitimer - osf_getitimer 2 __getitimer_tv32 getitimer@GLIBC_2.0
-osf_setitimer - osf_setitimer 3 __setitimer_tv32 setitimer@GLIBC_2.0
-osf_utimes - osf_utimes 2 __utimes_tv32 utimes@GLIBC_2.0
-osf_getrusage - osf_getrusage 2 __getrusage_tv32 getrusage@GLIBC_2.0
-osf_wait4 - osf_wait4 2 __wait4_tv32 wait4@GLIBC_2.0
diff --git a/sysdeps/unix/sysv/linux/alpha/sysconf.c b/sysdeps/unix/sysv/linux/alpha/sysconf.c
deleted file mode 100644
index 3e5b4ee85f..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sysconf.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/* Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <assert.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-
-static long int linux_sysconf (int name);
-
-#define CSHAPE(totalsize, linesize, assoc) \
- ((totalsize & ~0xff) | (linesize << 4) | assoc)
-
-extern long __libc_alpha_cache_shape[4];
-
-static inline unsigned long
-implver (void)
-{
- unsigned long i;
-#if __GNUC_PREREQ(3,3)
- i = __builtin_alpha_implver ();
-#else
- asm ("implver %0" : "=r" (i));
-#endif
- return i;
-}
-
-static inline unsigned long
-amask (unsigned long x)
-{
- unsigned long r;
-#if __GNUC_PREREQ(3,3)
- r = __builtin_alpha_amask (x);
-#else
- asm ("amask %1,%0" : "=r"(r) : "Ir"(x));
-#endif
- return r;
-}
-
-/* Get the value of the system variable NAME. */
-long int
-__sysconf (int name)
-{
- long shape, index;
-
- /* We only handle the cache information here (for now). */
- if (name < _SC_LEVEL1_ICACHE_SIZE || name > _SC_LEVEL4_CACHE_LINESIZE)
- return linux_sysconf (name);
-
- /* No Alpha has L4 caches. */
- if (name >= _SC_LEVEL4_CACHE_SIZE)
- return -1;
-
- index = (name - _SC_LEVEL1_ICACHE_SIZE) / 3;
- shape = __libc_alpha_cache_shape[index];
- if (shape == -2)
- {
- long shape_l1i, shape_l1d, shape_l2, shape_l3 = -1;
-
- /* ??? In the cases below for which we do not know L1 cache sizes,
- we could do timings to measure sizes. But for the Bcache, it's
- generally big enough that (without additional help) TLB effects
- get in the way. We'd either need to be able to allocate large
- pages or have the kernel do the timings from KSEG. Fortunately,
- kernels beginning with 2.6.5 will pass us this info in auxvec. */
-
- switch (implver())
- {
- case 0: /* EV4 */
- /* EV4/LCA45 had 8k L1 caches; EV45 had 16k L1 caches. */
- /* EV4/EV45 had 128k to 16M 32-byte direct Bcache. LCA45
- had 64k to 8M 8-byte direct Bcache. Can't tell. */
- shape_l1i = shape_l1d = shape_l2 = CSHAPE (0, 5, 1);
- break;
-
- case 1: /* EV5 */
- if (amask (1 << 8))
- {
- /* MAX insns not present; either EV5 or EV56. */
- shape_l1i = shape_l1d = CSHAPE(8*1024, 5, 1);
- /* ??? L2 and L3 *can* be configured as 32-byte line. */
- shape_l2 = CSHAPE (96*1024, 6, 3);
- /* EV5/EV56 has 1M to 16M Bcache. */
- shape_l3 = CSHAPE (0, 6, 1);
- }
- else
- {
- /* MAX insns present; either PCA56 or PCA57. */
- /* PCA56 had 16k 64-byte cache; PCA57 had 32k Icache. */
- /* PCA56 had 8k 64-byte cache; PCA57 had 16k Dcache. */
- /* PCA5[67] had 512k to 4M Bcache. */
- shape_l1i = shape_l1d = shape_l2 = CSHAPE (0, 6, 1);
- }
- break;
-
- case 2: /* EV6 */
- shape_l1i = shape_l1d = CSHAPE(64*1024, 6, 2);
- /* EV6/EV67/EV68* had 1M to 16M Bcache. */
- shape_l2 = CSHAPE (0, 6, 1);
- break;
-
- case 3: /* EV7 */
- shape_l1i = shape_l1d = CSHAPE(64*1024, 6, 2);
- shape_l2 = CSHAPE(7*1024*1024/4, 6, 7);
- break;
-
- default:
- shape_l1i = shape_l1d = shape_l2 = 0;
- break;
- }
-
- __libc_alpha_cache_shape[0] = shape_l1i;
- __libc_alpha_cache_shape[1] = shape_l1d;
- __libc_alpha_cache_shape[2] = shape_l2;
- __libc_alpha_cache_shape[3] = shape_l3;
- shape = __libc_alpha_cache_shape[index];
- }
-
- if (shape <= 0)
- return shape;
-
- switch (name % 3)
- {
- case 0: /* total size */
- return shape & -0x100;
- case 1: /* associativity */
- return shape & 0xf;
- default: /* line size */
- return 1L << ((shape >> 4) & 0xf);
- }
-}
-
-/* Now the generic Linux version. */
-#undef __sysconf
-#define __sysconf static linux_sysconf
-#include "../sysconf.c"
diff --git a/sysdeps/unix/sysv/linux/alpha/sysdep.h b/sysdeps/unix/sysv/linux/alpha/sysdep.h
deleted file mode 100644
index f0661d1622..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sysdep.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2002, 2003, 2004, 2007
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
-
- 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _LINUX_ALPHA_SYSDEP_H
-#define _LINUX_ALPHA_SYSDEP_H 1
-
-#ifdef __ASSEMBLER__
-#include <asm/pal.h>
-#include <alpha/regdef.h>
-#endif
-
-/* There is some commonality. */
-#include <sysdeps/unix/alpha/sysdep.h>
-
-#include <tls.h>
-
-/* For Linux we can use the system call table in the header file
- /usr/include/asm/unistd.h
- of the kernel. But these symbols do not follow the SYS_* syntax
- so we have to redefine the `SYS_ify' macro here. */
-#undef SYS_ify
-#ifdef __STDC__
-# define SYS_ify(syscall_name) __NR_##syscall_name
-#else
-# define SYS_ify(syscall_name) __NR_/**/syscall_name
-#endif
-
-/* Define some aliases to make automatic syscall generation work
- properly. The SYS_* variants are for the benefit of the files in
- sysdeps/unix. */
-#define __NR_getpid __NR_getxpid
-#define __NR_getuid __NR_getxuid
-#define __NR_getgid __NR_getxgid
-#define SYS_getpid __NR_getxpid
-#define SYS_getuid __NR_getxuid
-#define SYS_getgid __NR_getxgid
-
-/*
- * Some syscalls no Linux program should know about:
- */
-#define __NR_osf_sigprocmask 48
-#define __NR_osf_shmat 209
-#define __NR_osf_getsysinfo 256
-#define __NR_osf_setsysinfo 257
-
-/* Help old kernel headers where particular syscalls are not available. */
-#ifndef __NR_semtimedop
-# define __NR_semtimedop 423
-#endif
-
-/* This is a kludge to make syscalls.list find these under the names
- pread and pwrite, since some kernel headers define those names
- and some define the *64 names for the same system calls. */
-#if !defined __NR_pread && defined __NR_pread64
-# define __NR_pread __NR_pread64
-#endif
-#if !defined __NR_pwrite && defined __NR_pwrite64
-# define __NR_pwrite __NR_pwrite64
-#endif
-
-/*
- * In order to get the hidden arguments for rt_sigaction set up
- * properly, we need to call the assembly version. This shouldn't
- * happen except for inside sigaction.c, where we handle this
- * specially. Catch other uses and error.
- */
-
-#undef INLINE_SYSCALL
-#define INLINE_SYSCALL(name, nr, args...) \
-({ \
- extern char ChEcK[__NR_##name == __NR_rt_sigaction ? -1 : 1] \
- __attribute__((unused)); \
- INLINE_SYSCALL1(name, nr, args); \
-})
-
-#undef INTERNAL_SYSCALL
-#define INTERNAL_SYSCALL(name, err_out, nr, args...) \
-({ \
- extern char ChEcK[__NR_##name == __NR_rt_sigaction ? -1 : 1] \
- __attribute__((unused)); \
- INTERNAL_SYSCALL1(name, err_out, nr, args); \
-})
-
-#endif /* _LINUX_ALPHA_SYSDEP_H */
diff --git a/sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym b/sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym
deleted file mode 100644
index f95ff75636..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym
+++ /dev/null
@@ -1,18 +0,0 @@
-#include <stddef.h>
-#include <sys/ucontext.h>
-
---
-UC_LINK offsetof (ucontext_t, uc_link)
-UC_OSF_SIGMASK offsetof (ucontext_t, __uc_osf_sigmask)
-UC_STACK offsetof (ucontext_t, uc_stack)
-UC_SIGCTX offsetof (ucontext_t, uc_mcontext)
-UC_SIGMASK offsetof (ucontext_t, uc_sigmask)
-SC_REGS offsetof (struct sigcontext, sc_regs)
-SC_FPREGS offsetof (struct sigcontext, sc_fpregs)
-SC_PC offsetof (struct sigcontext, sc_pc)
-SC_PS offsetof (struct sigcontext, sc_ps)
-SC_FPCRS offsetof (struct sigcontext, sc_fpcr)
-SC_MASK offsetof (struct sigcontext, sc_mask)
-SC_FPCR offsetof (struct sigcontext, sc_fpcr)
-SS_SP offsetof (stack_t, ss_sp)
-SS_SIZE offsetof (stack_t, ss_size)
diff --git a/sysdeps/unix/sysv/linux/alpha/utimes.S b/sysdeps/unix/sysv/linux/alpha/utimes.S
deleted file mode 100644
index 0dd0a9372b..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/utimes.S
+++ /dev/null
@@ -1,123 +0,0 @@
-/* Copyright (C) 1998, 2003, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#define _ERRNO_H 1
-#include <bits/errno.h>
-#include <kernel-features.h>
-
-.text
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-#define UTIMES __utimes_tv64
-#else
-#define UTIMES __utimes
-#endif
-
-#if defined __ASSUME_TIMEVAL64
-PSEUDO(UTIMES, utimes, 2)
- ret
-PSEUDO_END(UTIMES)
-#else
-/* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-
- So now we have to do compatibility stuff. */
-
-/* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. */
-.comm __libc_missing_axp_tv64, 4
-
-LEAF(UTIMES, 16)
- ldgp gp, 0(pv)
- subq sp, 16, sp
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- ldl t0, __libc_missing_axp_tv64
-
- /* Save arguments in case we do need to fall back. */
- stq a0, 0(sp)
- stq a1, 8(sp)
-
- bne t0, $do32
-
- ldi v0, SYS_ify(utimes)
- callsys
- bne a3, $err64
-
- /* Everything ok. */
- addq sp, 16, sp
- ret
-
- /* If we didn't get ENOSYS, it is a real error. */
- .align 3
-$err64: cmpeq v0, ENOSYS, t0
- beq t0, $error
- stl t0, __libc_missing_axp_tv64
-
- /* Recover the saved arguments. */
- ldq a1, 8(sp)
- ldq a0, 0(sp)
-
- .align 3
-$do32:
- /* Conditionally bounce values down. */
- beq a1, 1f
- ldq t0, 0(a1)
- ldq t1, 8(a1)
- ldq t2, 16(a1)
- ldq t3, 24(a1)
- stl t0, 0(sp)
- stl t1, 4(sp)
- stl t2, 8(sp)
- stl t3, 12(sp)
- mov sp, a1
-
-1: ldi v0, SYS_ify(osf_utimes)
- callsys
- bne a3, $error
-
- addq sp, 16, sp
- ret
-
- .align 3
-$error:
- addq sp, 16, sp
- SYSCALL_ERROR_HANDLER
-
-END(UTIMES)
-#endif /* __ASSUME_TIMEVAL64 */
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-default_symbol_version (__utimes_tv64, __utimes, GLIBC_2.1)
-
-/* It seems to me to be a misfeature of the assembler that we can only
- have one version-alias per symbol. So create an alias ourselves.
- The 'p' is for 'public'. *Shrug* */
-strong_alias (__utimes_tv64, __utimes_tv64p)
-default_symbol_version (__utimes_tv64p, utimes, GLIBC_2.1)
-#else
-weak_alias (__utimes, utimes)
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/wait4.S b/sysdeps/unix/sysv/linux/alpha/wait4.S
deleted file mode 100644
index 634993deb8..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/wait4.S
+++ /dev/null
@@ -1,156 +0,0 @@
-/* Copyright (C) 1998, 2003, 2006 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#define _ERRNO_H 1
-#include <bits/errno.h>
-#include <kernel-features.h>
-
-.text
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-#define WAIT4 __wait4_tv64
-#else
-#define WAIT4 __wait4
-#endif
-
-#if defined __ASSUME_TIMEVAL64
-PSEUDO(WAIT4, wait4, 4)
- ret
-PSEUDO_END(WAIT4)
-#else
-/* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-
- So now we have to do compatibility stuff. */
-
-/* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. */
-.comm __libc_missing_axp_tv64, 4
-
-LEAF(WAIT4, 32)
- ldgp gp, 0(pv)
- subq sp, 32, sp
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- ldl t0, __libc_missing_axp_tv64
-
- /* Save arguments in case we do need to fall back. */
- stq a0, 0(sp)
- stq a1, 8(sp)
- stq a2, 16(sp)
- stq a3, 24(sp)
-
- bne t0, $do32
-
- ldi v0, SYS_ify(wait4)
- callsys
- bne a3, $err64
-
- /* Everything ok. */
- addq sp, 32, sp
- ret
-
- /* If we didn't get ENOSYS, it is a real error. */
- .align 3
-$err64: cmpeq v0, ENOSYS, t0
- beq t0, $error
- stl t0, __libc_missing_axp_tv64
-
- /* Recover the saved arguments. */
- ldq a3, 24(sp)
- ldq a2, 16(sp)
- ldq a1, 8(sp)
- ldq a0, 0(sp)
-
- .align 3
-$do32: ldi v0, SYS_ify(osf_wait4)
- callsys
- bne a3, $error
-
- /* Copy back to proper format. */
- ldq a3, 24(sp)
- beq a3, 2f
- ldl t0, 0(a3) # ru_utime.tv_sec
- ldl t1, 4(a3) # ru_utime.tv_usec
- ldl t2, 8(a3) # ru_stime.tv_sec
- ldl t3, 12(a3) # ru_stime.tv_usec
- ldt $f15, 16(a3) # ru_maxrss
- ldt $f16, 24(a3) # ru_ixrss
- ldt $f17, 32(a3) # ru_idrss
- ldt $f18, 40(a3) # ru_isrss
- ldt $f19, 48(a3) # ru_minflt
- ldt $f20, 56(a3) # ru_majflt
- ldt $f21, 64(a3) # ru_nswap
- ldt $f22, 72(a3) # ru_inblock
- ldt $f23, 80(a3) # ru_oublock
- ldt $f24, 88(a3) # ru_msgsend
- ldt $f25, 96(a3) # ru_msgrcv
- ldt $f26, 104(a3) # ru_nsignals
- ldt $f27, 112(a3) # ru_nvcsw
- .set noat
- ldt $f28, 120(a3) # ru_nivcsw
- stq t0, 0(a3)
- stq t1, 8(a3)
- stq t2, 16(a3)
- stq t3, 24(a3)
- stt $f15, 32(a3)
- stt $f16, 40(a3)
- stt $f17, 48(a3)
- stt $f18, 56(a3)
- stt $f19, 64(a3)
- stt $f20, 72(a3)
- stt $f21, 80(a3)
- stt $f22, 88(a3)
- stt $f23, 96(a3)
- stt $f24, 104(a3)
- stt $f25, 112(a3)
- stt $f26, 120(a3)
- stt $f27, 128(a3)
- stt $f28, 136(a3)
- .set at
-
-2: addq sp, 32, sp
- ret
-
- .align 3
-$error:
- addq sp, 32, sp
- SYSCALL_ERROR_HANDLER
-
-END(WAIT4)
-#endif /* __ASSUME_TIMEVAL64 */
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-default_symbol_version (__wait4_tv64, __wait4, GLIBC_2.1)
-
-/* It seems to me to be a misfeature of the assembler that we can only
- have one version-alias per symbol. So create an alias ourselves.
- The 'p' is for 'public'. *Shrug* */
-strong_alias (__wait4_tv64, __wait4_tv64p)
-default_symbol_version (__wait4_tv64p, wait4, GLIBC_2.1)
-#else
-weak_alias (__wait4, wait4)
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/wordexp.c b/sysdeps/unix/sysv/linux/alpha/wordexp.c
deleted file mode 100644
index c2972e40c2..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/wordexp.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Copyright (C) 2001, 2004, 2005 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <shlib-compat.h>
-
-/* For Linux/Alpha we have to make the wordexp symbols versioned. */
-#define wordexp(words, pwordexp, flags) \
- __new_wordexp (words, pwordexp, flags)
-
-#include <posix/wordexp.c>
-
-versioned_symbol (libc, __new_wordexp, wordexp, GLIBC_2_2_2);
-
-
-#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2_2)
-/* The old, incorrect wordexp_t definition. */
-typedef struct
- {
- int we_wordc; /* Count of words matched. */
- char **we_wordv; /* List of expanded words. */
- int we_offs; /* Slots to reserve in `we_wordv'. */
- } old_wordexp_t;
-
-
-int
-attribute_compat_text_section
-__old_wordexp (const char *words, old_wordexp_t *pwordexp, int flags)
-{
- wordexp_t we;
- int result;
-
- we.we_wordc = pwordexp->we_wordc;
- we.we_wordv = pwordexp->we_wordv;
- we.we_offs = pwordexp->we_offs;
-
- result = __new_wordexp (words, &we, flags);
-
- pwordexp->we_wordc = we.we_wordc;
- pwordexp->we_wordv = we.we_wordv;
- pwordexp->we_offs = we.we_offs;
-
- return result;
-}
-compat_symbol (libc, __old_wordexp, wordexp, GLIBC_2_1);
-#endif
diff --git a/sysdeps/unix/sysv/linux/alpha/xstat.c b/sysdeps/unix/sysv/linux/alpha/xstat.c
deleted file mode 100644
index b7488e425c..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/xstat.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* xstat using old-style Unix stat system call.
- Copyright (C) 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define __xstat64 __xstat64_disable
-
-#include <errno.h>
-#include <stddef.h>
-#include <sys/stat.h>
-#include <kernel_stat.h>
-#include <sysdep.h>
-#include <sys/syscall.h>
-#include <xstatconv.h>
-
-#undef __xstat64
-
-
-/* Get information about the file NAME in BUF. */
-int
-__xstat (int vers, const char *name, struct stat *buf)
-{
- INTERNAL_SYSCALL_DECL (err);
- int result, errno_out;
- struct kernel_stat kbuf;
-
- if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
- {
- result = INTERNAL_SYSCALL (stat64, err, 2, name, buf);
- if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
- return result;
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
- if (errno_out != ENOSYS)
- goto fail;
- __libc_missing_axp_stat64 = 1;
- }
-
- result = INTERNAL_SYSCALL (stat, err, 2, name, &kbuf);
- if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
- return __xstat_conv (vers, &kbuf, buf);
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err);
-
- fail:
- __set_errno (errno_out);
- return -1;
-}
-hidden_def (__xstat)
-weak_alias (__xstat, _xstat);
-strong_alias (__xstat, __xstat64);
-hidden_ver (__xstat, __xstat64)
diff --git a/sysdeps/unix/sysv/linux/alpha/xstatconv.c b/sysdeps/unix/sysv/linux/alpha/xstatconv.c
deleted file mode 100644
index a193b62ad1..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/xstatconv.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/* Convert between the kernel's `struct stat' format, and libc's.
- Copyright (C) 1997, 2003, 2004 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <errno.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <kernel_stat.h>
-#include <xstatconv.h>
-
-
-int __libc_missing_axp_stat64;
-
-int
-__xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
-{
- switch (vers)
- {
- case _STAT_VER_KERNEL:
- *(struct kernel_stat *) ubuf = *kbuf;
- break;
-
- case _STAT_VER_GLIBC2:
- {
- struct glibc2_stat *buf = ubuf;
-
- buf->st_dev = kbuf->st_dev;
- buf->st_ino = kbuf->st_ino;
- buf->st_mode = kbuf->st_mode;
- buf->st_nlink = kbuf->st_nlink;
- buf->st_uid = kbuf->st_uid;
- buf->st_gid = kbuf->st_gid;
- buf->st_rdev = kbuf->st_rdev;
- buf->st_size = kbuf->st_size;
- buf->st_atime = kbuf->st_atime;
- buf->st_mtime = kbuf->st_mtime;
- buf->st_ctime = kbuf->st_ctime;
- buf->st_blksize = kbuf->st_blksize;
- buf->st_blocks = kbuf->st_blocks;
- buf->st_flags = kbuf->st_flags;
- buf->st_gen = kbuf->st_gen;
- }
- break;
-
- case _STAT_VER_GLIBC2_1:
- {
- struct glibc21_stat *buf = ubuf;
-
- buf->st_dev = kbuf->st_dev;
- buf->st_ino = kbuf->st_ino;
- buf->st_mode = kbuf->st_mode;
- buf->st_nlink = kbuf->st_nlink;
- buf->st_uid = kbuf->st_uid;
- buf->st_gid = kbuf->st_gid;
- buf->st_rdev = kbuf->st_rdev;
- buf->st_size = kbuf->st_size;
- buf->st_atime = kbuf->st_atime;
- buf->st_mtime = kbuf->st_mtime;
- buf->st_ctime = kbuf->st_ctime;
- buf->st_blocks = kbuf->st_blocks;
- buf->st_blksize = kbuf->st_blksize;
- buf->st_flags = kbuf->st_flags;
- buf->st_gen = kbuf->st_gen;
- buf->__pad3 = 0;
- buf->__unused[0] = 0;
- buf->__unused[1] = 0;
- buf->__unused[2] = 0;
- buf->__unused[3] = 0;
- }
- break;
-
- case _STAT_VER_GLIBC2_3_4:
- {
- struct stat64 *buf = ubuf;
-
- buf->st_dev = kbuf->st_dev;
- buf->st_ino = kbuf->st_ino;
- buf->st_rdev = kbuf->st_rdev;
- buf->st_size = kbuf->st_size;
- buf->st_blocks = kbuf->st_blocks;
-
- buf->st_mode = kbuf->st_mode;
- buf->st_uid = kbuf->st_uid;
- buf->st_gid = kbuf->st_gid;
- buf->st_blksize = kbuf->st_blksize;
- buf->st_nlink = kbuf->st_nlink;
- buf->__pad0 = 0;
-
- buf->st_atime = kbuf->st_atime;
- buf->st_atimensec = 0;
- buf->st_mtime = kbuf->st_mtime;
- buf->st_mtimensec = 0;
- buf->st_ctime = kbuf->st_ctime;
- buf->st_ctimensec = 0;
-
- buf->__unused[0] = 0;
- buf->__unused[1] = 0;
- buf->__unused[2] = 0;
- }
- break;
-
- default:
- __set_errno (EINVAL);
- return -1;
- }
-
- return 0;
-}
diff --git a/sysdeps/unix/sysv/linux/bits/errno.h b/sysdeps/unix/sysv/linux/bits/errno.h
index 4de8cbba57..1f3d7af7e1 100644
--- a/sysdeps/unix/sysv/linux/bits/errno.h
+++ b/sysdeps/unix/sysv/linux/bits/errno.h
@@ -1,5 +1,5 @@
/* Error constants. Linux specific version.
- Copyright (C) 1996, 1997, 1998, 1999, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1996-1999, 2005, 2009 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
@@ -38,6 +38,10 @@
# define ENOTRECOVERABLE 131
# endif
+# ifndef ERFKILL
+# define ERFKILL 132
+# endif
+
# ifndef __ASSEMBLER__
/* Function to get address of global `errno' variable. */
extern int *__errno_location (void) __THROW __attribute__ ((__const__));
diff --git a/sysdeps/unix/sysv/linux/bits/poll.h b/sysdeps/unix/sysv/linux/bits/poll.h
index d7996b46c5..9dd75cb3af 100644
--- a/sysdeps/unix/sysv/linux/bits/poll.h
+++ b/sysdeps/unix/sysv/linux/bits/poll.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 2001, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2001, 2006, 2009 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
@@ -27,7 +27,7 @@
#define POLLPRI 0x002 /* There is urgent data to read. */
#define POLLOUT 0x004 /* Writing now will not block. */
-#ifdef __USE_XOPEN
+#if defined __USE_XOPEN || defined __USE_XOPEN2K8
/* These values are defined in XPG4.2. */
# define POLLRDNORM 0x040 /* Normal data may be read. */
# define POLLRDBAND 0x080 /* Priority data may be read. */
diff --git a/sysdeps/unix/sysv/linux/bits/posix_opt.h b/sysdeps/unix/sysv/linux/bits/posix_opt.h
index 37612e0bd5..69198a6650 100644
--- a/sysdeps/unix/sysv/linux/bits/posix_opt.h
+++ b/sysdeps/unix/sysv/linux/bits/posix_opt.h
@@ -1,5 +1,5 @@
/* Define POSIX options for Linux.
- Copyright (C) 1996,1997,1999,2000,2002,2003,2008
+ Copyright (C) 1996,1997,1999,2000,2002,2003,2008,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -32,25 +32,25 @@
#define _POSIX_SAVED_IDS 1
/* Priority scheduling is supported. */
-#define _POSIX_PRIORITY_SCHEDULING 200112L
+#define _POSIX_PRIORITY_SCHEDULING 200809L
/* Synchronizing file data is supported. */
-#define _POSIX_SYNCHRONIZED_IO 200112L
+#define _POSIX_SYNCHRONIZED_IO 200809L
/* The fsync function is present. */
-#define _POSIX_FSYNC 200112L
+#define _POSIX_FSYNC 200809L
/* Mapping of files to memory is supported. */
-#define _POSIX_MAPPED_FILES 200112L
+#define _POSIX_MAPPED_FILES 200809L
/* Locking of all memory is supported. */
-#define _POSIX_MEMLOCK 200112L
+#define _POSIX_MEMLOCK 200809L
/* Locking of ranges of memory is supported. */
-#define _POSIX_MEMLOCK_RANGE 200112L
+#define _POSIX_MEMLOCK_RANGE 200809L
/* Setting of memory protections is supported. */
-#define _POSIX_MEMORY_PROTECTION 200112L
+#define _POSIX_MEMORY_PROTECTION 200809L
/* Some filesystems allow all users to change file ownership. */
#define _POSIX_CHOWN_RESTRICTED 0
@@ -69,7 +69,7 @@
#define _XOPEN_SHM 1
/* Real-time signals are supported. */
-#define _POSIX_REALTIME_SIGNALS 200112L
+#define _POSIX_REALTIME_SIGNALS 200809L
/* The LFS interface is available, except for the asynchronous I/O. */
#define _LFS_LARGEFILE 1
@@ -77,10 +77,10 @@
#define _LFS64_STDIO 1
/* POSIX timers are available. */
-#define _POSIX_TIMERS 200112L
+#define _POSIX_TIMERS 200809L
/* POSIX shared memory objects are implemented. */
-#define _POSIX_SHARED_MEMORY_OBJECTS 200112L
+#define _POSIX_SHARED_MEMORY_OBJECTS 200809L
/* GNU libc provides regular expression handling. */
#define _POSIX_REGEXP 1
@@ -89,7 +89,7 @@
#define _POSIX_SHELL 1
/* The `spawn' function family is supported. */
-#define _POSIX_SPAWN 200112L
+#define _POSIX_SPAWN 200809L
/* The monotonic clock might be available. */
#define _POSIX_MONOTONIC_CLOCK 0
diff --git a/sysdeps/unix/sysv/linux/bits/resource.h b/sysdeps/unix/sysv/linux/bits/resource.h
index 95d64ed77f..cb3acf1622 100644
--- a/sysdeps/unix/sysv/linux/bits/resource.h
+++ b/sysdeps/unix/sysv/linux/bits/resource.h
@@ -1,5 +1,5 @@
/* Bit values & structures for resource limits. Linux version.
- Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004, 2005
+ Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004, 2005, 2008, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -158,10 +158,11 @@ enum __rusage_who
#define RUSAGE_SELF RUSAGE_SELF
/* All of its terminated child processes. */
- RUSAGE_CHILDREN = -1,
+ RUSAGE_CHILDREN = -1
#define RUSAGE_CHILDREN RUSAGE_CHILDREN
#ifdef __USE_GNU
+ ,
/* The calling thread. */
RUSAGE_THREAD = 1
# define RUSAGE_THREAD RUSAGE_THREAD
diff --git a/sysdeps/unix/sysv/linux/bits/sched.h b/sysdeps/unix/sysv/linux/bits/sched.h
index 8f694d70c4..8ba9eed6f0 100644
--- a/sysdeps/unix/sysv/linux/bits/sched.h
+++ b/sysdeps/unix/sysv/linux/bits/sched.h
@@ -1,6 +1,6 @@
/* Definitions of constants and data structure for POSIX 1003.1b-1993
scheduling interface.
- Copyright (C) 1996-1999,2001-2003,2005,2006,2007,2008
+ Copyright (C) 1996-1999,2001-2003,2005,2006,2007,2008,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -27,11 +27,14 @@
/* Scheduling algorithms. */
-#define SCHED_OTHER 0
-#define SCHED_FIFO 1
-#define SCHED_RR 2
+#define SCHED_OTHER 0
+#define SCHED_FIFO 1
+#define SCHED_RR 2
#ifdef __USE_GNU
-# define SCHED_BATCH 3
+# define SCHED_BATCH 3
+# define SCHED_IDLE 5
+
+# define SCHED_RESET_ON_FORK 0x40000000
#endif
#ifdef __USE_MISC
@@ -131,26 +134,31 @@ typedef struct
do { \
size_t __i; \
size_t __imax = (setsize) / sizeof (__cpu_mask); \
- cpu_set_t *__arr = (cpusetp); \
+ __cpu_mask *__bits = (cpusetp)->__bits; \
for (__i = 0; __i < __imax; ++__i) \
- __arr->__bits[__i] = 0; \
+ __bits[__i] = 0; \
} while (0)
# endif
# define __CPU_SET_S(cpu, setsize, cpusetp) \
(__extension__ \
({ size_t __cpu = (cpu); \
__cpu < 8 * (setsize) \
- ? ((cpusetp)->__bits[__CPUELT (__cpu)] |= __CPUMASK (__cpu)) : 0; }))
+ ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \
+ |= __CPUMASK (__cpu)) \
+ : 0; }))
# define __CPU_CLR_S(cpu, setsize, cpusetp) \
(__extension__ \
({ size_t __cpu = (cpu); \
__cpu < 8 * (setsize) \
- ? ((cpusetp)->__bits[__CPUELT (__cpu)] &= ~__CPUMASK (__cpu)) : 0; }))
+ ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \
+ &= ~__CPUMASK (__cpu)) \
+ : 0; }))
# define __CPU_ISSET_S(cpu, setsize, cpusetp) \
(__extension__ \
({ size_t __cpu = (cpu); \
__cpu < 8 * (setsize) \
- ? (((cpusetp)->__bits[__CPUELT (__cpu)] & __CPUMASK (__cpu))) != 0 \
+ ? ((((__const __cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \
+ & __CPUMASK (__cpu))) != 0 \
: 0; }))
# define __CPU_COUNT_S(setsize, cpusetp) \
@@ -162,12 +170,12 @@ typedef struct
# else
# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \
(__extension__ \
- ({ cpu_set_t *__arr1 = (cpusetp1); \
- cpu_set_t *__arr2 = (cpusetp2); \
+ ({ __const __cpu_mask *__arr1 = (cpusetp1)->__bits; \
+ __const __cpu_mask *__arr2 = (cpusetp2)->__bits; \
size_t __imax = (setsize) / sizeof (__cpu_mask); \
size_t __i; \
for (__i = 0; __i < __imax; ++__i) \
- if (__arr1->__bits[__i] != __arr2->__bits[__i]) \
+ if (__bits[__i] != __bits[__i]) \
break; \
__i == __imax; }))
# endif
@@ -175,12 +183,12 @@ typedef struct
# define __CPU_OP_S(setsize, destset, srcset1, srcset2, op) \
(__extension__ \
({ cpu_set_t *__dest = (destset); \
- cpu_set_t *__arr1 = (srcset1); \
- cpu_set_t *__arr2 = (srcset2); \
+ __const __cpu_mask *__arr1 = (srcset1)->__bits; \
+ __const __cpu_mask *__arr2 = (srcset2)->__bits; \
size_t __imax = (setsize) / sizeof (__cpu_mask); \
size_t __i; \
for (__i = 0; __i < __imax; ++__i) \
- __dest->__bits[__i] = __arr1->__bits[__i] op __arr2->__bits[__i]; \
+ ((__cpu_mask *) __dest->__bits)[__i] = __arr1[__i] op __arr2[__i]; \
__dest; }))
# define __CPU_ALLOC_SIZE(count) \
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index 3f63152304..90ad0c718f 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1996,1997,2000,2002,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997,2000,2002,2004,2009 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
@@ -30,6 +30,7 @@
#define SHM_RDONLY 010000 /* attach read-only else read-write */
#define SHM_RND 020000 /* round attach address to SHMLBA */
#define SHM_REMAP 040000 /* take-over region on attach */
+#define SHM_EXEC 0100000 /* execution access */
/* Commands for `shmctl'. */
#define SHM_LOCK 11 /* lock segment (root only) */
diff --git a/sysdeps/unix/sysv/linux/bits/sigaction.h b/sysdeps/unix/sysv/linux/bits/sigaction.h
index 48cc5312f4..62be069205 100644
--- a/sysdeps/unix/sysv/linux/bits/sigaction.h
+++ b/sysdeps/unix/sysv/linux/bits/sigaction.h
@@ -1,5 +1,5 @@
/* The proper definitions for Linux's sigaction.
- Copyright (C) 1993-1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1993-1999, 2000, 2010 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
@@ -57,6 +57,8 @@ struct sigaction
three arguments instead of one. */
#if defined __USE_UNIX98 || defined __USE_MISC
# define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */
+#endif
+#if defined __USE_UNIX98 || defined __USE_MISC || defined __USE_XOPEN2K8
# define SA_RESTART 0x10000000 /* Restart syscall on signal return. */
# define SA_NODEFER 0x40000000 /* Don't automatically block the signal when
its handler is being executed. */
diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h
index 87c3b91802..aa78087a72 100644
--- a/sysdeps/unix/sysv/linux/bits/socket.h
+++ b/sysdeps/unix/sysv/linux/bits/socket.h
@@ -1,5 +1,5 @@
/* System-specific socket constants and types. Linux version.
- Copyright (C) 1991, 1992, 1994-2001, 2004, 2006, 2007, 2008
+ Copyright (C) 1991, 1992, 1994-2001, 2004, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -95,15 +95,21 @@ enum __socket_type
#define PF_ASH 18 /* Ash. */
#define PF_ECONET 19 /* Acorn Econet. */
#define PF_ATMSVC 20 /* ATM SVCs. */
+#define PF_RDS 21 /* RDS sockets. */
#define PF_SNA 22 /* Linux SNA Project */
#define PF_IRDA 23 /* IRDA sockets. */
#define PF_PPPOX 24 /* PPPoX sockets. */
#define PF_WANPIPE 25 /* Wanpipe API sockets. */
+#define PF_LLC 26 /* Linux LLC. */
+#define PF_CAN 29 /* Controller Area Network. */
+#define PF_TIPC 30 /* TIPC sockets. */
#define PF_BLUETOOTH 31 /* Bluetooth sockets. */
#define PF_IUCV 32 /* IUCV sockets. */
#define PF_RXRPC 33 /* RxRPC sockets. */
#define PF_ISDN 34 /* mISDN sockets. */
-#define PF_MAX 35 /* For now.. */
+#define PF_PHONET 35 /* Phonet sockets. */
+#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */
+#define PF_MAX 37 /* For now.. */
/* Address families. */
#define AF_UNSPEC PF_UNSPEC
@@ -130,14 +136,20 @@ enum __socket_type
#define AF_ASH PF_ASH
#define AF_ECONET PF_ECONET
#define AF_ATMSVC PF_ATMSVC
+#define AF_RDS PF_RDS
#define AF_SNA PF_SNA
#define AF_IRDA PF_IRDA
#define AF_PPPOX PF_PPPOX
#define AF_WANPIPE PF_WANPIPE
+#define AF_LLC PF_LLC
+#define AF_CAN PF_CAN
+#define AF_TIPC PF_TIPC
#define AF_BLUETOOTH PF_BLUETOOTH
#define AF_IUCV PF_IUCV
#define AF_RXRPC PF_RXRPC
#define AF_ISDN PF_ISDN
+#define AF_PHONET PF_PHONET
+#define AF_IEEE802154 PF_IEEE802154
#define AF_MAX PF_MAX
/* Socket level values. Others are defined in the appropriate headers.
@@ -222,8 +234,8 @@ enum
#define MSG_MORE MSG_MORE
MSG_CMSG_CLOEXEC = 0x40000000 /* Set close_on_exit for file
- descriptor received through
- SCM_RIGHTS. */
+ descriptor received through
+ SCM_RIGHTS. */
#define MSG_CMSG_CLOEXEC MSG_CMSG_CLOEXEC
};
@@ -247,6 +259,15 @@ struct msghdr
int msg_flags; /* Flags on received message. */
};
+#ifdef __USE_GNU
+/* For `recvmmsg'. */
+struct mmsghdr
+ {
+ struct msghdr msg_hdr; /* Actual message header. */
+ unsigned int msg_len; /* Number of received bytes for the entry. */
+ };
+#endif
+
/* Structure used for storage of ancillary data object information. */
struct cmsghdr
{
@@ -309,7 +330,7 @@ enum
{
SCM_RIGHTS = 0x01 /* Transfer file descriptors. */
#define SCM_RIGHTS SCM_RIGHTS
-#ifdef __USE_BSD
+#ifdef __USE_GNU
, SCM_CREDENTIALS = 0x02 /* Credentials passing. */
# define SCM_CREDENTIALS SCM_CREDENTIALS
#endif
@@ -391,4 +412,18 @@ struct linger
int l_linger; /* Time to linger. */
};
+
+__BEGIN_DECLS
+
+/* Receive a message as described by MESSAGE from socket FD.
+ Returns the number of bytes read or -1 for errors.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
+ unsigned int __vlen, int __flags,
+ __const struct timespec *__tmo);
+
+__END_DECLS
+
#endif /* bits/socket.h */
diff --git a/sysdeps/unix/sysv/linux/bits/stat.h b/sysdeps/unix/sysv/linux/bits/stat.h
index cc665f377e..8ac3cd4726 100644
--- a/sysdeps/unix/sysv/linux/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995-2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995-2002, 2009, 2010 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
@@ -16,10 +16,13 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SYS_STAT_H
+#if !defined _SYS_STAT_H && !defined _FCNTL_H
# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
#endif
+#ifndef _BITS_STAT_H
+#define _BITS_STAT_H 1
+
/* Versions of the `struct stat' data structure. */
#define _STAT_VER_LINUX_OLD 1
#define _STAT_VER_KERNEL 1
@@ -60,7 +63,7 @@ struct stat
#else
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
#endif
-#ifdef __USE_MISC
+#if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -106,7 +109,7 @@ struct stat64
__blksize_t st_blksize; /* Optimal block size for I/O. */
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
-#ifdef __USE_MISC
+# if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -116,14 +119,14 @@ struct stat64
struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */
-#else
+# else
__time_t st_atime; /* Time of last access. */
unsigned long int st_atimensec; /* Nscecs of last access. */
__time_t st_mtime; /* Time of last modification. */
unsigned long int st_mtimensec; /* Nsecs of last modification. */
__time_t st_ctime; /* Time of last status change. */
unsigned long int st_ctimensec; /* Nsecs of last status change. */
-#endif
+# endif
__ino64_t st_ino; /* File serial number. */
};
#endif
@@ -162,8 +165,9 @@ struct stat64
#define __S_IWRITE 0200 /* Write by owner. */
#define __S_IEXEC 0100 /* Execute by owner. */
-#if defined __USE_ATFILE || defined __USE_GNU
-/* XXX This will change to the macro for the next 2008 POSIX revision. */
+#ifdef __USE_ATFILE
# define UTIME_NOW ((1l << 30) - 1l)
# define UTIME_OMIT ((1l << 30) - 2l)
#endif
+
+#endif /* bits/stat.h */
diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure
index 253e9c57ff..06105c7e69 100644
--- a/sysdeps/unix/sysv/linux/configure
+++ b/sysdeps/unix/sysv/linux/configure
@@ -1,17 +1,6 @@
# This file is generated from configure.in by Autoconf. DO NOT EDIT!
# Local configure fragment for sysdeps/unix/sysv/linux.
-# The Linux kernel headers can be found in
-# /lib/modules/$(uname -r)/build/include
-# Check whether this directory is available.
-if test -z "$sysheaders" &&
- test "x$cross_compiling" = xno &&
- test -d /lib/modules/`uname -r`/build/include; then
- sysheaders="/lib/modules/`uname -r`/build/include"
- ccheaders=`$CC -print-file-name=include`
- SYSINCLUDES="-I $sysheaders"
-fi
-
# Don't bother trying to generate any glue code to be compatible with the
# existing system library, because we are the only system library.
inhibit_glue=yes
@@ -22,42 +11,37 @@ if test -n "$sysheaders"; then
fi
-{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Extract the first word of "grep ggrep" to use in msg output
-if test -z "$GREP"; then
-set dummy grep ggrep; ac_prog_name=$2
+{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
if test "${ac_cv_path_GREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
+ if test -z "$GREP"; then
ac_path_GREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
- # Check for GNU ac_path_GREP and select it if it is found.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
*GNU*)
ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
*)
ac_count=0
- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+ $as_echo_n 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- echo 'GREP' >> "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
"$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
ac_count=`expr $ac_count + 1`
@@ -72,74 +56,60 @@ case `"$ac_path_GREP" --version 2>&1` in
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
esac
-
- $ac_path_GREP_found && break 3
+ $ac_path_GREP_found && break 3
+ done
done
done
-
-done
IFS=$as_save_IFS
-
-
-fi
-
-GREP="$ac_cv_path_GREP"
-if test -z "$GREP"; then
- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ if test -z "$ac_cv_path_GREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
{ (exit 1); exit 1; }; }
-fi
-
+ fi
else
ac_cv_path_GREP=$GREP
fi
-
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
GREP="$ac_cv_path_GREP"
-{ echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
if test "${ac_cv_path_EGREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
then ac_cv_path_EGREP="$GREP -E"
else
- # Extract the first word of "egrep" to use in msg output
-if test -z "$EGREP"; then
-set dummy egrep; ac_prog_name=$2
-if test "${ac_cv_path_EGREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+ if test -z "$EGREP"; then
ac_path_EGREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
- # Check for GNU ac_path_EGREP and select it if it is found.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
*GNU*)
ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
*)
ac_count=0
- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+ $as_echo_n 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- echo 'EGREP' >> "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
"$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
ac_count=`expr $ac_count + 1`
@@ -154,40 +124,31 @@ case `"$ac_path_EGREP" --version 2>&1` in
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
esac
-
- $ac_path_EGREP_found && break 3
+ $ac_path_EGREP_found && break 3
+ done
done
done
-
-done
IFS=$as_save_IFS
-
-
-fi
-
-EGREP="$ac_cv_path_EGREP"
-if test -z "$EGREP"; then
- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ if test -z "$ac_cv_path_EGREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
{ (exit 1); exit 1; }; }
-fi
-
+ fi
else
ac_cv_path_EGREP=$EGREP
fi
-
fi
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
EGREP="$ac_cv_path_EGREP"
-{ echo "$as_me:$LINENO: checking installed Linux kernel header files" >&5
-echo $ECHO_N "checking installed Linux kernel header files... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking installed Linux kernel header files" >&5
+$as_echo_n "checking installed Linux kernel header files... " >&6; }
if test "${libc_cv_linux2010+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -209,10 +170,10 @@ fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_linux2010" >&5
-echo "${ECHO_T}$libc_cv_linux2010" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_linux2010" >&5
+$as_echo "$libc_cv_linux2010" >&6; }
if test "$libc_cv_linux2010" != '2.0.10 or later'; then
- { { echo "$as_me:$LINENO: error: GNU libc requires kernel header files from
+ { { $as_echo "$as_me:$LINENO: error: GNU libc requires kernel header files from
Linux 2.0.10 or later to be installed before configuring.
The kernel header files are found usually in /usr/include/asm and
/usr/include/linux; make sure these directories use files from
@@ -220,7 +181,7 @@ Linux 2.0.10 or later. This check uses <linux/version.h>, so
make sure that file was built correctly when installing the kernel header
files. To use kernel headers not from /usr/include/linux, use the
configure option --with-headers." >&5
-echo "$as_me: error: GNU libc requires kernel header files from
+$as_echo "$as_me: error: GNU libc requires kernel header files from
Linux 2.0.10 or later to be installed before configuring.
The kernel header files are found usually in /usr/include/asm and
/usr/include/linux; make sure these directories use files from
@@ -302,8 +263,8 @@ if test -n "$minimum_kernel"; then
arch_version=$((`echo "$arch_minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`))
if test $user_version -lt $arch_version; then
- { echo "$as_me:$LINENO: WARNING: minimum kernel version reset to $arch_minimum_kernel" >&5
-echo "$as_me: WARNING: minimum kernel version reset to $arch_minimum_kernel" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: minimum kernel version reset to $arch_minimum_kernel" >&5
+$as_echo "$as_me: WARNING: minimum kernel version reset to $arch_minimum_kernel" >&2;}
minimum_kernel=$arch_minimum_kernel
fi
else
@@ -313,8 +274,8 @@ else
fi
if test -n "$minimum_kernel"; then
- { echo "$as_me:$LINENO: checking for kernel header at least $minimum_kernel" >&5
-echo $ECHO_N "checking for kernel header at least $minimum_kernel... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for kernel header at least $minimum_kernel" >&5
+$as_echo_n "checking for kernel header at least $minimum_kernel... " >&6; }
decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 65536 + \2 * 256 + \3)/'`;
abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`;
cat >conftest.$ac_ext <<_ACEOF
@@ -336,8 +297,8 @@ else
fi
rm -f conftest*
- { echo "$as_me:$LINENO: result: $libc_minimum_kernel" >&5
-echo "${ECHO_T}$libc_minimum_kernel" >&6; }
+ { $as_echo "$as_me:$LINENO: result: $libc_minimum_kernel" >&5
+$as_echo "$libc_minimum_kernel" >&6; }
if test "$libc_minimum_kernel" = ok; then
cat >>confdefs.h <<_ACEOF
#define __LINUX_KERNEL_VERSION $decnum
@@ -348,9 +309,9 @@ _ACEOF
_ACEOF
else
- { { echo "$as_me:$LINENO: error: *** The available kernel headers are older than the requested
+ { { $as_echo "$as_me:$LINENO: error: *** The available kernel headers are older than the requested
*** compatible kernel version" >&5
-echo "$as_me: error: *** The available kernel headers are older than the requested
+$as_echo "$as_me: error: *** The available kernel headers are older than the requested
*** compatible kernel version" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -480,8 +441,8 @@ if test $host = $build; then
else
ac_prefix=$ac_default_prefix
fi
- { echo "$as_me:$LINENO: checking for symlinks in ${ac_prefix}/include" >&5
-echo $ECHO_N "checking for symlinks in ${ac_prefix}/include... $ECHO_C" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for symlinks in ${ac_prefix}/include" >&5
+$as_echo_n "checking for symlinks in ${ac_prefix}/include... " >&6; }
ac_message=
if test -L ${ac_prefix}/include/net; then
ac_message="$ac_message
@@ -492,18 +453,18 @@ echo $ECHO_N "checking for symlinks in ${ac_prefix}/include... $ECHO_C" >&6; }
${ac_prefix}/include/scsi is a symlink"
fi
if test -n "$ac_message"; then
- { { echo "$as_me:$LINENO: error: $ac_message
+ { { $as_echo "$as_me:$LINENO: error: $ac_message
\`make install' will destroy the target of the link(s).
Delete the links and re-run configure, or better still, move the entire
${ac_prefix}/include directory out of the way." >&5
-echo "$as_me: error: $ac_message
+$as_echo "$as_me: error: $ac_message
\`make install' will destroy the target of the link(s).
Delete the links and re-run configure, or better still, move the entire
${ac_prefix}/include directory out of the way." >&2;}
{ (exit 1); exit 1; }; }
else
- { echo "$as_me:$LINENO: result: ok" >&5
-echo "${ECHO_T}ok" >&6; }
+ { $as_echo "$as_me:$LINENO: result: ok" >&5
+$as_echo "ok" >&6; }
fi
fi
diff --git a/sysdeps/unix/sysv/linux/configure.in b/sysdeps/unix/sysv/linux/configure.in
index 5330e98c2d..8f00407a8b 100644
--- a/sysdeps/unix/sysv/linux/configure.in
+++ b/sysdeps/unix/sysv/linux/configure.in
@@ -1,19 +1,6 @@
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
# Local configure fragment for sysdeps/unix/sysv/linux.
-# The Linux kernel headers can be found in
-# /lib/modules/$(uname -r)/build/include
-# Check whether this directory is available.
-if test -z "$sysheaders" &&
- test "x$cross_compiling" = xno &&
- test -d /lib/modules/`uname -r`/build/include; then
- sysheaders="/lib/modules/`uname -r`/build/include"
- ccheaders=`$CC -print-file-name=include`
- dnl We don't have to use -nostdinc. We just want one more directory
- dnl to be used.
- SYSINCLUDES="-I $sysheaders"
-fi
-
# Don't bother trying to generate any glue code to be compatible with the
# existing system library, because we are the only system library.
inhibit_glue=yes
diff --git a/sysdeps/unix/sysv/linux/dl-osinfo.h b/sysdeps/unix/sysv/linux/dl-osinfo.h
index 5271d4e4de..df07869bc5 100644
--- a/sysdeps/unix/sysv/linux/dl-osinfo.h
+++ b/sysdeps/unix/sysv/linux/dl-osinfo.h
@@ -1,5 +1,5 @@
/* Operating system specific code for generic dynamic loader functions. Linux.
- Copyright (C) 2000-2002,2004-2007,2008 Free Software Foundation, Inc.
+ Copyright (C) 2000-2002,2004-2008, 2009 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
@@ -29,7 +29,7 @@
#ifdef SHARED
/* This is the function used in the dynamic linker to print the fatal error
message. */
-static inline void
+static void
__attribute__ ((__noreturn__))
dl_fatal (const char *str)
{
@@ -60,22 +60,52 @@ dl_fatal (const char *str)
} while (0)
static inline uintptr_t __attribute__ ((always_inline))
-_dl_setup_stack_chk_guard (void)
+_dl_setup_stack_chk_guard (void *dl_random)
{
uintptr_t ret;
-#ifdef ENABLE_STACKGUARD_RANDOMIZE
- int fd = __open ("/dev/urandom", O_RDONLY);
- if (fd >= 0)
+#ifndef __ASSUME_AT_RANDOM
+ if (__builtin_expect (dl_random == NULL, 0))
{
- ssize_t reslen = __read (fd, &ret, sizeof (ret));
- __close (fd);
- if (reslen == (ssize_t) sizeof (ret))
- return ret;
+# ifdef ENABLE_STACKGUARD_RANDOMIZE
+ int fd = __open ("/dev/urandom", O_RDONLY);
+ if (fd >= 0)
+ {
+ ssize_t reslen = __read (fd, &ret, sizeof (ret));
+ __close (fd);
+ if (reslen == (ssize_t) sizeof (ret))
+ return ret;
+ }
+# endif
+ ret = 0;
+ unsigned char *p = (unsigned char *) &ret;
+ p[sizeof (ret) - 1] = 255;
+ p[sizeof (ret) - 2] = '\n';
}
+ else
#endif
- ret = 0;
- unsigned char *p = (unsigned char *) &ret;
- p[sizeof (ret) - 1] = 255;
- p[sizeof (ret) - 2] = '\n';
+ /* We need in the moment only 8 bytes on 32-bit platforms and 16
+ bytes on 64-bit platforms. Therefore we can use the data
+ directly and not use the kernel-provided data to seed a PRNG. */
+ memcpy (&ret, dl_random, sizeof (ret));
+ return ret;
+}
+
+static inline uintptr_t __attribute__ ((always_inline))
+_dl_setup_pointer_guard (void *dl_random, uintptr_t stack_chk_guard)
+{
+ uintptr_t ret;
+#ifndef __ASSUME_AT_RANDOM
+ if (dl_random == NULL)
+ {
+ ret = stack_chk_guard;
+# ifndef HP_TIMING_NONAVAIL
+ hp_timing_t now;
+ HP_TIMING_NOW (now);
+ ret ^= now;
+# endif
+ }
+ else
+#endif
+ memcpy (&ret, (char *) dl_random + sizeof (ret), sizeof (ret));
return ret;
}
diff --git a/sysdeps/unix/sysv/linux/eventfd.c b/sysdeps/unix/sysv/linux/eventfd.c
index 4cd557983e..7f69ecdb8c 100644
--- a/sysdeps/unix/sysv/linux/eventfd.c
+++ b/sysdeps/unix/sysv/linux/eventfd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2007, 2008, 2009 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
@@ -19,14 +19,21 @@
#include <errno.h>
#include <sys/eventfd.h>
#include <sysdep.h>
+#include <kernel-features.h>
int
eventfd (int count, int flags)
{
#ifdef __NR_eventfd2
- return INLINE_SYSCALL (eventfd2, 2, count, flags);
-#else
+ int res = INLINE_SYSCALL (eventfd2, 2, count, flags);
+# ifndef __ASSUME_EVENTFD2
+ if (res != -1 || errno != ENOSYS)
+# endif
+ return res;
+#endif
+
+#ifndef __ASSUME_EVENTFD2
/* The old system call has no flag parameter which is bad. So we have
to wait until we have to support to pass additional values to the
kernel (sys_indirect) before implementing setting flags like
@@ -43,5 +50,7 @@ eventfd (int count, int flags)
__set_errno (ENOSYS);
return -1;
# endif
+#elif !defined __NR_eventfd2
+# error "__ASSUME_EVENTFD2 defined but not __NR_eventfd2"
#endif
}
diff --git a/sysdeps/unix/sysv/linux/faccessat.c b/sysdeps/unix/sysv/linux/faccessat.c
index 10b903d076..c154deb40f 100644
--- a/sysdeps/unix/sysv/linux/faccessat.c
+++ b/sysdeps/unix/sysv/linux/faccessat.c
@@ -1,5 +1,5 @@
/* Test for access to file, relative to open directory. Linux version.
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2009 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
@@ -72,6 +72,12 @@ faccessat (fd, file, mode, flag)
if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/alpha/setresgid.c b/sysdeps/unix/sysv/linux/fallocate.c
index 50e29e3c76..dc2b4e92ca 100644
--- a/sysdeps/unix/sysv/linux/alpha/setresgid.c
+++ b/sysdeps/unix/sysv/linux/fallocate.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2007, 2009 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
@@ -17,17 +17,20 @@
02111-1307 USA. */
#include <errno.h>
-#include <unistd.h>
-#include <setxid.h>
+#include <fcntl.h>
+#include <sysdep.h>
+/* Reserve storage for the data of the file associated with FD. */
int
-__setresgid (gid_t rgid, gid_t egid, gid_t sgid)
+fallocate (int fd, int mode, __off_t offset, __off_t len)
{
- return INLINE_SETXID_SYSCALL (setresgid, 3, (int) rgid,
- (int) egid, (int) sgid);
-}
-libc_hidden_def (__setresgid)
-#ifndef __setresgid
-weak_alias (__setresgid, setresgid)
+#ifdef __NR_fallocate
+ return INLINE_SYSCALL (fallocate, 6, fd, mode,
+ __LONG_LONG_PAIR (offset >> 31, offset),
+ __LONG_LONG_PAIR (len >> 31, len));
+#else
+ __set_errno (ENOSYS);
+ return -1;
#endif
+}
diff --git a/sysdeps/unix/sysv/linux/alpha/setresuid.c b/sysdeps/unix/sysv/linux/fallocate64.c
index e76413bf6a..751a7b2275 100644
--- a/sysdeps/unix/sysv/linux/alpha/setresuid.c
+++ b/sysdeps/unix/sysv/linux/fallocate64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2007, 2009 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
@@ -17,17 +17,22 @@
02111-1307 USA. */
#include <errno.h>
-#include <unistd.h>
-#include <setxid.h>
+#include <fcntl.h>
+#include <sysdep.h>
+/* Reserve storage for the data of the file associated with FD. */
int
-__setresuid (uid_t ruid, uid_t euid, uid_t suid)
+fallocate64 (int fd, int mode, __off64_t offset, __off64_t len)
{
- return INLINE_SETXID_SYSCALL (setresuid, 3, (int) ruid,
- (int) euid, (int) suid);
-}
-libc_hidden_def (__setresuid)
-#ifndef __setresuid
-weak_alias (__setresuid, setresuid)
+#ifdef __NR_fallocate
+ return INLINE_SYSCALL (fallocate, 6, fd, mode,
+ __LONG_LONG_PAIR ((long int) (offset >> 32),
+ (long int) offset),
+ __LONG_LONG_PAIR ((long int) (len >> 32),
+ (long int) len));
+#else
+ __set_errno (ENOSYS);
+ return -1;
#endif
+}
diff --git a/sysdeps/unix/sysv/linux/fchmodat.c b/sysdeps/unix/sysv/linux/fchmodat.c
index 8b420153f1..051691230d 100644
--- a/sysdeps/unix/sysv/linux/fchmodat.c
+++ b/sysdeps/unix/sysv/linux/fchmodat.c
@@ -1,5 +1,5 @@
/* Change the protections of file relative to open directory. Linux version.
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2009 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
@@ -71,6 +71,12 @@ fchmodat (fd, file, mode, flag)
if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/fchownat.c b/sysdeps/unix/sysv/linux/fchownat.c
index 0f731775b3..db43755694 100644
--- a/sysdeps/unix/sysv/linux/fchownat.c
+++ b/sysdeps/unix/sysv/linux/fchownat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2009 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
@@ -66,6 +66,12 @@ fchownat (fd, file, owner, group, flag)
if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/fcntl.c b/sysdeps/unix/sysv/linux/fcntl.c
index 1f5aca14a4..b19654c625 100644
--- a/sysdeps/unix/sysv/linux/fcntl.c
+++ b/sysdeps/unix/sysv/linux/fcntl.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2002, 2003, 2004, 2009 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
@@ -23,6 +23,40 @@
#include <stdarg.h>
#include <sys/syscall.h>
+#include <kernel-features.h>
+
+
+#ifdef __ASSUME_F_GETOWN_EX
+# define miss_F_GETOWN_EX 0
+#else
+static int miss_F_GETOWN_EX;
+#endif
+
+
+static int
+do_fcntl (int fd, int cmd, void *arg)
+{
+ if (cmd != F_GETOWN || miss_F_GETOWN_EX)
+ return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
+
+ INTERNAL_SYSCALL_DECL (err);
+ struct f_owner_ex fex;
+ int res = INTERNAL_SYSCALL (fcntl, err, 3, fd, F_GETOWN_EX, &fex);
+ if (!INTERNAL_SYSCALL_ERROR_P (res, err))
+ return fex.type == F_OWNER_GID ? -fex.pid : fex.pid;
+
+#ifndef __ASSUME_F_GETOWN_EX
+ if (INTERNAL_SYSCALL_ERRNO (res, err) == EINVAL)
+ {
+ res = INLINE_SYSCALL (fcntl, 3, fd, F_GETOWN, arg);
+ miss_F_GETOWN_EX = 1;
+ return res;
+ }
+#endif
+
+ __set_errno (INTERNAL_SYSCALL_ERRNO (res, err));
+ return -1;
+}
#ifndef NO_CANCELLATION
@@ -36,7 +70,7 @@ __fcntl_nocancel (int fd, int cmd, ...)
arg = va_arg (ap, void *);
va_end (ap);
- return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
+ return do_fcntl (fd, cmd, arg);
}
#endif
@@ -52,11 +86,11 @@ __libc_fcntl (int fd, int cmd, ...)
va_end (ap);
if (SINGLE_THREAD_P || cmd != F_SETLKW)
- return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
+ return do_fcntl (fd, cmd, arg);
int oldtype = LIBC_CANCEL_ASYNC ();
- int result = INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
+ int result = do_fcntl (fd, cmd, arg);
LIBC_CANCEL_RESET (oldtype);
diff --git a/sysdeps/unix/sysv/linux/futimens.c b/sysdeps/unix/sysv/linux/futimens.c
index 67f2588f86..fe8e92070d 100644
--- a/sysdeps/unix/sysv/linux/futimens.c
+++ b/sysdeps/unix/sysv/linux/futimens.c
@@ -33,6 +33,11 @@ int
futimens (int fd, const struct timespec tsp[2])
{
#ifdef __NR_utimensat
+ if (fd < 0)
+ {
+ __set_errno (EBADF);
+ return -1;
+ }
return INLINE_SYSCALL (utimensat, 4, fd, NULL, tsp, 0);
#else
__set_errno (ENOSYS);
diff --git a/sysdeps/unix/sysv/linux/futimesat.c b/sysdeps/unix/sysv/linux/futimesat.c
index 7c96b78045..bb83e74faf 100644
--- a/sysdeps/unix/sysv/linux/futimesat.c
+++ b/sysdeps/unix/sysv/linux/futimesat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2009 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
@@ -76,6 +76,12 @@ futimesat (fd, file, tvp)
else if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/fxstatat.c b/sysdeps/unix/sysv/linux/fxstatat.c
index 1b9add40d7..dd5c9bc684 100644
--- a/sysdeps/unix/sysv/linux/fxstatat.c
+++ b/sysdeps/unix/sysv/linux/fxstatat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2007, 2009 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
@@ -85,6 +85,12 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/fxstatat64.c b/sysdeps/unix/sysv/linux/fxstatat64.c
index cb932b8e59..442e4ca989 100644
--- a/sysdeps/unix/sysv/linux/fxstatat64.c
+++ b/sysdeps/unix/sysv/linux/fxstatat64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005,2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2009 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
@@ -90,6 +90,12 @@ __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/getpt.c b/sysdeps/unix/sysv/linux/getpt.c
index bb1ea47643..6b26fdfcdc 100644
--- a/sysdeps/unix/sysv/linux/getpt.c
+++ b/sysdeps/unix/sysv/linux/getpt.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2001, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 1998.
@@ -64,9 +64,10 @@ __posix_openpt (oflag)
}
/* If /dev/pts is not mounted then the UNIX98 pseudo terminals
- are not usable. */
+ are not usable. */
__close (fd);
have_no_dev_ptmx = 1;
+ __set_errno (ENOENT);
}
else
{
@@ -76,6 +77,8 @@ __posix_openpt (oflag)
return -1;
}
}
+ else
+ __set_errno (ENOENT);
return -1;
}
diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c
index 6d4c9c06e8..97e20d249b 100644
--- a/sysdeps/unix/sysv/linux/getsysstats.c
+++ b/sysdeps/unix/sysv/linux/getsysstats.c
@@ -1,5 +1,5 @@
/* Determine various system internal values, Linux version.
- Copyright (C) 1996-2001, 2002, 2003, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1996-2003, 2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -49,10 +49,13 @@
But not all systems have support for the /proc filesystem. If it
is not available we simply return 1 since there is no way. */
+#include <not-cancel.h>
+
+
/* Other architectures use different formats for /proc/cpuinfo. This
provides a hook for alternative parsers. */
#ifndef GET_NPROCS_PARSER
-# define GET_NPROCS_PARSER(FP, BUFFER, RESULT) \
+# define GET_NPROCS_PARSER(FD, BUFFER, CP, RE, BUFFER_END, RESULT) \
do \
{ \
(RESULT) = 0; \
@@ -60,45 +63,121 @@
"processor". We don't have to fear extremely long lines since \
the kernel will not generate them. 8192 bytes are really \
enough. */ \
- while (fgets_unlocked (BUFFER, sizeof (BUFFER), FP) != NULL) \
- if (strncmp (BUFFER, "processor", 9) == 0) \
+ char *l; \
+ while ((l = next_line (FD, BUFFER, &CP, &RE, BUFFER_END)) != NULL) \
+ if (strncmp (l, "processor", 9) == 0) \
++(RESULT); \
} \
while (0)
#endif
+static char *
+next_line (int fd, char *const buffer, char **cp, char **re,
+ char *const buffer_end)
+{
+ char *res = *cp;
+ char *nl = memchr (*cp, '\n', *re - *cp);
+ if (nl == NULL)
+ {
+ if (*cp != buffer)
+ {
+ if (*re == buffer_end)
+ {
+ memmove (buffer, *cp, *re - *cp);
+ *re = buffer + (*re - *cp);
+ *cp = buffer;
+
+ ssize_t n = read_not_cancel (fd, *re, buffer_end - *re);
+ if (n < 0)
+ return NULL;
+
+ *re += n;
+
+ nl = memchr (*cp, '\n', *re - *cp);
+ while (nl == NULL && *re == buffer_end)
+ {
+ /* Truncate too long lines. */
+ *re = buffer + 3 * (buffer_end - buffer) / 4;
+ n = read_not_cancel (fd, *re, buffer_end - *re);
+ if (n < 0)
+ return NULL;
+
+ nl = memchr (*re, '\n', n);
+ **re = '\n';
+ *re += n;
+ }
+ }
+ else
+ nl = memchr (*cp, '\n', *re - *cp);
+
+ res = *cp;
+ }
+
+ if (nl == NULL)
+ nl = *re - 1;
+ }
+ else if (nl + 5 >= *re)
+ {
+ memmove (buffer, nl, *re - nl);
+ *re = buffer + (*re - nl);
+ nl = *cp = buffer;
+
+ ssize_t n = read_not_cancel (fd, *re, buffer_end - *re);
+ if (n < 0)
+ return NULL;
+
+ *re += n;
+ }
+
+ *cp = nl + 1;
+ assert (*cp <= *re);
+
+ return res == *re ? NULL : res;
+}
+
+
int
__get_nprocs ()
{
/* XXX Here will come a test for the new system call. */
- char buffer[8192];
+ const size_t buffer_size = __libc_use_alloca (8192) ? 8192 : 512;
+ char *buffer = alloca (buffer_size);
+ char *buffer_end = buffer + buffer_size;
+ char *cp = buffer_end;
+ char *re = buffer_end;
int result = 1;
+#ifdef O_CLOEXEC
+ const int flags = O_RDONLY | O_CLOEXEC;
+#else
+ const int flags = O_RDONLY;
+#endif
/* The /proc/stat format is more uniform, use it by default. */
- FILE *fp = fopen ("/proc/stat", "rc");
- if (fp != NULL)
+ int fd = open_not_cancel_2 ("/proc/stat", flags);
+ if (fd != -1)
{
- /* No threads use this stream. */
- __fsetlocking (fp, FSETLOCKING_BYCALLER);
-
result = 0;
- while (fgets_unlocked (buffer, sizeof (buffer), fp) != NULL)
- if (strncmp (buffer, "cpu", 3) == 0 && isdigit (buffer[3]))
+
+ char *l;
+ while ((l = next_line (fd, buffer, &cp, &re, buffer_end)) != NULL)
+ /* The current format of /proc/stat has all the cpu* entries
+ at the front. We assume here that stays this way. */
+ if (strncmp (l, "cpu", 3) != 0)
+ break;
+ else if (isdigit (l[3]))
++result;
- fclose (fp);
+ close_not_cancel_no_status (fd);
}
else
{
- fp = fopen ("/proc/cpuinfo", "rc");
- if (fp != NULL)
+ fd = open_not_cancel_2 ("/proc/cpuinfo", flags);
+ if (fd != -1)
{
- /* No threads use this stream. */
- __fsetlocking (fp, FSETLOCKING_BYCALLER);
- GET_NPROCS_PARSER (fp, buffer, result);
- fclose (fp);
+ GET_NPROCS_PARSER (fd, buffer, cp, re, buffer_end, result);
+ close_not_cancel_no_status (fd);
}
}
@@ -141,7 +220,7 @@ __get_nprocs_conf ()
#ifdef GET_NPROCS_CONF_PARSER
/* If we haven't found an appropriate entry return 1. */
- FILE *fp = fopen ("/proc/cpuinfo", "rc");
+ FILE *fp = fopen ("/proc/cpuinfo", "rce");
if (fp != NULL)
{
char buffer[8192];
diff --git a/sysdeps/unix/sysv/linux/grantpt.c b/sysdeps/unix/sysv/linux/grantpt.c
index b894b8b631..f2fc60f83a 100644
--- a/sysdeps/unix/sysv/linux/grantpt.c
+++ b/sysdeps/unix/sysv/linux/grantpt.c
@@ -1,81 +1,42 @@
-/* Copyright (C) 1998, 1999, 2001, 2002 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, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
+#include <assert.h>
+#include <ctype.h>
+#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
-#include <limits.h>
+#include <paths.h>
#include <stdlib.h>
-#include <sys/statfs.h>
-
-#include "linux_fsinfo.h"
+#include <unistd.h>
-/* Prototype for function that changes ownership and access permission
- for slave pseudo terminals that do not live on a `devpts'
- filesystem. */
-static int __unix_grantpt (int fd);
+#include "not-cancel.h"
+#include "pty-private.h"
-/* Prototype for private function that gets the name of the slave
- pseudo terminal in a safe way. */
-static int pts_name (int fd, char **pts, size_t buf_len);
-/* Change the ownership and access permission of the slave pseudo
- terminal associated with the master pseudo terminal specified
- by FD. */
-int
-grantpt (int fd)
+/* Close all file descriptors except the one specified. */
+static void
+close_all_fds (void)
{
- struct statfs fsbuf;
-#ifdef PATH_MAX
- char _buf[PATH_MAX];
-#else
- char _buf[512];
-#endif
- char *buf = _buf;
-
- if (__builtin_expect (pts_name (fd, &buf, sizeof (_buf)), 0))
+ DIR *dir = __opendir ("/proc/self/fd");
+ if (dir != NULL)
{
- int save_errno = errno;
-
- /* Check, if the file descriptor is valid. pts_name returns the
- wrong errno number, so we cannot use that. */
- if (__libc_fcntl (fd, F_GETFD) == -1 && errno == EBADF)
- return -1;
-
- /* If the filedescriptor is no TTY, grantpt has to set errno
- to EINVAL. */
- if (save_errno == ENOTTY)
- __set_errno (EINVAL);
- else
- __set_errno (save_errno);
-
- return -1;
+ struct dirent64 *d;
+ while ((d = __readdir64 (dir)) != NULL)
+ if (isdigit (d->d_name[0]))
+ {
+ char *endp;
+ long int fd = strtol (d->d_name, &endp, 10);
+ if (*endp == '\0' && fd != PTY_FILENO && fd != dirfd (dir))
+ close_not_cancel_no_status (fd);
+ }
+
+ __closedir (dir);
+
+ int nullfd = open_not_cancel_2 (_PATH_DEVNULL, O_RDONLY);
+ assert (nullfd == STDIN_FILENO);
+ nullfd = open_not_cancel_2 (_PATH_DEVNULL, O_WRONLY);
+ assert (nullfd == STDOUT_FILENO);
+ __dup2 (STDOUT_FILENO, STDERR_FILENO);
}
-
- if (__statfs (buf, &fsbuf) < 0)
- return -1;
-
- /* If the slave pseudo terminal lives on a `devpts' filesystem, the
- ownership and access permission are already set. */
- if (fsbuf.f_type == DEVPTS_SUPER_MAGIC || fsbuf.f_type == DEVFS_SUPER_MAGIC)
- return 0;
-
- return __unix_grantpt (fd);
}
+#define CLOSE_ALL_FDS() close_all_fds()
-#define grantpt static __unix_grantpt
#include <sysdeps/unix/grantpt.c>
diff --git a/sysdeps/unix/sysv/linux/i386/Versions b/sysdeps/unix/sysv/linux/i386/Versions
index abd1d152d7..f3544acb75 100644
--- a/sysdeps/unix/sysv/linux/i386/Versions
+++ b/sysdeps/unix/sysv/linux/i386/Versions
@@ -41,6 +41,10 @@ libc {
# v*
vm86;
}
+ GLIBC_2.11 {
+ # f*
+ fallocate64;
+ }
GLIBC_PRIVATE {
__modify_ldt;
}
diff --git a/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S b/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S
new file mode 100644
index 0000000000..a07e6c8edf
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S
@@ -0,0 +1,106 @@
+/* Copyright (C) 2001,2004,2005,2006,2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <jmpbuf-offsets.h>
+#include <asm-syntax.h>
+
+
+ .section .rodata.str1.1,"aMS",@progbits,1
+ .type longjmp_msg,@object
+longjmp_msg:
+ .string "longjmp causes uninitialized stack frame"
+ .size longjmp_msg, .-longjmp_msg
+
+
+#ifdef PIC
+# define CALL_FAIL movl %ebx, %ecx; \
+ cfi_register(%ebx,%ecx); \
+ LOAD_PIC_REG (bx); \
+ leal longjmp_msg@GOTOFF(%ebx), %eax; \
+ call __GI___fortify_fail@PLT
+#else
+# define CALL_FAIL movl $longjmp_msg, %eax; \
+ call __fortify_fail
+#endif
+
+
+ .text
+ENTRY (____longjmp_chk)
+ movl 4(%esp), %ecx /* User's jmp_buf in %ecx. */
+
+ /* Save the return address now. */
+ movl (JB_PC*4)(%ecx), %edx
+ /* Get the stack pointer. */
+ movl (JB_SP*4)(%ecx), %edi
+ cfi_undefined(%edi)
+ PTR_DEMANGLE (%edx)
+ PTR_DEMANGLE (%edi)
+
+ cmpl %edi, %esp
+ jbe .Lok
+
+ subl $12, %esp
+ cfi_adjust_cfa_offset(12)
+ xorl %ebx, %ebx
+ movl %esp, %ecx
+ movl $__NR_sigaltstack, %eax
+ ENTER_KERNEL
+ /* Without working sigaltstack we cannot perform the test. */
+ test %eax, %eax
+ jne .Lok2
+ testl $1, 4(%esp)
+ jz .Lfail
+
+ movl (%esp), %eax
+ addl 8(%esp), %eax
+ subl %edi, %eax
+ cmpl 8(%esp), %eax
+ jae .Lok2
+
+.Lfail: CALL_FAIL
+
+.Lok2: addl $12, %esp
+ cfi_adjust_cfa_offset(-12)
+ movl 4(%esp), %ecx
+
+.Lok: /* We add unwind information for the target here. */
+ cfi_def_cfa(%ecx, 0)
+ cfi_register(%eip, %edx)
+ cfi_register(%esp, %edi)
+ cfi_offset(%ebx, JB_BX*4)
+ cfi_offset(%esi, JB_SI*4)
+ cfi_offset(%edi, JB_DI*4)
+ cfi_offset(%ebp, JB_BP*4)
+
+ movl 8(%esp), %eax /* Second argument is return value. */
+ movl %edi, %esp
+
+ /* Restore registers. */
+ movl (JB_BX*4)(%ecx), %ebx
+ movl (JB_SI*4)(%ecx), %esi
+ movl (JB_DI*4)(%ecx), %edi
+ movl (JB_BP*4)(%ecx), %ebp
+ cfi_restore(%ebx)
+ cfi_restore(%esi)
+ cfi_restore(%edi)
+ cfi_restore(%ebp)
+
+ /* Jump to saved PC. */
+ jmp *%edx
+END (____longjmp_chk)
diff --git a/sysdeps/unix/sysv/linux/i386/paccept.S b/sysdeps/unix/sysv/linux/i386/accept4.S
index 02ad78dd47..1d05eff7f7 100644
--- a/sysdeps/unix/sysv/linux/i386/paccept.S
+++ b/sysdeps/unix/sysv/linux/i386/accept4.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1998,2002,2003,2005,2008 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1998,2002,2003,2005, 2008 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
@@ -19,67 +19,29 @@
#include <sysdep-cancel.h>
#include <socketcall.h>
#include <tls.h>
+#include <kernel-features.h>
-#define _NSIG 64
+#define EINVAL 22
+#define ENOSYS 38
-#define P(a, b) P2(a, b)
-#define P2(a, b) a##b
+#ifdef __ASSUME_ACCEPT4
+# define errlabel SYSCALL_ERROR_LABEL
+#else
+# define errlabel .Lerr
+ .data
+have_accept4:
+ .long 0
+#endif
.text
-/* The socket-oriented system calls are handled unusally in Linux.
+/* The socket-oriented system calls are handled unusally in Linux/i386.
They are all gated through the single `socketcall' system call number.
`socketcall' takes two arguments: the first is the subcode, specifying
which socket function is being called; and the second is a pointer to
the arguments to the specific function. */
-ENTRY(do_paccept)
-#ifdef SOCKOP_paccept
- subl $6*4, %esp
- cfi_adjust_cfa_offset(6*4)
-
- movl (%eax), %ecx
- movl %ecx, (%esp)
- movl 4(%eax), %ecx
- movl %ecx, 4(%esp)
- movl 8(%eax), %ecx
- movl %ecx, 8(%esp)
- movl 12(%eax), %ecx
- movl %ecx, 12(%esp)
- movl $(_NSIG / 8), 16(%esp)
- movl 16(%eax), %ecx
- movl %ecx, 20(%esp)
-
- movl $SYS_ify(socketcall), %eax /* System call number in %eax. */
-
- movl $SOCKOP_paccept, %ebx /* Subcode is first arg to syscall. */
- movl %esp, %ecx /* Address of args is 2nd arg. */
-
- /* Do the system call trap. */
- ENTER_KERNEL
-
- addl $6*4, %esp
- cfi_adjust_cfa_offset(-6*4)
-
- /* %eax is < 0 if there was an error. */
- cmpl $-125, %eax
- jae SYSCALL_ERROR_LABEL
-#else
- movl $-ENOSYS, %eax
- jmp SYSCALL_ERROR_LABEL
-
- .section .gnu.glibc-stub.paccept
- .previous
- .section .gnu.warning.paccept
- .string "warning: paccept is not implemented and will always fail"
- .previous
-#endif
-L(pseudo_end):
- ret
-PSEUDO_END(do_paccept)
-
-
- .globl paccept
-ENTRY (paccept)
+.globl __libc_accept4
+ENTRY (__libc_accept4)
#ifdef CENABLE
SINGLE_THREAD_P
jne 1f
@@ -89,15 +51,27 @@ ENTRY (paccept)
movl %ebx, %edx
cfi_register (3, 2)
- lea 4(%esp), %eax
- call do_paccept
+ movl $SYS_ify(socketcall), %eax /* System call number in %eax. */
+
+ movl $SOCKOP_accept4, %ebx /* Subcode is first arg to syscall. */
+ lea 4(%esp), %ecx /* Address of args is 2nd arg. */
+
+ /* Do the system call trap. */
+ ENTER_KERNEL
/* Restore registers. */
movl %edx, %ebx
cfi_restore (3)
+ /* %eax is < 0 if there was an error. */
+ cmpl $-125, %eax
+ jae errlabel
+
+ /* Successful; return the syscall's value. */
+L(pseudo_end):
ret
+
#ifdef CENABLE
/* We need one more register. */
1: pushl %esi
@@ -112,8 +86,13 @@ ENTRY (paccept)
movl %ebx, %edx
cfi_register (3, 2)
- lea 8(%esp), %eax
- call do_paccept
+ movl $SYS_ify(socketcall), %eax /* System call number in %eax. */
+
+ movl $SOCKOP_accept4, %ebx /* Subcode is first arg to syscall. */
+ lea 8(%esp), %ecx /* Address of args is 2nd arg. */
+
+ /* Do the system call trap. */
+ ENTER_KERNEL
/* Restore registers. */
movl %edx, %ebx
@@ -129,7 +108,72 @@ ENTRY (paccept)
cfi_restore (6)
cfi_adjust_cfa_offset(-4)
+ /* %eax is < 0 if there was an error. */
+ cmpl $-125, %eax
+ jae errlabel
+
/* Successful; return the syscall's value. */
ret
#endif
-PSEUDO_END (paccept)
+
+#ifndef __ASSUME_ACCEPT4
+ /* The kernel returns -EINVAL for unknown socket operations.
+ We need to convert that error to an ENOSYS error. */
+.Lerr: cmpl $-EINVAL, %eax
+ jne SYSCALL_ERROR_LABEL
+
+ /* Save registers. */
+ pushl %ebx
+ cfi_adjust_cfa_offset(4)
+ cfi_offset(ebx, -8)
+
+# ifdef PIC
+ SETUP_PIC_REG (dx)
+ addl $_GLOBAL_OFFSET_TABLE_, %edx
+ movl have_accept4@GOTOFF(%edx), %eax
+# else
+ movl have_accept4, %eax
+# endif
+ testl %eax, %eax
+ jne 1f
+
+ /* Try another call, this time with the FLAGS parameter
+ cleared and an invalid file descriptor. This call will not
+ cause any harm and it will return immediately. */
+ movl $-1, 8(%esp)
+ movl $0, 20(%esp)
+
+ movl $SYS_ify(socketcall), %eax /* System call number in %eax. */
+
+ movl $SOCKOP_accept4, %ebx /* Subcode is first arg to syscall. */
+ lea 8(%esp), %ecx /* Address of args is 2nd arg. */
+
+ /* Do the system call trap. */
+ ENTER_KERNEL
+
+ cmpl $-EINVAL, %eax
+ movl $-1, %eax
+ je 3f
+ movl $1, %eax
+3:
+# ifdef PIC
+ movl %eax, have_accept4@GOTOFF(%edx)
+# else
+ movl %eax, have_accept4
+# endif
+
+ testl %eax, %eax
+
+1: movl $-EINVAL, %eax
+ jns 2f
+ movl $-ENOSYS, %eax
+
+ /* Restore registers. */
+2: popl %ebx
+ cfi_restore (ebx)
+
+ jmp SYSCALL_ERROR_LABEL
+#endif
+PSEUDO_END (__libc_accept4)
+
+weak_alias (__libc_accept4, accept4)
diff --git a/sysdeps/unix/sysv/linux/i386/alphasort64.c b/sysdeps/unix/sysv/linux/i386/alphasort64.c
index 221aedc16b..33e2fcd435 100644
--- a/sysdeps/unix/sysv/linux/i386/alphasort64.c
+++ b/sysdeps/unix/sysv/linux/i386/alphasort64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1997, 1998, 2000, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1997,1998,2000,2004,2009 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
@@ -20,10 +20,9 @@
#include <string.h>
int
-__alphasort64 (const void *a, const void *b)
+__alphasort64 (const struct dirent64 **a, const struct dirent64 **b)
{
- return strcoll ((*(const struct dirent64 **) a)->d_name,
- (*(const struct dirent64 **) b)->d_name);
+ return strcoll ((*a)->d_name, (*b)->d_name);
}
#include <shlib-compat.h>
@@ -35,14 +34,15 @@ versioned_symbol (libc, __alphasort64, alphasort64, GLIBC_2_2);
#include <sysdeps/unix/sysv/linux/i386/olddirent.h>
int
-__old_alphasort64 (const void *a, const void *b);
+__old_alphasort64 (const struct __old_dirent64 **a,
+ const struct __old_dirent64 **b);
int
attribute_compat_text_section
-__old_alphasort64 (const void *a, const void *b)
+__old_alphasort64 (const struct __old_dirent64 **a,
+ const struct __old_dirent64 **b)
{
- return strcoll ((*(const struct __old_dirent64 **) a)->d_name,
- (*(const struct __old_dirent64 **) b)->d_name);
+ return strcoll ((*a)->d_name, (*b)->d_name);
}
compat_symbol (libc, __old_alphasort64, alphasort64, GLIBC_2_1);
diff --git a/sysdeps/unix/sysv/linux/i386/bits/environments.h b/sysdeps/unix/sysv/linux/i386/bits/environments.h
index 16f7732aad..785dd7e8fa 100644
--- a/sysdeps/unix/sysv/linux/i386/bits/environments.h
+++ b/sysdeps/unix/sysv/linux/i386/bits/environments.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2004, 2009 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
@@ -25,29 +25,35 @@
`-1' means it is never supported. Undefined means it cannot be
statically decided.
- _POSIX_V6_ILP32_OFF32 32bit int, long, pointers, and off_t type
- _POSIX_V6_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
+ _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type
+ _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
- _POSIX_V6_LP64_OFF32 64bit long and pointers and 32bit off_t type
- _POSIX_V6_LPBIG_OFFBIG 64bit long and pointers and large off_t type
+ _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type
+ _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type
- The macros _XBS5_ILP32_OFF32, _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and
- _XBS5_LPBIG_OFFBIG were used in previous versions of the Unix standard
- and are available only for compatibility.
+ The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
+ _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
+ _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
+ used in previous versions of the Unix standard and are available
+ only for compatibility.
*/
/* By default we have 32-bit wide `int', `long int', pointers and `off_t'
and all platforms support LFS. */
+#define _POSIX_V7_ILP32_OFF32 1
+#define _POSIX_V7_ILP32_OFFBIG 1
#define _POSIX_V6_ILP32_OFF32 1
#define _POSIX_V6_ILP32_OFFBIG 1
#define _XBS5_ILP32_OFF32 1
#define _XBS5_ILP32_OFFBIG 1
/* We optionally provide an environment with the above size but an 64-bit
- side `off_t'. Therefore we don't define _XBS5_ILP32_OFFBIG. */
+ side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. */
/* Environments with 64-bit wide pointers can be provided,
so these macros aren't defined:
+ # undef _POSIX_V7_LP64_OFF64
+ # undef _POSIX_V7_LPBIG_OFFBIG
# undef _POSIX_V6_LP64_OFF64
# undef _POSIX_V6_LPBIG_OFFBIG
# undef _XBS5_LP64_OFF64
diff --git a/sysdeps/unix/sysv/linux/i386/bits/fcntl.h b/sysdeps/unix/sysv/linux/i386/bits/fcntl.h
index fdf0df3cd8..6693889542 100644
--- a/sysdeps/unix/sysv/linux/i386/bits/fcntl.h
+++ b/sysdeps/unix/sysv/linux/i386/bits/fcntl.h
@@ -1,5 +1,5 @@
/* O_*, F_*, FD_* bit values for Linux.
- Copyright (C) 1995, 1996, 1997, 1998, 2000, 2004, 2006, 2007
+ Copyright (C) 1995, 1996, 1997, 1998, 2000, 2004, 2006, 2007, 2009, 2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -29,7 +29,7 @@
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
- located on an ext2 file system */
+ located on a few file systems. */
#define O_ACCMODE 0003
#define O_RDONLY 00
#define O_WRONLY 01
@@ -41,23 +41,25 @@
#define O_APPEND 02000
#define O_NONBLOCK 04000
#define O_NDELAY O_NONBLOCK
-#define O_SYNC 010000
+#define O_SYNC 04010000
#define O_FSYNC O_SYNC
#define O_ASYNC 020000
-#ifdef __USE_GNU
-# define O_DIRECT 040000 /* Direct disk access. */
+#ifdef __USE_XOPEN2K8
# define O_DIRECTORY 0200000 /* Must be a directory. */
# define O_NOFOLLOW 0400000 /* Do not follow links. */
-# define O_NOATIME 01000000 /* Do not set atime. */
# define O_CLOEXEC 02000000 /* Set close_on_exec. */
#endif
+#ifdef __USE_GNU
+# define O_DIRECT 040000 /* Direct disk access. */
+# define O_NOATIME 01000000 /* Do not set atime. */
+#endif
/* For now Linux has synchronisity options for data and read operations.
We define the symbols here but let them do the same as O_SYNC since
this is a superset. */
#if defined __USE_POSIX199309 || defined __USE_UNIX98
-# define O_DSYNC O_SYNC /* Synchronize data. */
+# define O_DSYNC 010000 /* Synchronize data. */
# define O_RSYNC O_SYNC /* Synchronize read operations. */
#endif
@@ -84,20 +86,24 @@
#define F_SETLK64 13 /* Set record locking info (non-blocking). */
#define F_SETLKW64 14 /* Set record locking info (blocking). */
-#if defined __USE_BSD || defined __USE_UNIX98
-# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
-# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
+#if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K8
+# define F_SETOWN 8 /* Get owner (process receiving SIGIO). */
+# define F_GETOWN 9 /* Set owner (process receiving SIGIO). */
#endif
#ifdef __USE_GNU
# define F_SETSIG 10 /* Set number of signal to be sent. */
# define F_GETSIG 11 /* Get number of signal to be sent. */
+# define F_SETOWN_EX 15 /* Get owner (thread receiving SIGIO). */
+# define F_GETOWN_EX 16 /* Set owner (thread receiving SIGIO). */
#endif
#ifdef __USE_GNU
# define F_SETLEASE 1024 /* Set a lease. */
# define F_GETLEASE 1025 /* Enquire what lease is active. */
# define F_NOTIFY 1026 /* Request notfications on a directory. */
+#endif
+#ifdef __USE_XOPEN2K8
# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with
close-on-exit set. */
#endif
@@ -166,6 +172,24 @@ struct flock64
};
#endif
+#ifdef __USE_GNU
+/* Owner types. */
+enum __pid_type
+ {
+ F_OWNER_TID = 0, /* Kernel thread. */
+ F_OWNER_PID, /* Process. */
+ F_OWNER_PGRP, /* Process group. */
+ F_OWNER_GID = F_OWNER_PGRP /* Alternative, obsolete name. */
+ };
+
+/* Structure to use with F_GETOWN_EX and F_SETOWN_EX. */
+struct f_owner_ex
+ {
+ enum __pid_type type; /* Owner type of ID. */
+ __pid_t pid; /* ID of owner. */
+ };
+#endif
+
/* Define some more compatibility macros to be backward compatible with
BSD systems which did not managed to hide these kernel macros. */
#ifdef __USE_BSD
@@ -218,7 +242,7 @@ extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
/* Selective file content synch'ing. */
-extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
+extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count,
unsigned int __flags);
@@ -235,6 +259,23 @@ extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
extern ssize_t tee (int __fdin, int __fdout, size_t __len,
unsigned int __flags);
+/* Reserve storage for the data of the file associated with FD. */
+# ifndef __USE_FILE_OFFSET64
+extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
+# else
+# ifdef __REDIRECT
+extern int __REDIRECT (fallocate, (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len),
+ fallocate64);
+# else
+# define fallocate fallocate64
+# endif
+# endif
+# ifdef __USE_LARGEFILE64
+extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len);
+# endif
+
#endif
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/i386/bits/mman.h b/sysdeps/unix/sysv/linux/i386/bits/mman.h
index 2b90c8d7d5..22aa401e02 100644
--- a/sysdeps/unix/sysv/linux/i386/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/i386/bits/mman.h
@@ -1,5 +1,5 @@
/* Definitions for POSIX memory map interface. Linux/i386 version.
- Copyright (C) 1997, 2000, 2003, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,2000,2003,2005,2006,2009 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
@@ -84,14 +84,17 @@
/* Advice to `madvise'. */
#ifdef __USE_BSD
-# define MADV_NORMAL 0 /* No further special treatment. */
-# define MADV_RANDOM 1 /* Expect random page references. */
-# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
-# define MADV_WILLNEED 3 /* Will need these pages. */
-# define MADV_DONTNEED 4 /* Don't need these pages. */
-# define MADV_REMOVE 9 /* Remove these pages and resources. */
-# define MADV_DONTFORK 10 /* Do not inherit across fork. */
-# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_NORMAL 0 /* No further special treatment. */
+# define MADV_RANDOM 1 /* Expect random page references. */
+# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
+# define MADV_WILLNEED 3 /* Will need these pages. */
+# define MADV_DONTNEED 4 /* Don't need these pages. */
+# define MADV_REMOVE 9 /* Remove these pages and resources. */
+# define MADV_DONTFORK 10 /* Do not inherit across fork. */
+# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_MERGEABLE 12 /* KSM may merge identical pages. */
+# define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */
+# define MADV_HWPOISON 100 /* Poison a page for testing. */
#endif
/* The POSIX people had to invent similar names for the same things. */
diff --git a/sysdeps/alpha/alphaev67/ffs.S b/sysdeps/unix/sysv/linux/i386/fallocate.c
index fb1cdd932c..14e788386c 100644
--- a/sysdeps/alpha/alphaev67/ffs.S
+++ b/sysdeps/unix/sysv/linux/i386/fallocate.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2007, 2009 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
@@ -16,36 +16,23 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-/* Finds the first bit set in an integer. */
-
+#include <errno.h>
+#include <fcntl.h>
#include <sysdep.h>
- .arch ev6
- .set noreorder
- .set noat
+
+extern int __call_fallocate (int fd, int mode, __off64_t offset, __off64_t len)
+ attribute_hidden;
-ENTRY(__ffs)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
+/* Reserve storage for the data of the file associated with FD. */
+int
+fallocate (int fd, int mode, __off_t offset, __off_t len)
+{
+#ifdef __NR_fallocate
+ return __call_fallocate (fd, mode, offset, len);
#else
- .prologue 0
+ __set_errno (ENOSYS);
+ return -1;
#endif
-
- zap $16, 0xF0, $16
- cttz $16, $0
- addq $0, 1, $0
- cmoveq $16, 0, $0
-
- nop
- nop
- nop
- ret
-
-END(__ffs)
-
-weak_alias (__ffs, ffs)
-libc_hidden_builtin_def (ffs)
+}
diff --git a/sysdeps/alpha/alphaev6/fpu/e_sqrt.S b/sysdeps/unix/sysv/linux/i386/fallocate64.c
index 64a08826f6..85f315c9b6 100644
--- a/sysdeps/alpha/alphaev6/fpu/e_sqrt.S
+++ b/sysdeps/unix/sysv/linux/i386/fallocate64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2007, 2009 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
@@ -16,30 +16,23 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <errno.h>
+#include <fcntl.h>
#include <sysdep.h>
- .arch ev6
- .set noreorder
- .set noat
-ENTRY(__ieee754_sqrt)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
+extern int __call_fallocate (int fd, int mode, __off64_t offset, __off64_t len)
+ attribute_hidden;
- .align 4
-#ifdef _IEEE_FP_INEXACT
- sqrtt/sui $f16, $f0
+
+/* Reserve storage for the data of the file associated with FD. */
+int
+fallocate64 (int fd, int mode, __off64_t offset, __off64_t len)
+{
+#ifdef __NR_fallocate
+ return __call_fallocate (fd, mode, offset, len);
#else
- sqrtt/su $f16, $f0
+ __set_errno (ENOSYS);
+ return -1;
#endif
- ret
- nop
- nop
-
-END(__ieee754_sqrt)
+}
diff --git a/sysdeps/unix/sysv/linux/i386/fchownat.c b/sysdeps/unix/sysv/linux/i386/fchownat.c
index 34acf10c27..1b02fde459 100644
--- a/sysdeps/unix/sysv/linux/i386/fchownat.c
+++ b/sysdeps/unix/sysv/linux/i386/fchownat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2009 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
@@ -63,6 +63,12 @@ fchownat (int fd, const char *file, uid_t owner, gid_t group, int flag)
if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/i386/fcntl.c b/sysdeps/unix/sysv/linux/i386/fcntl.c
index b27373d24b..5544d6e0d9 100644
--- a/sysdeps/unix/sysv/linux/i386/fcntl.c
+++ b/sysdeps/unix/sysv/linux/i386/fcntl.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000,2002,2003,2004,2006 Free Software Foundation, Inc.
+/* Copyright (C) 2000,2002,2003,2004,2006,2009 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
@@ -30,6 +30,13 @@
int __have_no_fcntl64;
#endif
+#ifdef __ASSUME_F_GETOWN_EX
+# define miss_F_GETOWN_EX 0
+#else
+static int miss_F_GETOWN_EX;
+#endif
+
+
#if defined NO_CANCELLATION && __ASSUME_FCNTL64 == 0
# define __fcntl_nocancel __libc_fcntl
#endif
@@ -119,6 +126,26 @@ __fcntl_nocancel (int fd, int cmd, ...)
assert (F_SETLK - F_SETLKW == F_SETLK64 - F_SETLKW64);
return INLINE_SYSCALL (fcntl, 3, fd, cmd + F_SETLK - F_SETLK64, &fl);
}
+ case F_GETOWN:
+ if (! miss_F_GETOWN_EX)
+ {
+ INTERNAL_SYSCALL_DECL (err);
+ struct f_owner_ex fex;
+ int res = INTERNAL_SYSCALL (fcntl, err, 3, fd, F_GETOWN_EX, &fex);
+ if (!INTERNAL_SYSCALL_ERROR_P (res, err))
+ return fex.type == F_OWNER_GID ? -fex.pid : fex.pid;
+
+#ifndef __ASSUME_F_GETOWN_EX
+ if (INTERNAL_SYSCALL_ERRNO (res, err) == EINVAL)
+ miss_F_GETOWN_EX = 1;
+ else
+#endif
+ {
+ __set_errno (INTERNAL_SYSCALL_ERRNO (res, err));
+ return -1;
+ }
+ }
+ /* FALLTHROUGH */
default:
return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
}
diff --git a/sysdeps/unix/sysv/linux/i386/fxstatat.c b/sysdeps/unix/sysv/linux/i386/fxstatat.c
index 94f6e81186..37757937b3 100644
--- a/sysdeps/unix/sysv/linux/i386/fxstatat.c
+++ b/sysdeps/unix/sysv/linux/i386/fxstatat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2009 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
@@ -86,6 +86,12 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/i386/i686/sysconf.c b/sysdeps/unix/sysv/linux/i386/i686/sysconf.c
new file mode 100644
index 0000000000..cf79750de3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/i686/sysconf.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/x86_64/sysconf.c>
diff --git a/sysdeps/unix/sysv/linux/i386/internal_accept4.S b/sysdeps/unix/sysv/linux/i386/internal_accept4.S
new file mode 100644
index 0000000000..c3f1630494
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/internal_accept4.S
@@ -0,0 +1 @@
+/* Not needed, accept4.S has everything. */
diff --git a/sysdeps/unix/sysv/linux/i386/makecontext.S b/sysdeps/unix/sysv/linux/i386/makecontext.S
index ad2340555a..5b98e64db2 100644
--- a/sysdeps/unix/sysv/linux/i386/makecontext.S
+++ b/sysdeps/unix/sysv/linux/i386/makecontext.S
@@ -1,5 +1,5 @@
/* Create new context.
- Copyright (C) 2001, 2002, 2005, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2001,2002,2005,2007,2008,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
@@ -105,17 +105,15 @@ L(exitcode):
1: popl %ebx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
#endif
- popl %eax /* This is the next context. */
- testl %eax, %eax
+ cmpl $0, (%esp) /* Check the next context. */
je 2f /* If it is zero exit. */
- pushl %eax
call JUMPTARGET(__setcontext)
/* If this returns (which can happen if the syscall fails) we'll
exit the program with the return error value (-1). */
-2: pushl %eax
- call HIDDEN_JUMPTARGET(exit)
+ movl %eax, (%esp)
+2: call HIDDEN_JUMPTARGET(exit)
/* The 'exit' call should never return. In case it does cause
the process to terminate. */
hlt
diff --git a/sysdeps/unix/sysv/linux/i386/olddirent.h b/sysdeps/unix/sysv/linux/i386/olddirent.h
index f9a79b2352..4f73197e53 100644
--- a/sysdeps/unix/sysv/linux/i386/olddirent.h
+++ b/sysdeps/unix/sysv/linux/i386/olddirent.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2009 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
@@ -39,6 +39,7 @@ extern __ssize_t __old_getdents64 (int __fd, char *__buf, size_t __nbytes)
int __old_scandir64 (__const char * __dir,
struct __old_dirent64 *** __namelist,
int (*__selector) (__const struct __old_dirent64 *),
- int (*__cmp) (__const void *, __const void *));
+ int (*__cmp) (__const struct __old_dirent64 **,
+ __const struct __old_dirent64 **));
#endif
diff --git a/sysdeps/unix/sysv/linux/i386/socket.S b/sysdeps/unix/sysv/linux/i386/socket.S
index 7c8ac29b86..889e5c7060 100644
--- a/sysdeps/unix/sysv/linux/i386/socket.S
+++ b/sysdeps/unix/sysv/linux/i386/socket.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1998,2002,2003,2005 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1998,2002,2003,2005,2008 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
@@ -24,7 +24,7 @@
#define P2(a, b) a##b
.text
-/* The socket-oriented system calls are handled unusally in Linux.
+/* The socket-oriented system calls are handled unusally in Linux/i386.
They are all gated through the single `socketcall' system call number.
`socketcall' takes two arguments: the first is the subcode, specifying
which socket function is being called; and the second is a pointer to
diff --git a/sysdeps/unix/sysv/linux/i386/sys/io.h b/sysdeps/unix/sysv/linux/i386/sys/io.h
index 39a7877f7e..128c2caac7 100644
--- a/sysdeps/unix/sysv/linux/i386/sys/io.h
+++ b/sysdeps/unix/sysv/linux/i386/sys/io.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 2000, 2009 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
@@ -41,138 +41,142 @@ extern int iopl (int __level) __THROW;
#if defined __GNUC__ && __GNUC__ >= 2
static __inline unsigned char
-inb (unsigned short int port)
+inb (unsigned short int __port)
{
unsigned char _v;
- __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (port));
+ __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (__port));
return _v;
}
static __inline unsigned char
-inb_p (unsigned short int port)
+inb_p (unsigned short int __port)
{
unsigned char _v;
- __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port));
+ __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
return _v;
}
static __inline unsigned short int
-inw (unsigned short int port)
+inw (unsigned short int __port)
{
unsigned short _v;
- __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (port));
+ __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (__port));
return _v;
}
static __inline unsigned short int
-inw_p (unsigned short int port)
+inw_p (unsigned short int __port)
{
unsigned short int _v;
- __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port));
+ __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
return _v;
}
static __inline unsigned int
-inl (unsigned short int port)
+inl (unsigned short int __port)
{
unsigned int _v;
- __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (port));
+ __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (__port));
return _v;
}
static __inline unsigned int
-inl_p (unsigned short int port)
+inl_p (unsigned short int __port)
{
unsigned int _v;
- __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port));
+ __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v)
+ :"Nd" (__port));
return _v;
}
static __inline void
-outb (unsigned char value, unsigned short int port)
+outb (unsigned char value, unsigned short int __port)
{
- __asm__ __volatile__ ("outb %b0,%w1": :"a" (value), "Nd" (port));
+ __asm__ __volatile__ ("outb %b0,%w1": :"a" (value), "Nd" (__port));
}
static __inline void
-outb_p (unsigned char value, unsigned short int port)
+outb_p (unsigned char value, unsigned short int __port)
{
__asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (value),
- "Nd" (port));
+ "Nd" (__port));
}
static __inline void
-outw (unsigned short int value, unsigned short int port)
+outw (unsigned short int value, unsigned short int __port)
{
- __asm__ __volatile__ ("outw %w0,%w1": :"a" (value), "Nd" (port));
+ __asm__ __volatile__ ("outw %w0,%w1": :"a" (value), "Nd" (__port));
}
static __inline void
-outw_p (unsigned short int value, unsigned short int port)
+outw_p (unsigned short int value, unsigned short int __port)
{
__asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (value),
- "Nd" (port));
+ "Nd" (__port));
}
static __inline void
-outl (unsigned int value, unsigned short int port)
+outl (unsigned int value, unsigned short int __port)
{
- __asm__ __volatile__ ("outl %0,%w1": :"a" (value), "Nd" (port));
+ __asm__ __volatile__ ("outl %0,%w1": :"a" (value), "Nd" (__port));
}
static __inline void
-outl_p (unsigned int value, unsigned short int port)
+outl_p (unsigned int value, unsigned short int __port)
{
__asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80": :"a" (value),
- "Nd" (port));
+ "Nd" (__port));
}
static __inline void
-insb (unsigned short int port, void *addr, unsigned long int count)
+insb (unsigned short int __port, void *__addr, unsigned long int __count)
{
- __asm__ __volatile__ ("cld ; rep ; insb":"=D" (addr),
- "=c" (count):"d" (port), "0" (addr), "1" (count));
+ __asm__ __volatile__ ("cld ; rep ; insb":"=D" (__addr), "=c" (__count)
+ :"d" (__port), "0" (__addr), "1" (__count));
}
static __inline void
-insw (unsigned short int port, void *addr, unsigned long int count)
+insw (unsigned short int __port, void *__addr, unsigned long int __count)
{
- __asm__ __volatile__ ("cld ; rep ; insw":"=D" (addr),
- "=c" (count):"d" (port), "0" (addr), "1" (count));
+ __asm__ __volatile__ ("cld ; rep ; insw":"=D" (__addr), "=c" (__count)
+ :"d" (__port), "0" (__addr), "1" (__count));
}
static __inline void
-insl (unsigned short int port, void *addr, unsigned long int count)
+insl (unsigned short int __port, void *__addr, unsigned long int __count)
{
- __asm__ __volatile__ ("cld ; rep ; insl":"=D" (addr),
- "=c" (count):"d" (port), "0" (addr), "1" (count));
+ __asm__ __volatile__ ("cld ; rep ; insl":"=D" (__addr), "=c" (__count)
+ :"d" (__port), "0" (__addr), "1" (__count));
}
static __inline void
-outsb (unsigned short int port, const void *addr, unsigned long int count)
+outsb (unsigned short int __port, const void *__addr,
+ unsigned long int __count)
{
- __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (addr),
- "=c" (count):"d" (port), "0" (addr), "1" (count));
+ __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (__addr), "=c" (__count)
+ :"d" (__port), "0" (__addr), "1" (__count));
}
static __inline void
-outsw (unsigned short int port, const void *addr, unsigned long int count)
+outsw (unsigned short int __port, const void *__addr,
+ unsigned long int __count)
{
- __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (addr),
- "=c" (count):"d" (port), "0" (addr), "1" (count));
+ __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (__addr), "=c" (__count)
+ :"d" (__port), "0" (__addr), "1" (__count));
}
static __inline void
-outsl (unsigned short int port, const void *addr, unsigned long int count)
+outsl (unsigned short int __port, const void *__addr,
+ unsigned long int __count)
{
- __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (addr),
- "=c" (count):"d" (port), "0" (addr), "1" (count));
+ __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (__addr), "=c" (__count)
+ :"d" (__port), "0" (__addr), "1" (__count));
}
#endif /* GNU C */
diff --git a/sysdeps/unix/sysv/linux/i386/sysconf.c b/sysdeps/unix/sysv/linux/i386/sysconf.c
index 38bb5337ba..ff3cf9f7c7 100644
--- a/sysdeps/unix/sysv/linux/i386/sysconf.c
+++ b/sysdeps/unix/sysv/linux/i386/sysconf.c
@@ -1,5 +1,5 @@
/* Get file-specific information about a file. Linux version.
- Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2006, 2007, 2009 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
@@ -67,61 +67,80 @@ handle_i486 (int name)
static const struct intel_02_cache_info
{
- unsigned int idx;
- int name;
- long int size;
- long int assoc;
- long int linesize;
-} intel_02_known[] =
+ unsigned char idx;
+ unsigned char assoc;
+ unsigned char linesize;
+ unsigned char rel_name;
+ unsigned int size;
+} intel_02_known [] =
{
- { 0x06, _SC_LEVEL1_ICACHE_SIZE, 8192, 4, 32 },
- { 0x08, _SC_LEVEL1_ICACHE_SIZE, 16384, 4, 32 },
- { 0x0a, _SC_LEVEL1_DCACHE_SIZE, 8192, 2, 32 },
- { 0x0c, _SC_LEVEL1_DCACHE_SIZE, 16384, 4, 32 },
- { 0x22, _SC_LEVEL3_CACHE_SIZE, 524288, 4, 64 },
- { 0x23, _SC_LEVEL3_CACHE_SIZE, 1048576, 8, 64 },
- { 0x25, _SC_LEVEL3_CACHE_SIZE, 2097152, 8, 64 },
- { 0x29, _SC_LEVEL3_CACHE_SIZE, 4194304, 8, 64 },
- { 0x2c, _SC_LEVEL1_DCACHE_SIZE, 32768, 8, 64 },
- { 0x30, _SC_LEVEL1_ICACHE_SIZE, 32768, 8, 64 },
- { 0x39, _SC_LEVEL2_CACHE_SIZE, 131072, 4, 64 },
- { 0x3a, _SC_LEVEL2_CACHE_SIZE, 196608, 6, 64 },
- { 0x3b, _SC_LEVEL2_CACHE_SIZE, 131072, 2, 64 },
- { 0x3c, _SC_LEVEL2_CACHE_SIZE, 262144, 4, 64 },
- { 0x3d, _SC_LEVEL2_CACHE_SIZE, 393216, 6, 64 },
- { 0x3e, _SC_LEVEL2_CACHE_SIZE, 524288, 4, 64 },
- { 0x3f, _SC_LEVEL2_CACHE_SIZE, 262144, 2, 64 },
- { 0x41, _SC_LEVEL2_CACHE_SIZE, 131072, 4, 32 },
- { 0x42, _SC_LEVEL2_CACHE_SIZE, 262144, 4, 32 },
- { 0x43, _SC_LEVEL2_CACHE_SIZE, 524288, 4, 32 },
- { 0x44, _SC_LEVEL2_CACHE_SIZE, 1048576, 4, 32 },
- { 0x45, _SC_LEVEL2_CACHE_SIZE, 2097152, 4, 32 },
- { 0x46, _SC_LEVEL3_CACHE_SIZE, 4194304, 4, 64 },
- { 0x47, _SC_LEVEL3_CACHE_SIZE, 8388608, 8, 64 },
- { 0x48, _SC_LEVEL2_CACHE_SIZE, 3145728, 12, 64 },
- { 0x49, _SC_LEVEL2_CACHE_SIZE, 4194304, 16, 64 },
- { 0x4a, _SC_LEVEL3_CACHE_SIZE, 6291456, 12, 64 },
- { 0x4b, _SC_LEVEL3_CACHE_SIZE, 8388608, 16, 64 },
- { 0x4c, _SC_LEVEL3_CACHE_SIZE, 12582912, 12, 64 },
- { 0x4d, _SC_LEVEL3_CACHE_SIZE, 16777216, 16, 64 },
- { 0x4e, _SC_LEVEL2_CACHE_SIZE, 6291456, 24, 64 },
- { 0x60, _SC_LEVEL1_DCACHE_SIZE, 16384, 8, 64 },
- { 0x66, _SC_LEVEL1_DCACHE_SIZE, 8192, 4, 64 },
- { 0x67, _SC_LEVEL1_DCACHE_SIZE, 16384, 4, 64 },
- { 0x68, _SC_LEVEL1_DCACHE_SIZE, 32768, 4, 64 },
- { 0x78, _SC_LEVEL2_CACHE_SIZE, 1048576, 8, 64 },
- { 0x79, _SC_LEVEL2_CACHE_SIZE, 131072, 8, 64 },
- { 0x7a, _SC_LEVEL2_CACHE_SIZE, 262144, 8, 64 },
- { 0x7b, _SC_LEVEL2_CACHE_SIZE, 524288, 8, 64 },
- { 0x7c, _SC_LEVEL2_CACHE_SIZE, 1048576, 8, 64 },
- { 0x7d, _SC_LEVEL2_CACHE_SIZE, 2097152, 8, 64 },
- { 0x7f, _SC_LEVEL2_CACHE_SIZE, 524288, 2, 64 },
- { 0x82, _SC_LEVEL2_CACHE_SIZE, 262144, 8, 32 },
- { 0x83, _SC_LEVEL2_CACHE_SIZE, 524288, 8, 32 },
- { 0x84, _SC_LEVEL2_CACHE_SIZE, 1048576, 8, 32 },
- { 0x85, _SC_LEVEL2_CACHE_SIZE, 2097152, 8, 32 },
- { 0x86, _SC_LEVEL2_CACHE_SIZE, 524288, 4, 64 },
- { 0x87, _SC_LEVEL2_CACHE_SIZE, 1048576, 8, 64 },
+#define M(sc) ((sc) - _SC_LEVEL1_ICACHE_SIZE)
+ { 0x06, 4, 32, M(_SC_LEVEL1_ICACHE_SIZE), 8192 },
+ { 0x08, 4, 32, M(_SC_LEVEL1_ICACHE_SIZE), 16384 },
+ { 0x09, 4, 32, M(_SC_LEVEL1_ICACHE_SIZE), 32768 },
+ { 0x0a, 2, 32, M(_SC_LEVEL1_DCACHE_SIZE), 8192 },
+ { 0x0c, 4, 32, M(_SC_LEVEL1_DCACHE_SIZE), 16384 },
+ { 0x0d, 4, 64, M(_SC_LEVEL1_DCACHE_SIZE), 16384 },
+ { 0x21, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 262144 },
+ { 0x22, 4, 64, M(_SC_LEVEL3_CACHE_SIZE), 524288 },
+ { 0x23, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 1048576 },
+ { 0x25, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 },
+ { 0x29, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 },
+ { 0x2c, 8, 64, M(_SC_LEVEL1_DCACHE_SIZE), 32768 },
+ { 0x30, 8, 64, M(_SC_LEVEL1_ICACHE_SIZE), 32768 },
+ { 0x39, 4, 64, M(_SC_LEVEL2_CACHE_SIZE), 131072 },
+ { 0x3a, 6, 64, M(_SC_LEVEL2_CACHE_SIZE), 196608 },
+ { 0x3b, 2, 64, M(_SC_LEVEL2_CACHE_SIZE), 131072 },
+ { 0x3c, 4, 64, M(_SC_LEVEL2_CACHE_SIZE), 262144 },
+ { 0x3d, 6, 64, M(_SC_LEVEL2_CACHE_SIZE), 393216 },
+ { 0x3e, 4, 64, M(_SC_LEVEL2_CACHE_SIZE), 524288 },
+ { 0x3f, 2, 64, M(_SC_LEVEL2_CACHE_SIZE), 262144 },
+ { 0x41, 4, 32, M(_SC_LEVEL2_CACHE_SIZE), 131072 },
+ { 0x42, 4, 32, M(_SC_LEVEL2_CACHE_SIZE), 262144 },
+ { 0x43, 4, 32, M(_SC_LEVEL2_CACHE_SIZE), 524288 },
+ { 0x44, 4, 32, M(_SC_LEVEL2_CACHE_SIZE), 1048576 },
+ { 0x45, 4, 32, M(_SC_LEVEL2_CACHE_SIZE), 2097152 },
+ { 0x46, 4, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 },
+ { 0x47, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 8388608 },
+ { 0x48, 12, 64, M(_SC_LEVEL2_CACHE_SIZE), 3145728 },
+ { 0x49, 16, 64, M(_SC_LEVEL2_CACHE_SIZE), 4194304 },
+ { 0x4a, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 6291456 },
+ { 0x4b, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 8388608 },
+ { 0x4c, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 12582912 },
+ { 0x4d, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 16777216 },
+ { 0x4e, 24, 64, M(_SC_LEVEL2_CACHE_SIZE), 6291456 },
+ { 0x60, 8, 64, M(_SC_LEVEL1_DCACHE_SIZE), 16384 },
+ { 0x66, 4, 64, M(_SC_LEVEL1_DCACHE_SIZE), 8192 },
+ { 0x67, 4, 64, M(_SC_LEVEL1_DCACHE_SIZE), 16384 },
+ { 0x68, 4, 64, M(_SC_LEVEL1_DCACHE_SIZE), 32768 },
+ { 0x78, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 1048576 },
+ { 0x79, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 131072 },
+ { 0x7a, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 262144 },
+ { 0x7b, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 524288 },
+ { 0x7c, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 1048576 },
+ { 0x7d, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 2097152 },
+ { 0x7f, 2, 64, M(_SC_LEVEL2_CACHE_SIZE), 524288 },
+ { 0x82, 8, 32, M(_SC_LEVEL2_CACHE_SIZE), 262144 },
+ { 0x83, 8, 32, M(_SC_LEVEL2_CACHE_SIZE), 524288 },
+ { 0x84, 8, 32, M(_SC_LEVEL2_CACHE_SIZE), 1048576 },
+ { 0x85, 8, 32, M(_SC_LEVEL2_CACHE_SIZE), 2097152 },
+ { 0x86, 4, 64, M(_SC_LEVEL2_CACHE_SIZE), 524288 },
+ { 0x87, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 1048576 },
+ { 0xd0, 4, 64, M(_SC_LEVEL3_CACHE_SIZE), 524288 },
+ { 0xd1, 4, 64, M(_SC_LEVEL3_CACHE_SIZE), 1048576 },
+ { 0xd2, 4, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 },
+ { 0xd6, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 1048576 },
+ { 0xd7, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 },
+ { 0xd8, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 },
+ { 0xdc, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 },
+ { 0xdd, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 },
+ { 0xde, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 8388608 },
+ { 0xe3, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 },
+ { 0xe3, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 },
+ { 0xe4, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 8388608 },
+ { 0xea, 24, 64, M(_SC_LEVEL3_CACHE_SIZE), 12582912 },
+ { 0xeb, 24, 64, M(_SC_LEVEL3_CACHE_SIZE), 18874368 },
+ { 0xec, 24, 64, M(_SC_LEVEL3_CACHE_SIZE), 25165824 },
};
#define nintel_02_known (sizeof (intel_02_known) / sizeof (intel_02_known[0]))
@@ -153,8 +172,7 @@ intel_check_word (int name, unsigned int value, bool *has_level_2,
/* Fold the name. The _SC_ constants are always in the order SIZE,
ASSOC, LINESIZE. */
- int folded_name = (_SC_LEVEL1_ICACHE_SIZE
- + ((name - _SC_LEVEL1_ICACHE_SIZE) / 3) * 3);
+ int folded_rel_name = (M(name) / 3) * 3;
while (value != 0)
{
@@ -164,13 +182,13 @@ intel_check_word (int name, unsigned int value, bool *has_level_2,
{
*no_level_2_or_3 = true;
- if (folded_name == _SC_LEVEL3_CACHE_SIZE)
+ if (folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE))
/* No need to look further. */
break;
}
else
{
- if (byte == 0x49 && folded_name == _SC_LEVEL3_CACHE_SIZE)
+ if (byte == 0x49 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE))
{
/* Intel reused this value. For family 15, model 6 it
specifies the 3rd level cache. Otherwise the 2nd
@@ -193,7 +211,7 @@ intel_check_word (int name, unsigned int value, bool *has_level_2,
the caller asked for the level 2 cache. */
name = (_SC_LEVEL2_CACHE_SIZE
+ (name - _SC_LEVEL3_CACHE_SIZE));
- folded_name = _SC_LEVEL3_CACHE_SIZE;
+ folded_rel_name = M(_SC_LEVEL2_CACHE_SIZE);
}
}
@@ -205,9 +223,9 @@ intel_check_word (int name, unsigned int value, bool *has_level_2,
sizeof (intel_02_known[0]), intel_02_known_compare);
if (found != NULL)
{
- if (found->name == folded_name)
+ if (found->rel_name == folded_rel_name)
{
- unsigned int offset = name - folded_name;
+ unsigned int offset = M(name) - folded_rel_name;
if (offset == 0)
/* Cache size. */
@@ -219,7 +237,7 @@ intel_check_word (int name, unsigned int value, bool *has_level_2,
return found->linesize;
}
- if (found->name == _SC_LEVEL2_CACHE_SIZE)
+ if (found->rel_name == M(_SC_LEVEL2_CACHE_SIZE))
*has_level_2 = true;
}
}
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
index 89d5b12043..77e6bad105 100644
--- a/sysdeps/unix/sysv/linux/i386/sysdep.h
+++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
@@ -204,9 +204,11 @@
arg 3 %edx call-clobbered
arg 4 %esi call-saved
arg 5 %edi call-saved
+ arg 6 %ebp call-saved
The stack layout upon entering the function is:
+ 24(%esp) Arg# 6
20(%esp) Arg# 5
16(%esp) Arg# 4
12(%esp) Arg# 3
@@ -215,7 +217,7 @@
(%esp) Return address
(Of course a function with say 3 arguments does not have entries for
- arguments 4 and 5.)
+ arguments 4, 5, and 6.)
The following code tries hard to be optimal. A general assumption
(which is true according to the data books I have) is that
diff --git a/sysdeps/unix/sysv/linux/i386/versionsort64.c b/sysdeps/unix/sysv/linux/i386/versionsort64.c
index 3efce692f7..be635f918a 100644
--- a/sysdeps/unix/sysv/linux/i386/versionsort64.c
+++ b/sysdeps/unix/sysv/linux/i386/versionsort64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1997, 1998, 2000, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1992,1997,1998,2000,2004,2009 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
@@ -20,10 +20,9 @@
#include <string.h>
int
-__versionsort64 (const void *a, const void *b)
+__versionsort64 (const struct dirent64 **a, const struct dirent64 **b)
{
- return __strverscmp ((*(const struct dirent64 **) a)->d_name,
- (*(const struct dirent64 **) b)->d_name);
+ return __strverscmp ((*a)->d_name, (*b)->d_name);
}
#include <shlib-compat.h>
@@ -35,14 +34,15 @@ versioned_symbol (libc, __versionsort64, versionsort64, GLIBC_2_2);
#include <sysdeps/unix/sysv/linux/i386/olddirent.h>
int
-__old_versionsort64 (const void *a, const void *b);
+__old_versionsort64 (const struct __old_dirent64 **a,
+ const struct __old_dirent64 **b);
int
attribute_compat_text_section
-__old_versionsort64 (const void *a, const void *b)
+__old_versionsort64 (const struct __old_dirent64 **a,
+ const struct __old_dirent64 **b)
{
- return __strverscmp ((*(const struct __old_dirent64 **) a)->d_name,
- (*(const struct __old_dirent64 **) b)->d_name);
+ return __strverscmp ((*a)->d_name, (*b)->d_name);
}
compat_symbol (libc, __old_versionsort64, versionsort64, GLIBC_2_1);
diff --git a/sysdeps/unix/sysv/linux/alpha/swapcontext.S b/sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S
index 1221f67f78..e097c2288e 100644
--- a/sysdeps/unix/sysv/linux/alpha/swapcontext.S
+++ b/sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S
@@ -1,5 +1,4 @@
-/* Save current context and install the given one.
- Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2009 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
@@ -17,35 +16,33 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <sysdep.h>
-#include <ucontext-offsets.h>
+ .section .rodata.str1.8,"aMS",@progbits,1
+ .align 8
+.LC0:
+ .string "longjmp causes uninitialized stack frame"
-ENTRY(__swapcontext)
+ .section .sdata,"aws",@progbits
+ .align 8
+ .type longjmp_msg,@object
+longjmp_msg:
+ data8 .LC0
+ .size longjmp_msg, .-longjmp_msg
-#ifdef PROF
- ldgp $29, 0($27)
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
- .prologue 1
-#elif defined PIC
- .prologue 0
-#else
- ldgp $29, 0($27)
- .prologue 1
-#endif
+#define __longjmp ____longjmp_chk
#ifdef PIC
- unop
- bsr $0, __getcontext_x !samegp
- mov $17, $16
- br $31, __setcontext !samegp
+# define CALL_FAIL __GI___fortify_fail
#else
- jsr $0, __getcontext_x
- mov $17, $16
- jmp $31, __setcontext
+# define CALL_FAIL __fortify_fail
#endif
-END(__swapcontext)
-weak_alias (__swapcontext, swapcontext)
+#define CHECK_RSP(reg) \
+ cmp.ltu p0, p8 = reg, r12; \
+(p8) br.cond.dpnt .Lok;; \
+ addl r28 = @ltoffx(longjmp_msg#), r1;; \
+ ld8.mov r28 = [r28], longjmp_msg#;; \
+ ld8 out0 = [r28]; \
+ br.call.sptk.many b0 = CALL_FAIL#;; \
+.Lok:
+
+#include "__longjmp.S"
diff --git a/sysdeps/unix/sysv/linux/ia64/__longjmp.S b/sysdeps/unix/sysv/linux/ia64/__longjmp.S
index aa18fadf9c..2e74904385 100644
--- a/sysdeps/unix/sysv/linux/ia64/__longjmp.S
+++ b/sysdeps/unix/sysv/linux/ia64/__longjmp.S
@@ -42,7 +42,11 @@
/* __longjmp(__jmp_buf buf, int val) */
LEAF(__longjmp)
+#ifdef CHECK_RSP
+ alloc r8=ar.pfs,2,1,1,0
+#else
alloc r8=ar.pfs,2,1,0,0
+#endif
mov r27=ar.rsc
add r2=0x98,in0 // r2 <- &jmpbuf.orig_jmp_buf_addr
;;
@@ -70,14 +74,18 @@ LEAF(__longjmp)
add r3=8,in0 // r3 <- &jmpbuf.r1
shl r9=r25,r17
;;
+ ld8.fill.nta r28=[r2],16 // r28 <- jmpbuf.sp
or r25=r8,r9
;;
mov r26=ar.rnat
mov ar.unat=r25 // setup ar.unat (NaT bits for r1, r4-r7, and r12)
;;
- ld8.fill.nta sp=[r2],16 // r12 (sp)
+#ifdef CHECK_RSP
+ CHECK_RSP (r28)
+#endif
ld8.fill.nta gp=[r3],16 // r1 (gp)
dep r11=-1,r23,3,6 // r11 <- ia64_rse_rnat_addr(jmpbuf.ar_bsp)
+ mov sp=r28 // r12 (sp)
;;
ld8.nta r16=[r2],16 // caller's unat
ld8.nta r17=[r3],16 // fpsr
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h b/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h
index c5d5c150d3..33635fd9e0 100644
--- a/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h
+++ b/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h
@@ -1,5 +1,6 @@
/* O_*, F_*, FD_* bit values for Linux/IA64.
- Copyright (C) 1999, 2000, 2004, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2004, 2006, 2007, 2009, 2010
+ 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
@@ -28,7 +29,7 @@
#endif
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
- located on an ext2 file system */
+ located on a few file systems. */
#define O_ACCMODE 0003
#define O_RDONLY 00
#define O_WRONLY 01
@@ -40,17 +41,19 @@
#define O_APPEND 02000
#define O_NONBLOCK 04000
#define O_NDELAY O_NONBLOCK
-#define O_SYNC 010000
+#define O_SYNC 04010000
#define O_FSYNC O_SYNC
#define O_ASYNC 020000
-#ifdef __USE_GNU
-# define O_DIRECT 040000
+#ifdef __USE_XOPEN2K8
# define O_DIRECTORY 0200000 /* must be a directory */
# define O_NOFOLLOW 0400000 /* don't follow links */
-# define O_NOATIME 01000000 /* Do not set atime. */
# define O_CLOEXEC 02000000 /* Set close_on_exec. */
#endif
+#ifdef __USE_GNU
+# define O_DIRECT 040000
+# define O_NOATIME 01000000 /* Do not set atime. */
+#endif
#ifdef __USE_LARGEFILE64
/* Not necessary, files are always with 64bit off_t. */
@@ -61,7 +64,7 @@
We define the symbols here but let them do the same as O_SYNC since
this is a superset. */
#if defined __USE_POSIX199309 || defined __USE_UNIX98
-# define O_DSYNC O_SYNC /* Synchronize data. */
+# define O_DSYNC 010000 /* Synchronize data. */
# define O_RSYNC O_SYNC /* Synchronize read operations. */
#endif
@@ -80,20 +83,24 @@
#define F_SETLK64 6 /* Set record locking info (non-blocking). */
#define F_SETLKW64 7 /* Set record locking info (blocking). */
-#if defined __USE_BSD || defined __USE_UNIX98
-# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
-# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
+#if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K8
+# define F_SETOWN 8 /* Get owner (process receiving SIGIO). */
+# define F_GETOWN 9 /* Set owner (process receiving SIGIO). */
#endif
#ifdef __USE_GNU
# define F_SETSIG 10 /* Set number of signal to be sent. */
# define F_GETSIG 11 /* Get number of signal to be sent. */
+# define F_SETOWN_EX 15 /* Get owner (thread receiving SIGIO). */
+# define F_GETOWN_EX 16 /* Set owner (thread receiving SIGIO). */
#endif
#ifdef __USE_GNU
# define F_SETLEASE 1024 /* Set a lease. */
# define F_GETLEASE 1025 /* Enquire what lease is active. */
# define F_NOTIFY 1026 /* Request notfications on a directory. */
+#endif
+#ifdef __USE_XOPEN2K8
# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with
close-on-exit set. */
#endif
@@ -159,6 +166,24 @@ struct flock64
};
#endif
+#ifdef __USE_GNU
+/* Owner types. */
+enum __pid_type
+ {
+ F_OWNER_TID = 0, /* Kernel thread. */
+ F_OWNER_PID, /* Process. */
+ F_OWNER_PGRP, /* Process group. */
+ F_OWNER_GID = F_OWNER_PGRP /* Alternative, obsolete name. */
+ };
+
+/* Structure to use with F_GETOWN_EX and F_SETOWN_EX. */
+struct f_owner_ex
+ {
+ enum __pid_type type; /* Owner type of ID. */
+ __pid_t pid; /* ID of owner. */
+ };
+#endif
+
/* Define some more compatibility macros to be backward compatible with
BSD systems which did not managed to hide these kernel macros. */
@@ -212,7 +237,7 @@ extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
/* Selective file content synch'ing. */
-extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
+extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count,
unsigned int __flags);
@@ -229,6 +254,23 @@ extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
extern ssize_t tee (int __fdin, int __fdout, size_t __len,
unsigned int __flags);
+/* Reserve storage for the data of the file associated with FD. */
+# ifndef __USE_FILE_OFFSET64
+extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
+# else
+# ifdef __REDIRECT
+extern int __REDIRECT (fallocate, (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len),
+ fallocate64);
+# else
+# define fallocate fallocate64
+# endif
+# endif
+# ifdef __USE_LARGEFILE64
+extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len);
+# endif
+
#endif
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/mman.h b/sysdeps/unix/sysv/linux/ia64/bits/mman.h
index a27a30fc0c..1b278c79ee 100644
--- a/sysdeps/unix/sysv/linux/ia64/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/ia64/bits/mman.h
@@ -1,5 +1,6 @@
/* Definitions for POSIX memory map interface. Linux/ia64 version.
- Copyright (C) 1997,1998,2000,2003,2005,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,2000,2003,2005,2006,2009
+ 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
@@ -84,14 +85,17 @@
/* Advice to `madvise'. */
#ifdef __USE_BSD
-# define MADV_NORMAL 0 /* No further special treatment. */
-# define MADV_RANDOM 1 /* Expect random page references. */
-# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
-# define MADV_WILLNEED 3 /* Will need these pages. */
-# define MADV_DONTNEED 4 /* Don't need these pages. */
-# define MADV_REMOVE 9 /* Remove these pages and resources. */
-# define MADV_DONTFORK 10 /* Do not inherit across fork. */
-# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_NORMAL 0 /* No further special treatment. */
+# define MADV_RANDOM 1 /* Expect random page references. */
+# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
+# define MADV_WILLNEED 3 /* Will need these pages. */
+# define MADV_DONTNEED 4 /* Don't need these pages. */
+# define MADV_REMOVE 9 /* Remove these pages and resources. */
+# define MADV_DONTFORK 10 /* Do not inherit across fork. */
+# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_MERGEABLE 12 /* KSM may merge identical pages. */
+# define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */
+# define MADV_HWPOISON 100 /* Poison a page for testing. */
#endif
/* The POSIX people had to invent similar names for the same things. */
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/shm.h b/sysdeps/unix/sysv/linux/ia64/bits/shm.h
index 2dc58a679d..71b85295c5 100644
--- a/sysdeps/unix/sysv/linux/ia64/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/ia64/bits/shm.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2002, 2005, 2009 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
@@ -30,6 +30,7 @@
#define SHM_RDONLY 010000 /* attach read-only else read-write */
#define SHM_RND 020000 /* round attach address to SHMLBA */
#define SHM_REMAP 040000 /* take-over region on attach */
+#define SHM_EXEC 0100000 /* execution access */
/* Commands for `shmctl'. */
#define SHM_LOCK 11 /* lock segment (root only) */
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/sigaction.h b/sysdeps/unix/sysv/linux/ia64/bits/sigaction.h
index 11599d5208..b557eaa3e0 100644
--- a/sysdeps/unix/sysv/linux/ia64/bits/sigaction.h
+++ b/sysdeps/unix/sysv/linux/ia64/bits/sigaction.h
@@ -1,5 +1,5 @@
/* Definitions for Linux/ia64 sigaction.
- Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2000, 2003, 2010 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
@@ -53,6 +53,8 @@ struct sigaction
#define SA_SIGINFO 0x00000004
#if defined __USE_UNIX98 || defined __USE_MISC
# define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */
+#endif
+#if defined __USE_UNIX98 || defined __USE_MISC || defined __USE_XOPEN2K8
# define SA_RESTART 0x10000000 /* Restart syscall on signal return. */
# define SA_NODEFER 0x40000000 /* Don't automatically block the signal
when its handler is being executed. */
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h b/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h
index 66310c65b3..240ebbc9e1 100644
--- a/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h
+++ b/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h
@@ -1,5 +1,5 @@
/* siginfo_t, sigevent and constants. Linux/ia64 version.
- Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2000-2004, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
@@ -310,6 +310,10 @@ typedef struct sigevent
{
int _pad[__SIGEV_PAD_SIZE];
+ /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
+ thread to receive the signal. */
+ __pid_t _tid;
+
struct
{
void (*_function) (sigval_t); /* Function to start. */
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/stat.h b/sysdeps/unix/sysv/linux/ia64/bits/stat.h
index 1988c492b0..86acd27ae2 100644
--- a/sysdeps/unix/sysv/linux/ia64/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/ia64/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2002, 2009, 2010 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
@@ -16,10 +16,13 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SYS_STAT_H
+#if !defined _SYS_STAT_H && !defined _FCNTL_H
# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
#endif
+#ifndef _BITS_STAT_H
+#define _BITS_STAT_H 1
+
/* Versions of the `struct stat' data structure. */
#define _STAT_VER_KERNEL 0
#define _STAT_VER_LINUX 1
@@ -139,8 +142,9 @@ struct stat64
#define __S_IWRITE 0200 /* Write by owner. */
#define __S_IEXEC 0100 /* Execute by owner. */
-#if defined __USE_ATFILE || defined __USE_GNU
-/* XXX This will change to the macro for the next 2008 POSIX revision. */
+#ifdef __USE_ATFILE
# define UTIME_NOW ((1l << 30) - 1l)
# define UTIME_OMIT ((1l << 30) - 2l)
#endif
+
+#endif /* bits//stat.h */
diff --git a/sysdeps/unix/sysv/linux/ia64/wordexp.c b/sysdeps/unix/sysv/linux/ia64/wordexp.c
index 2e3d5bc2e9..c2972e40c2 100644
--- a/sysdeps/unix/sysv/linux/ia64/wordexp.c
+++ b/sysdeps/unix/sysv/linux/ia64/wordexp.c
@@ -1 +1,60 @@
-#include <sysdeps/unix/sysv/linux/alpha/wordexp.c>
+/* Copyright (C) 2001, 2004, 2005 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <shlib-compat.h>
+
+/* For Linux/Alpha we have to make the wordexp symbols versioned. */
+#define wordexp(words, pwordexp, flags) \
+ __new_wordexp (words, pwordexp, flags)
+
+#include <posix/wordexp.c>
+
+versioned_symbol (libc, __new_wordexp, wordexp, GLIBC_2_2_2);
+
+
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2_2)
+/* The old, incorrect wordexp_t definition. */
+typedef struct
+ {
+ int we_wordc; /* Count of words matched. */
+ char **we_wordv; /* List of expanded words. */
+ int we_offs; /* Slots to reserve in `we_wordv'. */
+ } old_wordexp_t;
+
+
+int
+attribute_compat_text_section
+__old_wordexp (const char *words, old_wordexp_t *pwordexp, int flags)
+{
+ wordexp_t we;
+ int result;
+
+ we.we_wordc = pwordexp->we_wordc;
+ we.we_wordv = pwordexp->we_wordv;
+ we.we_offs = pwordexp->we_offs;
+
+ result = __new_wordexp (words, &we, flags);
+
+ pwordexp->we_wordc = we.we_wordc;
+ pwordexp->we_wordv = we.we_wordv;
+ pwordexp->we_offs = we.we_offs;
+
+ return result;
+}
+compat_symbol (libc, __old_wordexp, wordexp, GLIBC_2_1);
+#endif
diff --git a/sysdeps/unix/sysv/linux/ifaddrs.c b/sysdeps/unix/sysv/linux/ifaddrs.c
index 150ec8a9b0..149bd1c3ba 100644
--- a/sysdeps/unix/sysv/linux/ifaddrs.c
+++ b/sysdeps/unix/sysv/linux/ifaddrs.c
@@ -1,5 +1,5 @@
/* getifaddrs -- get names and addresses of all network interfaces
- Copyright (C) 2003-2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2003-2008, 2009 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
@@ -323,7 +323,7 @@ map_newlink (int index, struct ifaddrs_storage *ifas, int *map, int max)
/* Create a linked list of `struct ifaddrs' structures, one for each
network interface on the host machine. If successful, store the
- list in *IFAP and 2004, 2005, 2006, return 0. On errors, return -1 and set `errno'. */
+ list in *IFAP and return 0. On errors, return -1 and set `errno'. */
int
getifaddrs (struct ifaddrs **ifap)
{
diff --git a/sysdeps/unix/sysv/linux/internal_accept4.S b/sysdeps/unix/sysv/linux/internal_accept4.S
new file mode 100644
index 0000000000..ffc553624c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/internal_accept4.S
@@ -0,0 +1,14 @@
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#if !defined __NR_accept4 && defined __NR_socketcall
+# define socket accept4
+# ifdef __ASSUME_ACCEPT4
+# define __socket accept4
+# else
+# define __socket __internal_accept4
+# endif
+# define NARGS 4
+# define NEED_CANCELLATION
+# define NO_WEAK_ALIAS
+# include <socket.S>
+#endif
diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h
index 6031eae2d0..f48e644e09 100644
--- a/sysdeps/unix/sysv/linux/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
@@ -1,6 +1,6 @@
/* Set flags signalling availability of kernel features based on given
kernel version number.
- Copyright (C) 1999-2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1999-2006, 2007, 2008, 2009 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
@@ -462,6 +462,13 @@
# define __ASSUME_SET_ROBUST_LIST 1
#endif
+/* Pessimistically assume that 2.6.18 introduced real handling of
+ large numbers of requests to readv and writev and that we don't
+ need a fallback. It likely worked for much longer. */
+#if __LINUX_KERNEL_VERSION >= 0x020612
+# define __ASSUME_COMPLETE_READV_WRITEV 1
+#endif
+
/* Support for PI futexes was added in 2.6.18. */
#if __LINUX_KERNEL_VERSION >= 0x020612
# define __ASSUME_FUTEX_LOCK_PI 1
@@ -505,9 +512,38 @@
x86-64, PPC, IA-64, and SPARC in 2.6.27. */
#if __LINUX_KERNEL_VERSION >= 0x02061b \
&& (defined __i386__ || defined __x86_64__ || defined __powerpc__ \
- || defined __ia64__ || defined __sparc__ || __s390__)
+ || defined __ia64__ || defined __sparc__ || defined __s390__)
# define __ASSUME_SOCK_CLOEXEC 1
# define __ASSUME_IN_NONBLOCK 1
# define __ASSUME_PIPE2 1
-# define __ASSUME_PACCEPT 1
+# define __ASSUME_EVENTFD2 1
+# define __ASSUME_SIGNALFD4 1
+#endif
+
+/* Support for the accept4 syscall was added in 2.6.28. */
+#if __LINUX_KERNEL_VERSION >= 0x02061c \
+ && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \
+ || defined __sparc__ || defined __s390__)
+# define __ASSUME_ACCEPT4 1
+#endif
+
+/* Support for the FUTEX_CLOCK_REALTIME flag was added in 2.6.29. */
+#if __LINUX_KERNEL_VERSION >= 0x02061d
+# define __ASSUME_FUTEX_CLOCK_REALTIME 1
+#endif
+
+/* Support for the AT_RANDOM auxiliary vector entry was added in 2.6.29. */
+#if __LINUX_KERNEL_VERSION >= 0x02061d
+# define __ASSUME_AT_RANDOM 1
+#endif
+
+/* Support for preadv and pwritev was added in 2.6.30. */
+#if __LINUX_KERNEL_VERSION >= 0x02061e
+# define __ASSUME_PREADV 1
+# define __ASSUME_PWRITEV 1
+#endif
+
+/* Support for F_GETOWN_EX was introduced in 2.6.32. */
+#if __LINUX_KERNEL_VERSION >= 0x020620
+# define __ASSUME_F_GETOWN_EX 1
#endif
diff --git a/sysdeps/unix/sysv/linux/lddlibc4.c b/sysdeps/unix/sysv/linux/lddlibc4.c
index 7683ec2efd..6d57190508 100644
--- a/sysdeps/unix/sysv/linux/lddlibc4.c
+++ b/sysdeps/unix/sysv/linux/lddlibc4.c
@@ -1,5 +1,5 @@
/* Stub for ldd script to print Linux libc4 dependencies.
- Copyright (C) 1998, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2005, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -56,6 +56,24 @@ main (int argc, char *argv[])
if (argc != 2)
return 1;
+ if (strcmp (argv[1], "--help") == 0)
+ {
+ printf (gettext ("Usage: lddlibc4 FILE\n\n"));
+ fputs (gettext ("For bug reporting instructions, please see:\n\
+<http://www.gnu.org/software/libc/bugs.html>.\n"), stdout);
+ return 0;
+ }
+ else if (strcmp (argv[1], "--version") == 0)
+ {
+ printf ("lddlibc4 (GNU %s) %s\n", PACKAGE, VERSION);
+ printf (gettext ("\
+Copyright (C) %s Free Software Foundation, Inc.\n\
+This is free software; see the source for copying conditions. There is NO\n\
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
+"), "2009");
+ return 0;
+ }
+
filename = argv[1];
/* First see whether this is really an a.out binary. */
diff --git a/sysdeps/unix/sysv/linux/ldsodefs.h b/sysdeps/unix/sysv/linux/ldsodefs.h
index 0bdca3c3fd..0965f1496f 100644
--- a/sysdeps/unix/sysv/linux/ldsodefs.h
+++ b/sysdeps/unix/sysv/linux/ldsodefs.h
@@ -1,5 +1,5 @@
/* Run-time dynamic linker data structures for loaded ELF shared objects.
- Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2006, 2009 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
@@ -53,4 +53,24 @@ extern void _dl_non_dynamic_init (void) internal_function;
# define HAVE_AUX_PAGESIZE
#endif
+/* Accept binaries which identify the binary as using Linux extensions. */
+#define VALID_ELF_HEADER(hdr,exp,size) (memcmp (hdr, exp, size) == 0 \
+ || memcmp (hdr, expected2, size) == 0)
+#define VALID_ELF_OSABI(osabi) (osabi == ELFOSABI_SYSV \
+ || osabi == ELFOSABI_LINUX)
+#define VALID_ELF_ABIVERSION(ver) (ver == 0)
+#define MORE_ELF_HEADER_DATA \
+ static const unsigned char expected2[EI_PAD] = \
+ { \
+ [EI_MAG0] = ELFMAG0, \
+ [EI_MAG1] = ELFMAG1, \
+ [EI_MAG2] = ELFMAG2, \
+ [EI_MAG3] = ELFMAG3, \
+ [EI_CLASS] = ELFW(CLASS), \
+ [EI_DATA] = byteorder, \
+ [EI_VERSION] = EV_CURRENT, \
+ [EI_OSABI] = ELFOSABI_LINUX, \
+ [EI_ABIVERSION] = 0 \
+ }
+
#endif /* ldsodefs.h */
diff --git a/sysdeps/unix/sysv/linux/libc_fatal.c b/sysdeps/unix/sysv/linux/libc_fatal.c
index c7fac6ab51..7287f4ef6c 100644
--- a/sysdeps/unix/sysv/linux/libc_fatal.c
+++ b/sysdeps/unix/sysv/linux/libc_fatal.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993-1995,1997,2000,2002-2005 Free Software Foundation, Inc.
+/* Copyright (C) 1993-1995,1997,2000,2002-2005,2009
+ 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
@@ -16,6 +17,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <atomic.h>
#include <errno.h>
#include <fcntl.h>
#include <paths.h>
@@ -131,6 +133,20 @@ __libc_message (int do_abort, const char *fmt, ...)
if (cnt == total)
written = true;
+
+ char *buf = do_abort ? malloc (total + 1) : NULL;
+ if (buf != NULL)
+ {
+ char *wp = buf;
+ for (int cnt = 0; cnt < nlist; ++cnt)
+ wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len);
+ *wp = '\0';
+
+ /* We have to free the old buffer since the application might
+ catch the SIGABRT signal. */
+ char *old = atomic_exchange_acq (&__abort_msg, buf);
+ free (old);
+ }
}
va_end (ap);
diff --git a/sysdeps/unix/sysv/linux/linkat.c b/sysdeps/unix/sysv/linux/linkat.c
index cfd0e18223..b2b7b0386b 100644
--- a/sysdeps/unix/sysv/linux/linkat.c
+++ b/sysdeps/unix/sysv/linux/linkat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2009 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
@@ -66,6 +66,12 @@ linkat (fromfd, from, tofd, to, flags)
if (fromfd != AT_FDCWD && from[0] != '/')
{
size_t filelen = strlen (from);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
- the file descriptor number
diff --git a/sysdeps/unix/sysv/linux/mkdirat.c b/sysdeps/unix/sysv/linux/mkdirat.c
index 3c190085ce..aa89d08730 100644
--- a/sysdeps/unix/sysv/linux/mkdirat.c
+++ b/sysdeps/unix/sysv/linux/mkdirat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2009 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
@@ -57,6 +57,12 @@ mkdirat (fd, file, mode)
if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/net/if_arp.h b/sysdeps/unix/sysv/linux/net/if_arp.h
index 9608652ee4..97cb61f62b 100644
--- a/sysdeps/unix/sysv/linux/net/if_arp.h
+++ b/sysdeps/unix/sysv/linux/net/if_arp.h
@@ -1,5 +1,5 @@
/* Definitions for Address Resolution Protocol.
- Copyright (C) 1997,1999,2001,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999,2001,2006,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -128,6 +128,8 @@ struct arphdr
#define ARPHRD_IEEE80211 801 /* IEEE 802.11. */
#define ARPHRD_IEEE80211_PRISM 802 /* IEEE 802.11 + Prism2 header. */
#define ARPHRD_IEEE80211_RADIOTAP 803 /* IEEE 802.11 + radiotap header. */
+#define ARPHRD_IEEE802154 804 /* IEEE 802.15.4 header. */
+#define ARPHRD_IEEE802154_PHY 805 /* IEEE 802.15.4 PHY header. */
#define ARPHRD_VOID 0xFFFF /* Void type, nothing is known. */
#define ARPHRD_NONE 0xFFFE /* Zero header length. */
diff --git a/sysdeps/unix/sysv/linux/ntp_gettime.c b/sysdeps/unix/sysv/linux/ntp_gettime.c
index f78f1682fa..8bae0d9f6f 100644
--- a/sysdeps/unix/sysv/linux/ntp_gettime.c
+++ b/sysdeps/unix/sysv/linux/ntp_gettime.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2002, 2009 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
@@ -16,8 +16,12 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#define ntp_gettime ntp_gettime_redirect
+
#include <sys/timex.h>
+#undef ntp_gettime
+
#ifndef MOD_OFFSET
# define modes mode
#endif
@@ -27,8 +31,7 @@ extern int INTUSE(__adjtimex) (struct timex *__ntx);
int
-ntp_gettime (ntv)
- struct ntptimeval *ntv;
+ntp_gettime (struct ntptimeval *ntv)
{
struct timex tntx;
int result;
diff --git a/sysdeps/alpha/fpu/s_lrintf.c b/sysdeps/unix/sysv/linux/ntp_gettimex.c
index 20a6a6cf82..ed7851b6fd 100644
--- a/sysdeps/alpha/fpu/s_lrintf.c
+++ b/sysdeps/unix/sysv/linux/ntp_gettimex.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2002, 2009 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
@@ -16,24 +16,31 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#define __llrintf not___llrintf
-#define llrintf not_llrintf
-#include <math.h>
-#undef __llrintf
-#undef llrintf
+#include <sys/timex.h>
-long int
-__lrintf (float x)
-{
- double tmp;
- long ret;
+#ifndef MOD_OFFSET
+# define modes mode
+#endif
- __asm ("cvtst/s %2,%1\n\tcvttq/svd %1,%0"
- : "=&f"(ret), "=&f"(tmp) : "f"(x));
- return ret;
-}
+extern int INTUSE(__adjtimex) (struct timex *__ntx);
+
-strong_alias (__lrintf, __llrintf)
-weak_alias (__lrintf, lrintf)
-weak_alias (__llrintf, llrintf)
+int
+ntp_gettimex (struct ntptimeval *ntv)
+{
+ struct timex tntx;
+ int result;
+
+ tntx.modes = 0;
+ result = INTUSE(__adjtimex) (&tntx);
+ ntv->time = tntx.time;
+ ntv->maxerror = tntx.maxerror;
+ ntv->esterror = tntx.esterror;
+ ntv->tai = tntx.tai;
+ ntv->__unused1 = 0;
+ ntv->__unused2 = 0;
+ ntv->__unused3 = 0;
+ ntv->__unused4 = 0;
+ return result;
+}
diff --git a/sysdeps/unix/sysv/linux/openat.c b/sysdeps/unix/sysv/linux/openat.c
index 45b566f2d0..7916c71105 100644
--- a/sysdeps/unix/sysv/linux/openat.c
+++ b/sysdeps/unix/sysv/linux/openat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2007, 2009 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
@@ -110,6 +110,12 @@ OPENAT_NOT_CANCEL (fd, file, oflag, mode)
if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/paths.h b/sysdeps/unix/sysv/linux/paths.h
index fb2c77e99b..f4860f24d9 100644
--- a/sysdeps/unix/sysv/linux/paths.h
+++ b/sysdeps/unix/sysv/linux/paths.h
@@ -44,6 +44,7 @@
#define _PATH_DEVDB "/var/run/dev.db"
#define _PATH_DEVNULL "/dev/null"
#define _PATH_DRUM "/dev/drum"
+#define _PATH_GSHADOW "/etc/gshadow"
#define _PATH_KLOG "/proc/kmsg"
#define _PATH_KMEM "/dev/kmem"
#define _PATH_LASTLOG "/var/log/lastlog"
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/environments.h b/sysdeps/unix/sysv/linux/powerpc/bits/environments.h
index a51a564cbb..c675ecc627 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/environments.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/environments.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2004, 2009 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
@@ -27,21 +27,25 @@
`-1' means it is never supported. Undefined means it cannot be
statically decided.
- _POSIX_V6_ILP32_OFF32 32bit int, long, pointers, and off_t type
- _POSIX_V6_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
+ _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type
+ _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
- _POSIX_V6_LP64_OFF32 64bit long and pointers and 32bit off_t type
- _POSIX_V6_LPBIG_OFFBIG 64bit long and pointers and large off_t type
+ _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type
+ _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type
- The macros _XBS5_ILP32_OFF32, _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and
- _XBS5_LPBIG_OFFBIG were used in previous versions of the Unix standard
- and are available only for compatibility.
+ The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
+ _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
+ _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
+ used in previous versions of the Unix standard and are available
+ only for compatibility.
*/
#if __WORDSIZE == 64
/* Environments with 32-bit wide pointers are optionally provided.
Therefore following macros aren't defined:
+ # undef _POSIX_V7_ILP32_OFF32
+ # undef _POSIX_V7_ILP32_OFFBIG
# undef _POSIX_V6_ILP32_OFF32
# undef _POSIX_V6_ILP32_OFFBIG
# undef _XBS5_ILP32_OFF32
@@ -50,10 +54,12 @@
/* We also have no use (for now) for an environment with bigger pointers
and offsets. */
+# define _POSIX_V7_LPBIG_OFFBIG -1
# define _POSIX_V6_LPBIG_OFFBIG -1
# define _XBS5_LPBIG_OFFBIG -1
/* By default we have 64-bit wide `long int', pointers and `off_t'. */
+# define _POSIX_V7_LP64_OFF64 1
# define _POSIX_V6_LP64_OFF64 1
# define _XBS5_LP64_OFF64 1
@@ -61,16 +67,20 @@
/* By default we have 32-bit wide `int', `long int', pointers and `off_t'
and all platforms support LFS. */
+# define _POSIX_V7_ILP32_OFF32 1
+# define _POSIX_V7_ILP32_OFFBIG 1
# define _POSIX_V6_ILP32_OFF32 1
# define _POSIX_V6_ILP32_OFFBIG 1
# define _XBS5_ILP32_OFF32 1
# define _XBS5_ILP32_OFFBIG 1
/* We optionally provide an environment with the above size but an 64-bit
- side `off_t'. Therefore we don't define _XBS5_ILP32_OFFBIG. */
+ side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. */
/* Environments with 64-bit wide pointers can be provided,
so these macros aren't defined:
+ # undef _POSIX_V7_LP64_OFF64
+ # undef _POSIX_V7_LPBIG_OFFBIG
# undef _POSIX_V6_LP64_OFF64
# undef _POSIX_V6_LPBIG_OFFBIG
# undef _XBS5_LP64_OFF64
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h b/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h
index 556e83da20..fea347bfc2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h
@@ -1,5 +1,5 @@
/* O_*, F_*, FD_* bit values for Linux/PowerPC.
- Copyright (C) 1995, 1996, 1997, 1998, 2000, 2003, 2004, 2006, 2007
+ Copyright (C) 1995-1998, 2000, 2003, 2004, 2006, 2007, 2009, 2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -29,7 +29,7 @@
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
- located on an ext2 file system */
+ located on a few file systems. */
#define O_ACCMODE 0003
#define O_RDONLY 00
#define O_WRONLY 01
@@ -41,17 +41,19 @@
#define O_APPEND 02000
#define O_NONBLOCK 04000
#define O_NDELAY O_NONBLOCK
-#define O_SYNC 010000
+#define O_SYNC 04010000
#define O_FSYNC O_SYNC
#define O_ASYNC 020000
-#ifdef __USE_GNU
-# define O_DIRECT 0400000 /* Direct disk access. */
+#ifdef __USE_XOPEN2K8
# define O_DIRECTORY 040000 /* Must be a directory. */
# define O_NOFOLLOW 0100000 /* Do not follow links. */
-# define O_NOATIME 01000000 /* Do not set atime. */
# define O_CLOEXEC 02000000 /* Set close_on_exec. */
#endif
+#ifdef __USE_GNU
+# define O_DIRECT 0400000 /* Direct disk access. */
+# define O_NOATIME 01000000 /* Do not set atime. */
+#endif
#ifdef __USE_LARGEFILE64
# define O_LARGEFILE 0200000
@@ -61,7 +63,7 @@
We define the symbols here but let them do the same as O_SYNC since
this is a superset. */
#if defined __USE_POSIX199309 || defined __USE_UNIX98
-# define O_DSYNC O_SYNC /* Synchronize data. */
+# define O_DSYNC 010000 /* Synchronize data. */
# define O_RSYNC O_SYNC /* Synchronize read operations. */
#endif
@@ -84,20 +86,24 @@
#define F_SETLK64 13 /* Set record locking info (non-blocking). */
#define F_SETLKW64 14 /* Set record locking info (blocking). */
-#if defined __USE_BSD || defined __USE_UNIX98
-# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
-# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
+#if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K8
+# define F_SETOWN 8 /* Get owner (process receiving SIGIO). */
+# define F_GETOWN 9 /* Set owner (process receiving SIGIO). */
#endif
#ifdef __USE_GNU
# define F_SETSIG 10 /* Set number of signal to be sent. */
# define F_GETSIG 11 /* Get number of signal to be sent. */
+# define F_SETOWN_EX 15 /* Get owner (thread receiving SIGIO). */
+# define F_GETOWN_EX 16 /* Set owner (thread receiving SIGIO). */
#endif
#ifdef __USE_GNU
# define F_SETLEASE 1024 /* Set a lease. */
# define F_GETLEASE 1025 /* Enquire what lease is active. */
# define F_NOTIFY 1026 /* Request notfications on a directory. */
+#endif
+#ifdef __USE_XOPEN2K8
# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with
close-on-exit set. */
#endif
@@ -166,6 +172,24 @@ struct flock64
};
#endif
+#ifdef __USE_GNU
+/* Owner types. */
+enum __pid_type
+ {
+ F_OWNER_TID = 0, /* Kernel thread. */
+ F_OWNER_PID, /* Process. */
+ F_OWNER_PGRP, /* Process group. */
+ F_OWNER_GID = F_OWNER_PGRP /* Alternative, obsolete name. */
+ };
+
+/* Structure to use with F_GETOWN_EX and F_SETOWN_EX. */
+struct f_owner_ex
+ {
+ enum __pid_type type; /* Owner type of ID. */
+ __pid_t pid; /* ID of owner. */
+ };
+#endif
+
/* Define some more compatibility macros to be backward compatible with
BSD systems which did not managed to hide these kernel macros. */
#ifdef __USE_BSD
@@ -218,7 +242,7 @@ extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
/* Selective file content synch'ing. */
-extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
+extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count,
unsigned int __flags);
@@ -235,6 +259,23 @@ extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
extern ssize_t tee (int __fdin, int __fdout, size_t __len,
unsigned int __flags);
+/* Reserve storage for the data of the file associated with FD. */
+# ifndef __USE_FILE_OFFSET64
+extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
+# else
+# ifdef __REDIRECT
+extern int __REDIRECT (fallocate, (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len),
+ fallocate64);
+# else
+# define fallocate fallocate64
+# endif
+# endif
+# ifdef __USE_LARGEFILE64
+extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len);
+# endif
+
#endif
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/mman.h b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h
index d5729a1f1c..e6580f8220 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h
@@ -1,5 +1,6 @@
/* Definitions for POSIX memory map interface. Linux/PowerPC version.
- Copyright (C) 1997,2000,2003,2005,2006,2008 Free Software Foundation, Inc.
+ Copyright (C) 1997,2000,2003,2005,2006,2008,2009
+ 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
@@ -85,14 +86,17 @@
/* Advice to `madvise'. */
#ifdef __USE_BSD
-# define MADV_NORMAL 0 /* No further special treatment. */
-# define MADV_RANDOM 1 /* Expect random page references. */
-# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
-# define MADV_WILLNEED 3 /* Will need these pages. */
-# define MADV_DONTNEED 4 /* Don't need these pages. */
-# define MADV_REMOVE 9 /* Remove these pages and resources. */
-# define MADV_DONTFORK 10 /* Do not inherit across fork. */
-# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_NORMAL 0 /* No further special treatment. */
+# define MADV_RANDOM 1 /* Expect random page references. */
+# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
+# define MADV_WILLNEED 3 /* Will need these pages. */
+# define MADV_DONTNEED 4 /* Don't need these pages. */
+# define MADV_REMOVE 9 /* Remove these pages and resources. */
+# define MADV_DONTFORK 10 /* Do not inherit across fork. */
+# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_MERGEABLE 12 /* KSM may merge identical pages. */
+# define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */
+# define MADV_HWPOISON 100 /* Poison a page for testing. */
#endif
/* The POSIX people had to invent similar names for the same things. */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/shm.h b/sysdeps/unix/sysv/linux/powerpc/bits/shm.h
index 6a35ff1d7c..023de7990d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/shm.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 2000, 2002, 2004
+/* Copyright (C) 1995, 1996, 1997, 2000, 2002, 2004, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -28,9 +28,10 @@
#define SHM_W 0200 /* or S_IWUGO from <linux/stat.h> */
/* Flags for `shmat'. */
-#define SHM_RDONLY 010000 /* attach read-only else read-write */
-#define SHM_RND 020000 /* round attach address to SHMLBA */
-#define SHM_REMAP 040000 /* take-over region on attach */
+#define SHM_RDONLY 010000 /* attach read-only else read-write */
+#define SHM_RND 020000 /* round attach address to SHMLBA */
+#define SHM_REMAP 040000 /* take-over region on attach */
+#define SHM_EXEC 0100000 /* execution access */
/* Commands for `shmctl'. */
#define SHM_LOCK 11 /* lock segment (root only) */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/stat.h b/sysdeps/unix/sysv/linux/powerpc/bits/stat.h
index 53457ef1fa..6e4a55f87a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+/* Copyright (C) 1992, 1995-2002, 2009, 2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -17,10 +17,13 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SYS_STAT_H
+#if !defined _SYS_STAT_H && !defined _FCNTL_H
# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
#endif
+#ifndef _BITS_STAT_H
+#define _BITS_STAT_H 1
+
#include <bits/wordsize.h>
/* Versions of the `struct stat' data structure. */
@@ -69,7 +72,7 @@ struct stat
# else
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
# endif
-#ifdef __USE_MISC
+# if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -79,17 +82,17 @@ struct stat
struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */
-# define st_atime st_atim.tv_sec /* Backward compatibility. */
-# define st_mtime st_mtim.tv_sec
-# define st_ctime st_ctim.tv_sec
-#else
+# define st_atime st_atim.tv_sec /* Backward compatibility. */
+# define st_mtime st_mtim.tv_sec
+# define st_ctime st_ctim.tv_sec
+# else
__time_t st_atime; /* Time of last access. */
unsigned long int st_atimensec; /* Nscecs of last access. */
__time_t st_mtime; /* Time of last modification. */
unsigned long int st_mtimensec; /* Nsecs of last modification. */
__time_t st_ctime; /* Time of last status change. */
unsigned long int st_ctimensec; /* Nsecs of last status change. */
-#endif
+# endif
unsigned long int __unused4;
unsigned long int __unused5;
};
@@ -109,7 +112,7 @@ struct stat64
__off64_t st_size; /* Size of file, in bytes. */
__blksize_t st_blksize; /* Optimal block size for I/O. */
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
-#ifdef __USE_MISC
+# if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -119,17 +122,17 @@ struct stat64
struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */
-# define st_atime st_atim.tv_sec /* Backward compatibility. */
-# define st_mtime st_mtim.tv_sec
-# define st_ctime st_ctim.tv_sec
-#else
+# define st_atime st_atim.tv_sec /* Backward compatibility. */
+# define st_mtime st_mtim.tv_sec
+# define st_ctime st_ctim.tv_sec
+# else
__time_t st_atime; /* Time of last access. */
unsigned long int st_atimensec; /* Nscecs of last access. */
__time_t st_mtime; /* Time of last modification. */
unsigned long int st_mtimensec; /* Nsecs of last modification. */
__time_t st_ctime; /* Time of last status change. */
unsigned long int st_ctimensec; /* Nsecs of last status change. */
-#endif
+# endif
unsigned long int __unused4;
unsigned long int __unused5;
};
@@ -163,7 +166,7 @@ struct stat
# else
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
# endif
-#ifdef __USE_MISC
+# if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -173,17 +176,17 @@ struct stat
struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */
-# define st_atime st_atim.tv_sec /* Backward compatibility. */
-# define st_mtime st_mtim.tv_sec
-# define st_ctime st_ctim.tv_sec
-#else
+# define st_atime st_atim.tv_sec /* Backward compatibility. */
+# define st_mtime st_mtim.tv_sec
+# define st_ctime st_ctim.tv_sec
+# else
__time_t st_atime; /* Time of last access. */
unsigned long int st_atimensec; /* Nscecs of last access. */
__time_t st_mtime; /* Time of last modification. */
unsigned long int st_mtimensec; /* Nsecs of last modification. */
__time_t st_ctime; /* Time of last status change. */
unsigned long int st_ctimensec; /* Nsecs of last status change. */
-#endif
+# endif
unsigned long int __unused4;
unsigned long int __unused5;
unsigned long int __unused6;
@@ -203,7 +206,7 @@ struct stat64
__off64_t st_size; /* Size of file, in bytes. */
__blksize_t st_blksize; /* Optimal block size for I/O. */
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
-#ifdef __USE_MISC
+# if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -213,17 +216,17 @@ struct stat64
struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */
-# define st_atime st_atim.tv_sec /* Backward compatibility. */
-# define st_mtime st_mtim.tv_sec
-# define st_ctime st_ctim.tv_sec
-#else
+# define st_atime st_atim.tv_sec /* Backward compatibility. */
+# define st_mtime st_mtim.tv_sec
+# define st_ctime st_ctim.tv_sec
+# else
__time_t st_atime; /* Time of last access. */
unsigned long int st_atimensec; /* Nscecs of last access. */
__time_t st_mtime; /* Time of last modification. */
unsigned long int st_mtimensec; /* Nsecs of last modification. */
__time_t st_ctime; /* Time of last status change. */
unsigned long int st_ctimensec; /* Nsecs of last status change. */
-#endif
+# endif
unsigned long int __unused4;
unsigned long int __unused5;
unsigned long int __unused6;
@@ -266,8 +269,9 @@ struct stat64
#define __S_IWRITE 0200 /* Write by owner. */
#define __S_IEXEC 0100 /* Execute by owner. */
-#if defined __USE_ATFILE || defined __USE_GNU
-/* XXX This will change to the macro for the next 2008 POSIX revision. */
+#ifdef __USE_ATFILE
# define UTIME_NOW ((1l << 30) - 1l)
# define UTIME_OMIT ((1l << 30) - 2l)
#endif
+
+#endif /* bits/stat.h */
diff --git a/sysdeps/unix/sysv/linux/powerpc/configure b/sysdeps/unix/sysv/linux/powerpc/configure
index 070bf5caeb..df2813d9cd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/configure
+++ b/sysdeps/unix/sysv/linux/powerpc/configure
@@ -2,10 +2,10 @@
# Local configure fragment for sysdeps/unix/sysv/linux/powerpc/.
-echo "$as_me:$LINENO: checking whether $CC $CFLAGS -mlong-double-128 uses IBM extended format" >&5
-echo $ECHO_N "checking whether $CC $CFLAGS -mlong-double-128 uses IBM extended format... $ECHO_C" >&6
+{ $as_echo "$as_me:$LINENO: checking whether $CC $CFLAGS -mlong-double-128 uses IBM extended format" >&5
+$as_echo_n "checking whether $CC $CFLAGS -mlong-double-128 uses IBM extended format... " >&6; }
if test "${libc_cv_mlong_double_128ibm+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -mlong-double-128"
@@ -29,45 +29,42 @@ long double foobar (long double x) { return x; }
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
libc_cv_mlong_double_128ibm=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-libc_cv_mlong_double_128ibm=no
+ libc_cv_mlong_double_128ibm=no
fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS="$save_CFLAGS"
fi
-echo "$as_me:$LINENO: result: $libc_cv_mlong_double_128ibm" >&5
-echo "${ECHO_T}$libc_cv_mlong_double_128ibm" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_mlong_double_128ibm" >&5
+$as_echo "$libc_cv_mlong_double_128ibm" >&6; }
if test "$libc_cv_mlong_double_128ibm" = no; then
- echo "$as_me:$LINENO: checking whether $CC $CFLAGS supports -mabi=ibmlongdouble" >&5
-echo $ECHO_N "checking whether $CC $CFLAGS supports -mabi=ibmlongdouble... $ECHO_C" >&6
+ { $as_echo "$as_me:$LINENO: checking whether $CC $CFLAGS supports -mabi=ibmlongdouble" >&5
+$as_echo_n "checking whether $CC $CFLAGS supports -mabi=ibmlongdouble... " >&6; }
if test "${libc_cv_mabi_ibmlongdouble+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -mlong-double-128 -mabi=ibmlongdouble"
@@ -91,45 +88,42 @@ long double foobar (long double x) { return x; }
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
libc_cv_mabi_ibmlongdouble=yes
else
- echo "$as_me: failed program was:" >&5
+ $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-libc_cv_mabi_ibmlongdouble=no
+ libc_cv_mabi_ibmlongdouble=no
fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS="$save_CFLAGS"
fi
-echo "$as_me:$LINENO: result: $libc_cv_mabi_ibmlongdouble" >&5
-echo "${ECHO_T}$libc_cv_mabi_ibmlongdouble" >&6
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_mabi_ibmlongdouble" >&5
+$as_echo "$libc_cv_mabi_ibmlongdouble" >&6; }
if test "$libc_cv_mabi_ibmlongdouble" = yes; then
CFLAGS="$CFLAGS -mabi=ibmlongdouble"
else
- { { echo "$as_me:$LINENO: error: this configuration requires -mlong-double-128 IBM extended format support" >&5
-echo "$as_me: error: this configuration requires -mlong-double-128 IBM extended format support" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: this configuration requires -mlong-double-128 IBM extended format support" >&5
+$as_echo "$as_me: error: this configuration requires -mlong-double-128 IBM extended format support" >&2;}
{ (exit 1); exit 1; }; }
fi
fi
diff --git a/sysdeps/unix/sysv/linux/powerpc/fchownat.c b/sysdeps/unix/sysv/linux/powerpc/fchownat.c
index 67c570648a..46f6d97c6b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/fchownat.c
+++ b/sysdeps/unix/sysv/linux/powerpc/fchownat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2009 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
@@ -66,6 +66,12 @@ fchownat (int fd, const char *file, uid_t owner, gid_t group, int flag)
if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h b/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h
index 9b85386a7c..0328dc08e2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h
+++ b/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h
@@ -1 +1,47 @@
-#include <sysdeps/unix/sysv/linux/alpha/ipc_priv.h>
+/* Copyright (C) 1995-1999, 2000, 2003 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sys/ipc.h>
+
+#define __IPC_64 0x100
+
+struct __old_ipc_perm
+{
+ __key_t __key; /* Key. */
+ unsigned int uid; /* Owner's user ID. */
+ unsigned int gid; /* Owner's group ID. */
+ unsigned int cuid; /* Creator's user ID. */
+ unsigned int cgid; /* Creator's group ID. */
+ unsigned int mode; /* Read/write permission. */
+ unsigned short int __seq; /* Sequence number. */
+};
+
+
+/* The codes for the functions to use the ipc syscall multiplexer. */
+#define IPCOP_semop 1
+#define IPCOP_semget 2
+#define IPCOP_semctl 3
+#define IPCOP_semtimedop 4
+#define IPCOP_msgsnd 11
+#define IPCOP_msgrcv 12
+#define IPCOP_msgget 13
+#define IPCOP_msgctl 14
+#define IPCOP_shmat 21
+#define IPCOP_shmdt 22
+#define IPCOP_shmget 23
+#define IPCOP_shmctl 24
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions b/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions
index 181d70150c..6fa0119e95 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions
@@ -27,4 +27,7 @@ libc {
GLIBC_2.3.4 {
setcontext; getcontext; swapcontext; makecontext;
}
+ GLIBC_2.11 {
+ fallocate64;
+ }
}
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S
new file mode 100644
index 0000000000..4cb968505d
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S
@@ -0,0 +1,85 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <rtld-global-offsets.h>
+
+ .section .rodata.str1.4,"aMS",@progbits,1
+ .align 2
+.LC0:
+ .string "longjmp causes uninitialized stack frame"
+ .text
+
+#define __longjmp ____longjmp_chk
+
+#ifdef PIC
+# ifdef HAVE_ASM_PPC_REL16
+# define LOAD_ARG \
+ bcl 20,31,1f; \
+1: mflr r3; \
+ addis r3,r3,_GLOBAL_OFFSET_TABLE_-1b@ha; \
+ addi r3,r3,_GLOBAL_OFFSET_TABLE_-1b@l; \
+ lwz r3,.LC0@got(r3)
+# else
+# define LOAD_ARG \
+ bl _GLOBAL_OFFSET_TABLE_-4@local; \
+ mflr r3; \
+ lwz r3,.LC0@got(r3)
+# endif
+#else
+# define LOAD_ARG \
+ lis r3,.LC0@ha; \
+ la r3,.LC0@l(r3)
+#endif
+
+#define CHECK_SP(reg) \
+ cmplw reg, r1; \
+ bge+ .Lok; \
+ mflr r0; \
+ stwu r1,-32(r1); \
+ cfi_remember_state; \
+ cfi_adjust_cfa_offset (32); \
+ stw r0,36(r1); \
+ cfi_offset (lr, 4); \
+ mr r31,r3; \
+ mr r30,r4; \
+ li r3,0; \
+ addi r4,r1,8; \
+ li r0,__NR_sigaltstack; \
+ sc; \
+ /* Without working sigaltstack we cannot perform the test. */ \
+ bso .Lok2; \
+ lwz r0,12(r1); \
+ andi. r3,r0,1; \
+ beq .Lfail; \
+ lwz r0,16(r1); \
+ lwz r3,8(r1); \
+ add r3,r3,r0; \
+ sub r3,r3,reg; \
+ cmplw r3,r0; \
+ bge+ .Lok2; \
+.Lfail: \
+ LOAD_ARG; \
+ bl HIDDEN_JUMPTARGET (__fortify_fail); \
+.Lok2: \
+ mr r3,r31; \
+ mr r4,r30; \
+ cfi_restore_state; \
+.Lok:
+
+#include <__longjmp-common.S>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/cell/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc32/cell/fpu/Implies
new file mode 100644
index 0000000000..7c381f043c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/cell/fpu/Implies
@@ -0,0 +1,3 @@
+# Make sure this comes before the powerpc/powerpc32/fpu that's
+# listed in unix/sysv/linux/powerpc/powerpc32/fpu/Implies.
+powerpc/powerpc32/cell/fpu
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/setcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/setcontext.S
deleted file mode 100644
index 7e44cdf0a1..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/setcontext.S
+++ /dev/null
@@ -1,2 +0,0 @@
-#define _ARCH_PWR6
-#include_next <setcontext.S>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/swapcontext.S
deleted file mode 100644
index 616e3db872..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/swapcontext.S
+++ /dev/null
@@ -1,2 +0,0 @@
-#define _ARCH_PWR6
-#include_next <swapcontext.S>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/fpu/Implies
new file mode 100644
index 0000000000..d379a2dd12
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/fpu/Implies
@@ -0,0 +1,3 @@
+# Make sure this comes before the powerpc/powerpc32/fpu that's
+# listed in unix/sysv/linux/powerpc/powerpc32/fpu/Implies.
+powerpc/powerpc32/power5/fpu
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
index 91ac4366c0..127c9e4581 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
@@ -1,5 +1,5 @@
/* Jump to a new context powerpc32 common.
- Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006, 2008, 2009 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
@@ -18,13 +18,13 @@
02110-1301 USA. */
/* This is the common implementation of setcontext for powerpc32.
- It not complete in itself should be included in to a framework that
+ It not complete in itself should be included in to a framework that
defines:
__CONTEXT_FUNC_NAME
and if appropriate:
__CONTEXT_ENABLE_FPRS
__CONTEXT_ENABLE_VRS
- Any archecture that implements the Vector unit is assumed to also
+ Any archecture that implements the Vector unit is assumed to also
implement the floating unit. */
/* Stack frame offsets. */
@@ -202,8 +202,10 @@ ENTRY(__CONTEXT_FUNC_NAME)
lfd fp0,_UC_FREGS+(0*8)(r31)
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
- mtfsf 0xff,fp0,1,0
+ mtfsf 0xff,fp31,1,0
# else
+ .machine push
+ .machine "power6"
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r7,PPC_FEATURE_HAS_DFP
beq 7f
@@ -212,7 +214,7 @@ ENTRY(__CONTEXT_FUNC_NAME)
b 8f
/* Continue to operate on the FPSCR as if it were 32-bits. */
7: mtfsf 0xff,fp31
-8:
+8: .machine pop
# endif /* _ARCH_PWR6 */
lfd fp1,_UC_FREGS+(1*8)(r31)
lfd fp2,_UC_FREGS+(2*8)(r31)
@@ -304,4 +306,3 @@ ENTRY(__CONTEXT_FUNC_NAME)
/* NOTREACHED */
END (__CONTEXT_FUNC_NAME)
-
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
index 77c982242a..89b1a61954 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
@@ -1,5 +1,5 @@
/* Save current context and jump to a new context.
- Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006, 2008, 2009 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
@@ -18,13 +18,13 @@
02110-1301 USA. */
/* This is the common implementation of setcontext for powerpc32.
- It not complete in itself should be included in to a framework that
+ It not complete in itself should be included in to a framework that
defines:
__CONTEXT_FUNC_NAME
and if appropriate:
__CONTEXT_ENABLE_FPRS
__CONTEXT_ENABLE_VRS
- Any archecture that implements the Vector unit is assumed to also
+ Any archecture that implements the Vector unit is assumed to also
implement the floating unit. */
/* Stack frame offsets. */
@@ -51,7 +51,7 @@ ENTRY(__CONTEXT_FUNC_NAME)
stw r0,_UC_GREGS+(PT_R0*4)(r3)
mflr r0
stw r2,_UC_GREGS+(PT_R2*4)(r3)
- stw r4,_UC_GREGS+(PT_R4*4)(r3)
+ stw r4,_UC_GREGS+(PT_R4*4)(r3)
/* Set the callers LR_SAVE, and the ucontext LR and NIP to the callers
return address. */
stw r0,_UC_GREGS+(PT_LNK*4)(r3)
@@ -85,7 +85,7 @@ ENTRY(__CONTEXT_FUNC_NAME)
stw r29,_UC_GREGS+(PT_R29*4)(r3)
stw r30,_UC_GREGS+(PT_R30*4)(r3)
stw r31,_UC_GREGS+(PT_R31*4)(r3)
-
+
/* Save the value of R1. We had to push the stack before we
had the address of uc_reg_space. So compute the address of
the callers stack pointer and save it as R1. */
@@ -174,10 +174,10 @@ ENTRY(__CONTEXT_FUNC_NAME)
la r10,(_UC_VREGS)(r3)
la r9,(_UC_VREGS+16)(r3)
-
+
/* beq L(no_vec)*/
beq 2f
-/* address of the combined VSCR/VSAVE quadword. */
+/* address of the combined VSCR/VSAVE quadword. */
la r8,(_UC_VREGS+512)(r3)
/* Save the vector registers */
@@ -194,7 +194,7 @@ ENTRY(__CONTEXT_FUNC_NAME)
stvx v3,0,r9
addi r10,r10,32
addi r9,r9,32
-
+
stvx v0,0,r8
stvx v4,0,r10
@@ -266,7 +266,7 @@ ENTRY(__CONTEXT_FUNC_NAME)
stvx v30,0,r10
stvx v31,0,r9
stw r0,0(r8)
-
+
2: /*L(no_vec):*/
# endif /* __CONTEXT_ENABLE_VRS */
#endif /* __CONTEXT_ENABLE_FPRS */
@@ -428,8 +428,10 @@ ENTRY(__CONTEXT_FUNC_NAME)
lfd fp0,_UC_FREGS+(0*8)(r31)
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
- mtfsf 0xff,fp0,1,0
+ mtfsf 0xff,fp31,1,0
# else
+ .machine push
+ .machine "power6"
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r7,PPC_FEATURE_HAS_DFP
beq 7f
@@ -438,7 +440,7 @@ ENTRY(__CONTEXT_FUNC_NAME)
b 8f
/* Continue to operate on the FPSCR as if it were 32-bits. */
7: mtfsf 0xff,fp31
-8:
+8: .machine pop
#endif /* _ARCH_PWR6 */
lfd fp1,_UC_FREGS+(1*8)(r31)
lfd fp2,_UC_FREGS+(2*8)(r31)
@@ -514,13 +516,13 @@ ENTRY(__CONTEXT_FUNC_NAME)
lwz r31,_UC_GREGS+(PT_R31*4)(r31)
bctr
-
+
3:/*L(error_exit):*/
lwz r0,_FRAME_LR_SAVE+16(r1)
addi r1,r1,16
mtlr r0
blr
-
+
4:/*L(do_sigret):*/
addi r1,r4,-0xd0
li r0,SYS_ify(rt_sigreturn)
@@ -528,4 +530,3 @@ ENTRY(__CONTEXT_FUNC_NAME)
/* NOTREACHED */
END(__CONTEXT_FUNC_NAME)
-
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list b/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list
index 82025b4855..1233be671a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list
@@ -3,3 +3,6 @@
# System calls with wrappers.
oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
+
+# Due to 64bit alignment there is a dummy second parameter
+readahead - readahead i:iiiii __readahead readahead
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S
new file mode 100644
index 0000000000..936ace5f69
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S
@@ -0,0 +1,69 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <rtld-global-offsets.h>
+
+ .section .rodata.str1.8,"aMS",@progbits,1
+ .align 3
+.LC0:
+ .string "longjmp causes uninitialized stack frame"
+ .section .toc,"aw"
+.LC1:
+ .tc .LC0[TC],.LC0
+ .text
+
+#define __longjmp ____longjmp_chk
+
+#define CHECK_SP(reg) \
+ cmpld reg, r1; \
+ bge+ .Lok; \
+ mflr r0; \
+ std r0,16(r1); \
+ mr r31,r3; \
+ mr r30,r4; \
+ stdu r1,-144(r1); \
+ cfi_remember_state; \
+ cfi_adjust_cfa_offset (144); \
+ cfi_offset (lr, 16); \
+ li r3,0; \
+ addi r4,r1,112; \
+ li r0,__NR_sigaltstack; \
+ sc; \
+ /* Without working sigaltstack we cannot perform the test. */ \
+ bso .Lok2; \
+ lwz r0,112+8(r1); \
+ andi. r4,r0,1; \
+ beq .Lfail; \
+ ld r0,112+16(r1); \
+ ld r4,112(r1); \
+ add r4,r4,r0; \
+ sub r3,r3,reg; \
+ cmpld r3,r0; \
+ bge+ .Lok2; \
+.Lfail: \
+ ld r3,.LC1@toc(2); \
+ bl HIDDEN_JUMPTARGET (__fortify_fail); \
+ nop; \
+.Lok2: \
+ mr r3,r31; \
+ mr r4,r30; \
+ cfi_restore_state; \
+.Lok:
+
+#include <__longjmp-common.S>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/fpu/Implies
new file mode 100644
index 0000000000..b6720ecda5
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/fpu/Implies
@@ -0,0 +1 @@
+powerpc/powerpc64/cell/fpu
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/setcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/setcontext.S
deleted file mode 100644
index 7e44cdf0a1..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/setcontext.S
+++ /dev/null
@@ -1,2 +0,0 @@
-#define _ARCH_PWR6
-#include_next <setcontext.S>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/swapcontext.S
deleted file mode 100644
index 616e3db872..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/swapcontext.S
+++ /dev/null
@@ -1,2 +0,0 @@
-#define _ARCH_PWR6
-#include_next <swapcontext.S>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/fpu/Implies
new file mode 100644
index 0000000000..c46b3d42af
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/fpu/Implies
@@ -0,0 +1,3 @@
+# Make sure this comes before the powerpc/powerpc64/fpu that's
+# listed in unix/sysv/linux/powerpc/powerpc64/fpu/Implies.
+powerpc/powerpc64/power5/fpu
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
index b4e28b4813..24413e00bc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
@@ -1,5 +1,6 @@
/* Switch to context.
- Copyright (C) 2002, 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004, 2005, 2006, 2008, 2009
+ 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
@@ -86,6 +87,8 @@ ENTRY(__novec_setcontext)
/* Use the extended four-operand version of the mtfsf insn. */
mtfsf 0xff,fp0,1,0
# else
+ .machine push
+ .machine "power6"
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r5,PPC_FEATURE_HAS_DFP
beq 5f
@@ -96,6 +99,7 @@ ENTRY(__novec_setcontext)
5:
mtfsf 0xff,fp0
6:
+ .machine pop
# endif /* _ARCH_PWR6 */
lfd fp29,(SIGCONTEXT_FP_REGS+(PT_R29*8))(r31)
lfd fp28,(SIGCONTEXT_FP_REGS+(PT_R28*8))(r31)
@@ -374,6 +378,8 @@ L(has_no_vec):
/* Use the extended four-operand version of the mtfsf insn. */
mtfsf 0xff,fp0,1,0
# else
+ .machine push
+ .machine "power6"
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r5,PPC_FEATURE_HAS_DFP
beq 7f
@@ -384,6 +390,7 @@ L(has_no_vec):
7:
mtfsf 0xff,fp0
8:
+ .machine pop
# endif /* _ARCH_PWR6 */
lfd fp29,(SIGCONTEXT_FP_REGS+(PT_R29*8))(r31)
lfd fp28,(SIGCONTEXT_FP_REGS+(PT_R28*8))(r31)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
index c42ccfbe44..6c075a9a35 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
@@ -1,5 +1,6 @@
/* Save current context and install the given one.
- Copyright (C) 2002, 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004, 2005, 2006, 2008, 2009
+ 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
@@ -180,6 +181,8 @@ ENTRY(__novec_swapcontext)
/* Use the extended four-operand version of the mtfsf insn. */
mtfsf 0xff,fp0,1,0
# else
+ .machine push
+ .machine "power6"
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r8,PPC_FEATURE_HAS_DFP
beq 5f
@@ -190,6 +193,7 @@ ENTRY(__novec_swapcontext)
5:
mtfsf 0xff,fp0
6:
+ .machine pop
#endif /* _ARCH_PWR6 */
lfd fp29,(SIGCONTEXT_FP_REGS+(PT_R29*8))(r31)
lfd fp28,(SIGCONTEXT_FP_REGS+(PT_R28*8))(r31)
@@ -672,6 +676,8 @@ L(has_no_vec2):
/* Use the extended four-operand version of the mtfsf insn. */
mtfsf 0xff,fp0,1,0
# else
+ .machine push
+ .machine "power6"
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r8,PPC_FEATURE_HAS_DFP
beq 7f
@@ -682,6 +688,7 @@ L(has_no_vec2):
7:
mtfsf 0xff,fp0
8:
+ .machine pop
#endif /* _ARCH_PWR6 */
lfd fp29,(SIGCONTEXT_FP_REGS+(PT_R29*8))(r31)
lfd fp28,(SIGCONTEXT_FP_REGS+(PT_R28*8))(r31)
diff --git a/sysdeps/alpha/htons.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c
index 7c6270226d..1ca4ce66df 100644
--- a/sysdeps/alpha/htons.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Selective file content synch'ing.
+ Copyright (C) 2006, 2007, 2009 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
@@ -16,25 +17,28 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/types.h>
+
#include <sysdep.h>
+#include <sys/syscall.h>
+
-ENTRY(htons)
-#ifdef PROF
- ldgp gp, 0(pv)
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
- .prologue 1
+#if defined __NR_sync_file_range2
+int
+sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags)
+{
+ return INLINE_SYSCALL (sync_file_range2, 4, fd, flags, from, to);
+}
#else
- .prologue 0
+int
+sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+stub_warning (sync_file_range)
+
+# include <stub-tag.h>
#endif
-
- extwh a0, 7, t1 # t1 = bb00
- extbl a0, 1, v0 # v0 = 00aa
- bis v0, t1, v0 # v0 = bbaa
- ret
-
- END(htons)
-
-weak_alias (htons, ntohs)
diff --git a/sysdeps/unix/sysv/linux/preadv.c b/sysdeps/unix/sysv/linux/preadv.c
new file mode 100644
index 0000000000..72722ebc0d
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/preadv.c
@@ -0,0 +1,95 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <stddef.h>
+#include <sys/param.h>
+#if __WORDSIZE == 64
+/* Hide the preadv64 declaration. */
+# define preadv64 __redirect_preadv64
+#endif
+#include <sys/uio.h>
+
+#include <sysdep-cancel.h>
+#include <sys/syscall.h>
+#include <kernel-features.h>
+
+
+#ifndef PREADV
+# define PREADV preadv
+# define PREADV_REPLACEMENT __atomic_preadv_replacement
+# define PREAD __pread
+# define OFF_T off_t
+#endif
+
+#define LO_HI_LONG(val) \
+ (off_t) val, \
+ (off_t) ((((uint64_t) (val)) >> (sizeof (long) * 4)) >> (sizeof (long) * 4))
+
+#ifndef __ASSUME_PREADV
+static ssize_t PREADV_REPLACEMENT (int, __const struct iovec *,
+ int, OFF_T) internal_function;
+#endif
+
+
+ssize_t
+PREADV (fd, vector, count, offset)
+ int fd;
+ const struct iovec *vector;
+ int count;
+ OFF_T offset;
+{
+#ifdef __NR_preadv
+ ssize_t result;
+
+ if (SINGLE_THREAD_P)
+ result = INLINE_SYSCALL (preadv, 5, fd, vector, count,
+ LO_HI_LONG (offset));
+ else
+ {
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+ result = INLINE_SYSCALL (preadv, 5, fd, vector, count,
+ LO_HI_LONG (offset));
+
+ LIBC_CANCEL_RESET (oldtype);
+ }
+# ifdef __ASSUME_PREADV
+ return result;
+# endif
+#endif
+
+#ifndef __ASSUME_PREADV
+# ifdef __NR_preadv
+ if (result >= 0 || errno != ENOSYS)
+ return result;
+# endif
+
+ return PREADV_REPLACEMENT (fd, vector, count, offset);
+#endif
+}
+#if __WORDSIZE == 64
+# undef preadv64
+strong_alias (preadv, preadv64)
+#endif
+
+#ifndef __ASSUME_PREADV
+# undef PREADV
+# define PREADV static internal_function PREADV_REPLACEMENT
+# include <sysdeps/posix/preadv.c>
+#endif
diff --git a/sysdeps/unix/sysv/linux/preadv64.c b/sysdeps/unix/sysv/linux/preadv64.c
new file mode 100644
index 0000000000..936ff1426c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/preadv64.c
@@ -0,0 +1,6 @@
+#define PREADV preadv64
+#define PREADV_REPLACEMENT __atomic_preadv64_replacement
+#define PREAD __libc_pread64
+#define OFF_T off64_t
+
+#include "preadv.c"
diff --git a/sysdeps/unix/sysv/linux/ptsname.c b/sysdeps/unix/sysv/linux/ptsname.c
index 9c364b18b4..1f1c64bc8c 100644
--- a/sysdeps/unix/sysv/linux/ptsname.c
+++ b/sysdeps/unix/sysv/linux/ptsname.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2001, 2002, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 1998.
@@ -67,14 +67,10 @@ ptsname (int fd)
}
-/* Store at most BUFLEN characters of the pathname of the slave pseudo
- terminal associated with the master FD is open on in BUF.
- Return 0 on success, otherwise an error number. */
int
-__ptsname_r (int fd, char *buf, size_t buflen)
+__ptsname_internal (int fd, char *buf, size_t buflen, struct stat64 *stp)
{
int save_errno = errno;
- struct stat64 st;
unsigned int ptyno;
if (buf == NULL)
@@ -93,7 +89,7 @@ __ptsname_r (int fd, char *buf, size_t buflen)
if (__ioctl (fd, TIOCGPTN, &ptyno) == 0)
{
/* Buffer we use to print the number in. For a maximum size for
- `int' of 8 bytes we never need more than 20 digits. */
+ `int' of 8 bytes we never need more than 20 digits. */
char numbuf[21];
const char *devpts = _PATH_DEVPTS;
const size_t devptslen = strlen (_PATH_DEVPTS);
@@ -121,21 +117,23 @@ __ptsname_r (int fd, char *buf, size_t buflen)
return ERANGE;
}
- if (__fxstat64 (_STAT_VER, fd, &st) < 0)
+ if (__fxstat64 (_STAT_VER, fd, stp) < 0)
return errno;
/* Check if FD really is a master pseudo terminal. */
- if (! MASTER_P (st.st_rdev))
+ if (! MASTER_P (stp->st_rdev))
{
__set_errno (ENOTTY);
return ENOTTY;
}
- ptyno = minor (st.st_rdev);
+ ptyno = minor (stp->st_rdev);
+#if __LINUX_KERNEL_VERSION < 131443
/* This is for the old BSD pseudo terminals. As of Linux
- 2.1.115 these are no longer supported. */
- if (major (st.st_rdev) == 4)
+ 2.1.115 these are no longer supported. */
+ if (major (stp->st_rdev) == 4)
ptyno -= 128;
+#endif
if (ptyno / 16 >= strlen (__libc_ptyname1))
{
@@ -149,12 +147,12 @@ __ptsname_r (int fd, char *buf, size_t buflen)
p[2] = '\0';
}
- if (__xstat64 (_STAT_VER, buf, &st) < 0)
+ if (__xstat64 (_STAT_VER, buf, stp) < 0)
return errno;
/* Check if the name we're about to return really corresponds to a
slave pseudo terminal. */
- if (! S_ISCHR (st.st_mode) || ! SLAVE_P (st.st_rdev))
+ if (! S_ISCHR (stp->st_mode) || ! SLAVE_P (stp->st_rdev))
{
/* This really is a configuration problem. */
__set_errno (ENOTTY);
@@ -164,4 +162,15 @@ __ptsname_r (int fd, char *buf, size_t buflen)
__set_errno (save_errno);
return 0;
}
+
+
+/* Store at most BUFLEN characters of the pathname of the slave pseudo
+ terminal associated with the master FD is open on in BUF.
+ Return 0 on success, otherwise an error number. */
+int
+__ptsname_r (int fd, char *buf, size_t buflen)
+{
+ struct stat64 st;
+ return __ptsname_internal (fd, buf, buflen, &st);
+}
weak_alias (__ptsname_r, ptsname_r)
diff --git a/sysdeps/unix/sysv/linux/pwritev.c b/sysdeps/unix/sysv/linux/pwritev.c
new file mode 100644
index 0000000000..2e9cbb2536
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/pwritev.c
@@ -0,0 +1,95 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <stddef.h>
+#include <sys/param.h>
+#if __WORDSIZE == 64 && !defined PWRITEV
+/* Hide the pwritev64 declaration. */
+# define pwritev64 __redirect_pwritev64
+#endif
+#include <sys/uio.h>
+
+#include <sysdep-cancel.h>
+#include <sys/syscall.h>
+#include <kernel-features.h>
+
+
+#ifndef PWRITEV
+# define PWRITEV pwritev
+# define PWRITEV_REPLACEMENT __atomic_pwritev_replacement
+# define PWRITE __pwrite
+# define OFF_T off_t
+#endif
+
+#define LO_HI_LONG(val) \
+ (off_t) val, \
+ (off_t) ((((uint64_t) (val)) >> (sizeof (long) * 4)) >> (sizeof (long) * 4))
+
+#ifndef __ASSUME_PWRITEV
+static ssize_t PWRITEV_REPLACEMENT (int, __const struct iovec *,
+ int, OFF_T) internal_function;
+#endif
+
+
+ssize_t
+PWRITEV (fd, vector, count, offset)
+ int fd;
+ const struct iovec *vector;
+ int count;
+ OFF_T offset;
+{
+#ifdef __NR_pwritev
+ ssize_t result;
+
+ if (SINGLE_THREAD_P)
+ result = INLINE_SYSCALL (pwritev, 5, fd, vector, count,
+ LO_HI_LONG (offset));
+ else
+ {
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+ result = INLINE_SYSCALL (pwritev, 5, fd, vector, count,
+ LO_HI_LONG (offset));
+
+ LIBC_CANCEL_RESET (oldtype);
+ }
+# ifdef __ASSUME_PWRITEV
+ return result;
+# endif
+#endif
+
+#ifndef __ASSUME_PWRITEV
+# ifdef __NR_pwritev
+ if (result >= 0 || errno != ENOSYS)
+ return result;
+# endif
+
+ return PWRITEV_REPLACEMENT (fd, vector, count, offset);
+#endif
+}
+#if __WORDSIZE == 64 && defined pwritev64
+# undef pwritev64
+strong_alias (pwritev, pwritev64)
+#endif
+
+#ifndef __ASSUME_PWRITEV
+# undef PWRITEV
+# define PWRITEV static internal_function PWRITEV_REPLACEMENT
+# include <sysdeps/posix/pwritev.c>
+#endif
diff --git a/sysdeps/unix/sysv/linux/pwritev64.c b/sysdeps/unix/sysv/linux/pwritev64.c
new file mode 100644
index 0000000000..1e8168f103
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/pwritev64.c
@@ -0,0 +1,6 @@
+#define PWRITEV pwritev64
+#define PWRITEV_REPLACEMENT __atomic_pwritev64_replacement
+#define PWRITE __pwrite64
+#define OFF_T off64_t
+
+#include "pwritev.c"
diff --git a/sysdeps/unix/sysv/linux/readlinkat.c b/sysdeps/unix/sysv/linux/readlinkat.c
index 1361596503..55abff143d 100644
--- a/sysdeps/unix/sysv/linux/readlinkat.c
+++ b/sysdeps/unix/sysv/linux/readlinkat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2009 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
@@ -59,6 +59,12 @@ readlinkat (fd, path, buf, len)
if (fd != AT_FDCWD && path[0] != '/')
{
size_t pathlen = strlen (path);
+ if (__builtin_expect (pathlen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/readv.c b/sysdeps/unix/sysv/linux/readv.c
index 250c00a075..9425084a25 100644
--- a/sysdeps/unix/sysv/linux/readv.c
+++ b/sysdeps/unix/sysv/linux/readv.c
@@ -1,5 +1,5 @@
/* readv supports all Linux kernels >= 2.0.
- Copyright (C) 1997,1998,2000,2002,2003 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,2000,2002,2003,2009 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
@@ -25,9 +25,12 @@
#include <sysdep-cancel.h>
#include <sys/syscall.h>
#include <bp-checks.h>
+#include <kernel-features.h>
+#ifndef __ASSUME_COMPLETE_READV_WRITEV
static ssize_t __atomic_readv_replacement (int, __const struct iovec *,
int) internal_function;
+#endif
/* Not all versions of the kernel support the large number of records. */
@@ -36,41 +39,38 @@ static ssize_t __atomic_readv_replacement (int, __const struct iovec *,
#endif
-/* We should deal with kernel which have a smaller UIO_FASTIOV as well
- as a very big count. */
-static ssize_t
-do_readv (int fd, const struct iovec *vector, int count)
-{
- ssize_t bytes_read;
-
- bytes_read = INLINE_SYSCALL (readv, 3, fd, CHECK_N (vector, count), count);
-
- if (bytes_read >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
- return bytes_read;
-
- return __atomic_readv_replacement (fd, vector, count);
-}
-
-
ssize_t
__libc_readv (fd, vector, count)
int fd;
const struct iovec *vector;
int count;
{
- if (SINGLE_THREAD_P)
- return do_readv (fd, vector, count);
+ ssize_t result;
- int oldtype = LIBC_CANCEL_ASYNC ();
+ if (SINGLE_THREAD_P)
+ result = INLINE_SYSCALL (readv, 3, fd, CHECK_N (vector, count), count);
+ else
+ {
+ int oldtype = LIBC_CANCEL_ASYNC ();
- int result = do_readv (fd, vector, count);
+ result = INLINE_SYSCALL (readv, 3, fd, CHECK_N (vector, count), count);
- LIBC_CANCEL_RESET (oldtype);
+ LIBC_CANCEL_RESET (oldtype);
+ }
+#ifdef __ASSUME_COMPLETE_READV_WRITEV
return result;
+#else
+ if (result >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
+ return result;
+
+ return __atomic_readv_replacement (fd, vector, count);
+#endif
}
strong_alias (__libc_readv, __readv)
weak_alias (__libc_readv, readv)
-#define __libc_readv static internal_function __atomic_readv_replacement
-#include <sysdeps/posix/readv.c>
+#ifndef __ASSUME_COMPLETE_READV_WRITEV
+# define __libc_readv static internal_function __atomic_readv_replacement
+# include <sysdeps/posix/readv.c>
+#endif
diff --git a/sysdeps/unix/sysv/linux/renameat.c b/sysdeps/unix/sysv/linux/renameat.c
index 86bb75a7b0..160bdc4903 100644
--- a/sysdeps/unix/sysv/linux/renameat.c
+++ b/sysdeps/unix/sysv/linux/renameat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2009 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
@@ -135,6 +135,12 @@ renameat (oldfd, old, newfd, new)
if (oldfd != AT_FDCWD && old[0] != '/')
{
size_t filelen = strlen (old);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
- the file descriptor number
@@ -154,6 +160,12 @@ renameat (oldfd, old, newfd, new)
if (newfd != AT_FDCWD && new[0] != '/')
{
size_t filelen = strlen (new);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
- the file descriptor number
diff --git a/sysdeps/unix/sysv/linux/s390/Makefile b/sysdeps/unix/sysv/linux/s390/Makefile
index 5c5381871b..72eae688db 100644
--- a/sysdeps/unix/sysv/linux/s390/Makefile
+++ b/sysdeps/unix/sysv/linux/s390/Makefile
@@ -6,3 +6,7 @@ endif
ifeq ($(subdir),stdlib)
gen-as-const-headers += ucontext_i.sym
endif
+
+ifeq ($(subdir),elf)
+sysdep_routines += dl-vdso
+endif
diff --git a/sysdeps/unix/sysv/linux/s390/Versions b/sysdeps/unix/sysv/linux/s390/Versions
new file mode 100644
index 0000000000..627ff53529
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/Versions
@@ -0,0 +1,6 @@
+libc {
+ GLIBC_PRIVATE {
+ __vdso_clock_gettime;
+ __vdso_clock_getres;
+ }
+}
diff --git a/sysdeps/unix/sysv/linux/s390/bits/environments.h b/sysdeps/unix/sysv/linux/s390/bits/environments.h
index 713d21c9a5..29628b2ed4 100644
--- a/sysdeps/unix/sysv/linux/s390/bits/environments.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/environments.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2004, 2009 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
@@ -27,21 +27,25 @@
`-1' means it is never supported. Undefined means it cannot be
statically decided.
- _POSIX_V6_ILP32_OFF32 32bit int, long, pointers, and off_t type
- _POSIX_V6_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
+ _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type
+ _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
- _POSIX_V6_LP64_OFF32 64bit long and pointers and 32bit off_t type
- _POSIX_V6_LPBIG_OFFBIG 64bit long and pointers and large off_t type
+ _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type
+ _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type
- The macros _XBS5_ILP32_OFF32, _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and
- _XBS5_LPBIG_OFFBIG were used in previous versions of the Unix standard
- and are available only for compatibility.
+ The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
+ _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
+ _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
+ used in previous versions of the Unix standard and are available
+ only for compatibility.
*/
#if __WORDSIZE == 64
/* Environments with 32-bit wide pointers are optionally provided.
Therefore following macros aren't defined:
+ # undef _POSIX_V7_ILP32_OFF32
+ # undef _POSIX_V7_ILP32_OFFBIG
# undef _POSIX_V6_ILP32_OFF32
# undef _POSIX_V6_ILP32_OFFBIG
# undef _XBS5_ILP32_OFF32
@@ -50,10 +54,12 @@
/* We also have no use (for now) for an environment with bigger pointers
and offsets. */
+# define _POSIX_V7_LPBIG_OFFBIG -1
# define _POSIX_V6_LPBIG_OFFBIG -1
# define _XBS5_LPBIG_OFFBIG -1
/* By default we have 64-bit wide `long int', pointers and `off_t'. */
+# define _POSIX_V7_LP64_OFF64 1
# define _POSIX_V6_LP64_OFF64 1
# define _XBS5_LP64_OFF64 1
@@ -61,16 +67,20 @@
/* By default we have 32-bit wide `int', `long int', pointers and `off_t'
and all platforms support LFS. */
+# define _POSIX_V7_ILP32_OFF32 1
+# define _POSIX_V7_ILP32_OFFBIG 1
# define _POSIX_V6_ILP32_OFF32 1
# define _POSIX_V6_ILP32_OFFBIG 1
# define _XBS5_ILP32_OFF32 1
# define _XBS5_ILP32_OFFBIG 1
/* We optionally provide an environment with the above size but an 64-bit
- side `off_t'. Therefore we don't define _XBS5_ILP32_OFFBIG. */
+ side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. */
/* Environments with 64-bit wide pointers can be provided,
so these macros aren't defined:
+ # undef _POSIX_V7_LP64_OFF64
+ # undef _POSIX_V7_LPBIG_OFFBIG
# undef _POSIX_V6_LP64_OFF64
# undef _POSIX_V6_LPBIG_OFFBIG
# undef _XBS5_LP64_OFF64
diff --git a/sysdeps/unix/sysv/linux/s390/bits/fcntl.h b/sysdeps/unix/sysv/linux/s390/bits/fcntl.h
index e0cc664789..aeb1e0fe9b 100644
--- a/sysdeps/unix/sysv/linux/s390/bits/fcntl.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/fcntl.h
@@ -1,5 +1,6 @@
/* O_*, F_*, FD_* bit values for Linux.
- Copyright (C) 2000,2001,2002,2004,2006,2007 Free Software Foundation, Inc.
+ Copyright (C) 2000-2002,2004,2006,2007,2009,2010
+ 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
@@ -29,7 +30,7 @@
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
- located on an ext2 file system */
+ located on a few file systems. */
#define O_ACCMODE 0003
#define O_RDONLY 00
#define O_WRONLY 01
@@ -41,17 +42,19 @@
#define O_APPEND 02000
#define O_NONBLOCK 04000
#define O_NDELAY O_NONBLOCK
-#define O_SYNC 010000
+#define O_SYNC 04010000
#define O_FSYNC O_SYNC
#define O_ASYNC 020000
-#ifdef __USE_GNU
-# define O_DIRECT 040000 /* Direct disk access. */
+#ifdef __USE_XOPEN2K8
# define O_DIRECTORY 0200000 /* Must be a directory. */
# define O_NOFOLLOW 0400000 /* Do not follow links. */
-# define O_NOATIME 01000000 /* Do not set atime. */
# define O_CLOEXEC 02000000 /* Set close_on_exec. */
#endif
+#ifdef __USE_GNU
+# define O_DIRECT 040000 /* Direct disk access. */
+# define O_NOATIME 01000000 /* Do not set atime. */
+#endif
#ifdef __USE_LARGEFILE64
# if __WORDSIZE == 64
@@ -66,7 +69,7 @@
We define the symbols here but let them do the same as O_SYNC since
this is a superset. */
#if defined __USE_POSIX199309 || defined __USE_UNIX98
-# define O_DSYNC O_SYNC /* Synchronize data. */
+# define O_DSYNC 010000 /* Synchronize data. */
# define O_RSYNC O_SYNC /* Synchronize read operations. */
#endif
@@ -99,20 +102,24 @@
# define F_SETLKW64 14 /* Set record locking info (blocking). */
#endif
-#if defined __USE_BSD || defined __USE_UNIX98
-# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
-# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
+#if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K8
+# define F_SETOWN 8 /* Get owner (process receiving SIGIO). */
+# define F_GETOWN 9 /* Set owner (process receiving SIGIO). */
#endif
#ifdef __USE_GNU
# define F_SETSIG 10 /* Set number of signal to be sent. */
# define F_GETSIG 11 /* Get number of signal to be sent. */
+# define F_SETOWN_EX 15 /* Get owner (thread receiving SIGIO). */
+# define F_GETOWN_EX 16 /* Set owner (thread receiving SIGIO). */
#endif
#ifdef __USE_GNU
# define F_SETLEASE 1024 /* Set a lease. */
# define F_GETLEASE 1025 /* Enquire what lease is active. */
# define F_NOTIFY 1026 /* Request notfications on a directory. */
+#endif
+#ifdef __USE_XOPEN2K8
# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with
close-on-exit set. */
#endif
@@ -181,6 +188,24 @@ struct flock64
};
#endif
+#ifdef __USE_GNU
+/* Owner types. */
+enum __pid_type
+ {
+ F_OWNER_TID = 0, /* Kernel thread. */
+ F_OWNER_PID, /* Process. */
+ F_OWNER_PGRP, /* Process group. */
+ F_OWNER_GID = F_OWNER_PGRP /* Alternative, obsolete name. */
+ };
+
+/* Structure to use with F_GETOWN_EX and F_SETOWN_EX. */
+struct f_owner_ex
+ {
+ enum __pid_type type; /* Owner type of ID. */
+ __pid_t pid; /* ID of owner. */
+ };
+#endif
+
/* Define some more compatibility macros to be backward compatible with
BSD systems which did not managed to hide these kernel macros. */
#ifdef __USE_BSD
@@ -238,7 +263,7 @@ extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
/* Selective file content synch'ing. */
-extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
+extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count,
unsigned int __flags);
@@ -255,6 +280,23 @@ extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
extern ssize_t tee (int __fdin, int __fdout, size_t __len,
unsigned int __flags);
+/* Reserve storage for the data of the file associated with FD. */
+# ifndef __USE_FILE_OFFSET64
+extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
+# else
+# ifdef __REDIRECT
+extern int __REDIRECT (fallocate, (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len),
+ fallocate64);
+# else
+# define fallocate fallocate64
+# endif
+# endif
+# ifdef __USE_LARGEFILE64
+extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len);
+# endif
+
#endif
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/alpha/xstatconv.h b/sysdeps/unix/sysv/linux/s390/bits/libc-vdso.h
index 094d11e5c9..f289f9a87c 100644
--- a/sysdeps/unix/sysv/linux/alpha/xstatconv.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/libc-vdso.h
@@ -1,5 +1,5 @@
-/* Convert between the kernel's `struct stat' format, and libc's.
- Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+/* Resolve function pointers to VDSO functions.
+ Copyright (C) 2008 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
@@ -17,8 +17,19 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <kernel-features.h>
-extern int __libc_missing_axp_stat64 attribute_hidden;
-extern int __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
+#ifndef _LIBC_VDSO_H
+#define _LIBC_VDSO_H
+
+#ifdef SHARED
+
+extern long int (*__vdso_gettimeofday) (struct timeval *, void *)
attribute_hidden;
+
+extern long int (*__vdso_clock_gettime) (clockid_t, struct timespec *);
+
+extern long int (*__vdso_clock_getres) (clockid_t, struct timespec *);
+
+#endif
+
+#endif /* _LIBC_VDSO_H */
diff --git a/sysdeps/unix/sysv/linux/s390/bits/mman.h b/sysdeps/unix/sysv/linux/s390/bits/mman.h
index d25531c282..daeafd48ff 100644
--- a/sysdeps/unix/sysv/linux/s390/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/mman.h
@@ -1,5 +1,5 @@
/* Definitions for POSIX memory map interface. Linux/s390 version.
- Copyright (C) 2000,2001,2002,2003,2005,2006 Free Software Foundation, Inc.
+ Copyright (C) 2000-2003,2005,2006,2009 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
@@ -84,14 +84,17 @@
/* Advice to `madvise'. */
#ifdef __USE_BSD
-# define MADV_NORMAL 0 /* No further special treatment. */
-# define MADV_RANDOM 1 /* Expect random page references. */
-# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
-# define MADV_WILLNEED 3 /* Will need these pages. */
-# define MADV_DONTNEED 4 /* Don't need these pages. */
-# define MADV_REMOVE 9 /* Remove these pages and resources. */
-# define MADV_DONTFORK 10 /* Do not inherit across fork. */
-# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_NORMAL 0 /* No further special treatment. */
+# define MADV_RANDOM 1 /* Expect random page references. */
+# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
+# define MADV_WILLNEED 3 /* Will need these pages. */
+# define MADV_DONTNEED 4 /* Don't need these pages. */
+# define MADV_REMOVE 9 /* Remove these pages and resources. */
+# define MADV_DONTFORK 10 /* Do not inherit across fork. */
+# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_MERGEABLE 12 /* KSM may merge identical pages. */
+# define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */
+# define MADV_HWPOISON 100 /* Poison a page for testing. */
#endif
/* The POSIX people had to invent similar names for the same things. */
diff --git a/sysdeps/unix/sysv/linux/s390/bits/shm.h b/sysdeps/unix/sysv/linux/s390/bits/shm.h
index a6df6d779d..e31a29fcd7 100644
--- a/sysdeps/unix/sysv/linux/s390/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/shm.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2002, 2004, 2009 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
@@ -31,6 +31,7 @@
#define SHM_RDONLY 010000 /* attach read-only else read-write */
#define SHM_RND 020000 /* round attach address to SHMLBA */
#define SHM_REMAP 040000 /* take-over region on attach */
+#define SHM_EXEC 0100000 /* execution access */
/* Commands for `shmctl'. */
#define SHM_LOCK 11 /* lock segment (root only) */
diff --git a/sysdeps/unix/sysv/linux/s390/bits/sigaction.h b/sysdeps/unix/sysv/linux/s390/bits/sigaction.h
index 308cb5bd7a..8767d67851 100644
--- a/sysdeps/unix/sysv/linux/s390/bits/sigaction.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/sigaction.h
@@ -1,5 +1,5 @@
/* Definitions for 31 & 64 bit S/390 sigaction.
- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2010 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
@@ -90,6 +90,8 @@ struct sigaction
three arguments instead of one. */
#if defined __USE_UNIX98 || defined __USE_MISC
# define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */
+#endif
+#if defined __USE_UNIX98 || defined __USE_MISC || defined __USE_XOPEN2K8
# define SA_RESTART 0x10000000 /* Restart syscall on signal return. */
# define SA_NODEFER 0x40000000 /* Don't automatically block the signal when
its handler is being executed. */
diff --git a/sysdeps/unix/sysv/linux/s390/bits/siginfo.h b/sysdeps/unix/sysv/linux/s390/bits/siginfo.h
index 0b79853137..55b3f88c0a 100644
--- a/sysdeps/unix/sysv/linux/s390/bits/siginfo.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/siginfo.h
@@ -1,5 +1,5 @@
/* siginfo_t, sigevent and constants. S/390 version.
- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2009 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
@@ -26,7 +26,7 @@
#if (!defined __have_sigval_t \
&& (defined _SIGNAL_H || defined __need_siginfo_t \
- || defined __need_sigevent_t))
+ || defined __need_sigevent_t))
# define __have_sigval_t 1
/* Type for data associated with a signal. */
@@ -96,7 +96,7 @@ typedef struct siginfo
struct
{
void *si_addr; /* Faulting insn/memory ref. */
- int si_trapno;
+ int si_trapno;
} _sigfault;
/* SIGPOLL. */
@@ -282,6 +282,10 @@ typedef struct sigevent
{
int _pad[__SIGEV_PAD_SIZE];
+ /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
+ thread to receive the signal. */
+ __pid_t _tid;
+
struct
{
void (*_function) (sigval_t); /* Function to start. */
diff --git a/sysdeps/unix/sysv/linux/s390/bits/stat.h b/sysdeps/unix/sysv/linux/s390/bits/stat.h
index 00fcf078ba..9d62ad26f5 100644
--- a/sysdeps/unix/sysv/linux/s390/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2002, 2009, 2010 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
@@ -16,10 +16,13 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SYS_STAT_H
+#if !defined _SYS_STAT_H && !defined _FCNTL_H
# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
#endif
+#ifndef _BITS_STAT_H
+#define _BITS_STAT_H 1
+
#include <bits/wordsize.h>
#if __WORDSIZE == 64
@@ -56,7 +59,7 @@ struct stat
int pad0;
__dev_t st_rdev; /* Device number, if device. */
__off_t st_size; /* Size of file, in bytes. */
-#ifdef __USE_MISC
+#if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -109,7 +112,7 @@ struct stat
# else
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
# endif
-#ifdef __USE_MISC
+# if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -119,17 +122,17 @@ struct stat
struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */
-# define st_atime st_atim.tv_sec /* Backward compatibility. */
-# define st_mtime st_mtim.tv_sec
-# define st_ctime st_ctim.tv_sec
-#else
+# define st_atime st_atim.tv_sec /* Backward compatibility. */
+# define st_mtime st_mtim.tv_sec
+# define st_ctime st_ctim.tv_sec
+# else
__time_t st_atime; /* Time of last access. */
unsigned long int st_atimensec; /* Nscecs of last access. */
__time_t st_mtime; /* Time of last modification. */
unsigned long int st_mtimensec; /* Nsecs of last modification. */
__time_t st_ctime; /* Time of last status change. */
unsigned long int st_ctimensec; /* Nsecs of last status change. */
-#endif
+# endif
# ifndef __USE_FILE_OFFSET64
unsigned long int __unused4;
unsigned long int __unused5;
@@ -153,7 +156,7 @@ struct stat64
int pad0;
__dev_t st_rdev; /* Device number, if device. */
__off_t st_size; /* Size of file, in bytes. */
-#ifdef __USE_MISC
+# if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -163,17 +166,17 @@ struct stat64
struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */
-# define st_atime st_atim.tv_sec /* Backward compatibility. */
-# define st_mtime st_mtim.tv_sec
-# define st_ctime st_ctim.tv_sec
-#else
+# define st_atime st_atim.tv_sec /* Backward compatibility. */
+# define st_mtime st_mtim.tv_sec
+# define st_ctime st_ctim.tv_sec
+# else
__time_t st_atime; /* Time of last access. */
unsigned long int st_atimensec; /* Nscecs of last access. */
__time_t st_mtime; /* Time of last modification. */
unsigned long int st_mtimensec; /* Nsecs of last modification. */
__time_t st_ctime; /* Time of last status change. */
unsigned long int st_ctimensec; /* Nsecs of last status change. */
-#endif
+# endif
__blksize_t st_blksize; /* Optimal block size for I/O. */
__blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */
long int __unused[3];
@@ -195,7 +198,7 @@ struct stat64
__blksize_t st_blksize; /* Optimal block size for I/O. */
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
-#ifdef __USE_MISC
+# if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -205,17 +208,17 @@ struct stat64
struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */
-# define st_atime st_atim.tv_sec /* Backward compatibility. */
-# define st_mtime st_mtim.tv_sec
-# define st_ctime st_ctim.tv_sec
-#else
+# define st_atime st_atim.tv_sec /* Backward compatibility. */
+# define st_mtime st_mtim.tv_sec
+# define st_ctime st_ctim.tv_sec
+# else
__time_t st_atime; /* Time of last access. */
unsigned long int st_atimensec; /* Nscecs of last access. */
__time_t st_mtime; /* Time of last modification. */
unsigned long int st_mtimensec; /* Nsecs of last modification. */
__time_t st_ctime; /* Time of last status change. */
unsigned long int st_ctimensec; /* Nsecs of last status change. */
-#endif
+# endif
__ino64_t st_ino; /* File serial number. */
};
# endif
@@ -255,8 +258,9 @@ struct stat64
#define __S_IWRITE 0200 /* Write by owner. */
#define __S_IEXEC 0100 /* Execute by owner. */
-#if defined __USE_ATFILE || defined __USE_GNU
-/* XXX This will change to the macro for the next 2008 POSIX revision. */
+#ifdef __USE_ATFILE
# define UTIME_NOW ((1l << 30) - 1l)
# define UTIME_OMIT ((1l << 30) - 2l)
#endif
+
+#endif /* bits/stat.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/gethostname.c b/sysdeps/unix/sysv/linux/s390/gettimeofday.c
index 4e15ee43ed..1914c3b6ea 100644
--- a/sysdeps/unix/sysv/linux/alpha/gethostname.c
+++ b/sysdeps/unix/sysv/linux/s390/gettimeofday.c
@@ -1,6 +1,5 @@
-/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2001
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -17,31 +16,27 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-
#include <sysdep.h>
-#include <sys/syscall.h>
#include <bp-checks.h>
+#include <stddef.h>
+#include <sys/time.h>
+#include <time.h>
+#include <hp-timing.h>
-int
-__gethostname (char *name, size_t len)
-{
- int result;
-
- result = INLINE_SYSCALL (gethostname, 2, CHECK_N (name, len), len);
+#undef __gettimeofday
+#include <bits/libc-vdso.h>
- if (result == 0
- /* See whether the string is terminated. If not we will return
- an error. */
- && memchr (name, '\0', len) == NULL)
- {
- __set_errno (EOVERFLOW);
- result = -1;
- }
+/* Get the current time of day and timezone information,
+ putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled.
+ Returns 0 on success, -1 on errors. */
- return result;
+int
+__gettimeofday (tv, tz)
+ struct timeval *tv;
+ struct timezone *tz;
+{
+ return INLINE_VSYSCALL (gettimeofday, 2, CHECK_1 (tv), CHECK_1 (tz));
}
-weak_alias (__gethostname, gethostname)
+INTDEF (__gettimeofday)
+weak_alias (__gettimeofday, gettimeofday)
diff --git a/sysdeps/unix/sysv/linux/s390/init-first.c b/sysdeps/unix/sysv/linux/s390/init-first.c
new file mode 100644
index 0000000000..7091aac67d
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/init-first.c
@@ -0,0 +1,50 @@
+/* Copyright (C) 2008 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifdef SHARED
+# include <dl-vdso.h>
+# undef __gettimeofday
+# undef __clock_gettime
+# undef __clock_getres
+# include <bits/libc-vdso.h>
+
+long int (*__vdso_gettimeofday) (struct timeval *, void *) attribute_hidden;
+
+long int (*__vdso_clock_gettime) (clockid_t, struct timespec *)
+ __attribute__ ((nocommon));
+strong_alias (__vdso_clock_gettime, __GI___vdso_clock_gettime attribute_hidden)
+
+long int (*__vdso_clock_getres) (clockid_t, struct timespec *)
+ __attribute__ ((nocommon));
+strong_alias (__vdso_clock_getres, __GI___vdso_clock_getres attribute_hidden)
+
+
+static inline void
+_libc_vdso_platform_setup (void)
+{
+ PREPARE_VERSION (linux2629, "LINUX_2.6.29", 123718585);
+
+ __vdso_gettimeofday = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2629);
+ __vdso_clock_gettime = _dl_vdso_vsym ("__kernel_clock_gettime", &linux2629);
+ __vdso_clock_getres = _dl_vdso_vsym ("__kernel_clock_getres", &linux2629);
+}
+
+# define VDSO_SETUP _libc_vdso_platform_setup
+#endif
+
+#include "../init-first.c"
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/Versions b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
index b6d608d0ae..24e0b1d4cd 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/Versions
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
@@ -43,6 +43,9 @@ libc {
getutmp;
getutmpx;
}
+ GLIBC_2.11 {
+ fallocate64;
+ }
}
libutil {
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c b/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c
new file mode 100644
index 0000000000..b28e587498
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c
@@ -0,0 +1,55 @@
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <sysdep.h>
+#include <setjmp.h>
+#include <bits/setjmp.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <signal.h>
+#include <sys/syscall.h>
+
+#define __longjmp ____longjmp_chk
+
+#define CHECK_SP(env, guard) \
+ do \
+ { \
+ uintptr_t cur_sp; \
+ uintptr_t new_sp = env->__gregs[9]; \
+ __asm ("lr %0, %%r15" : "=r" (cur_sp)); \
+ new_sp ^= guard; \
+ if (new_sp < cur_sp) \
+ { \
+ stack_t oss; \
+ INTERNAL_SYSCALL_DECL (err); \
+ int res = INTERNAL_SYSCALL (sigaltstack, err, 2, NULL, &oss); \
+ if (!INTERNAL_SYSCALL_ERROR_P (res, err)) \
+ { \
+ if ((oss.ss_flags & SS_ONSTACK) == 0 \
+ || ((uintptr_t) (oss.ss_sp + oss.ss_size) - new_sp \
+ >= oss.ss_size)) \
+ __fortify_fail ("longjmp causes uninitialized stack frame");\
+ } \
+ } \
+ } while (0)
+
+#include "__longjmp.c"
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
index b86072bd30..5bfdc44f48 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006
+/* Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008
Free Software Foundation, Inc.
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
This file is part of the GNU C Library.
@@ -26,6 +26,11 @@
#include <dl-sysdep.h> /* For RTLD_PRIVATE_ERRNO. */
#include <tls.h>
+/* Define __set_errno() for INLINE_SYSCALL macro below. */
+#ifndef __ASSEMBLER__
+#include <errno.h>
+#endif
+
/* For Linux we can use the system call table in the header file
/usr/include/asm/unistd.h
of the kernel. But these symbols do not follow the SYS_* syntax
@@ -276,6 +281,100 @@
#define ASMFMT_5 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6)
#define ASMFMT_6 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6), "d" (gpr7)
+#define CLOBBER_0 , "3", "4", "5"
+#define CLOBBER_1 , "3", "4", "5"
+#define CLOBBER_2 , "4", "5"
+#define CLOBBER_3 , "5"
+#define CLOBBER_4
+#define CLOBBER_5
+#define CLOBBER_6
+
+/* List of system calls which are supported as vsyscalls. */
+#define HAVE_CLOCK_GETRES_VSYSCALL 1
+#define HAVE_CLOCK_GETTIME_VSYSCALL 1
+
+/* This version is for kernels that implement system calls that
+ behave like function calls as far as register saving.
+ It falls back to the syscall in the case that the vDSO doesn't
+ exist or fails for ENOSYS */
+#ifdef SHARED
+# define INLINE_VSYSCALL(name, nr, args...) \
+ ({ \
+ __label__ out; \
+ __label__ iserr; \
+ long int _ret; \
+ \
+ if (__vdso_##name != NULL) \
+ { \
+ _ret = INTERNAL_VSYSCALL_NCS (__vdso_##name, , nr, ##args); \
+ if (!INTERNAL_SYSCALL_ERROR_P (_ret, )) \
+ goto out; \
+ if (INTERNAL_SYSCALL_ERRNO (_ret, ) != ENOSYS) \
+ goto iserr; \
+ } \
+ \
+ _ret = INTERNAL_SYSCALL (name, , nr, ##args); \
+ if (INTERNAL_SYSCALL_ERROR_P (_ret, )) \
+ { \
+ iserr: \
+ __set_errno (INTERNAL_SYSCALL_ERRNO (_ret, )); \
+ _ret = -1L; \
+ } \
+ out: \
+ (int) _ret; \
+ })
+#else
+# define INLINE_VSYSCALL(name, nr, args...) \
+ INLINE_SYSCALL (name, nr, ##args)
+#endif
+
+#ifdef SHARED
+# define INTERNAL_VSYSCALL(name, err, nr, args...) \
+ ({ \
+ __label__ out; \
+ long int _ret; \
+ \
+ if (__vdso_##name != NULL) \
+ { \
+ _ret = INTERNAL_VSYSCALL_NCS (__vdso_##name, err, nr, ##args); \
+ if (!INTERNAL_SYSCALL_ERROR_P (_ret, err) \
+ || INTERNAL_SYSCALL_ERRNO (_ret, err) != ENOSYS) \
+ goto out; \
+ } \
+ _ret = INTERNAL_SYSCALL (name, err, nr, ##args); \
+ out: \
+ _ret; \
+ })
+#else
+# define INTERNAL_VSYSCALL(name, err, nr, args...) \
+ INTERNAL_SYSCALL (name, err, nr, ##args)
+#endif
+
+/* This version is for internal uses when there is no desire
+ to set errno */
+#define INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK(name, err, nr, args...) \
+ ({ \
+ long int _ret = ENOSYS; \
+ \
+ if (__vdso_##name != NULL) \
+ _ret = INTERNAL_VSYSCALL_NCS (__vdso_##name, err, nr, ##args); \
+ else \
+ err = 1 << 28; \
+ _ret; \
+ })
+
+#define INTERNAL_VSYSCALL_NCS(fn, err, nr, args...) \
+ ({ \
+ DECLARGS_##nr(args) \
+ register long _ret asm("2"); \
+ asm volatile ( \
+ "lr 11,14\n\t" \
+ "basr 14,%1\n\t" \
+ "lr 14,11\n\t" \
+ : "=d" (_ret) \
+ : "d" (fn) ASMFMT_##nr \
+ : "cc", "memory", "0", "1", "11" CLOBBER_##nr); \
+ _ret; })
/* Pointer mangling support. */
#if defined NOT_IN_libc && defined IS_IN_rtld
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c b/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c
new file mode 100644
index 0000000000..dcf58fb50b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c
@@ -0,0 +1,55 @@
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <sysdep.h>
+#include <setjmp.h>
+#include <bits/setjmp.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <signal.h>
+#include <sys/syscall.h>
+
+#define __longjmp ____longjmp_chk
+
+#define CHECK_SP(env, guard) \
+ do \
+ { \
+ uintptr_t cur_sp; \
+ uintptr_t new_sp = env->__gregs[9]; \
+ __asm ("lgr %0, %%r15" : "=r" (cur_sp)); \
+ new_sp ^= guard; \
+ if (new_sp < cur_sp) \
+ { \
+ stack_t oss; \
+ INTERNAL_SYSCALL_DECL (err); \
+ int res = INTERNAL_SYSCALL (sigaltstack, err, 2, NULL, &oss); \
+ if (!INTERNAL_SYSCALL_ERROR_P (res, err)) \
+ { \
+ if ((oss.ss_flags & SS_ONSTACK) == 0 \
+ || ((uintptr_t) (oss.ss_sp + oss.ss_size) - new_sp \
+ >= oss.ss_size)) \
+ __fortify_fail ("longjmp causes uninitialized stack frame");\
+ } \
+ } \
+ } while (0)
+
+#include "__longjmp.c"
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
index 9ddec8e041..6491a3b7b6 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
@@ -1,5 +1,5 @@
/* Assembler macros for 64 bit S/390.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2008
Free Software Foundation, Inc.
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
This file is part of the GNU C Library.
@@ -27,6 +27,11 @@
#include <dl-sysdep.h> /* For RTLD_PRIVATE_ERRNO. */
#include <tls.h>
+/* Define __set_errno() for INLINE_SYSCALL macro below. */
+#ifndef __ASSEMBLER__
+#include <errno.h>
+#endif
+
/* For Linux we can use the system call table in the header file
/usr/include/asm/unistd.h
of the kernel. But these symbols do not follow the SYS_* syntax
@@ -278,6 +283,101 @@
#define ASMFMT_5 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6)
#define ASMFMT_6 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6), "d" (gpr7)
+#define CLOBBER_0 , "3", "4", "5"
+#define CLOBBER_1 , "3", "4", "5"
+#define CLOBBER_2 , "4", "5"
+#define CLOBBER_3 , "5"
+#define CLOBBER_4
+#define CLOBBER_5
+#define CLOBBER_6
+
+/* List of system calls which are supported as vsyscalls. */
+#define HAVE_CLOCK_GETRES_VSYSCALL 1
+#define HAVE_CLOCK_GETTIME_VSYSCALL 1
+
+/* This version is for kernels that implement system calls that
+ behave like function calls as far as register saving.
+ It falls back to the syscall in the case that the vDSO doesn't
+ exist or fails for ENOSYS */
+#ifdef SHARED
+# define INLINE_VSYSCALL(name, nr, args...) \
+ ({ \
+ __label__ out; \
+ __label__ iserr; \
+ long int _ret; \
+ \
+ if (__vdso_##name != NULL) \
+ { \
+ _ret = INTERNAL_VSYSCALL_NCS (__vdso_##name, , nr, ##args); \
+ if (!INTERNAL_SYSCALL_ERROR_P (_ret, )) \
+ goto out; \
+ if (INTERNAL_SYSCALL_ERRNO (_ret, ) != ENOSYS) \
+ goto iserr; \
+ } \
+ \
+ _ret = INTERNAL_SYSCALL (name, , nr, ##args); \
+ if (INTERNAL_SYSCALL_ERROR_P (_ret, )) \
+ { \
+ iserr: \
+ __set_errno (INTERNAL_SYSCALL_ERRNO (_ret, )); \
+ _ret = -1L; \
+ } \
+ out: \
+ (int) _ret; \
+ })
+#else
+# define INLINE_VSYSCALL(name, nr, args...) \
+ INLINE_SYSCALL (name, nr, ##args)
+#endif
+
+#ifdef SHARED
+# define INTERNAL_VSYSCALL(name, err, nr, args...) \
+ ({ \
+ __label__ out; \
+ long int _ret; \
+ \
+ if (__vdso_##name != NULL) \
+ { \
+ _ret = INTERNAL_VSYSCALL_NCS (__vdso_##name, err, nr, ##args); \
+ if (!INTERNAL_SYSCALL_ERROR_P (_ret, err) \
+ || INTERNAL_SYSCALL_ERRNO (_ret, err) != ENOSYS) \
+ goto out; \
+ } \
+ _ret = INTERNAL_SYSCALL (name, err, nr, ##args); \
+ out: \
+ _ret; \
+ })
+#else
+# define INTERNAL_VSYSCALL(name, err, nr, args...) \
+ INTERNAL_SYSCALL (name, err, nr, ##args)
+#endif
+
+/* This version is for internal uses when there is no desire
+ to set errno */
+#define INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK(name, err, nr, args...) \
+ ({ \
+ long int _ret = ENOSYS; \
+ \
+ if (__vdso_##name != NULL) \
+ _ret = INTERNAL_VSYSCALL_NCS (__vdso_##name, err, nr, ##args); \
+ else \
+ err = 1 << 28; \
+ _ret; \
+ })
+
+#define INTERNAL_VSYSCALL_NCS(fn, err, nr, args...) \
+ ({ \
+ DECLARGS_##nr(args) \
+ register long _ret asm("2"); \
+ asm volatile ( \
+ "lgr 11,14\n\t" \
+ "basr 14,%1\n\t" \
+ "lgr 14,11\n\t" \
+ : "=d" (_ret) \
+ : "a" (fn) ASMFMT_##nr \
+ : "cc", "memory", "0", "1", "11" CLOBBER_##nr); \
+ _ret; })
+
/* Pointer mangling support. */
#if defined NOT_IN_libc && defined IS_IN_rtld
/* We cannot use the thread descriptor because in ld.so we use setjmp
diff --git a/sysdeps/unix/sysv/linux/sh/Makefile b/sysdeps/unix/sysv/linux/sh/Makefile
index c1b436a6fb..1ead8f2ae3 100644
--- a/sysdeps/unix/sysv/linux/sh/Makefile
+++ b/sysdeps/unix/sysv/linux/sh/Makefile
@@ -5,3 +5,8 @@ endif
ifeq ($(subdir),stdlib)
gen-as-const-headers += ucontext_i.sym
endif
+
+ifeq ($(subdir),math)
+# The libm.so link can't find __fpscr_values
+libm.so-no-z-defs = yes
+endif
diff --git a/sysdeps/unix/sysv/linux/sh/Versions b/sysdeps/unix/sysv/linux/sh/Versions
index 763be60222..bd30f928d7 100644
--- a/sysdeps/unix/sysv/linux/sh/Versions
+++ b/sysdeps/unix/sysv/linux/sh/Versions
@@ -24,4 +24,7 @@ libc {
GLIBC_2.3.3 {
posix_fadvise64; posix_fallocate64;
}
+ GLIBC_2.11 {
+ fallocate64;
+ }
}
diff --git a/sysdeps/unix/sysv/linux/sh/bits/fcntl.h b/sysdeps/unix/sysv/linux/sh/bits/fcntl.h
index fdf0df3cd8..2a4123c610 100644
--- a/sysdeps/unix/sysv/linux/sh/bits/fcntl.h
+++ b/sysdeps/unix/sysv/linux/sh/bits/fcntl.h
@@ -1,5 +1,5 @@
/* O_*, F_*, FD_* bit values for Linux.
- Copyright (C) 1995, 1996, 1997, 1998, 2000, 2004, 2006, 2007
+ Copyright (C) 1995, 1996, 1997, 1998, 2000, 2004, 2006, 2007, 2009, 2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -29,7 +29,7 @@
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
- located on an ext2 file system */
+ located on a few file systems. */
#define O_ACCMODE 0003
#define O_RDONLY 00
#define O_WRONLY 01
@@ -41,23 +41,26 @@
#define O_APPEND 02000
#define O_NONBLOCK 04000
#define O_NDELAY O_NONBLOCK
-#define O_SYNC 010000
+#define O_SYNC 04010000
#define O_FSYNC O_SYNC
#define O_ASYNC 020000
-#ifdef __USE_GNU
-# define O_DIRECT 040000 /* Direct disk access. */
+#ifdef __USE_XOPEN2K8
# define O_DIRECTORY 0200000 /* Must be a directory. */
# define O_NOFOLLOW 0400000 /* Do not follow links. */
-# define O_NOATIME 01000000 /* Do not set atime. */
# define O_CLOEXEC 02000000 /* Set close_on_exec. */
#endif
+#ifdef __USE_GNU
+# define O_DIRECT 040000 /* Direct disk access. */
+# define O_NOATIME 01000000 /* Do not set atime. */
+#endif
+
/* For now Linux has synchronisity options for data and read operations.
We define the symbols here but let them do the same as O_SYNC since
this is a superset. */
#if defined __USE_POSIX199309 || defined __USE_UNIX98
-# define O_DSYNC O_SYNC /* Synchronize data. */
+# define O_DSYNC 010000 /* Synchronize data. */
# define O_RSYNC O_SYNC /* Synchronize read operations. */
#endif
@@ -84,20 +87,24 @@
#define F_SETLK64 13 /* Set record locking info (non-blocking). */
#define F_SETLKW64 14 /* Set record locking info (blocking). */
-#if defined __USE_BSD || defined __USE_UNIX98
-# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
-# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
+#if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K8
+# define F_SETOWN 8 /* Get owner (process receiving SIGIO). */
+# define F_GETOWN 9 /* Set owner (process receiving SIGIO). */
#endif
#ifdef __USE_GNU
# define F_SETSIG 10 /* Set number of signal to be sent. */
# define F_GETSIG 11 /* Get number of signal to be sent. */
+# define F_SETOWN_EX 15 /* Get owner (thread receiving SIGIO). */
+# define F_GETOWN_EX 16 /* Set owner (thread receiving SIGIO). */
#endif
#ifdef __USE_GNU
# define F_SETLEASE 1024 /* Set a lease. */
# define F_GETLEASE 1025 /* Enquire what lease is active. */
# define F_NOTIFY 1026 /* Request notfications on a directory. */
+#endif
+#ifdef __USE_XOPEN2K8
# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with
close-on-exit set. */
#endif
@@ -166,6 +173,24 @@ struct flock64
};
#endif
+#ifdef __USE_GNU
+/* Owner types. */
+enum __pid_type
+ {
+ F_OWNER_TID = 0, /* Kernel thread. */
+ F_OWNER_PID, /* Process. */
+ F_OWNER_PGRP, /* Process group. */
+ F_OWNER_GID = F_OWNER_PGRP /* Alternative, obsolete name. */
+ };
+
+/* Structure to use with F_GETOWN_EX and F_SETOWN_EX. */
+struct f_owner_ex
+ {
+ enum __pid_type type; /* Owner type of ID. */
+ __pid_t pid; /* ID of owner. */
+ };
+#endif
+
/* Define some more compatibility macros to be backward compatible with
BSD systems which did not managed to hide these kernel macros. */
#ifdef __USE_BSD
@@ -218,7 +243,7 @@ extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
/* Selective file content synch'ing. */
-extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
+extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count,
unsigned int __flags);
@@ -235,6 +260,23 @@ extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
extern ssize_t tee (int __fdin, int __fdout, size_t __len,
unsigned int __flags);
+/* Reserve storage for the data of the file associated with FD. */
+# ifndef __USE_FILE_OFFSET64
+extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
+# else
+# ifdef __REDIRECT
+extern int __REDIRECT (fallocate, (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len),
+ fallocate64);
+# else
+# define fallocate fallocate64
+# endif
+# endif
+# ifdef __USE_LARGEFILE64
+extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len);
+# endif
+
#endif
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/sh/bits/mman.h b/sysdeps/unix/sysv/linux/sh/bits/mman.h
index 7a6b572a4e..aee0011255 100644
--- a/sysdeps/unix/sysv/linux/sh/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/sh/bits/mman.h
@@ -1,5 +1,6 @@
/* Definitions for POSIX memory map interface. Linux/SH version.
- Copyright (C) 1997,1999,2000,2003,2005,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999,2000,2003,2005,2006,2009
+ 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
@@ -83,14 +84,17 @@
/* Advice to `madvise'. */
#ifdef __USE_BSD
-# define MADV_NORMAL 0 /* No further special treatment. */
-# define MADV_RANDOM 1 /* Expect random page references. */
-# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
-# define MADV_WILLNEED 3 /* Will need these pages. */
-# define MADV_DONTNEED 4 /* Don't need these pages. */
-# define MADV_REMOVE 9 /* Remove these pages and resources. */
-# define MADV_DONTFORK 10 /* Do not inherit across fork. */
-# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_NORMAL 0 /* No further special treatment. */
+# define MADV_RANDOM 1 /* Expect random page references. */
+# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
+# define MADV_WILLNEED 3 /* Will need these pages. */
+# define MADV_DONTNEED 4 /* Don't need these pages. */
+# define MADV_REMOVE 9 /* Remove these pages and resources. */
+# define MADV_DONTFORK 10 /* Do not inherit across fork. */
+# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_MERGEABLE 12 /* KSM may merge identical pages. */
+# define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */
+# define MADV_HWPOISON 100 /* Poison a page for testing. */
#endif
/* The POSIX people had to invent similar names for the same things. */
diff --git a/sysdeps/unix/sysv/linux/sh/bits/shm.h b/sysdeps/unix/sysv/linux/sh/bits/shm.h
index 709aa3f976..6469784983 100644
--- a/sysdeps/unix/sysv/linux/sh/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/sh/bits/shm.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1996,1997,2000,2002,2004,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997,2000,2002,2004,2006,2009 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
@@ -30,6 +30,7 @@
#define SHM_RDONLY 010000 /* attach read-only else read-write */
#define SHM_RND 020000 /* round attach address to SHMLBA */
#define SHM_REMAP 040000 /* take-over region on attach */
+#define SHM_EXEC 0100000 /* execution access */
/* Commands for `shmctl'. */
#define SHM_LOCK 11 /* lock segment (root only) */
diff --git a/sysdeps/unix/sysv/linux/sh/sh4/getcontext.S b/sysdeps/unix/sysv/linux/sh/sh4/getcontext.S
index 68bc235bcf..3432dca5d1 100644
--- a/sysdeps/unix/sysv/linux/sh/sh4/getcontext.S
+++ b/sysdeps/unix/sysv/linux/sh/sh4/getcontext.S
@@ -1,5 +1,5 @@
/* Save current context.
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 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
@@ -61,6 +61,7 @@ ENTRY(__getcontext)
mov.l r9, @-r0
mov.l r8, @-r0
+#ifdef __SH_FPU_ANY__
mov r4, r0
/* We need 2 add instruction because oFPUL+4 > 127. */
add #124,r0
@@ -101,6 +102,7 @@ ENTRY(__getcontext)
fmov.s fr2, @-r0
fmov.s fr1, @-r0
fmov.s fr0, @-r0
+#endif /* __SH_FPU_ANY__ */
/* sigprocmask (SIG_BLOCK, NULL, &uc->uc_sigmask). */
mov r4, r6
@@ -117,7 +119,7 @@ ENTRY(__getcontext)
not r1, r1 // r1=0 means r0 = -1 to -4095
tst r1, r1 // i.e. error in linux
bf .Lgetcontext_end
-.Lsyscall_error:
+.Lsyscall_error:
SYSCALL_ERROR_HANDLER
.Lgetcontext_end:
/* All done, return 0 for success. */
diff --git a/sysdeps/unix/sysv/linux/sh/sh4/register-dump.h b/sysdeps/unix/sysv/linux/sh/sh4/register-dump.h
index d09ad2a373..e3c9c0e639 100644
--- a/sysdeps/unix/sysv/linux/sh/sh4/register-dump.h
+++ b/sysdeps/unix/sysv/linux/sh/sh4/register-dump.h
@@ -1,5 +1,5 @@
/* Dump registers.
- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2009 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
@@ -31,15 +31,15 @@ MACL: XXXXXXXX MACH: XXXXXXXX
PC: XXXXXXXX PR: XXXXXXXX GBR: XXXXXXXX SR: XXXXXXXX
- FR0: XXXXXXXX FR1: XXXXXXXX FR2: XXXXXXXX FR3: XXXXXXXX
- FR4: XXXXXXXX FR5: XXXXXXXX FR6: XXXXXXXX FR7: XXXXXXXX
- FR8: XXXXXXXX FR9: XXXXXXXX FR10: XXXXXXXX FR11: XXXXXXXX
-FR12: XXXXXXXX FR13: XXXXXXXX FR14: XXXXXXXX FR15: XXXXXXXX
+ FR0: XXXXXXXX FR1: XXXXXXXX FR2: XXXXXXXX FR3: XXXXXXXX
+ FR4: XXXXXXXX FR5: XXXXXXXX FR6: XXXXXXXX FR7: XXXXXXXX
+ FR8: XXXXXXXX FR9: XXXXXXXX FR10: XXXXXXXX FR11: XXXXXXXX
+FR12: XXXXXXXX FR13: XXXXXXXX FR14: XXXXXXXX FR15: XXXXXXXX
- XR0: XXXXXXXX XR1: XXXXXXXX XR2: XXXXXXXX XR3: XXXXXXXX
- XR4: XXXXXXXX XR5: XXXXXXXX XR6: XXXXXXXX XR7: XXXXXXXX
- XR8: XXXXXXXX XR9: XXXXXXXX XR10: XXXXXXXX XR11: XXXXXXXX
-XR12: XXXXXXXX XR13: XXXXXXXX XR14: XXXXXXXX XR15: XXXXXXXX
+ XR0: XXXXXXXX XR1: XXXXXXXX XR2: XXXXXXXX XR3: XXXXXXXX
+ XR4: XXXXXXXX XR5: XXXXXXXX XR6: XXXXXXXX XR7: XXXXXXXX
+ XR8: XXXXXXXX XR9: XXXXXXXX XR10: XXXXXXXX XR11: XXXXXXXX
+XR12: XXXXXXXX XR13: XXXXXXXX XR14: XXXXXXXX XR15: XXXXXXXX
FPSCR: XXXXXXXX FPUL: XXXXXXXX
@@ -144,6 +144,7 @@ register_dump (int fd, struct sigcontext *ctx)
ADD_STRING ("\n");
+#ifdef __SH_FPU_ANY__
if (ctx->sc_ownedfp != NULL)
{
hexvalue (ctx->sc_fpregs[0], fpregs[0], 8);
@@ -253,6 +254,7 @@ register_dump (int fd, struct sigcontext *ctx)
ADD_STRING ("\n");
}
+#endif /* __SH_FPU_ANY__ */
/* Write the stuff out. */
writev (fd, iov, nr);
diff --git a/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S b/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S
index 2bc546d1a1..48f6d4c721 100644
--- a/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S
+++ b/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S
@@ -1,5 +1,5 @@
/* Install given context.
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 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
@@ -43,13 +43,14 @@ ENTRY(__setcontext)
not r1, r1 // r1=0 means r0 = -1 to -4095
tst r1, r1 // i.e. error in linux
bf .Lsetcontext_restore
-.Lsyscall_error:
+.Lsyscall_error:
SYSCALL_ERROR_HANDLER
.Lpseudo_end:
rts
nop
.Lsetcontext_restore:
+#ifdef __SH_FPU_ANY__
mov r8, r0
add #(oFR0),r0
fmov.s @r0+, fr0
@@ -88,6 +89,7 @@ ENTRY(__setcontext)
frchg
lds.l @r0+, fpscr
lds.l @r0+, fpul
+#endif /* __SH_FPU_ANY__ */
mov r8, r0
add #(oPC), r0
diff --git a/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S b/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S
index 1aeca1b1a7..1f1b69baee 100644
--- a/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S
+++ b/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S
@@ -1,5 +1,5 @@
/* Save current context and install the given one.
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009 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
@@ -61,6 +61,7 @@ ENTRY(__swapcontext)
mov.l r9, @-r0
mov.l r8, @-r0
+#ifdef __SH_FPU_ANY__
mov r4, r0
/* We need 2 add instruction because oFPUL+4 >= 127. */
add #124,r0
@@ -101,6 +102,7 @@ ENTRY(__swapcontext)
fmov.s fr2, @-r0
fmov.s fr1, @-r0
fmov.s fr0, @-r0
+#endif /* __SH_FPU_ANY__ */
mov r5, r8
@@ -119,12 +121,13 @@ ENTRY(__swapcontext)
not r1, r1 // r1=0 means r0 = -1 to -4095
tst r1, r1 // i.e. error in linux
bf .Lswapcontext_restore
-.Lsyscall_error:
+.Lsyscall_error:
SYSCALL_ERROR_HANDLER
.Lpseudo_end:
rts
nop
-.Lswapcontext_restore:
+.Lswapcontext_restore:
+#ifdef __SH_FPU_ANY__
mov r8, r0
add #(oFR0),r0
fmov.s @r0+, fr0
@@ -163,6 +166,7 @@ ENTRY(__swapcontext)
frchg
lds.l @r0+, fpscr
lds.l @r0+, fpul
+#endif /* __SH_FPU_ANY__ */
mov r8, r0
add #(oPC), r0
@@ -208,7 +212,7 @@ ENTRY(__swapcontext)
mov.l @r15+, r0
jmp @r0
mov.l @r15+, r0
-
+
PSEUDO_END(__swapcontext)
weak_alias (__swapcontext, swapcontext)
diff --git a/sysdeps/unix/sysv/linux/sh/sys/procfs.h b/sysdeps/unix/sysv/linux/sh/sys/procfs.h
index 8651ccb346..62613078db 100644
--- a/sysdeps/unix/sysv/linux/sh/sys/procfs.h
+++ b/sysdeps/unix/sysv/linux/sh/sys/procfs.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1996, 1997, 1999, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1999, 2004, 2009
+ 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
@@ -24,12 +25,9 @@
used on Linux. */
#include <features.h>
-#include <signal.h>
#include <sys/time.h>
#include <sys/types.h>
-#include <sys/ucontext.h>
#include <sys/user.h>
-#include <asm/elf.h>
__BEGIN_DECLS
diff --git a/sysdeps/unix/sysv/linux/sh/sys/user.h b/sysdeps/unix/sysv/linux/sh/sys/user.h
index 7f31bb62dd..e238e88138 100644
--- a/sysdeps/unix/sysv/linux/sh/sys/user.h
+++ b/sysdeps/unix/sysv/linux/sh/sys/user.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2003, 2009
+ 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
@@ -19,10 +20,49 @@
#ifndef _SYS_USER_H
#define _SYS_USER_H 1
-#include <features.h>
+#include <asm/ptrace.h>
-#include <asm/user.h>
+/* asm/ptrace.h polutes the namespace. */
+#undef PTRACE_GETREGS
+#undef PTRACE_SETREGS
+#undef PTRACE_GETFPREGS
+#undef PTRACE_SETFPREGS
+#undef PTRACE_GETFDPIC
+#undef PTRACE_GETFDPIC_EXEC
+#undef PTRACE_GETFDPIC_INTERP
+#undef PTRACE_GETDSPREGS
+#undef PTRACE_SETDSPREGS
-#undef start_thread
+typedef unsigned long elf_greg_t;
+
+#define ELF_NGREG (sizeof (struct pt_regs) / sizeof (elf_greg_t))
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
+struct user_fpu_struct
+ {
+ unsigned long fp_regs[16];
+ unsigned long xfp_regs[16];
+ unsigned long fpscr;
+ unsigned long fpul;
+ };
+typedef struct user_fpu_struct elf_fpregset_t;
+
+struct user
+ {
+ struct pt_regs regs;
+ struct user_fpu_struct fpu;
+ int u_fpvalid;
+ size_t u_tsize;
+ size_t u_dsize;
+ size_t u_ssize;
+ unsigned long start_code;
+ unsigned long start_data;
+ unsigned long start_stack;
+ long int signal;
+ unsigned long u_ar0;
+ struct user_fpu_struct *u_fpstate;
+ unsigned long magic;
+ char u_comm[32];
+ };
#endif /* sys/user.h */
diff --git a/sysdeps/unix/sysv/linux/sh/sysdep.h b/sysdeps/unix/sysv/linux/sh/sysdep.h
index f0be37edc8..0fc2c4f1ee 100644
--- a/sysdeps/unix/sysv/linux/sh/sysdep.h
+++ b/sysdeps/unix/sysv/linux/sh/sysdep.h
@@ -1,5 +1,5 @@
/* Copyright (C) 1992,1993,1995,1996,1997,1998,1999,2000,2002,2003,2004,
- 2005,2006 Free Software Foundation, Inc.
+ 2005,2006,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
Changed by Kaz Kojima, <kkojima@rr.iij4u.or.jp>.
@@ -339,7 +339,7 @@
asm volatile (SYSCALL_INST_STR##nr SYSCALL_INST_PAD \
: "=z" (resultvar) \
: "r" (r3) ASMFMT_##nr \
- : "memory"); \
+ : "memory", "t"); \
\
(int) resultvar; })
@@ -353,7 +353,7 @@
asm volatile (SYSCALL_INST_STR##nr SYSCALL_INST_PAD \
: "=z" (resultvar) \
: "r" (r3) ASMFMT_##nr \
- : "memory"); \
+ : "memory", "t"); \
\
(int) resultvar; })
diff --git a/sysdeps/unix/sysv/linux/signalfd.c b/sysdeps/unix/sysv/linux/signalfd.c
index 9898f29231..c2d974a45d 100644
--- a/sysdeps/unix/sysv/linux/signalfd.c
+++ b/sysdeps/unix/sysv/linux/signalfd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2007, 2008, 2009 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
@@ -20,14 +20,21 @@
#include <signal.h>
#include <sys/signalfd.h>
#include <sysdep.h>
+#include <kernel-features.h>
int
signalfd (int fd, const sigset_t *mask, int flags)
{
#ifdef __NR_signalfd4
- return INLINE_SYSCALL (signalfd4, 4, fd, mask, _NSIG / 8, flags);
-#else
+ int res = INLINE_SYSCALL (signalfd4, 4, fd, mask, _NSIG / 8, flags);
+# ifndef __ASSUME_SIGNALFD4
+ if (res != -1 || errno != ENOSYS)
+# endif
+ return res;
+#endif
+
+#ifndef __ASSUME_SIGNALFD4
/* The old system call has no flag parameter which is bad. So we have
to wait until we have to support to pass additional values to the
kernel (sys_indirect) before implementing setting flags like
@@ -44,5 +51,7 @@ signalfd (int fd, const sigset_t *mask, int flags)
__set_errno (ENOSYS);
return -1;
# endif
+#elif !defined __NR_signalfd4
+# error "__ASSUME_SIGNALFD4 defined but not __NR_signalfd4"
#endif
}
diff --git a/sysdeps/unix/sysv/linux/socketcall.h b/sysdeps/unix/sysv/linux/socketcall.h
index 24ec9ee2ac..adf01b6e10 100644
--- a/sysdeps/unix/sysv/linux/socketcall.h
+++ b/sysdeps/unix/sysv/linux/socketcall.h
@@ -1,5 +1,5 @@
/* ID for functions called via socketcall system call.
- Copyright (C) 1995, 1996, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 2008, 2009 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
@@ -43,6 +43,6 @@
#define SOCKOP_getsockopt 15
#define SOCKOP_sendmsg 16
#define SOCKOP_recvmsg 17
-#define SOCKOP_paccept 18
+#define SOCKOP_accept4 18
#endif /* sys/socketcall.h */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/environments.h b/sysdeps/unix/sysv/linux/sparc/bits/environments.h
index a51a564cbb..c675ecc627 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/environments.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/environments.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2004, 2009 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
@@ -27,21 +27,25 @@
`-1' means it is never supported. Undefined means it cannot be
statically decided.
- _POSIX_V6_ILP32_OFF32 32bit int, long, pointers, and off_t type
- _POSIX_V6_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
+ _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type
+ _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
- _POSIX_V6_LP64_OFF32 64bit long and pointers and 32bit off_t type
- _POSIX_V6_LPBIG_OFFBIG 64bit long and pointers and large off_t type
+ _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type
+ _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type
- The macros _XBS5_ILP32_OFF32, _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and
- _XBS5_LPBIG_OFFBIG were used in previous versions of the Unix standard
- and are available only for compatibility.
+ The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
+ _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
+ _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
+ used in previous versions of the Unix standard and are available
+ only for compatibility.
*/
#if __WORDSIZE == 64
/* Environments with 32-bit wide pointers are optionally provided.
Therefore following macros aren't defined:
+ # undef _POSIX_V7_ILP32_OFF32
+ # undef _POSIX_V7_ILP32_OFFBIG
# undef _POSIX_V6_ILP32_OFF32
# undef _POSIX_V6_ILP32_OFFBIG
# undef _XBS5_ILP32_OFF32
@@ -50,10 +54,12 @@
/* We also have no use (for now) for an environment with bigger pointers
and offsets. */
+# define _POSIX_V7_LPBIG_OFFBIG -1
# define _POSIX_V6_LPBIG_OFFBIG -1
# define _XBS5_LPBIG_OFFBIG -1
/* By default we have 64-bit wide `long int', pointers and `off_t'. */
+# define _POSIX_V7_LP64_OFF64 1
# define _POSIX_V6_LP64_OFF64 1
# define _XBS5_LP64_OFF64 1
@@ -61,16 +67,20 @@
/* By default we have 32-bit wide `int', `long int', pointers and `off_t'
and all platforms support LFS. */
+# define _POSIX_V7_ILP32_OFF32 1
+# define _POSIX_V7_ILP32_OFFBIG 1
# define _POSIX_V6_ILP32_OFF32 1
# define _POSIX_V6_ILP32_OFFBIG 1
# define _XBS5_ILP32_OFF32 1
# define _XBS5_ILP32_OFFBIG 1
/* We optionally provide an environment with the above size but an 64-bit
- side `off_t'. Therefore we don't define _XBS5_ILP32_OFFBIG. */
+ side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. */
/* Environments with 64-bit wide pointers can be provided,
so these macros aren't defined:
+ # undef _POSIX_V7_LP64_OFF64
+ # undef _POSIX_V7_LPBIG_OFFBIG
# undef _POSIX_V6_LP64_OFF64
# undef _POSIX_V6_LPBIG_OFFBIG
# undef _XBS5_LP64_OFF64
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/errno.h b/sysdeps/unix/sysv/linux/sparc/bits/errno.h
index 02e200c088..2b9265a1dc 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/errno.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/errno.h
@@ -1,5 +1,5 @@
/* Error constants. Linux/Sparc specific version.
- Copyright (C) 1996,1997,1998,1999,2002,2005 Free Software Foundation, Inc.
+ Copyright (C) 1996-1999,2002,2005,2009 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
@@ -37,6 +37,10 @@
# define ENOTRECOVERABLE 133
# endif
+# ifndef ERFKILL
+# define ERFKILL 134
+# endif
+
# ifndef __ASSEMBLER__
/* Function to get address of global `errno' variable. */
extern int *__errno_location (void) __THROW __attribute__ ((__const__));
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h b/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h
index c5c035c620..1dc45b7d88 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h
@@ -1,5 +1,5 @@
/* O_*, F_*, FD_* bit values for Linux/SPARC.
- Copyright (C) 1995, 1996, 1997, 1998, 2000, 2003, 2004, 2006, 2007
+ Copyright (C) 1995-1998, 2000, 2003, 2004, 2006, 2007, 2009, 2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -29,7 +29,7 @@
#endif
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
- located on an ext2 file system */
+ located on a few file systems. */
#define O_RDONLY 0x0000
#define O_WRONLY 0x0001
#define O_RDWR 0x0002
@@ -39,17 +39,19 @@
#define O_CREAT 0x0200 /* not fcntl */
#define O_TRUNC 0x0400 /* not fcntl */
#define O_EXCL 0x0800 /* not fcntl */
-#define O_SYNC 0x2000
+#define O_SYNC 0x802000
#define O_NONBLOCK 0x4000
#define O_NDELAY (0x0004 | O_NONBLOCK)
#define O_NOCTTY 0x8000 /* not fcntl */
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
# define O_DIRECTORY 0x10000 /* must be a directory */
# define O_NOFOLLOW 0x20000 /* don't follow links */
+# define O_CLOEXEC 0x400000 /* Set close_on_exit. */
+#endif
+#ifdef __USE_GNU
# define O_DIRECT 0x100000 /* direct disk access hint */
# define O_NOATIME 0x200000 /* Do not set atime. */
-# define O_CLOEXEC 0x400000 /* Set close_on_exit. */
#endif
#ifdef __USE_LARGEFILE64
@@ -64,27 +66,19 @@
operations. We define the symbols here but let them do the same as
O_SYNC since this is a superset. */
#if defined __USE_POSIX199309 || defined __USE_UNIX98
-# define O_DSYNC O_SYNC /* Synchronize data. */
+# define O_DSYNC 0x2000 /* Synchronize data. */
# define O_RSYNC O_SYNC /* Synchronize read operations. */
#endif
-/* For now Linux has synchronisity options for data and read operations.
- We define the symbols here but let them do the same as O_SYNC since
- this is a superset. */
-#if defined __USE_POSIX199309 || defined __USE_UNIX98
-# define O_DSYNC O_SYNC /* Synchronize data. */
-# define O_RSYNC O_SYNC /* Synchronize read operations. */
-#endif
-
/* Values for the second argument to `fcntl'. */
#define F_DUPFD 0 /* Duplicate file descriptor. */
#define F_GETFD 1 /* Get file descriptor flags. */
#define F_SETFD 2 /* Set file descriptor flags. */
#define F_GETFL 3 /* Get file status flags. */
#define F_SETFL 4 /* Set file status flags. */
-#if defined __USE_BSD || defined __USE_UNIX98
-# define F_GETOWN 5 /* Get owner of socket (receiver of SIGIO). */
-# define F_SETOWN 6 /* Set owner of socket (receiver of SIGIO). */
+#if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K8
+# define F_GETOWN 5 /* Get owner (process receiving SIGIO). */
+# define F_SETOWN 6 /* Set owner (process receiving SIGIO). */
#endif
#ifndef __USE_FILE_OFFSET64
# define F_GETLK 7 /* Get record locking info. */
@@ -99,12 +93,16 @@
#ifdef __USE_GNU
# define F_SETSIG 10 /* Set number of signal to be sent. */
# define F_GETSIG 11 /* Get number of signal to be sent. */
+# define F_SETOWN_EX 15 /* Set owner (thread receiving SIGIO). */
+# define F_GETOWN_EX 16 /* Get owner (thread receiving SIGIO). */
#endif
#ifdef __USE_GNU
# define F_SETLEASE 1024 /* Set a lease. */
# define F_GETLEASE 1025 /* Enquire what lease is active. */
# define F_NOTIFY 1026 /* Request notfications on a directory. */
+#endif
+#ifdef __USE_XOPEN2K8
# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with
close-on-exit set. */
#endif
@@ -185,6 +183,24 @@ struct flock64
};
#endif
+#ifdef __USE_GNU
+/* Owner types. */
+enum __pid_type
+ {
+ F_OWNER_TID = 0, /* Kernel thread. */
+ F_OWNER_PID, /* Process. */
+ F_OWNER_PGRP, /* Process group. */
+ F_OWNER_GID = F_OWNER_PGRP /* Alternative, obsolete name. */
+ };
+
+/* Structure to use with F_GETOWN_EX and F_SETOWN_EX. */
+struct f_owner_ex
+ {
+ enum __pid_type type; /* Owner type of ID. */
+ __pid_t pid; /* ID of owner. */
+ };
+#endif
+
/* Define some more compatibility macros to be backward compatible with
BSD systems which did not managed to hide these kernel macros. */
#ifdef __USE_BSD
@@ -237,7 +253,7 @@ extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
/* Selective file content synch'ing. */
-extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
+extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count,
unsigned int __flags);
@@ -254,6 +270,23 @@ extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
extern ssize_t tee (int __fdin, int __fdout, size_t __len,
unsigned int __flags);
+/* Reserve storage for the data of the file associated with FD. */
+# ifndef __USE_FILE_OFFSET64
+extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
+# else
+# ifdef __REDIRECT
+extern int __REDIRECT (fallocate, (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len),
+ fallocate64);
+# else
+# define fallocate fallocate64
+# endif
+# endif
+# ifdef __USE_LARGEFILE64
+extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len);
+# endif
+
#endif
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/mman.h b/sysdeps/unix/sysv/linux/sparc/bits/mman.h
index be2b7eb280..71a3aa6a30 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/mman.h
@@ -1,5 +1,6 @@
/* Definitions for POSIX memory map interface. Linux/SPARC version.
- Copyright (C) 1997,1999,2000,2003,2005,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1999,2000,2003,2005,2006,2009
+ 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
@@ -85,15 +86,18 @@
/* Advice to `madvise'. */
#ifdef __USE_BSD
-# define MADV_NORMAL 0 /* No further special treatment. */
-# define MADV_RANDOM 1 /* Expect random page references. */
-# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
-# define MADV_WILLNEED 3 /* Will need these pages. */
-# define MADV_DONTNEED 4 /* Don't need these pages. */
-# define MADV_FREE 5 /* Content can be freed (Solaris). */
-# define MADV_REMOVE 9 /* Remove these pages and resources. */
-# define MADV_DONTFORK 10 /* Do not inherit across fork. */
-# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_NORMAL 0 /* No further special treatment. */
+# define MADV_RANDOM 1 /* Expect random page references. */
+# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
+# define MADV_WILLNEED 3 /* Will need these pages. */
+# define MADV_DONTNEED 4 /* Don't need these pages. */
+# define MADV_FREE 5 /* Content can be freed (Solaris). */
+# define MADV_REMOVE 9 /* Remove these pages and resources. */
+# define MADV_DONTFORK 10 /* Do not inherit across fork. */
+# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_MERGEABLE 12 /* KSM may merge identical pages. */
+# define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */
+# define MADV_HWPOISON 100 /* Poison a page for testing. */
#endif
/* The POSIX people had to invent similar names for the same things. */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/poll.h b/sysdeps/unix/sysv/linux/sparc/bits/poll.h
index 53b94bc50e..0a984ad765 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/poll.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/poll.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 2001, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2001, 2006, 2009 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
@@ -27,7 +27,7 @@
#define POLLPRI 0x002 /* There is urgent data to read. */
#define POLLOUT 0x004 /* Writing now will not block. */
-#ifdef __USE_XOPEN
+#if defined __USE_XOPEN || defined __USE_XOPEN2K8
/* These values are defined in XPG4.2. */
# define POLLRDNORM 0x040 /* Normal data may be read. */
# define POLLRDBAND 0x080 /* Priority data may be read. */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/resource.h b/sysdeps/unix/sysv/linux/sparc/bits/resource.h
index 22c087da46..6e4fc97e5b 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/resource.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/resource.h
@@ -1,5 +1,5 @@
/* Bit values & structures for resource limits. Linux/SPARC version.
- Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004, 2005
+ Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004, 2005, 2008, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -174,10 +174,11 @@ enum __rusage_who
#define RUSAGE_SELF RUSAGE_SELF
/* All of its terminated child processes. */
- RUSAGE_CHILDREN = -1,
+ RUSAGE_CHILDREN = -1
#define RUSAGE_CHILDREN RUSAGE_CHILDREN
#ifdef __USE_GNU
+ ,
/* The calling thread. */
RUSAGE_THREAD = 1
# define RUSAGE_THREAD RUSAGE_THREAD
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/shm.h b/sysdeps/unix/sysv/linux/sparc/bits/shm.h
index 273b67edb5..1ec5e91322 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/shm.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 2000, 2002, 2004
+/* Copyright (C) 1995, 1996, 1997, 2000, 2002, 2004, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -32,6 +32,7 @@
#define SHM_RDONLY 010000 /* attach read-only else read-write */
#define SHM_RND 020000 /* round attach address to SHMLBA */
#define SHM_REMAP 040000 /* take-over region on attach */
+#define SHM_EXEC 0100000 /* execution access */
/* Commands for `shmctl'. */
#define SHM_LOCK 11 /* lock segment (root only) */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h b/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h
index ee4196764d..e474dbe26f 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h
@@ -1,5 +1,5 @@
/* The proper definitions for Linux/SPARC sigaction.
- Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1996-2000, 2010 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
@@ -58,6 +58,8 @@ struct sigaction
three arguments instead of one. */
#if defined __USE_UNIX98 || defined __USE_MISC
# define SA_ONSTACK 0x00000001 /* Use signal stack by using `sa_restorer'. */
+#endif
+#if defined __USE_UNIX98 || defined __USE_MISC || defined __USE_XOPEN2K8
# define SA_RESTART 0x00000002 /* Restart syscall on signal return. */
# define SA_INTERRUPT 0x00000010 /* Historical no-op. */
# define SA_NOMASK 0x00000020 /* Don't automatically block the signal when
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h b/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h
index 7ff1971c2a..c0f98f6072 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h
@@ -289,6 +289,10 @@ typedef struct sigevent
{
int _pad[__SIGEV_PAD_SIZE];
+ /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
+ thread to receive the signal. */
+ __pid_t _tid;
+
struct
{
void (*_function) (sigval_t); /* Function to start. */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/socket.h b/sysdeps/unix/sysv/linux/sparc/bits/socket.h
index d43a3cdf79..a148072095 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/socket.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/socket.h
@@ -1,5 +1,5 @@
/* System-specific socket constants and types. Linux/SPARC version.
- Copyright (C) 1991, 1992, 1994-2001, 2004, 2006, 2007, 2008
+ Copyright (C) 1991, 1992, 1994-2001, 2004, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -94,15 +94,21 @@ enum __socket_type
#define PF_ASH 18 /* Ash. */
#define PF_ECONET 19 /* Acorn Econet. */
#define PF_ATMSVC 20 /* ATM SVCs. */
+#define PF_RDS 21 /* RDS sockets. */
#define PF_SNA 22 /* Linux SNA Project */
#define PF_IRDA 23 /* IRDA sockets. */
#define PF_PPPOX 24 /* PPPoX sockets. */
#define PF_WANPIPE 25 /* Wanpipe API sockets. */
+#define PF_LLC 26 /* Linux LLC. */
+#define PF_CAN 29 /* Controller Area Network. */
+#define PF_TIPC 30 /* TIPC sockets. */
#define PF_BLUETOOTH 31 /* Bluetooth sockets. */
#define PF_IUCV 32 /* IUCV sockets. */
#define PF_RXRPC 33 /* RxRPC sockets. */
#define PF_ISDN 34 /* mISDN sockets. */
-#define PF_MAX 35 /* For now.. */
+#define PF_PHONET 35 /* Phonet sockets. */
+#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */
+#define PF_MAX 37 /* For now.. */
/* Address families. */
#define AF_UNSPEC PF_UNSPEC
@@ -129,14 +135,20 @@ enum __socket_type
#define AF_ASH PF_ASH
#define AF_ECONET PF_ECONET
#define AF_ATMSVC PF_ATMSVC
+#define AF_RDS PF_RDS
#define AF_SNA PF_SNA
#define AF_IRDA PF_IRDA
#define AF_PPPOX PF_PPPOX
#define AF_WANPIPE PF_WANPIPE
+#define AF_LLC PF_LLC
+#define AF_CAN PF_CAN
+#define AF_TIPC PF_TIPC
#define AF_BLUETOOTH PF_BLUETOOTH
#define AF_IUCV PF_IUCV
#define AF_RXRPC PF_RXRPC
#define AF_ISDN PF_ISDN
+#define AF_PHONET PF_PHONET
+#define AF_IEEE802154 PF_IEEE802154
#define AF_MAX PF_MAX
/* Socket level values. Others are defined in the appropriate headers.
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/stat.h b/sysdeps/unix/sysv/linux/sparc/bits/stat.h
index 17c912a70f..eaab95a1cb 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/stat.h
@@ -1,5 +1,4 @@
-/* Copyright (C) 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2006
- Free Software Foundation, Inc.
+/* Copyright (C) 1992,1995-2002,2006,2009,2010 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
@@ -17,10 +16,13 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SYS_STAT_H
+#if !defined _SYS_STAT_H && !defined _FCNTL_H
# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
#endif
+#ifndef _BITS_STAT_H
+#define _BITS_STAT_H 1
+
/* Versions of the `struct stat' data structure. */
#define _STAT_VER_LINUX_OLD 1
#define _STAT_VER_KERNEL 1
@@ -61,7 +63,7 @@ struct stat
#else
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
#endif
-#ifdef __USE_MISC
+#if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -90,9 +92,9 @@ struct stat
struct stat64
{
__dev_t st_dev; /* Device. */
-#if __WORDSIZE == 64
+# if __WORDSIZE == 64
unsigned short int __pad1;
-#endif
+# endif
__ino64_t st_ino; /* File serial number. */
__mode_t st_mode; /* File mode. */
__nlink_t st_nlink; /* Link count. */
@@ -104,7 +106,7 @@ struct stat64
__blksize_t st_blksize; /* Optimal block size for I/O. */
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
-#ifdef __USE_MISC
+# if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -114,17 +116,17 @@ struct stat64
struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */
-# define st_atime st_atim.tv_sec /* Backward compatibility. */
-# define st_mtime st_mtim.tv_sec
-# define st_ctime st_ctim.tv_sec
-#else
+# define st_atime st_atim.tv_sec /* Backward compatibility. */
+# define st_mtime st_mtim.tv_sec
+# define st_ctime st_ctim.tv_sec
+# else
__time_t st_atime; /* Time of last access. */
unsigned long int st_atimensec; /* Nscecs of last access. */
__time_t st_mtime; /* Time of last modification. */
unsigned long int st_mtimensec; /* Nsecs of last modification. */
__time_t st_ctime; /* Time of last status change. */
unsigned long int st_ctimensec; /* Nsecs of last status change. */
-#endif
+# endif
unsigned long int __unused4;
unsigned long int __unused5;
};
@@ -164,8 +166,9 @@ struct stat64
#define __S_IWRITE 0200 /* Write by owner. */
#define __S_IEXEC 0100 /* Execute by owner. */
-#if defined __USE_ATFILE || defined __USE_GNU
-/* XXX This will change to the macro for the next 2008 POSIX revision. */
+#ifdef __USE_ATFILE
# define UTIME_NOW ((1l << 30) - 1l)
# define UTIME_OMIT ((1l << 30) - 2l)
#endif
+
+#endif /* bits/stat.h */
diff --git a/sysdeps/unix/sysv/linux/sparc/getsysstats.c b/sysdeps/unix/sysv/linux/sparc/getsysstats.c
index f064b372ff..e96a8e5605 100644
--- a/sysdeps/unix/sysv/linux/sparc/getsysstats.c
+++ b/sysdeps/unix/sysv/linux/sparc/getsysstats.c
@@ -1,5 +1,5 @@
/* Determine various system internal values, Linux/Sparc version.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Schwab <schwab@suse.de> and
Jakub Jelinek <jj@ultra.linux.cz>
@@ -21,7 +21,7 @@
/* We need to define a special parser for /proc/cpuinfo. */
-#define GET_NPROCS_PARSER(FP, BUFFER, RESULT) \
+#define GET_NPROCS_PARSER(FD, BUFFER, CP, RE, BUFFER_END, RESULT) \
do \
{ \
(RESULT) = 0; \
@@ -29,8 +29,9 @@
active cpus. We don't have to fear extremely long lines since \
the kernel will not generate them. 8192 bytes are really \
enough. */ \
- while (fgets_unlocked (BUFFER, sizeof (BUFFER), FP) != NULL) \
- if (sscanf (BUFFER, "ncpus active : %d", &(RESULT)) == 1) \
+ char *l; \
+ while ((l = next_line (FD, BUFFER, &CP, &RE, BUFFER_END)) != NULL) \
+ if (sscanf (l, "ncpus active : %d", &(RESULT)) == 1) \
break; \
} \
while (0)
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/Versions b/sysdeps/unix/sysv/linux/sparc/sparc32/Versions
index c585af3602..c9a5b3e9d5 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/Versions
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/Versions
@@ -20,4 +20,7 @@ libc {
GLIBC_2.3.3 {
posix_fadvise64; posix_fallocate64;
}
+ GLIBC_2.11 {
+ fallocate64;
+ }
}
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S b/sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S
new file mode 100644
index 0000000000..0ecd7ddf83
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S
@@ -0,0 +1,113 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <jmpbuf-offsets.h>
+
+#define ENV(base,reg) [%base + (reg * 4)]
+#define ST_FLUSH_WINDOWS 3
+#define RW_FP [%fp + 0x48]
+
+.section .rodata.str1.1,"aMS",@progbits,1
+ .type longjmp_msg,@object
+longjmp_msg:
+ .string "longjmp causes uninitialized stack frame"
+ .size longjmp_msg, .-longjmp_msg
+
+ .text
+ENTRY (____longjmp_chk)
+ ld ENV(o0,JB_SP), %g5
+#ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (%g5, %g5, %g4)
+#endif
+
+ cmp %sp, %g5
+ bleu .Lok_norestore
+ nop
+
+ save %sp, -80, %sp
+
+ clr %o0
+ add %sp, 64, %o1
+ set __NR_sigaltstack, %g1
+ ta 0x10
+ bcs .Lok
+ ld [%sp + 64 + 4], %o2
+ andcc %o2, 0x1, %g0
+ be .Lfail
+ ld [%sp + 64 + 0], %o0
+
+ ld [%sp + 64 + 8], %o1
+ add %o0, %o1, %o0
+ sub %o0, %g3, %o0
+ cmp %o1, %o0
+ bgeu .Lok
+ nop
+
+.Lfail:
+#ifdef PIC
+1: call 2f
+ sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
+2: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
+ add %l7, %o7, %l7
+#endif
+ sethi %hi(longjmp_msg), %o0
+ or %o0, %lo(longjmp_msg), %o0
+#ifdef PIC
+ ld [%l7 + %o0], %o0
+#endif
+ call HIDDEN_JUMPTARGET(__fortify_fail)
+ nop
+
+.Lok:
+ restore
+
+.Lok_norestore:
+ ld ENV(o0,JB_FP), %g3 /* Cache target FP in register %g3. */
+#ifdef PTR_DEMANGLE
+ PTR_DEMANGLE2 (%g3, %g3, %g4)
+#endif
+
+ mov %o0, %g1 /* ENV in %g1 */
+ orcc %o1, %g0, %g2 /* VAL in %g2 */
+ be,a 0f /* Branch if zero; else skip delay slot. */
+ mov 1, %g2 /* Delay slot only hit if zero: VAL = 1. */
+0:
+
+ /*
+ * Do a "flush register windows trap". The trap handler in the
+ * kernel writes all the register windows to their stack slots, and
+ * marks them all as invalid (needing to be sucked up from the
+ * stack when used). This ensures that all information needed to
+ * unwind to these callers is in memory, not in the register
+ * windows.
+ */
+ ta ST_FLUSH_WINDOWS
+#ifdef PTR_DEMANGLE
+ ld ENV(g1,JB_PC), %g1 /* Set return PC. */
+ PTR_DEMANGLE2 (%o7, %g1, %g4)
+#else
+ ld ENV(g1,JB_PC), %o7 /* Set return PC. */
+#endif
+ mov %g5, %fp
+ sub %fp, 64, %sp /* Allocate a register frame. */
+ st %g3, RW_FP /* Set saved FP on restore below. */
+ retl
+ restore %g2, 0, %o0 /* Restore values from above register frame. */
+
+END(____longjmp_chk)
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S b/sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S
new file mode 100644
index 0000000000..9a4c8fe3b9
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S
@@ -0,0 +1,71 @@
+/* Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* longjmp is implemented in terms of the setcontext trap on Linux/Sparc64. */
+
+#include <sysdep.h>
+
+/* Offsets into the jmp_buf structure. */
+
+#define O_mask_was_saved 512
+#define O_gregs 32
+#define O_g1 (O_gregs + 4*8)
+#define O_sp (O_gregs + 17*8)
+
+.section .rodata.str1.1,"aMS",@progbits,1
+ .type longjmp_msg,@object
+longjmp_msg:
+ .string "longjmp causes uninitialized stack frame"
+ .size longjmp_msg, .-longjmp_msg
+
+ .text
+ENTRY (____longjmp_chk)
+ ldx [%o0 + O_sp], %o2
+ cmp %sp, %o2
+ bleu,pt %xcc, .Lok
+ nop
+
+ save %sp, -128, %sp
+
+#ifdef PIC
+1: call 2f
+ sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
+2: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
+ add %l7, %o7, %l7
+#endif
+ sethi %hi(longjmp_msg), %o0
+ or %o0, %lo(longjmp_msg), %o0
+#ifdef PIC
+ ldx [%l7 + %o0], %o0
+#endif
+ call HIDDEN_JUMPTARGET(__fortify_fail)
+ nop
+
+ restore
+
+.Lok:
+ /* Modify the context with the value we want to return. */
+ movre %o1, 1, %o1
+ stx %o1, [%o0 + O_g1]
+
+ /* Let setcontext know if we want to modify the current sigmask. */
+ ld [%o0 + O_mask_was_saved], %o1
+
+ /* And bamf back to where we belong! */
+ ta 0x6f
+END(____longjmp_chk)
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/wordexp.c b/sysdeps/unix/sysv/linux/sparc/sparc64/wordexp.c
index 2e3d5bc2e9..075b267bb4 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/wordexp.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/wordexp.c
@@ -1 +1 @@
-#include <sysdeps/unix/sysv/linux/alpha/wordexp.c>
+#include <sysdeps/unix/sysv/linux/ia64/wordexp.c>
diff --git a/sysdeps/unix/sysv/linux/sparc/sys/eventfd.h b/sysdeps/unix/sysv/linux/sparc/sys/eventfd.h
index aff4f3592e..c42f2ce59b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sys/eventfd.h
+++ b/sysdeps/unix/sysv/linux/sparc/sys/eventfd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2007, 2008, 2009 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
@@ -45,7 +45,7 @@ extern int eventfd (int __count, int __flags) __THROW;
extern int eventfd_read (int __fd, eventfd_t *__value);
/* Increment event counter. */
-extern int eventfd_write (int __fd, eventfd_t value);
+extern int eventfd_write (int __fd, eventfd_t __value);
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/symlinkat.c b/sysdeps/unix/sysv/linux/symlinkat.c
index 4cfc924bfc..d2704777bd 100644
--- a/sysdeps/unix/sysv/linux/symlinkat.c
+++ b/sysdeps/unix/sysv/linux/symlinkat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2009 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
@@ -57,6 +57,12 @@ symlinkat (from, tofd, to)
if (tofd != AT_FDCWD && to[0] != '/')
{
size_t tolen = strlen (to);
+ if (__builtin_expect (tolen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/sync_file_range.c b/sysdeps/unix/sysv/linux/sync_file_range.c
index 4e267a1602..41e08e0281 100644
--- a/sysdeps/unix/sysv/linux/sync_file_range.c
+++ b/sysdeps/unix/sysv/linux/sync_file_range.c
@@ -1,5 +1,5 @@
/* Selective file content synch'ing.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 2009 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
@@ -34,6 +34,14 @@ sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags)
__LONG_LONG_PAIR ((long) (to >> 32), (long) to),
flags);
}
+#elif defined __NR_sync_file_range2
+int
+sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags)
+{
+ return INLINE_SYSCALL (sync_file_range2, 6, fd, flags,
+ __LONG_LONG_PAIR ((long) (from >> 32), (long) from),
+ __LONG_LONG_PAIR ((long) (to >> 32), (long) to));
+}
#else
int
sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags)
diff --git a/sysdeps/unix/sysv/linux/sys/epoll.h b/sysdeps/unix/sysv/linux/sys/epoll.h
index 12de0bcfe2..ca1d3d0459 100644
--- a/sysdeps/unix/sysv/linux/sys/epoll.h
+++ b/sysdeps/unix/sysv/linux/sys/epoll.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2006, 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2006, 2007, 2008, 2009 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
@@ -31,7 +31,7 @@ typedef __sigset_t sigset_t;
#endif
-/* Flags to be passed to epoll_create2. */
+/* Flags to be passed to epoll_create1. */
enum
{
EPOLL_CLOEXEC = 02000000,
diff --git a/sysdeps/unix/sysv/linux/sys/eventfd.h b/sysdeps/unix/sysv/linux/sys/eventfd.h
index 205824b669..d942df4bf9 100644
--- a/sysdeps/unix/sysv/linux/sys/eventfd.h
+++ b/sysdeps/unix/sysv/linux/sys/eventfd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2007, 2008, 2009 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
@@ -28,6 +28,8 @@ typedef uint64_t eventfd_t;
/* Flags for signalfd. */
enum
{
+ EFD_SEMAPHORE = 1,
+#define EFD_SEMAPHORE EFD_SEMAPHORE
EFD_CLOEXEC = 02000000,
#define EFD_CLOEXEC EFD_CLOEXEC
EFD_NONBLOCK = 04000
@@ -45,7 +47,7 @@ extern int eventfd (int __count, int __flags) __THROW;
extern int eventfd_read (int __fd, eventfd_t *__value);
/* Increment event counter. */
-extern int eventfd_write (int __fd, eventfd_t value);
+extern int eventfd_write (int __fd, eventfd_t __value);
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/sys/inotify.h b/sysdeps/unix/sysv/linux/sys/inotify.h
index 81e31fb646..8b3a85280f 100644
--- a/sysdeps/unix/sysv/linux/sys/inotify.h
+++ b/sysdeps/unix/sysv/linux/sys/inotify.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2008, 2009 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
@@ -98,7 +98,7 @@ extern int inotify_add_watch (int __fd, const char *__name, uint32_t __mask)
__THROW;
/* Remove the watch specified by WD from the inotify instance FD. */
-extern int inotify_rm_watch (int __fd, uint32_t __wd) __THROW;
+extern int inotify_rm_watch (int __fd, int __wd) __THROW;
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h
index b30554987a..57d440f273 100644
--- a/sysdeps/unix/sysv/linux/sys/mount.h
+++ b/sysdeps/unix/sysv/linux/sys/mount.h
@@ -96,8 +96,12 @@ enum
/* Possible value for FLAGS parameter of `umount2'. */
enum
{
- MNT_FORCE = 1 /* Force unmounting. */
+ MNT_FORCE = 1, /* Force unmounting. */
#define MNT_FORCE MNT_FORCE
+ MNT_DETACH = 2, /* Just detach from the tree. */
+#define MNT_DETACH MNT_DETACH
+ MNT_EXPIRE = 4 /* Mark for expiry. */
+#define MNT_EXPIRE MNT_EXPIRE
};
diff --git a/sysdeps/unix/sysv/linux/sys/personality.h b/sysdeps/unix/sysv/linux/sys/personality.h
index ff7c61aa52..a53a4eea7c 100644
--- a/sysdeps/unix/sysv/linux/sys/personality.h
+++ b/sysdeps/unix/sysv/linux/sys/personality.h
@@ -29,6 +29,8 @@ enum
{
ADDR_NO_RANDOMIZE = 0x0040000,
MMAP_PAGE_ZERO = 0x0100000,
+ ADDR_COMPAT_LAYOUT = 0x0200000,
+ READ_IMPLIES_EXEC = 0x0400000,
ADDR_LIMIT_32BIT = 0x0800000,
SHORT_INODE = 0x1000000,
WHOLE_SECONDS = 0x2000000,
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index f7bd6e7929..e10311f70f 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1999, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1997, 1999, 2007, 2009 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
@@ -22,13 +22,21 @@
#include <features.h>
#include <sys/time.h>
-/* These definitions from linux/timex.h as of 2.2.0. */
+/* These definitions from linux/timex.h as of 2.6.30. */
+
+#define NTP_API 4 /* NTP API version */
struct ntptimeval
{
struct timeval time; /* current time (ro) */
long int maxerror; /* maximum error (us) (ro) */
long int esterror; /* estimated error (us) (ro) */
+ long int tai; /* TAI offset (ro) */
+
+ long int __unused1;
+ long int __unused2;
+ long int __unused3;
+ long int __unused4;
};
struct timex
@@ -54,10 +62,12 @@ struct timex
long int errcnt; /* calibration errors (ro) */
long int stbcnt; /* stability limit exceeded (ro) */
+ int tai; /* TAI offset (ro) */
+
/* ??? */
int :32; int :32; int :32; int :32;
int :32; int :32; int :32; int :32;
- int :32; int :32; int :32; int :32;
+ int :32; int :32; int :32;
};
/* Mode codes (timex.mode) */
@@ -67,6 +77,9 @@ struct timex
#define ADJ_ESTERROR 0x0008 /* estimated time error */
#define ADJ_STATUS 0x0010 /* clock status */
#define ADJ_TIMECONST 0x0020 /* pll time constant */
+#define ADJ_TAI 0x0080 /* set TAI offset */
+#define ADJ_MICRO 0x1000 /* select microsecond resolution */
+#define ADJ_NANO 0x2000 /* select nanosecond resolution */
#define ADJ_TICK 0x4000 /* tick value */
#define ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime */
#define ADJ_OFFSET_SS_READ 0xa001 /* read-only adjtime */
@@ -80,6 +93,9 @@ struct timex
#define MOD_TIMECONST ADJ_TIMECONST
#define MOD_CLKB ADJ_TICK
#define MOD_CLKA ADJ_OFFSET_SINGLESHOT /* 0x8000 in original */
+#define MOD_TAI ADJ_TAI
+#define MOD_MICRO ADJ_MICRO
+#define MOD_NANO ADJ_NANO
/* Status codes (timex.status) */
@@ -99,9 +115,13 @@ struct timex
#define STA_PPSERROR 0x0800 /* PPS signal calibration error (ro) */
#define STA_CLOCKERR 0x1000 /* clock hardware fault (ro) */
+#define STA_NANO 0x2000 /* resolution (0 = us, 1 = ns) (ro) */
+#define STA_MODE 0x4000 /* mode (0 = PLL, 1 = FLL) (ro) */
+#define STA_CLK 0x8000 /* clock source (0 = A, 1 = B) (ro) */
+/* Read-only bits */
#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \
- STA_PPSERROR | STA_CLOCKERR) /* read-only bits */
+ STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
/* Clock states (time_state) */
#define TIME_OK 0 /* clock synchronized, no leap second */
@@ -120,7 +140,13 @@ __BEGIN_DECLS
extern int __adjtimex (struct timex *__ntx) __THROW;
extern int adjtimex (struct timex *__ntx) __THROW;
-extern int ntp_gettime (struct ntptimeval *__ntv) __THROW;
+#if defined __GNUC__ && __GNUC__ >= 2
+extern int ntp_gettime (struct ntptimeval *__ntv)
+ __asm__ ("ntp_gettimex") __THROW;
+#else
+extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW;
+# define ntp_gettime ntp_gettimex
+#endif
extern int ntp_adjtime (struct timex *__tntx) __THROW;
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index a87906a4e3..a1a449eb4b 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -53,6 +53,7 @@ prctl EXTRA prctl i:iiiii __prctl prctl
putpmsg - putpmsg i:ippii putpmsg
query_module EXTRA query_module i:sipip query_module
quotactl EXTRA quotactl i:isip quotactl
+recvmmsg EXTRA recvmmsg Ci:ipiip recvmmsg
remap_file_pages - remap_file_pages i:piiii __remap_file_pages remap_file_pages
sched_getp - sched_getparam i:ip __sched_getparam sched_getparam
sched_gets - sched_getscheduler i:i __sched_getscheduler sched_getscheduler
diff --git a/sysdeps/unix/sysv/linux/sysconf.c b/sysdeps/unix/sysv/linux/sysconf.c
index f4e36e0c6f..50c5528dd8 100644
--- a/sysdeps/unix/sysv/linux/sysconf.c
+++ b/sysdeps/unix/sysv/linux/sysconf.c
@@ -1,5 +1,5 @@
/* Get file-specific information about a file. Linux version.
- Copyright (C) 2003, 2004, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2006, 2008, 2009 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
@@ -43,6 +43,7 @@ __sysconf (int name)
switch (name)
{
+ struct rlimit rlimit;
#ifdef __NR_clock_getres
case _SC_MONOTONIC_CLOCK:
/* Check using the clock_getres system call. */
@@ -84,12 +85,9 @@ __sysconf (int name)
size. */
if (GLRO(dl_discover_osversion) () >= 0x020617)
#endif
- {
- /* Use getrlimit to get the stack limit. */
- struct rlimit rlimit;
- if (__getrlimit (RLIMIT_STACK, &rlimit) == 0)
- return MAX (legacy_ARG_MAX, rlimit.rlim_cur / 4);
- }
+ /* Use getrlimit to get the stack limit. */
+ if (__getrlimit (RLIMIT_STACK, &rlimit) == 0)
+ return MAX (legacy_ARG_MAX, rlimit.rlim_cur / 4);
return legacy_ARG_MAX;
@@ -100,6 +98,9 @@ __sysconf (int name)
break;
case _SC_SIGQUEUE_MAX:
+ if (__getrlimit (RLIMIT_SIGPENDING, &rlimit) == 0)
+ return rlimit.rlim_cur;
+
/* The /proc/sys/kernel/rtsig-max file contains the answer. */
procfname = "/proc/sys/kernel/rtsig-max";
break;
diff --git a/sysdeps/unix/sysv/linux/tst-clone.c b/sysdeps/unix/sysv/linux/tst-clone.c
index 8e249c2f04..cbfa8917d6 100644
--- a/sysdeps/unix/sysv/linux/tst-clone.c
+++ b/sysdeps/unix/sysv/linux/tst-clone.c
@@ -1,5 +1,5 @@
/* Test for proper error/errno handling in clone.
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2009 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
@@ -36,9 +36,9 @@ do_test (void)
int result;
#ifdef __ia64__
- result = __clone2(child_fn, NULL, 0, 0, NULL, NULL, NULL);
+ result = __clone2 (child_fn, NULL, 0, 0, NULL, NULL, NULL);
#else
- result = clone(child_fn, NULL, (int) NULL, NULL);
+ result = clone (child_fn, NULL, 0, NULL);
#endif
if (errno != EINVAL || result != -1)
diff --git a/sysdeps/unix/sysv/linux/ttyname.c b/sysdeps/unix/sysv/linux/ttyname.c
index 1b79787515..69af6adc65 100644
--- a/sysdeps/unix/sysv/linux/ttyname.c
+++ b/sysdeps/unix/sysv/linux/ttyname.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,93,1996-2002,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,1996-2002,2006,2009 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
@@ -59,6 +59,11 @@ getttyname (const char *dev, dev_t mydev, ino64_t myino, int save, int *dostat)
return NULL;
}
+ /* Prepare for the loop. If we already have a buffer copy the directory
+ name we look at into it. */
+ if (devlen < namelen)
+ *((char *) __mempcpy (getttyname_name, dev, devlen - 1)) = '/';
+
while ((d = __readdir64 (dirstream)) != NULL)
if ((d->d_fileno == myino || *dostat)
&& strcmp (d->d_name, "stdin")
diff --git a/sysdeps/unix/sysv/linux/unlinkat.c b/sysdeps/unix/sysv/linux/unlinkat.c
index 0a07a8a875..bb5f89810b 100644
--- a/sysdeps/unix/sysv/linux/unlinkat.c
+++ b/sysdeps/unix/sysv/linux/unlinkat.c
@@ -1,5 +1,5 @@
/* unlinkat -- Remove a link by relative name.
- Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006, 2009 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
@@ -64,6 +64,12 @@ unlinkat (fd, file, flag)
if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/Versions b/sysdeps/unix/sysv/linux/wordsize-64/Versions
new file mode 100644
index 0000000000..a3b40ccd17
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/wordsize-64/Versions
@@ -0,0 +1,5 @@
+libc {
+ GLIBC_2.10 {
+ fallocate64;
+ }
+}
diff --git a/sysdeps/unix/sysv/linux/alpha/setregid.c b/sysdeps/unix/sysv/linux/wordsize-64/fallocate.c
index 0973fe4ac1..3e8954f0b7 100644
--- a/sysdeps/unix/sysv/linux/alpha/setregid.c
+++ b/sysdeps/unix/sysv/linux/wordsize-64/fallocate.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2007, 2009 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
@@ -17,15 +17,19 @@
02111-1307 USA. */
#include <errno.h>
-#include <unistd.h>
-#include <setxid.h>
+#include <fcntl.h>
+#include <sysdep.h>
+/* Reserve storage for the data of the file associated with FD. */
int
-__setregid (gid_t rgid, gid_t egid)
+fallocate (int fd, int mode, __off_t offset, __off_t len)
{
- return INLINE_SETXID_SYSCALL (setregid, 2, (int) rgid, (int) egid);
-}
-#ifndef __setregid
-weak_alias (__setregid, setregid)
+#ifdef __NR_fallocate
+ return INLINE_SYSCALL (fallocate, 4, fd, mode, offset, len);
+#else
+ __set_errno (ENOSYS);
+ return -1;
#endif
+}
+strong_alias (fallocate, fallocate64)
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/fallocate64.c b/sysdeps/unix/sysv/linux/wordsize-64/fallocate64.c
new file mode 100644
index 0000000000..df33112d6b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/wordsize-64/fallocate64.c
@@ -0,0 +1 @@
+/* fallocate64 is in posix_fallocate.c */
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c b/sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c
index 8b1c932ba9..cc41fdedc0 100644
--- a/sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c
+++ b/sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2009 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
@@ -72,6 +72,12 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/preadv64.c b/sysdeps/unix/sysv/linux/wordsize-64/preadv64.c
new file mode 100644
index 0000000000..fd9320cfc7
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/wordsize-64/preadv64.c
@@ -0,0 +1 @@
+/* Empty since the preadv syscall is equivalent. */
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/pwritev64.c b/sysdeps/unix/sysv/linux/wordsize-64/pwritev64.c
new file mode 100644
index 0000000000..8b72a2928b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/wordsize-64/pwritev64.c
@@ -0,0 +1 @@
+/* Empty since the pwritev syscall is equivalent. */
diff --git a/sysdeps/unix/sysv/linux/writev.c b/sysdeps/unix/sysv/linux/writev.c
index 05978665fa..8552856cdb 100644
--- a/sysdeps/unix/sysv/linux/writev.c
+++ b/sysdeps/unix/sysv/linux/writev.c
@@ -1,5 +1,5 @@
/* writev supports all Linux kernels >= 2.0.
- Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,2000,2002,2003,2009 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
@@ -25,9 +25,12 @@
#include <sysdep-cancel.h>
#include <sys/syscall.h>
#include <bp-checks.h>
+#include <kernel-features.h>
+#ifndef __ASSUME_COMPLETE_READV_WRITEV
static ssize_t __atomic_writev_replacement (int, const struct iovec *,
int) internal_function;
+#endif
/* Not all versions of the kernel support the large number of records. */
@@ -36,40 +39,38 @@ static ssize_t __atomic_writev_replacement (int, const struct iovec *,
#endif
-/* We should deal with kernel which have a smaller UIO_FASTIOV as well
- as a very big count. */
-static ssize_t
-do_writev (int fd, const struct iovec *vector, int count)
-{
- ssize_t bytes_written;
-
- bytes_written = INLINE_SYSCALL (writev, 3, fd, CHECK_N (vector, count), count);
-
- if (bytes_written >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
- return bytes_written;
-
- return __atomic_writev_replacement (fd, vector, count);
-}
-
ssize_t
__libc_writev (fd, vector, count)
int fd;
const struct iovec *vector;
int count;
{
- if (SINGLE_THREAD_P)
- return do_writev (fd, vector, count);
+ ssize_t result;
- int oldtype = LIBC_CANCEL_ASYNC ();
+ if (SINGLE_THREAD_P)
+ result = INLINE_SYSCALL (writev, 3, fd, CHECK_N (vector, count), count);
+ else
+ {
+ int oldtype = LIBC_CANCEL_ASYNC ();
- ssize_t result = do_writev (fd, vector, count);
+ result = INLINE_SYSCALL (writev, 3, fd, CHECK_N (vector, count), count);
- LIBC_CANCEL_RESET (oldtype);
+ LIBC_CANCEL_RESET (oldtype);
+ }
+#ifdef __ASSUME_COMPLETE_READV_WRITEV
return result;
+#else
+ if (result >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
+ return result;
+
+ return __atomic_writev_replacement (fd, vector, count);
+#endif
}
strong_alias (__libc_writev, __writev)
weak_alias (__libc_writev, writev)
-#define __libc_writev static internal_function __atomic_writev_replacement
-#include <sysdeps/posix/writev.c>
+#ifndef __ASSUME_COMPLETE_READV_WRITEV
+# define __libc_writev static internal_function __atomic_writev_replacement
+# include <sysdeps/posix/writev.c>
+#endif
diff --git a/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S b/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
new file mode 100644
index 0000000000..5e11540fd4
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
@@ -0,0 +1,109 @@
+/* Copyright (C) 2001,2004,2005,2006,2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <jmpbuf-offsets.h>
+#include <asm-syntax.h>
+
+ .section .rodata.str1.1,"aMS",@progbits,1
+ .type longjmp_msg,@object
+longjmp_msg:
+ .string "longjmp causes uninitialized stack frame"
+ .size longjmp_msg, .-longjmp_msg
+
+
+//#define __longjmp ____longjmp_chk
+
+#ifdef PIC
+# define CALL_FAIL leaq longjmp_msg(%rip), %rdi; \
+ call __GI___fortify_fail
+#else
+# define CALL_FAIL movq $longjmp_msg, %rdi; \
+ call __fortify_fail
+#endif
+
+#define CHECK_RSP(reg) \
+ cmpq reg, %rsp; \
+ jbe .Lok; \
+ CALL_FAIL; \
+.Lok:
+
+/* Jump to the position specified by ENV, causing the
+ setjmp call there to return VAL, or 1 if VAL is 0.
+ void __longjmp (__jmp_buf env, int val). */
+ .text
+ENTRY(____longjmp_chk)
+ /* Restore registers. */
+ movq (JB_RSP*8)(%rdi),%r8
+ movq (JB_RBP*8)(%rdi),%r9
+ movq (JB_PC*8)(%rdi),%rdx
+#ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (%r8)
+ PTR_DEMANGLE (%r9)
+ PTR_DEMANGLE (%rdx)
+#endif
+
+ cmpq %r8, %rsp
+ jbe .Lok
+
+ /* Save function parameters. */
+ movq %rdi, %r10
+ movl %esi, %ecx
+
+ xorl %edi, %edi
+ leaq -24(%rsp), %rsi
+ movl $__NR_sigaltstack, %eax
+ syscall
+ /* Without working sigaltstack we cannot perform the test. */
+ testl %eax, %eax
+ jne .Lok2
+ testl $1, -16(%rsp)
+ jz .Lfail
+
+ movq -24(%rsp), %rax
+ addq -8(%rsp), %rax
+ subq %r8, %rax
+ cmpq -8(%rsp), %rax
+ jae .Lok2
+
+.Lfail: CALL_FAIL
+
+.Lok2: movq %r10, %rdi
+ movl %ecx, %esi
+
+.Lok: /* We add unwind information for the target here. */
+ cfi_def_cfa(%rdi, 0)
+ cfi_register(%rsp,%r8)
+ cfi_register(%rbp,%r9)
+ cfi_register(%rip,%rdx)
+ cfi_offset(%rbx,JB_RBX*8)
+ cfi_offset(%r12,JB_R12*8)
+ cfi_offset(%r13,JB_R13*8)
+ cfi_offset(%r14,JB_R14*8)
+ cfi_offset(%r15,JB_R15*8)
+ movq (JB_RBX*8)(%rdi),%rbx
+ movq (JB_R12*8)(%rdi),%r12
+ movq (JB_R13*8)(%rdi),%r13
+ movq (JB_R14*8)(%rdi),%r14
+ movq (JB_R15*8)(%rdi),%r15
+ /* Set return value for setjmp. */
+ movl %esi, %eax
+ movq %r8,%rsp
+ movq %r9,%rbp
+ jmpq *%rdx
+END (____longjmp_chk)
diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/environments.h b/sysdeps/unix/sysv/linux/x86_64/bits/environments.h
index a51a564cbb..c675ecc627 100644
--- a/sysdeps/unix/sysv/linux/x86_64/bits/environments.h
+++ b/sysdeps/unix/sysv/linux/x86_64/bits/environments.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2004, 2009 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
@@ -27,21 +27,25 @@
`-1' means it is never supported. Undefined means it cannot be
statically decided.
- _POSIX_V6_ILP32_OFF32 32bit int, long, pointers, and off_t type
- _POSIX_V6_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
+ _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type
+ _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
- _POSIX_V6_LP64_OFF32 64bit long and pointers and 32bit off_t type
- _POSIX_V6_LPBIG_OFFBIG 64bit long and pointers and large off_t type
+ _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type
+ _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type
- The macros _XBS5_ILP32_OFF32, _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and
- _XBS5_LPBIG_OFFBIG were used in previous versions of the Unix standard
- and are available only for compatibility.
+ The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
+ _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
+ _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
+ used in previous versions of the Unix standard and are available
+ only for compatibility.
*/
#if __WORDSIZE == 64
/* Environments with 32-bit wide pointers are optionally provided.
Therefore following macros aren't defined:
+ # undef _POSIX_V7_ILP32_OFF32
+ # undef _POSIX_V7_ILP32_OFFBIG
# undef _POSIX_V6_ILP32_OFF32
# undef _POSIX_V6_ILP32_OFFBIG
# undef _XBS5_ILP32_OFF32
@@ -50,10 +54,12 @@
/* We also have no use (for now) for an environment with bigger pointers
and offsets. */
+# define _POSIX_V7_LPBIG_OFFBIG -1
# define _POSIX_V6_LPBIG_OFFBIG -1
# define _XBS5_LPBIG_OFFBIG -1
/* By default we have 64-bit wide `long int', pointers and `off_t'. */
+# define _POSIX_V7_LP64_OFF64 1
# define _POSIX_V6_LP64_OFF64 1
# define _XBS5_LP64_OFF64 1
@@ -61,16 +67,20 @@
/* By default we have 32-bit wide `int', `long int', pointers and `off_t'
and all platforms support LFS. */
+# define _POSIX_V7_ILP32_OFF32 1
+# define _POSIX_V7_ILP32_OFFBIG 1
# define _POSIX_V6_ILP32_OFF32 1
# define _POSIX_V6_ILP32_OFFBIG 1
# define _XBS5_ILP32_OFF32 1
# define _XBS5_ILP32_OFFBIG 1
/* We optionally provide an environment with the above size but an 64-bit
- side `off_t'. Therefore we don't define _XBS5_ILP32_OFFBIG. */
+ side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. */
/* Environments with 64-bit wide pointers can be provided,
so these macros aren't defined:
+ # undef _POSIX_V7_LP64_OFF64
+ # undef _POSIX_V7_LPBIG_OFFBIG
# undef _POSIX_V6_LP64_OFF64
# undef _POSIX_V6_LPBIG_OFFBIG
# undef _XBS5_LP64_OFF64
diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h b/sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h
index cf96ac7599..aa04e0e490 100644
--- a/sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h
+++ b/sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h
@@ -1,5 +1,6 @@
/* O_*, F_*, FD_* bit values for Linux/x86-64.
- Copyright (C) 2001, 2002, 2004, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2001,2002,2004,2006,2007,2009,2010
+ 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
@@ -29,7 +30,7 @@
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
- located on an ext2 file system */
+ located on a few file systems. */
#define O_ACCMODE 0003
#define O_RDONLY 00
#define O_WRONLY 01
@@ -41,23 +42,25 @@
#define O_APPEND 02000
#define O_NONBLOCK 04000
#define O_NDELAY O_NONBLOCK
-#define O_SYNC 010000
+#define O_SYNC 04010000
#define O_FSYNC O_SYNC
#define O_ASYNC 020000
-#ifdef __USE_GNU
-# define O_DIRECT 040000 /* Direct disk access. */
+#ifdef __USE_XOPEN2K8
# define O_DIRECTORY 0200000 /* Must be a directory. */
# define O_NOFOLLOW 0400000 /* Do not follow links. */
-# define O_NOATIME 01000000 /* Do not set atime. */
# define O_CLOEXEC 02000000 /* Set close_on_exec. */
#endif
+#ifdef __USE_GNU
+# define O_DIRECT 040000 /* Direct disk access. */
+# define O_NOATIME 01000000 /* Do not set atime. */
+#endif
/* For now Linux has synchronisity options for data and read operations.
We define the symbols here but let them do the same as O_SYNC since
this is a superset. */
#if defined __USE_POSIX199309 || defined __USE_UNIX98
-# define O_DSYNC O_SYNC /* Synchronize data. */
+# define O_DSYNC 010000 /* Synchronize data. */
# define O_RSYNC O_SYNC /* Synchronize read operations. */
#endif
@@ -98,20 +101,24 @@
# define F_SETLKW64 14 /* Set record locking info (blocking). */
#endif
-#if defined __USE_BSD || defined __USE_UNIX98
-# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
-# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
+#if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K8
+# define F_SETOWN 8 /* Get owner (process receiving SIGIO). */
+# define F_GETOWN 9 /* Set owner (process receiving SIGIO). */
#endif
#ifdef __USE_GNU
# define F_SETSIG 10 /* Set number of signal to be sent. */
# define F_GETSIG 11 /* Get number of signal to be sent. */
+# define F_SETOWN_EX 15 /* Get owner (thread receiving SIGIO). */
+# define F_GETOWN_EX 16 /* Set owner (thread receiving SIGIO). */
#endif
#ifdef __USE_GNU
# define F_SETLEASE 1024 /* Set a lease. */
# define F_GETLEASE 1025 /* Enquire what lease is active. */
# define F_NOTIFY 1026 /* Request notfications on a directory. */
+#endif
+#ifdef __USE_XOPEN2K8
# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with
close-on-exit set. */
#endif
@@ -180,6 +187,24 @@ struct flock64
};
#endif
+#ifdef __USE_GNU
+/* Owner types. */
+enum __pid_type
+ {
+ F_OWNER_TID = 0, /* Kernel thread. */
+ F_OWNER_PID, /* Process. */
+ F_OWNER_PGRP, /* Process group. */
+ F_OWNER_GID = F_OWNER_PGRP /* Alternative, obsolete name. */
+ };
+
+/* Structure to use with F_GETOWN_EX and F_SETOWN_EX. */
+struct f_owner_ex
+ {
+ enum __pid_type type; /* Owner type of ID. */
+ __pid_t pid; /* ID of owner. */
+ };
+#endif
+
/* Define some more compatibility macros to be backward compatible with
BSD systems which did not managed to hide these kernel macros. */
#ifdef __USE_BSD
@@ -232,7 +257,7 @@ extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
/* Selective file content synch'ing. */
-extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
+extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count,
unsigned int __flags);
@@ -249,6 +274,22 @@ extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
extern ssize_t tee (int __fdin, int __fdout, size_t __len,
unsigned int __flags);
+/* Reserve storage for the data of the file associated with FD. */
+# ifndef __USE_FILE_OFFSET64
+extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
+# else
+# ifdef __REDIRECT
+extern int __REDIRECT (fallocate, (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len),
+ fallocate64);
+# else
+# define fallocate fallocate64
+# endif
+# endif
+# ifdef __USE_LARGEFILE64
+extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len);
+# endif
#endif
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/mman.h b/sysdeps/unix/sysv/linux/x86_64/bits/mman.h
index 7810682536..3dcbf9c317 100644
--- a/sysdeps/unix/sysv/linux/x86_64/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/x86_64/bits/mman.h
@@ -1,5 +1,5 @@
/* Definitions for POSIX memory map interface. Linux/x86_64 version.
- Copyright (C) 2001, 2003, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2003, 2005, 2006, 2009 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
@@ -85,14 +85,17 @@
/* Advice to `madvise'. */
#ifdef __USE_BSD
-# define MADV_NORMAL 0 /* No further special treatment. */
-# define MADV_RANDOM 1 /* Expect random page references. */
-# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
-# define MADV_WILLNEED 3 /* Will need these pages. */
-# define MADV_DONTNEED 4 /* Don't need these pages. */
-# define MADV_REMOVE 9 /* Remove these pages and resources. */
-# define MADV_DONTFORK 10 /* Do not inherit across fork. */
-# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_NORMAL 0 /* No further special treatment. */
+# define MADV_RANDOM 1 /* Expect random page references. */
+# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
+# define MADV_WILLNEED 3 /* Will need these pages. */
+# define MADV_DONTNEED 4 /* Don't need these pages. */
+# define MADV_REMOVE 9 /* Remove these pages and resources. */
+# define MADV_DONTFORK 10 /* Do not inherit across fork. */
+# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_MERGEABLE 12 /* KSM may merge identical pages. */
+# define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */
+# define MADV_HWPOISON 100 /* Poison a page for testing. */
#endif
/* The POSIX people had to invent similar names for the same things. */
diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/shm.h b/sysdeps/unix/sysv/linux/x86_64/bits/shm.h
index def200c193..04f5cc5d65 100644
--- a/sysdeps/unix/sysv/linux/x86_64/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/x86_64/bits/shm.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 2000, 2002, 2004
+/* Copyright (C) 1995, 1996, 1997, 2000, 2002, 2004, 2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -31,6 +31,7 @@
#define SHM_RDONLY 010000 /* attach read-only else read-write */
#define SHM_RND 020000 /* round attach address to SHMLBA */
#define SHM_REMAP 040000 /* take-over region on attach */
+#define SHM_EXEC 0100000 /* execution access */
/* Commands for `shmctl'. */
#define SHM_LOCK 11 /* lock segment (root only) */
diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/stat.h b/sysdeps/unix/sysv/linux/x86_64/bits/stat.h
index 286c1a2a02..c7e4e1f0d4 100644
--- a/sysdeps/unix/sysv/linux/x86_64/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/x86_64/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2003,2009,2010 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
@@ -16,10 +16,13 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _SYS_STAT_H
+#if !defined _SYS_STAT_H && !defined _FCNTL_H
# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
#endif
+#ifndef _BITS_STAT_H
+#define _BITS_STAT_H 1
+
/* Versions of the `struct stat' data structure. */
#define _STAT_VER_KERNEL 0
@@ -78,7 +81,7 @@ struct stat
#else
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
#endif
-#ifdef __USE_MISC
+#if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -116,30 +119,30 @@ struct stat
struct stat64
{
__dev_t st_dev; /* Device. */
-#if __WORDSIZE == 64
+# if __WORDSIZE == 64
__ino64_t st_ino; /* File serial number. */
__nlink_t st_nlink; /* Link count. */
__mode_t st_mode; /* File mode. */
-#else
+# else
unsigned int __pad1;
__ino_t __st_ino; /* 32bit file serial number. */
__mode_t st_mode; /* File mode. */
__nlink_t st_nlink; /* Link count. */
-#endif
+# endif
__uid_t st_uid; /* User ID of the file's owner. */
__gid_t st_gid; /* Group ID of the file's group.*/
-#if __WORDSIZE == 64
+# if __WORDSIZE == 64
int __pad0;
__dev_t st_rdev; /* Device number, if device. */
__off_t st_size; /* Size of file, in bytes. */
-#else
+# else
__dev_t st_rdev; /* Device number, if device. */
unsigned int __pad2;
__off64_t st_size; /* Size of file, in bytes. */
-#endif
+# endif
__blksize_t st_blksize; /* Optimal block size for I/O. */
__blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */
-#ifdef __USE_MISC
+# if defined __USE_MISC || defined __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
@@ -149,22 +152,22 @@ struct stat64
struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */
-# define st_atime st_atim.tv_sec /* Backward compatibility. */
-# define st_mtime st_mtim.tv_sec
-# define st_ctime st_ctim.tv_sec
-#else
+# define st_atime st_atim.tv_sec /* Backward compatibility. */
+# define st_mtime st_mtim.tv_sec
+# define st_ctime st_ctim.tv_sec
+# else
__time_t st_atime; /* Time of last access. */
unsigned long int st_atimensec; /* Nscecs of last access. */
__time_t st_mtime; /* Time of last modification. */
unsigned long int st_mtimensec; /* Nsecs of last modification. */
__time_t st_ctime; /* Time of last status change. */
unsigned long int st_ctimensec; /* Nsecs of last status change. */
-#endif
-#if __WORDSIZE == 64
+# endif
+# if __WORDSIZE == 64
long int __unused[3];
-#else
+# else
__ino64_t st_ino; /* File serial number. */
-#endif
+# endif
};
#endif
@@ -202,8 +205,9 @@ struct stat64
#define __S_IWRITE 0200 /* Write by owner. */
#define __S_IEXEC 0100 /* Execute by owner. */
-#if defined __USE_ATFILE || defined __USE_GNU
-/* XXX This will change to the macro for the next 2008 POSIX revision. */
+#ifdef __USE_ATFILE
# define UTIME_NOW ((1l << 30) - 1l)
# define UTIME_OMIT ((1l << 30) - 2l)
#endif
+
+#endif /* bits/stat.h */
diff --git a/sysdeps/unix/sysv/linux/x86_64/sys/io.h b/sysdeps/unix/sysv/linux/x86_64/sys/io.h
index 802a0dfb42..4f8537f428 100644
--- a/sysdeps/unix/sysv/linux/x86_64/sys/io.h
+++ b/sysdeps/unix/sysv/linux/x86_64/sys/io.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 2000, 2002, 2009 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
@@ -41,138 +41,138 @@ extern int iopl (int __level) __THROW;
#if defined __GNUC__ && __GNUC__ >= 2
static __inline unsigned char
-inb (unsigned short int port)
+inb (unsigned short int __port)
{
unsigned char _v;
- __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (port));
+ __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (__port));
return _v;
}
static __inline unsigned char
-inb_p (unsigned short int port)
+inb_p (unsigned short int __port)
{
unsigned char _v;
- __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port));
+ __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
return _v;
}
static __inline unsigned short int
-inw (unsigned short int port)
+inw (unsigned short int __port)
{
unsigned short _v;
- __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (port));
+ __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (__port));
return _v;
}
static __inline unsigned short int
-inw_p (unsigned short int port)
+inw_p (unsigned short int __port)
{
unsigned short int _v;
- __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port));
+ __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
return _v;
}
static __inline unsigned int
-inl (unsigned short int port)
+inl (unsigned short int __port)
{
unsigned int _v;
- __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (port));
+ __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (__port));
return _v;
}
static __inline unsigned int
-inl_p (unsigned short int port)
+inl_p (unsigned short int __port)
{
unsigned int _v;
- __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port));
+ __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
return _v;
}
static __inline void
-outb (unsigned char value, unsigned short int port)
+outb (unsigned char __value, unsigned short int __port)
{
- __asm__ __volatile__ ("outb %b0,%w1": :"a" (value), "Nd" (port));
+ __asm__ __volatile__ ("outb %b0,%w1": :"a" (__value), "Nd" (__port));
}
static __inline void
-outb_p (unsigned char value, unsigned short int port)
+outb_p (unsigned char __value, unsigned short int __port)
{
- __asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (value),
- "Nd" (port));
+ __asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (__value),
+ "Nd" (__port));
}
static __inline void
-outw (unsigned short int value, unsigned short int port)
+outw (unsigned short int __value, unsigned short int __port)
{
- __asm__ __volatile__ ("outw %w0,%w1": :"a" (value), "Nd" (port));
+ __asm__ __volatile__ ("outw %w0,%w1": :"a" (__value), "Nd" (__port));
}
static __inline void
-outw_p (unsigned short int value, unsigned short int port)
+outw_p (unsigned short int __value, unsigned short int __port)
{
- __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (value),
- "Nd" (port));
+ __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (__value),
+ "Nd" (__port));
}
static __inline void
-outl (unsigned int value, unsigned short int port)
+outl (unsigned int __value, unsigned short int __port)
{
- __asm__ __volatile__ ("outl %0,%w1": :"a" (value), "Nd" (port));
+ __asm__ __volatile__ ("outl %0,%w1": :"a" (__value), "Nd" (__port));
}
static __inline void
-outl_p (unsigned int value, unsigned short int port)
+outl_p (unsigned int __value, unsigned short int __port)
{
- __asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80": :"a" (value),
- "Nd" (port));
+ __asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80": :"a" (__value),
+ "Nd" (__port));
}
static __inline void
-insb (unsigned short int port, void *addr, unsigned long int count)
+insb (unsigned short int __port, void *addr, unsigned long int __count)
{
- __asm__ __volatile__ ("cld ; rep ; insb":"=D" (addr),
- "=c" (count):"d" (port), "0" (addr), "1" (count));
+ __asm__ __volatile__ ("cld ; rep ; insb":"=D" (addr), "=c" (__count)
+ :"d" (__port), "0" (addr), "1" (__count));
}
static __inline void
-insw (unsigned short int port, void *addr, unsigned long int count)
+insw (unsigned short int __port, void *addr, unsigned long int __count)
{
- __asm__ __volatile__ ("cld ; rep ; insw":"=D" (addr),
- "=c" (count):"d" (port), "0" (addr), "1" (count));
+ __asm__ __volatile__ ("cld ; rep ; insw":"=D" (addr), "=c" (__count)
+ :"d" (__port), "0" (addr), "1" (__count));
}
static __inline void
-insl (unsigned short int port, void *addr, unsigned long int count)
+insl (unsigned short int __port, void *addr, unsigned long int __count)
{
- __asm__ __volatile__ ("cld ; rep ; insl":"=D" (addr),
- "=c" (count):"d" (port), "0" (addr), "1" (count));
+ __asm__ __volatile__ ("cld ; rep ; insl":"=D" (addr), "=c" (__count)
+ :"d" (__port), "0" (addr), "1" (__count));
}
static __inline void
-outsb (unsigned short int port, const void *addr, unsigned long int count)
+outsb (unsigned short int __port, const void *addr, unsigned long int __count)
{
- __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (addr),
- "=c" (count):"d" (port), "0" (addr), "1" (count));
+ __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (addr), "=c" (__count)
+ :"d" (__port), "0" (addr), "1" (__count));
}
static __inline void
-outsw (unsigned short int port, const void *addr, unsigned long int count)
+outsw (unsigned short int __port, const void *addr, unsigned long int __count)
{
- __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (addr),
- "=c" (count):"d" (port), "0" (addr), "1" (count));
+ __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (addr), "=c" (__count)
+ :"d" (__port), "0" (addr), "1" (__count));
}
static __inline void
-outsl (unsigned short int port, const void *addr, unsigned long int count)
+outsl (unsigned short int __port, const void *addr, unsigned long int __count)
{
- __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (addr),
- "=c" (count):"d" (port), "0" (addr), "1" (count));
+ __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (addr), "=c" (__count)
+ :"d" (__port), "0" (addr), "1" (__count));
}
#endif /* GNU C */
diff --git a/sysdeps/unix/sysv/linux/xmknodat.c b/sysdeps/unix/sysv/linux/xmknodat.c
index ef27b686cc..177b3db986 100644
--- a/sysdeps/unix/sysv/linux/xmknodat.c
+++ b/sysdeps/unix/sysv/linux/xmknodat.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2009 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
@@ -72,6 +72,12 @@ __xmknodat (int vers, int fd, const char *file, mode_t mode, dev_t *dev)
if (fd != AT_FDCWD && file[0] != '/')
{
size_t filelen = strlen (file);
+ if (__builtin_expect (filelen == 0, 0))
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+
static const char procfd[] = "/proc/self/fd/%d/%s";
/* Buffer for the path name we are going to use. It consists of
- the string /proc/self/fd/
diff --git a/sysdeps/wordsize-64/alphasort.c b/sysdeps/wordsize-64/alphasort.c
index 5096166625..edc410129d 100644
--- a/sysdeps/wordsize-64/alphasort.c
+++ b/sysdeps/wordsize-64/alphasort.c
@@ -1,3 +1,7 @@
+#define alphasort64 rename_alphasort64
+
#include "../../dirent/alphasort.c"
+#undef alphasort64
+
weak_alias (alphasort, alphasort64)
diff --git a/sysdeps/wordsize-64/versionsort.c b/sysdeps/wordsize-64/versionsort.c
index 90365a4b25..bb25550d3d 100644
--- a/sysdeps/wordsize-64/versionsort.c
+++ b/sysdeps/wordsize-64/versionsort.c
@@ -1,3 +1,7 @@
+#define versionsort64 rename_versionsort64
+
#include "../../dirent/versionsort.c"
+#undef versionsort64
+
weak_alias (versionsort, versionsort64)
diff --git a/sysdeps/x86_64/Makefile b/sysdeps/x86_64/Makefile
index da82093381..e8d0285e26 100644
--- a/sysdeps/x86_64/Makefile
+++ b/sysdeps/x86_64/Makefile
@@ -4,6 +4,7 @@ long-double-fcts = yes
ifeq ($(subdir),csu)
sysdep_routines += hp-timing
elide-routines.os += hp-timing
+gen-as-const-headers += link-defines.sym
endif
ifeq ($(subdir),gmon)
@@ -18,6 +19,11 @@ ifeq ($(subdir),elf)
sysdep-dl-routines += tlsdesc dl-tlsdesc
sysdep_routines += tlsdesc dl-tlsdesc
sysdep-rtld-routines += tlsdesc dl-tlsdesc
+
+tests: $(objpfx)tst-xmmymm.out
+$(objpfx)tst-xmmymm.out: ../sysdeps/x86_64/tst-xmmymm.sh $(objpfx)ld.so
+ @echo "Checking ld.so for SSE register use. This will take a few seconds..."
+ $(SHELL) -e $< $(objpfx) > $@
endif
ifeq ($(subdir),csu)
diff --git a/sysdeps/x86_64/____longjmp_chk.S b/sysdeps/x86_64/____longjmp_chk.S
new file mode 100644
index 0000000000..0910861a9d
--- /dev/null
+++ b/sysdeps/x86_64/____longjmp_chk.S
@@ -0,0 +1 @@
+#error "OS-specific version needed"
diff --git a/sysdeps/x86_64/__longjmp.S b/sysdeps/x86_64/__longjmp.S
index a68e7a8a4f..b045c04184 100644
--- a/sysdeps/x86_64/__longjmp.S
+++ b/sysdeps/x86_64/__longjmp.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001,2004,2005,2006 Free Software Foundation, Inc.
+/* Copyright (C) 2001,2004,2005,2006,2009 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
@@ -23,6 +23,7 @@
/* Jump to the position specified by ENV, causing the
setjmp call there to return VAL, or 1 if VAL is 0.
void __longjmp (__jmp_buf env, int val). */
+ .text
ENTRY(__longjmp)
/* Restore registers. */
movq (JB_RSP*8)(%rdi),%r8
@@ -39,7 +40,6 @@ ENTRY(__longjmp)
cfi_register(%rbp,%r9)
cfi_register(%rip,%rdx)
cfi_offset(%rbx,JB_RBX*8)
- cfi_offset(%rbp,JB_RBP*8)
cfi_offset(%r12,JB_R12*8)
cfi_offset(%r13,JB_R13*8)
cfi_offset(%r14,JB_R14*8)
@@ -54,4 +54,4 @@ ENTRY(__longjmp)
movq %r8,%rsp
movq %r9,%rbp
jmpq *%rdx
-END (BP_SYM (__longjmp))
+END (__longjmp)
diff --git a/sysdeps/x86_64/add_n.S b/sysdeps/x86_64/add_n.S
new file mode 100644
index 0000000000..7883f6c840
--- /dev/null
+++ b/sysdeps/x86_64/add_n.S
@@ -0,0 +1,42 @@
+/* Add two limb vectors of the same length > 0 and store sum in a third
+ limb vector.
+ Copyright (C) 2004 Free Software Foundation, Inc.
+ This file is part of the GNU MP Library.
+
+ The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA. */
+
+#include "sysdep.h"
+#include "asm-syntax.h"
+
+ .text
+ENTRY (__mpn_add_n)
+ leaq (%rsi,%rcx,8), %rsi
+ leaq (%rdi,%rcx,8), %rdi
+ leaq (%rdx,%rcx,8), %rdx
+ negq %rcx
+ xorl %eax, %eax # clear cy
+ .p2align 2
+L(loop):
+ movq (%rsi,%rcx,8), %rax
+ movq (%rdx,%rcx,8), %r10
+ adcq %r10, %rax
+ movq %rax, (%rdi,%rcx,8)
+ incq %rcx
+ jne L(loop)
+ movq %rcx, %rax # zero %rax
+ adcq %rax, %rax
+ ret
+END (__mpn_add_n)
diff --git a/sysdeps/x86_64/addmul_1.S b/sysdeps/x86_64/addmul_1.S
new file mode 100644
index 0000000000..bdb5226a33
--- /dev/null
+++ b/sysdeps/x86_64/addmul_1.S
@@ -0,0 +1,46 @@
+/* AMD64 __mpn_addmul_1 -- Multiply a limb vector with a limb and add
+ the result to a second limb vector.
+ Copyright (C) 2004 Free Software Foundation, Inc.
+ This file is part of the GNU MP Library.
+
+ The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA. */
+
+#include "sysdep.h"
+#include "asm-syntax.h"
+
+ .text
+ENTRY (__mpn_addmul_1)
+ movq %rdx, %r11
+ leaq (%rsi,%rdx,8), %rsi
+ leaq (%rdi,%rdx,8), %rdi
+ negq %r11
+ xorl %r8d, %r8d
+ xorl %r10d, %r10d
+ .p2align 2
+L(loop):
+ movq (%rsi,%r11,8), %rax
+ mulq %rcx
+ addq (%rdi,%r11,8), %rax
+ adcq %r10, %rdx
+ addq %r8, %rax
+ movq %r10, %r8
+ movq %rax, (%rdi,%r11,8)
+ adcq %rdx, %r8
+ incq %r11
+ jne L(loop)
+ movq %r8, %rax
+ ret
+END (__mpn_addmul_1)
diff --git a/sysdeps/x86_64/bits/atomic.h b/sysdeps/x86_64/bits/atomic.h
index 39c6ecba83..7c138eb2f3 100644
--- a/sysdeps/x86_64/bits/atomic.h
+++ b/sysdeps/x86_64/bits/atomic.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2004, 2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -437,26 +437,37 @@ typedef uintmax_t uatomic_max_t;
#define atomic_delay() asm ("rep; nop")
-#define atomic_and(mem, mask) \
+#define __arch_and_body(lock, mem, mask) \
do { \
if (sizeof (*mem) == 1) \
- __asm __volatile (LOCK_PREFIX "andb %b1, %0" \
+ __asm __volatile (lock "andb %b1, %0" \
: "=m" (*mem) \
- : "iq" (mask), "m" (*mem)); \
+ : "iq" (mask), "m" (*mem), \
+ "i" (offsetof (tcbhead_t, multiple_threads))); \
else if (sizeof (*mem) == 2) \
- __asm __volatile (LOCK_PREFIX "andw %w1, %0" \
+ __asm __volatile (lock "andw %w1, %0" \
: "=m" (*mem) \
- : "ir" (mask), "m" (*mem)); \
+ : "ir" (mask), "m" (*mem), \
+ "i" (offsetof (tcbhead_t, multiple_threads))); \
else if (sizeof (*mem) == 4) \
- __asm __volatile (LOCK_PREFIX "andl %1, %0" \
+ __asm __volatile (lock "andl %1, %0" \
: "=m" (*mem) \
- : "ir" (mask), "m" (*mem)); \
+ : "ir" (mask), "m" (*mem), \
+ "i" (offsetof (tcbhead_t, multiple_threads))); \
else \
- __asm __volatile (LOCK_PREFIX "andq %q1, %0" \
+ __asm __volatile (lock "andq %q1, %0" \
: "=m" (*mem) \
- : "ir" (mask), "m" (*mem)); \
+ : "ir" (mask), "m" (*mem), \
+ "i" (offsetof (tcbhead_t, multiple_threads))); \
} while (0)
+#define __arch_cprefix \
+ "cmpl $0, %%fs:%P3\n\tje 0f\n\tlock\n0:\t"
+
+#define atomic_and(mem, mask) __arch_and_body (LOCK_PREFIX, mem, mask)
+
+#define catomic_and(mem, mask) __arch_and_body (__arch_cprefix, mem, mask)
+
#define __arch_or_body(lock, mem, mask) \
do { \
@@ -484,7 +495,4 @@ typedef uintmax_t uatomic_max_t;
#define atomic_or(mem, mask) __arch_or_body (LOCK_PREFIX, mem, mask)
-#define __arch_or_cprefix \
- "cmpl $0, %%fs:%P3\n\tje 0f\n\tlock\n0:\t"
-
-#define catomic_or(mem, mask) __arch_or_body (__arch_or_cprefix, mem, mask)
+#define catomic_or(mem, mask) __arch_or_body (__arch_cprefix, mem, mask)
diff --git a/sysdeps/x86_64/bits/link.h b/sysdeps/x86_64/bits/link.h
index 2890c2d88d..643a293bb0 100644
--- a/sysdeps/x86_64/bits/link.h
+++ b/sysdeps/x86_64/bits/link.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005, 2009 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
@@ -65,10 +65,19 @@ __END_DECLS
/* Registers for entry into PLT on x86-64. */
# if __GNUC_PREREQ (4,0)
typedef float La_x86_64_xmm __attribute__ ((__vector_size__ (16)));
+typedef float La_x86_64_ymm __attribute__ ((__vector_size__ (32)));
# else
typedef float La_x86_64_xmm __attribute__ ((__mode__ (__V4SF__)));
# endif
+typedef union
+{
+# if __GNUC_PREREQ (4,0)
+ La_x86_64_ymm ymm[2];
+# endif
+ La_x86_64_xmm xmm[4];
+} La_x86_64_vector __attribute__ ((aligned(16)));
+
typedef struct La_x86_64_regs
{
uint64_t lr_rdx;
@@ -80,6 +89,7 @@ typedef struct La_x86_64_regs
uint64_t lr_rbp;
uint64_t lr_rsp;
La_x86_64_xmm lr_xmm[8];
+ La_x86_64_vector lr_vector[8];
} La_x86_64_regs;
/* Return values for calls from PLT on x86-64. */
@@ -91,6 +101,8 @@ typedef struct La_x86_64_retval
La_x86_64_xmm lrv_xmm1;
long double lrv_st0;
long double lrv_st1;
+ La_x86_64_vector lrv_vector0;
+ La_x86_64_vector lrv_vector1;
} La_x86_64_retval;
@@ -110,7 +122,7 @@ extern unsigned int la_x86_64_gnu_pltexit (Elf64_Sym *__sym,
uintptr_t *__defcook,
const La_x86_64_regs *__inregs,
La_x86_64_retval *__outregs,
- const char *symname);
+ const char *__symname);
__END_DECLS
diff --git a/sysdeps/x86_64/bits/select.h b/sysdeps/x86_64/bits/select.h
new file mode 100644
index 0000000000..5f31b84080
--- /dev/null
+++ b/sysdeps/x86_64/bits/select.h
@@ -0,0 +1,62 @@
+/* Copyright (C) 1997,1998,1999,2001,2008,2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_SELECT_H
+# error "Never use <bits/select.h> directly; include <sys/select.h> instead."
+#endif
+
+#include <bits/wordsize.h>
+
+
+#if defined __GNUC__ && __GNUC__ >= 2
+
+# if __WORDSIZE == 64
+# define __FD_ZERO_STOS "stosq"
+# else
+# define __FD_ZERO_STOS "stosl"
+# endif
+
+# define __FD_ZERO(fdsp) \
+ do { \
+ int __d0, __d1; \
+ __asm__ __volatile__ ("cld; rep; " __FD_ZERO_STOS \
+ : "=c" (__d0), "=D" (__d1) \
+ : "a" (0), "0" (sizeof (fd_set) \
+ / sizeof (__fd_mask)), \
+ "1" (&__FDS_BITS (fdsp)[0]) \
+ : "memory"); \
+ } while (0)
+
+#else /* ! GNU CC */
+
+/* We don't use `memset' because this would require a prototype and
+ the array isn't too big. */
+# define __FD_ZERO(set) \
+ do { \
+ unsigned int __i; \
+ fd_set *__arr = (set); \
+ for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
+ __FDS_BITS (__arr)[__i] = 0; \
+ } while (0)
+
+#endif /* GNU CC */
+
+#define __FD_SET(d, set) (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d))
+#define __FD_CLR(d, set) (__FDS_BITS (set)[__FDELT (d)] &= ~__FDMASK (d))
+#define __FD_ISSET(d, set) \
+ ((__FDS_BITS (set)[__FDELT (d)] & __FDMASK (d)) != 0)
diff --git a/sysdeps/x86_64/cacheinfo.c b/sysdeps/x86_64/cacheinfo.c
index 6a3ea0f1cb..54220379ec 100644
--- a/sysdeps/x86_64/cacheinfo.c
+++ b/sysdeps/x86_64/cacheinfo.c
@@ -1,5 +1,5 @@
/* x86_64 cache info.
- Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2006, 2007, 2009 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
@@ -22,64 +22,120 @@
#include <stdbool.h>
#include <stdlib.h>
#include <unistd.h>
+#include <cpuid.h>
+
+#ifndef __cpuid_count
+/* FIXME: Provide __cpuid_count if it isn't defined. Copied from gcc
+ 4.4.0. Remove this if gcc 4.4 is the minimum requirement. */
+# if defined(__i386__) && defined(__PIC__)
+/* %ebx may be the PIC register. */
+# define __cpuid_count(level, count, a, b, c, d) \
+ __asm__ ("xchg{l}\t{%%}ebx, %1\n\t" \
+ "cpuid\n\t" \
+ "xchg{l}\t{%%}ebx, %1\n\t" \
+ : "=a" (a), "=r" (b), "=c" (c), "=d" (d) \
+ : "0" (level), "2" (count))
+# else
+# define __cpuid_count(level, count, a, b, c, d) \
+ __asm__ ("cpuid\n\t" \
+ : "=a" (a), "=b" (b), "=c" (c), "=d" (d) \
+ : "0" (level), "2" (count))
+# endif
+#endif
+
+#ifdef USE_MULTIARCH
+# include "multiarch/init-arch.h"
+
+# define is_intel __cpu_features.kind == arch_kind_intel
+# define is_amd __cpu_features.kind == arch_kind_amd
+# define max_cpuid __cpu_features.max_cpuid
+#else
+ /* This spells out "GenuineIntel". */
+# define is_intel \
+ ebx == 0x756e6547 && ecx == 0x6c65746e && edx == 0x49656e69
+ /* This spells out "AuthenticAMD". */
+# define is_amd \
+ ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65
+#endif
static const struct intel_02_cache_info
{
- unsigned int idx;
- int name;
- long int size;
- long int assoc;
- long int linesize;
+ unsigned char idx;
+ unsigned char assoc;
+ unsigned char linesize;
+ unsigned char rel_name;
+ unsigned int size;
} intel_02_known [] =
{
- { 0x06, _SC_LEVEL1_ICACHE_SIZE, 8192, 4, 32 },
- { 0x08, _SC_LEVEL1_ICACHE_SIZE, 16384, 4, 32 },
- { 0x0a, _SC_LEVEL1_DCACHE_SIZE, 8192, 2, 32 },
- { 0x0c, _SC_LEVEL1_DCACHE_SIZE, 16384, 4, 32 },
- { 0x22, _SC_LEVEL3_CACHE_SIZE, 524288, 4, 64 },
- { 0x23, _SC_LEVEL3_CACHE_SIZE, 1048576, 8, 64 },
- { 0x25, _SC_LEVEL3_CACHE_SIZE, 2097152, 8, 64 },
- { 0x29, _SC_LEVEL3_CACHE_SIZE, 4194304, 8, 64 },
- { 0x2c, _SC_LEVEL1_DCACHE_SIZE, 32768, 8, 64 },
- { 0x30, _SC_LEVEL1_ICACHE_SIZE, 32768, 8, 64 },
- { 0x39, _SC_LEVEL2_CACHE_SIZE, 131072, 4, 64 },
- { 0x3a, _SC_LEVEL2_CACHE_SIZE, 196608, 6, 64 },
- { 0x3b, _SC_LEVEL2_CACHE_SIZE, 131072, 2, 64 },
- { 0x3c, _SC_LEVEL2_CACHE_SIZE, 262144, 4, 64 },
- { 0x3d, _SC_LEVEL2_CACHE_SIZE, 393216, 6, 64 },
- { 0x3e, _SC_LEVEL2_CACHE_SIZE, 524288, 4, 64 },
- { 0x3f, _SC_LEVEL2_CACHE_SIZE, 262144, 2, 64 },
- { 0x41, _SC_LEVEL2_CACHE_SIZE, 131072, 4, 32 },
- { 0x42, _SC_LEVEL2_CACHE_SIZE, 262144, 4, 32 },
- { 0x43, _SC_LEVEL2_CACHE_SIZE, 524288, 4, 32 },
- { 0x44, _SC_LEVEL2_CACHE_SIZE, 1048576, 4, 32 },
- { 0x45, _SC_LEVEL2_CACHE_SIZE, 2097152, 4, 32 },
- { 0x46, _SC_LEVEL3_CACHE_SIZE, 4194304, 4, 64 },
- { 0x47, _SC_LEVEL3_CACHE_SIZE, 8388608, 8, 64 },
- { 0x48, _SC_LEVEL2_CACHE_SIZE, 3145728, 12, 64 },
- { 0x49, _SC_LEVEL2_CACHE_SIZE, 4194304, 16, 64 },
- { 0x4a, _SC_LEVEL3_CACHE_SIZE, 6291456, 12, 64 },
- { 0x4b, _SC_LEVEL3_CACHE_SIZE, 8388608, 16, 64 },
- { 0x4c, _SC_LEVEL3_CACHE_SIZE, 12582912, 12, 64 },
- { 0x4d, _SC_LEVEL3_CACHE_SIZE, 16777216, 16, 64 },
- { 0x4e, _SC_LEVEL2_CACHE_SIZE, 6291456, 24, 64 },
- { 0x60, _SC_LEVEL1_DCACHE_SIZE, 16384, 8, 64 },
- { 0x66, _SC_LEVEL1_DCACHE_SIZE, 8192, 4, 64 },
- { 0x67, _SC_LEVEL1_DCACHE_SIZE, 16384, 4, 64 },
- { 0x68, _SC_LEVEL1_DCACHE_SIZE, 32768, 4, 64 },
- { 0x78, _SC_LEVEL2_CACHE_SIZE, 1048576, 8, 64 },
- { 0x79, _SC_LEVEL2_CACHE_SIZE, 131072, 8, 64 },
- { 0x7a, _SC_LEVEL2_CACHE_SIZE, 262144, 8, 64 },
- { 0x7b, _SC_LEVEL2_CACHE_SIZE, 524288, 8, 64 },
- { 0x7c, _SC_LEVEL2_CACHE_SIZE, 1048576, 8, 64 },
- { 0x7d, _SC_LEVEL2_CACHE_SIZE, 2097152, 8, 64 },
- { 0x7f, _SC_LEVEL2_CACHE_SIZE, 524288, 2, 64 },
- { 0x82, _SC_LEVEL2_CACHE_SIZE, 262144, 8, 32 },
- { 0x83, _SC_LEVEL2_CACHE_SIZE, 524288, 8, 32 },
- { 0x84, _SC_LEVEL2_CACHE_SIZE, 1048576, 8, 32 },
- { 0x85, _SC_LEVEL2_CACHE_SIZE, 2097152, 8, 32 },
- { 0x86, _SC_LEVEL2_CACHE_SIZE, 524288, 4, 64 },
- { 0x87, _SC_LEVEL2_CACHE_SIZE, 1048576, 8, 64 },
+#define M(sc) ((sc) - _SC_LEVEL1_ICACHE_SIZE)
+ { 0x06, 4, 32, M(_SC_LEVEL1_ICACHE_SIZE), 8192 },
+ { 0x08, 4, 32, M(_SC_LEVEL1_ICACHE_SIZE), 16384 },
+ { 0x09, 4, 32, M(_SC_LEVEL1_ICACHE_SIZE), 32768 },
+ { 0x0a, 2, 32, M(_SC_LEVEL1_DCACHE_SIZE), 8192 },
+ { 0x0c, 4, 32, M(_SC_LEVEL1_DCACHE_SIZE), 16384 },
+ { 0x0d, 4, 64, M(_SC_LEVEL1_DCACHE_SIZE), 16384 },
+ { 0x0e, 6, 64, M(_SC_LEVEL1_DCACHE_SIZE), 24576 },
+ { 0x21, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 262144 },
+ { 0x22, 4, 64, M(_SC_LEVEL3_CACHE_SIZE), 524288 },
+ { 0x23, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 1048576 },
+ { 0x25, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 },
+ { 0x29, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 },
+ { 0x2c, 8, 64, M(_SC_LEVEL1_DCACHE_SIZE), 32768 },
+ { 0x30, 8, 64, M(_SC_LEVEL1_ICACHE_SIZE), 32768 },
+ { 0x39, 4, 64, M(_SC_LEVEL2_CACHE_SIZE), 131072 },
+ { 0x3a, 6, 64, M(_SC_LEVEL2_CACHE_SIZE), 196608 },
+ { 0x3b, 2, 64, M(_SC_LEVEL2_CACHE_SIZE), 131072 },
+ { 0x3c, 4, 64, M(_SC_LEVEL2_CACHE_SIZE), 262144 },
+ { 0x3d, 6, 64, M(_SC_LEVEL2_CACHE_SIZE), 393216 },
+ { 0x3e, 4, 64, M(_SC_LEVEL2_CACHE_SIZE), 524288 },
+ { 0x3f, 2, 64, M(_SC_LEVEL2_CACHE_SIZE), 262144 },
+ { 0x41, 4, 32, M(_SC_LEVEL2_CACHE_SIZE), 131072 },
+ { 0x42, 4, 32, M(_SC_LEVEL2_CACHE_SIZE), 262144 },
+ { 0x43, 4, 32, M(_SC_LEVEL2_CACHE_SIZE), 524288 },
+ { 0x44, 4, 32, M(_SC_LEVEL2_CACHE_SIZE), 1048576 },
+ { 0x45, 4, 32, M(_SC_LEVEL2_CACHE_SIZE), 2097152 },
+ { 0x46, 4, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 },
+ { 0x47, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 8388608 },
+ { 0x48, 12, 64, M(_SC_LEVEL2_CACHE_SIZE), 3145728 },
+ { 0x49, 16, 64, M(_SC_LEVEL2_CACHE_SIZE), 4194304 },
+ { 0x4a, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 6291456 },
+ { 0x4b, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 8388608 },
+ { 0x4c, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 12582912 },
+ { 0x4d, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 16777216 },
+ { 0x4e, 24, 64, M(_SC_LEVEL2_CACHE_SIZE), 6291456 },
+ { 0x60, 8, 64, M(_SC_LEVEL1_DCACHE_SIZE), 16384 },
+ { 0x66, 4, 64, M(_SC_LEVEL1_DCACHE_SIZE), 8192 },
+ { 0x67, 4, 64, M(_SC_LEVEL1_DCACHE_SIZE), 16384 },
+ { 0x68, 4, 64, M(_SC_LEVEL1_DCACHE_SIZE), 32768 },
+ { 0x78, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 1048576 },
+ { 0x79, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 131072 },
+ { 0x7a, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 262144 },
+ { 0x7b, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 524288 },
+ { 0x7c, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 1048576 },
+ { 0x7d, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 2097152 },
+ { 0x7f, 2, 64, M(_SC_LEVEL2_CACHE_SIZE), 524288 },
+ { 0x80, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 524288 },
+ { 0x82, 8, 32, M(_SC_LEVEL2_CACHE_SIZE), 262144 },
+ { 0x83, 8, 32, M(_SC_LEVEL2_CACHE_SIZE), 524288 },
+ { 0x84, 8, 32, M(_SC_LEVEL2_CACHE_SIZE), 1048576 },
+ { 0x85, 8, 32, M(_SC_LEVEL2_CACHE_SIZE), 2097152 },
+ { 0x86, 4, 64, M(_SC_LEVEL2_CACHE_SIZE), 524288 },
+ { 0x87, 8, 64, M(_SC_LEVEL2_CACHE_SIZE), 1048576 },
+ { 0xd0, 4, 64, M(_SC_LEVEL3_CACHE_SIZE), 524288 },
+ { 0xd1, 4, 64, M(_SC_LEVEL3_CACHE_SIZE), 1048576 },
+ { 0xd2, 4, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 },
+ { 0xd6, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 1048576 },
+ { 0xd7, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 },
+ { 0xd8, 8, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 },
+ { 0xdc, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 },
+ { 0xdd, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 },
+ { 0xde, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 8388608 },
+ { 0xe3, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 },
+ { 0xe3, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 },
+ { 0xe4, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 8388608 },
+ { 0xea, 24, 64, M(_SC_LEVEL3_CACHE_SIZE), 12582912 },
+ { 0xeb, 24, 64, M(_SC_LEVEL3_CACHE_SIZE), 18874368 },
+ { 0xec, 24, 64, M(_SC_LEVEL3_CACHE_SIZE), 25165824 },
};
#define nintel_02_known (sizeof (intel_02_known) / sizeof (intel_02_known [0]))
@@ -111,8 +167,7 @@ intel_check_word (int name, unsigned int value, bool *has_level_2,
/* Fold the name. The _SC_ constants are always in the order SIZE,
ASSOC, LINESIZE. */
- int folded_name = (_SC_LEVEL1_ICACHE_SIZE
- + ((name - _SC_LEVEL1_ICACHE_SIZE) / 3) * 3);
+ int folded_rel_name = (M(name) / 3) * 3;
while (value != 0)
{
@@ -122,28 +177,33 @@ intel_check_word (int name, unsigned int value, bool *has_level_2,
{
*no_level_2_or_3 = true;
- if (folded_name == _SC_LEVEL3_CACHE_SIZE)
+ if (folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE))
/* No need to look further. */
break;
}
else
{
- if (byte == 0x49 && folded_name == _SC_LEVEL3_CACHE_SIZE)
+ if (byte == 0x49 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE))
{
/* Intel reused this value. For family 15, model 6 it
specifies the 3rd level cache. Otherwise the 2nd
level cache. */
+ unsigned int family;
+ unsigned int model;
+#ifdef USE_MULTIARCH
+ family = __cpu_features.family;
+ model = __cpu_features.model;
+#else
unsigned int eax;
unsigned int ebx;
unsigned int ecx;
unsigned int edx;
- asm volatile ("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "0" (1));
+ __cpuid (1, eax, ebx, ecx, edx);
+
+ family = ((eax >> 20) & 0xff) + ((eax >> 8) & 0xf);
+ model = (((eax >>16) & 0xf) << 4) + ((eax >> 4) & 0xf);
+#endif
- unsigned int family = ((eax >> 20) & 0xff) + ((eax >> 8) & 0xf);
- unsigned int model = ((((eax >>16) & 0xf) << 4)
- + ((eax >> 4) & 0xf));
if (family == 15 && model == 6)
{
/* The level 3 cache is encoded for this model like
@@ -151,7 +211,7 @@ intel_check_word (int name, unsigned int value, bool *has_level_2,
the caller asked for the level 2 cache. */
name = (_SC_LEVEL2_CACHE_SIZE
+ (name - _SC_LEVEL3_CACHE_SIZE));
- folded_name = _SC_LEVEL3_CACHE_SIZE;
+ folded_rel_name = M(_SC_LEVEL2_CACHE_SIZE);
}
}
@@ -163,9 +223,9 @@ intel_check_word (int name, unsigned int value, bool *has_level_2,
sizeof (intel_02_known[0]), intel_02_known_compare);
if (found != NULL)
{
- if (found->name == folded_name)
+ if (found->rel_name == folded_rel_name)
{
- unsigned int offset = name - folded_name;
+ unsigned int offset = M(name) - folded_rel_name;
if (offset == 0)
/* Cache size. */
@@ -177,7 +237,7 @@ intel_check_word (int name, unsigned int value, bool *has_level_2,
return found->linesize;
}
- if (found->name == _SC_LEVEL2_CACHE_SIZE)
+ if (found->rel_name == M(_SC_LEVEL2_CACHE_SIZE))
*has_level_2 = true;
}
}
@@ -210,9 +270,7 @@ handle_intel (int name, unsigned int maxidx)
unsigned int ebx;
unsigned int ecx;
unsigned int edx;
- asm volatile ("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "0" (2));
+ __cpuid (2, eax, ebx, ecx, edx);
/* The low byte of EAX in the first round contain the number of
rounds we have to make. At least one, the one we are already
@@ -256,9 +314,7 @@ handle_amd (int name)
unsigned int ebx;
unsigned int ecx;
unsigned int edx;
- asm volatile ("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "0" (0x80000000));
+ __cpuid (0x80000000, eax, ebx, ecx, edx);
/* No level 4 cache (yet). */
if (name > _SC_LEVEL3_CACHE_LINESIZE)
@@ -268,9 +324,7 @@ handle_amd (int name)
if (eax < fn)
return 0;
- asm volatile ("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "0" (fn));
+ __cpuid (fn, eax, ebx, ecx, edx);
if (name < _SC_LEVEL1_DCACHE_SIZE)
{
@@ -375,21 +429,22 @@ long int
attribute_hidden
__cache_sysconf (int name)
{
+#ifdef USE_MULTIARCH
+ if (__cpu_features.kind == arch_kind_unknown)
+ __init_cpu_features ();
+#else
/* Find out what brand of processor. */
- unsigned int eax;
+ unsigned int max_cpuid;
unsigned int ebx;
unsigned int ecx;
unsigned int edx;
- asm volatile ("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "0" (0));
+ __cpuid (0, max_cpuid, ebx, ecx, edx);
+#endif
- /* This spells out "GenuineIntel". */
- if (ebx == 0x756e6547 && ecx == 0x6c65746e && edx == 0x49656e69)
- return handle_intel (name, eax);
+ if (is_intel)
+ return handle_intel (name, max_cpuid);
- /* This spells out "AuthenticAMD". */
- if (ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65)
+ if (is_amd)
return handle_amd (name);
// XXX Fill in more vendors.
@@ -399,16 +454,21 @@ __cache_sysconf (int name)
}
-/* Half the data cache size for use in memory and string routines, typically
+/* Data cache size for use in memory and string routines, typically
L1 size. */
long int __x86_64_data_cache_size_half attribute_hidden = 32 * 1024 / 2;
+long int __x86_64_data_cache_size attribute_hidden = 32 * 1024;
/* Shared cache size for use in memory and string routines, typically
L2 or L3 size. */
long int __x86_64_shared_cache_size_half attribute_hidden = 1024 * 1024 / 2;
long int __x86_64_shared_cache_size attribute_hidden = 1024 * 1024;
+
+#ifndef DISABLE_PREFETCHW
/* PREFETCHW support flag for use in memory and string routines. */
int __x86_64_prefetchw attribute_hidden;
+#endif
+#ifndef DISABLE_PREFERRED_MEMORY_INSTRUCTION
/* Instructions preferred for memory and string routines.
0: Regular instructions
@@ -418,6 +478,7 @@ int __x86_64_prefetchw attribute_hidden;
*/
int __x86_64_preferred_memory_instruction attribute_hidden;
+#endif
static void
@@ -429,19 +490,21 @@ init_cacheinfo (void)
unsigned int ebx;
unsigned int ecx;
unsigned int edx;
- int max_cpuid;
int max_cpuid_ex;
long int data = -1;
long int shared = -1;
unsigned int level;
unsigned int threads = 0;
- asm volatile ("cpuid"
- : "=a" (max_cpuid), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "0" (0));
+#ifdef USE_MULTIARCH
+ if (__cpu_features.kind == arch_kind_unknown)
+ __init_cpu_features ();
+#else
+ int max_cpuid;
+ __cpuid (0, max_cpuid, ebx, ecx, edx);
+#endif
- /* This spells out "GenuineIntel". */
- if (ebx == 0x756e6547 && ecx == 0x6c65746e && edx == 0x49656e69)
+ if (is_intel)
{
data = handle_intel (_SC_LEVEL1_DCACHE_SIZE, max_cpuid);
@@ -456,16 +519,25 @@ init_cacheinfo (void)
shared = handle_intel (_SC_LEVEL2_CACHE_SIZE, max_cpuid);
}
- asm volatile ("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "0" (1));
+ unsigned int ebx_1;
+
+#ifdef USE_MULTIARCH
+ eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax;
+ ebx_1 = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ebx;
+ ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx;
+ edx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].edx;
+#else
+ __cpuid (1, eax, ebx_1, ecx, edx);
+#endif
+#ifndef DISABLE_PREFERRED_MEMORY_INSTRUCTION
/* Intel prefers SSSE3 instructions for memory/string routines
if they are avaiable. */
if ((ecx & 0x200))
__x86_64_preferred_memory_instruction = 3;
else
__x86_64_preferred_memory_instruction = 2;
+#endif
/* Figure out the number of logical threads that share the
highest cache level. */
@@ -476,9 +548,7 @@ init_cacheinfo (void)
/* Query until desired cache level is enumerated. */
do
{
- asm volatile ("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "0" (4), "2" (i++));
+ __cpuid_count (4, i++, eax, ebx, ecx, edx);
/* There seems to be a bug in at least some Pentium Ds
which sometimes fail to iterate all cache parameters.
@@ -489,14 +559,46 @@ init_cacheinfo (void)
}
while (((eax >> 5) & 0x7) != level);
- threads = ((eax >> 14) & 0x3ff) + 1;
+ threads = (eax >> 14) & 0x3ff;
+
+ /* If max_cpuid >= 11, THREADS is the maximum number of
+ addressable IDs for logical processors sharing the
+ cache, instead of the maximum number of threads
+ sharing the cache. */
+ if (threads && max_cpuid >= 11)
+ {
+ /* Find the number of logical processors shipped in
+ one core and apply count mask. */
+ i = 0;
+ while (1)
+ {
+ __cpuid_count (11, i++, eax, ebx, ecx, edx);
+
+ int shipped = ebx & 0xff;
+ int type = ecx & 0xff0;
+ if (shipped == 0 || type == 0)
+ break;
+ else if (type == 0x200)
+ {
+ int count_mask;
+
+ /* Compute count mask. */
+ asm ("bsr %1, %0"
+ : "=r" (count_mask) : "g" (threads));
+ count_mask = ~(-1 << (count_mask + 1));
+ threads = (shipped - 1) & count_mask;
+ break;
+ }
+ }
+ }
+ threads += 1;
}
else
{
intel_bug_no_cache_info:
/* Assume that all logical threads share the highest cache level. */
- threads = (ebx >> 16) & 0xff;
+ threads = (ebx_1 >> 16) & 0xff;
}
/* Cap usage of highest cache level to the number of supported
@@ -505,16 +607,14 @@ init_cacheinfo (void)
shared /= threads;
}
/* This spells out "AuthenticAMD". */
- else if (ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65)
+ else if (is_amd)
{
data = handle_amd (_SC_LEVEL1_DCACHE_SIZE);
long int core = handle_amd (_SC_LEVEL2_CACHE_SIZE);
shared = handle_amd (_SC_LEVEL3_CACHE_SIZE);
/* Get maximum extended function. */
- asm volatile ("cpuid"
- : "=a" (max_cpuid_ex), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "0" (0x80000000));
+ __cpuid (0x80000000, max_cpuid_ex, ebx, ecx, edx);
if (shared <= 0)
/* No shared L3 cache. All we have is the L2 cache. */
@@ -525,10 +625,7 @@ init_cacheinfo (void)
if (max_cpuid_ex >= 0x80000008)
{
/* Get width of APIC ID. */
- asm volatile ("cpuid"
- : "=a" (max_cpuid_ex), "=b" (ebx), "=c" (ecx),
- "=d" (edx)
- : "0" (0x80000008));
+ __cpuid (0x80000008, max_cpuid_ex, ebx, ecx, edx);
threads = 1 << ((ecx >> 12) & 0x0f);
}
@@ -536,10 +633,7 @@ init_cacheinfo (void)
{
/* If APIC ID width is not available, use logical
processor count. */
- asm volatile ("cpuid"
- : "=a" (max_cpuid_ex), "=b" (ebx), "=c" (ecx),
- "=d" (edx)
- : "0" (0x00000001));
+ __cpuid (0x00000001, max_cpuid_ex, ebx, ecx, edx);
if ((edx & (1 << 28)) != 0)
threads = (ebx >> 16) & 0xff;
@@ -554,19 +648,22 @@ init_cacheinfo (void)
shared += core;
}
+#ifndef DISABLE_PREFETCHW
if (max_cpuid_ex >= 0x80000001)
{
- asm volatile ("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "0" (0x80000001));
+ __cpuid (0x80000001, eax, ebx, ecx, edx);
/* PREFETCHW || 3DNow! */
if ((ecx & 0x100) || (edx & 0x80000000))
__x86_64_prefetchw = -1;
}
+#endif
}
if (data > 0)
- __x86_64_data_cache_size_half = data / 2;
+ {
+ __x86_64_data_cache_size_half = data / 2;
+ __x86_64_data_cache_size = data;
+ }
if (shared > 0)
{
diff --git a/sysdeps/x86_64/dl-irel.h b/sysdeps/x86_64/dl-irel.h
new file mode 100644
index 0000000000..d2d5c0670e
--- /dev/null
+++ b/sysdeps/x86_64/dl-irel.h
@@ -0,0 +1,45 @@
+/* Machine-dependent ELF indirect relocation inline functions.
+ x86-64 version.
+ Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _DL_IREL_H
+#define _DL_IREL_H
+
+#include <stdio.h>
+#include <unistd.h>
+
+#define ELF_MACHINE_IRELA 1
+
+static inline void
+__attribute ((always_inline))
+elf_irela (const Elf64_Rela *reloc)
+{
+ Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
+ const unsigned long int r_type = ELF64_R_TYPE (reloc->r_info);
+
+ if (__builtin_expect (r_type == R_X86_64_IRELATIVE, 1))
+ {
+ Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) ();
+ *reloc_addr = value;
+ }
+ else
+ __libc_fatal ("unexpected reloc type in static binary");
+}
+
+#endif /* dl-irel.h */
diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h
index 959b1328d7..61a0556d5e 100644
--- a/sysdeps/x86_64/dl-machine.h
+++ b/sysdeps/x86_64/dl-machine.h
@@ -1,5 +1,5 @@
/* Machine-dependent ELF dynamic relocation inline functions. x86-64 version.
- Copyright (C) 2001-2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2001-2005, 2006, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>.
@@ -266,40 +266,46 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
Elf64_Addr *const reloc_addr = reloc_addr_arg;
const unsigned long int r_type = ELF64_R_TYPE (reloc->r_info);
-#if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
+# if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
if (__builtin_expect (r_type == R_X86_64_RELATIVE, 0))
{
-# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
+# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
/* This is defined in rtld.c, but nowhere in the static libc.a;
make the reference weak so static programs can still link.
This declaration cannot be done when compiling rtld.c
(i.e. #ifdef RTLD_BOOTSTRAP) because rtld.c contains the
common defn for _dl_rtld_map, which is incompatible with a
weak decl in the same file. */
-# ifndef SHARED
+# ifndef SHARED
weak_extern (GL(dl_rtld_map));
-# endif
+# endif
if (map != &GL(dl_rtld_map)) /* Already done in rtld itself. */
-# endif
+# endif
*reloc_addr = map->l_addr + reloc->r_addend;
}
else
-#endif
+# endif
if (__builtin_expect (r_type == R_X86_64_NONE, 0))
return;
else
{
-#ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
const Elf64_Sym *const refsym = sym;
-#endif
+# endif
struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
Elf64_Addr value = (sym == NULL ? 0
: (Elf64_Addr) sym_map->l_addr + sym->st_value);
-#if defined RTLD_BOOTSTRAP && !USE___THREAD
+ if (sym != NULL
+ && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC,
+ 0)
+ && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1))
+ value = ((Elf64_Addr (*) (void)) value) ();
+
+# if defined RTLD_BOOTSTRAP && !USE___THREAD
assert (r_type == R_X86_64_GLOB_DAT || r_type == R_X86_64_JUMP_SLOT);
*reloc_addr = value + reloc->r_addend;
-#else
+# else
switch (r_type)
{
case R_X86_64_GLOB_DAT:
@@ -307,47 +313,47 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
*reloc_addr = value + reloc->r_addend;
break;
-#ifndef RESOLVE_CONFLICT_FIND_MAP
+# ifndef RESOLVE_CONFLICT_FIND_MAP
case R_X86_64_DTPMOD64:
-# ifdef RTLD_BOOTSTRAP
+# ifdef RTLD_BOOTSTRAP
/* During startup the dynamic linker is always the module
with index 1.
XXX If this relocation is necessary move before RESOLVE
call. */
*reloc_addr = 1;
-# else
+# else
/* Get the information from the link map returned by the
resolve function. */
if (sym_map != NULL)
*reloc_addr = sym_map->l_tls_modid;
-# endif
+# endif
break;
case R_X86_64_DTPOFF64:
-# ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
/* During relocation all TLS symbols are defined and used.
Therefore the offset is already correct. */
if (sym != NULL)
*reloc_addr = sym->st_value + reloc->r_addend;
-# endif
+# endif
break;
case R_X86_64_TLSDESC:
{
struct tlsdesc volatile *td =
(struct tlsdesc volatile *)reloc_addr;
-# ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
if (! sym)
{
td->arg = (void*)reloc->r_addend;
td->entry = _dl_tlsdesc_undefweak;
}
else
-# endif
+# endif
{
-# ifndef RTLD_BOOTSTRAP
-# ifndef SHARED
+# ifndef RTLD_BOOTSTRAP
+# ifndef SHARED
CHECK_STATIC_TLS (map, sym_map);
-# else
+# else
if (!TRY_STATIC_TLS (map, sym_map))
{
td->arg = _dl_make_tlsdesc_dynamic
@@ -355,8 +361,8 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
td->entry = _dl_tlsdesc_dynamic;
}
else
+# endif
# endif
-# endif
{
td->arg = (void*)(sym->st_value - sym_map->l_tls_offset
+ reloc->r_addend);
@@ -367,13 +373,13 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
}
case R_X86_64_TPOFF64:
/* The offset is negative, forward from the thread pointer. */
-# ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
if (sym != NULL)
-# endif
+# endif
{
-# ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
CHECK_STATIC_TLS (map, sym_map);
-# endif
+# endif
/* We know the offset of the object the symbol is contained in.
It is a negative value which will be added to the
thread pointer. */
@@ -381,42 +387,43 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
- sym_map->l_tls_offset);
}
break;
-#endif
+# endif
-#ifndef RTLD_BOOTSTRAP
+# ifndef RTLD_BOOTSTRAP
case R_X86_64_64:
*reloc_addr = value + reloc->r_addend;
break;
case R_X86_64_32:
- *(unsigned int *) reloc_addr = value + reloc->r_addend;
- if (value + reloc->r_addend > UINT_MAX)
+ value += reloc->r_addend;
+ *(unsigned int *) reloc_addr = value;
+
+ const char *fmt;
+ if (__builtin_expect (value > UINT_MAX, 0))
{
const char *strtab;
+ fmt = "\
+%s: Symbol `%s' causes overflow in R_X86_64_32 relocation\n";
+# ifndef RESOLVE_CONFLICT_FIND_MAP
+ print_err:
+# endif
strtab = (const char *) D_PTR (map, l_info[DT_STRTAB]);
- _dl_error_printf ("\
-%s: Symbol `%s' causes overflow in R_X86_64_32 relocation\n",
+ _dl_error_printf (fmt,
rtld_progname ?: "<program name unknown>",
strtab + refsym->st_name);
}
break;
-# ifndef RESOLVE_CONFLICT_FIND_MAP
+# ifndef RESOLVE_CONFLICT_FIND_MAP
/* Not needed for dl-conflict.c. */
case R_X86_64_PC32:
- *(unsigned int *) reloc_addr = value + reloc->r_addend
- - (Elf64_Addr) reloc_addr;
- if (value + reloc->r_addend - (Elf64_Addr) reloc_addr
- != (int)(value + reloc->r_addend - (Elf64_Addr) reloc_addr))
+ value += reloc->r_addend - (Elf64_Addr) reloc_addr;
+ *(unsigned int *) reloc_addr = value;
+ if (__builtin_expect (value != (unsigned int) value, 0))
{
- const char *strtab;
-
- strtab = (const char *) D_PTR (map, l_info[DT_STRTAB]);
-
- _dl_error_printf ("\
-%s: Symbol `%s' causes overflow in R_X86_64_PC32 relocation\n",
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
+ fmt = "\
+%s: Symbol `%s' causes overflow in R_X86_64_PC32 relocation\n";
+ goto print_err;
}
break;
case R_X86_64_COPY:
@@ -424,26 +431,27 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
/* This can happen in trace mode if an object could not be
found. */
break;
+ memcpy (reloc_addr_arg, (void *) value,
+ MIN (sym->st_size, refsym->st_size));
if (__builtin_expect (sym->st_size > refsym->st_size, 0)
|| (__builtin_expect (sym->st_size < refsym->st_size, 0)
&& GLRO(dl_verbose)))
{
- const char *strtab;
-
- strtab = (const char *) D_PTR (map, l_info[DT_STRTAB]);
- _dl_error_printf ("\
-%s: Symbol `%s' has different size in shared object, consider re-linking\n",
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
+ fmt = "\
+%s: Symbol `%s' has different size in shared object, consider re-linking\n";
+ goto print_err;
}
- memcpy (reloc_addr_arg, (void *) value,
- MIN (sym->st_size, refsym->st_size));
break;
-# endif
+# endif
+ case R_X86_64_IRELATIVE:
+ value = map->l_addr + reloc->r_addend;
+ value = ((Elf64_Addr (*) (void)) value) ();
+ *reloc_addr = value;
+ break;
default:
_dl_reloc_bad_type (map, r_type, 0);
break;
-#endif
+# endif
}
#endif
}
@@ -486,6 +494,12 @@ elf_machine_lazy_rel (struct link_map *map,
td->entry = (void*)(D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)])
+ map->l_addr);
}
+ else if (__builtin_expect (r_type == R_X86_64_IRELATIVE, 0))
+ {
+ Elf64_Addr value = map->l_addr + reloc->r_addend;
+ value = ((Elf64_Addr (*) (void)) value) ();
+ *reloc_addr = value;
+ }
else
_dl_reloc_bad_type (map, r_type, 1);
}
diff --git a/sysdeps/x86_64/dl-runtime.c b/sysdeps/x86_64/dl-runtime.c
new file mode 100644
index 0000000000..b625d1e882
--- /dev/null
+++ b/sysdeps/x86_64/dl-runtime.c
@@ -0,0 +1,9 @@
+/* The ABI calls for the PLT stubs to pass the index of the relocation
+ and not its offset. In _dl_profile_fixup and _dl_call_pltexit we
+ also use the index. Therefore it is wasteful to compute the offset
+ in the trampoline just to reverse the operation immediately
+ afterwards. */
+#define reloc_offset reloc_arg * sizeof (PLTREL)
+#define reloc_index reloc_arg
+
+#include <elf/dl-runtime.c>
diff --git a/sysdeps/x86_64/dl-trampoline.S b/sysdeps/x86_64/dl-trampoline.S
index 3e2d182758..5564a11af2 100644
--- a/sysdeps/x86_64/dl-trampoline.S
+++ b/sysdeps/x86_64/dl-trampoline.S
@@ -1,5 +1,5 @@
/* PLT trampolines. x86-64 version.
- Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2007, 2009 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
@@ -17,7 +17,9 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <config.h>
#include <sysdep.h>
+#include <link-defines.h>
.text
.globl _dl_runtime_resolve
@@ -35,11 +37,7 @@ _dl_runtime_resolve:
movq %r8, 40(%rsp)
movq %r9, 48(%rsp)
movq 64(%rsp), %rsi # Copy args pushed by PLT in register.
- movq %rsi, %r11 # Multiply by 24
- addq %r11, %rsi
- addq %r11, %rsi
- shlq $3, %rsi
- movq 56(%rsp), %rdi # %rdi: link_map, %rsi: reloc_offset
+ movq 56(%rsp), %rdi # %rdi: link_map, %rsi: reloc_index
call _dl_fixup # Call resolver.
movq %rax, %r11 # Save return value
movq 48(%rsp), %r9 # Get register content back.
@@ -61,132 +59,186 @@ _dl_runtime_resolve:
.type _dl_runtime_profile, @function
.align 16
cfi_startproc
+
_dl_runtime_profile:
- subq $88, %rsp
- cfi_adjust_cfa_offset(104) # Incorporate PLT
- movq %rax, (%rsp) # Preserve registers otherwise clobbered.
- movq %rdx, 8(%rsp)
- movq %r8, 16(%rsp)
- movq %r9, 24(%rsp)
- movq %rcx, 32(%rsp)
- movq %rsi, 40(%rsp)
- movq %rdi, 48(%rsp)
- movq %rbp, 56(%rsp) # Information for auditors.
- leaq 104(%rsp), %rax
- movq %rax, 64(%rsp)
- leaq 8(%rsp), %rcx
- movq 104(%rsp), %rdx # Load return address if needed
- movq 96(%rsp), %rsi # Copy args pushed by PLT in register.
- movq %rsi,%r11 # Multiply by 24
- addq %r11,%rsi
- addq %r11,%rsi
- shlq $3, %rsi
- movq 88(%rsp), %rdi # %rdi: link_map, %rsi: reloc_offset
- leaq 72(%rsp), %r8
- call _dl_profile_fixup # Call resolver.
- movq %rax, %r11 # Save return value
- movq 8(%rsp), %rdx # Get back register content.
- movq 16(%rsp), %r8
- movq 24(%rsp), %r9
- movq (%rsp),%rax
- movq 72(%rsp), %r10
- testq %r10, %r10
- jns 1f
- movq 32(%rsp), %rcx
- movq 40(%rsp), %rsi
- movq 48(%rsp), %rdi
- addq $104,%rsp # Adjust stack
- cfi_adjust_cfa_offset (-104)
- jmp *%r11 # Jump to function address.
+ cfi_adjust_cfa_offset(16) # Incorporate PLT
+ /* The La_x86_64_regs data structure pointed to by the
+ fourth paramater must be 16-byte aligned. This must
+ be explicitly enforced. We have the set up a dynamically
+ sized stack frame. %rbx points to the top half which
+ has a fixed size and preserves the original stack pointer. */
+
+ subq $32, %rsp # Allocate the local storage.
+ cfi_adjust_cfa_offset(32)
+ movq %rbx, (%rsp)
+ cfi_rel_offset(%rbx, 0)
+
+ /* On the stack:
+ 56(%rbx) parameter #1
+ 48(%rbx) return address
- /*
- +104 return address
- +96 PLT2
- +88 PLT1
- +80 free
- +72 free
- +64 %rsp
- +56 %rbp
- +48 %rdi
- +40 %rsi
- +32 %rcx
- +24 %r9
- +16 %r8
- +8 %rdx
- %rsp %rax
+ 40(%rbx) reloc index
+ 32(%rbx) link_map
+
+ 24(%rbx) La_x86_64_regs pointer
+ 16(%rbx) framesize
+ 8(%rbx) rax
+ (%rbx) rbx
*/
- cfi_adjust_cfa_offset (104)
-1: movq %rbx, 72(%rsp)
- cfi_rel_offset (rbx, 72)
- leaq 112(%rsp), %rsi
+
+ movq %rax, 8(%rsp)
movq %rsp, %rbx
- cfi_def_cfa_register (%rbx)
- movq %r10, %rcx
- addq $8, %r10
- andq $0xfffffffffffffff0, %r10
- subq %r10, %rsp
- movq %rsp, %rdi
- shrq $3, %rcx
- rep
- movsq
- movq 32(%rbx), %rcx
- movq 40(%rbx), %rsi
- movq 48(%rbx), %rdi
- call *%r11
- movq %rbx, %rsp
- cfi_def_cfa_register (%rsp)
- subq $72, %rsp
- cfi_adjust_cfa_offset (72)
- movq %rsp, %rcx
- movq %rax, (%rcx)
- movq %rdx, 8(%rcx)
- /* Even though the stack is correctly aligned to allow using movaps
- we use movups. Some callers might provide an incorrectly aligned
- stack and we do not want to have it blow up here. */
- movups %xmm0, 16(%rcx)
- movups %xmm1, 32(%rcx)
- fstpt 48(%rcx)
- fstpt 64(%rcx)
- /*
- +176 return address
- +168 PLT2
- +160 PLT1
- +152 free
- +144 free
- +136 %rsp
- +128 %rbp
- +120 %rdi
- +112 %rsi
- +104 %rcx
- +96 %r9
- +88 %r8
- +80 %rdx
- +64 %st1 result
- +48 %st result
- +32 %xmm1 result
- +16 %xmm0 result
- +8 %rdx result
- %rsp %rax result
- */
- leaq 80(%rsp), %rdx
- movq 144(%rsp), %rbx
- cfi_restore (rbx)
- movq 168(%rsp), %rsi # Copy args pushed by PLT in register.
- movq %rsi,%r11 # Multiply by 24
- addq %r11,%rsi
- addq %r11,%rsi
- shlq $3, %rsi
- movq 160(%rsp), %rdi # %rdi: link_map, %rsi: reloc_offset
- call _dl_call_pltexit
- movq (%rsp), %rax
- movq 8(%rsp), %rdx
- movups 16(%rsp), %xmm0
- movups 32(%rsp), %xmm1
- fldt 64(%rsp)
- fldt 48(%rsp)
- addq $176, %rsp
- cfi_adjust_cfa_offset (-176)
- retq
+ cfi_def_cfa_register(%rbx)
+
+ /* Actively align the La_x86_64_regs structure. */
+ andq $0xfffffffffffffff0, %rsp
+# ifdef HAVE_AVX_SUPPORT
+ /* sizeof(La_x86_64_regs). Need extra space for 8 SSE registers
+ to detect if any xmm0-xmm7 registers are changed by audit
+ module. */
+ subq $(LR_SIZE + XMM_SIZE*8), %rsp
+# else
+ subq $LR_SIZE, %rsp # sizeof(La_x86_64_regs)
+# endif
+ movq %rsp, 24(%rbx)
+
+ /* Fill the La_x86_64_regs structure. */
+ movq %rdx, LR_RDX_OFFSET(%rsp)
+ movq %r8, LR_R8_OFFSET(%rsp)
+ movq %r9, LR_R9_OFFSET(%rsp)
+ movq %rcx, LR_RCX_OFFSET(%rsp)
+ movq %rsi, LR_RSI_OFFSET(%rsp)
+ movq %rdi, LR_RDI_OFFSET(%rsp)
+ movq %rbp, LR_RBP_OFFSET(%rsp)
+
+ leaq 48(%rbx), %rax
+ movq %rax, LR_RSP_OFFSET(%rsp)
+
+ /* We always store the XMM registers even if AVX is available.
+ This is to provide backward binary compatility for existing
+ audit modules. */
+ movaps %xmm0, (LR_XMM_OFFSET)(%rsp)
+ movaps %xmm1, (LR_XMM_OFFSET + XMM_SIZE)(%rsp)
+ movaps %xmm2, (LR_XMM_OFFSET + XMM_SIZE*2)(%rsp)
+ movaps %xmm3, (LR_XMM_OFFSET + XMM_SIZE*3)(%rsp)
+ movaps %xmm4, (LR_XMM_OFFSET + XMM_SIZE*4)(%rsp)
+ movaps %xmm5, (LR_XMM_OFFSET + XMM_SIZE*5)(%rsp)
+ movaps %xmm6, (LR_XMM_OFFSET + XMM_SIZE*6)(%rsp)
+ movaps %xmm7, (LR_XMM_OFFSET + XMM_SIZE*7)(%rsp)
+
+# ifdef HAVE_AVX_SUPPORT
+ .data
+L(have_avx):
+ .zero 4
+ .size L(have_avx), 4
+ .previous
+
+ cmpl $0, L(have_avx)(%rip)
+ jne 1f
+ movq %rbx, %r11 # Save rbx
+ movl $1, %eax
+ cpuid
+ movq %r11,%rbx # Restore rbx
+ movl $1, %eax
+ testl $(1 << 28), %ecx
+ jne 2f
+ negl %eax
+2: movl %eax, L(have_avx)(%rip)
+ cmpl $0, %eax
+
+1: js L(no_avx)
+
+# define RESTORE_AVX
+# include "dl-trampoline.h"
+
+ .align 16
+L(no_avx):
+# endif
+
+# undef RESTORE_AVX
+# include "dl-trampoline.h"
+
cfi_endproc
.size _dl_runtime_profile, .-_dl_runtime_profile
#endif
+
+
+#ifdef SHARED
+ .globl _dl_x86_64_save_sse
+ .type _dl_x86_64_save_sse, @function
+ .align 16
+ cfi_startproc
+_dl_x86_64_save_sse:
+# ifdef HAVE_AVX_SUPPORT
+ cmpl $0, L(have_avx)(%rip)
+ jne 1f
+ movq %rbx, %r11 # Save rbx
+ movl $1, %eax
+ cpuid
+ movq %r11,%rbx # Restore rbx
+ movl $1, %eax
+ testl $(1 << 28), %ecx
+ jne 2f
+ negl %eax
+2: movl %eax, L(have_avx)(%rip)
+ cmpl $0, %eax
+
+1: js L(no_avx5)
+
+# define YMM_SIZE 32
+ vmovdqa %ymm0, %fs:RTLD_SAVESPACE_SSE+0*YMM_SIZE
+ vmovdqa %ymm1, %fs:RTLD_SAVESPACE_SSE+1*YMM_SIZE
+ vmovdqa %ymm2, %fs:RTLD_SAVESPACE_SSE+2*YMM_SIZE
+ vmovdqa %ymm3, %fs:RTLD_SAVESPACE_SSE+3*YMM_SIZE
+ vmovdqa %ymm4, %fs:RTLD_SAVESPACE_SSE+4*YMM_SIZE
+ vmovdqa %ymm5, %fs:RTLD_SAVESPACE_SSE+5*YMM_SIZE
+ vmovdqa %ymm6, %fs:RTLD_SAVESPACE_SSE+6*YMM_SIZE
+ vmovdqa %ymm7, %fs:RTLD_SAVESPACE_SSE+7*YMM_SIZE
+ ret
+L(no_avx5):
+# endif
+ movdqa %xmm0, %fs:RTLD_SAVESPACE_SSE+0*XMM_SIZE
+ movdqa %xmm1, %fs:RTLD_SAVESPACE_SSE+1*XMM_SIZE
+ movdqa %xmm2, %fs:RTLD_SAVESPACE_SSE+2*XMM_SIZE
+ movdqa %xmm3, %fs:RTLD_SAVESPACE_SSE+3*XMM_SIZE
+ movdqa %xmm4, %fs:RTLD_SAVESPACE_SSE+4*XMM_SIZE
+ movdqa %xmm5, %fs:RTLD_SAVESPACE_SSE+5*XMM_SIZE
+ movdqa %xmm6, %fs:RTLD_SAVESPACE_SSE+6*XMM_SIZE
+ movdqa %xmm7, %fs:RTLD_SAVESPACE_SSE+7*XMM_SIZE
+ ret
+ cfi_endproc
+ .size _dl_x86_64_save_sse, .-_dl_x86_64_save_sse
+
+
+ .globl _dl_x86_64_restore_sse
+ .type _dl_x86_64_restore_sse, @function
+ .align 16
+ cfi_startproc
+_dl_x86_64_restore_sse:
+# ifdef HAVE_AVX_SUPPORT
+ cmpl $0, L(have_avx)(%rip)
+ js L(no_avx6)
+
+ vmovdqa %fs:RTLD_SAVESPACE_SSE+0*YMM_SIZE, %ymm0
+ vmovdqa %fs:RTLD_SAVESPACE_SSE+1*YMM_SIZE, %ymm1
+ vmovdqa %fs:RTLD_SAVESPACE_SSE+2*YMM_SIZE, %ymm2
+ vmovdqa %fs:RTLD_SAVESPACE_SSE+3*YMM_SIZE, %ymm3
+ vmovdqa %fs:RTLD_SAVESPACE_SSE+4*YMM_SIZE, %ymm4
+ vmovdqa %fs:RTLD_SAVESPACE_SSE+5*YMM_SIZE, %ymm5
+ vmovdqa %fs:RTLD_SAVESPACE_SSE+6*YMM_SIZE, %ymm6
+ vmovdqa %fs:RTLD_SAVESPACE_SSE+7*YMM_SIZE, %ymm7
+ ret
+L(no_avx6):
+# endif
+ movdqa %fs:RTLD_SAVESPACE_SSE+0*XMM_SIZE, %xmm0
+ movdqa %fs:RTLD_SAVESPACE_SSE+1*XMM_SIZE, %xmm1
+ movdqa %fs:RTLD_SAVESPACE_SSE+2*XMM_SIZE, %xmm2
+ movdqa %fs:RTLD_SAVESPACE_SSE+3*XMM_SIZE, %xmm3
+ movdqa %fs:RTLD_SAVESPACE_SSE+4*XMM_SIZE, %xmm4
+ movdqa %fs:RTLD_SAVESPACE_SSE+5*XMM_SIZE, %xmm5
+ movdqa %fs:RTLD_SAVESPACE_SSE+6*XMM_SIZE, %xmm6
+ movdqa %fs:RTLD_SAVESPACE_SSE+7*XMM_SIZE, %xmm7
+ ret
+ cfi_endproc
+ .size _dl_x86_64_restore_sse, .-_dl_x86_64_restore_sse
+#endif
diff --git a/sysdeps/x86_64/dl-trampoline.h b/sysdeps/x86_64/dl-trampoline.h
new file mode 100644
index 0000000000..5d49ed4408
--- /dev/null
+++ b/sysdeps/x86_64/dl-trampoline.h
@@ -0,0 +1,269 @@
+/* Partial PLT profile trampoline to save and restore x86-64 vector
+ registers.
+ Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifdef RESTORE_AVX
+ /* This is to support AVX audit modules. */
+ vmovdqu %ymm0, (LR_VECTOR_OFFSET)(%rsp)
+ vmovdqu %ymm1, (LR_VECTOR_OFFSET + VECTOR_SIZE)(%rsp)
+ vmovdqu %ymm2, (LR_VECTOR_OFFSET + VECTOR_SIZE*2)(%rsp)
+ vmovdqu %ymm3, (LR_VECTOR_OFFSET + VECTOR_SIZE*3)(%rsp)
+ vmovdqu %ymm4, (LR_VECTOR_OFFSET + VECTOR_SIZE*4)(%rsp)
+ vmovdqu %ymm5, (LR_VECTOR_OFFSET + VECTOR_SIZE*5)(%rsp)
+ vmovdqu %ymm6, (LR_VECTOR_OFFSET + VECTOR_SIZE*6)(%rsp)
+ vmovdqu %ymm7, (LR_VECTOR_OFFSET + VECTOR_SIZE*7)(%rsp)
+
+ /* Save xmm0-xmm7 registers to detect if any of them are
+ changed by audit module. */
+ vmovdqa %xmm0, (LR_SIZE)(%rsp)
+ vmovdqa %xmm1, (LR_SIZE + XMM_SIZE)(%rsp)
+ vmovdqa %xmm2, (LR_SIZE + XMM_SIZE*2)(%rsp)
+ vmovdqa %xmm3, (LR_SIZE + XMM_SIZE*3)(%rsp)
+ vmovdqa %xmm4, (LR_SIZE + XMM_SIZE*4)(%rsp)
+ vmovdqa %xmm5, (LR_SIZE + XMM_SIZE*5)(%rsp)
+ vmovdqa %xmm6, (LR_SIZE + XMM_SIZE*6)(%rsp)
+ vmovdqa %xmm7, (LR_SIZE + XMM_SIZE*7)(%rsp)
+#endif
+
+ movq %rsp, %rcx # La_x86_64_regs pointer to %rcx.
+ movq 48(%rbx), %rdx # Load return address if needed.
+ movq 40(%rbx), %rsi # Copy args pushed by PLT in register.
+ movq 32(%rbx), %rdi # %rdi: link_map, %rsi: reloc_index
+ leaq 16(%rbx), %r8
+ call _dl_profile_fixup # Call resolver.
+
+ movq %rax, %r11 # Save return value.
+
+ movq 8(%rbx), %rax # Get back register content.
+ movq LR_RDX_OFFSET(%rsp), %rdx
+ movq LR_R8_OFFSET(%rsp), %r8
+ movq LR_R9_OFFSET(%rsp), %r9
+
+ movaps (LR_XMM_OFFSET)(%rsp), %xmm0
+ movaps (LR_XMM_OFFSET + XMM_SIZE)(%rsp), %xmm1
+ movaps (LR_XMM_OFFSET + XMM_SIZE*2)(%rsp), %xmm2
+ movaps (LR_XMM_OFFSET + XMM_SIZE*3)(%rsp), %xmm3
+ movaps (LR_XMM_OFFSET + XMM_SIZE*4)(%rsp), %xmm4
+ movaps (LR_XMM_OFFSET + XMM_SIZE*5)(%rsp), %xmm5
+ movaps (LR_XMM_OFFSET + XMM_SIZE*6)(%rsp), %xmm6
+ movaps (LR_XMM_OFFSET + XMM_SIZE*7)(%rsp), %xmm7
+
+#ifdef RESTORE_AVX
+ /* Check if any xmm0-xmm7 registers are changed by audit
+ module. */
+ vpcmpeqq (LR_SIZE)(%rsp), %xmm0, %xmm8
+ vpmovmskb %xmm8, %esi
+ cmpl $0xffff, %esi
+ je 2f
+ vmovdqa %xmm0, (LR_VECTOR_OFFSET)(%rsp)
+ jmp 1f
+2: vmovdqu (LR_VECTOR_OFFSET)(%rsp), %ymm0
+ vmovdqa %xmm0, (LR_XMM_OFFSET)(%rsp)
+
+1: vpcmpeqq (LR_SIZE + XMM_SIZE)(%rsp), %xmm1, %xmm8
+ vpmovmskb %xmm8, %esi
+ cmpl $0xffff, %esi
+ je 2f
+ vmovdqa %xmm1, (LR_VECTOR_OFFSET + VECTOR_SIZE)(%rsp)
+ jmp 1f
+2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE)(%rsp), %ymm1
+ vmovdqa %xmm1, (LR_XMM_OFFSET + XMM_SIZE)(%rsp)
+
+1: vpcmpeqq (LR_SIZE + XMM_SIZE*2)(%rsp), %xmm2, %xmm8
+ vpmovmskb %xmm8, %esi
+ cmpl $0xffff, %esi
+ je 2f
+ vmovdqa %xmm2, (LR_VECTOR_OFFSET + VECTOR_SIZE*2)(%rsp)
+ jmp 1f
+2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*2)(%rsp), %ymm2
+ vmovdqa %xmm2, (LR_XMM_OFFSET + XMM_SIZE*2)(%rsp)
+
+1: vpcmpeqq (LR_SIZE + XMM_SIZE*3)(%rsp), %xmm3, %xmm8
+ vpmovmskb %xmm8, %esi
+ cmpl $0xffff, %esi
+ je 2f
+ vmovdqa %xmm3, (LR_VECTOR_OFFSET + VECTOR_SIZE*3)(%rsp)
+ jmp 1f
+2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*3)(%rsp), %ymm3
+ vmovdqa %xmm3, (LR_XMM_OFFSET + XMM_SIZE*3)(%rsp)
+
+1: vpcmpeqq (LR_SIZE + XMM_SIZE*4)(%rsp), %xmm4, %xmm8
+ vpmovmskb %xmm8, %esi
+ cmpl $0xffff, %esi
+ je 2f
+ vmovdqa %xmm4, (LR_VECTOR_OFFSET + VECTOR_SIZE*4)(%rsp)
+ jmp 1f
+2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*4)(%rsp), %ymm4
+ vmovdqa %xmm4, (LR_XMM_OFFSET + XMM_SIZE*4)(%rsp)
+
+1: vpcmpeqq (LR_SIZE + XMM_SIZE*5)(%rsp), %xmm5, %xmm8
+ vpmovmskb %xmm8, %esi
+ cmpl $0xffff, %esi
+ je 2f
+ vmovdqa %xmm5, (LR_VECTOR_OFFSET + VECTOR_SIZE*5)(%rsp)
+ jmp 1f
+2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*5)(%rsp), %ymm5
+ vmovdqa %xmm5, (LR_XMM_OFFSET + XMM_SIZE*5)(%rsp)
+
+1: vpcmpeqq (LR_SIZE + XMM_SIZE*6)(%rsp), %xmm6, %xmm8
+ vpmovmskb %xmm8, %esi
+ cmpl $0xffff, %esi
+ je 2f
+ vmovdqa %xmm6, (LR_VECTOR_OFFSET + VECTOR_SIZE*6)(%rsp)
+ jmp 1f
+2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*6)(%rsp), %ymm6
+ vmovdqa %xmm6, (LR_XMM_OFFSET + XMM_SIZE*6)(%rsp)
+
+1: vpcmpeqq (LR_SIZE + XMM_SIZE*7)(%rsp), %xmm7, %xmm8
+ vpmovmskb %xmm8, %esi
+ cmpl $0xffff, %esi
+ je 2f
+ vmovdqa %xmm7, (LR_VECTOR_OFFSET + VECTOR_SIZE*7)(%rsp)
+ jmp 1f
+2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*7)(%rsp), %ymm7
+ vmovdqa %xmm7, (LR_XMM_OFFSET + XMM_SIZE*7)(%rsp)
+
+1:
+#endif
+ movq 16(%rbx), %r10 # Anything in framesize?
+ testq %r10, %r10
+ jns 3f
+
+ /* There's nothing in the frame size, so there
+ will be no call to the _dl_call_pltexit. */
+
+ /* Get back registers content. */
+ movq LR_RCX_OFFSET(%rsp), %rcx
+ movq LR_RSI_OFFSET(%rsp), %rsi
+ movq LR_RDI_OFFSET(%rsp), %rdi
+
+ movq %rbx, %rsp
+ movq (%rsp), %rbx
+ cfi_restore(rbx)
+ cfi_def_cfa_register(%rsp)
+
+ addq $48, %rsp # Adjust the stack to the return value
+ # (eats the reloc index and link_map)
+ cfi_adjust_cfa_offset(-48)
+ jmp *%r11 # Jump to function address.
+
+3:
+ cfi_adjust_cfa_offset(48)
+ cfi_rel_offset(%rbx, 0)
+ cfi_def_cfa_register(%rbx)
+
+ /* At this point we need to prepare new stack for the function
+ which has to be called. We copy the original stack to a
+ temporary buffer of the size specified by the 'framesize'
+ returned from _dl_profile_fixup */
+
+ leaq LR_RSP_OFFSET(%rbx), %rsi # stack
+ addq $8, %r10
+ andq $0xfffffffffffffff0, %r10
+ movq %r10, %rcx
+ subq %r10, %rsp
+ movq %rsp, %rdi
+ shrq $3, %rcx
+ rep
+ movsq
+
+ movq 24(%rdi), %rcx # Get back register content.
+ movq 32(%rdi), %rsi
+ movq 40(%rdi), %rdi
+
+ call *%r11
+
+ mov 24(%rbx), %rsp # Drop the copied stack content
+
+ /* Now we have to prepare the La_x86_64_retval structure for the
+ _dl_call_pltexit. The La_x86_64_regs is being pointed by rsp now,
+ so we just need to allocate the sizeof(La_x86_64_retval) space on
+ the stack, since the alignment has already been taken care of. */
+# ifdef RESTORE_AVX
+ /* sizeof(La_x86_64_retval). Need extra space for 2 SSE
+ registers to detect if xmm0/xmm1 registers are changed
+ by audit module. */
+ subq $(LRV_SIZE + XMM_SIZE*2), %rsp
+# else
+ subq $LRV_SIZE, %rsp # sizeof(La_x86_64_retval)
+# endif
+ movq %rsp, %rcx # La_x86_64_retval argument to %rcx.
+
+ /* Fill in the La_x86_64_retval structure. */
+ movq %rax, LRV_RAX_OFFSET(%rcx)
+ movq %rdx, LRV_RDX_OFFSET(%rcx)
+
+ movaps %xmm0, LRV_XMM0_OFFSET(%rcx)
+ movaps %xmm1, LRV_XMM1_OFFSET(%rcx)
+
+# ifdef RESTORE_AVX
+ /* This is to support AVX audit modules. */
+ vmovdqu %ymm0, LRV_VECTOR0_OFFSET(%rcx)
+ vmovdqu %ymm1, LRV_VECTOR1_OFFSET(%rcx)
+
+ /* Save xmm0/xmm1 registers to detect if they are changed
+ by audit module. */
+ vmovdqa %xmm0, (LRV_SIZE)(%rcx)
+ vmovdqa %xmm1, (LRV_SIZE + XMM_SIZE)(%rcx)
+# endif
+
+ fstpt LRV_ST0_OFFSET(%rcx)
+ fstpt LRV_ST1_OFFSET(%rcx)
+
+ movq 24(%rbx), %rdx # La_x86_64_regs argument to %rdx.
+ movq 40(%rbx), %rsi # Copy args pushed by PLT in register.
+ movq 32(%rbx), %rdi # %rdi: link_map, %rsi: reloc_index
+ call _dl_call_pltexit
+
+ /* Restore return registers. */
+ movq LRV_RAX_OFFSET(%rsp), %rax
+ movq LRV_RDX_OFFSET(%rsp), %rdx
+
+ movaps LRV_XMM0_OFFSET(%rsp), %xmm0
+ movaps LRV_XMM1_OFFSET(%rsp), %xmm1
+
+# ifdef RESTORE_AVX
+ /* Check if xmm0/xmm1 registers are changed by audit module. */
+ vpcmpeqq (LRV_SIZE)(%rsp), %xmm0, %xmm2
+ vpmovmskb %xmm2, %esi
+ cmpl $0xffff, %esi
+ jne 1f
+ vmovdqu LRV_VECTOR0_OFFSET(%rsp), %ymm0
+
+1: vpcmpeqq (LRV_SIZE + XMM_SIZE)(%rsp), %xmm1, %xmm2
+ vpmovmskb %xmm2, %esi
+ cmpl $0xffff, %esi
+ jne 1f
+ vmovdqu LRV_VECTOR1_OFFSET(%rsp), %ymm1
+
+1:
+# endif
+
+ fldt LRV_ST1_OFFSET(%rsp)
+ fldt LRV_ST0_OFFSET(%rsp)
+
+ movq %rbx, %rsp
+ movq (%rsp), %rbx
+ cfi_restore(rbx)
+ cfi_def_cfa_register(%rsp)
+
+ addq $48, %rsp # Adjust the stack to the return value
+ # (eats the reloc index and link_map)
+ cfi_adjust_cfa_offset(-48)
+ retq
diff --git a/sysdeps/x86_64/elf/configure b/sysdeps/x86_64/elf/configure
index 7a2e3004a5..0b93b0424e 100755..100644
--- a/sysdeps/x86_64/elf/configure
+++ b/sysdeps/x86_64/elf/configure
@@ -3,10 +3,10 @@
if test "$usetls" != no; then
# Check for support of thread-local storage handling in assembler and linker.
-{ echo "$as_me:$LINENO: checking for x86-64 TLS support" >&5
-echo $ECHO_N "checking for x86-64 TLS support... $ECHO_C" >&6; }
+{ $as_echo "$as_me:$LINENO: checking for x86-64 TLS support" >&5
+$as_echo_n "checking for x86-64 TLS support... " >&6; }
if test "${libc_cv_x86_64_tls+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+ $as_echo_n "(cached) " >&6
else
cat > conftest.s <<\EOF
.section ".tdata", "awT", @progbits
@@ -25,7 +25,7 @@ if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_x86_64_tls=yes
else
@@ -33,8 +33,8 @@ else
fi
rm -f conftest*
fi
-{ echo "$as_me:$LINENO: result: $libc_cv_x86_64_tls" >&5
-echo "${ECHO_T}$libc_cv_x86_64_tls" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_x86_64_tls" >&5
+$as_echo "$libc_cv_x86_64_tls" >&6; }
if test $libc_cv_x86_64_tls = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TLS_SUPPORT 1
@@ -47,3 +47,28 @@ cat >>confdefs.h <<\_ACEOF
#define PI_STATIC_AND_HIDDEN 1
_ACEOF
+
+{ $as_echo "$as_me:$LINENO: checking for AVX support" >&5
+$as_echo_n "checking for AVX support... " >&6; }
+if test "${libc_cv_cc_avx+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if { ac_try='${CC-cc} -mavx -xc /dev/null -S -o /dev/null'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libc_cv_cc_avx=yes
+else
+ libc_cv_cc_avx=no
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $libc_cv_cc_avx" >&5
+$as_echo "$libc_cv_cc_avx" >&6; }
+if test $libc_cv_cc_avx = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_AVX_SUPPORT 1
+_ACEOF
+
+fi
diff --git a/sysdeps/x86_64/elf/configure.in b/sysdeps/x86_64/elf/configure.in
index 9cb59d009c..14d1875302 100644
--- a/sysdeps/x86_64/elf/configure.in
+++ b/sysdeps/x86_64/elf/configure.in
@@ -32,3 +32,14 @@ fi
dnl It is always possible to access static and hidden symbols in an
dnl position independent way.
AC_DEFINE(PI_STATIC_AND_HIDDEN)
+
+dnl Check if -mavx works.
+AC_CACHE_CHECK(for AVX support, libc_cv_cc_avx, [dnl
+if AC_TRY_COMMAND([${CC-cc} -mavx -xc /dev/null -S -o /dev/null]); then
+ libc_cv_cc_avx=yes
+else
+ libc_cv_cc_avx=no
+fi])
+if test $libc_cv_cc_avx = yes; then
+ AC_DEFINE(HAVE_AVX_SUPPORT)
+fi
diff --git a/sysdeps/x86_64/fpu/bits/mathinline.h b/sysdeps/x86_64/fpu/bits/mathinline.h
index e8a919fe92..dc58f67d6c 100644
--- a/sysdeps/x86_64/fpu/bits/mathinline.h
+++ b/sysdeps/x86_64/fpu/bits/mathinline.h
@@ -1,5 +1,5 @@
/* Inline math functions for x86-64.
- Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 2002.
@@ -22,6 +22,8 @@
# error "Never use <bits/mathinline.h> directly; include <math.h> instead."
#endif
+#include <bits/wordsize.h>
+
#ifndef __extern_inline
# define __MATH_INLINE __inline
#else
@@ -35,14 +37,26 @@
__MATH_INLINE int
__NTH (__signbitf (float __x))
{
+#if __WORDSIZE == 32
__extension__ union { float __f; int __i; } __u = { __f: __x };
return __u.__i < 0;
+#else
+ int __m;
+ __asm ("pmovmskb %1, %0" : "=r" (__m) : "x" (__x));
+ return __m & 0x8;
+#endif
}
__MATH_INLINE int
__NTH (__signbit (double __x))
{
+#if __WORDSIZE == 32
__extension__ union { double __d; int __i[2]; } __u = { __d: __x };
return __u.__i[1] < 0;
+#else
+ int __m;
+ __asm ("pmovmskb %1, %0" : "=r" (__m) : "x" (__x));
+ return __m & 0x80;
+#endif
}
__MATH_INLINE int
__NTH (__signbitl (long double __x))
diff --git a/sysdeps/x86_64/fpu/math_private.h b/sysdeps/x86_64/fpu/math_private.h
index 4febcbb5ec..4be753654a 100644
--- a/sysdeps/x86_64/fpu/math_private.h
+++ b/sysdeps/x86_64/fpu/math_private.h
@@ -18,4 +18,41 @@ do \
while (0)
#include <math/math_private.h>
+
+/* We can do a few things better on x86-64. */
+
+/* Direct movement of float into integer register. */
+#undef EXTRACT_WORDS64
+#define EXTRACT_WORDS64(i,d) \
+do { \
+ long int i_; \
+ asm ("movd %1, %0" : "=rm" (i_) : "x" (d)); \
+ (i) = i_; \
+} while (0)
+
+/* And the reverse. */
+#undef INSERT_WORDS64
+#define INSERT_WORDS64(d,i) \
+do { \
+ long int i_ = i; \
+ asm ("movd %1, %0" : "=x" (d) : "rm" (i_)); \
+} while (0)
+
+/* Direct movement of float into integer register. */
+#undef GET_FLOAT_WORD
+#define GET_FLOAT_WORD(i,d) \
+do { \
+ int i_; \
+ asm ("movd %1, %0" : "=rm" (i_) : "x" (d)); \
+ (i) = i_; \
+} while (0)
+
+/* And the reverse. */
+#undef SET_FLOAT_WORD
+#define SET_FLOAT_WORD(d,i) \
+do { \
+ int i_ = i; \
+ asm ("movd %1, %0" : "=x" (d) : "rm" (i_)); \
+} while (0)
+
#endif
diff --git a/sysdeps/x86_64/fpu/s_cosl.S b/sysdeps/x86_64/fpu/s_cosl.S
index 6636fb5ec6..6921cda567 100644
--- a/sysdeps/x86_64/fpu/s_cosl.S
+++ b/sysdeps/x86_64/fpu/s_cosl.S
@@ -4,15 +4,22 @@
*
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
* Adapted for x86-64 by Andreas Jaeger <aj@suse.de>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
-RCSID("$NetBSD: $")
-
ENTRY(__cosl)
fldt 8(%rsp)
- fcos
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fcos
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -28,5 +35,8 @@ ENTRY(__cosl)
fstp %st(1)
fcos
ret
+3: call __errno_location@PLT
+ movl $EDOM, (%rax)
+ jmp 4b
END (__cosl)
weak_alias (__cosl, cosl)
diff --git a/sysdeps/x86_64/fpu/s_expm1l.S b/sysdeps/x86_64/fpu/s_expm1l.S
index 05a1bfcce1..c0b93e94a9 100644
--- a/sysdeps/x86_64/fpu/s_expm1l.S
+++ b/sysdeps/x86_64/fpu/s_expm1l.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of exp(x)-1.
- Copyright (C) 1996, 1997, 2001, 2002, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1996,1997,2001,2002,2008,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
@@ -51,7 +51,7 @@ ENTRY(__expm1l)
movzwl 8+8(%rsp), %eax // load sign bit and 15-bit exponent
xorb $0x80, %ah // invert sign bit (now 1 is "positive")
cmpl $0xc006, %eax // is num positive and exp >= 6 (number is >= 128.0)?
- jae __ieee754_expl // (if num is denormal, it is at least >= 64.0)
+ jae __expl // (if num is denormal, it is at least >= 64.0)
fldt 8(%rsp) // x
fxam // Is NaN or +-Inf?
@@ -76,7 +76,7 @@ ENTRY(__expm1l)
fscale // 2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x)
fsubrl MO(one) // 1-2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x)
fstp %st(1) // 1-2^int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x)
- fsubrp %st, %st(1) // 2^(log2(e)*x)
+ fsubrp %st, %st(1) // 2^(log2(e)*x)-1
ret
2: testl $0x200, %eax // Test sign.
diff --git a/sysdeps/x86_64/fpu/s_scalbln.c b/sysdeps/x86_64/fpu/s_scalbln.c
new file mode 100644
index 0000000000..1009713fbc
--- /dev/null
+++ b/sysdeps/x86_64/fpu/s_scalbln.c
@@ -0,0 +1,2 @@
+/* Nothing to do. This function is the same as scalbn. So we define an
+ alias. */
diff --git a/sysdeps/x86_64/fpu/s_scalbn.c b/sysdeps/x86_64/fpu/s_scalbn.c
new file mode 100644
index 0000000000..74d34655ad
--- /dev/null
+++ b/sysdeps/x86_64/fpu/s_scalbn.c
@@ -0,0 +1,9 @@
+#define scalbln __renamed_scalbln
+#define __scalbln __renamed___scalbln
+
+#include <sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c>
+
+#undef scalbln
+#undef __scalbln
+strong_alias (__scalbn, __scalbln)
+weak_alias (__scalbn, scalbln)
diff --git a/sysdeps/alpha/fpu/s_copysignf.c b/sysdeps/x86_64/fpu/s_signbit.S
index f4b846bcbe..0bfd62e30d 100644
--- a/sysdeps/alpha/fpu/s_copysignf.c
+++ b/sysdeps/x86_64/fpu/s_signbit.S
@@ -1,6 +1,7 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Return nonzero value if number is negative.
+ Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Richard Henderson.
+ Contributed by Ulrich Drepper <drepper@redha.com>, 2009.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -17,13 +18,10 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <math.h>
+#include <sysdep.h>
-float
-__copysignf (float x, float y)
-{
- __asm ("cpys %1, %2, %0" : "=f" (x) : "f" (y), "f" (x));
- return x;
-}
-
-weak_alias (__copysignf, copysignf)
+ENTRY(__signbit)
+ pmovmskb %xmm0, %eax
+ andl $0x80, %eax
+ ret
+END(__signbit)
diff --git a/sysdeps/mach/hurd/alpha/static-start.S b/sysdeps/x86_64/fpu/s_signbitf.S
index a31d0d097a..f0681d0124 100644
--- a/sysdeps/mach/hurd/alpha/static-start.S
+++ b/sysdeps/x86_64/fpu/s_signbitf.S
@@ -1,6 +1,7 @@
-/* Startup code for statically linked Hurd/Alpha binaries.
- Copyright (C) 2002 Free Software Foundation, Inc.
+/* Return nonzero value if number is negative.
+ Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redha.com>, 2009.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -19,12 +20,8 @@
#include <sysdep.h>
- .text
- .align 3
- .globl _start
- .type _start,@function
-_start:
- jsr ra, _hurd_stack_setup
-
-#define _start _start1
-#include <sysdeps/alpha/elf/start.S>
+ENTRY(__signbitf)
+ pmovmskb %xmm0, %eax
+ andl $0x8, %eax
+ ret
+END(__signbitf)
diff --git a/sysdeps/x86_64/fpu/s_sinl.S b/sysdeps/x86_64/fpu/s_sinl.S
index 181f112f4f..79fc4af95b 100644
--- a/sysdeps/x86_64/fpu/s_sinl.S
+++ b/sysdeps/x86_64/fpu/s_sinl.S
@@ -4,13 +4,22 @@
*
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
* Adapted for x86-64 by Andreas Jaeger <aj@suse.de>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
ENTRY(__sinl)
fldt 8(%rsp)
- fsin
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fsin
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -26,5 +35,8 @@ ENTRY(__sinl)
fstp %st(1)
fsin
ret
+3: call __errno_location@PLT
+ movl $EDOM, (%rax)
+ jmp 4b
END (__sinl)
weak_alias (__sinl, sinl)
diff --git a/sysdeps/x86_64/fpu/s_tanl.S b/sysdeps/x86_64/fpu/s_tanl.S
index 674e908acc..6427e3f6f0 100644
--- a/sysdeps/x86_64/fpu/s_tanl.S
+++ b/sysdeps/x86_64/fpu/s_tanl.S
@@ -4,15 +4,24 @@
*
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
* Adapted for x86-64 by Andreas Jaeger <aj@suse.de>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
RCSID("$NetBSD: $")
ENTRY(__tanl)
fldt 8(%rsp)
- fptan
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fptan
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -29,5 +38,8 @@ ENTRY(__tanl)
fptan
fstp %st(0)
ret
+3: call __errno_location@PLT
+ movl $EDOM, (%rax)
+ jmp 4b
END (__tanl)
weak_alias (__tanl, tanl)
diff --git a/sysdeps/x86_64/link-defines.sym b/sysdeps/x86_64/link-defines.sym
new file mode 100644
index 0000000000..1694d883ad
--- /dev/null
+++ b/sysdeps/x86_64/link-defines.sym
@@ -0,0 +1,28 @@
+#include "link.h"
+#include <stddef.h>
+
+--
+VECTOR_SIZE sizeof (La_x86_64_vector)
+XMM_SIZE sizeof (La_x86_64_xmm)
+
+LR_SIZE sizeof (struct La_x86_64_regs)
+LR_RDX_OFFSET offsetof (struct La_x86_64_regs, lr_rdx)
+LR_R8_OFFSET offsetof (struct La_x86_64_regs, lr_r8)
+LR_R9_OFFSET offsetof (struct La_x86_64_regs, lr_r9)
+LR_RCX_OFFSET offsetof (struct La_x86_64_regs, lr_rcx)
+LR_RSI_OFFSET offsetof (struct La_x86_64_regs, lr_rsi)
+LR_RDI_OFFSET offsetof (struct La_x86_64_regs, lr_rdi)
+LR_RBP_OFFSET offsetof (struct La_x86_64_regs, lr_rbp)
+LR_RSP_OFFSET offsetof (struct La_x86_64_regs, lr_rsp)
+LR_XMM_OFFSET offsetof (struct La_x86_64_regs, lr_xmm)
+LR_VECTOR_OFFSET offsetof (struct La_x86_64_regs, lr_vector)
+
+LRV_SIZE sizeof (struct La_x86_64_retval)
+LRV_RAX_OFFSET offsetof (struct La_x86_64_retval, lrv_rax)
+LRV_RDX_OFFSET offsetof (struct La_x86_64_retval, lrv_rdx)
+LRV_XMM0_OFFSET offsetof (struct La_x86_64_retval, lrv_xmm0)
+LRV_XMM1_OFFSET offsetof (struct La_x86_64_retval, lrv_xmm1)
+LRV_ST0_OFFSET offsetof (struct La_x86_64_retval, lrv_st0)
+LRV_ST1_OFFSET offsetof (struct La_x86_64_retval, lrv_st1)
+LRV_VECTOR0_OFFSET offsetof (struct La_x86_64_retval, lrv_vector0)
+LRV_VECTOR1_OFFSET offsetof (struct La_x86_64_retval, lrv_vector1)
diff --git a/sysdeps/x86_64/lshift.S b/sysdeps/x86_64/lshift.S
new file mode 100644
index 0000000000..5ac66f0a36
--- /dev/null
+++ b/sysdeps/x86_64/lshift.S
@@ -0,0 +1,60 @@
+/* AMD64 __mpn_lshift --
+ Copyright 2004, 2006 Free Software Foundation, Inc.
+ This file is part of the GNU MP Library.
+
+ The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA. */
+
+#include "sysdep.h"
+#include "asm-syntax.h"
+
+
+ .text
+ENTRY (__mpn_lshift)
+ movq -8(%rsi,%rdx,8), %mm7
+ movd %ecx, %mm1
+ movl $64, %eax
+ subl %ecx, %eax
+ movd %eax, %mm0
+ movq %mm7, %mm3
+ psrlq %mm0, %mm7
+ movd %mm7, %rax
+ subq $2, %rdx
+ jl L(endo)
+ .p2align 2
+L(loop):
+ movq (%rsi,%rdx,8), %mm6
+ movq %mm6, %mm2
+ psrlq %mm0, %mm6
+ psllq %mm1, %mm3
+ por %mm6, %mm3
+ movq %mm3, 8(%rdi,%rdx,8)
+ je L(ende)
+ movq -8(%rsi,%rdx,8), %mm7
+ movq %mm7, %mm3
+ psrlq %mm0, %mm7
+ psllq %mm1, %mm2
+ por %mm7, %mm2
+ movq %mm2, (%rdi,%rdx,8)
+ subq $2, %rdx
+ jge L(loop)
+L(endo):
+ movq %mm3, %mm2
+L(ende):
+ psllq %mm1, %mm2
+ movq %mm2, (%rdi)
+ emms
+ ret
+END (__mpn_lshift)
diff --git a/sysdeps/x86_64/memchr.S b/sysdeps/x86_64/memchr.S
new file mode 100644
index 0000000000..6082aa7f76
--- /dev/null
+++ b/sysdeps/x86_64/memchr.S
@@ -0,0 +1,68 @@
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@redhat.com>.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+
+
+ .text
+ENTRY (memchr)
+ movd %esi, %xmm1
+ movq %rdi, %rcx
+ punpcklbw %xmm1, %xmm1
+ andq $~15, %rdi
+ testq %rdx, %rdx
+ punpcklbw %xmm1, %xmm1
+ jz 3f
+ orl $0xffffffff, %esi
+ movdqa (%rdi), %xmm0
+ pshufd $0, %xmm1, %xmm1
+ subq %rdi, %rcx
+ pcmpeqb %xmm1, %xmm0
+ addq %rcx, %rdx
+ shl %cl, %esi
+ pmovmskb %xmm0, %ecx
+ andl %esi, %ecx
+ movl $16, %esi
+ jnz 1f
+ cmpq %rsi, %rdx
+ jbe 3f
+
+2: movdqa (%rdi,%rsi), %xmm0
+ leaq 16(%rsi), %rsi
+ pcmpeqb %xmm1, %xmm0
+ pmovmskb %xmm0, %ecx
+ testl %ecx, %ecx
+ jnz 1f
+ cmpq %rsi, %rdx
+ ja 2b
+
+3: xorl %eax, %eax
+ ret
+
+1: leaq -16(%rdi,%rsi), %rax
+ bsfl %ecx, %ecx
+ addq %rcx, %rax
+ leaq -16(%rsi,%rcx), %rsi
+ cmpq %rsi, %rdx
+ jbe 3b
+ ret
+END (memchr)
+
+strong_alias (memchr, __memchr)
+libc_hidden_builtin_def (memchr)
diff --git a/sysdeps/x86_64/memcmp.S b/sysdeps/x86_64/memcmp.S
new file mode 100644
index 0000000000..a9fe13ae58
--- /dev/null
+++ b/sysdeps/x86_64/memcmp.S
@@ -0,0 +1,359 @@
+/* memcmp with SSE2
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+
+ .text
+ENTRY (memcmp)
+ test %rdx, %rdx
+ jz L(finz)
+ cmpq $1, %rdx
+ jle L(finr1b)
+ subq %rdi, %rsi
+ movq %rdx, %r10
+ cmpq $32, %r10
+ jge L(gt32)
+ /* Handle small chunks and last block of less than 32 bytes. */
+L(small):
+ testq $1, %r10
+ jz L(s2b)
+ movzbl (%rdi), %eax
+ movzbl (%rdi, %rsi), %edx
+ subq $1, %r10
+ je L(finz1)
+ addq $1, %rdi
+ subl %edx, %eax
+ jnz L(exit)
+L(s2b):
+ testq $2, %r10
+ jz L(s4b)
+ movzwl (%rdi), %eax
+ movzwl (%rdi, %rsi), %edx
+ subq $2, %r10
+ je L(fin2_7)
+ addq $2, %rdi
+ cmpl %edx, %eax
+ jnz L(fin2_7)
+L(s4b):
+ testq $4, %r10
+ jz L(s8b)
+ movl (%rdi), %eax
+ movl (%rdi, %rsi), %edx
+ subq $4, %r10
+ je L(fin2_7)
+ addq $4, %rdi
+ cmpl %edx, %eax
+ jnz L(fin2_7)
+L(s8b):
+ testq $8, %r10
+ jz L(s16b)
+ movq (%rdi), %rax
+ movq (%rdi, %rsi), %rdx
+ subq $8, %r10
+ je L(fin2_7)
+ addq $8, %rdi
+ cmpq %rdx, %rax
+ jnz L(fin2_7)
+L(s16b):
+ movdqu (%rdi), %xmm1
+ movdqu (%rdi, %rsi), %xmm0
+ pcmpeqb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ xorl %eax, %eax
+ subl $0xffff, %edx
+ jz L(finz)
+ bsfl %edx, %ecx
+ leaq (%rdi, %rcx), %rcx
+ movzbl (%rcx), %eax
+ movzbl (%rsi, %rcx), %edx
+ jmp L(finz1)
+
+ .p2align 4,, 4
+L(finr1b):
+ movzbl (%rdi), %eax
+ movzbl (%rsi), %edx
+L(finz1):
+ subl %edx, %eax
+L(exit):
+ ret
+
+ .p2align 4,, 4
+L(fin2_7):
+ cmpq %rdx, %rax
+ jz L(finz)
+ movq %rax, %r11
+ subq %rdx, %r11
+ bsfq %r11, %rcx
+ sarq $3, %rcx
+ salq $3, %rcx
+ sarq %cl, %rax
+ movzbl %al, %eax
+ sarq %cl, %rdx
+ movzbl %dl, %edx
+ subl %edx, %eax
+ ret
+
+ .p2align 4,, 4
+L(finz):
+ xorl %eax, %eax
+ ret
+
+ /* For blocks bigger than 32 bytes
+ 1. Advance one of the addr pointer to be 16B aligned.
+ 2. Treat the case of both addr pointers aligned to 16B
+ separately to avoid movdqu.
+ 3. Handle any blocks of greater than 64 consecutive bytes with
+ unrolling to reduce branches.
+ 4. At least one addr pointer is 16B aligned, use memory version
+ of pcmbeqb.
+ */
+ .p2align 4,, 4
+L(gt32):
+ movq %rdx, %r11
+ addq %rdi, %r11
+ movq %rdi, %r8
+
+ andq $15, %r8
+ jz L(16am)
+ /* Both pointers may be misaligned. */
+ movdqu (%rdi), %xmm1
+ movdqu (%rdi, %rsi), %xmm0
+ pcmpeqb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ neg %r8
+ leaq 16(%rdi, %r8), %rdi
+L(16am):
+ /* Handle two 16B aligned pointers separately. */
+ testq $15, %rsi
+ jz L(ATR)
+ testq $16, %rdi
+ jz L(A32)
+ movdqu (%rdi, %rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+L(A32):
+ movq %r11, %r10
+ andq $-32, %r10
+ cmpq %r10, %rdi
+ jge L(mt16)
+ /* Pre-unroll to be ready for unrolled 64B loop. */
+ testq $32, %rdi
+ jz L(A64)
+ movdqu (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+ movdqu (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+L(A64):
+ movq %r11, %r10
+ andq $-64, %r10
+ cmpq %r10, %rdi
+ jge L(mt32)
+
+L(A64main):
+ movdqu (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+ movdqu (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+ movdqu (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+ movdqu (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+ cmpq %rdi, %r10
+ jne L(A64main)
+
+L(mt32):
+ movq %r11, %r10
+ andq $-32, %r10
+ cmpq %r10, %rdi
+ jge L(mt16)
+
+L(A32main):
+ movdqu (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+ movdqu (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+ cmpq %rdi, %r10
+ jne L(A32main)
+L(mt16):
+ subq %rdi, %r11
+ je L(finz)
+ movq %r11, %r10
+ jmp L(small)
+
+ .p2align 4,, 4
+L(neq):
+ bsfl %edx, %ecx
+ movzbl (%rdi, %rcx), %eax
+ addq %rdi, %rsi
+ movzbl (%rsi,%rcx), %edx
+ jmp L(finz1)
+
+ .p2align 4,, 4
+L(ATR):
+ movq %r11, %r10
+ andq $-32, %r10
+ cmpq %r10, %rdi
+ jge L(mt16)
+ testq $16, %rdi
+ jz L(ATR32)
+
+ movdqa (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+ cmpq %rdi, %r10
+ je L(mt16)
+
+L(ATR32):
+ movq %r11, %r10
+ andq $-64, %r10
+ testq $32, %rdi
+ jz L(ATR64)
+
+ movdqa (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+ movdqa (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+L(ATR64):
+ cmpq %rdi, %r10
+ je L(mt32)
+
+L(ATR64main):
+ movdqa (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+ movdqa (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+ movdqa (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+ movdqa (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+ cmpq %rdi, %r10
+ jne L(ATR64main)
+
+ movq %r11, %r10
+ andq $-32, %r10
+ cmpq %r10, %rdi
+ jge L(mt16)
+
+L(ATR32res):
+ movdqa (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+ movdqa (%rdi,%rsi), %xmm0
+ pcmpeqb (%rdi), %xmm0
+ pmovmskb %xmm0, %edx
+ subl $0xffff, %edx
+ jnz L(neq)
+ addq $16, %rdi
+
+ cmpq %r10, %rdi
+ jne L(ATR32res)
+
+ subq %rdi, %r11
+ je L(finz)
+ movq %r11, %r10
+ jmp L(small)
+ /* Align to 16byte to improve instruction fetch. */
+ .p2align 4,, 4
+END(memcmp)
+
+#undef bcmp
+weak_alias (memcmp, bcmp)
+libc_hidden_builtin_def (memcmp)
diff --git a/sysdeps/x86_64/mp_clz_tab.c b/sysdeps/x86_64/mp_clz_tab.c
new file mode 100644
index 0000000000..7b13a394da
--- /dev/null
+++ b/sysdeps/x86_64/mp_clz_tab.c
@@ -0,0 +1 @@
+/* __clz_tab not needed on x86-64. */
diff --git a/sysdeps/x86_64/mul_1.S b/sysdeps/x86_64/mul_1.S
new file mode 100644
index 0000000000..978916b72c
--- /dev/null
+++ b/sysdeps/x86_64/mul_1.S
@@ -0,0 +1,42 @@
+/* AMD64 __mpn_mul_1 -- Multiply a limb vector with a limb and store
+ the result in a second limb vector.
+ Copyright (C) 2004 Free Software Foundation, Inc.
+ This file is part of the GNU MP Library.
+
+ The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA. */
+
+#include <sysdep.h>
+#include "asm-syntax.h"
+
+ .text
+ENTRY (__mpn_mul_1)
+ movq %rdx, %r11
+ leaq (%rsi,%rdx,8), %rsi
+ leaq (%rdi,%rdx,8), %rdi
+ negq %r11
+ xorl %r8d, %r8d
+L(loop):
+ movq (%rsi,%r11,8), %rax
+ mulq %rcx
+ addq %r8, %rax
+ movl $0, %r8d
+ adcq %rdx, %r8
+ movq %rax, (%rdi,%r11,8)
+ incq %r11
+ jne L(loop)
+ movq %r8, %rax
+ ret
+END (__mpn_mul_1)
diff --git a/sysdeps/x86_64/multiarch/Makefile b/sysdeps/x86_64/multiarch/Makefile
new file mode 100644
index 0000000000..364e7bbbd2
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/Makefile
@@ -0,0 +1,17 @@
+ifeq ($(subdir),csu)
+aux += init-arch
+gen-as-const-headers += ifunc-defines.sym
+endif
+
+ifeq ($(subdir),string)
+sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \
+ strend-sse4
+ifeq (yes,$(config-cflags-sse4))
+sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c
+CFLAGS-strcspn-c.c += -msse4
+CFLAGS-strpbrk-c.c += -msse4
+CFLAGS-strspn-c.c += -msse4
+CFLAGS-strstr.c += -msse4
+CFLAGS-strcasestr.c += -msse4
+endif
+endif
diff --git a/sysdeps/x86_64/multiarch/Versions b/sysdeps/x86_64/multiarch/Versions
new file mode 100644
index 0000000000..59b185ac8d
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/Versions
@@ -0,0 +1,5 @@
+libc {
+ GLIBC_PRIVATE {
+ __get_cpu_features;
+ }
+}
diff --git a/sysdeps/x86_64/multiarch/ifunc-defines.sym b/sysdeps/x86_64/multiarch/ifunc-defines.sym
new file mode 100644
index 0000000000..eb1538abcc
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/ifunc-defines.sym
@@ -0,0 +1,20 @@
+#include "init-arch.h"
+#include <stddef.h>
+
+--
+
+CPU_FEATURES_SIZE sizeof (struct cpu_features)
+KIND_OFFSET offsetof (struct cpu_features, kind)
+CPUID_OFFSET offsetof (struct cpu_features, cpuid)
+CPUID_SIZE sizeof (struct cpuid_registers)
+CPUID_EAX_OFFSET offsetof (struct cpuid_registers, eax)
+CPUID_EBX_OFFSET offsetof (struct cpuid_registers, ebx)
+CPUID_ECX_OFFSET offsetof (struct cpuid_registers, ecx)
+CPUID_EDX_OFFSET offsetof (struct cpuid_registers, edx)
+FAMILY_OFFSET offsetof (struct cpu_features, family)
+MODEL_OFFSET offsetof (struct cpu_features, model)
+FEATURE_OFFSET offsetof (struct cpu_features, feature)
+FEATURE_SIZE sizeof (unsigned int)
+
+COMMON_CPUID_INDEX_1
+FEATURE_INDEX_1
diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c
new file mode 100644
index 0000000000..50b2a38fbd
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/init-arch.c
@@ -0,0 +1,105 @@
+/* Initialize CPU feature data.
+ This file is part of the GNU C Library.
+ Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@redhat.com>.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <cpuid.h>
+#include "init-arch.h"
+
+
+struct cpu_features __cpu_features attribute_hidden;
+
+
+static void
+get_common_indeces (void)
+{
+ __cpuid (1, __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax,
+ __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ebx,
+ __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx,
+ __cpu_features.cpuid[COMMON_CPUID_INDEX_1].edx);
+
+ unsigned int eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax;
+ __cpu_features.family = (eax >> 8) & 0x0f;
+ __cpu_features.model = (eax >> 4) & 0x0f;
+}
+
+
+void
+__init_cpu_features (void)
+{
+ unsigned int ebx;
+ unsigned int ecx;
+ unsigned int edx;
+
+ __cpuid (0, __cpu_features.max_cpuid, ebx, ecx, edx);
+
+ /* This spells out "GenuineIntel". */
+ if (ebx == 0x756e6547 && ecx == 0x6c65746e && edx == 0x49656e69)
+ {
+ __cpu_features.kind = arch_kind_intel;
+
+ get_common_indeces ();
+
+ unsigned int eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax;
+ unsigned int extended_family = (eax >> 20) & 0xff;
+ unsigned int extended_model = (eax >> 12) & 0xf0;
+ if (__cpu_features.family == 0x0f)
+ {
+ __cpu_features.family += extended_family;
+ __cpu_features.model += extended_model;
+ }
+ else if (__cpu_features.family == 0x06)
+ {
+ __cpu_features.model += extended_model;
+ switch (__cpu_features.model)
+ {
+ case 0x1a:
+ case 0x1e:
+ case 0x1f:
+ case 0x25:
+ case 0x2e:
+ case 0x2f:
+ /* Rep string instructions are fast on Intel Core i3, i5
+ and i7. */
+ __cpu_features.feature[index_Fast_Rep_String]
+ |= bit_Fast_Rep_String;
+ break;
+ }
+ }
+ }
+ /* This spells out "AuthenticAMD". */
+ else if (ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65)
+ {
+ __cpu_features.kind = arch_kind_amd;
+
+ get_common_indeces ();
+ }
+ else
+ __cpu_features.kind = arch_kind_other;
+}
+
+#undef __get_cpu_features
+
+const struct cpu_features *
+__get_cpu_features (void)
+{
+ if (__cpu_features.kind == arch_kind_unknown)
+ __init_cpu_features ();
+
+ return &__cpu_features;
+}
diff --git a/sysdeps/x86_64/multiarch/init-arch.h b/sysdeps/x86_64/multiarch/init-arch.h
new file mode 100644
index 0000000000..69492cb3bf
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/init-arch.h
@@ -0,0 +1,103 @@
+/* This file is part of the GNU C Library.
+ Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#define bit_Fast_Rep_String (1 << 0)
+
+#ifdef __ASSEMBLER__
+
+#include <ifunc-defines.h>
+
+#define bit_SSE2 (1 << 26)
+#define bit_SSSE3 (1 << 9)
+#define bit_SSE4_2 (1 << 20)
+
+#define index_SSE2 COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_EDX_OFFSET
+#define index_SSSE3 COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET
+#define index_SSE4_2 COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET
+
+#define index_Fast_Rep_String FEATURE_INDEX_1*FEATURE_SIZE
+
+#else /* __ASSEMBLER__ */
+
+#include <sys/param.h>
+
+enum
+ {
+ COMMON_CPUID_INDEX_1 = 0,
+ /* Keep the following line at the end. */
+ COMMON_CPUID_INDEX_MAX
+ };
+
+enum
+ {
+ FEATURE_INDEX_1 = 0,
+ /* Keep the following line at the end. */
+ FEATURE_INDEX_MAX
+ };
+
+extern struct cpu_features
+{
+ enum
+ {
+ arch_kind_unknown = 0,
+ arch_kind_intel,
+ arch_kind_amd,
+ arch_kind_other
+ } kind;
+ int max_cpuid;
+ struct cpuid_registers
+ {
+ unsigned int eax;
+ unsigned int ebx;
+ unsigned int ecx;
+ unsigned int edx;
+ } cpuid[COMMON_CPUID_INDEX_MAX];
+ unsigned int family;
+ unsigned int model;
+ unsigned int feature[FEATURE_INDEX_MAX];
+} __cpu_features attribute_hidden;
+
+
+extern void __init_cpu_features (void) attribute_hidden;
+#define INIT_ARCH()\
+ do \
+ if (__cpu_features.kind == arch_kind_unknown) \
+ __init_cpu_features (); \
+ while (0)
+
+/* Used from outside libc.so to get access to the CPU features structure. */
+extern const struct cpu_features *__get_cpu_features (void)
+ __attribute__ ((const));
+
+#ifndef NOT_IN_libc
+# define __get_cpu_features() (&__cpu_features)
+#endif
+
+#define HAS_CPU_FEATURE(idx, reg, bit) \
+ ((__get_cpu_features ()->cpuid[idx].reg & (1 << (bit))) != 0)
+
+/* Following are the feature tests used throughout libc. */
+
+#define HAS_SSE2 HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, edx, 26)
+#define HAS_POPCOUNT HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 23)
+#define HAS_SSE4_2 HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 20)
+#define HAS_FMA HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 12)
+
+#define index_Fast_Rep_String FEATURE_INDEX_1
+
+#endif /* __ASSEMBLER__ */
diff --git a/sysdeps/x86_64/multiarch/rawmemchr.S b/sysdeps/x86_64/multiarch/rawmemchr.S
new file mode 100644
index 0000000000..2a8a6909ef
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/rawmemchr.S
@@ -0,0 +1,95 @@
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@redhat.com>.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+
+/* Define multiple versions only for the definition in lib. */
+#ifndef NOT_IN_libc
+ .text
+ENTRY(rawmemchr)
+ .type rawmemchr, @gnu_indirect_function
+ cmpl $0, __cpu_features+KIND_OFFSET(%rip)
+ jne 1f
+ call __init_cpu_features
+1: leaq __rawmemchr_sse2(%rip), %rax
+ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
+ jz 2f
+ leaq __rawmemchr_sse42(%rip), %rax
+2: ret
+END(rawmemchr)
+strong_alias (rawmemchr, __rawmemchr)
+
+
+ .section .text.sse4.2,"ax",@progbits
+ .align 16
+ .type __rawmemchr_sse42, @function
+__rawmemchr_sse42:
+ cfi_startproc
+ CALL_MCOUNT
+ movd %esi, %xmm1
+ movq %rdi, %rcx
+ punpcklbw %xmm1, %xmm1
+ andq $~15, %rdi
+ punpcklbw %xmm1, %xmm1
+ orl $0xffffffff, %esi
+ movdqa (%rdi), %xmm0
+ pshufd $0, %xmm1, %xmm1
+ subq %rdi, %rcx
+ pcmpeqb %xmm1, %xmm0
+ shl %cl, %esi
+ pmovmskb %xmm0, %ecx
+ movl $16, %eax
+ movl $16, %edx
+ andl %esi, %ecx
+ jnz 1f
+
+2: pcmpestri $0x08, 16(%rdi), %xmm1
+ leaq 16(%rdi), %rdi
+ jnc 2b
+
+ leaq (%rdi,%rcx), %rax
+ ret
+
+1: bsfl %ecx, %eax
+ addq %rdi, %rax
+ ret
+ cfi_endproc
+ .size __rawmemchr_sse42, .-__rawmemchr_sse42
+
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __rawmemchr_sse2, @function; \
+ .align 16; \
+ __rawmemchr_sse2: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __rawmemchr_sse2, .-__rawmemchr_sse2
+# undef libc_hidden_builtin_def
+/* It doesn't make sense to send libc-internal rawmemchr calls through a PLT.
+ The speedup we get from using SSE4.2 instruction is likely eaten away
+ by the indirect call in the PLT. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI___rawmemchr; __GI___rawmemchr = __rawmemchr_sse2
+#endif
+
+#include "../rawmemchr.S"
diff --git a/sysdeps/x86_64/multiarch/rtld-strlen.S b/sysdeps/x86_64/multiarch/rtld-strlen.S
new file mode 100644
index 0000000000..596e0549ea
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/rtld-strlen.S
@@ -0,0 +1 @@
+#include "../rtld-strlen.S"
diff --git a/sysdeps/alpha/fpu/s_nearbyintf.c b/sysdeps/x86_64/multiarch/s_fma.c
index ee637982df..cfecf9b41d 100644
--- a/sysdeps/alpha/fpu/s_nearbyintf.c
+++ b/sysdeps/x86_64/multiarch/s_fma.c
@@ -1,6 +1,7 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
+/* FMA version of fma.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
This file is part of the GNU C Library.
- Contributed by Richard Henderson.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -9,32 +10,34 @@
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
+ 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, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ 02111-1307 USA. */
+#include <config.h>
#include <math.h>
+#include <init-arch.h>
-#ifdef _IEEE_FP_INEXACT
-#error "Don't compile with -mieee-with-inexact"
-#endif
+#ifdef HAVE_AVX_SUPPORT
-float
-__nearbyintf (float x)
-{
- float two23 = copysignf (0x1.0p23, x);
- float r;
+extern double __fma_sse2 (double x, double y, double z) attribute_hidden;
- r = x + two23;
- r = r - two23;
- /* nearbyint(-0.1) == -0, and in general we'll always have the same sign
- as our input. */
- return copysign (r, x);
+static double
+__fma_fma (double x, double y, double z)
+{
+ asm ("vfmadd213sd %3, %2, %0" : "=x" (x) : "0" (x), "x" (y), "xm" (z));
+ return x;
}
-weak_alias (__nearbyintf, nearbyintf)
+libm_ifunc (__fma, HAS_FMA ? __fma_fma : __fma_sse2);
+weak_alias (__fma, fma)
+
+# define __fma __fma_sse2
+#endif
+
+#include <math/s_fma.c>
diff --git a/sysdeps/alpha/fpu/s_fabs.c b/sysdeps/x86_64/multiarch/s_fmaf.c
index 9bc42f68d0..de1c4b6f41 100644
--- a/sysdeps/alpha/fpu/s_fabs.c
+++ b/sysdeps/x86_64/multiarch/s_fmaf.c
@@ -1,6 +1,6 @@
-/* Copyright (C) 2000, 2006 Free Software Foundation, Inc.
+/* FMA version of fmaf.
+ Copyright (C) 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Richard Henderson.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -9,33 +9,34 @@
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
+ 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, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ 02111-1307 USA. */
+#include <config.h>
#include <math.h>
-#include <math_ldbl_opt.h>
+#include <init-arch.h>
-double
-__fabs (double x)
+#ifdef HAVE_AVX_SUPPORT
+
+extern float __fmaf_sse2 (float x, float y, float z) attribute_hidden;
+
+
+static float
+__fmaf_fma (float x, float y, float z)
{
-#if __GNUC_PREREQ (2, 8)
- return __builtin_fabs (x);
-#else
- __asm ("cpys $f31, %1, %0" : "=f" (x) : "f" (x));
+ asm ("vfmadd213ss %3, %2, %0" : "=x" (x) : "0" (x), "x" (y), "xm" (z));
return x;
-#endif
}
-weak_alias (__fabs, fabs)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__fabs, __fabsl)
-weak_alias (__fabs, fabsl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __fabs, fabsl, GLIBC_2_0);
+libm_ifunc (__fmaf, HAS_FMA ? __fmaf_fma : __fmaf_sse2);
+weak_alias (__fmaf, fmaf)
+
+# define __fmaf __fmaf_sse2
#endif
+
+#include <math/s_fmaf.c>
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/fork.c b/sysdeps/x86_64/multiarch/sched_cpucount.c
index ca85fc008f..fde6dcca60 100644
--- a/nptl/sysdeps/unix/sysv/linux/alpha/fork.c
+++ b/sysdeps/x86_64/multiarch/sched_cpucount.c
@@ -1,5 +1,7 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Count bits in CPU set. x86-64 multi-arch version.
This file is part of the GNU C Library.
+ Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@redhat.com>.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -17,14 +19,19 @@
02111-1307 USA. */
#include <sched.h>
-#include <signal.h>
-#include <sysdep.h>
-#include <tls.h>
+#include "init-arch.h"
+#define __sched_cpucount static generic_cpucount
+#include <posix/sched_cpucount.c>
+#undef __sched_cpucount
-#define ARCH_FORK() \
- INLINE_SYSCALL (clone, 5, \
- CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, \
- NULL, NULL, &THREAD_SELF->tid, NULL)
+#define POPCNT(l) \
+ ({ __cpu_mask r; \
+ asm ("popcnt %1, %0" : "=r" (r) : "0" (l));\
+ r; })
+#define __sched_cpucount static popcount_cpucount
+#include <posix/sched_cpucount.c>
+#undef __sched_cpucount
-#include "../fork.c"
+libc_ifunc (__sched_cpucount,
+ HAS_POPCOUNT ? popcount_cpucount : generic_cpucount);
diff --git a/sysdeps/x86_64/multiarch/stpcpy.S b/sysdeps/x86_64/multiarch/stpcpy.S
new file mode 100644
index 0000000000..b63d308edc
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/stpcpy.S
@@ -0,0 +1,7 @@
+#define USE_AS_STPCPY
+#define STRCPY __stpcpy
+#include "strcpy.S"
+
+weak_alias (__stpcpy, stpcpy)
+libc_hidden_def (__stpcpy)
+libc_hidden_builtin_def (stpcpy)
diff --git a/sysdeps/x86_64/multiarch/stpncpy-c.c b/sysdeps/x86_64/multiarch/stpncpy-c.c
new file mode 100644
index 0000000000..2fde77dcab
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/stpncpy-c.c
@@ -0,0 +1,8 @@
+#define STPNCPY __stpncpy_sse2
+#ifdef SHARED
+#undef libc_hidden_def
+#define libc_hidden_def(name) \
+ __hidden_ver1 (__stpncpy_sse2, __GI___stpncpy, __stpncpy_sse2);
+#endif
+
+#include "stpncpy.c"
diff --git a/sysdeps/x86_64/multiarch/stpncpy.S b/sysdeps/x86_64/multiarch/stpncpy.S
new file mode 100644
index 0000000000..ff89a89491
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/stpncpy.S
@@ -0,0 +1,6 @@
+#define STRCPY __stpncpy
+#define USE_AS_STPCPY
+#define USE_AS_STRNCPY
+#include "strcpy.S"
+
+weak_alias (__stpncpy, stpncpy)
diff --git a/sysdeps/x86_64/multiarch/strcasestr-c.c b/sysdeps/x86_64/multiarch/strcasestr-c.c
new file mode 100644
index 0000000000..551492d8f5
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strcasestr-c.c
@@ -0,0 +1,16 @@
+#include "init-arch.h"
+
+#define STRCASESTR __strcasestr_sse2
+
+#include "string/strcasestr.c"
+
+extern char *__strcasestr_sse42 (const char *, const char *) attribute_hidden;
+extern __typeof (__strcasestr_sse2) __strcasestr_sse2 attribute_hidden;
+
+#if 1
+libc_ifunc (__strcasestr,
+ HAS_SSE4_2 ? __strcasestr_sse42 : __strcasestr_sse2);
+#else
+libc_ifunc (__strcasestr,
+ 0 ? __strcasestr_sse42 : __strcasestr_sse2);
+#endif
diff --git a/sysdeps/x86_64/multiarch/strcasestr.c b/sysdeps/x86_64/multiarch/strcasestr.c
new file mode 100644
index 0000000000..064e3ef4fd
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strcasestr.c
@@ -0,0 +1,3 @@
+#define USE_AS_STRCASESTR
+#define STRSTR_SSE42 __strcasestr_sse42
+#include "strstr.c"
diff --git a/sysdeps/x86_64/multiarch/strchr.S b/sysdeps/x86_64/multiarch/strchr.S
new file mode 100644
index 0000000000..27eead9852
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strchr.S
@@ -0,0 +1,177 @@
+/* strchr with SSE4.2
+ Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+
+/* Define multiple versions only for the definition in libc. */
+#ifndef NOT_IN_libc
+ .text
+ENTRY(strchr)
+ .type strchr, @gnu_indirect_function
+ cmpl $0, __cpu_features+KIND_OFFSET(%rip)
+ jne 1f
+ call __init_cpu_features
+1: leaq __strchr_sse2(%rip), %rax
+ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
+ jz 2f
+ leaq __strchr_sse42(%rip), %rax
+2: ret
+END(strchr)
+
+
+/*
+ This implementation uses SSE4 instructions to compare up to 16 bytes
+ at a time looking for the first occurrence of the character c in the
+ string s:
+
+ char *strchr (const char *s, int c);
+
+ We use 0xa:
+ _SIDD_SBYTE_OPS
+ | _SIDD_CMP_EQUAL_EACH
+ | _SIDD_LEAST_SIGNIFICANT
+ on pcmpistri to compare xmm/mem128
+
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ X X X X X X X X X X X X X X X X
+
+ against xmm
+
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ C C C C C C C C C C C C C C C C
+
+ to find out if the first 16byte data element has a byte C and the
+ offset of the first byte. There are 3 cases:
+
+ 1. The first 16byte data element has the byte C at the offset X.
+ 2. The first 16byte data element has EOS and doesn't have the byte C.
+ 3. The first 16byte data element is valid and doesn't have the byte C.
+
+ Here is the table of ECX, CFlag, ZFlag and SFlag for 3 cases:
+
+ case ECX CFlag ZFlag SFlag
+ 1 X 1 0/1 0
+ 2 16 0 1 0
+ 3 16 0 0 0
+
+ We exit from the loop for cases 1 and 2 with jbe which branches
+ when either CFlag or ZFlag is 1. If CFlag == 1, ECX has the offset
+ X for case 1. */
+
+ .section .text.sse4.2,"ax",@progbits
+ .align 16
+ .type __strchr_sse42, @function
+__strchr_sse42:
+ cfi_startproc
+ CALL_MCOUNT
+ testb %sil, %sil
+ je __strend_sse4
+ pxor %xmm2, %xmm2
+ movd %esi, %xmm1
+ movl %edi, %ecx
+ andl $15, %ecx
+ movq %rdi, %r8
+ je L(aligned_start)
+
+/* Handle unaligned string. */
+ andq $-16, %r8
+ pshufb %xmm2, %xmm1
+ movdqa (%r8), %xmm0
+ pcmpeqb %xmm0, %xmm2
+ pcmpeqb %xmm1, %xmm0
+ /* Find where NULL is. */
+ pmovmskb %xmm2, %edx
+ /* Check if there is a match. */
+ pmovmskb %xmm0, %esi
+ /* Remove the leading bytes. */
+ sarl %cl, %edx
+ sarl %cl, %esi
+ testl %esi, %esi
+ je L(unaligned_no_match)
+ /* Check which byte is a match. */
+ bsfl %esi, %eax
+ /* Is there a NULL? */
+ testl %edx, %edx
+ je L(unaligned_match)
+ bsfl %edx, %esi
+ cmpl %esi, %eax
+ /* Return NULL if NULL comes first. */
+ ja L(return_null)
+L(unaligned_match):
+ addq %rdi, %rax
+ ret
+
+ .p2align 4
+L(unaligned_no_match):
+ testl %edx, %edx
+ jne L(return_null)
+
+/* Loop start on aligned string. */
+L(loop):
+ addq $16, %r8
+L(aligned_start):
+ pcmpistri $0x2, (%r8), %xmm1
+ jbe L(wrap)
+ addq $16, %r8
+ pcmpistri $0x2, (%r8), %xmm1
+ jbe L(wrap)
+ addq $16, %r8
+ pcmpistri $0x2, (%r8), %xmm1
+ jbe L(wrap)
+ addq $16, %r8
+ pcmpistri $0x2, (%r8), %xmm1
+ jbe L(wrap)
+ jmp L(loop)
+L(wrap):
+ jc L(loop_exit)
+
+/* Return NULL. */
+L(return_null):
+ xorl %eax, %eax
+ ret
+
+/* Loop exit. */
+ .p2align 4
+L(loop_exit):
+ leaq (%r8,%rcx), %rax
+ ret
+ cfi_endproc
+ .size __strchr_sse42, .-__strchr_sse42
+
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __strchr_sse2, @function; \
+ .align 16; \
+ __strchr_sse2: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __strchr_sse2, .-__strchr_sse2
+# undef libc_hidden_builtin_def
+/* It doesn't make sense to send libc-internal strchr calls through a PLT.
+ The speedup we get from using SSE4.2 instruction is likely eaten away
+ by the indirect call in the PLT. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_strchr; __GI_strchr = __strchr_sse2
+#endif
+
+#include "../strchr.S"
diff --git a/sysdeps/x86_64/multiarch/strcmp-ssse3.S b/sysdeps/x86_64/multiarch/strcmp-ssse3.S
new file mode 100644
index 0000000000..98cecb8942
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strcmp-ssse3.S
@@ -0,0 +1,3 @@
+#define USE_SSSE3 1
+#define STRCMP __strcmp_ssse3
+#include "../strcmp.S"
diff --git a/sysdeps/x86_64/multiarch/strcmp.S b/sysdeps/x86_64/multiarch/strcmp.S
new file mode 100644
index 0000000000..1d939195aa
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strcmp.S
@@ -0,0 +1,1539 @@
+/* strcmp with SSE4.2
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+#ifdef USE_AS_STRNCMP
+/* Since the counter, %r11, is unsigned, we branch to strcmp_exitz
+ if the new counter > the old one or is 0. */
+#define UPDATE_STRNCMP_COUNTER \
+ /* calculate left number to compare */ \
+ lea -16(%rcx, %r11), %r9; \
+ cmp %r9, %r11; \
+ jb LABEL(strcmp_exitz_sse4_2); \
+ test %r9, %r9; \
+ je LABEL(strcmp_exitz_sse4_2); \
+ mov %r9, %r11
+
+#define STRCMP_SSE42 __strncmp_sse42
+#define STRCMP_SSSE3 __strncmp_ssse3
+#define STRCMP_SSE2 __strncmp_sse2
+#define __GI_STRCMP __GI_strncmp
+#else
+#define UPDATE_STRNCMP_COUNTER
+#ifndef STRCMP
+#define STRCMP strcmp
+#define STRCMP_SSE42 __strcmp_sse42
+#define STRCMP_SSSE3 __strcmp_ssse3
+#define STRCMP_SSE2 __strcmp_sse2
+#define __GI_STRCMP __GI_strcmp
+#endif
+#endif
+
+#ifndef LABEL
+#define LABEL(l) L(l)
+#endif
+
+/* Define multiple versions only for the definition in libc. Don't
+ define multiple versions for strncmp in static library since we
+ need strncmp before the initialization happened. */
+#if (defined SHARED || !defined USE_AS_STRNCMP) && !defined NOT_IN_libc
+ .text
+ENTRY(STRCMP)
+ .type STRCMP, @gnu_indirect_function
+ cmpl $0, __cpu_features+KIND_OFFSET(%rip)
+ jne 1f
+ call __init_cpu_features
+1:
+ leaq STRCMP_SSE42(%rip), %rax
+ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
+ jnz 2f
+ leaq STRCMP_SSSE3(%rip), %rax
+ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
+ jnz 2f
+ leaq STRCMP_SSE2(%rip), %rax
+2: ret
+END(STRCMP)
+
+/* We use 0x1a:
+ _SIDD_SBYTE_OPS
+ | _SIDD_CMP_EQUAL_EACH
+ | _SIDD_NEGATIVE_POLARITY
+ | _SIDD_LEAST_SIGNIFICANT
+ on pcmpistri to find out if two 16byte data elements are the same
+ and the offset of the first different byte. There are 4 cases:
+
+ 1. Both 16byte data elements are valid and identical.
+ 2. Both 16byte data elements have EOS and identical.
+ 3. Both 16byte data elements are valid and they differ at offset X.
+ 4. At least one 16byte data element has EOS at offset X. Two 16byte
+ data elements must differ at or before offset X.
+
+ Here is the table of ECX, CFlag, ZFlag and SFlag for 4 cases:
+
+ case ECX CFlag ZFlag SFlag
+ 1 16 0 0 0
+ 2 16 0 1 1
+ 3 X 1 0 0
+ 4 0 <= X 1 0/1 0/1
+
+ We exit from the loop for cases 2, 3 and 4 with jbe which branches
+ when either CFlag or ZFlag is 1. If CFlag == 0, we return 0 for
+ case 2. */
+
+ /* Put all SSE 4.2 functions together. */
+ .section .text.sse4.2,"ax",@progbits
+ .align 16
+ .type STRCMP_SSE42, @function
+STRCMP_SSE42:
+ cfi_startproc
+ CALL_MCOUNT
+
+/*
+ * This implementation uses SSE to compare up to 16 bytes at a time.
+ */
+#ifdef USE_AS_STRNCMP
+ test %rdx, %rdx
+ je LABEL(strcmp_exitz_sse4_2)
+ cmp $1, %rdx
+ je LABEL(Byte0_sse4_2)
+ mov %rdx, %r11
+#endif
+ mov %esi, %ecx
+ mov %edi, %eax
+/* Use 64bit AND here to avoid long NOP padding. */
+ and $0x3f, %rcx /* rsi alignment in cache line */
+ and $0x3f, %rax /* rdi alignment in cache line */
+ cmp $0x30, %ecx
+ ja LABEL(crosscache_sse4_2)/* rsi: 16-byte load will cross cache line */
+ cmp $0x30, %eax
+ ja LABEL(crosscache_sse4_2)/* rdi: 16-byte load will cross cache line */
+ movdqu (%rdi), %xmm1
+ movdqu (%rsi), %xmm2
+ pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */
+ pcmpeqb %xmm1, %xmm0 /* Any null chars? */
+ pcmpeqb %xmm2, %xmm1 /* compare first 16 bytes for equality */
+ psubb %xmm0, %xmm1 /* packed sub of comparison results*/
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx /* if first 16 bytes are same, edx == 0xffff */
+ jnz LABEL(less16bytes_sse4_2)/* If not, find different value or null char */
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)/* finish comparision */
+#endif
+ add $16, %rsi /* prepare to search next 16 bytes */
+ add $16, %rdi /* prepare to search next 16 bytes */
+
+ /*
+ * Determine source and destination string offsets from 16-byte alignment.
+ * Use relative offset difference between the two to determine which case
+ * below to use.
+ */
+ .p2align 4
+LABEL(crosscache_sse4_2):
+ and $0xfffffffffffffff0, %rsi /* force %rsi is 16 byte aligned */
+ and $0xfffffffffffffff0, %rdi /* force %rdi is 16 byte aligned */
+ mov $0xffff, %edx /* for equivalent offset */
+ xor %r8d, %r8d
+ and $0xf, %ecx /* offset of rsi */
+ and $0xf, %eax /* offset of rdi */
+ cmp %eax, %ecx
+ je LABEL(ashr_0_sse4_2) /* rsi and rdi relative offset same */
+ ja LABEL(bigger_sse4_2)
+ mov %edx, %r8d /* r8d is offset flag for exit tail */
+ xchg %ecx, %eax
+ xchg %rsi, %rdi
+LABEL(bigger_sse4_2):
+ lea 15(%rax), %r9
+ sub %rcx, %r9
+ lea LABEL(unaligned_table_sse4_2)(%rip), %r10
+ movslq (%r10, %r9,4), %r9
+ lea (%r10, %r9), %r10
+ jmp *%r10 /* jump to corresponding case */
+
+/*
+ * The following cases will be handled by ashr_0
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(0~15) n(0~15) 15(15+ n-n) ashr_0
+ */
+ .p2align 4
+LABEL(ashr_0_sse4_2):
+
+ movdqa (%rsi), %xmm1
+ pxor %xmm0, %xmm0 /* clear %xmm0 for null char check */
+ pcmpeqb %xmm1, %xmm0 /* Any null chars? */
+ pcmpeqb (%rdi), %xmm1 /* compare 16 bytes for equality */
+ psubb %xmm0, %xmm1 /* packed sub of comparison results*/
+ pmovmskb %xmm1, %r9d
+ shr %cl, %edx /* adjust 0xffff for offset */
+ shr %cl, %r9d /* adjust for 16-byte offset */
+ sub %r9d, %edx
+ /*
+ * edx must be the same with r9d if in left byte (16-rcx) is equal to
+ * the start from (16-rax) and no null char was seen.
+ */
+ jne LABEL(less32bytes_sse4_2) /* mismatch or null char */
+ UPDATE_STRNCMP_COUNTER
+ mov $16, %rcx
+ mov $16, %r9
+ pxor %xmm0, %xmm0 /* clear xmm0, may have changed above */
+
+ /*
+ * Now both strings are aligned at 16-byte boundary. Loop over strings
+ * checking 32-bytes per iteration.
+ */
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+ .p2align 4
+LABEL(ashr_0_use_sse4_2):
+ movdqa (%rdi,%rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ lea 16(%rdx), %rdx
+ jbe LABEL(ashr_0_use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ movdqa (%rdi,%rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ lea 16(%rdx), %rdx
+ jbe LABEL(ashr_0_use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ jmp LABEL(ashr_0_use_sse4_2)
+
+
+ .p2align 4
+LABEL(ashr_0_use_sse4_2_exit):
+ jnc LABEL(strcmp_exitz_sse4_2)
+#ifdef USE_AS_STRNCMP
+ sub %rcx, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ lea -16(%rdx, %rcx), %rcx
+ movzbl (%rdi, %rcx), %eax
+ movzbl (%rsi, %rcx), %edx
+ sub %edx, %eax
+ ret
+
+
+
+
+/*
+ * The following cases will be handled by ashr_1
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(15) n -15 0(15 +(n-15) - n) ashr_1
+ */
+ .p2align 4
+LABEL(ashr_1_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0 /* Any null chars? */
+ pslldq $15, %xmm2 /* shift first string to align with second */
+ pcmpeqb %xmm1, %xmm2 /* compare 16 bytes for equality */
+ psubb %xmm0, %xmm2 /* packed sub of comparison results*/
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx /* adjust 0xffff for offset */
+ shr %cl, %r9d /* adjust for 16-byte offset */
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)/* mismatch or null char seen */
+ movdqa (%rdi), %xmm3
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads*/
+ mov $1, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 1(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_1_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_1_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $1, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_1_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $1, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_1_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_1_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $1, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $14, %ecx
+ ja LABEL(loop_ashr_1_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_2
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(14~15) n -14 1(15 +(n-14) - n) ashr_2
+ */
+ .p2align 4
+LABEL(ashr_2_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $14, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+ movdqa (%rdi), %xmm3
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $2, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 2(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_2_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_2_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $2, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_2_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $2, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_2_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_2_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $2, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $13, %ecx
+ ja LABEL(loop_ashr_2_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_3
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(13~15) n -13 2(15 +(n-13) - n) ashr_3
+ */
+ .p2align 4
+LABEL(ashr_3_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $13, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $3, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 3(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+LABEL(loop_ashr_3_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_3_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $3, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_3_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $3, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_3_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_3_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $3, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $12, %ecx
+ ja LABEL(loop_ashr_3_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_4
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(12~15) n -12 3(15 +(n-12) - n) ashr_4
+ */
+ .p2align 4
+LABEL(ashr_4_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $12, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $4, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 4(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_4_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_4_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $4, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_4_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $4, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_4_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_4_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $4, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $11, %ecx
+ ja LABEL(loop_ashr_4_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_5
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(11~15) n - 11 4(15 +(n-11) - n) ashr_5
+ */
+ .p2align 4
+LABEL(ashr_5_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $11, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $5, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 5(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_5_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_5_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $5, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_5_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+
+ palignr $5, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_5_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_5_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $5, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $10, %ecx
+ ja LABEL(loop_ashr_5_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_6
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(10~15) n - 10 5(15 +(n-10) - n) ashr_6
+ */
+ .p2align 4
+LABEL(ashr_6_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $10, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $6, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 6(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_6_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_6_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $6, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_6_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $6, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_6_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_6_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $6, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $9, %ecx
+ ja LABEL(loop_ashr_6_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_7
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(9~15) n - 9 6(15 +(n - 9) - n) ashr_7
+ */
+ .p2align 4
+LABEL(ashr_7_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $9, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $7, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 7(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_7_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_7_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $7, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_7_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $7, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_7_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_7_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $7, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $8, %ecx
+ ja LABEL(loop_ashr_7_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_8
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(8~15) n - 8 7(15 +(n - 8) - n) ashr_8
+ */
+ .p2align 4
+LABEL(ashr_8_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $8, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $8, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 8(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_8_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_8_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $8, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_8_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $8, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_8_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_8_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $8, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $7, %ecx
+ ja LABEL(loop_ashr_8_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_9
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(7~15) n - 7 8(15 +(n - 7) - n) ashr_9
+ */
+ .p2align 4
+LABEL(ashr_9_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $7, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $9, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 9(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_9_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_9_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+
+ palignr $9, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_9_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $9, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_9_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_9_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $9, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $6, %ecx
+ ja LABEL(loop_ashr_9_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_10
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(6~15) n - 6 9(15 +(n - 6) - n) ashr_10
+ */
+ .p2align 4
+LABEL(ashr_10_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $6, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $10, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 10(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_10_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_10_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $10, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_10_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $10, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_10_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_10_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $10, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $5, %ecx
+ ja LABEL(loop_ashr_10_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_11
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(5~15) n - 5 10(15 +(n - 5) - n) ashr_11
+ */
+ .p2align 4
+LABEL(ashr_11_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $5, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $11, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 11(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_11_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_11_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $11, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_11_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $11, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_11_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_11_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $11, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $4, %ecx
+ ja LABEL(loop_ashr_11_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_12
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(4~15) n - 4 11(15 +(n - 4) - n) ashr_12
+ */
+ .p2align 4
+LABEL(ashr_12_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $4, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $12, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 12(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_12_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_12_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $12, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_12_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $12, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_12_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_12_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $12, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $3, %ecx
+ ja LABEL(loop_ashr_12_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_13
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(3~15) n - 3 12(15 +(n - 3) - n) ashr_13
+ */
+ .p2align 4
+LABEL(ashr_13_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $3, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $13, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 13(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_13_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_13_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $13, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_13_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $13, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_13_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_13_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $13, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $2, %ecx
+ ja LABEL(loop_ashr_13_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_14
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(2~15) n - 2 13(15 +(n - 2) - n) ashr_14
+ */
+ .p2align 4
+LABEL(ashr_14_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $2, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $14, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 14(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_14_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_14_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $14, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_14_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $14, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_14_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_14_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $14, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $1, %ecx
+ ja LABEL(loop_ashr_14_use_sse4_2)
+
+ jmp LABEL(nibble_ashr_use_sse4_2_exit)
+
+/*
+ * The following cases will be handled by ashr_15
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(1~15) n - 1 14(15 +(n - 1) - n) ashr_15
+ */
+ .p2align 4
+LABEL(ashr_15_sse4_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $1, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes_sse4_2)
+
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $15, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 15(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ mov %rcx, %rdx /* only for offset of sse4 instruction loop*/
+
+ .p2align 4
+LABEL(loop_ashr_15_use_sse4_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_15_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $15, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+
+ add $16, %rdx
+ add $16, %r10
+ jg LABEL(nibble_ashr_15_use_sse4_2)
+
+ movdqa (%rdi, %rdx), %xmm0
+ palignr $15, -16(%rdi, %rdx), %xmm0
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ jbe LABEL(use_sse4_2_exit)
+#ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add $16, %rdx
+ jmp LABEL(loop_ashr_15_use_sse4_2)
+
+ .p2align 4
+LABEL(nibble_ashr_15_use_sse4_2):
+ sub $0x1000, %r10
+ movdqa -16(%rdi, %rdx), %xmm0
+ psrldq $15, %xmm0
+ pcmpistri $0x3a,%xmm0, %xmm0
+#ifdef USE_AS_STRNCMP
+ cmp %r11, %rcx
+ jae LABEL(nibble_ashr_use_sse4_2_exit)
+#endif
+ cmp $0, %ecx
+ ja LABEL(loop_ashr_15_use_sse4_2)
+
+LABEL(nibble_ashr_use_sse4_2_exit):
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+ .p2align 4
+LABEL(use_sse4_2_exit):
+ jnc LABEL(strcmp_exitz_sse4_2)
+#ifdef USE_AS_STRNCMP
+ sub %rcx, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ add %rcx, %rdx
+ lea -16(%rdi, %r9), %rdi
+ movzbl (%rdi, %rdx), %eax
+ movzbl (%rsi, %rdx), %edx
+ test %r8d, %r8d
+ jz LABEL(use_sse4_2_ret_sse4_2)
+ xchg %eax, %edx
+LABEL(use_sse4_2_ret_sse4_2):
+ sub %edx, %eax
+ ret
+
+LABEL(less32bytes_sse4_2):
+ lea (%rdi, %rax), %rdi /* locate the exact address for first operand(rdi) */
+ lea (%rsi, %rcx), %rsi /* locate the exact address for second operand(rsi) */
+ test %r8d, %r8d
+ jz LABEL(ret_sse4_2)
+ xchg %rsi, %rdi /* recover original order according to flag(%r8d) */
+
+ .p2align 4
+LABEL(ret_sse4_2):
+LABEL(less16bytes_sse4_2):
+ bsf %rdx, %rdx /* find and store bit index in %rdx */
+
+#ifdef USE_AS_STRNCMP
+ sub %rdx, %r11
+ jbe LABEL(strcmp_exitz_sse4_2)
+#endif
+ movzbl (%rsi, %rdx), %ecx
+ movzbl (%rdi, %rdx), %eax
+
+ sub %ecx, %eax
+ ret
+
+LABEL(strcmp_exitz_sse4_2):
+ xor %eax, %eax
+ ret
+
+ .p2align 4
+LABEL(Byte0_sse4_2):
+ movzx (%rsi), %ecx
+ movzx (%rdi), %eax
+
+ sub %ecx, %eax
+ ret
+ cfi_endproc
+ .size STRCMP_SSE42, .-STRCMP_SSE42
+
+ /* Put all SSE 4.2 functions together. */
+ .section .rodata.sse4.2,"a",@progbits
+ .p2align 3
+LABEL(unaligned_table_sse4_2):
+ .int LABEL(ashr_1_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_2_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_3_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_4_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_5_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_6_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_7_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_8_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_9_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_10_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_11_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_12_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_13_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_14_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_15_sse4_2) - LABEL(unaligned_table_sse4_2)
+ .int LABEL(ashr_0_sse4_2) - LABEL(unaligned_table_sse4_2)
+
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type STRCMP_SSE2, @function; \
+ .align 16; \
+ STRCMP_SSE2: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size STRCMP_SSE2, .-STRCMP_SSE2
+# undef libc_hidden_builtin_def
+/* It doesn't make sense to send libc-internal strcmp calls through a PLT.
+ The speedup we get from using SSE4.2 instruction is likely eaten away
+ by the indirect call in the PLT. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_STRCMP; __GI_STRCMP = STRCMP_SSE2
+#endif
+
+#include "../strcmp.S"
diff --git a/sysdeps/x86_64/multiarch/strcpy.S b/sysdeps/x86_64/multiarch/strcpy.S
new file mode 100644
index 0000000000..02fa8d0710
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strcpy.S
@@ -0,0 +1,1911 @@
+/* strcpy with SSSE3
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+#if !defined (USE_AS_STPCPY) && !defined (USE_AS_STRNCPY)
+# ifndef STRCPY
+# define STRCPY strcpy
+# endif
+#endif
+
+#ifdef USE_AS_STPCPY
+# ifdef USE_AS_STRNCPY
+# define STRCPY_SSSE3 __stpncpy_ssse3
+# define STRCPY_SSE2 __stpncpy_sse2
+# define __GI_STRCPY __GI_stpncpy
+# else
+# define STRCPY_SSSE3 __stpcpy_ssse3
+# define STRCPY_SSE2 __stpcpy_sse2
+# define __GI_STRCPY __GI_stpcpy
+# define __GI___STRCPY __GI___stpcpy
+# endif
+#else
+# ifdef USE_AS_STRNCPY
+# define STRCPY_SSSE3 __strncpy_ssse3
+# define STRCPY_SSE2 __strncpy_sse2
+# define __GI_STRCPY __GI_strncpy
+# else
+# define STRCPY_SSSE3 __strcpy_ssse3
+# define STRCPY_SSE2 __strcpy_sse2
+# define __GI_STRCPY __GI_strcpy
+# endif
+#endif
+
+#ifndef LABEL
+#define LABEL(l) L(l)
+#endif
+
+/* Define multiple versions only for the definition in libc. */
+#ifndef NOT_IN_libc
+ .text
+ENTRY(STRCPY)
+ .type STRCPY, @gnu_indirect_function
+ cmpl $0, __cpu_features+KIND_OFFSET(%rip)
+ jne 1f
+ call __init_cpu_features
+1: leaq STRCPY_SSE2(%rip), %rax
+ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
+ jz 2f
+ leaq STRCPY_SSSE3(%rip), %rax
+2: ret
+END(STRCPY)
+
+ .section .text.ssse3,"ax",@progbits
+STRCPY_SSSE3:
+ cfi_startproc
+ CALL_MCOUNT
+
+/*
+ * This implementation uses SSE to copy up to 16 bytes at a time.
+ */
+#ifdef USE_AS_STRNCPY
+ test %rdx, %rdx
+ jz LABEL(strncpy_exitz)
+ mov %rdx, %r8
+#else
+ xor %edx, %edx
+#endif
+ mov %esi, %ecx
+ and $0xfffffffffffffff0, %rsi /*force rsi 16 byte align*/
+ and $15, %ecx
+ mov %rdi, %rax /*store return parameter*/
+
+
+ pxor %xmm0, %xmm0 /* clear %xmm0 */
+ pcmpeqb (%rsi), %xmm0 /* compare 16 bytes in (%rsi) and %xmm0 for equality, try to find null char*/
+ pmovmskb %xmm0, %edx /* move each byte mask of %xmm0 to edx*/
+ shr %cl, %edx /* get real bits left in edx*/
+ test %edx, %edx /* edx must be 0 if there is no null char from rsi+%rcx */
+ jnz LABEL(less16bytes)
+
+#ifdef USE_AS_STRNCPY
+ lea -16(%r8,%rcx), %r11
+ cmp $0, %r11
+ jle LABEL(less16bytes) /* if r8 + rcx <= 16, branch to less16bytes. */
+#endif
+
+ mov %rcx, %r9
+ or %edi, %ecx
+ and $15, %ecx
+ lea -16(%r9), %r10
+ jz LABEL(ashr_0) /* ecx must be 0 if offset of rsi and rdi is 16 byte align*/
+
+ neg %r10 /* store the rest in rsi aligned 16 bytes for unaligned_exit*/
+
+ pxor %xmm0, %xmm0 /* clear %xmm0, may be polluted by unaligned operation*/
+ pcmpeqb 16(%rsi), %xmm0 /* compare 16 bytes in (%rsi) and %xmm0 for equality, try to find null char*/
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(less32bytes)
+ /*
+ * at least 16 byte available to fill destination rdi
+ */
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(less32bytes_strncpy_truncation)
+#endif
+ mov (%rsi, %r9), %rdx
+ mov %rdx, (%rdi)
+ mov 8(%rsi, %r9), %rdx
+ mov %rdx, 8(%rdi)
+
+ /*
+ * so far destatination rdi may be aligned by 16, re-calculate rsi to jump
+ * crossponding case
+ * rcx is offset of rsi
+ * rax is offset of rdi
+ */
+
+ and $0xfffffffffffffff0, %rdi /* force rdi 16 byte align */
+ mov %rax, %rdx /* rax store orignal rdi */
+ xor %rdi, %rdx /* equal to and $15, %rdx */
+#ifdef USE_AS_STRNCPY
+ add %rdx, %r8
+#endif
+
+ add $16, %rdi /* next 16 bytes for rdi */
+ sub %rdx, %r9
+
+ lea 16(%r9, %rsi), %rsi /*re-calculate rsi by (16 - rdx)+ rcx */
+ mov %esi, %ecx /*store offset of rsi */
+ and $0xfffffffffffffff0, %rsi /* force rsi 16 byte align */
+
+ and $15, %ecx /* ecx must be 0 if rdx is equal to rcx*/
+ jz LABEL(ashr_0)
+
+ lea -16(%rcx), %r10
+ mov %rcx, %r9
+ neg %r10
+ lea LABEL(unaligned_table)(%rip), %r11
+ movslq (%r11, %rcx,4), %rcx
+ lea (%r11, %rcx), %rcx
+ jmp *%rcx
+
+ /*
+ * The following cases will be handled by ashr_0 & ashr_0_start
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * 0 0 0 ashr_0
+ * n(1~15) n(1~15) 0 ashr_0_start
+ *
+ */
+ .p2align 5
+LABEL(ashr_0):
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_aligned)
+#endif
+ movdqa (%rsi), %xmm1 /* fetch first 16 bytes from rsi */
+ movdqa %xmm1, (%rdi) /* store first 16 bytes into rdi */
+ add $16, %rsi
+ add $16, %rdi
+ pcmpeqb (%rsi), %xmm0 /* compare 16 bytes in (%rsi) and %xmm0 for equality, try to find null char */
+ pmovmskb %xmm0, %edx /* move each byte mask of %xmm0 to edx*/
+
+ test %edx, %edx /* edx must be 0 if there is no null char in rsi*/
+ jnz LABEL(aligned_16bytes)
+
+LABEL(ashr_0_loop):
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_aligned)
+#endif
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa %xmm1, (%rdi, %rcx)
+ add $16, %rcx
+ pcmpeqb (%rsi, %rcx), %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(aligned_exit)
+
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_aligned)
+#endif
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa %xmm1, (%rdi, %rcx)
+ add $16, %rcx
+ pcmpeqb (%rsi, %rcx), %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(aligned_exit)
+
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_aligned)
+#endif
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa %xmm1, (%rdi, %rcx)
+ add $16, %rcx
+ pcmpeqb (%rsi, %rcx), %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(aligned_exit)
+
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_aligned)
+#endif
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa %xmm1, (%rdi, %rcx)
+ add $16, %rcx
+ pcmpeqb (%rsi, %rcx), %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jz LABEL(ashr_0_loop)
+
+ jmp LABEL(aligned_exit)
+ .p2align 4
+
+/*
+ * The following cases will be handled by ashr_15
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(15) n - 15 15((16 - (n -15) + n)%16 ashr_15
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_15):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_15_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $15, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $15, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_15_use_ssse3)
+
+/*
+ * The following cases will be handled by ashr_14
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(14~15) n - 14 14((16 - (n -14) + n)%16 ashr_14
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_14):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_14_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $14, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $14, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_14_use_ssse3)
+
+/*
+ * The following cases will be handled by ashr_13
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(13~15) n - 13 13((16 - (n -13) + n)%16 ashr_13
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_13):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_13_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $13, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $13, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_13_use_ssse3)
+
+/*
+ * The following cases will be handled by ashr_12
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(12~15) n - 12 12((16 - (n -12) + n)%16 ashr_12
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_12):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_12_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $12, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $12, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_12_use_ssse3)
+
+/*
+ * The following cases will be handled by ashr_11
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(11~15) n - 11 11((16 - (n -11) + n)%16 ashr_11
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_11):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_11_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $11, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $11, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_11_use_ssse3)
+
+/*
+ * The following cases will be handled by ashr_10
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(10~15) n - 10 10((16 - (n -10) + n)%16 ashr_10
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_10):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_10_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $10, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $10, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_10_use_ssse3)
+
+/*
+ * The following cases will be handled by ashr_9
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(9~15) n - 9 9((16 - (n -9) + n)%16 ashr_9
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_9):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_9_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $9, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $9, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_9_use_ssse3)
+
+/*
+ * The following cases will be handled by ashr_8
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(8~15) n - 8 8((16 - (n -8) + n)%16 ashr_8
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_8):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_8_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $8, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $8, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_8_use_ssse3)
+
+/*
+ * The following cases will be handled by ashr_7
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(7~15) n - 7 7((16 - (n -7) + n)%16 ashr_7
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_7):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ .p2align 4
+
+LABEL(ashr_7_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $7, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $7, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_7_use_ssse3)
+
+/*
+ * The following cases will be handled by ashr_6
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(6~15) n - 6 6((16 - (n -6) + n)%16 ashr_6
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_6):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_6_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $6, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $6, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_6_use_ssse3)
+
+ /*
+ * The following cases will be handled by ashr_5
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(5~15) n - 5 5((16 - (n -5) + n)%16 ashr_5
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_5):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_5_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $5, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $5, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_5_use_ssse3)
+
+/*
+ *
+ * The following cases will be handled by ashr_4
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(4~15) n - 4 4((16 - (n -4) + n)%16 ashr_4
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_4):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_4_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $4, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $4, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_4_use_ssse3)
+
+/*
+ *
+ * The following cases will be handled by ashr_3
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(3~15) n - 3 3((16 - (n -3) + n)%16 ashr_3
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_3):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_3_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $3, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $3, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_3_use_ssse3)
+
+/*
+ *
+ * The following cases will be handled by ashr_2
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(2~15) n - 2 2((16 - (n -2) + n)%16 ashr_2
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_2):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_2_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $2, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $2, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_2_use_ssse3)
+
+/*
+ *
+ * The following cases will be handled by ashr_1
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(1~15) n - 1 1 ((16 - (n -1) + n)%16 ashr_1
+ *
+ * Based on above operation , start from (%r9 + rsi) to the left of this cache bank, there is no null byte
+ */
+ .p2align 4
+LABEL(ashr_1):
+ xor %ecx, %ecx /*clear ecx */
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ .p2align 4
+LABEL(ashr_1_use_ssse3):
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+
+ palignr $1, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+
+ movdqa 16(%rsi, %rcx), %xmm3
+ pcmpeqb %xmm3, %xmm0
+ pmovmskb %xmm0, %edx
+ test %edx, %edx
+ jnz LABEL(unaligned_exit)
+#ifdef USE_AS_STRNCPY
+ sub $16, %r8
+ jbe LABEL(strncpy_truncation_unaligned)
+#endif
+ palignr $1, (%rsi, %rcx), %xmm3
+ movdqa %xmm3, (%rdi, %rcx)
+ add $16, %rcx
+
+#ifdef USE_AS_STRNCPY
+ cmp %r10, %r8
+ jbe LABEL(unaligned_exit)
+#endif
+ jmp LABEL(ashr_1_use_ssse3)
+
+ .p2align 4
+LABEL(less32bytes):
+ xor %ecx, %ecx
+LABEL(unaligned_exit):
+ add %r9, %rsi /* r9 stores original offset of rsi*/
+ mov %rcx, %r9
+ mov %r10, %rcx
+ shl %cl, %edx /* after shl, calculate the exact number to be filled*/
+ mov %r9, %rcx
+ .p2align 4
+LABEL(aligned_exit):
+ add %rcx, %rdi /*locate exact address for rdi */
+LABEL(less16bytes):
+ add %rcx, %rsi /*locate exact address for rsi */
+LABEL(aligned_16bytes):
+#ifdef USE_AS_STRNCPY
+ mov $1, %r9d
+ lea -1(%r8), %rcx
+ shl %cl, %r9d
+ cmp $32, %r8
+ ja LABEL(strncpy_tail)
+ or %r9d, %edx
+LABEL(strncpy_tail):
+#endif
+ bsf %rdx, %rcx /*If a least significant 1 bit in %rdx is found, its bit index is stored in %rcx*/
+ lea LABEL(tail_table)(%rip), %r11
+ movslq (%r11, %rcx,4), %rcx
+ lea (%r11, %rcx), %rcx
+ jmp *%rcx
+
+#ifdef USE_AS_STRNCPY
+ .p2align 4
+LABEL(less32bytes_strncpy_truncation):
+ xor %ecx, %ecx
+LABEL(strncpy_truncation_unaligned):
+ add %r9, %rsi
+LABEL(strncpy_truncation_aligned):
+ add %rcx, %rdi
+ add %rcx, %rsi
+ add $16, %r8
+ lea -1(%r8), %rcx
+ lea LABEL(tail_table)(%rip), %r11
+ movslq (%r11, %rcx,4), %rcx
+ lea (%r11, %rcx), %rcx
+ jmp *%rcx
+ .p2align 4
+LABEL(strncpy_exitz):
+ mov %rdi, %rax
+ ret
+#endif
+
+#ifdef USE_AS_STRNCPY
+ .p2align 4
+LABEL(strncpy_fill_tail):
+ mov %rax, %rdx
+ movzx %cl, %rax
+ mov %r8, %rcx
+ add %rax, %rdi
+ xor %eax, %eax
+ shr $3, %ecx
+ jz LABEL(strncpy_fill_less_8)
+
+ rep stosq
+LABEL(strncpy_fill_less_8):
+ mov %r8, %rcx
+ and $7, %ecx
+ jz LABEL(strncpy_fill_return)
+LABEL(strncpy_fill_less_7):
+ sub $1, %ecx
+ mov %al, (%rdi, %rcx)
+ jnz LABEL(strncpy_fill_less_7)
+LABEL(strncpy_fill_return):
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rdx)
+ sbb $-1, %rdx
+#endif
+ mov %rdx, %rax
+ ret
+#endif
+ .p2align 4
+LABEL(tail_0):
+ mov (%rsi), %cl
+ mov %cl, (%rdi)
+#ifdef USE_AS_STPCPY
+ mov %rdi, %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $1, %cl
+ sub $1, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+ .p2align 4
+LABEL(tail_1):
+ mov (%rsi), %cx
+ mov %cx, (%rdi)
+#ifdef USE_AS_STPCPY
+ lea 1(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $2, %cl
+ sub $2, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+ .p2align 4
+LABEL(tail_2):
+ mov (%rsi), %cx
+ mov %cx, (%rdi)
+ mov 1(%rsi), %cx
+ mov %cx, 1(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 2(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $3, %cl
+ sub $3, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+ .p2align 4
+LABEL(tail_3):
+ mov (%rsi), %ecx
+ mov %ecx, (%rdi)
+#ifdef USE_AS_STPCPY
+ lea 3(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $4, %cl
+ sub $4, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+ .p2align 4
+LABEL(tail_4):
+ mov (%rsi), %ecx
+ mov %ecx, (%rdi)
+ mov 1(%rsi), %edx
+ mov %edx, 1(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 4(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $5, %cl
+ sub $5, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+ .p2align 4
+LABEL(tail_5):
+ mov (%rsi), %ecx
+ mov %ecx, (%rdi)
+ mov 2(%rsi), %edx
+ mov %edx, 2(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 5(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $6, %cl
+ sub $6, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+ .p2align 4
+LABEL(tail_6):
+ mov (%rsi), %ecx
+ mov %ecx, (%rdi)
+ mov 3(%rsi), %edx
+ mov %edx,3(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 6(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $7, %cl
+ sub $7, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_7):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+#ifdef USE_AS_STPCPY
+ lea 7(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $8, %cl
+ sub $8, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_8):
+
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 5(%rsi), %edx
+ mov %edx, 5(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 8(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $9, %cl
+ sub $9, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_9):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 6(%rsi), %edx
+ mov %edx, 6(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 9(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $10, %cl
+ sub $10, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_10):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 7(%rsi), %edx
+ mov %edx, 7(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 10(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $11, %cl
+ sub $11, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+ .p2align 4
+LABEL(tail_11):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %edx
+ mov %edx, 8(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 11(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $12, %cl
+ sub $12, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+ .p2align 4
+LABEL(tail_12):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 5(%rsi), %rcx
+ mov %rcx, 5(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 12(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $13, %cl
+ sub $13, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_13):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 6(%rsi), %rcx
+ mov %rcx, 6(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 13(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $14, %cl
+ sub $14, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_14):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 7(%rsi), %rcx
+ mov %rcx, 7(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 14(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $15, %cl
+ sub $15, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+LABEL(tail_15):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 15(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $16, %cl
+ sub $16, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+
+ ret
+
+ .p2align 4
+LABEL(tail_16):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 16(%rsi), %cl
+ mov %cl, 16(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 16(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $17, %cl
+ sub $17, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+ .p2align 4
+LABEL(tail_17):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 16(%rsi), %cx
+ mov %cx, 16(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 17(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $18, %cl
+ sub $18, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_18):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 15(%rsi), %ecx
+ mov %ecx,15(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 18(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $19, %cl
+ sub $19, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_19):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 16(%rsi), %ecx
+ mov %ecx, 16(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 19(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $20, %cl
+ sub $20, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+ .p2align 4
+LABEL(tail_20):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 13(%rsi), %rcx
+ mov %rcx, 13(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 20(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $21, %cl
+ sub $21, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+ .p2align 4
+LABEL(tail_21):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 14(%rsi), %rcx
+ mov %rcx, 14(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 21(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $22, %cl
+ sub $22, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_22):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 15(%rsi), %rcx
+ mov %rcx, 15(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 22(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $23, %cl
+ sub $23, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_23):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 16(%rsi), %rcx
+ mov %rcx, 16(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 23(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $24, %cl
+ sub $24, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+
+ ret
+
+ .p2align 4
+LABEL(tail_24):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 16(%rsi), %rcx
+ mov %rcx, 16(%rdi)
+ mov 21(%rsi), %edx
+ mov %edx, 21(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 24(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $25, %cl
+ sub $25, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_25):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 16(%rsi), %rcx
+ mov %rcx, 16(%rdi)
+ mov 22(%rsi), %edx
+ mov %edx, 22(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 25(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $26, %cl
+ sub $26, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_26):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 16(%rsi), %rcx
+ mov %rcx, 16(%rdi)
+ mov 23(%rsi), %edx
+ mov %edx, 23(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 26(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $27, %cl
+ sub $27, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_27):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 16(%rsi), %rcx
+ mov %rcx, 16(%rdi)
+ mov 24(%rsi), %edx
+ mov %edx, 24(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 27(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $28, %cl
+ sub $28, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+ .p2align 4
+LABEL(tail_28):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 16(%rsi), %rcx
+ mov %rcx, 16(%rdi)
+ mov 21(%rsi), %rdx
+ mov %rdx, 21(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 28(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $29, %cl
+ sub $29, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+
+ ret
+
+ .p2align 4
+LABEL(tail_29):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 16(%rsi), %rcx
+ mov %rcx, 16(%rdi)
+ mov 22(%rsi), %rdx
+ mov %rdx, 22(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 29(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $30, %cl
+ sub $30, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+
+ ret
+
+
+ .p2align 4
+LABEL(tail_30):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 16(%rsi), %rcx
+ mov %rcx, 16(%rdi)
+ mov 23(%rsi), %rdx
+ mov %rdx, 23(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 30(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $31, %cl
+ sub $31, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+
+ .p2align 4
+LABEL(tail_31):
+ mov (%rsi), %rcx
+ mov %rcx, (%rdi)
+ mov 8(%rsi), %rdx
+ mov %rdx, 8(%rdi)
+ mov 16(%rsi), %rcx
+ mov %rcx, 16(%rdi)
+ mov 24(%rsi), %rdx
+ mov %rdx, 24(%rdi)
+#ifdef USE_AS_STPCPY
+ lea 31(%rdi), %rax
+#endif
+#ifdef USE_AS_STRNCPY
+ mov $32, %cl
+ sub $32, %r8
+ jnz LABEL(strncpy_fill_tail)
+#ifdef USE_AS_STPCPY
+ cmpb $1, (%rax)
+ sbb $-1, %rax
+#endif
+#endif
+ ret
+ cfi_endproc
+ .size STRCPY_SSSE3, .-STRCPY_SSSE3
+
+ .p2align 4
+ .section .rodata.ssse3,"a",@progbits
+LABEL(tail_table):
+ .int LABEL(tail_0) - LABEL(tail_table)
+ .int LABEL(tail_1) - LABEL(tail_table)
+ .int LABEL(tail_2) - LABEL(tail_table)
+ .int LABEL(tail_3) - LABEL(tail_table)
+ .int LABEL(tail_4) - LABEL(tail_table)
+ .int LABEL(tail_5) - LABEL(tail_table)
+ .int LABEL(tail_6) - LABEL(tail_table)
+ .int LABEL(tail_7) - LABEL(tail_table)
+ .int LABEL(tail_8) - LABEL(tail_table)
+ .int LABEL(tail_9) - LABEL(tail_table)
+ .int LABEL(tail_10) - LABEL(tail_table)
+ .int LABEL(tail_11) - LABEL(tail_table)
+ .int LABEL(tail_12) - LABEL(tail_table)
+ .int LABEL(tail_13) - LABEL(tail_table)
+ .int LABEL(tail_14) - LABEL(tail_table)
+ .int LABEL(tail_15) - LABEL(tail_table)
+ .int LABEL(tail_16) - LABEL(tail_table)
+ .int LABEL(tail_17) - LABEL(tail_table)
+ .int LABEL(tail_18) - LABEL(tail_table)
+ .int LABEL(tail_19) - LABEL(tail_table)
+ .int LABEL(tail_20) - LABEL(tail_table)
+ .int LABEL(tail_21) - LABEL(tail_table)
+ .int LABEL(tail_22) - LABEL(tail_table)
+ .int LABEL(tail_23) - LABEL(tail_table)
+ .int LABEL(tail_24) - LABEL(tail_table)
+ .int LABEL(tail_25) - LABEL(tail_table)
+ .int LABEL(tail_26) - LABEL(tail_table)
+ .int LABEL(tail_27) - LABEL(tail_table)
+ .int LABEL(tail_28) - LABEL(tail_table)
+ .int LABEL(tail_29) - LABEL(tail_table)
+ .int LABEL(tail_30) - LABEL(tail_table)
+ .int LABEL(tail_31) - LABEL(tail_table)
+
+ .p2align 4
+LABEL(unaligned_table):
+ .int LABEL(ashr_0) - LABEL(unaligned_table)
+ .int LABEL(ashr_1) - LABEL(unaligned_table)
+ .int LABEL(ashr_2) - LABEL(unaligned_table)
+ .int LABEL(ashr_3) - LABEL(unaligned_table)
+ .int LABEL(ashr_4) - LABEL(unaligned_table)
+ .int LABEL(ashr_5) - LABEL(unaligned_table)
+ .int LABEL(ashr_6) - LABEL(unaligned_table)
+ .int LABEL(ashr_7) - LABEL(unaligned_table)
+ .int LABEL(ashr_8) - LABEL(unaligned_table)
+ .int LABEL(ashr_9) - LABEL(unaligned_table)
+ .int LABEL(ashr_10) - LABEL(unaligned_table)
+ .int LABEL(ashr_11) - LABEL(unaligned_table)
+ .int LABEL(ashr_12) - LABEL(unaligned_table)
+ .int LABEL(ashr_13) - LABEL(unaligned_table)
+ .int LABEL(ashr_14) - LABEL(unaligned_table)
+ .int LABEL(ashr_15) - LABEL(unaligned_table)
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type STRCPY_SSE2, @function; \
+ .align 16; \
+ STRCPY_SSE2: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size STRCPY_SSE2, .-STRCPY_SSE2
+# undef libc_hidden_builtin_def
+/* It doesn't make sense to send libc-internal strcpy calls through a PLT.
+ The speedup we get from using SSSE3 instruction is likely eaten away
+ by the indirect call in the PLT. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_STRCPY; __GI_STRCPY = STRCPY_SSE2
+# undef libc_hidden_def
+# define libc_hidden_def(name) \
+ .globl __GI___STRCPY; __GI___STRCPY = STRCPY_SSE2
+#endif
+
+#ifndef USE_AS_STRNCPY
+#include "../strcpy.S"
+#endif
diff --git a/sysdeps/x86_64/multiarch/strcspn-c.c b/sysdeps/x86_64/multiarch/strcspn-c.c
new file mode 100644
index 0000000000..daeebe1bf5
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strcspn-c.c
@@ -0,0 +1,314 @@
+/* strcspn with SSE4.2 intrinsics
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <nmmintrin.h>
+#include <string.h>
+
+/* We use 0x2:
+ _SIDD_SBYTE_OPS
+ | _SIDD_CMP_EQUAL_ANY
+ | _SIDD_POSITIVE_POLARITY
+ | _SIDD_LEAST_SIGNIFICANT
+ on pcmpistri to compare xmm/mem128
+
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ X X X X X X X X X X X X X X X X
+
+ against xmm
+
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ A A A A A A A A A A A A A A A A
+
+ to find out if the first 16byte data element has any byte A and
+ the offset of the first byte. There are 3 cases:
+
+ 1. The first 16byte data element has the byte A at the offset X.
+ 2. The first 16byte data element has EOS and doesn't have the byte A.
+ 3. The first 16byte data element is valid and doesn't have the byte A.
+
+ Here is the table of ECX, CFlag, ZFlag and SFlag for 2 cases:
+
+ 1 X 1 0/1 0
+ 2 16 0 1 0
+ 3 16 0 0 0
+
+ We exit from the loop for cases 1 and 2 with jbe which branches
+ when either CFlag or ZFlag is 1. If CFlag == 1, ECX has the offset
+ X for case 1. */
+
+#ifndef STRCSPN_SSE2
+# define STRCSPN_SSE2 __strcspn_sse2
+# define STRCSPN_SSE42 __strcspn_sse42
+#endif
+
+#ifdef USE_AS_STRPBRK
+# define RETURN(val1, val2) return val1
+#else
+# define RETURN(val1, val2) return val2
+#endif
+
+extern
+#ifdef USE_AS_STRPBRK
+char *
+#else
+size_t
+#endif
+STRCSPN_SSE2 (const char *, const char *);
+
+
+#ifdef USE_AS_STRPBRK
+char *
+#else
+size_t
+#endif
+__attribute__ ((section (".text.sse4.2")))
+STRCSPN_SSE42 (const char *s, const char *a)
+{
+ if (*a == 0)
+ RETURN (NULL, strlen (s));
+
+ const char *aligned;
+ __m128i mask;
+ /* Fake initialization. gcc otherwise will warn. */
+ asm ("" : "=xm" (mask));
+ int offset = (int) ((size_t) a & 15);
+ if (offset != 0)
+ {
+ /* Load masks. */
+ aligned = (const char *) ((size_t) a & -16L);
+ __m128i mask0 = _mm_load_si128 ((__m128i *) aligned);
+
+ switch (offset)
+ {
+ case 1:
+ mask = _mm_srli_si128 (mask0, 1);
+ break;
+ case 2:
+ mask = _mm_srli_si128 (mask0, 2);
+ break;
+ case 3:
+ mask = _mm_srli_si128 (mask0, 3);
+ break;
+ case 4:
+ mask = _mm_srli_si128 (mask0, 4);
+ break;
+ case 5:
+ mask = _mm_srli_si128 (mask0, 5);
+ break;
+ case 6:
+ mask = _mm_srli_si128 (mask0, 6);
+ break;
+ case 7:
+ mask = _mm_srli_si128 (mask0, 7);
+ break;
+ case 8:
+ mask = _mm_srli_si128 (mask0, 8);
+ break;
+ case 9:
+ mask = _mm_srli_si128 (mask0, 9);
+ break;
+ case 10:
+ mask = _mm_srli_si128 (mask0, 10);
+ break;
+ case 11:
+ mask = _mm_srli_si128 (mask0, 11);
+ break;
+ case 12:
+ mask = _mm_srli_si128 (mask0, 12);
+ break;
+ case 13:
+ mask = _mm_srli_si128 (mask0, 13);
+ break;
+ case 14:
+ mask = _mm_srli_si128 (mask0, 14);
+ break;
+ case 15:
+ mask = _mm_srli_si128 (mask0, 15);
+ break;
+ }
+
+ /* Find where the NULL terminator is. */
+ int length = _mm_cmpistri (mask, mask, 0x3a);
+ if (length == 16 - offset)
+ {
+ /* There is no NULL terminator. */
+ __m128i mask1 = _mm_load_si128 ((__m128i *) (aligned + 16));
+ int index = _mm_cmpistri (mask1, mask1, 0x3a);
+ length += index;
+
+ /* Don't use SSE4.2 if the length of A > 16. */
+ if (length > 16)
+ return STRCSPN_SSE2 (s, a);
+
+ if (index != 0)
+ {
+ /* Combine mask0 and mask1. */
+ switch (offset)
+ {
+ case 1:
+ mask = _mm_alignr_epi8 (mask1, mask0, 1);
+ break;
+ case 2:
+ mask = _mm_alignr_epi8 (mask1, mask0, 2);
+ break;
+ case 3:
+ mask = _mm_alignr_epi8 (mask1, mask0, 3);
+ break;
+ case 4:
+ mask = _mm_alignr_epi8 (mask1, mask0, 4);
+ break;
+ case 5:
+ mask = _mm_alignr_epi8 (mask1, mask0, 5);
+ break;
+ case 6:
+ mask = _mm_alignr_epi8 (mask1, mask0, 6);
+ break;
+ case 7:
+ mask = _mm_alignr_epi8 (mask1, mask0, 7);
+ break;
+ case 8:
+ mask = _mm_alignr_epi8 (mask1, mask0, 8);
+ break;
+ case 9:
+ mask = _mm_alignr_epi8 (mask1, mask0, 9);
+ break;
+ case 10:
+ mask = _mm_alignr_epi8 (mask1, mask0, 10);
+ break;
+ case 11:
+ mask = _mm_alignr_epi8 (mask1, mask0, 11);
+ break;
+ case 12:
+ mask = _mm_alignr_epi8 (mask1, mask0, 12);
+ break;
+ case 13:
+ mask = _mm_alignr_epi8 (mask1, mask0, 13);
+ break;
+ case 14:
+ mask = _mm_alignr_epi8 (mask1, mask0, 14);
+ break;
+ case 15:
+ mask = _mm_alignr_epi8 (mask1, mask0, 15);
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ /* A is aligned. */
+ mask = _mm_load_si128 ((__m128i *) a);
+
+ /* Find where the NULL terminator is. */
+ int length = _mm_cmpistri (mask, mask, 0x3a);
+ if (length == 16)
+ {
+ /* There is no NULL terminator. Don't use SSE4.2 if the length
+ of A > 16. */
+ if (a[16] != 0)
+ return STRCSPN_SSE2 (s, a);
+ }
+ }
+
+ offset = (int) ((size_t) s & 15);
+ if (offset != 0)
+ {
+ /* Check partial string. */
+ aligned = (const char *) ((size_t) s & -16L);
+ __m128i value = _mm_load_si128 ((__m128i *) aligned);
+
+ switch (offset)
+ {
+ case 1:
+ value = _mm_srli_si128 (value, 1);
+ break;
+ case 2:
+ value = _mm_srli_si128 (value, 2);
+ break;
+ case 3:
+ value = _mm_srli_si128 (value, 3);
+ break;
+ case 4:
+ value = _mm_srli_si128 (value, 4);
+ break;
+ case 5:
+ value = _mm_srli_si128 (value, 5);
+ break;
+ case 6:
+ value = _mm_srli_si128 (value, 6);
+ break;
+ case 7:
+ value = _mm_srli_si128 (value, 7);
+ break;
+ case 8:
+ value = _mm_srli_si128 (value, 8);
+ break;
+ case 9:
+ value = _mm_srli_si128 (value, 9);
+ break;
+ case 10:
+ value = _mm_srli_si128 (value, 10);
+ break;
+ case 11:
+ value = _mm_srli_si128 (value, 11);
+ break;
+ case 12:
+ value = _mm_srli_si128 (value, 12);
+ break;
+ case 13:
+ value = _mm_srli_si128 (value, 13);
+ break;
+ case 14:
+ value = _mm_srli_si128 (value, 14);
+ break;
+ case 15:
+ value = _mm_srli_si128 (value, 15);
+ break;
+ }
+
+ int length = _mm_cmpistri (mask, value, 0x2);
+ /* No need to check ZFlag since ZFlag is always 1. */
+ int cflag = _mm_cmpistrc (mask, value, 0x2);
+ if (cflag)
+ RETURN ((char *) (s + length), length);
+ /* Find where the NULL terminator is. */
+ int index = _mm_cmpistri (value, value, 0x3a);
+ if (index < 16 - offset)
+ RETURN (NULL, index);
+ aligned += 16;
+ }
+ else
+ aligned = s;
+
+ while (1)
+ {
+ __m128i value = _mm_load_si128 ((__m128i *) aligned);
+ int index = _mm_cmpistri (mask, value, 0x2);
+ int cflag = _mm_cmpistrc (mask, value, 0x2);
+ int zflag = _mm_cmpistrz (mask, value, 0x2);
+ if (cflag)
+ RETURN ((char *) (aligned + index), (size_t) (aligned + index - s));
+ if (zflag)
+ RETURN (NULL,
+ /* Find where the NULL terminator is. */
+ (size_t) (aligned + _mm_cmpistri (value, value, 0x3a) - s));
+ aligned += 16;
+ }
+}
diff --git a/sysdeps/x86_64/multiarch/strcspn.S b/sysdeps/x86_64/multiarch/strcspn.S
new file mode 100644
index 0000000000..f00d52c2c0
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strcspn.S
@@ -0,0 +1,82 @@
+/* Multiple versions of strcspn
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <config.h>
+
+#ifdef HAVE_SSE4_SUPPORT
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+#ifdef USE_AS_STRPBRK
+#define STRCSPN_SSE42 __strpbrk_sse42
+#define STRCSPN_SSE2 __strpbrk_sse2
+#define __GI_STRCSPN __GI_strpbrk
+#else
+#ifndef STRCSPN
+#define STRCSPN strcspn
+#define STRCSPN_SSE42 __strcspn_sse42
+#define STRCSPN_SSE2 __strcspn_sse2
+#define __GI_STRCSPN __GI_strcspn
+#endif
+#endif
+
+/* Define multiple versions only for the definition in libc. Don't
+ define multiple versions for strpbrk in static library since we
+ need strpbrk before the initialization happened. */
+#if (defined SHARED || !defined USE_AS_STRPBRK) && !defined NOT_IN_libc
+ .text
+ENTRY(STRCSPN)
+ .type STRCSPN, @gnu_indirect_function
+ cmpl $0, __cpu_features+KIND_OFFSET(%rip)
+ jne 1f
+ call __init_cpu_features
+1: leaq STRCSPN_SSE2(%rip), %rax
+ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
+ jz 2f
+ leaq STRCSPN_SSE42(%rip), %rax
+2: ret
+END(STRCSPN)
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type STRCSPN_SSE2, @function; \
+ .globl STRCSPN_SSE2; \
+ .align 16; \
+ STRCSPN_SSE2: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size STRCSPN_SSE2, .-STRCSPN_SSE2
+# undef libc_hidden_builtin_def
+/* It doesn't make sense to send libc-internal strcspn calls through a PLT.
+ The speedup we get from using SSE4.2 instruction is likely eaten away
+ by the indirect call in the PLT. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_STRCSPN; __GI_STRCSPN = STRCSPN_SSE2
+#endif
+
+#endif /* HAVE_SSE4_SUPPORT */
+
+#ifdef USE_AS_STRPBRK
+#include "../strpbrk.S"
+#else
+#include "../strcspn.S"
+#endif
diff --git a/sysdeps/alpha/alphaev67/ffsll.S b/sysdeps/x86_64/multiarch/strend-sse4.S
index 72ef094189..c3220b3386 100644
--- a/sysdeps/alpha/alphaev67/ffsll.S
+++ b/sysdeps/x86_64/multiarch/strend-sse4.S
@@ -1,4 +1,6 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Return the pointer to the end of string, using SSE4.2
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,30 +18,32 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-/* Finds the first bit set in a long. */
-
#include <sysdep.h>
-
- .arch ev6
- .set noreorder
- .set noat
-
-ENTRY(ffsl)
-#ifdef PROF
- ldgp gp, 0(pv)
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .prologue 1
-#else
- .prologue 0
-#endif
-
- cttz $16, $0
- addq $0, 1, $0
- cmoveq $16, 0, $0
+#include "asm-syntax.h"
+
+ .section .text.sse4.2,"ax",@progbits
+ENTRY (__strend_sse4)
+ pxor %xmm2, %xmm2
+ movq %rdi, %rcx
+ andq $~15, %rdi
+ movdqa %xmm2, %xmm1
+ pcmpeqb (%rdi), %xmm2
+ orl $0xffffffff, %esi
+ subq %rdi, %rcx
+ shll %cl, %esi
+ pmovmskb %xmm2, %edx
+ andl %esi, %edx
+ jnz 1f
+
+2: pcmpistri $0x08, 16(%rdi), %xmm1
+ leaq 16(%rdi), %rdi
+ jnz 2b
+
+ leaq (%rdi,%rcx), %rax
ret
-END(ffsl)
+1: bsfl %edx, %eax
+ addq %rdi, %rax
+ ret
-weak_extern (ffsl)
-weak_alias (ffsl, ffsll)
+END (__strend_sse4)
diff --git a/sysdeps/x86_64/multiarch/strlen.S b/sysdeps/x86_64/multiarch/strlen.S
new file mode 100644
index 0000000000..f9641131fa
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strlen.S
@@ -0,0 +1,125 @@
+/* strlen(str) -- determine the length of the string STR.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@redhat.com>.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+
+/* Define multiple versions only for the definition in libc and for
+ the DSO. In static binaries we need strlen before the initialization
+ happened. */
+#if defined SHARED && !defined NOT_IN_libc
+ .text
+ENTRY(strlen)
+ .type strlen, @gnu_indirect_function
+ cmpl $0, __cpu_features+KIND_OFFSET(%rip)
+ jne 1f
+ call __init_cpu_features
+1: leaq __strlen_sse2(%rip), %rax
+ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
+ jz 2f
+ leaq __strlen_sse42(%rip), %rax
+2: ret
+END(strlen)
+
+
+ .section .text.sse4.2,"ax",@progbits
+ .align 16
+ .type __strlen_sse42, @function
+__strlen_sse42:
+ cfi_startproc
+ CALL_MCOUNT
+ pxor %xmm1, %xmm1
+ movl %edi, %ecx
+ movq %rdi, %r8
+ andq $~15, %rdi
+ xor %edi, %ecx
+ pcmpeqb (%rdi), %xmm1
+ pmovmskb %xmm1, %edx
+ shrl %cl, %edx
+ shll %cl, %edx
+ andl %edx, %edx
+ jnz L(less16bytes)
+ pxor %xmm1, %xmm1
+
+ .p2align 4
+L(more64bytes_loop):
+ pcmpistri $0x08, 16(%rdi), %xmm1
+ jz L(more32bytes)
+
+ pcmpistri $0x08, 32(%rdi), %xmm1
+ jz L(more48bytes)
+
+ pcmpistri $0x08, 48(%rdi), %xmm1
+ jz L(more64bytes)
+
+ add $64, %rdi
+ pcmpistri $0x08, (%rdi), %xmm1
+ jnz L(more64bytes_loop)
+ leaq (%rdi,%rcx), %rax
+ subq %r8, %rax
+ ret
+
+ .p2align 4
+L(more32bytes):
+ leaq 16(%rdi,%rcx, 1), %rax
+ subq %r8, %rax
+ ret
+
+ .p2align 4
+L(more48bytes):
+ leaq 32(%rdi,%rcx, 1), %rax
+ subq %r8, %rax
+ ret
+
+ .p2align 4
+L(more64bytes):
+ leaq 48(%rdi,%rcx, 1), %rax
+ subq %r8, %rax
+ ret
+
+ .p2align 4
+L(less16bytes):
+ subq %r8, %rdi
+ bsfl %edx, %eax
+ addq %rdi, %rax
+ ret
+ cfi_endproc
+ .size __strlen_sse42, .-__strlen_sse42
+
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __strlen_sse2, @function; \
+ .align 16; \
+ __strlen_sse2: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __strlen_sse2, .-__strlen_sse2
+# undef libc_hidden_builtin_def
+/* It doesn't make sense to send libc-internal strlen calls through a PLT.
+ The speedup we get from using SSE4.2 instruction is likely eaten away
+ by the indirect call in the PLT. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_strlen; __GI_strlen = __strlen_sse2
+#endif
+
+#include "../strlen.S"
diff --git a/sysdeps/x86_64/multiarch/strncmp-ssse3.S b/sysdeps/x86_64/multiarch/strncmp-ssse3.S
new file mode 100644
index 0000000000..a320a3e949
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strncmp-ssse3.S
@@ -0,0 +1,4 @@
+#define USE_SSSE3 1
+#define STRCMP __strncmp_ssse3
+#define USE_AS_STRNCMP
+#include "../strcmp.S"
diff --git a/sysdeps/x86_64/multiarch/strncmp.S b/sysdeps/x86_64/multiarch/strncmp.S
new file mode 100644
index 0000000000..0af34e7f15
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strncmp.S
@@ -0,0 +1,3 @@
+#define STRCMP strncmp
+#define USE_AS_STRNCMP
+#include "strcmp.S"
diff --git a/sysdeps/x86_64/multiarch/strncpy-c.c b/sysdeps/x86_64/multiarch/strncpy-c.c
new file mode 100644
index 0000000000..296c32cb5d
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strncpy-c.c
@@ -0,0 +1,8 @@
+#define STRNCPY __strncpy_sse2
+#ifdef SHARED
+#undef libc_hidden_builtin_def
+#define libc_hidden_builtin_def(name) \
+ __hidden_ver1 (__strncpy_sse2, __GI_strncpy, __strncpy_sse2);
+#endif
+
+#include "strncpy.c"
diff --git a/sysdeps/x86_64/multiarch/strncpy.S b/sysdeps/x86_64/multiarch/strncpy.S
new file mode 100644
index 0000000000..327a4ce447
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strncpy.S
@@ -0,0 +1,3 @@
+#define STRCPY strncpy
+#define USE_AS_STRNCPY
+#include "strcpy.S"
diff --git a/sysdeps/x86_64/multiarch/strpbrk-c.c b/sysdeps/x86_64/multiarch/strpbrk-c.c
new file mode 100644
index 0000000000..c58dcb5605
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strpbrk-c.c
@@ -0,0 +1,4 @@
+#define USE_AS_STRPBRK
+#define STRCSPN_SSE2 __strpbrk_sse2
+#define STRCSPN_SSE42 __strpbrk_sse42
+#include "strcspn-c.c"
diff --git a/sysdeps/x86_64/multiarch/strpbrk.S b/sysdeps/x86_64/multiarch/strpbrk.S
new file mode 100644
index 0000000000..ed5bca6a94
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strpbrk.S
@@ -0,0 +1,3 @@
+#define STRCSPN strpbrk
+#define USE_AS_STRPBRK
+#include "strcspn.S"
diff --git a/sysdeps/x86_64/multiarch/strrchr.S b/sysdeps/x86_64/multiarch/strrchr.S
new file mode 100644
index 0000000000..0d17fdb585
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strrchr.S
@@ -0,0 +1,278 @@
+/* strrchr with SSE4.2
+ Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+
+/* Define multiple versions only for the definition in libc and for
+ the DSO. In static binaries we need strrchr before the initialization
+ happened. */
+#if defined SHARED && !defined NOT_IN_libc
+ .text
+ENTRY(strrchr)
+ .type strrchr, @gnu_indirect_function
+ cmpl $0, __cpu_features+KIND_OFFSET(%rip)
+ jne 1f
+ call __init_cpu_features
+1: leaq __strrchr_sse2(%rip), %rax
+ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
+ jz 2f
+ leaq __strrchr_sse42(%rip), %rax
+2: ret
+END(strrchr)
+
+/*
+ This implementation uses SSE4 instructions to compare up to 16 bytes
+ at a time looking for the last occurrence of the character c in the
+ string s:
+
+ char *strrchr (const char *s, int c);
+
+ We use 0x4a:
+ _SIDD_SBYTE_OPS
+ | _SIDD_CMP_EQUAL_EACH
+ | _SIDD_MOST_SIGNIFICANT
+ on pcmpistri to compare xmm/mem128
+
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ X X X X X X X X X X X X X X X X
+
+ against xmm
+
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ C C C C C C C C C C C C C C C C
+
+ to find out if the first 16byte data element has a byte C and the
+ last offset. There are 4 cases:
+
+ 1. The first 16byte data element has EOS and has the byte C at the
+ last offset X.
+ 2. The first 16byte data element is valid and has the byte C at the
+ last offset X.
+ 3. The first 16byte data element has EOS and doesn't have the byte C.
+ 4. The first 16byte data element is valid and doesn't have the byte C.
+
+ Here is the table of ECX, CFlag, ZFlag and SFlag for 3 cases:
+
+ case ECX CFlag ZFlag SFlag
+ 1 X 1 1 0
+ 2 X 1 0 0
+ 3 16 0 1 0
+ 4 16 0 0 0
+
+ We exit from the loop for cases 1 and 3 with jz which branches
+ when ZFlag is 1. If CFlag == 1, ECX has the offset X for case 1. */
+
+
+ .section .text.sse4.2,"ax",@progbits
+ .align 16
+ .type __strrchr_sse42, @function
+__strrchr_sse42:
+ cfi_startproc
+ CALL_MCOUNT
+ testb %sil, %sil
+ je __strend_sse4
+ xor %eax,%eax /* RAX has the last occurrence of s. */
+ movd %esi, %xmm1
+ punpcklbw %xmm1, %xmm1
+ movl %edi, %esi
+ punpcklbw %xmm1, %xmm1
+ andl $15, %esi
+ pshufd $0, %xmm1, %xmm1
+ movq %rdi, %r8
+ je L(loop)
+
+/* Handle unaligned string using psrldq. */
+ leaq L(psrldq_table)(%rip), %rdx
+ andq $-16, %r8
+ movslq (%rdx,%rsi,4),%r9
+ movdqa (%r8), %xmm0
+ addq %rdx, %r9
+ jmp *%r9
+
+/* Handle unaligned string with offset 1 using psrldq. */
+ .p2align 4
+L(psrldq_1):
+ psrldq $1, %xmm0
+
+ .p2align 4
+L(unaligned_pcmpistri):
+ pcmpistri $0x4a, %xmm1, %xmm0
+ jnc L(unaligned_no_byte)
+ leaq (%rdi,%rcx), %rax
+L(unaligned_no_byte):
+ /* Find the length of the unaligned string. */
+ pcmpistri $0x3a, %xmm0, %xmm0
+ movl $16, %edx
+ subl %esi, %edx
+ cmpl %ecx, %edx
+ /* Return RAX if the unaligned fragment to next 16B already
+ contain the NULL terminator. */
+ jg L(exit)
+ addq $16, %r8
+
+/* Loop start on aligned string. */
+ .p2align 4
+L(loop):
+ pcmpistri $0x4a, (%r8), %xmm1
+ jbe L(match_or_eos)
+ addq $16, %r8
+ jmp L(loop)
+ .p2align 4
+L(match_or_eos):
+ je L(had_eos)
+L(match_no_eos):
+ leaq (%r8,%rcx), %rax
+ addq $16, %r8
+ jmp L(loop)
+ .p2align 4
+L(had_eos):
+ jnc L(exit)
+ leaq (%r8,%rcx), %rax
+ .p2align 4
+L(exit):
+ ret
+
+/* Handle unaligned string with offset 15 using psrldq. */
+ .p2align 4
+L(psrldq_15):
+ psrldq $15, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+/* Handle unaligned string with offset 14 using psrldq. */
+ .p2align 4
+L(psrldq_14):
+ psrldq $14, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+/* Handle unaligned string with offset 13 using psrldq. */
+ .p2align 4
+L(psrldq_13):
+ psrldq $13, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+/* Handle unaligned string with offset 12 using psrldq. */
+ .p2align 4
+L(psrldq_12):
+ psrldq $12, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+/* Handle unaligned string with offset 11 using psrldq. */
+ .p2align 4
+L(psrldq_11):
+ psrldq $11, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+/* Handle unaligned string with offset 10 using psrldq. */
+ .p2align 4
+L(psrldq_10):
+ psrldq $10, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+/* Handle unaligned string with offset 9 using psrldq. */
+ .p2align 4
+L(psrldq_9):
+ psrldq $9, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+/* Handle unaligned string with offset 8 using psrldq. */
+ .p2align 4
+L(psrldq_8):
+ psrldq $8, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+/* Handle unaligned string with offset 7 using psrldq. */
+ .p2align 4
+L(psrldq_7):
+ psrldq $7, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+/* Handle unaligned string with offset 6 using psrldq. */
+ .p2align 4
+L(psrldq_6):
+ psrldq $6, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+/* Handle unaligned string with offset 5 using psrldq. */
+ .p2align 4
+L(psrldq_5):
+ psrldq $5, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+/* Handle unaligned string with offset 4 using psrldq. */
+ .p2align 4
+L(psrldq_4):
+ psrldq $4, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+/* Handle unaligned string with offset 3 using psrldq. */
+ .p2align 4
+L(psrldq_3):
+ psrldq $3, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+/* Handle unaligned string with offset 2 using psrldq. */
+ .p2align 4
+L(psrldq_2):
+ psrldq $2, %xmm0
+ jmp L(unaligned_pcmpistri)
+
+ cfi_endproc
+ .size __strrchr_sse42, .-__strrchr_sse42
+
+ .section .rodata.sse4.2,"a",@progbits
+ .p2align 4
+L(psrldq_table):
+ .int L(loop) - L(psrldq_table)
+ .int L(psrldq_1) - L(psrldq_table)
+ .int L(psrldq_2) - L(psrldq_table)
+ .int L(psrldq_3) - L(psrldq_table)
+ .int L(psrldq_4) - L(psrldq_table)
+ .int L(psrldq_5) - L(psrldq_table)
+ .int L(psrldq_6) - L(psrldq_table)
+ .int L(psrldq_7) - L(psrldq_table)
+ .int L(psrldq_8) - L(psrldq_table)
+ .int L(psrldq_9) - L(psrldq_table)
+ .int L(psrldq_10) - L(psrldq_table)
+ .int L(psrldq_11) - L(psrldq_table)
+ .int L(psrldq_12) - L(psrldq_table)
+ .int L(psrldq_13) - L(psrldq_table)
+ .int L(psrldq_14) - L(psrldq_table)
+ .int L(psrldq_15) - L(psrldq_table)
+
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __strrchr_sse2, @function; \
+ .align 16; \
+ __strrchr_sse2: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __strrchr_sse2, .-__strrchr_sse2
+# undef libc_hidden_builtin_def
+/* It doesn't make sense to send libc-internal strrchr calls through a PLT.
+ The speedup we get from using SSE4.2 instruction is likely eaten away
+ by the indirect call in the PLT. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_strrchr; __GI_strrchr = __strrchr_sse2
+#endif
+
+#include "../strrchr.S"
diff --git a/sysdeps/x86_64/multiarch/strspn-c.c b/sysdeps/x86_64/multiarch/strspn-c.c
new file mode 100644
index 0000000000..be9e8ac0a8
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strspn-c.c
@@ -0,0 +1,284 @@
+/* strspn with SSE4.2 intrinsics
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <nmmintrin.h>
+#include <string.h>
+
+/* We use 0x12:
+ _SIDD_SBYTE_OPS
+ | _SIDD_CMP_EQUAL_ANY
+ | _SIDD_NEGATIVE_POLARITY
+ | _SIDD_LEAST_SIGNIFICANT
+ on pcmpistri to compare xmm/mem128
+
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ X X X X X X X X X X X X X X X X
+
+ against xmm
+
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ A A A A A A A A A A A A A A A A
+
+ to find out if the first 16byte data element has any non-A byte and
+ the offset of the first byte. There are 2 cases:
+
+ 1. The first 16byte data element has the non-A byte, including
+ EOS, at the offset X.
+ 2. The first 16byte data element is valid and doesn't have the non-A
+ byte.
+
+ Here is the table of ECX, CFlag, ZFlag and SFlag for 2 cases:
+
+ case ECX CFlag ZFlag SFlag
+ 1 X 1 0/1 0
+ 2 16 0 0 0
+
+ We exit from the loop for case 1. */
+
+extern size_t __strspn_sse2 (const char *, const char *);
+
+
+size_t
+__attribute__ ((section (".text.sse4.2")))
+__strspn_sse42 (const char *s, const char *a)
+{
+ if (*a == 0)
+ return 0;
+
+ const char *aligned;
+ __m128i mask;
+ int offset = (int) ((size_t) a & 15);
+ if (offset != 0)
+ {
+ /* Load masks. */
+ aligned = (const char *) ((size_t) a & -16L);
+ __m128i mask0 = _mm_load_si128 ((__m128i *) aligned);
+
+ switch (offset)
+ {
+ case 1:
+ mask = _mm_srli_si128 (mask0, 1);
+ break;
+ case 2:
+ mask = _mm_srli_si128 (mask0, 2);
+ break;
+ case 3:
+ mask = _mm_srli_si128 (mask0, 3);
+ break;
+ case 4:
+ mask = _mm_srli_si128 (mask0, 4);
+ break;
+ case 5:
+ mask = _mm_srli_si128 (mask0, 5);
+ break;
+ case 6:
+ mask = _mm_srli_si128 (mask0, 6);
+ break;
+ case 7:
+ mask = _mm_srli_si128 (mask0, 7);
+ break;
+ case 8:
+ mask = _mm_srli_si128 (mask0, 8);
+ break;
+ case 9:
+ mask = _mm_srli_si128 (mask0, 9);
+ break;
+ case 10:
+ mask = _mm_srli_si128 (mask0, 10);
+ break;
+ case 11:
+ mask = _mm_srli_si128 (mask0, 11);
+ break;
+ case 12:
+ mask = _mm_srli_si128 (mask0, 12);
+ break;
+ case 13:
+ mask = _mm_srli_si128 (mask0, 13);
+ break;
+ case 14:
+ mask = _mm_srli_si128 (mask0, 14);
+ break;
+ case 15:
+ mask = _mm_srli_si128 (mask0, 15);
+ break;
+ }
+
+ /* Find where the NULL terminator is. */
+ int length = _mm_cmpistri (mask, mask, 0x3a);
+ if (length == 16 - offset)
+ {
+ /* There is no NULL terminator. */
+ __m128i mask1 = _mm_load_si128 ((__m128i *) (aligned + 16));
+ int index = _mm_cmpistri (mask1, mask1, 0x3a);
+ length += index;
+
+ /* Don't use SSE4.2 if the length of A > 16. */
+ if (length > 16)
+ return __strspn_sse2 (s, a);
+
+ if (index != 0)
+ {
+ /* Combine mask0 and mask1. */
+ switch (offset)
+ {
+ case 1:
+ mask = _mm_alignr_epi8 (mask1, mask0, 1);
+ break;
+ case 2:
+ mask = _mm_alignr_epi8 (mask1, mask0, 2);
+ break;
+ case 3:
+ mask = _mm_alignr_epi8 (mask1, mask0, 3);
+ break;
+ case 4:
+ mask = _mm_alignr_epi8 (mask1, mask0, 4);
+ break;
+ case 5:
+ mask = _mm_alignr_epi8 (mask1, mask0, 5);
+ break;
+ case 6:
+ mask = _mm_alignr_epi8 (mask1, mask0, 6);
+ break;
+ case 7:
+ mask = _mm_alignr_epi8 (mask1, mask0, 7);
+ break;
+ case 8:
+ mask = _mm_alignr_epi8 (mask1, mask0, 8);
+ break;
+ case 9:
+ mask = _mm_alignr_epi8 (mask1, mask0, 9);
+ break;
+ case 10:
+ mask = _mm_alignr_epi8 (mask1, mask0, 10);
+ break;
+ case 11:
+ mask = _mm_alignr_epi8 (mask1, mask0, 11);
+ break;
+ case 12:
+ mask = _mm_alignr_epi8 (mask1, mask0, 12);
+ break;
+ case 13:
+ mask = _mm_alignr_epi8 (mask1, mask0, 13);
+ break;
+ case 14:
+ mask = _mm_alignr_epi8 (mask1, mask0, 14);
+ break;
+ case 15:
+ mask = _mm_alignr_epi8 (mask1, mask0, 15);
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ /* A is aligned. */
+ mask = _mm_load_si128 ((__m128i *) a);
+
+ /* Find where the NULL terminator is. */
+ int length = _mm_cmpistri (mask, mask, 0x3a);
+ if (length == 16)
+ {
+ /* There is no NULL terminator. Don't use SSE4.2 if the length
+ of A > 16. */
+ if (a[16] != 0)
+ return __strspn_sse2 (s, a);
+ }
+ }
+
+ offset = (int) ((size_t) s & 15);
+ if (offset != 0)
+ {
+ /* Check partial string. */
+ aligned = (const char *) ((size_t) s & -16L);
+ __m128i value = _mm_load_si128 ((__m128i *) aligned);
+
+ switch (offset)
+ {
+ case 1:
+ value = _mm_srli_si128 (value, 1);
+ break;
+ case 2:
+ value = _mm_srli_si128 (value, 2);
+ break;
+ case 3:
+ value = _mm_srli_si128 (value, 3);
+ break;
+ case 4:
+ value = _mm_srli_si128 (value, 4);
+ break;
+ case 5:
+ value = _mm_srli_si128 (value, 5);
+ break;
+ case 6:
+ value = _mm_srli_si128 (value, 6);
+ break;
+ case 7:
+ value = _mm_srli_si128 (value, 7);
+ break;
+ case 8:
+ value = _mm_srli_si128 (value, 8);
+ break;
+ case 9:
+ value = _mm_srli_si128 (value, 9);
+ break;
+ case 10:
+ value = _mm_srli_si128 (value, 10);
+ break;
+ case 11:
+ value = _mm_srli_si128 (value, 11);
+ break;
+ case 12:
+ value = _mm_srli_si128 (value, 12);
+ break;
+ case 13:
+ value = _mm_srli_si128 (value, 13);
+ break;
+ case 14:
+ value = _mm_srli_si128 (value, 14);
+ break;
+ case 15:
+ value = _mm_srli_si128 (value, 15);
+ break;
+ }
+
+ int length = _mm_cmpistri (mask, value, 0x12);
+ /* No need to check CFlag since it is always 1. */
+ if (length < 16 - offset)
+ return length;
+ /* Find where the NULL terminator is. */
+ int index = _mm_cmpistri (value, value, 0x3a);
+ if (index < 16 - offset)
+ return length;
+ aligned += 16;
+ }
+ else
+ aligned = s;
+
+ while (1)
+ {
+ __m128i value = _mm_load_si128 ((__m128i *) aligned);
+ int index = _mm_cmpistri (mask, value, 0x12);
+ int cflag = _mm_cmpistrc (mask, value, 0x12);
+ if (cflag)
+ return (size_t) (aligned + index - s);
+ aligned += 16;
+ }
+}
diff --git a/sysdeps/x86_64/multiarch/strspn.S b/sysdeps/x86_64/multiarch/strspn.S
new file mode 100644
index 0000000000..1c5662692b
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strspn.S
@@ -0,0 +1,63 @@
+/* Multiple versions of strspn
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <config.h>
+
+#ifdef HAVE_SSE4_SUPPORT
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in libc. */
+#ifndef NOT_IN_libc
+ .text
+ENTRY(strspn)
+ .type strspn, @gnu_indirect_function
+ cmpl $0, __cpu_features+KIND_OFFSET(%rip)
+ jne 1f
+ call __init_cpu_features
+1: leaq __strspn_sse2(%rip), %rax
+ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
+ jz 2f
+ leaq __strspn_sse42(%rip), %rax
+2: ret
+END(strspn)
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __strspn_sse2, @function; \
+ .globl __strspn_sse2; \
+ .align 16; \
+ __strspn_sse2: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __strspn_sse2, .-__strspn_sse2
+# undef libc_hidden_builtin_def
+/* It doesn't make sense to send libc-internal strspn calls through a PLT.
+ The speedup we get from using SSE4.2 instruction is likely eaten away
+ by the indirect call in the PLT. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_strspn; __GI_strspn = __strspn_sse2
+#endif
+
+#endif /* HAVE_SSE4_SUPPORT */
+
+#include "../strspn.S"
diff --git a/sysdeps/x86_64/multiarch/strstr-c.c b/sysdeps/x86_64/multiarch/strstr-c.c
new file mode 100644
index 0000000000..b8ed3161d5
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strstr-c.c
@@ -0,0 +1,15 @@
+#include "init-arch.h"
+
+#define STRSTR __strstr_sse2
+#ifdef SHARED
+# undef libc_hidden_builtin_def
+# define libc_hidden_builtin_def(name) \
+ __hidden_ver1 (__strstr_sse2, __GI_strstr, __strstr_sse2);
+#endif
+
+#include "string/strstr.c"
+
+extern char *__strstr_sse42 (const char *, const char *) attribute_hidden;
+extern __typeof (__strstr_sse2) __strstr_sse2 attribute_hidden;
+
+libc_ifunc (strstr, HAS_SSE4_2 ? __strstr_sse42 : __strstr_sse2);
diff --git a/sysdeps/x86_64/multiarch/strstr.c b/sysdeps/x86_64/multiarch/strstr.c
new file mode 100644
index 0000000000..76d5ad16df
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strstr.c
@@ -0,0 +1,464 @@
+/* strstr with SSE4.2 intrinsics
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <nmmintrin.h>
+
+#ifndef STRSTR_SSE42
+# define STRSTR_SSE42 __strstr_sse42
+#endif
+
+#ifdef USE_AS_STRCASESTR
+# include <ctype.h>
+# include <locale/localeinfo.h>
+
+# define LOADBYTE(C) tolower (C)
+# define CMPBYTE(C1, C2) (tolower (C1) == tolower (C2))
+#else
+# define LOADBYTE(C) (C)
+# define CMPBYTE(C1, C2) ((C1) == (C2))
+#endif
+
+/* We use 0xe ordered-compare:
+ _SIDD_SBYTE_OPS
+ | _SIDD_CMP_EQUAL_ORDER
+ | _SIDD_LEAST_SIGNIFICANT
+ on pcmpistri to do the scanning and string comparsion requirements of
+ sub-string match. In the scanning phase, we process Cflag and ECX
+ index to locate the first fragment match; once the first fragment
+ match position has been identified, we do comparison of subsequent
+ string fragments until we can conclude false or true match; whe
+ n concluding a false match, we may need to repeat scanning process
+ from next relevant offset in the target string.
+
+ In the scanning phase we have 4 cases:
+ case ECX CFlag ZFlag SFlag
+ 1 16 0 0 0
+ 2a 16 0 0 1
+ 2b 16 0 1 0
+ 2c 16 0 1 1
+
+ 1. No ordered-comparison match, both 16B fragments are valid, so
+ continue to next fragment.
+ 2. No ordered-comparison match, there is EOS in either fragment,
+ 2a. Zflg = 0, Sflg = 1, we continue
+ 2b. Zflg = 1, Sflg = 0, we conclude no match and return.
+ 2c. Zflg = 1, sflg = 1, lenth determine match or no match
+
+ In the string comparison phase, the 1st fragment match is fixed up
+ to produce ECX = 0. Subsequent fragment compare of nonzero index
+ and no match conclude a false match.
+
+ case ECX CFlag ZFlag SFlag
+ 3 X 1 0 0/1
+ 4a 0 1 0 0
+ 4b 0 1 0 1
+ 4c 0 < X 1 0 0/1
+ 5 16 0 1 0
+
+ 3. An initial ordered-comparison fragment match, we fix up to do
+ subsequent string comparison
+ 4a. Continuation of fragment comparison of a string compare.
+ 4b. EOS reached in the reference string, we conclude true match and
+ return
+ 4c. String compare failed if index is nonzero, we need to go back to
+ scanning
+ 5. failed string compare, go back to scanning
+ */
+
+/* Fix-up of removal of unneeded data due to 16B aligned load
+ parameters:
+ value: 16B data loaded from 16B aligned address.
+ offset: Offset of target data address relative to 16B aligned load
+ address.
+ */
+
+static __inline__ __m128i
+__m128i_shift_right (__m128i value, int offset)
+{
+ switch (offset)
+ {
+ case 1:
+ value = _mm_srli_si128 (value, 1);
+ break;
+ case 2:
+ value = _mm_srli_si128 (value, 2);
+ break;
+ case 3:
+ value = _mm_srli_si128 (value, 3);
+ break;
+ case 4:
+ value = _mm_srli_si128 (value, 4);
+ break;
+ case 5:
+ value = _mm_srli_si128 (value, 5);
+ break;
+ case 6:
+ value = _mm_srli_si128 (value, 6);
+ break;
+ case 7:
+ value = _mm_srli_si128 (value, 7);
+ break;
+ case 8:
+ value = _mm_srli_si128 (value, 8);
+ break;
+ case 9:
+ value = _mm_srli_si128 (value, 9);
+ break;
+ case 10:
+ value = _mm_srli_si128 (value, 10);
+ break;
+ case 11:
+ value = _mm_srli_si128 (value, 11);
+ break;
+ case 12:
+ value = _mm_srli_si128 (value, 12);
+ break;
+ case 13:
+ value = _mm_srli_si128 (value, 13);
+ break;
+ case 14:
+ value = _mm_srli_si128 (value, 14);
+ break;
+ case 15:
+ value = _mm_srli_si128 (value, 15);
+ break;
+ }
+ return value;
+}
+
+/* Simple replacement of movdqu to address 4KB boundary cross issue.
+ If EOS occurs within less than 16B before 4KB boundary, we don't
+ cross to next page. */
+
+static __m128i
+__attribute__ ((section (".text.sse4.2")))
+__m128i_strloadu (const unsigned char * p)
+{
+ int offset = ((size_t) p & (16 - 1));
+
+ if (offset && (int) ((size_t) p & 0xfff) > 0xff0)
+ {
+ __m128i a = _mm_load_si128 ((__m128i *) (p - offset));
+ __m128i zero = _mm_setzero_si128 ();
+ int bmsk = _mm_movemask_epi8 (_mm_cmpeq_epi8 (a, zero));
+ if ((bmsk >> offset) != 0)
+ return __m128i_shift_right (a, offset);
+ }
+ return _mm_loadu_si128 ((__m128i *) p);
+}
+
+#ifdef USE_AS_STRCASESTR
+
+/* Similar to __m128i_strloadu. Convert to lower case for POSIX/C
+ locale. */
+
+static __m128i
+__attribute__ ((section (".text.sse4.2")))
+__m128i_strloadu_tolower_posix (const unsigned char * p)
+{
+ __m128i frag = __m128i_strloadu (p);
+
+ /* Convert frag to lower case for POSIX/C locale. */
+ __m128i rangeuc = _mm_set_epi64x (0x0, 0x5a41);
+ __m128i u2ldelta = _mm_set1_epi64x (0xe0e0e0e0e0e0e0e0);
+ __m128i mask1 = _mm_cmpistrm (rangeuc, frag, 0x44);
+ __m128i mask2 = _mm_blendv_epi8 (u2ldelta, frag, mask1);
+ mask2 = _mm_sub_epi8 (mask2, u2ldelta);
+ return _mm_blendv_epi8 (frag, mask2, mask1);
+}
+
+/* Similar to __m128i_strloadu. Convert to lower case for none-POSIX/C
+ locale. */
+
+static __m128i
+__attribute__ ((section (".text.sse4.2")))
+__m128i_strloadu_tolower (const unsigned char * p)
+{
+ union
+ {
+ char b[16];
+ __m128i x;
+ } u;
+
+ for (int i = 0; i < 16; i++)
+ if (p[i] == 0)
+ {
+ u.b[i] = 0;
+ break;
+ }
+ else
+ u.b[i] = tolower (p[i]);
+
+ return u.x;
+}
+#endif
+
+/* Calculate Knuth-Morris-Pratt string searching algorithm (or KMP
+ algorithm) overlap for a fully populated 16B vector.
+ Input parameter: 1st 16Byte loaded from the reference string of a
+ strstr function.
+ We don't use KMP algorithm if reference string is less than 16B.
+ */
+
+static int
+__inline__ __attribute__ ((__always_inline__,))
+KMP16Bovrlap (__m128i s2)
+{
+ __m128i b = _mm_unpacklo_epi8 (s2, s2);
+ __m128i a = _mm_unpacklo_epi8 (b, b);
+ a = _mm_shuffle_epi32 (a, 0);
+ b = _mm_srli_si128 (s2, sizeof (char));
+ int bmsk = _mm_movemask_epi8 (_mm_cmpeq_epi8 (b, a));
+
+ /* _BitScanForward(&k1, bmsk); */
+ int k1;
+ __asm ("bsfl %[bmsk], %[k1]" : [k1] "=r" (k1) : [bmsk] "r" (bmsk));
+ if (!bmsk)
+ return 16;
+ else if (bmsk == 0x7fff)
+ return 1;
+ else if (!k1)
+ {
+ /* There are al least two ditinct char in s2. If byte 0 and 1 are
+ idential and the distinct value lies farther down, we can deduce
+ the next byte offset to restart full compare is least no earlier
+ than byte 3. */
+ return 3;
+ }
+ else
+ {
+ /* Byte 1 is not degenerated to byte 0. */
+ return k1 + 1;
+ }
+}
+
+char *
+__attribute__ ((section (".text.sse4.2")))
+STRSTR_SSE42 (const unsigned char *s1, const unsigned char *s2)
+{
+#define p1 s1
+ const unsigned char *p2 = s2;
+
+ if (p2[0] == '\0')
+ return (char *) p1;
+
+ if (p1[0] == '\0')
+ return NULL;
+
+ /* Check if p1 length is 1 byte long. */
+ if (p1[1] == '\0')
+ return p2[1] == '\0' && CMPBYTE (p1[0], p2[0]) ? (char *) p1 : NULL;
+
+#ifdef USE_AS_STRCASESTR
+ __m128i (*strloadu) (const unsigned char *);
+
+ if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_NONASCII_CASE) == 0)
+ strloadu = __m128i_strloadu_tolower_posix;
+ else
+ strloadu = __m128i_strloadu_tolower;
+#else
+# define strloadu __m128i_strloadu
+#endif
+
+ /* p1 > 1 byte long. Load up to 16 bytes of fragment. */
+ __m128i frag1 = strloadu (p1);
+
+ __m128i frag2;
+ if (p2[1] != '\0')
+ /* p2 is > 1 byte long. */
+ frag2 = strloadu (p2);
+ else
+ frag2 = _mm_insert_epi8 (_mm_setzero_si128 (), LOADBYTE (p2[0]), 0);
+
+ /* Unsigned bytes, equal order, does frag2 has null? */
+ int cmp_c = _mm_cmpistrc (frag2, frag1, 0x0c);
+ int cmp_z = _mm_cmpistrz (frag2, frag1, 0x0c);
+ int cmp = _mm_cmpistri (frag2, frag1, 0x0c);
+ int cmp_s = _mm_cmpistrs (frag2, frag1, 0x0c);
+ if (cmp_s & cmp_c)
+ {
+ int bmsk = _mm_movemask_epi8 (_mm_cmpeq_epi8 (frag2,
+ _mm_setzero_si128 ()));
+ int len;
+ __asm ("bsfl %[bmsk], %[len]"
+ : [len] "=r" (len) : [bmsk] "r" (bmsk));
+ p1 += cmp;
+ if ((len + cmp) <= 16)
+ return (char *) p1;
+
+ /* Load up to 16 bytes of fragment. */
+ frag1 = strloadu (p1);
+ cmp_c = _mm_cmpistrc (frag2, frag1, 0x0c);
+ cmp_s = _mm_cmpistrs (frag2, frag1, 0x0c);
+ cmp_z = _mm_cmpistrz (frag2, frag1, 0x0c);
+ cmp = _mm_cmpistri (frag2, frag1, 0x0c);
+ if ((len + cmp) <= 16)
+ return (char *) p1 + cmp;
+ }
+
+ if (cmp_s)
+ {
+ /* Adjust addr for 16B alginment in ensuing loop. */
+ while (!cmp_z)
+ {
+ p1 += cmp;
+ /* Load up to 16 bytes of fragment. */
+ frag1 = strloadu (p1);
+ cmp = _mm_cmpistri (frag2, frag1, 0x0c);
+ cmp_c = _mm_cmpistrc (frag2, frag1, 0x0c);
+ cmp_z = _mm_cmpistrz (frag2, frag1, 0x0c);
+ /* Because s2 < 16 bytes and we adjusted p1 by non-zero cmp
+ once already, this time cmp will be zero and we can exit. */
+ if ((!cmp) & cmp_c)
+ break;
+ }
+
+ if (!cmp_c)
+ return NULL;
+
+ /* Since s2 is less than 16 bytes, com_c is definitive
+ determination of full match. */
+ return (char *) p1 + cmp;
+ }
+
+ /* General case, s2 is at least 16 bytes or more.
+ First, the common case of false-match at first byte of p2. */
+ const unsigned char *pt = NULL;
+ int kmp_fwd = 0;
+re_trace:
+ while (!cmp_c)
+ {
+ /* frag1 has null. */
+ if (cmp_z)
+ return NULL;
+
+ /* frag 1 has no null, advance 16 bytes. */
+ p1 += 16;
+ /* Load up to 16 bytes of fragment. */
+ frag1 = strloadu (p1);
+ /* Unsigned bytes, equal order, is there a partial match? */
+ cmp_c = _mm_cmpistrc (frag2, frag1, 0x0c);
+ cmp = _mm_cmpistri (frag2, frag1, 0x0c);
+ cmp_z = _mm_cmpistrz (frag2, frag1, 0x0c);
+ }
+
+ /* Next, handle initial positive match as first byte of p2. We have
+ a partial fragment match, make full determination until we reached
+ end of s2. */
+ if (!cmp)
+ {
+ if (cmp_z)
+ return (char *) p1;
+
+ pt = p1;
+ p1 += 16;
+ p2 += 16;
+ /* Load up to 16 bytes of fragment. */
+ frag2 = strloadu (p2);
+ }
+ else
+ {
+ /* Adjust 16B alignment. */
+ p1 += cmp;
+ pt = p1;
+ }
+
+ /* Load up to 16 bytes of fragment. */
+ frag1 = strloadu (p1);
+
+ /* Unsigned bytes, equal order, does frag2 has null? */
+ cmp_c = _mm_cmpistrc (frag2, frag1, 0x0c);
+ cmp_z = _mm_cmpistrz (frag2, frag1, 0x0c);
+ cmp = _mm_cmpistri (frag2, frag1, 0x0c);
+ cmp_s = _mm_cmpistrs (frag2, frag1, 0x0c);
+ while (!(cmp | cmp_z | cmp_s))
+ {
+ p1 += 16;
+ p2 += 16;
+ /* Load up to 16 bytes of fragment. */
+ frag2 = strloadu (p2);
+ /* Load up to 16 bytes of fragment. */
+ frag1 = strloadu (p1);
+ /* Unsigned bytes, equal order, does frag2 has null? */
+ cmp_c = _mm_cmpistrc (frag2, frag1, 0x0c);
+ cmp_z = _mm_cmpistrz (frag2, frag1, 0x0c);
+ cmp = _mm_cmpistri (frag2, frag1, 0x0c);
+ cmp_s = _mm_cmpistrs (frag2, frag1, 0x0c);
+ }
+
+ /* Full determination yielded a false result, retrace s1 to next
+ starting position.
+ Zflg 1 0 1 0/1
+ Sflg 0 1 1 0/1
+ cmp na 0 0 >0
+ action done done continue continue if s2 < s1
+ false match retrace s1 else false
+ */
+
+ if (cmp_s & !cmp)
+ return (char *) pt;
+ if (cmp_z)
+ {
+ if (!cmp_s)
+ return NULL;
+
+ /* Handle both zero and sign flag set and s1 is shorter in
+ length. */
+ __m128i zero = _mm_setzero_si128 ();
+ int bmsk = _mm_movemask_epi8 (_mm_cmpeq_epi8 (zero, frag2));
+ int bmsk1 = _mm_movemask_epi8 (_mm_cmpeq_epi8 (zero, frag1));
+ int len;
+ int len1;
+ __asm ("bsfl %[bmsk], %[len]"
+ : [len] "=r" (len) : [bmsk] "r" (bmsk));
+ __asm ("bsfl %[bmsk1], %[len1]"
+ : [len1] "=r" (len1) : [bmsk1] "r" (bmsk1));
+ if (len >= len1)
+ return NULL;
+ }
+ else if (!cmp)
+ return (char *) pt;
+
+ /* Otherwise, we have to retrace and continue. Default of multiple
+ paths that need to retrace from next byte in s1. */
+ p2 = s2;
+ frag2 = strloadu (p2);
+
+ if (!kmp_fwd)
+ kmp_fwd = KMP16Bovrlap (frag2);
+
+ /* KMP algorithm predicted overlap needs to be corrected for
+ partial fragment compare. */
+ p1 = pt + (kmp_fwd > cmp ? cmp : kmp_fwd);
+
+ /* Since s2 is at least 16 bytes long, we're certain there is no
+ match. */
+ if (p1[0] == '\0')
+ return NULL;
+
+ /* Load up to 16 bytes of fragment. */
+ frag1 = strloadu (p1);
+
+ /* Unsigned bytes, equal order, is there a partial match? */
+ cmp_c = _mm_cmpistrc (frag2, frag1, 0x0c);
+ cmp = _mm_cmpistri (frag2, frag1, 0x0c);
+ cmp_z = _mm_cmpistrz (frag2, frag1, 0x0c);
+ goto re_trace;
+}
diff --git a/sysdeps/alpha/strcpy.S b/sysdeps/x86_64/rawmemchr.S
index 02bfe52400..cfb4cebf68 100644
--- a/sysdeps/alpha/strcpy.S
+++ b/sysdeps/x86_64/rawmemchr.S
@@ -1,6 +1,6 @@
-/* Copyright (C) 1996, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@redhat.com>.
This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1996.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -17,26 +17,37 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-/* Copy a null-terminated string from SRC to DST. Return a pointer
- to the null-terminator in the source. */
-
#include <sysdep.h>
- .text
-ENTRY(strcpy)
- ldgp gp, 0(pv)
-#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
-#endif
- .prologue 1
-
- mov a0, v0 # set up return value
- mov ra, t9
- jmp $31, __stxcpy # do the copy
-
- END(strcpy)
-libc_hidden_builtin_def (strcpy)
+ .text
+ENTRY (rawmemchr)
+ movd %esi, %xmm1
+ movq %rdi, %rcx
+ punpcklbw %xmm1, %xmm1
+ andq $~15, %rdi
+ punpcklbw %xmm1, %xmm1
+ orl $0xffffffff, %esi
+ movdqa (%rdi), %xmm0
+ pshufd $0, %xmm1, %xmm1
+ subq %rdi, %rcx
+ pcmpeqb %xmm1, %xmm0
+ shl %cl, %esi
+ pmovmskb %xmm0, %ecx
+ andl %esi, %ecx
+ jnz 1f
+
+2: movdqa 16(%rdi), %xmm0
+ leaq 16(%rdi), %rdi
+ pcmpeqb %xmm1, %xmm0
+ pmovmskb %xmm0, %ecx
+ testl %ecx, %ecx
+ jz 2b
+
+1: bsfl %ecx, %eax
+ addq %rdi, %rax
+ ret
+END (rawmemchr)
+
+strong_alias (rawmemchr, __rawmemchr)
+libc_hidden_builtin_def (__rawmemchr)
diff --git a/sysdeps/x86_64/rshift.S b/sysdeps/x86_64/rshift.S
new file mode 100644
index 0000000000..ee0c8aa15c
--- /dev/null
+++ b/sysdeps/x86_64/rshift.S
@@ -0,0 +1,62 @@
+/* AMD64 __mpn_rshift --
+ Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+ This file is part of the GNU MP Library.
+
+ The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA. */
+
+#include "sysdep.h"
+#include "asm-syntax.h"
+
+ .text
+ENTRY (__mpn_rshift)
+ movq (%rsi), %mm7
+ movd %ecx, %mm1
+ movl $64, %eax
+ subl %ecx, %eax
+ movd %eax, %mm0
+ movq %mm7, %mm3
+ psllq %mm0, %mm7
+ movd %mm7, %rax
+ leaq (%rsi,%rdx,8), %rsi
+ leaq (%rdi,%rdx,8), %rdi
+ negq %rdx
+ addq $2, %rdx
+ jg L(endo)
+ .p2align 2
+L(loop):
+ movq -8(%rsi,%rdx,8), %mm6
+ movq %mm6, %mm2
+ psllq %mm0, %mm6
+ psrlq %mm1, %mm3
+ por %mm6, %mm3
+ movq %mm3, -16(%rdi,%rdx,8)
+ je L(ende)
+ movq (%rsi,%rdx,8), %mm7
+ movq %mm7, %mm3
+ psllq %mm0, %mm7
+ psrlq %mm1, %mm2
+ por %mm7, %mm2
+ movq %mm2, -8(%rdi,%rdx,8)
+ addq $2, %rdx
+ jle L(loop)
+L(endo):
+ movq %mm3, %mm2
+L(ende):
+ psrlq %mm1, %mm2
+ movq %mm2, -8(%rdi)
+ emms
+ ret
+END (__mpn_rshift)
diff --git a/sysdeps/x86_64/rtld-memcmp.c b/sysdeps/x86_64/rtld-memcmp.c
new file mode 100644
index 0000000000..2ee40328b8
--- /dev/null
+++ b/sysdeps/x86_64/rtld-memcmp.c
@@ -0,0 +1 @@
+#include <string/memcmp.c>
diff --git a/sysdeps/x86_64/rtld-strchr.S b/sysdeps/x86_64/rtld-strchr.S
new file mode 100644
index 0000000000..8934697972
--- /dev/null
+++ b/sysdeps/x86_64/rtld-strchr.S
@@ -0,0 +1,291 @@
+/* strchr (str, ch) -- Return pointer to first occurrence of CH in STR.
+ For AMD x86-64.
+ Copyright (C) 2002, 2005 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include "asm-syntax.h"
+#include "bp-sym.h"
+#include "bp-asm.h"
+
+
+ .text
+ENTRY (BP_SYM (strchr))
+
+ /* Before we start with the main loop we process single bytes
+ until the source pointer is aligned. This has two reasons:
+ 1. aligned 64-bit memory access is faster
+ and (more important)
+ 2. we process in the main loop 64 bit in one step although
+ we don't know the end of the string. But accessing at
+ 8-byte alignment guarantees that we never access illegal
+ memory if this would not also be done by the trivial
+ implementation (this is because all processor inherent
+ boundaries are multiples of 8). */
+
+ movq %rdi, %rdx
+ andl $7, %edx /* Mask alignment bits */
+ movq %rdi, %rax /* duplicate destination. */
+ jz 1f /* aligned => start loop */
+ neg %edx
+ addl $8, %edx /* Align to 8 bytes. */
+
+ /* Search the first bytes directly. */
+0: movb (%rax), %cl /* load byte */
+ cmpb %cl,%sil /* compare byte. */
+ je 6f /* target found */
+ testb %cl,%cl /* is byte NUL? */
+ je 7f /* yes => return NULL */
+ incq %rax /* increment pointer */
+ decl %edx
+ jnz 0b
+
+
+1:
+ /* At the moment %rsi contains C. What we need for the
+ algorithm is C in all bytes of the register. Avoid
+ operations on 16 bit words because these require an
+ prefix byte (and one more cycle). */
+ /* Populate 8 bit data to full 64-bit. */
+ movabs $0x0101010101010101,%r9
+ movzbl %sil,%edx
+ imul %rdx,%r9
+
+ movq $0xfefefefefefefeff, %r8 /* Save magic. */
+
+ /* We exit the loop if adding MAGIC_BITS to LONGWORD fails to
+ change any of the hole bits of LONGWORD.
+
+ 1) Is this safe? Will it catch all the zero bytes?
+ Suppose there is a byte with all zeros. Any carry bits
+ propagating from its left will fall into the hole at its
+ least significant bit and stop. Since there will be no
+ carry from its most significant bit, the LSB of the
+ byte to the left will be unchanged, and the zero will be
+ detected.
+
+ 2) Is this worthwhile? Will it ignore everything except
+ zero bytes? Suppose every byte of QUARDWORD has a bit set
+ somewhere. There will be a carry into bit 8. If bit 8
+ is set, this will carry into bit 16. If bit 8 is clear,
+ one of bits 9-15 must be set, so there will be a carry
+ into bit 16. Similarly, there will be a carry into bit
+ 24 tec.. If one of bits 54-63 is set, there will be a carry
+ into bit 64 (=carry flag), so all of the hole bits will
+ be changed.
+
+ 3) But wait! Aren't we looking for C, not zero?
+ Good point. So what we do is XOR LONGWORD with a longword,
+ each of whose bytes is C. This turns each byte that is C
+ into a zero. */
+
+ .p2align 4
+4:
+ /* Main Loop is unrolled 4 times. */
+ /* First unroll. */
+ movq (%rax), %rcx /* get double word (= 8 bytes) in question */
+ addq $8,%rax /* adjust pointer for next word */
+ movq %r8, %rdx /* magic value */
+ xorq %r9, %rcx /* XOR with qword c|...|c => bytes of str == c
+ are now 0 */
+ addq %rcx, %rdx /* add the magic value to the word. We get
+ carry bits reported for each byte which
+ is *not* 0 */
+ jnc 3f /* highest byte is NUL => return pointer */
+ xorq %rcx, %rdx /* (word+magic)^word */
+ orq %r8, %rdx /* set all non-carry bits */
+ incq %rdx /* add 1: if one carry bit was *not* set
+ the addition will not result in 0. */
+ jnz 3f /* found c => return pointer */
+
+ /* The quadword we looked at does not contain the value we're looking
+ for. Let's search now whether we have reached the end of the
+ string. */
+ xorq %r9, %rcx /* restore original dword without reload */
+ movq %r8, %rdx /* magic value */
+ addq %rcx, %rdx /* add the magic value to the word. We get
+ carry bits reported for each byte which
+ is *not* 0 */
+ jnc 7f /* highest byte is NUL => return NULL */
+ xorq %rcx, %rdx /* (word+magic)^word */
+ orq %r8, %rdx /* set all non-carry bits */
+ incq %rdx /* add 1: if one carry bit was *not* set
+ the addition will not result in 0. */
+ jnz 7f /* found NUL => return NULL */
+
+ /* Second unroll. */
+ movq (%rax), %rcx /* get double word (= 8 bytes) in question */
+ addq $8,%rax /* adjust pointer for next word */
+ movq %r8, %rdx /* magic value */
+ xorq %r9, %rcx /* XOR with qword c|...|c => bytes of str == c
+ are now 0 */
+ addq %rcx, %rdx /* add the magic value to the word. We get
+ carry bits reported for each byte which
+ is *not* 0 */
+ jnc 3f /* highest byte is NUL => return pointer */
+ xorq %rcx, %rdx /* (word+magic)^word */
+ orq %r8, %rdx /* set all non-carry bits */
+ incq %rdx /* add 1: if one carry bit was *not* set
+ the addition will not result in 0. */
+ jnz 3f /* found c => return pointer */
+
+ /* The quadword we looked at does not contain the value we're looking
+ for. Let's search now whether we have reached the end of the
+ string. */
+ xorq %r9, %rcx /* restore original dword without reload */
+ movq %r8, %rdx /* magic value */
+ addq %rcx, %rdx /* add the magic value to the word. We get
+ carry bits reported for each byte which
+ is *not* 0 */
+ jnc 7f /* highest byte is NUL => return NULL */
+ xorq %rcx, %rdx /* (word+magic)^word */
+ orq %r8, %rdx /* set all non-carry bits */
+ incq %rdx /* add 1: if one carry bit was *not* set
+ the addition will not result in 0. */
+ jnz 7f /* found NUL => return NULL */
+ /* Third unroll. */
+ movq (%rax), %rcx /* get double word (= 8 bytes) in question */
+ addq $8,%rax /* adjust pointer for next word */
+ movq %r8, %rdx /* magic value */
+ xorq %r9, %rcx /* XOR with qword c|...|c => bytes of str == c
+ are now 0 */
+ addq %rcx, %rdx /* add the magic value to the word. We get
+ carry bits reported for each byte which
+ is *not* 0 */
+ jnc 3f /* highest byte is NUL => return pointer */
+ xorq %rcx, %rdx /* (word+magic)^word */
+ orq %r8, %rdx /* set all non-carry bits */
+ incq %rdx /* add 1: if one carry bit was *not* set
+ the addition will not result in 0. */
+ jnz 3f /* found c => return pointer */
+
+ /* The quadword we looked at does not contain the value we're looking
+ for. Let's search now whether we have reached the end of the
+ string. */
+ xorq %r9, %rcx /* restore original dword without reload */
+ movq %r8, %rdx /* magic value */
+ addq %rcx, %rdx /* add the magic value to the word. We get
+ carry bits reported for each byte which
+ is *not* 0 */
+ jnc 7f /* highest byte is NUL => return NULL */
+ xorq %rcx, %rdx /* (word+magic)^word */
+ orq %r8, %rdx /* set all non-carry bits */
+ incq %rdx /* add 1: if one carry bit was *not* set
+ the addition will not result in 0. */
+ jnz 7f /* found NUL => return NULL */
+ /* Fourth unroll. */
+ movq (%rax), %rcx /* get double word (= 8 bytes) in question */
+ addq $8,%rax /* adjust pointer for next word */
+ movq %r8, %rdx /* magic value */
+ xorq %r9, %rcx /* XOR with qword c|...|c => bytes of str == c
+ are now 0 */
+ addq %rcx, %rdx /* add the magic value to the word. We get
+ carry bits reported for each byte which
+ is *not* 0 */
+ jnc 3f /* highest byte is NUL => return pointer */
+ xorq %rcx, %rdx /* (word+magic)^word */
+ orq %r8, %rdx /* set all non-carry bits */
+ incq %rdx /* add 1: if one carry bit was *not* set
+ the addition will not result in 0. */
+ jnz 3f /* found c => return pointer */
+
+ /* The quadword we looked at does not contain the value we're looking
+ for. Let's search now whether we have reached the end of the
+ string. */
+ xorq %r9, %rcx /* restore original dword without reload */
+ movq %r8, %rdx /* magic value */
+ addq %rcx, %rdx /* add the magic value to the word. We get
+ carry bits reported for each byte which
+ is *not* 0 */
+ jnc 7f /* highest byte is NUL => return NULL */
+ xorq %rcx, %rdx /* (word+magic)^word */
+ orq %r8, %rdx /* set all non-carry bits */
+ incq %rdx /* add 1: if one carry bit was *not* set
+ the addition will not result in 0. */
+ jz 4b /* no NUL found => restart loop */
+
+
+7: /* Return NULL. */
+ xorl %eax, %eax
+ retq
+
+
+ /* We now scan for the byte in which the character was matched.
+ But we have to take care of the case that a NUL char is
+ found before this in the dword. Note that we XORed %rcx
+ with the byte we're looking for, therefore the tests below look
+ reversed. */
+
+
+ .p2align 4 /* Align, it's a jump target. */
+3: movq %r9,%rdx /* move to %rdx so that we can access bytes */
+ subq $8,%rax /* correct pointer increment. */
+ testb %cl, %cl /* is first byte C? */
+ jz 6f /* yes => return pointer */
+ cmpb %dl, %cl /* is first byte NUL? */
+ je 7b /* yes => return NULL */
+ incq %rax /* increment pointer */
+
+ testb %ch, %ch /* is second byte C? */
+ jz 6f /* yes => return pointer */
+ cmpb %dl, %ch /* is second byte NUL? */
+ je 7b /* yes => return NULL? */
+ incq %rax /* increment pointer */
+
+ shrq $16, %rcx /* make upper bytes accessible */
+ testb %cl, %cl /* is third byte C? */
+ jz 6f /* yes => return pointer */
+ cmpb %dl, %cl /* is third byte NUL? */
+ je 7b /* yes => return NULL */
+ incq %rax /* increment pointer */
+
+ testb %ch, %ch /* is fourth byte C? */
+ jz 6f /* yes => return pointer */
+ cmpb %dl, %ch /* is fourth byte NUL? */
+ je 7b /* yes => return NULL? */
+ incq %rax /* increment pointer */
+
+ shrq $16, %rcx /* make upper bytes accessible */
+ testb %cl, %cl /* is fifth byte C? */
+ jz 6f /* yes => return pointer */
+ cmpb %dl, %cl /* is fifth byte NUL? */
+ je 7b /* yes => return NULL */
+ incq %rax /* increment pointer */
+
+ testb %ch, %ch /* is sixth byte C? */
+ jz 6f /* yes => return pointer */
+ cmpb %dl, %ch /* is sixth byte NUL? */
+ je 7b /* yes => return NULL? */
+ incq %rax /* increment pointer */
+
+ shrq $16, %rcx /* make upper bytes accessible */
+ testb %cl, %cl /* is seventh byte C? */
+ jz 6f /* yes => return pointer */
+ cmpb %dl, %cl /* is seventh byte NUL? */
+ je 7b /* yes => return NULL */
+
+ /* It must be in the eigth byte and it cannot be NUL. */
+ incq %rax
+
+6:
+ nop
+ retq
+END (BP_SYM (strchr))
+
+weak_alias (BP_SYM (strchr), BP_SYM (index))
+libc_hidden_builtin_def (strchr)
diff --git a/sysdeps/x86_64/rtld-strlen.S b/sysdeps/x86_64/rtld-strlen.S
new file mode 100644
index 0000000000..fd950edaaa
--- /dev/null
+++ b/sysdeps/x86_64/rtld-strlen.S
@@ -0,0 +1,139 @@
+/* strlen(str) -- determine the length of the string STR.
+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Based on i486 version contributed by Ulrich Drepper <drepper@redhat.com>.
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include "asm-syntax.h"
+#include "bp-sym.h"
+#include "bp-asm.h"
+
+
+ .text
+ENTRY (strlen)
+ movq %rdi, %rcx /* Duplicate source pointer. */
+ andl $7, %ecx /* mask alignment bits */
+ movq %rdi, %rax /* duplicate destination. */
+ jz 1f /* aligned => start loop */
+
+ neg %ecx /* We need to align to 8 bytes. */
+ addl $8,%ecx
+ /* Search the first bytes directly. */
+0: cmpb $0x0,(%rax) /* is byte NUL? */
+ je 2f /* yes => return */
+ incq %rax /* increment pointer */
+ decl %ecx
+ jnz 0b
+
+1: movq $0xfefefefefefefeff,%r8 /* Save magic. */
+
+ .p2align 4 /* Align loop. */
+4: /* Main Loop is unrolled 4 times. */
+ /* First unroll. */
+ movq (%rax), %rcx /* get double word (= 8 bytes) in question */
+ addq $8,%rax /* adjust pointer for next word */
+ movq %r8, %rdx /* magic value */
+ addq %rcx, %rdx /* add the magic value to the word. We get
+ carry bits reported for each byte which
+ is *not* 0 */
+ jnc 3f /* highest byte is NUL => return pointer */
+ xorq %rcx, %rdx /* (word+magic)^word */
+ orq %r8, %rdx /* set all non-carry bits */
+ incq %rdx /* add 1: if one carry bit was *not* set
+ the addition will not result in 0. */
+ jnz 3f /* found NUL => return pointer */
+
+ /* Second unroll. */
+ movq (%rax), %rcx /* get double word (= 8 bytes) in question */
+ addq $8,%rax /* adjust pointer for next word */
+ movq %r8, %rdx /* magic value */
+ addq %rcx, %rdx /* add the magic value to the word. We get
+ carry bits reported for each byte which
+ is *not* 0 */
+ jnc 3f /* highest byte is NUL => return pointer */
+ xorq %rcx, %rdx /* (word+magic)^word */
+ orq %r8, %rdx /* set all non-carry bits */
+ incq %rdx /* add 1: if one carry bit was *not* set
+ the addition will not result in 0. */
+ jnz 3f /* found NUL => return pointer */
+
+ /* Third unroll. */
+ movq (%rax), %rcx /* get double word (= 8 bytes) in question */
+ addq $8,%rax /* adjust pointer for next word */
+ movq %r8, %rdx /* magic value */
+ addq %rcx, %rdx /* add the magic value to the word. We get
+ carry bits reported for each byte which
+ is *not* 0 */
+ jnc 3f /* highest byte is NUL => return pointer */
+ xorq %rcx, %rdx /* (word+magic)^word */
+ orq %r8, %rdx /* set all non-carry bits */
+ incq %rdx /* add 1: if one carry bit was *not* set
+ the addition will not result in 0. */
+ jnz 3f /* found NUL => return pointer */
+
+ /* Fourth unroll. */
+ movq (%rax), %rcx /* get double word (= 8 bytes) in question */
+ addq $8,%rax /* adjust pointer for next word */
+ movq %r8, %rdx /* magic value */
+ addq %rcx, %rdx /* add the magic value to the word. We get
+ carry bits reported for each byte which
+ is *not* 0 */
+ jnc 3f /* highest byte is NUL => return pointer */
+ xorq %rcx, %rdx /* (word+magic)^word */
+ orq %r8, %rdx /* set all non-carry bits */
+ incq %rdx /* add 1: if one carry bit was *not* set
+ the addition will not result in 0. */
+ jz 4b /* no NUL found => continue loop */
+
+ .p2align 4 /* Align, it's a jump target. */
+3: subq $8,%rax /* correct pointer increment. */
+
+ testb %cl, %cl /* is first byte NUL? */
+ jz 2f /* yes => return */
+ incq %rax /* increment pointer */
+
+ testb %ch, %ch /* is second byte NUL? */
+ jz 2f /* yes => return */
+ incq %rax /* increment pointer */
+
+ testl $0x00ff0000, %ecx /* is third byte NUL? */
+ jz 2f /* yes => return pointer */
+ incq %rax /* increment pointer */
+
+ testl $0xff000000, %ecx /* is fourth byte NUL? */
+ jz 2f /* yes => return pointer */
+ incq %rax /* increment pointer */
+
+ shrq $32, %rcx /* look at other half. */
+
+ testb %cl, %cl /* is first byte NUL? */
+ jz 2f /* yes => return */
+ incq %rax /* increment pointer */
+
+ testb %ch, %ch /* is second byte NUL? */
+ jz 2f /* yes => return */
+ incq %rax /* increment pointer */
+
+ testl $0xff0000, %ecx /* is third byte NUL? */
+ jz 2f /* yes => return pointer */
+ incq %rax /* increment pointer */
+2:
+ subq %rdi, %rax /* compute difference to string start */
+ ret
+END (strlen)
+libc_hidden_builtin_def (strlen)
diff --git a/sysdeps/x86_64/stackinfo.h b/sysdeps/x86_64/stackinfo.h
index 60668d10b1..b11849d9ab 100644
--- a/sysdeps/x86_64/stackinfo.h
+++ b/sysdeps/x86_64/stackinfo.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2009 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
@@ -25,4 +25,14 @@
/* On x86_64 the stack grows down. */
#define _STACK_GROWS_DOWN 1
+/* Access to the stack pointer. The macros are used in alloca_account
+ for which they need to act as barriers as well, hence the additional
+ (unnecessary) parameters. */
+#define stackinfo_get_sp() \
+ ({ void *p__; asm volatile ("mov %%rsp, %0" : "=r" (p__)); p__; })
+#define stackinfo_sub_sp(ptr) \
+ ({ ptrdiff_t d__; \
+ asm volatile ("sub %%rsp, %0" : "=r" (d__) : "0" (ptr)); \
+ d__; })
+
#endif /* stackinfo.h */
diff --git a/sysdeps/x86_64/strchr.S b/sysdeps/x86_64/strchr.S
index 8934697972..8833cd0cc4 100644
--- a/sysdeps/x86_64/strchr.S
+++ b/sysdeps/x86_64/strchr.S
@@ -1,6 +1,6 @@
/* strchr (str, ch) -- Return pointer to first occurrence of CH in STR.
For AMD x86-64.
- Copyright (C) 2002, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2009 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
@@ -19,273 +19,52 @@
02111-1307 USA. */
#include <sysdep.h>
-#include "asm-syntax.h"
-#include "bp-sym.h"
-#include "bp-asm.h"
.text
-ENTRY (BP_SYM (strchr))
-
- /* Before we start with the main loop we process single bytes
- until the source pointer is aligned. This has two reasons:
- 1. aligned 64-bit memory access is faster
- and (more important)
- 2. we process in the main loop 64 bit in one step although
- we don't know the end of the string. But accessing at
- 8-byte alignment guarantees that we never access illegal
- memory if this would not also be done by the trivial
- implementation (this is because all processor inherent
- boundaries are multiples of 8). */
-
- movq %rdi, %rdx
- andl $7, %edx /* Mask alignment bits */
- movq %rdi, %rax /* duplicate destination. */
- jz 1f /* aligned => start loop */
- neg %edx
- addl $8, %edx /* Align to 8 bytes. */
-
- /* Search the first bytes directly. */
-0: movb (%rax), %cl /* load byte */
- cmpb %cl,%sil /* compare byte. */
- je 6f /* target found */
- testb %cl,%cl /* is byte NUL? */
- je 7f /* yes => return NULL */
- incq %rax /* increment pointer */
- decl %edx
- jnz 0b
-
-
-1:
- /* At the moment %rsi contains C. What we need for the
- algorithm is C in all bytes of the register. Avoid
- operations on 16 bit words because these require an
- prefix byte (and one more cycle). */
- /* Populate 8 bit data to full 64-bit. */
- movabs $0x0101010101010101,%r9
- movzbl %sil,%edx
- imul %rdx,%r9
-
- movq $0xfefefefefefefeff, %r8 /* Save magic. */
-
- /* We exit the loop if adding MAGIC_BITS to LONGWORD fails to
- change any of the hole bits of LONGWORD.
-
- 1) Is this safe? Will it catch all the zero bytes?
- Suppose there is a byte with all zeros. Any carry bits
- propagating from its left will fall into the hole at its
- least significant bit and stop. Since there will be no
- carry from its most significant bit, the LSB of the
- byte to the left will be unchanged, and the zero will be
- detected.
-
- 2) Is this worthwhile? Will it ignore everything except
- zero bytes? Suppose every byte of QUARDWORD has a bit set
- somewhere. There will be a carry into bit 8. If bit 8
- is set, this will carry into bit 16. If bit 8 is clear,
- one of bits 9-15 must be set, so there will be a carry
- into bit 16. Similarly, there will be a carry into bit
- 24 tec.. If one of bits 54-63 is set, there will be a carry
- into bit 64 (=carry flag), so all of the hole bits will
- be changed.
-
- 3) But wait! Aren't we looking for C, not zero?
- Good point. So what we do is XOR LONGWORD with a longword,
- each of whose bytes is C. This turns each byte that is C
- into a zero. */
-
- .p2align 4
-4:
- /* Main Loop is unrolled 4 times. */
- /* First unroll. */
- movq (%rax), %rcx /* get double word (= 8 bytes) in question */
- addq $8,%rax /* adjust pointer for next word */
- movq %r8, %rdx /* magic value */
- xorq %r9, %rcx /* XOR with qword c|...|c => bytes of str == c
- are now 0 */
- addq %rcx, %rdx /* add the magic value to the word. We get
- carry bits reported for each byte which
- is *not* 0 */
- jnc 3f /* highest byte is NUL => return pointer */
- xorq %rcx, %rdx /* (word+magic)^word */
- orq %r8, %rdx /* set all non-carry bits */
- incq %rdx /* add 1: if one carry bit was *not* set
- the addition will not result in 0. */
- jnz 3f /* found c => return pointer */
-
- /* The quadword we looked at does not contain the value we're looking
- for. Let's search now whether we have reached the end of the
- string. */
- xorq %r9, %rcx /* restore original dword without reload */
- movq %r8, %rdx /* magic value */
- addq %rcx, %rdx /* add the magic value to the word. We get
- carry bits reported for each byte which
- is *not* 0 */
- jnc 7f /* highest byte is NUL => return NULL */
- xorq %rcx, %rdx /* (word+magic)^word */
- orq %r8, %rdx /* set all non-carry bits */
- incq %rdx /* add 1: if one carry bit was *not* set
- the addition will not result in 0. */
- jnz 7f /* found NUL => return NULL */
-
- /* Second unroll. */
- movq (%rax), %rcx /* get double word (= 8 bytes) in question */
- addq $8,%rax /* adjust pointer for next word */
- movq %r8, %rdx /* magic value */
- xorq %r9, %rcx /* XOR with qword c|...|c => bytes of str == c
- are now 0 */
- addq %rcx, %rdx /* add the magic value to the word. We get
- carry bits reported for each byte which
- is *not* 0 */
- jnc 3f /* highest byte is NUL => return pointer */
- xorq %rcx, %rdx /* (word+magic)^word */
- orq %r8, %rdx /* set all non-carry bits */
- incq %rdx /* add 1: if one carry bit was *not* set
- the addition will not result in 0. */
- jnz 3f /* found c => return pointer */
-
- /* The quadword we looked at does not contain the value we're looking
- for. Let's search now whether we have reached the end of the
- string. */
- xorq %r9, %rcx /* restore original dword without reload */
- movq %r8, %rdx /* magic value */
- addq %rcx, %rdx /* add the magic value to the word. We get
- carry bits reported for each byte which
- is *not* 0 */
- jnc 7f /* highest byte is NUL => return NULL */
- xorq %rcx, %rdx /* (word+magic)^word */
- orq %r8, %rdx /* set all non-carry bits */
- incq %rdx /* add 1: if one carry bit was *not* set
- the addition will not result in 0. */
- jnz 7f /* found NUL => return NULL */
- /* Third unroll. */
- movq (%rax), %rcx /* get double word (= 8 bytes) in question */
- addq $8,%rax /* adjust pointer for next word */
- movq %r8, %rdx /* magic value */
- xorq %r9, %rcx /* XOR with qword c|...|c => bytes of str == c
- are now 0 */
- addq %rcx, %rdx /* add the magic value to the word. We get
- carry bits reported for each byte which
- is *not* 0 */
- jnc 3f /* highest byte is NUL => return pointer */
- xorq %rcx, %rdx /* (word+magic)^word */
- orq %r8, %rdx /* set all non-carry bits */
- incq %rdx /* add 1: if one carry bit was *not* set
- the addition will not result in 0. */
- jnz 3f /* found c => return pointer */
-
- /* The quadword we looked at does not contain the value we're looking
- for. Let's search now whether we have reached the end of the
- string. */
- xorq %r9, %rcx /* restore original dword without reload */
- movq %r8, %rdx /* magic value */
- addq %rcx, %rdx /* add the magic value to the word. We get
- carry bits reported for each byte which
- is *not* 0 */
- jnc 7f /* highest byte is NUL => return NULL */
- xorq %rcx, %rdx /* (word+magic)^word */
- orq %r8, %rdx /* set all non-carry bits */
- incq %rdx /* add 1: if one carry bit was *not* set
- the addition will not result in 0. */
- jnz 7f /* found NUL => return NULL */
- /* Fourth unroll. */
- movq (%rax), %rcx /* get double word (= 8 bytes) in question */
- addq $8,%rax /* adjust pointer for next word */
- movq %r8, %rdx /* magic value */
- xorq %r9, %rcx /* XOR with qword c|...|c => bytes of str == c
- are now 0 */
- addq %rcx, %rdx /* add the magic value to the word. We get
- carry bits reported for each byte which
- is *not* 0 */
- jnc 3f /* highest byte is NUL => return pointer */
- xorq %rcx, %rdx /* (word+magic)^word */
- orq %r8, %rdx /* set all non-carry bits */
- incq %rdx /* add 1: if one carry bit was *not* set
- the addition will not result in 0. */
- jnz 3f /* found c => return pointer */
-
- /* The quadword we looked at does not contain the value we're looking
- for. Let's search now whether we have reached the end of the
- string. */
- xorq %r9, %rcx /* restore original dword without reload */
- movq %r8, %rdx /* magic value */
- addq %rcx, %rdx /* add the magic value to the word. We get
- carry bits reported for each byte which
- is *not* 0 */
- jnc 7f /* highest byte is NUL => return NULL */
- xorq %rcx, %rdx /* (word+magic)^word */
- orq %r8, %rdx /* set all non-carry bits */
- incq %rdx /* add 1: if one carry bit was *not* set
- the addition will not result in 0. */
- jz 4b /* no NUL found => restart loop */
-
-
-7: /* Return NULL. */
- xorl %eax, %eax
- retq
-
-
- /* We now scan for the byte in which the character was matched.
- But we have to take care of the case that a NUL char is
- found before this in the dword. Note that we XORed %rcx
- with the byte we're looking for, therefore the tests below look
- reversed. */
-
-
- .p2align 4 /* Align, it's a jump target. */
-3: movq %r9,%rdx /* move to %rdx so that we can access bytes */
- subq $8,%rax /* correct pointer increment. */
- testb %cl, %cl /* is first byte C? */
- jz 6f /* yes => return pointer */
- cmpb %dl, %cl /* is first byte NUL? */
- je 7b /* yes => return NULL */
- incq %rax /* increment pointer */
-
- testb %ch, %ch /* is second byte C? */
- jz 6f /* yes => return pointer */
- cmpb %dl, %ch /* is second byte NUL? */
- je 7b /* yes => return NULL? */
- incq %rax /* increment pointer */
-
- shrq $16, %rcx /* make upper bytes accessible */
- testb %cl, %cl /* is third byte C? */
- jz 6f /* yes => return pointer */
- cmpb %dl, %cl /* is third byte NUL? */
- je 7b /* yes => return NULL */
- incq %rax /* increment pointer */
-
- testb %ch, %ch /* is fourth byte C? */
- jz 6f /* yes => return pointer */
- cmpb %dl, %ch /* is fourth byte NUL? */
- je 7b /* yes => return NULL? */
- incq %rax /* increment pointer */
-
- shrq $16, %rcx /* make upper bytes accessible */
- testb %cl, %cl /* is fifth byte C? */
- jz 6f /* yes => return pointer */
- cmpb %dl, %cl /* is fifth byte NUL? */
- je 7b /* yes => return NULL */
- incq %rax /* increment pointer */
-
- testb %ch, %ch /* is sixth byte C? */
- jz 6f /* yes => return pointer */
- cmpb %dl, %ch /* is sixth byte NUL? */
- je 7b /* yes => return NULL? */
- incq %rax /* increment pointer */
-
- shrq $16, %rcx /* make upper bytes accessible */
- testb %cl, %cl /* is seventh byte C? */
- jz 6f /* yes => return pointer */
- cmpb %dl, %cl /* is seventh byte NUL? */
- je 7b /* yes => return NULL */
-
- /* It must be in the eigth byte and it cannot be NUL. */
- incq %rax
-
-6:
- nop
- retq
-END (BP_SYM (strchr))
-
-weak_alias (BP_SYM (strchr), BP_SYM (index))
+ENTRY (strchr)
+ movd %esi, %xmm1
+ movq %rdi, %rcx
+ punpcklbw %xmm1, %xmm1
+ andq $~15, %rdi
+ pxor %xmm2, %xmm2
+ punpcklbw %xmm1, %xmm1
+ orl $0xffffffff, %esi
+ movdqa (%rdi), %xmm0
+ pshufd $0, %xmm1, %xmm1
+ subq %rdi, %rcx
+ movdqa %xmm0, %xmm3
+ leaq 16(%rdi), %rdi
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm3
+ shl %cl, %esi
+ pmovmskb %xmm0, %edx
+ pmovmskb %xmm3, %ecx
+ andl %esi, %edx
+ andl %esi, %ecx
+ orl %edx, %ecx
+ jnz 1f
+
+2: movdqa (%rdi), %xmm0
+ leaq 16(%rdi), %rdi
+ movdqa %xmm0, %xmm3
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm3
+ pmovmskb %xmm0, %edx
+ pmovmskb %xmm3, %ecx
+ orl %edx, %ecx
+ jz 2b
+
+1: bsfl %edx, %edx
+ jz 4f
+ bsfl %ecx, %ecx
+ leaq -16(%rdi,%rdx), %rax
+ cmpl %edx, %ecx
+ je 5f
+4: xorl %eax, %eax
+5: ret
+END (strchr)
+
+weak_alias (strchr, index)
libc_hidden_builtin_def (strchr)
+
diff --git a/sysdeps/x86_64/strchrnul.S b/sysdeps/x86_64/strchrnul.S
new file mode 100644
index 0000000000..576027a38d
--- /dev/null
+++ b/sysdeps/x86_64/strchrnul.S
@@ -0,0 +1,63 @@
+/* strchrnul (str, ch) -- Return pointer to first occurrence of CH in STR
+ or terminating NUL byte.
+ For AMD x86-64.
+ Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+
+
+ .text
+ENTRY (__strchrnul)
+ movd %esi, %xmm1
+ movq %rdi, %rcx
+ punpcklbw %xmm1, %xmm1
+ andq $~15, %rdi
+ pxor %xmm2, %xmm2
+ punpcklbw %xmm1, %xmm1
+ orl $0xffffffff, %esi
+ movdqa (%rdi), %xmm0
+ pshufd $0, %xmm1, %xmm1
+ subq %rdi, %rcx
+ movdqa %xmm0, %xmm3
+ leaq 16(%rdi), %rdi
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm3
+ shl %cl, %esi
+ pmovmskb %xmm0, %edx
+ pmovmskb %xmm3, %ecx
+ orl %edx, %ecx
+ andl %esi, %ecx
+ jnz 1f
+
+2: movdqa (%rdi), %xmm0
+ leaq 16(%rdi), %rdi
+ movdqa %xmm0, %xmm3
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm3
+ pmovmskb %xmm0, %edx
+ pmovmskb %xmm3, %ecx
+ orl %edx, %ecx
+ jz 2b
+
+1: bsfl %ecx, %edx
+ leaq -16(%rdi,%rdx), %rax
+ ret
+END (__strchrnul)
+
+weak_alias (__strchrnul, strchrnul)
diff --git a/sysdeps/x86_64/strcmp.S b/sysdeps/x86_64/strcmp.S
index 119b88e40b..ac3fe14679 100644
--- a/sysdeps/x86_64/strcmp.S
+++ b/sysdeps/x86_64/strcmp.S
@@ -1,8 +1,10 @@
/* Highly optimized version for x86-64.
- Copyright (C) 1999, 2000, 2002, 2003, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2002, 2003, 2005, 2009, 2010
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Based on i686 version contributed by Ulrich Drepper
<drepper@cygnus.com>, 1999.
+ Updated with SSE2 support contributed by Intel Corporation.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -24,8 +26,47 @@
#include "bp-sym.h"
#include "bp-asm.h"
- .text
-ENTRY (BP_SYM (strcmp))
+#undef UPDATE_STRNCMP_COUNTER
+
+#ifndef LABEL
+#define LABEL(l) L(l)
+#endif
+
+#ifdef USE_AS_STRNCMP
+/* The simplified code below is not set up to handle strncmp() so far.
+ Should this become necessary it has to be implemented. For now
+ just report the problem. */
+# ifdef NOT_IN_lib
+# error "strncmp not implemented so far"
+# endif
+
+/* Since the counter, %r11, is unsigned, we branch to strcmp_exitz
+ if the new counter > the old one or is 0. */
+# define UPDATE_STRNCMP_COUNTER \
+ /* calculate left number to compare */ \
+ lea -16(%rcx, %r11), %r9; \
+ cmp %r9, %r11; \
+ jb LABEL(strcmp_exitz); \
+ test %r9, %r9; \
+ je LABEL(strcmp_exitz); \
+ mov %r9, %r11
+
+#else
+# define UPDATE_STRNCMP_COUNTER
+# ifndef STRCMP
+# define STRCMP strcmp
+# endif
+#endif
+
+#ifndef USE_SSSE3
+ .text
+#else
+ .section .text.ssse3,"ax",@progbits
+#endif
+
+ENTRY (BP_SYM (STRCMP))
+#ifdef NOT_IN_libc
+/* Simple version since we can't use SSE registers in ld.so. */
L(oop): movb (%rdi), %al
cmpb (%rsi), %al
jne L(neq)
@@ -41,5 +82,2034 @@ L(neq): movl $1, %eax
movl $-1, %ecx
cmovbl %ecx, %eax
ret
-END (BP_SYM (strcmp))
-libc_hidden_builtin_def (strcmp)
+END (BP_SYM (STRCMP))
+#else /* NOT_IN_libc */
+/*
+ * This implementation uses SSE to compare up to 16 bytes at a time.
+ */
+# ifdef USE_AS_STRNCMP
+ test %rdx, %rdx
+ je LABEL(strcmp_exitz)
+ cmp $1, %rdx
+ je LABEL(Byte0)
+ mov %rdx, %r11
+# endif
+ mov %esi, %ecx
+ mov %edi, %eax
+/* Use 64bit AND here to avoid long NOP padding. */
+ and $0x3f, %rcx /* rsi alignment in cache line */
+ and $0x3f, %rax /* rdi alignment in cache line */
+ cmp $0x30, %ecx
+ ja LABEL(crosscache) /* rsi: 16-byte load will cross cache line */
+ cmp $0x30, %eax
+ ja LABEL(crosscache) /* rdi: 16-byte load will cross cache line */
+ movlpd (%rdi), %xmm1
+ movlpd (%rsi), %xmm2
+ movhpd 8(%rdi), %xmm1
+ movhpd 8(%rsi), %xmm2
+ pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */
+ pcmpeqb %xmm1, %xmm0 /* Any null chars? */
+ pcmpeqb %xmm2, %xmm1 /* compare first 16 bytes for equality */
+ psubb %xmm0, %xmm1 /* packed sub of comparison results*/
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx /* if first 16 bytes are same, edx == 0xffff */
+ jnz LABEL(less16bytes) /* If not, find different value or null char */
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz) /* finish comparision */
+# endif
+ add $16, %rsi /* prepare to search next 16 bytes */
+ add $16, %rdi /* prepare to search next 16 bytes */
+
+ /*
+ * Determine source and destination string offsets from 16-byte alignment.
+ * Use relative offset difference between the two to determine which case
+ * below to use.
+ */
+ .p2align 4
+LABEL(crosscache):
+ and $0xfffffffffffffff0, %rsi /* force %rsi is 16 byte aligned */
+ and $0xfffffffffffffff0, %rdi /* force %rdi is 16 byte aligned */
+ mov $0xffff, %edx /* for equivalent offset */
+ xor %r8d, %r8d
+ and $0xf, %ecx /* offset of rsi */
+ and $0xf, %eax /* offset of rdi */
+ cmp %eax, %ecx
+ je LABEL(ashr_0) /* rsi and rdi relative offset same */
+ ja LABEL(bigger)
+ mov %edx, %r8d /* r8d is offset flag for exit tail */
+ xchg %ecx, %eax
+ xchg %rsi, %rdi
+LABEL(bigger):
+ lea 15(%rax), %r9
+ sub %rcx, %r9
+ lea LABEL(unaligned_table)(%rip), %r10
+ movslq (%r10, %r9,4), %r9
+ lea (%r10, %r9), %r10
+ jmp *%r10 /* jump to corresponding case */
+
+/*
+ * The following cases will be handled by ashr_0
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(0~15) n(0~15) 15(15+ n-n) ashr_0
+ */
+ .p2align 4
+LABEL(ashr_0):
+
+ movdqa (%rsi), %xmm1
+ pxor %xmm0, %xmm0 /* clear %xmm0 for null char check */
+ pcmpeqb %xmm1, %xmm0 /* Any null chars? */
+ pcmpeqb (%rdi), %xmm1 /* compare 16 bytes for equality */
+ psubb %xmm0, %xmm1 /* packed sub of comparison results*/
+ pmovmskb %xmm1, %r9d
+ shr %cl, %edx /* adjust 0xffff for offset */
+ shr %cl, %r9d /* adjust for 16-byte offset */
+ sub %r9d, %edx
+ /*
+ * edx must be the same with r9d if in left byte (16-rcx) is equal to
+ * the start from (16-rax) and no null char was seen.
+ */
+ jne LABEL(less32bytes) /* mismatch or null char */
+ UPDATE_STRNCMP_COUNTER
+ mov $16, %rcx
+ mov $16, %r9
+ pxor %xmm0, %xmm0 /* clear xmm0, may have changed above */
+
+ /*
+ * Now both strings are aligned at 16-byte boundary. Loop over strings
+ * checking 32-bytes per iteration.
+ */
+ .p2align 4
+LABEL(loop_ashr_0):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit) /* mismatch or null char seen */
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+ add $16, %rcx
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+ add $16, %rcx
+ jmp LABEL(loop_ashr_0)
+
+/*
+ * The following cases will be handled by ashr_1
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(15) n -15 0(15 +(n-15) - n) ashr_1
+ */
+ .p2align 4
+LABEL(ashr_1):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0 /* Any null chars? */
+ pslldq $15, %xmm2 /* shift first string to align with second */
+ pcmpeqb %xmm1, %xmm2 /* compare 16 bytes for equality */
+ psubb %xmm0, %xmm2 /* packed sub of comparison results*/
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx /* adjust 0xffff for offset */
+ shr %cl, %r9d /* adjust for 16-byte offset */
+ sub %r9d, %edx
+ jnz LABEL(less32bytes) /* mismatch or null char seen */
+ movdqa (%rdi), %xmm3
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads*/
+ mov $1, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 1(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_1):
+ add $16, %r10
+ jg LABEL(nibble_ashr_1) /* cross page boundary */
+
+LABEL(gobble_ashr_1):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4 /* store for next cycle */
+
+# ifndef USE_SSSE3
+ psrldq $1, %xmm3
+ pslldq $15, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_1) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4 /* store for next cycle */
+
+# ifndef USE_SSSE3
+ psrldq $1, %xmm3
+ pslldq $15, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_1)
+
+ /*
+ * Nibble avoids loads across page boundary. This is to avoid a potential
+ * access into unmapped memory.
+ */
+ .p2align 4
+LABEL(nibble_ashr_1):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char*/
+ pmovmskb %xmm0, %edx
+ test $0xfffe, %edx
+ jnz LABEL(ashr_1_exittail) /* find null char*/
+
+# ifdef USE_AS_STRNCMP
+ cmp $14, %r11
+ jbe LABEL(ashr_1_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10 /* substract 4K from %r10 */
+ jmp LABEL(gobble_ashr_1)
+
+ /*
+ * Once find null char, determine if there is a string mismatch
+ * before the null char.
+ */
+ .p2align 4
+LABEL(ashr_1_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $1, %xmm0
+ psrldq $1, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_2
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(14~15) n -14 1(15 +(n-14) - n) ashr_2
+ */
+ .p2align 4
+LABEL(ashr_2):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $14, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+ movdqa (%rdi), %xmm3
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $2, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 2(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_2):
+ add $16, %r10
+ jg LABEL(nibble_ashr_2)
+
+LABEL(gobble_ashr_2):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $2, %xmm3
+ pslldq $14, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_2) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $2, %xmm3
+ pslldq $14, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_2)
+
+ .p2align 4
+LABEL(nibble_ashr_2):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0xfffc, %edx
+ jnz LABEL(ashr_2_exittail)
+
+# ifdef USE_AS_STRNCMP
+ cmp $13, %r11
+ jbe LABEL(ashr_2_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_2)
+
+ .p2align 4
+LABEL(ashr_2_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $2, %xmm0
+ psrldq $2, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_3
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(13~15) n -13 2(15 +(n-13) - n) ashr_3
+ */
+ .p2align 4
+LABEL(ashr_3):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $13, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $3, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 3(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_3):
+ add $16, %r10
+ jg LABEL(nibble_ashr_3)
+
+LABEL(gobble_ashr_3):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $3, %xmm3
+ pslldq $13, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_3) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $3, %xmm3
+ pslldq $13, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_3)
+
+ .p2align 4
+LABEL(nibble_ashr_3):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0xfff8, %edx
+ jnz LABEL(ashr_3_exittail)
+
+# ifdef USE_AS_STRNCMP
+ cmp $12, %r11
+ jbe LABEL(ashr_3_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_3)
+
+ .p2align 4
+LABEL(ashr_3_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $3, %xmm0
+ psrldq $3, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_4
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(12~15) n -12 3(15 +(n-12) - n) ashr_4
+ */
+ .p2align 4
+LABEL(ashr_4):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $12, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $4, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 4(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_4):
+ add $16, %r10
+ jg LABEL(nibble_ashr_4)
+
+LABEL(gobble_ashr_4):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $4, %xmm3
+ pslldq $12, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_4) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $4, %xmm3
+ pslldq $12, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_4)
+
+ .p2align 4
+LABEL(nibble_ashr_4):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0xfff0, %edx
+ jnz LABEL(ashr_4_exittail)
+
+# ifdef USE_AS_STRNCMP
+ cmp $11, %r11
+ jbe LABEL(ashr_4_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_4)
+
+ .p2align 4
+LABEL(ashr_4_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $4, %xmm0
+ psrldq $4, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_5
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(11~15) n - 11 4(15 +(n-11) - n) ashr_5
+ */
+ .p2align 4
+LABEL(ashr_5):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $11, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $5, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 5(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_5):
+ add $16, %r10
+ jg LABEL(nibble_ashr_5)
+
+LABEL(gobble_ashr_5):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $5, %xmm3
+ pslldq $11, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_5) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $5, %xmm3
+ pslldq $11, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_5)
+
+ .p2align 4
+LABEL(nibble_ashr_5):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0xffe0, %edx
+ jnz LABEL(ashr_5_exittail)
+
+# ifdef USE_AS_STRNCMP
+ cmp $10, %r11
+ jbe LABEL(ashr_5_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_5)
+
+ .p2align 4
+LABEL(ashr_5_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $5, %xmm0
+ psrldq $5, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_6
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(10~15) n - 10 5(15 +(n-10) - n) ashr_6
+ */
+ .p2align 4
+LABEL(ashr_6):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $10, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $6, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 6(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_6):
+ add $16, %r10
+ jg LABEL(nibble_ashr_6)
+
+LABEL(gobble_ashr_6):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $6, %xmm3
+ pslldq $10, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_6) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $6, %xmm3
+ pslldq $10, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_6)
+
+ .p2align 4
+LABEL(nibble_ashr_6):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0xffc0, %edx
+ jnz LABEL(ashr_6_exittail)
+
+# ifdef USE_AS_STRNCMP
+ cmp $9, %r11
+ jbe LABEL(ashr_6_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_6)
+
+ .p2align 4
+LABEL(ashr_6_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $6, %xmm0
+ psrldq $6, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_7
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(9~15) n - 9 6(15 +(n - 9) - n) ashr_7
+ */
+ .p2align 4
+LABEL(ashr_7):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $9, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $7, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 7(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_7):
+ add $16, %r10
+ jg LABEL(nibble_ashr_7)
+
+LABEL(gobble_ashr_7):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $7, %xmm3
+ pslldq $9, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_7) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $7, %xmm3
+ pslldq $9, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_7)
+
+ .p2align 4
+LABEL(nibble_ashr_7):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0xff80, %edx
+ jnz LABEL(ashr_7_exittail)
+
+# ifdef USE_AS_STRNCMP
+ cmp $8, %r11
+ jbe LABEL(ashr_7_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_7)
+
+ .p2align 4
+LABEL(ashr_7_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $7, %xmm0
+ psrldq $7, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_8
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(8~15) n - 8 7(15 +(n - 8) - n) ashr_8
+ */
+ .p2align 4
+LABEL(ashr_8):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $8, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $8, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 8(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_8):
+ add $16, %r10
+ jg LABEL(nibble_ashr_8)
+
+LABEL(gobble_ashr_8):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $8, %xmm3
+ pslldq $8, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_8) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $8, %xmm3
+ pslldq $8, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_8)
+
+ .p2align 4
+LABEL(nibble_ashr_8):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0xff00, %edx
+ jnz LABEL(ashr_8_exittail)
+
+# ifdef USE_AS_STRNCMP
+ cmp $7, %r11
+ jbe LABEL(ashr_8_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_8)
+
+ .p2align 4
+LABEL(ashr_8_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $8, %xmm0
+ psrldq $8, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_9
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(7~15) n - 7 8(15 +(n - 7) - n) ashr_9
+ */
+ .p2align 4
+LABEL(ashr_9):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $7, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $9, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 9(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_9):
+ add $16, %r10
+ jg LABEL(nibble_ashr_9)
+
+LABEL(gobble_ashr_9):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $9, %xmm3
+ pslldq $7, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_9) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $9, %xmm3
+ pslldq $7, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3 /* store for next cycle */
+ jmp LABEL(loop_ashr_9)
+
+ .p2align 4
+LABEL(nibble_ashr_9):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0xfe00, %edx
+ jnz LABEL(ashr_9_exittail)
+
+# ifdef USE_AS_STRNCMP
+ cmp $6, %r11
+ jbe LABEL(ashr_9_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_9)
+
+ .p2align 4
+LABEL(ashr_9_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $9, %xmm0
+ psrldq $9, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_10
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(6~15) n - 6 9(15 +(n - 6) - n) ashr_10
+ */
+ .p2align 4
+LABEL(ashr_10):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $6, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $10, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 10(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_10):
+ add $16, %r10
+ jg LABEL(nibble_ashr_10)
+
+LABEL(gobble_ashr_10):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $10, %xmm3
+ pslldq $6, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_10) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $10, %xmm3
+ pslldq $6, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_10)
+
+ .p2align 4
+LABEL(nibble_ashr_10):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0xfc00, %edx
+ jnz LABEL(ashr_10_exittail)
+
+# ifdef USE_AS_STRNCMP
+ cmp $5, %r11
+ jbe LABEL(ashr_10_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_10)
+
+ .p2align 4
+LABEL(ashr_10_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $10, %xmm0
+ psrldq $10, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_11
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(5~15) n - 5 10(15 +(n - 5) - n) ashr_11
+ */
+ .p2align 4
+LABEL(ashr_11):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $5, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $11, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 11(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_11):
+ add $16, %r10
+ jg LABEL(nibble_ashr_11)
+
+LABEL(gobble_ashr_11):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $11, %xmm3
+ pslldq $5, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_11) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $11, %xmm3
+ pslldq $5, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_11)
+
+ .p2align 4
+LABEL(nibble_ashr_11):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0xf800, %edx
+ jnz LABEL(ashr_11_exittail)
+
+# ifdef USE_AS_STRNCMP
+ cmp $4, %r11
+ jbe LABEL(ashr_11_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_11)
+
+ .p2align 4
+LABEL(ashr_11_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $11, %xmm0
+ psrldq $11, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_12
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(4~15) n - 4 11(15 +(n - 4) - n) ashr_12
+ */
+ .p2align 4
+LABEL(ashr_12):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $4, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $12, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 12(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_12):
+ add $16, %r10
+ jg LABEL(nibble_ashr_12)
+
+LABEL(gobble_ashr_12):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $12, %xmm3
+ pslldq $4, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_12) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $12, %xmm3
+ pslldq $4, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_12)
+
+ .p2align 4
+LABEL(nibble_ashr_12):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0xf000, %edx
+ jnz LABEL(ashr_12_exittail)
+
+# ifdef USE_AS_STRNCMP
+ cmp $3, %r11
+ jbe LABEL(ashr_12_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_12)
+
+ .p2align 4
+LABEL(ashr_12_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $12, %xmm0
+ psrldq $12, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_13
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(3~15) n - 3 12(15 +(n - 3) - n) ashr_13
+ */
+ .p2align 4
+LABEL(ashr_13):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $3, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $13, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 13(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_13):
+ add $16, %r10
+ jg LABEL(nibble_ashr_13)
+
+LABEL(gobble_ashr_13):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $13, %xmm3
+ pslldq $3, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_13) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $13, %xmm3
+ pslldq $3, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_13)
+
+ .p2align 4
+LABEL(nibble_ashr_13):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0xe000, %edx
+ jnz LABEL(ashr_13_exittail)
+
+# ifdef USE_AS_STRNCMP
+ cmp $2, %r11
+ jbe LABEL(ashr_13_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_13)
+
+ .p2align 4
+LABEL(ashr_13_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $13, %xmm0
+ psrldq $13, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_14
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(2~15) n - 2 13(15 +(n - 2) - n) ashr_14
+ */
+ .p2align 4
+LABEL(ashr_14):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $2, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $14, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 14(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_14):
+ add $16, %r10
+ jg LABEL(nibble_ashr_14)
+
+LABEL(gobble_ashr_14):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $14, %xmm3
+ pslldq $2, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_14) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $14, %xmm3
+ pslldq $2, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_14)
+
+ .p2align 4
+LABEL(nibble_ashr_14):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0xc000, %edx
+ jnz LABEL(ashr_14_exittail)
+
+# ifdef USE_AS_STRNCMP
+ cmp $1, %r11
+ jbe LABEL(ashr_14_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_14)
+
+ .p2align 4
+LABEL(ashr_14_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $14, %xmm0
+ psrldq $14, %xmm3
+ jmp LABEL(aftertail)
+
+/*
+ * The following cases will be handled by ashr_15
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * n(1~15) n - 1 14(15 +(n - 1) - n) ashr_15
+ */
+ .p2align 4
+LABEL(ashr_15):
+ pxor %xmm0, %xmm0
+ movdqa (%rdi), %xmm2
+ movdqa (%rsi), %xmm1
+ pcmpeqb %xmm1, %xmm0
+ pslldq $1, %xmm2
+ pcmpeqb %xmm1, %xmm2
+ psubb %xmm0, %xmm2
+ pmovmskb %xmm2, %r9d
+ shr %cl, %edx
+ shr %cl, %r9d
+ sub %r9d, %edx
+ jnz LABEL(less32bytes)
+
+ movdqa (%rdi), %xmm3
+
+ UPDATE_STRNCMP_COUNTER
+
+ pxor %xmm0, %xmm0
+ mov $16, %rcx /* index for loads */
+ mov $15, %r9d /* byte position left over from less32bytes case */
+ /*
+ * Setup %r10 value allows us to detect crossing a page boundary.
+ * When %r10 goes positive we have crossed a page boundary and
+ * need to do a nibble.
+ */
+ lea 15(%rdi), %r10
+ and $0xfff, %r10 /* offset into 4K page */
+
+ sub $0x1000, %r10 /* subtract 4K pagesize */
+
+ .p2align 4
+LABEL(loop_ashr_15):
+ add $16, %r10
+ jg LABEL(nibble_ashr_15)
+
+LABEL(gobble_ashr_15):
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $15, %xmm3
+ pslldq $1, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+
+ add $16, %r10
+ jg LABEL(nibble_ashr_15) /* cross page boundary */
+
+ movdqa (%rsi, %rcx), %xmm1
+ movdqa (%rdi, %rcx), %xmm2
+ movdqa %xmm2, %xmm4
+
+# ifndef USE_SSSE3
+ psrldq $15, %xmm3
+ pslldq $1, %xmm2
+ por %xmm3, %xmm2 /* merge into one 16byte value */
+# else
+ palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */
+# endif
+
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ sub $0xffff, %edx
+ jnz LABEL(exit)
+
+# ifdef USE_AS_STRNCMP
+ sub $16, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+
+ add $16, %rcx
+ movdqa %xmm4, %xmm3
+ jmp LABEL(loop_ashr_15)
+
+ .p2align 4
+LABEL(nibble_ashr_15):
+ pcmpeqb %xmm3, %xmm0 /* check nibble for null char */
+ pmovmskb %xmm0, %edx
+ test $0x8000, %edx
+ jnz LABEL(ashr_15_exittail)
+
+# ifdef USE_AS_STRNCMP
+ test %r11, %r11
+ je LABEL(ashr_15_exittail)
+# endif
+
+ pxor %xmm0, %xmm0
+ sub $0x1000, %r10
+ jmp LABEL(gobble_ashr_15)
+
+ .p2align 4
+LABEL(ashr_15_exittail):
+ movdqa (%rsi, %rcx), %xmm1
+ psrldq $15, %xmm3
+ psrldq $15, %xmm0
+
+ .p2align 4
+LABEL(aftertail):
+ pcmpeqb %xmm3, %xmm1
+ psubb %xmm0, %xmm1
+ pmovmskb %xmm1, %edx
+ not %edx
+
+ .p2align 4
+LABEL(exit):
+ lea -16(%r9, %rcx), %rax /* locate the exact offset for rdi */
+LABEL(less32bytes):
+ lea (%rdi, %rax), %rdi /* locate the exact address for first operand(rdi) */
+ lea (%rsi, %rcx), %rsi /* locate the exact address for second operand(rsi) */
+ test %r8d, %r8d
+ jz LABEL(ret)
+ xchg %rsi, %rdi /* recover original order according to flag(%r8d) */
+
+ .p2align 4
+LABEL(ret):
+LABEL(less16bytes):
+ bsf %rdx, %rdx /* find and store bit index in %rdx */
+
+# ifdef USE_AS_STRNCMP
+ sub %rdx, %r11
+ jbe LABEL(strcmp_exitz)
+# endif
+ movzbl (%rsi, %rdx), %ecx
+ movzbl (%rdi, %rdx), %eax
+
+ sub %ecx, %eax
+ ret
+
+LABEL(strcmp_exitz):
+ xor %eax, %eax
+ ret
+
+ .p2align 4
+LABEL(Byte0):
+ movzx (%rsi), %ecx
+ movzx (%rdi), %eax
+
+ sub %ecx, %eax
+ ret
+END (BP_SYM (STRCMP))
+
+ .section .rodata,"a",@progbits
+ .p2align 3
+LABEL(unaligned_table):
+ .int LABEL(ashr_1) - LABEL(unaligned_table)
+ .int LABEL(ashr_2) - LABEL(unaligned_table)
+ .int LABEL(ashr_3) - LABEL(unaligned_table)
+ .int LABEL(ashr_4) - LABEL(unaligned_table)
+ .int LABEL(ashr_5) - LABEL(unaligned_table)
+ .int LABEL(ashr_6) - LABEL(unaligned_table)
+ .int LABEL(ashr_7) - LABEL(unaligned_table)
+ .int LABEL(ashr_8) - LABEL(unaligned_table)
+ .int LABEL(ashr_9) - LABEL(unaligned_table)
+ .int LABEL(ashr_10) - LABEL(unaligned_table)
+ .int LABEL(ashr_11) - LABEL(unaligned_table)
+ .int LABEL(ashr_12) - LABEL(unaligned_table)
+ .int LABEL(ashr_13) - LABEL(unaligned_table)
+ .int LABEL(ashr_14) - LABEL(unaligned_table)
+ .int LABEL(ashr_15) - LABEL(unaligned_table)
+ .int LABEL(ashr_0) - LABEL(unaligned_table)
+#endif /* NOT_IN_libc */
+libc_hidden_builtin_def (STRCMP)
diff --git a/sysdeps/x86_64/strlen.S b/sysdeps/x86_64/strlen.S
index fd950edaaa..93aee6bef1 100644
--- a/sysdeps/x86_64/strlen.S
+++ b/sysdeps/x86_64/strlen.S
@@ -1,6 +1,6 @@
/* strlen(str) -- determine the length of the string STR.
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- Based on i486 version contributed by Ulrich Drepper <drepper@redhat.com>.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@redhat.com>.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -19,121 +19,33 @@
02111-1307 USA. */
#include <sysdep.h>
-#include "asm-syntax.h"
-#include "bp-sym.h"
-#include "bp-asm.h"
.text
-ENTRY (strlen)
- movq %rdi, %rcx /* Duplicate source pointer. */
- andl $7, %ecx /* mask alignment bits */
- movq %rdi, %rax /* duplicate destination. */
- jz 1f /* aligned => start loop */
-
- neg %ecx /* We need to align to 8 bytes. */
- addl $8,%ecx
- /* Search the first bytes directly. */
-0: cmpb $0x0,(%rax) /* is byte NUL? */
- je 2f /* yes => return */
- incq %rax /* increment pointer */
- decl %ecx
- jnz 0b
-
-1: movq $0xfefefefefefefeff,%r8 /* Save magic. */
-
- .p2align 4 /* Align loop. */
-4: /* Main Loop is unrolled 4 times. */
- /* First unroll. */
- movq (%rax), %rcx /* get double word (= 8 bytes) in question */
- addq $8,%rax /* adjust pointer for next word */
- movq %r8, %rdx /* magic value */
- addq %rcx, %rdx /* add the magic value to the word. We get
- carry bits reported for each byte which
- is *not* 0 */
- jnc 3f /* highest byte is NUL => return pointer */
- xorq %rcx, %rdx /* (word+magic)^word */
- orq %r8, %rdx /* set all non-carry bits */
- incq %rdx /* add 1: if one carry bit was *not* set
- the addition will not result in 0. */
- jnz 3f /* found NUL => return pointer */
-
- /* Second unroll. */
- movq (%rax), %rcx /* get double word (= 8 bytes) in question */
- addq $8,%rax /* adjust pointer for next word */
- movq %r8, %rdx /* magic value */
- addq %rcx, %rdx /* add the magic value to the word. We get
- carry bits reported for each byte which
- is *not* 0 */
- jnc 3f /* highest byte is NUL => return pointer */
- xorq %rcx, %rdx /* (word+magic)^word */
- orq %r8, %rdx /* set all non-carry bits */
- incq %rdx /* add 1: if one carry bit was *not* set
- the addition will not result in 0. */
- jnz 3f /* found NUL => return pointer */
-
- /* Third unroll. */
- movq (%rax), %rcx /* get double word (= 8 bytes) in question */
- addq $8,%rax /* adjust pointer for next word */
- movq %r8, %rdx /* magic value */
- addq %rcx, %rdx /* add the magic value to the word. We get
- carry bits reported for each byte which
- is *not* 0 */
- jnc 3f /* highest byte is NUL => return pointer */
- xorq %rcx, %rdx /* (word+magic)^word */
- orq %r8, %rdx /* set all non-carry bits */
- incq %rdx /* add 1: if one carry bit was *not* set
- the addition will not result in 0. */
- jnz 3f /* found NUL => return pointer */
-
- /* Fourth unroll. */
- movq (%rax), %rcx /* get double word (= 8 bytes) in question */
- addq $8,%rax /* adjust pointer for next word */
- movq %r8, %rdx /* magic value */
- addq %rcx, %rdx /* add the magic value to the word. We get
- carry bits reported for each byte which
- is *not* 0 */
- jnc 3f /* highest byte is NUL => return pointer */
- xorq %rcx, %rdx /* (word+magic)^word */
- orq %r8, %rdx /* set all non-carry bits */
- incq %rdx /* add 1: if one carry bit was *not* set
- the addition will not result in 0. */
- jz 4b /* no NUL found => continue loop */
-
- .p2align 4 /* Align, it's a jump target. */
-3: subq $8,%rax /* correct pointer increment. */
-
- testb %cl, %cl /* is first byte NUL? */
- jz 2f /* yes => return */
- incq %rax /* increment pointer */
-
- testb %ch, %ch /* is second byte NUL? */
- jz 2f /* yes => return */
- incq %rax /* increment pointer */
-
- testl $0x00ff0000, %ecx /* is third byte NUL? */
- jz 2f /* yes => return pointer */
- incq %rax /* increment pointer */
-
- testl $0xff000000, %ecx /* is fourth byte NUL? */
- jz 2f /* yes => return pointer */
- incq %rax /* increment pointer */
-
- shrq $32, %rcx /* look at other half. */
-
- testb %cl, %cl /* is first byte NUL? */
- jz 2f /* yes => return */
- incq %rax /* increment pointer */
-
- testb %ch, %ch /* is second byte NUL? */
- jz 2f /* yes => return */
- incq %rax /* increment pointer */
-
- testl $0xff0000, %ecx /* is third byte NUL? */
- jz 2f /* yes => return pointer */
- incq %rax /* increment pointer */
-2:
- subq %rdi, %rax /* compute difference to string start */
+ENTRY(strlen)
+ pxor %xmm2, %xmm2
+ movq %rdi, %rcx
+ movq %rdi, %r8
+ andq $~15, %rdi
+ movdqa %xmm2, %xmm1
+ pcmpeqb (%rdi), %xmm2
+ orl $0xffffffff, %esi
+ subq %rdi, %rcx
+ shll %cl, %esi
+ pmovmskb %xmm2, %edx
+ andl %esi, %edx
+ jnz 1f
+
+2: movdqa 16(%rdi), %xmm0
+ leaq 16(%rdi), %rdi
+ pcmpeqb %xmm1, %xmm0
+ pmovmskb %xmm0, %edx
+ testl %edx, %edx
+ jz 2b
+
+1: subq %r8, %rdi
+ bsfl %edx, %eax
+ addq %rdi, %rax
ret
-END (strlen)
+END(strlen)
libc_hidden_builtin_def (strlen)
diff --git a/sysdeps/x86_64/strncmp.S b/sysdeps/x86_64/strncmp.S
new file mode 100644
index 0000000000..0af34e7f15
--- /dev/null
+++ b/sysdeps/x86_64/strncmp.S
@@ -0,0 +1,3 @@
+#define STRCMP strncmp
+#define USE_AS_STRNCMP
+#include "strcmp.S"
diff --git a/sysdeps/x86_64/strrchr.S b/sysdeps/x86_64/strrchr.S
new file mode 100644
index 0000000000..c75b485ca3
--- /dev/null
+++ b/sysdeps/x86_64/strrchr.S
@@ -0,0 +1,81 @@
+/* strrchr (str, ch) -- Return pointer to last occurrence of CH in STR.
+ For AMD x86-64.
+ Copyright (C) 2009 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+
+
+ .text
+ENTRY (strrchr)
+ movd %esi, %xmm1
+ movq %rdi, %rcx
+ punpcklbw %xmm1, %xmm1
+ andq $~15, %rdi
+ pxor %xmm2, %xmm2
+ punpcklbw %xmm1, %xmm1
+ orl $0xffffffff, %esi
+ movdqa (%rdi), %xmm0
+ pshufd $0, %xmm1, %xmm1
+ subq %rdi, %rcx
+ movdqa %xmm0, %xmm3
+ leaq 16(%rdi), %rdi
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm3
+ shl %cl, %esi
+ pmovmskb %xmm0, %edx
+ pmovmskb %xmm3, %ecx
+ andl %esi, %edx
+ andl %esi, %ecx
+ xorl %eax, %eax
+ movl %edx, %esi
+ orl %ecx, %esi
+ jnz 1f
+
+2: movdqa (%rdi), %xmm0
+ leaq 16(%rdi), %rdi
+ movdqa %xmm0, %xmm3
+ pcmpeqb %xmm1, %xmm0
+ pcmpeqb %xmm2, %xmm3
+ pmovmskb %xmm0, %edx
+ pmovmskb %xmm3, %ecx
+ movl %edx, %esi
+ orl %ecx, %esi
+ jz 2b
+
+1: bsfl %ecx, %r9d
+ movl $0xffffffff, %r8d
+ movl $31, %ecx
+ jnz 5f
+
+ bsrl %edx, %edx
+ jz 2b
+ leaq -16(%rdi,%rdx), %rax
+ jmp 2b
+
+5: subl %r9d, %ecx
+ shrl %cl, %r8d
+ andl %r8d, %edx
+ bsrl %edx, %edx
+ jz 4f
+ leaq -16(%rdi,%rdx), %rax
+4: ret
+END (strrchr)
+
+weak_alias (strrchr, rindex)
+libc_hidden_builtin_def (strrchr)
diff --git a/sysdeps/x86_64/sub_n.S b/sysdeps/x86_64/sub_n.S
new file mode 100644
index 0000000000..48e1a2e0f4
--- /dev/null
+++ b/sysdeps/x86_64/sub_n.S
@@ -0,0 +1,42 @@
+/* AMD64 __mpn_sub_n -- Add two limb vectors of the same length > 0 and store
+ sum in a third limb vector.
+ Copyright (C) 2004 Free Software Foundation, Inc.
+ This file is part of the GNU MP Library.
+
+ The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA. */
+
+#include "sysdep.h"
+#include "asm-syntax.h"
+
+ .text
+ENTRY (__mpn_sub_n)
+ leaq (%rsi,%rcx,8), %rsi
+ leaq (%rdi,%rcx,8), %rdi
+ leaq (%rdx,%rcx,8), %rdx
+ negq %rcx
+ xorl %eax, %eax # clear cy
+ .p2align 2
+L(loop):
+ movq (%rsi,%rcx,8), %rax
+ movq (%rdx,%rcx,8), %r10
+ sbbq %r10, %rax
+ movq %rax, (%rdi,%rcx,8)
+ incq %rcx
+ jne L(loop)
+ movq %rcx, %rax # zero %rax
+ adcq %rax, %rax
+ ret
+END (__mpn_sub_n)
diff --git a/sysdeps/x86_64/submul_1.S b/sysdeps/x86_64/submul_1.S
new file mode 100644
index 0000000000..e94c9a7bee
--- /dev/null
+++ b/sysdeps/x86_64/submul_1.S
@@ -0,0 +1,46 @@
+/* AMD64 __mpn_submul_1 -- Multiply a limb vector with a limb and subtract
+ the result from a second limb vector.
+ Copyright (C) 2004 Free Software Foundation, Inc.
+ This file is part of the GNU MP Library.
+
+ The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA. */
+
+#include "sysdep.h"
+#include "asm-syntax.h"
+
+ .text
+ENTRY (__mpn_submul_1)
+ movq %rdx, %r11
+ leaq (%rsi,%r11,8), %rsi
+ leaq (%rdi,%r11,8), %rdi
+ negq %r11
+ xorl %r8d, %r8d
+ .p2align 3
+L(loop):
+ movq (%rsi,%r11,8), %rax
+ movq (%rdi,%r11,8), %r10
+ mulq %rcx
+ subq %r8, %r10
+ movl $0, %r8d
+ adcl %r8d, %r8d
+ subq %rax, %r10
+ adcq %rdx, %r8
+ movq %r10, (%rdi,%r11,8)
+ incq %r11
+ jne L(loop)
+ movq %r8, %rax
+ ret
+END (__mpn_submul_1)
diff --git a/sysdeps/x86_64/tst-xmmymm.sh b/sysdeps/x86_64/tst-xmmymm.sh
new file mode 100755
index 0000000000..da8af7e686
--- /dev/null
+++ b/sysdeps/x86_64/tst-xmmymm.sh
@@ -0,0 +1,80 @@
+#! /bin/bash
+objpfx="$1"
+
+tmp=$(mktemp ${objpfx}tst-xmmymm.XXXXXX)
+trap 'rm -f "$tmp"' 1 2 3 15
+
+# List of object files we have to test
+rtldobjs=$(readelf -W -wi ${objpfx}dl-allobjs.os |
+ awk '/^ </ { if ($5 == "(DW_TAG_compile_unit)") c=1; else c=0 } $2 == "DW_AT_name" { if (c == 1) print $NF }' |
+ sed 's,\(.*/\|\)\([_[:alnum:]-]*[.]\).$,\2os,')
+rtldobjs="$rtldobjs $(ar t ${objpfx}rtld-libc.a)"
+
+# OBJECT symbols can be ignored.
+readelf -sW ${objpfx}dl-allobjs.os ${objpfx}rtld-libc.a |
+egrep " OBJECT *GLOBAL " |
+awk '{if ($7 != "ABS") print $8 }' |
+sort -u > "$tmp"
+declare -a objects
+objects=($(cat "$tmp"))
+
+objs="dl-runtime.os"
+tocheck="dl-runtime.os"
+
+while test -n "$objs"; do
+ this="$objs"
+ objs=""
+
+ for f in $this; do
+ undef=$(nm -u "$objpfx"../*/"$f" | awk '{print $2}')
+ if test -n "$undef"; then
+ for s in $undef; do
+ for obj in ${objects[*]} "_GLOBAL_OFFSET_TABLE_"; do
+ if test "$obj" = "$s"; then
+ continue 2
+ fi
+ done
+ for o in $rtldobjs; do
+ ro=$(echo "$objpfx"../*/"$o")
+ if nm -g --defined-only "$ro" | egrep -qs " $s\$"; then
+ if ! (echo "$tocheck $objs" | fgrep -qs "$o"); then
+ echo "$o needed for $s"
+ objs="$objs $o"
+ fi
+ break;
+ fi
+ done
+ done
+ fi
+ done
+ tocheck="$tocheck$objs"
+done
+
+echo
+echo
+echo "object files needed: $tocheck"
+
+cp /dev/null "$tmp"
+for f in $tocheck; do
+ objdump -d "$objpfx"../*/"$f" |
+ awk 'BEGIN { last="" } /^[[:xdigit:]]* <[_[:alnum:]]*>:$/ { fct=substr($2, 2, length($2)-3) } /,%[xy]mm[[:digit:]]*$/ { if (last != fct) { print fct; last=fct} }' |
+ while read fct; do
+ if test "$fct" = "_dl_runtime_profile" -o "$fct" = "_dl_x86_64_restore_sse"; then
+ continue;
+ fi
+ echo "function $fct in $f modifies xmm/ymm" >> "$tmp"
+ result=1
+ done
+done
+
+if test -s "$tmp"; then
+ echo
+ echo
+ cat "$tmp"
+ result=1
+else
+ result=0
+fi
+
+rm "$tmp"
+exit $result
diff --git a/sysvipc/.cvsignore b/sysvipc/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/sysvipc/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/termios/.cvsignore b/termios/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/termios/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/termios/termios.h b/termios/termios.h
index 9698b1fbd0..fdde6d3526 100644
--- a/termios/termios.h
+++ b/termios/termios.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,93,94,96,97,98,99, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1994,1996-1999,2003,2010 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
@@ -24,7 +24,7 @@
#define _TERMIOS_H 1
#include <features.h>
-#ifdef __USE_UNIX98
+#if defined __USE_UNIX98 || defined __USE_XOPEN2K8
/* We need `pid_t'. */
# include <bits/types.h>
# ifndef __pid_t_defined
diff --git a/test-skeleton.c b/test-skeleton.c
index 23e40124bd..0238db6b4d 100644
--- a/test-skeleton.c
+++ b/test-skeleton.c
@@ -1,5 +1,5 @@
/* Skeleton for test programs.
- Copyright (C) 1998,2000-2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1998,2000-2004, 2005, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -132,7 +132,7 @@ create_temp_file (const char *base, char **filename)
/* Timeout handler. We kill the child and exit with an error. */
static void
__attribute__ ((noreturn))
-timeout_handler (int sig __attribute__ ((unused)))
+signal_handler (int sig __attribute__ ((unused)))
{
int killed;
int status;
@@ -167,6 +167,12 @@ timeout_handler (int sig __attribute__ ((unused)))
CLEANUP_HANDLER;
#endif
+ if (sig == SIGINT)
+ {
+ signal (sig, SIG_DFL);
+ raise (sig);
+ }
+
/* If we expected this signal: good! */
#ifdef EXPECTED_SIGNAL
if (EXPECTED_SIGNAL == SIGALRM)
@@ -325,9 +331,12 @@ main (int argc, char *argv[])
/* Default timeout is two seconds. */
# define TIMEOUT 2
#endif
- signal (SIGALRM, timeout_handler);
+ signal (SIGALRM, signal_handler);
alarm (TIMEOUT * timeoutfactor);
+ /* Make sure we clean up if the wrapper gets interrupted. */
+ signal (SIGINT, signal_handler);
+
/* Wait for the regular termination. */
termpid = TEMP_FAILURE_RETRY (waitpid (pid, &status, 0));
if (termpid == -1)
diff --git a/time/.cvsignore b/time/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/time/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/time/alt_digit.c b/time/alt_digit.c
index 95e4f07c73..9238911147 100644
--- a/time/alt_digit.c
+++ b/time/alt_digit.c
@@ -1,5 +1,5 @@
/* Helper functions used by strftime/strptime to handle alternate digits.
- Copyright (C) 1995-2002, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1995-2002, 2008, 2010 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
@@ -31,7 +31,7 @@ __libc_rwlock_define (extern, __libc_setlocale_lock attribute_hidden)
((wchar_t *) current->values[_NL_ITEM_INDEX (item)].wstr)
static void
-_nl_init_alt_digit (struct locale_data *current)
+_nl_init_alt_digit (struct __locale_data *current)
{
struct lc_time_data *data;
@@ -70,7 +70,7 @@ _nl_init_alt_digit (struct locale_data *current)
const char *
internal_function
-_nl_get_alt_digit (unsigned int number, struct locale_data *current)
+_nl_get_alt_digit (unsigned int number, struct __locale_data *current)
{
const char *result;
@@ -96,7 +96,7 @@ _nl_get_alt_digit (unsigned int number, struct locale_data *current)
const wchar_t *
internal_function
-_nl_get_walt_digit (unsigned int number, struct locale_data *current)
+_nl_get_walt_digit (unsigned int number, struct __locale_data *current)
{
const wchar_t *result = NULL;
struct lc_time_data *data;
@@ -149,7 +149,7 @@ _nl_get_walt_digit (unsigned int number, struct locale_data *current)
int
internal_function
-_nl_parse_alt_digit (const char **strp, struct locale_data *current)
+_nl_parse_alt_digit (const char **strp, struct __locale_data *current)
{
const char *str = *strp;
int result = -1;
diff --git a/time/asctime.c b/time/asctime.c
index dc4fd54f4e..8cf266a3ff 100644
--- a/time/asctime.c
+++ b/time/asctime.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1993,1995-1997,2000,2002,2005
+/* Copyright (C) 1991,1993,1995-1997,2000,2002,2005,2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -24,12 +24,12 @@
#include <time.h>
/* This is defined in locale/C-time.c in the GNU libc. */
-extern const struct locale_data _nl_C_LC_TIME attribute_hidden;
+extern const struct __locale_data _nl_C_LC_TIME attribute_hidden;
#define ab_day_name(DAY) (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (ABDAY_1)+(DAY)].string)
#define ab_month_name(MON) (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (ABMON_1)+(MON)].string)
static const char format[] = "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n";
-static char result[ 3+1+ 3+1+20+1+20+1+20+1+20+1+20+1 + 1];
+static char result[ 3+1+ 3+1+20+1+20+1+20+1+20+1+20+1 + 1];
static char *
diff --git a/time/era.c b/time/era.c
index a6f4a4cb07..6630747cc3 100644
--- a/time/era.c
+++ b/time/era.c
@@ -1,5 +1,5 @@
/* Helper functions used by strftime/strptime to handle locale-specific "eras".
- Copyright (C) 1995-2002, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1995-2002, 2008, 2010 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
@@ -36,7 +36,7 @@ __libc_rwlock_define (extern, __libc_setlocale_lock attribute_hidden)
/* Look up the era information in CURRENT's locale strings and
cache it in CURRENT->private. */
static void internal_function
-_nl_init_era_entries (struct locale_data *current)
+_nl_init_era_entries (struct __locale_data *current)
{
size_t cnt;
struct lc_time_data *data;
@@ -83,7 +83,7 @@ _nl_init_era_entries (struct locale_data *current)
data->num_eras = 0;
data->eras = NULL;
}
- else
+ else
{
const char *ptr = CURRENT (_NL_TIME_ERA_ENTRIES);
data->num_eras = new_num_eras;
@@ -140,7 +140,7 @@ _nl_init_era_entries (struct locale_data *current)
struct era_entry *
internal_function
-_nl_get_era_entry (const struct tm *tp, struct locale_data *current)
+_nl_get_era_entry (const struct tm *tp, struct __locale_data *current)
{
if (current->private.time == NULL || !current->private.time->era_initialized)
_nl_init_era_entries (current);
@@ -167,7 +167,7 @@ _nl_get_era_entry (const struct tm *tp, struct locale_data *current)
struct era_entry *
internal_function
-_nl_select_era_entry (int cnt, struct locale_data *current)
+_nl_select_era_entry (int cnt, struct __locale_data *current)
{
if (current->private.time == NULL || !current->private.time->era_initialized)
_nl_init_era_entries (current);
diff --git a/time/lc-time-cleanup.c b/time/lc-time-cleanup.c
index 6777f487a2..aa91e3eb2b 100644
--- a/time/lc-time-cleanup.c
+++ b/time/lc-time-cleanup.c
@@ -1,5 +1,5 @@
/* Cleanup code for data structures kept by strftime/strptime helper functions.
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2010 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
@@ -21,7 +21,7 @@
#include <stdlib.h>
void internal_function
-_nl_cleanup_time (struct locale_data *locale)
+_nl_cleanup_time (struct __locale_data *locale)
{
struct lc_time_data *const data = locale->private.time;
if (data != NULL)
diff --git a/time/strftime_l.c b/time/strftime_l.c
index f1d33034d9..08c2aeb32b 100644
--- a/time/strftime_l.c
+++ b/time/strftime_l.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2004, 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2004, 2007-2009, 2010 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
@@ -502,7 +502,7 @@ __strftime_internal (s, maxsize, format, tp, tzset_called ut_argument
LOCALE_PARAM_DECL
{
#if defined _LIBC && defined USE_IN_EXTENDED_LOCALE_MODEL
- struct locale_data *const current = loc->__locales[LC_TIME];
+ struct __locale_data *const current = loc->__locales[LC_TIME];
#endif
int hour12 = tp->tm_hour;
@@ -884,8 +884,6 @@ __strftime_internal (s, maxsize, format, tp, tzset_called ut_argument
#endif
case L_('C'):
- if (modifier == L_('O'))
- goto bad_format;
if (modifier == L_('E'))
{
#if HAVE_STRUCT_ERA_ENTRY
diff --git a/time/strptime_l.c b/time/strptime_l.c
index c4a0638fff..ccd2a90705 100644
--- a/time/strptime_l.c
+++ b/time/strptime_l.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2002,2004,2005,2007,2008,2010 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
@@ -119,7 +119,7 @@ localtime_r (t, tp)
#ifdef _LIBC
/* This is defined in locale/C-time.c in the GNU libc. */
-extern const struct locale_data _nl_C_LC_TIME attribute_hidden;
+extern const struct __locale_data _nl_C_LC_TIME attribute_hidden;
# define weekday_name (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (DAY_1)].string)
# define ab_weekday_name \
@@ -249,7 +249,7 @@ __strptime_internal (rp, fmt, tmp, statep LOCALE_PARAM)
LOCALE_PARAM_DECL
{
#ifdef _LIBC
- struct locale_data *const current = locale->__locales[LC_TIME];
+ struct __locale_data *const current = locale->__locales[LC_TIME];
#endif
const char *rp_backup;
diff --git a/time/sys/time.h b/time/sys/time.h
index 177696b08a..3aecf60b61 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1994,1996-2002,2003,2005,2006
+/* Copyright (C) 1991-1994,1996-2003,2005,2006,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -149,7 +149,7 @@ extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
extern int futimes (int __fd, __const struct timeval __tvp[2]) __THROW;
#endif
-#ifdef __USE_ATFILE
+#ifdef __USE_GNU
/* Change the access time of FILE relative to FD to TVP[0] and the
modification time of FILE to TVP[1]. If TVP is a null pointer, use
the current time instead. Returns 0 on success, -1 on errors. */
diff --git a/time/time.h b/time/time.h
index 6c8f79d422..eb7549ddf4 100644
--- a/time/time.h
+++ b/time/time.h
@@ -1,5 +1,4 @@
-/* Copyright (C) 1991-1999,2000,2001,2002,2003,2006
- Free Software Foundation, Inc.
+/* Copyright (C) 1991-2003,2006,2009 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
@@ -210,7 +209,7 @@ extern char *strptime (__const char *__restrict __s,
__THROW;
# endif
-# ifdef __USE_GNU
+# ifdef __USE_XOPEN2K8
/* Similar to the two functions above but take the information from
the provided locale and not the global locale. */
# include <xlocale.h>
@@ -219,7 +218,9 @@ extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
__const char *__restrict __format,
__const struct tm *__restrict __tp,
__locale_t __loc) __THROW;
+# endif
+# ifdef __USE_GNU
extern char *strptime_l (__const char *__restrict __s,
__const char *__restrict __fmt, struct tm *__tp,
__locale_t __loc) __THROW;
diff --git a/time/tst-posixtz.c b/time/tst-posixtz.c
index ccba63e5b4..019d92ada0 100644
--- a/time/tst-posixtz.c
+++ b/time/tst-posixtz.c
@@ -18,6 +18,10 @@ struct
"1999/02/26 07:18:12 dst=1 zone=AEDST" },
{ 909312849L, "EST+5EDT,M4.1.0/2,M10.5.0/2",
"1998/10/25 05:54:09 dst=0 zone=EST" },
+ { 909312849L, "EST5EDT,M4.1.0/2,M10.5.0/2",
+ "1998/10/25 05:54:09 dst=0 zone=EST" },
+ { 909312849L, "<EST5>5EDT,M4.1.0/2,M10.5.0/2",
+ "1998/10/25 05:54:09 dst=0 zone=EST5" },
{ 924864849L, "EST+5EDT,M4.1.0/2,M10.5.0/2",
"1999/04/23 06:54:09 dst=1 zone=EDT" },
{ 919973892L, "EST+5EDT,M4.1.0/2,M10.5.0/2",
@@ -84,5 +88,31 @@ main (void)
puts (", FAIL");
}
+ setenv ("TZ", "<AB1>-10<AB2>-11,M10.5.0,M3.5.0", 1);
+ tzset ();
+ printf ("TZ = \"<AB1>-10<AB2>-11,M10.5.0,M3.5.0\" daylight %d"
+ " tzname = { \"%s\", \"%s\" }", daylight, tzname[0], tzname[1]);
+ if (daylight
+ && strcmp (tzname[0], "AB1") == 0 && strcmp (tzname[1], "AB2") == 0)
+ puts (", OK");
+ else
+ {
+ result = 1;
+ puts (", FAIL");
+ }
+
+ setenv ("TZ", "<BB1>-10", 1);
+ tzset ();
+ printf ("TZ = \"<BB1>-10\" daylight %d"
+ " tzname = { \"%s\", \"%s\" }", daylight, tzname[0], tzname[1]);
+ if (daylight == 0
+ && strcmp (tzname[0], "BB1") == 0 && strcmp (tzname[1], "BB1") == 0)
+ puts (", OK");
+ else
+ {
+ result = 1;
+ puts (", FAIL");
+ }
+
return result;
}
diff --git a/time/tzfile.c b/time/tzfile.c
index 970022379a..f4cba46e50 100644
--- a/time/tzfile.c
+++ b/time/tzfile.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1993,1995-2001,2003,2004,2006, 2007
+/* Copyright (C) 1991-1993,1995-2001,2003,2004,2006,2007,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -248,7 +248,7 @@ __tzfile_read (const char *file, size_t extra, char **extrap)
+ num_transitions * (8 + 1)
+ num_types * 6
+ chars
- + num_leaps * 8
+ + num_leaps * 12
+ num_isstd
+ num_isgmt) - 1 : 0);
@@ -419,6 +419,10 @@ __tzfile_read (const char *file, size_t extra, char **extrap)
tzspec = __tzstring (tzstr);
}
+ /* Don't use an empty TZ string. */
+ if (tzspec != NULL && tzspec[0] == '\0')
+ tzspec = NULL;
+
fclose (f);
/* First "register" all timezone names. */
@@ -659,9 +663,7 @@ __tzfile_compute (time_t timer, int use_localtime,
__tzname[1] = __tzstring (&zone_names[strlen (zone_names) + 1]);
}
- *leap_correct = 0L;
- *leap_hit = 0;
- return;
+ goto leap;
}
else
{
@@ -762,6 +764,7 @@ __tzfile_compute (time_t timer, int use_localtime,
tp->tm_gmtoff = info->offset;
}
+ leap:
*leap_correct = 0L;
*leap_hit = 0;
diff --git a/time/tzset.c b/time/tzset.c
index a6fed4abc1..b87578fe48 100644
--- a/time/tzset.c
+++ b/time/tzset.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2002,2003,2004,2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2002,2003,2004,2007,2009 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
@@ -157,31 +157,50 @@ update_vars (void)
__tzname_cur_max = len1;
}
+
+static unsigned int
+__attribute_noinline__
+compute_offset (unsigned int ss, unsigned int mm, unsigned int hh)
+{
+ return min (ss, 59) + min (mm, 59) * 60 + min (hh, 24) * 60 * 60;
+}
+
+
/* Parse the POSIX TZ-style string. */
void
__tzset_parse_tz (tz)
const char *tz;
{
- register size_t l;
- char *tzbuf;
unsigned short int hh, mm, ss;
- unsigned short int whichrule;
/* Clear out old state and reset to unnamed UTC. */
- memset (tz_rules, 0, sizeof tz_rules);
+ memset (tz_rules, '\0', sizeof tz_rules);
tz_rules[0].name = tz_rules[1].name = "";
/* Get the standard timezone name. */
- tzbuf = strdupa (tz);
+ char *tzbuf = strdupa (tz);
+
+ int consumed;
+ if (sscanf (tz, "%[A-Za-z]%n", tzbuf, &consumed) != 1)
+ {
+ /* Check for the quoted version. */
+ char *wp = tzbuf;
+ if (__builtin_expect (*tz++ != '<', 0))
+ goto out;
- if (sscanf (tz, "%[^0-9,+-]", tzbuf) != 1 ||
- (l = strlen (tzbuf)) < 3)
+ while (isalnum (*tz) || *tz == '+' || *tz == '-')
+ *wp++ = *tz++;
+ if (__builtin_expect (*tz++ != '>' || wp - tzbuf < 3, 0))
+ goto out;
+ *wp = '\0';
+ }
+ else if (__builtin_expect (consumed < 3, 0))
goto out;
+ else
+ tz += consumed;
tz_rules[0].name = __tzstring (tzbuf);
- tz += l;
-
/* Figure out the standard offset from UTC. */
if (*tz == '\0' || (*tz != '+' && *tz != '-' && !isdigit (*tz)))
goto out;
@@ -190,7 +209,8 @@ __tzset_parse_tz (tz)
tz_rules[0].offset = *tz++ == '-' ? 1L : -1L;
else
tz_rules[0].offset = -1L;
- switch (sscanf (tz, "%hu:%hu:%hu", &hh, &mm, &ss))
+ switch (sscanf (tz, "%hu%n:%hu%n:%hu%n",
+ &hh, &consumed, &mm, &consumed, &ss, &consumed))
{
default:
tz_rules[0].offset = 0;
@@ -202,28 +222,36 @@ __tzset_parse_tz (tz)
case 3:
break;
}
- tz_rules[0].offset *= (min (ss, 59) + (min (mm, 59) * 60) +
- (min (hh, 24) * 60 * 60));
-
- for (l = 0; l < 3; ++l)
- {
- while (isdigit(*tz))
- ++tz;
- if (l < 2 && *tz == ':')
- ++tz;
- }
+ tz_rules[0].offset *= compute_offset (ss, mm, hh);
+ tz += consumed;
/* Get the DST timezone name (if any). */
if (*tz != '\0')
{
- char *n = tzbuf + strlen (tzbuf) + 1;
- if (sscanf (tz, "%[^0-9,+-]", n) != 1 ||
- (l = strlen (n)) < 3)
- goto done_names; /* Punt on name, set up the offsets. */
-
- tz_rules[1].name = __tzstring (n);
+ if (sscanf (tz, "%[A-Za-z]%n", tzbuf, &consumed) != 1)
+ {
+ /* Check for the quoted version. */
+ char *wp = tzbuf;
+ const char *rp = tz;
+ if (__builtin_expect (*rp++ != '<', 0))
+ /* Punt on name, set up the offsets. */
+ goto done_names;
+
+ while (isalnum (*rp) || *rp == '+' || *rp == '-')
+ *wp++ = *rp++;
+ if (__builtin_expect (*rp++ != '>' || wp - tzbuf < 3, 0))
+ /* Punt on name, set up the offsets. */
+ goto done_names;
+ *wp = '\0';
+ tz = rp;
+ }
+ else if (__builtin_expect (consumed < 3, 0))
+ /* Punt on name, set up the offsets. */
+ goto done_names;
+ else
+ tz += consumed;
- tz += l;
+ tz_rules[1].name = __tzstring (tzbuf);
/* Figure out the DST offset from GMT. */
if (*tz == '-' || *tz == '+')
@@ -231,7 +259,8 @@ __tzset_parse_tz (tz)
else
tz_rules[1].offset = -1L;
- switch (sscanf (tz, "%hu:%hu:%hu", &hh, &mm, &ss))
+ switch (sscanf (tz, "%hu%n:%hu%n:%hu%n",
+ &hh, &consumed, &mm, &consumed, &ss, &consumed))
{
default:
/* Default to one hour later than standard time. */
@@ -243,17 +272,10 @@ __tzset_parse_tz (tz)
case 2:
ss = 0;
case 3:
- tz_rules[1].offset *= (min (ss, 59) + (min (mm, 59) * 60) +
- (min (hh, 23) * (60 * 60)));
+ tz_rules[1].offset *= compute_offset (ss, mm, hh);
+ tz += consumed;
break;
}
- for (l = 0; l < 3; ++l)
- {
- while (isdigit (*tz))
- ++tz;
- if (l < 2 && *tz == ':')
- ++tz;
- }
if (*tz == '\0' || (tz[0] == ',' && tz[1] == '\0'))
{
/* There is no rule. See if there is a default rule file. */
@@ -277,7 +299,7 @@ __tzset_parse_tz (tz)
done_names:
/* Figure out the standard <-> DST rules. */
- for (whichrule = 0; whichrule < 2; ++whichrule)
+ for (unsigned int whichrule = 0; whichrule < 2; ++whichrule)
{
register tz_rule *tzr = &tz_rules[whichrule];
@@ -292,23 +314,23 @@ __tzset_parse_tz (tz)
tzr->type = *tz == 'J' ? J1 : J0;
if (tzr->type == J1 && !isdigit (*++tz))
goto out;
- tzr->d = (unsigned short int) strtoul (tz, &end, 10);
- if (end == tz || tzr->d > 365)
+ unsigned long int d = strtoul (tz, &end, 10);
+ if (end == tz || d > 365)
goto out;
- else if (tzr->type == J1 && tzr->d == 0)
+ if (tzr->type == J1 && d == 0)
goto out;
+ tzr->d = d;
tz = end;
}
else if (*tz == 'M')
{
- int n;
tzr->type = M;
if (sscanf (tz, "M%hu.%hu.%hu%n",
- &tzr->m, &tzr->n, &tzr->d, &n) != 3 ||
- tzr->m < 1 || tzr->m > 12 ||
- tzr->n < 1 || tzr->n > 5 || tzr->d > 6)
+ &tzr->m, &tzr->n, &tzr->d, &consumed) != 3
+ || tzr->m < 1 || tzr->m > 12
+ || tzr->n < 1 || tzr->n > 5 || tzr->d > 6)
goto out;
- tz += n;
+ tz += consumed;
}
else if (*tz == '\0')
{
@@ -338,7 +360,9 @@ __tzset_parse_tz (tz)
++tz;
if (*tz == '\0')
goto out;
- switch (sscanf (tz, "%hu:%hu:%hu", &hh, &mm, &ss))
+ consumed = 0;
+ switch (sscanf (tz, "%hu%n:%hu%n:%hu%n",
+ &hh, &consumed, &mm, &consumed, &ss, &consumed))
{
default:
hh = 2; /* Default to 2:00 AM. */
@@ -349,13 +373,7 @@ __tzset_parse_tz (tz)
case 3:
break;
}
- for (l = 0; l < 3; ++l)
- {
- while (isdigit (*tz))
- ++tz;
- if (l < 2 && *tz == ':')
- ++tz;
- }
+ tz += consumed;
tzr->secs = (hh * 60 * 60) + (mm * 60) + ss;
}
else
@@ -427,14 +445,11 @@ tzset_internal (always, explicit)
if (tz == NULL || *tz == '\0'
|| (TZDEFAULT != NULL && strcmp (tz, TZDEFAULT) == 0))
{
+ memset (tz_rules, '\0', sizeof tz_rules);
tz_rules[0].name = tz_rules[1].name = "UTC";
- tz_rules[0].type = tz_rules[1].type = J0;
- tz_rules[0].m = tz_rules[0].n = tz_rules[0].d = 0;
- tz_rules[1].m = tz_rules[1].n = tz_rules[1].d = 0;
- tz_rules[0].secs = tz_rules[1].secs = 0;
- tz_rules[0].offset = tz_rules[1].offset = 0L;
+ if (J0 != 0)
+ tz_rules[0].type = tz_rules[1].type = J0;
tz_rules[0].change = tz_rules[1].change = (time_t) -1;
- tz_rules[0].computed_for = tz_rules[1].computed_for = 0;
update_vars ();
return;
}
diff --git a/timezone/africa b/timezone/africa
index 304e7d3b77..3f92eb4745 100644
--- a/timezone/africa
+++ b/timezone/africa
@@ -1,5 +1,7 @@
-# @(#)africa 8.16
# <pre>
+# @(#)africa 8.21
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
@@ -236,7 +238,46 @@ Rule Egypt 2007 only - Sep Thu>=1 23:00s 0 -
# unless discontinued, next DST may end Thursday 28 August 2008.
# From Paul Eggert (2007-08-17):
# For lack of better info, assume the new rule is last Thursday in August.
-Rule Egypt 2008 max - Aug lastThu 23:00s 0 -
+
+# From Petr Machata (2009-04-06):
+# The following appeared in Red Hat bugzilla[1] (edited):
+#
+# > $ zdump -v /usr/share/zoneinfo/Africa/Cairo | grep 2009
+# > /usr/share/zoneinfo/Africa/Cairo Thu Apr 23 21:59:59 2009 UTC = Thu =
+# Apr 23
+# > 23:59:59 2009 EET isdst=0 gmtoff=7200
+# > /usr/share/zoneinfo/Africa/Cairo Thu Apr 23 22:00:00 2009 UTC = Fri =
+# Apr 24
+# > 01:00:00 2009 EEST isdst=1 gmtoff=10800
+# > /usr/share/zoneinfo/Africa/Cairo Thu Aug 27 20:59:59 2009 UTC = Thu =
+# Aug 27
+# > 23:59:59 2009 EEST isdst=1 gmtoff=10800
+# > /usr/share/zoneinfo/Africa/Cairo Thu Aug 27 21:00:00 2009 UTC = Thu =
+# Aug 27
+# > 23:00:00 2009 EET isdst=0 gmtoff=7200
+#
+# > end date should be Thu Sep 24 2009 (Last Thursday in September at 23:59=
+# :59)
+# > http://support.microsoft.com/kb/958729/
+#
+# timeanddate[2] and another site I've found[3] also support that.
+#
+# [1] <a href="https://bugzilla.redhat.com/show_bug.cgi?id=492263">
+# https://bugzilla.redhat.com/show_bug.cgi?id=492263
+# </a>
+# [2] <a href="http://www.timeanddate.com/worldclock/clockchange.html?n=53">
+# http://www.timeanddate.com/worldclock/clockchange.html?n=53
+# </a>
+# [3] <a href="http://wwp.greenwichmeantime.com/time-zone/africa/egypt/">
+# http://wwp.greenwichmeantime.com/time-zone/africa/egypt/
+# </a>
+
+# From Arthur David Olson (2009-04-20):
+# In 2009 (and for the next several years), Ramadan ends before the fourth
+# Thursday in September; Egypt is expected to revert to the last Thursday
+# in September.
+Rule Egypt 2008 only - Aug lastThu 23:00s 0 -
+Rule Egypt 2009 max - Sep lastThu 23:00s 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Cairo 2:05:00 - LMT 1900 Oct
@@ -438,8 +479,8 @@ Zone Africa/Nouakchott -1:03:48 - LMT 1912
# From Riad M. Hossen Ally (2008-08-03):
# The Government of Mauritius weblink
-# <a href="http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=3D4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD">
-# http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=3D4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD
+# <a href="http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD">
+# http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD
# </a>
# Cabinet Decision of July 18th, 2008 states as follows:
#
@@ -453,11 +494,19 @@ Zone Africa/Nouakchott -1:03:48 - LMT 1912
# year 2008 - 2009 will, therefore, be effective as from 26 October 2008
# and end on 29 March 2009.
+# From Ed Maste (2008-10-07):
+# THE TIME BILL (No. XXVII of 2008) Explanatory Memorandum states the
+# beginning / ending of summer time is 2 o'clock standard time in the
+# morning of the last Sunday of October / last Sunday of March.
+# <a href="http://www.gov.mu/portal/goc/assemblysite/file/bill2708.pdf">
+# http://www.gov.mu/portal/goc/assemblysite/file/bill2708.pdf
+# </a>
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Mauritius 1982 only - Oct 10 0:00 1:00 S
Rule Mauritius 1983 only - Mar 21 0:00 0 -
-Rule Mauritius 2008 max - Oct lastSun 2:00 1:00 S
-Rule Mauritius 2009 max - Mar lastSun 2:00 0 -
+Rule Mauritius 2008 max - Oct lastSun 2:00s 1:00 S
+Rule Mauritius 2009 max - Mar lastSun 2:00s 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
4:00 Mauritius MU%sT # Mauritius Time
@@ -556,6 +605,40 @@ Zone Indian/Mayotte 3:00:56 - LMT 1911 Jul # Mamoutzou
# <a href="http://www.timeanddate.com/news/time/morocco-ends-dst-early-2008.html">
# http://www.timeanddate.com/news/time/morocco-ends-dst-early-2008.html
# </a>
+
+# From Steffen Thorsen (2009-03-17):
+# Morocco will observe DST from 2009-06-01 00:00 to 2009-08-21 00:00 according
+# to many sources, such as
+# <a href="http://news.marweb.com/morocco/entertainment/morocco-daylight-saving.html">
+# http://news.marweb.com/morocco/entertainment/morocco-daylight-saving.html
+# </a>
+# <a href="http://www.medi1sat.ma/fr/depeche.aspx?idp=2312">
+# http://www.medi1sat.ma/fr/depeche.aspx?idp=2312
+# </a>
+# (French)
+#
+# Our summary:
+# <a href="http://www.timeanddate.com/news/time/morocco-starts-dst-2009.html">
+# http://www.timeanddate.com/news/time/morocco-starts-dst-2009.html
+# </a>
+
+# From Alexander Krivenyshev (2009-03-17):
+# Here is a link to official document from Royaume du Maroc Premier Ministre,
+# Ministere de la Modernisation des Secteurs Publics
+#
+# Under Article 1 of Royal Decree No. 455-67 of Act 23 safar 1387 (2 june 1967)
+# concerning the amendment of the legal time, the Ministry of Modernization of
+# Public Sectors announced that the official time in the Kingdom will be
+# advanced 60 minutes from Sunday 31 May 2009 at midnight.
+#
+# <a href="http://www.mmsp.gov.ma/francais/Actualites_fr/PDF_Actualites_Fr/HeureEte_FR.pdf">
+# http://www.mmsp.gov.ma/francais/Actualites_fr/PDF_Actualites_Fr/HeureEte_FR.pdf
+# </a>
+#
+# <a href="http://www.worldtimezone.com/dst_news/dst_news_morocco03.html">
+# http://www.worldtimezone.com/dst_news/dst_news_morocco03.html
+# </a>
+
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Morocco 1939 only - Sep 12 0:00 1:00 S
@@ -575,6 +658,8 @@ Rule Morocco 1978 only - Jun 1 0:00 1:00 S
Rule Morocco 1978 only - Aug 4 0:00 0 -
Rule Morocco 2008 only - Jun 1 0:00 1:00 S
Rule Morocco 2008 only - Sep 1 0:00 0 -
+Rule Morocco 2009 only - Jun 1 0:00 1:00 S
+Rule Morocco 2009 only - Aug 21 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
0:00 Morocco WE%sT 1984 Mar 16
@@ -779,6 +864,43 @@ Zone Africa/Lome 0:04:52 - LMT 1893
# Ending : the last Sunday of October at 03:00 ...
# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=1188&Itemid=50
+# From Steffen Thorsen (2009-03-16):
+# According to several news sources, Tunisia will not observe DST this year.
+# (Arabic)
+# <a href="http://www.elbashayer.com/?page=viewn&nid=42546">
+# http://www.elbashayer.com/?page=viewn&nid=42546
+# </a>
+# <a href="http://www.babnet.net/kiwidetail-15295.asp">
+# http://www.babnet.net/kiwidetail-15295.asp
+# </a>
+#
+# We have also confirmed this with the US embassy in Tunisia.
+# We have a wrap-up about this on the following page:
+# <a href="http://www.timeanddate.com/news/time/tunisia-cancels-dst-2009.html">
+# http://www.timeanddate.com/news/time/tunisia-cancels-dst-2009.html
+# </a>
+
+# From Alexander Krivenyshev (2009-03-17):
+# Here is a link to Tunis Afrique Presse News Agency
+#
+# Standard time to be kept the whole year long (tap.info.tn):
+#
+# (in English)
+# <a href="http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=26813&Itemid=157">
+# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=26813&Itemid=157
+# </a>
+#
+# (in Arabic)
+# <a href="http://www.tap.info.tn/ar/index.php?option=com_content&task=view&id=61240&Itemid=1">
+# http://www.tap.info.tn/ar/index.php?option=com_content&task=view&id=61240&Itemid=1
+# </a>
+
+# From Arthur David Olson (2009--3-18):
+# The Tunis Afrique Presse News Agency notice contains this: "This measure is due to the fact
+# that the fasting month of ramadan coincides with the period concerned by summer time.
+# Therefore, the standard time will be kept unchanged the whole year long."
+# So foregoing DST seems to be an exception (albeit one that may be repeated in the future).
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S
Rule Tunisia 1939 only - Nov 18 23:00s 0 -
@@ -803,8 +925,10 @@ Rule Tunisia 1989 only - Mar 26 0:00s 1:00 S
Rule Tunisia 1990 only - May 1 0:00s 1:00 S
Rule Tunisia 2005 only - May 1 0:00s 1:00 S
Rule Tunisia 2005 only - Sep 30 1:00s 0 -
-Rule Tunisia 2006 max - Mar lastSun 2:00s 1:00 S
-Rule Tunisia 2006 max - Oct lastSun 2:00s 0 -
+Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
+Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
+Rule Tunisia 2010 max - Mar lastSun 2:00s 1:00 S
+Rule Tunisia 2010 max - Oct lastSun 2:00s 0 -
# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
# more precise 0:09:21.
# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
diff --git a/timezone/antarctica b/timezone/antarctica
index ef279cbeda..8511ab207e 100644
--- a/timezone/antarctica
+++ b/timezone/antarctica
@@ -1,5 +1,7 @@
-# @(#)antarctica 8.4
# <pre>
+# @(#)antarctica 8.5
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# From Paul Eggert (1999-11-15):
# To keep things manageable, we list only locations occupied year-round; see
diff --git a/timezone/asia b/timezone/asia
index 768850f3df..de2ca39352 100644
--- a/timezone/asia
+++ b/timezone/asia
@@ -1,5 +1,7 @@
-# @(#)asia 8.23
# <pre>
+# @(#)asia 8.34
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
@@ -125,6 +127,48 @@ Zone Asia/Bahrain 3:22:20 - LMT 1920 # Al Manamah
3:00 - AST
# Bangladesh
+# From Alexander Krivenyshev (2009-05-13):
+# According to newspaper Asian Tribune (May 6, 2009) Bangladesh may introduce
+# Daylight Saving Time from June 16 to Sept 30
+#
+# Bangladesh to introduce daylight saving time likely from June 16
+# <a href="http://www.asiantribune.com/?q=node/17288">
+# http://www.asiantribune.com/?q=node/17288
+# </a>
+# or
+# <a href="http://www.worldtimezone.com/dst_news/dst_news_bangladesh02.html">
+# http://www.worldtimezone.com/dst_news/dst_news_bangladesh02.html
+# </a>
+#
+# "... Bangladesh government has decided to switch daylight saving time from
+# June
+# 16 till September 30 in a bid to ensure maximum use of daylight to cope with
+# crippling power crisis. "
+#
+# The switch will remain in effect from June 16 to Sept 30 (2009) but if
+# implemented the next year, it will come in force from April 1, 2010
+
+# From Steffen Thorsen (2009-06-02):
+# They have finally decided now, but changed the start date to midnight between
+# the 19th and 20th, and they have not set the end date yet.
+#
+# Some sources:
+# <a href="http://in.reuters.com/article/southAsiaNews/idINIndia-40017620090601">
+# http://in.reuters.com/article/southAsiaNews/idINIndia-40017620090601
+# </a>
+# <a href="http://bdnews24.com/details.php?id=85889&cid=2">
+# http://bdnews24.com/details.php?id=85889&cid=2
+# </a>
+#
+# Our wrap-up:
+# <a href="http://www.timeanddate.com/news/time/bangladesh-daylight-saving-2009.html">
+# http://www.timeanddate.com/news/time/bangladesh-daylight-saving-2009.html
+# </a>
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Bang 2009 only - Jan 1 0:00 0 -
+Rule Bang 2009 only - Jun 20 0:00 1:00 S
+
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Dhaka 6:01:40 - LMT 1890
5:53:20 - HMT 1941 Oct # Howrah Mean Time?
@@ -132,7 +176,8 @@ Zone Asia/Dhaka 6:01:40 - LMT 1890
5:30 - IST 1942 Sep
6:30 - BURT 1951 Sep 30
6:00 - DACT 1971 Mar 26 # Dacca Time
- 6:00 - BDT # Bangladesh Time
+ 6:00 - BDT 2009 # Bangladesh Time
+ 6:00 Bang BD%sT
# Bhutan
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
@@ -1049,6 +1094,40 @@ Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u
# http://www.petranews.gov.jo/nepras/2006/Sep/05/4000.htm
# "Jordan will switch to winter time on Friday, October 27".
#
+
+# From Phil Pizzey (2009-04-02):
+# ...I think I may have spotted an error in the timezone data for
+# Jordan.
+# The current (2009d) asia file shows Jordan going to daylight
+# saving
+# time on the last Thursday in March.
+#
+# Rule Jordan 2000 max - Mar lastThu 0:00s 1:00 S
+#
+# However timeanddate.com, which I usually find reliable, shows Jordan
+# going to daylight saving time on the last Friday in March since 2002.
+# Please see
+# <a href="http://www.timeanddate.com/worldclock/timezone.html?n=11">
+# http://www.timeanddate.com/worldclock/timezone.html?n=11
+# </a>
+
+# From Steffen Thorsen (2009-04-02):
+# This single one might be good enough, (2009-03-24, Arabic):
+# <a href="http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279">
+# http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279
+# </a>
+#
+# Google's translation:
+#
+# > The Council of Ministers decided in 2002 to adopt the principle of timely
+# > submission of the summer at 60 minutes as of midnight on the last Thursday
+# > of the month of March of each year.
+#
+# So - this means the midnight between Thursday and Friday since 2002.
+
+# From Arthur David Olson (2009-04-06):
+# We still have Jordan switching to DST on Thursdays in 2000 and 2001.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Jordan 1973 only - Jun 6 0:00 1:00 S
Rule Jordan 1973 1975 - Oct 1 0:00 0 -
@@ -1071,8 +1150,9 @@ Rule Jordan 1993 1998 - Apr Fri>=1 0:00 1:00 S
Rule Jordan 1994 only - Sep Fri>=15 0:00 0 -
Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
-Rule Jordan 1999 2002 - Sep lastThu 0:00s 0 -
-Rule Jordan 2000 max - Mar lastThu 0:00s 1:00 S
+Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
+Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
+Rule Jordan 2002 max - Mar lastThu 24:00 1:00 S
Rule Jordan 2003 only - Oct 24 0:00s 0 -
Rule Jordan 2004 only - Oct 15 0:00s 0 -
Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
@@ -1474,7 +1554,7 @@ Zone Asia/Choibalsan 7:38:00 - LMT 1905 Aug
# Nepal
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Asia/Katmandu 5:41:16 - LMT 1920
+Zone Asia/Kathmandu 5:41:16 - LMT 1920
5:30 - IST 1986
5:45 - NPT # Nepal Time
@@ -1554,11 +1634,46 @@ Zone Asia/Muscat 3:54:20 - LMT 1920
# http://dailymailnews.com/200808/28/news/dmbrn03.html
# </a>
+# From Alexander Krivenyshev (2009-04-08):
+# Based on previous media reports that "... proposed plan to
+# advance clocks by one hour from May 1 will cause disturbance
+# to the working schedules rather than bringing discipline in
+# official working."
+# <a href="http://www.thenews.com.pk/daily_detail.asp?id=171280">
+# http://www.thenews.com.pk/daily_detail.asp?id=171280
+# </a>
+#
+# recent news that instead of May 2009 - Pakistan plan to
+# introduce DST from April 15, 2009
+#
+# FYI: Associated Press Of Pakistan
+# April 08, 2009
+# Cabinet okays proposal to advance clocks by one hour from April 15
+# <a href="http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=73043&Itemid=1">
+# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=73043&Itemid=1
+# </a>
+#
+# or
+#
+# <a href="http://www.worldtimezone.com/dst_news/dst_news_pakistan05.html">
+# http://www.worldtimezone.com/dst_news/dst_news_pakistan05.html
+# </a>
+#
+# ....
+# The Federal Cabinet on Wednesday approved the proposal to
+# advance clocks in the country by one hour from April 15 to
+# conserve energy"
+
+# From Arthur David Olson (2009-04-10):
+# Assume for now that Pakistan will end DST in 2009 as it did in 2008.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Pakistan 2002 only - Apr Sun>=2 0:01 1:00 S
Rule Pakistan 2002 only - Oct Sun>=2 0:01 0 -
Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
Rule Pakistan 2008 only - Nov 1 0:00 0 -
+Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
+Rule Pakistan 2009 only - Nov 1 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Karachi 4:28:12 - LMT 1907
5:30 - IST 1942 Sep
@@ -1695,6 +1810,22 @@ Zone Asia/Karachi 4:28:12 - LMT 1907
# http://www.worldtimezone.com/dst_news/dst_news_gazastrip01.html
# </a>
+# From Alexander Krivenyshev (2009-03-26):
+# According to the Palestine News Network (arabic.pnn.ps), Palestinian
+# government decided to start Daylight Time on Thursday night March
+# 26 and continue until the night of 27 September 2009.
+#
+# (in Arabic)
+# <a href="http://arabic.pnn.ps/index.php?option=com_content&task=view&id=50850">
+# http://arabic.pnn.ps/index.php?option=com_content&task=view&id=50850
+# </a>
+#
+# or
+# (English translation)
+# <a href="http://www.worldtimezone.com/dst_news/dst_news_westbank01.html">
+# http://www.worldtimezone.com/dst_news/dst_news_westbank01.html
+# </a>
+
# The rules for Egypt are stolen from the `africa' file.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
@@ -1708,10 +1839,12 @@ Rule Palestine 1999 2005 - Apr Fri>=15 0:00 1:00 S
Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
Rule Palestine 2004 only - Oct 1 1:00 0 -
Rule Palestine 2005 only - Oct 4 2:00 0 -
-Rule Palestine 2006 max - Apr 1 0:00 1:00 S
+Rule Palestine 2006 2008 - Apr 1 0:00 1:00 S
Rule Palestine 2006 only - Sep 22 0:00 0 -
Rule Palestine 2007 only - Sep Thu>=8 2:00 0 -
-Rule Palestine 2008 max - Aug lastThu 2:00 0 -
+Rule Palestine 2008 only - Aug lastFri 2:00 0 -
+Rule Palestine 2009 max - Mar lastFri 0:00 1:00 S
+Rule Palestine 2009 max - Sep lastMon 2:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Gaza 2:17:52 - LMT 1900 Oct
@@ -1957,8 +2090,41 @@ Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
# compilers can't handle or having multiple Rules (a la Israel).
# For now, use "Apr Fri>=1", and go with IATA on a uniform Sep 30 end.
-Rule Syria 2008 max - Apr Fri>=1 0:00 1:00 S
-Rule Syria 2008 max - Oct 1 0:00 0 -
+# From Steffen Thorsen (2008-10-07):
+# Syria has now officially decided to end DST on 2008-11-01 this year,
+# according to the following article in the Syrian Arab News Agency (SANA).
+#
+# The article is in Arabic, and seems to tell that they will go back to
+# winter time on 2008-11-01 at 00:00 local daylight time (delaying/setting
+# clocks back 60 minutes).
+#
+# <a href="http://sana.sy/ara/2/2008/10/07/195459.htm">
+# http://sana.sy/ara/2/2008/10/07/195459.htm
+# </a>
+
+# From Steffen Thorsen (2009-03-19):
+# Syria will start DST on 2009-03-27 00:00 this year according to many sources,
+# two examples:
+#
+# <a href="http://www.sana.sy/eng/21/2009/03/17/217563.htm">
+# http://www.sana.sy/eng/21/2009/03/17/217563.htm
+# </a>
+# (English, Syrian Arab News # Agency)
+# <a href="http://thawra.alwehda.gov.sy/_View_news2.asp?FileName=94459258720090318012209">
+# http://thawra.alwehda.gov.sy/_View_news2.asp?FileName=94459258720090318012209
+# </a>
+# (Arabic, gov-site)
+#
+# We have not found any sources saying anything about when DST ends this year.
+#
+# Our summary
+# <a href="http://www.timeanddate.com/news/time/syria-dst-starts-march-27-2009.html">
+# http://www.timeanddate.com/news/time/syria-dst-starts-march-27-2009.html
+# </a>
+
+Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S
+Rule Syria 2008 max - Nov 1 0:00 0 -
+Rule Syria 2009 max - Mar lastFri 0:00 1:00 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Damascus 2:25:12 - LMT 1920 # Dimashq
diff --git a/timezone/australasia b/timezone/australasia
index 41608cdc34..efcfec74d1 100644
--- a/timezone/australasia
+++ b/timezone/australasia
@@ -1,5 +1,7 @@
-# @(#)australasia 8.9
# <pre>
+# @(#)australasia 8.11
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# This file also includes Pacific islands.
@@ -1119,6 +1121,27 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
# From Paul Eggert (2007-07-23):
# See "southeast Australia" above for 2008 and later.
+# From Steffen Thorsen (2009-04-28):
+# According to the official press release, South Australia's extended daylight
+# saving period will continue with the same rules as used during the 2008-2009
+# summer (southern hemisphere).
+#
+# From
+# <a href="http://www.safework.sa.gov.au/uploaded_files/DaylightDatesSet.pdf">
+# http://www.safework.sa.gov.au/uploaded_files/DaylightDatesSet.pdf
+# </a>
+# The extended daylight saving period that South Australia has been trialling
+# for over the last year is now set to be ongoing.
+# Daylight saving will continue to start on the first Sunday in October each
+# year and finish on the first Sunday in April the following year.
+# Industrial Relations Minister, Paul Caica, says this provides South Australia
+# with a consistent half hour time difference with NSW, Victoria, Tasmania and
+# the ACT for all 52 weeks of the year...
+#
+# We have a wrap-up here:
+# <a href="http://www.timeanddate.com/news/time/south-australia-extends-dst.html">
+# http://www.timeanddate.com/news/time/south-australia-extends-dst.html
+# </a>
###############################################################################
# New Zealand
diff --git a/timezone/backward b/timezone/backward
index a65991c2dd..c896968c9a 100644
--- a/timezone/backward
+++ b/timezone/backward
@@ -1,4 +1,7 @@
-# @(#)backward 8.6
+# <pre>
+# @(#)backward 8.8
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# This file provides links between current names for time zones
# and their old names. Many names changed in late 1993.
@@ -24,6 +27,7 @@ Link America/St_Thomas America/Virgin
Link Asia/Ashgabat Asia/Ashkhabad
Link Asia/Chongqing Asia/Chungking
Link Asia/Dhaka Asia/Dacca
+Link Asia/Kathmandu Asia/Katmandu
Link Asia/Kolkata Asia/Calcutta
Link Asia/Macau Asia/Macao
Link Asia/Jerusalem Asia/Tel_Aviv
diff --git a/timezone/etcetera b/timezone/etcetera
index cddbe8a294..5c93682985 100644
--- a/timezone/etcetera
+++ b/timezone/etcetera
@@ -1,4 +1,7 @@
-# @(#)etcetera 8.1
+# <pre>
+# @(#)etcetera 8.2
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# These entries are mostly present for historical reasons, so that
# people in areas not otherwise covered by the tz files could "zic -l"
diff --git a/timezone/europe b/timezone/europe
index 7bb9864733..3f39215bf6 100644
--- a/timezone/europe
+++ b/timezone/europe
@@ -1,5 +1,7 @@
-# @(#)europe 8.18
# <pre>
+# @(#)europe 8.21
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
@@ -2313,11 +2315,64 @@ Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1
# mean time in preference to apparent time -- Geneva from 1780 ....
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
# From Whitman (who writes ``Midnight?''):
-Rule Swiss 1940 only - Nov 2 0:00 1:00 S
-Rule Swiss 1940 only - Dec 31 0:00 0 -
+# Rule Swiss 1940 only - Nov 2 0:00 1:00 S
+# Rule Swiss 1940 only - Dec 31 0:00 0 -
# From Shanks & Pottenger:
-Rule Swiss 1941 1942 - May Sun>=1 2:00 1:00 S
-Rule Swiss 1941 1942 - Oct Sun>=1 0:00 0 -
+# Rule Swiss 1941 1942 - May Sun>=1 2:00 1:00 S
+# Rule Swiss 1941 1942 - Oct Sun>=1 0:00 0 -
+
+# From Alois Treindl (2008-12-17):
+# I have researched the DST usage in Switzerland during the 1940ies.
+#
+# As I wrote in an earlier message, I suspected the current tzdata values
+# to be wrong. This is now verified.
+#
+# I have found copies of the original ruling by the Swiss Federal
+# government, in 'Eidgen[o]ssische Gesetzessammlung 1941 and 1942' (Swiss
+# federal law collection)...
+#
+# DST began on Monday 5 May 1941, 1:00 am by shifting the clocks to 2:00 am
+# DST ended on Monday 6 Oct 1941, 2:00 am by shifting the clocks to 1:00 am.
+#
+# DST began on Monday, 4 May 1942 at 01:00 am
+# DST ended on Monday, 5 Oct 1942 at 02:00 am
+#
+# There was no DST in 1940, I have checked the law collection carefully.
+# It is also indicated by the fact that the 1942 entry in the law
+# collection points back to 1941 as a reference, but no reference to any
+# other years are made.
+#
+# Newspaper articles I have read in the archives on 6 May 1941 reported
+# about the introduction of DST (Sommerzeit in German) during the previous
+# night as an absolute novelty, because this was the first time that such
+# a thing had happened in Switzerland.
+#
+# I have also checked 1916, because one book source (Gabriel, Traite de
+# l'heure dans le monde) claims that Switzerland had DST in 1916. This is
+# false, no official document could be found. Probably Gabriel got misled
+# by references to Germany, which introduced DST in 1916 for the first time.
+#
+# The tzdata rules for Switzerland must be changed to:
+# Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S
+# Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 -
+#
+# The 1940 rules must be deleted.
+#
+# One further detail for Switzerland, which is probably out of scope for
+# most users of tzdata:
+# The zone file
+# Zone Europe/Zurich 0:34:08 - LMT 1848 Sep 12
+# 0:29:44 - BMT 1894 Jun #Bern Mean Time
+# 1:00 Swiss CE%sT 1981
+# 1:00 EU CE%sT
+# describes all of Switzerland correctly, with the exception of
+# the Cantone Geneve (Geneva, Genf). Between 1848 and 1894 Geneve did not
+# follow Bern Mean Time but kept its own local mean time.
+# To represent this, an extra zone would be needed.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S
+Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/Zurich 0:34:08 - LMT 1848 Sep 12
0:29:44 - BMT 1894 Jun # Bern Mean Time
diff --git a/timezone/factory b/timezone/factory
index 946063c0dd..624ccc0c36 100644
--- a/timezone/factory
+++ b/timezone/factory
@@ -1,4 +1,7 @@
-# @(#)factory 8.1
+# <pre>
+# @(#)factory 8.2
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# For companies who don't want to put time zone specification in
# their installation procedures. When users run date, they'll get the message.
diff --git a/timezone/iso3166.tab b/timezone/iso3166.tab
index 8d62399580..b8a2592c00 100644
--- a/timezone/iso3166.tab
+++ b/timezone/iso3166.tab
@@ -1,7 +1,9 @@
+# <pre>
+# @(#)iso3166.tab 8.6
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# ISO 3166 alpha-2 country codes
#
-# @(#)iso3166.tab 8.5
-#
# From Paul Eggert (2006-09-27):
#
# This file contains a table with the following columns:
diff --git a/timezone/leapseconds b/timezone/leapseconds
index a2f4f0be37..d6343c0209 100644
--- a/timezone/leapseconds
+++ b/timezone/leapseconds
@@ -1,4 +1,7 @@
-# @(#)leapseconds 8.6
+# <pre>
+# @(#)leapseconds 8.8
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# Allowance for leapseconds added to each timezone file.
@@ -53,40 +56,32 @@ Leap 2008 Dec 31 23:59:60 + S
# SERVICE DE LA ROTATION TERRESTRE
# OBSERVATOIRE DE PARIS
# 61, Av. de l'Observatoire 75014 PARIS (France)
-# Tel. : 33 (0) 1 40 51 22 26
+# Tel. : 33 (0) 1 40 51 22 29
# FAX : 33 (0) 1 40 51 22 91
-# e-mail : services.iers@obspm.fr
-# http://hpiers.obspm.fr/eop-pc
+# Internet : services.iers@obspm.fr
#
-# Paris, 4 July 2008
+# Paris, 15 January 2009
#
-# Bulletin C 36
+# Bulletin C 37
#
# To authorities responsible
# for the measurement and
# distribution of time
#
-# UTC TIME STEP
-# on the 1st of January 2009
+# INFORMATION ON UTC - TAI
#
-# A positive leap second will be introduced at the end of December 2008.
-# The sequence of dates of the UTC second markers will be:
+# NO positive leap second will be introduced at the end of June 2009.
+# The difference between Coordinated Universal Time UTC and the
+# International Atomic Time TAI is :
#
-# 2008 December 31, 23h 59m 59s
-# 2008 December 31, 23h 59m 60s
-# 2009 January 1, 0h 0m 0s
-#
-# The difference between UTC and the International Atomic Time TAI is:
-#
-# from 2006 January 1, 0h UTC, to 2009 January 1 0h UTC : UTC-TAI = - 33s
-# from 2009 January 1, 0h UTC, until further notice : UTC-TAI = - 34s
+# from 2009 January 1, 0h UTC, until further notice : UTC-TAI = -34 s
#
# Leap seconds can be introduced in UTC at the end of the months of December
-# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every
-# six months, either to announce a time step in UTC or to confirm that there
+# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every
+# six months, either to announce a time step in UTC, or to confirm that there
# will be no time step at the next possible date.
#
# Daniel GAMBIS
-# Head
-# Earth Orientation Center of IERS
+# Head
+# Earth Orientation Center of the IERS
# Observatoire de Paris, France
diff --git a/timezone/northamerica b/timezone/northamerica
index b8b333cc56..236922d754 100644
--- a/timezone/northamerica
+++ b/timezone/northamerica
@@ -1,5 +1,7 @@
-# @(#)northamerica 8.24
# <pre>
+# @(#)northamerica 8.28
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# also includes Central America and the Caribbean
@@ -1742,9 +1744,13 @@ Zone America/Dawson_Creek -8:00:56 - LMT 1884
# The individual that answered the phone confirmed that the clocks did not
# move at the end of daylight saving on October 29/2006. He also told me that
# the clocks did not move this past weekend (March 11/2007)....
-#
-# America/Resolute should use the "Canada" Rule up to October 29/2006.
-# After that it should be fixed on Eastern Standard Time until further notice.
+
+# From Chris Walton (2008-11-13):
+# ...the residents of Resolute believe that they are changing "time zones"
+# twice a year. In winter months, local time is qualified with "Eastern
+# Time" which is really "Eastern Standard Time (UTC-5)". In summer
+# months, local time is qualified with "Central Time" which is really
+# "Central Daylight Time (UTC-5)"...
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule NT_YK 1918 only - Apr 14 2:00 1:00 D
@@ -1772,11 +1778,14 @@ Zone America/Iqaluit 0 - zzz 1942 Aug # Frobisher Bay est.
-6:00 Canada C%sT 2000 Oct 29 2:00
-5:00 Canada E%sT
# aka Qausuittuq
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Resolute 2006 max - Nov Sun>=1 2:00 0 ES
+Rule Resolute 2007 max - Mar Sun>=8 2:00 0 CD
Zone America/Resolute 0 - zzz 1947 Aug 31 # Resolute founded
-6:00 NT_YK C%sT 2000 Oct 29 2:00
-5:00 - EST 2001 Apr 1 3:00
-6:00 Canada C%sT 2006 Oct 29 2:00
- -5:00 - EST
+ -5:00 Resolute %sT
# aka Kangiqiniq
Zone America/Rankin_Inlet 0 - zzz 1957 # Rankin Inlet founded
-6:00 NT_YK C%sT 2000 Oct 29 2:00
@@ -2251,6 +2260,25 @@ Zone America/Costa_Rica -5:36:20 - LMT 1890 # San Jose
# From Arthur David Olson (2008-03-12):
# Assume Sun>=15 (third Sunday) going forward.
+# From Alexander Krivenyshev (2009-03-04)
+# According to the Radio Reloj - Cuba will start Daylight Saving Time on
+# midnight between Saturday, March 07, 2009 and Sunday, March 08, 2009-
+# not on midnight March 14 / March 15 as previously thought.
+#
+# <a href="http://www.worldtimezone.com/dst_news/dst_news_cuba05.html">
+# http://www.worldtimezone.com/dst_news/dst_news_cuba05.html
+# (in Spanish)
+# </a>
+
+# From Arthur David Olson (2009-03-09)
+# I listened over the Internet to
+# <a href="http://media.enet.cu/readioreloj">
+# http://media.enet.cu/readioreloj
+# </a>
+# this morning; when it was 10:05 a. m. here in Bethesda, Maryland the
+# the time was announced as "diez cinco"--the same time as here, indicating
+# that has indeed switched to DST. Assume second Sunday from 2009 forward.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Cuba 1928 only - Jun 10 0:00 1:00 D
Rule Cuba 1928 only - Oct 10 0:00 0 S
@@ -2280,10 +2308,11 @@ Rule Cuba 1996 only - Oct 6 0:00s 0 S
Rule Cuba 1997 only - Oct 12 0:00s 0 S
Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
-Rule Cuba 2000 2006 - Apr Sun>=1 0:00s 1:00 D
+Rule Cuba 2000 2004 - Apr Sun>=1 0:00s 1:00 D
Rule Cuba 2006 max - Oct lastSun 0:00s 0 S
Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
-Rule Cuba 2008 max - Mar Sun>=15 0:00s 1:00 D
+Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
+Rule Cuba 2009 max - Mar Sun>=8 0:00s 1:00 D
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Havana -5:29:28 - LMT 1890
diff --git a/timezone/pacificnew b/timezone/pacificnew
index 667940bf53..e2512c1d1b 100644
--- a/timezone/pacificnew
+++ b/timezone/pacificnew
@@ -1,4 +1,7 @@
-# @(#)pacificnew 8.1
+# <pre>
+# @(#)pacificnew 8.2
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# From Arthur David Olson (1989-04-05):
# On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill
diff --git a/timezone/solar87 b/timezone/solar87
index 71839320ad..47ee7e7aad 100644
--- a/timezone/solar87
+++ b/timezone/solar87
@@ -1,4 +1,7 @@
-# @(#)solar87 8.1
+# <pre>
+# @(#)solar87 8.2
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# So much for footnotes about Saudi Arabia.
# Apparent noon times below are for Riyadh; your mileage will vary.
diff --git a/timezone/solar88 b/timezone/solar88
index b4cfe8e37a..8db590edd9 100644
--- a/timezone/solar88
+++ b/timezone/solar88
@@ -1,4 +1,7 @@
-# @(#)solar88 8.1
+# <pre>
+# @(#)solar88 8.2
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# Apparent noon times below are for Riyadh; they're a bit off for other places.
# Times were computed using formulas in the U.S. Naval Observatory's
diff --git a/timezone/solar89 b/timezone/solar89
index 8c48531461..d24de4a77e 100644
--- a/timezone/solar89
+++ b/timezone/solar89
@@ -1,4 +1,7 @@
-# @(#)solar89 8.1
+# <pre>
+# @(#)solar89 8.2
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# Apparent noon times below are for Riyadh; they're a bit off for other places.
# Times were computed using a formula provided by the U. S. Naval Observatory:
diff --git a/timezone/southamerica b/timezone/southamerica
index e2244cf237..341e57ff90 100644
--- a/timezone/southamerica
+++ b/timezone/southamerica
@@ -1,5 +1,7 @@
-# @(#)southamerica 8.27
# <pre>
+# @(#)southamerica 8.36
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
@@ -177,6 +179,42 @@ Rule Arg 2000 only - Mar 3 0:00 0 -
# http://www.impulsobaires.com.ar/nota.php?id=57832 (in spanish)
# </a>
+# From Rodrigo Severo (2008-10-06):
+# Here is some info available at a Gentoo bug related to TZ on Argentina's DST:
+# ...
+# ------- Comment #1 from [jmdocile] 2008-10-06 16:28 0000 -------
+# Hi, there is a problem with timezone-data-2008e and maybe with
+# timezone-data-2008f
+# Argentinian law [Number] 25.155 is no longer valid.
+# <a href="http://www.infoleg.gov.ar/infolegInternet/anexos/60000-64999/60036/norma.htm">
+# http://www.infoleg.gov.ar/infolegInternet/anexos/60000-64999/60036/norma.htm
+# </a>
+# The new one is law [Number] 26.350
+# <a href="http://www.infoleg.gov.ar/infolegInternet/anexos/135000-139999/136191/norma.htm">
+# http://www.infoleg.gov.ar/infolegInternet/anexos/135000-139999/136191/norma.htm
+# </a>
+# So there is no summer time in Argentina for now.
+
+# From Mariano Absatz (2008-10-20):
+# Decree 1693/2008 applies Law 26.350 for the summer 2008/2009 establishing DST in Argentina
+# From 2008-10-19 until 2009-03-15
+# <a href="http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=16102008&pi=3&pf=4&s=0&sec=01">
+# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=16102008&pi=3&pf=4&s=0&sec=01
+# </a>
+#
+# Decree 1705/2008 excepting 12 Provinces from applying DST in the summer 2008/2009:
+# Catamarca, La Rioja, Mendoza, Salta, San Juan, San Luis, La Pampa, Neuquen, Rio Negro, Chubut, Santa Cruz
+# and Tierra del Fuego
+# <a href="http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=17102008&pi=1&pf=1&s=0&sec=01">
+# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=17102008&pi=1&pf=1&s=0&sec=01
+# </a>
+#
+# Press release 235 dated Saturday October 18th, from the Government of the Province of Jujuy saying
+# it will not apply DST either (even when it was not included in Decree 1705/2008)
+# <a href="http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc">
+# http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc
+# </a>
+
Rule Arg 2007 only - Dec 30 0:00 1:00 S
Rule Arg 2008 max - Mar Sun>=15 0:00 0 -
Rule Arg 2008 max - Oct Sun>=15 0:00 1:00 S
@@ -315,6 +353,50 @@ Rule Arg 2008 max - Oct Sun>=15 0:00 1:00 S
# keep America/Cordoba a single region rather than splitting it into the
# other 5 subregions.
+# From Mariano Absatz (2009-03-13):
+# Yesterday (with our usual 2-day notice) the Province of San Luis
+# decided that next Sunday instead of "staying" @utc-03:00 they will go
+# to utc-04:00 until the second Saturday in October...
+#
+# The press release is at
+# <a href="http://www.sanluis.gov.ar/SL/Paginas/NoticiaDetalle.asp?TemaId=1&InfoPrensaId=3102">
+# http://www.sanluis.gov.ar/SL/Paginas/NoticiaDetalle.asp?TemaId=1&InfoPrensaId=3102
+# </a>
+# (I couldn't find the decree, but
+# <a href="http://www.sanluis.gov.ar">
+# www.sanluis.gov.ar
+# <a/>
+# is the official page for the Province Government).
+#
+# There's also a note in only one of the major national papers (La Nación) at
+# <a href="http://www.lanacion.com.ar/nota.asp?nota_id=1107912">
+# http://www.lanacion.com.ar/nota.asp?nota_id=1107912
+# </a>
+#
+# The press release says:
+# (...) anunció que el próximo domingo a las 00:00 los puntanos deberán
+# atrasar una hora sus relojes.
+#
+# A partir de entonces, San Luis establecerá el huso horario propio de
+# la Provincia. De esta manera, durante el periodo del calendario anual
+# 2009, el cambio horario quedará comprendido entre las 00:00 del tercer
+# domingo de marzo y las 24:00 del segundo sábado de octubre.
+# Quick&dirty translation
+# (...) announced that next Sunday, at 00:00, Puntanos (the San Luis
+# inhabitants) will have to turn back one hour their clocks
+#
+# Since then, San Luis will establish its own Province timezone. Thus,
+# during 2009, this timezone change will run from 00:00 the third Sunday
+# in March until 24:00 of the second Saturday in October.
+
+# From Arthur David Olson (2009-03-16):
+# The unofficial claim at
+# <a href="http://www.timeanddate.com/news/time/san-luis-new-time-zone.html">
+# http://www.timeanddate.com/news/time/san-luis-new-time-zone.html
+# </a>
+# is that "The province will most likely follow the next daylight saving schedule,
+# which is planned for the second Sunday in October."
+
#
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
#
@@ -327,9 +409,8 @@ Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31
-4:00 Arg AR%sT 2000 Mar 3
-3:00 Arg AR%sT
#
-# Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN), Chaco (CC),
-# Formosa (FM), Salta (SA), Santiago del Estero (SE), Cordoba (CB),
-# La Pampa (LP), Neuquen (NQ), Rio Negro (RN)
+# Cordoba (CB), Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN),
+# Chaco (CC), Formosa (FM), Santiago del Estero (SE)
#
# Shanks & Pottenger also make the following claims, which we haven't verified:
# - Formosa switched to -3:00 on 1991-01-07.
@@ -348,6 +429,18 @@ Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31
-4:00 Arg AR%sT 2000 Mar 3
-3:00 Arg AR%sT
#
+# Salta (SA), La Pampa (LP), Neuquen (NQ), Rio Negro (RN)
+Zone America/Argentina/Salta -4:21:40 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1991 Mar 3
+ -4:00 - WART 1991 Oct 20
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
+#
# Tucuman (TM)
Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31
-4:16:48 - CMT 1920 May
@@ -372,7 +465,8 @@ Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31
-4:00 Arg AR%sT 2000 Mar 3
-3:00 - ART 2004 Jun 1
-4:00 - WART 2004 Jun 20
- -3:00 Arg AR%sT
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
#
# San Juan (SJ)
Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31
@@ -385,7 +479,8 @@ Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31
-4:00 Arg AR%sT 2000 Mar 3
-3:00 - ART 2004 May 31
-4:00 - WART 2004 Jul 25
- -3:00 Arg AR%sT
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
#
# Jujuy (JY)
Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31
@@ -399,7 +494,8 @@ Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31
-3:00 1:00 ARST 1992
-3:00 Arg AR%sT 1999 Oct 3
-4:00 Arg AR%sT 2000 Mar 3
- -3:00 Arg AR%sT
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
#
# Catamarca (CT), Chubut (CH)
Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31
@@ -412,7 +508,8 @@ Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31
-4:00 Arg AR%sT 2000 Mar 3
-3:00 - ART 2004 Jun 1
-4:00 - WART 2004 Jun 20
- -3:00 Arg AR%sT
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
#
# Mendoza (MZ)
Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31
@@ -429,7 +526,8 @@ Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31
-4:00 Arg AR%sT 2000 Mar 3
-3:00 - ART 2004 May 23
-4:00 - WART 2004 Sep 26
- -3:00 Arg AR%sT
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
#
# San Luis (SL)
Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31
@@ -446,7 +544,8 @@ Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31
-3:00 - ART 2004 May 31
-4:00 - WART 2004 Jul 25
-3:00 Arg AR%sT 2008 Jan 21
- -3:00 - ART
+ -3:00 - ART 2009 Mar 15
+ -4:00 Arg WAR%sT
#
# Santa Cruz (SC)
Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
@@ -457,7 +556,8 @@ Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
-4:00 Arg AR%sT 2000 Mar 3
-3:00 - ART 2004 Jun 1
-4:00 - WART 2004 Jun 20
- -3:00 Arg AR%sT
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
#
# Tierra del Fuego, Antartida e Islas del Atlantico Sur (TF)
Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
@@ -468,7 +568,8 @@ Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
-4:00 Arg AR%sT 2000 Mar 3
-3:00 - ART 2004 May 30
-4:00 - WART 2004 Jun 20
- -3:00 Arg AR%sT
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
# Aruba
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
@@ -575,8 +676,8 @@ Zone America/La_Paz -4:32:36 - LMT 1890
# From Rodrigo Severo (2008-06-24):
# Just correcting the URL:
-# <a href="https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=3Ddo&secao=3D1&pagina=3D1&data=3D25/04/2008">
-# https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=3Ddo&secao=3D1&pagina=3D1&data=3D25/04/2008
+# <a href="https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=do&secao=1&pagina=1&data=25/04/2008">
+# https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=do&secao=1&pagina=1&data=25/04/2008
# </a>
#
# As a result of the above Decree I believe the America/Rio_Branco
@@ -619,7 +720,7 @@ Zone America/La_Paz -4:32:36 - LMT 1890
# </a>
# Note that this link does not always work directly, but must be accessed
# by going to
-# <a href="http://www.mme.gov.br/first>"
+# <a href="http://www.mme.gov.br/first">
# http://www.mme.gov.br/first
# </a>
#
@@ -768,12 +869,33 @@ Rule Brazil 2007 only - Feb 25 0:00 0 -
# Decree <a href="http://pcdsh01.on.br/DecHV6212.gif">6,212</a> (2007-09-26),
# adopted by the same states as before.
Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 S
-Rule Brazil 2008 max - Feb Sun>=15 0:00 0 -
-Rule Brazil 2008 max - Oct Sun>=15 0:00 1:00 S
+# From Frederico A. C. Neves (2008-09-10):
+# Acording to this decree
+# <a href="http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm">
+# http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm
+# </a>
+# [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the
+# 3rd Feb Sunday. There is an exception on the return date when this is
+# the Carnival Sunday then the return date will be the next Sunday...
+Rule Brazil 2008 max - Oct Sun>=15 0:00 1:00 S
+Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
+Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
+Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
+Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
+Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 -
+Rule Brazil 2023 only - Feb Sun>=22 0:00 0 -
+Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 -
+Rule Brazil 2026 only - Feb Sun>=22 0:00 0 -
+Rule Brazil 2027 2033 - Feb Sun>=15 0:00 0 -
+Rule Brazil 2034 only - Feb Sun>=22 0:00 0 -
+Rule Brazil 2035 2036 - Feb Sun>=15 0:00 0 -
+Rule Brazil 2037 only - Feb Sun>=22 0:00 0 -
+# From Arthur David Olson (2008-09-29):
+# The next is wrong in some years but is better than nothing.
+Rule Brazil 2038 max - Feb Sun>=15 0:00 0 -
+
# The latest ruleset listed above says that the following states observe DST:
# DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.
-# For dates after mid-2008, the above rules with TO="max" are guesses
-# and are quite possibly wrong, but are more likely than no DST at all.
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
#
diff --git a/timezone/systemv b/timezone/systemv
index 6cf9645de0..767388d6aa 100644
--- a/timezone/systemv
+++ b/timezone/systemv
@@ -1,4 +1,7 @@
-# @(#)systemv 8.1
+# <pre>
+# @(#)systemv 8.2
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
# Old rules, should the need arise.
# No attempt is made to handle Newfoundland, since it cannot be expressed
diff --git a/timezone/tzselect.ksh b/timezone/tzselect.ksh
index b99af8273b..57bf707e45 100644
--- a/timezone/tzselect.ksh
+++ b/timezone/tzselect.ksh
@@ -1,6 +1,6 @@
#! @KSH@
-# '@(#)tzselect.ksh 8.1'
+VERSION='@(#)tzselect.ksh 8.2'
# Ask the user about the time zone, and output the resulting TZ value to stdout.
# Interact with the user via stderr and stdin.
@@ -45,6 +45,21 @@
exit 1
}
+if [ "$1" = "--help" ]; then
+ cat <<EOF
+Usage: tzselect
+Select a time zone interactively.
+
+Report bugs to tz@elsie.nci.nih.gov.
+EOF
+ exit 0
+elif [ "$1" = "--version" ]; then
+ cat <<EOF
+tzselect $VERSION
+EOF
+ exit 0
+fi
+
# Make sure the tables are readable.
TZ_COUNTRY_TABLE=$TZDIR/iso3166.tab
TZ_ZONE_TABLE=$TZDIR/zone.tab
diff --git a/timezone/yearistype b/timezone/yearistype
index d3a248032e..66dbf89a2b 100755
--- a/timezone/yearistype
+++ b/timezone/yearistype
@@ -1,6 +1,9 @@
#! /bin/sh
-: '@(#)yearistype.sh 7.8'
+: 'This file is in the public domain, so clarified as of'
+: '2006-07-17 by Arthur David Olson.'
+
+: '@(#)yearistype.sh 8.2'
case $#-$1 in
2-|2-0*|2-*[!0-9]*)
diff --git a/timezone/zdump.c b/timezone/zdump.c
index 82c91e485e..7122bbf891 100644
--- a/timezone/zdump.c
+++ b/timezone/zdump.c
@@ -1,4 +1,9 @@
-static char elsieid[] = "@(#)zdump.c 8.6";
+/*
+** This file is in the public domain, so clarified as of
+** 2009-05-17 by Arthur David Olson.
+*/
+
+static char elsieid[] = "@(#)zdump.c 8.9";
/*
** This code has been made independent of the rest of the time
@@ -230,6 +235,17 @@ const char * const zone;
warned = TRUE;
}
+static void
+usage(const char *progname, FILE *stream, int status)
+{
+ (void) fprintf(stream,
+_("%s: usage is %s [ --version ] [ --help ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n\
+\n\
+Report bugs to tz@elsie.nci.nih.gov.\n"),
+ progname, progname);
+ exit(status);
+}
+
int
main(argc, argv)
int argc;
@@ -266,6 +282,8 @@ char * argv[];
if (strcmp(argv[i], "--version") == 0) {
(void) printf("%s\n", elsieid);
exit(EXIT_SUCCESS);
+ } else if (strcmp(argv[i], "--help") == 0) {
+ usage(progname, stdout, EXIT_SUCCESS);
}
vflag = 0;
cutarg = NULL;
@@ -275,10 +293,7 @@ char * argv[];
else cutarg = optarg;
if ((c != EOF && c != -1) ||
(optind == argc - 1 && strcmp(argv[optind], "=") == 0)) {
- (void) fprintf(stderr,
-_("%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"),
- progname, progname);
- exit(EXIT_FAILURE);
+ usage(progname, stderr, EXIT_FAILURE);
}
if (vflag) {
if (cutarg != NULL) {
@@ -349,13 +364,9 @@ _("%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"),
(void) strncpy(buf, abbr(&tm), (sizeof buf) - 1);
}
for ( ; ; ) {
- if (t >= cuthitime)
+ if (t >= cuthitime || t >= cuthitime - SECSPERHOUR * 12)
break;
newt = t + SECSPERHOUR * 12;
- if (newt >= cuthitime)
- break;
- if (newt <= t)
- break;
newtmp = localtime(&newt);
if (newtmp != NULL)
newtm = *newtmp;
diff --git a/timezone/zic.c b/timezone/zic.c
index 5f8028e480..01d9f135bd 100644
--- a/timezone/zic.c
+++ b/timezone/zic.c
@@ -3,7 +3,7 @@
** 2006-07-17 by Arthur David Olson.
*/
-static char elsieid[] = "@(#)zic.c 8.17";
+static char elsieid[] = "@(#)zic.c 8.19";
#include "private.h"
#include "locale.h"
@@ -156,7 +156,7 @@ static void stringzone(char * result,
const struct zone * zp, int ntzones);
static void setboundaries(void);
static zic_t tadd(zic_t t1, long t2);
-static void usage(void);
+static void usage(FILE *stream, int status);
static void writezone(const char * name, const char * string);
static int yearistype(int year, const char * type);
@@ -454,13 +454,15 @@ const char * const string;
}
static void
-usage(void)
+usage(FILE *stream, int status)
{
- (void) fprintf(stderr, _("%s: usage is %s \
-[ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\
-\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"),
- progname, progname);
- exit(EXIT_FAILURE);
+ (void) fprintf(stream, _("%s: usage is %s \
+[ --version ] [ --help ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\
+\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n\
+\n\
+Report bugs to tz@elsie.nci.nih.gov.\n"),
+ progname, progname);
+ exit(status);
}
static const char * psxrules;
@@ -498,11 +500,13 @@ char * argv[];
if (strcmp(argv[i], "--version") == 0) {
(void) printf("%s\n", elsieid);
exit(EXIT_SUCCESS);
+ } else if (strcmp(argv[i], "--help") == 0) {
+ usage(stdout, EXIT_SUCCESS);
}
while ((c = getopt(argc, argv, "d:l:p:L:vsy:")) != EOF && c != -1)
switch (c) {
default:
- usage();
+ usage(stderr, EXIT_FAILURE);
case 'd':
if (directory == NULL)
directory = optarg;
@@ -561,7 +565,7 @@ _("%s: More than one -L option specified\n"),
break;
}
if (optind == argc - 1 && strcmp(argv[optind], "=") == 0)
- usage(); /* usage message by request */
+ usage(stderr, EXIT_FAILURE); /* usage message by request */
if (directory == NULL)
directory = TZDIR;
if (yitcommand == NULL)
@@ -1991,7 +1995,7 @@ const int zonecount;
min_year = max_year = EPOCH_YEAR;
if (leapseen) {
updateminmax(leapminyear);
- updateminmax(leapmaxyear);
+ updateminmax(leapmaxyear + (leapmaxyear < INT_MAX));
}
for (i = 0; i < zonecount; ++i) {
zp = &zpfirst[i];
diff --git a/timezone/zone.tab b/timezone/zone.tab
index 39cc55f816..18aff1bb5a 100644
--- a/timezone/zone.tab
+++ b/timezone/zone.tab
@@ -1,4 +1,7 @@
-# @(#)zone.tab 8.18
+# <pre>
+# @(#)zone.tab 8.28
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
#
# TZ zone descriptions
#
@@ -42,14 +45,15 @@ AQ -7824+10654 Antarctica/Vostok Vostok Station, S Magnetic Pole
AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville Station, Terre Adelie
AQ -690022+0393524 Antarctica/Syowa Syowa Station, E Ongul I
AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF)
-AR -3124-06411 America/Argentina/Cordoba most locations (CB, CC, CN, ER, FM, LP, MN, NQ, RN, SA, SE, SF)
-AR -3319-06621 America/Argentina/San_Luis San Luis (SL)
+AR -3124-06411 America/Argentina/Cordoba most locations (CB, CC, CN, ER, FM, MN, SE, SF)
+AR -2447-06525 America/Argentina/Salta (SA, LP, NQ, RN)
AR -2411-06518 America/Argentina/Jujuy Jujuy (JY)
AR -2649-06513 America/Argentina/Tucuman Tucuman (TM)
AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH)
AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR)
AR -3132-06831 America/Argentina/San_Juan San Juan (SJ)
AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ)
+AR -3319-06621 America/Argentina/San_Luis San Luis (SL)
AR -5138-06913 America/Argentina/Rio_Gallegos Santa Cruz (SC)
AR -5448-06818 America/Argentina/Ushuaia Tierra del Fuego (TF)
AS -1416-17042 Pacific/Pago_Pago
@@ -100,7 +104,7 @@ BR -0640-06952 America/Eirunepe W Amazonas
BR -0958-06748 America/Rio_Branco Acre
BS +2505-07721 America/Nassau
BT +2728+08939 Asia/Thimphu
-BW -2545+02555 Africa/Gaborone
+BW -2439+02555 Africa/Gaborone
BY +5354+02734 Europe/Minsk
BZ +1730-08812 America/Belize
CA +4734-05243 America/St_Johns Newfoundland Time, including SE Labrador
@@ -115,7 +119,7 @@ CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did
CA +4823-08915 America/Thunder_Bay Eastern Time - Thunder Bay, Ontario
CA +6344-06828 America/Iqaluit Eastern Time - east Nunavut - most locations
CA +6608-06544 America/Pangnirtung Eastern Time - Pangnirtung, Nunavut
-CA +744144-0944945 America/Resolute Eastern Time - Resolute, Nunavut
+CA +744144-0944945 America/Resolute Eastern Standard Time - Resolute, Nunavut
CA +484531-0913718 America/Atikokan Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
CA +624900-0920459 America/Rankin_Inlet Central Time - central Nunavut
CA +4953-09709 America/Winnipeg Central Time - Manitoba & west Ontario
@@ -284,16 +288,16 @@ MY +0310+10142 Asia/Kuala_Lumpur peninsular Malaysia
MY +0133+11020 Asia/Kuching Sabah & Sarawak
MZ -2558+03235 Africa/Maputo
NA -2234+01706 Africa/Windhoek
-NC -2216+16530 Pacific/Noumea
+NC -2216+16627 Pacific/Noumea
NE +1331+00207 Africa/Niamey
NF -2903+16758 Pacific/Norfolk
NG +0627+00324 Africa/Lagos
NI +1209-08617 America/Managua
NL +5222+00454 Europe/Amsterdam
NO +5955+01045 Europe/Oslo
-NP +2743+08519 Asia/Katmandu
+NP +2743+08519 Asia/Kathmandu
NR -0031+16655 Pacific/Nauru
-NU -1901+16955 Pacific/Niue
+NU -1901-16955 Pacific/Niue
NZ -3652+17446 Pacific/Auckland most locations
NZ -4357-17633 Pacific/Chatham Chatham Islands
OM +2336+05835 Asia/Muscat
@@ -364,7 +368,7 @@ TK -0922-17114 Pacific/Fakaofo
TL -0833+12535 Asia/Dili
TM +3757+05823 Asia/Ashgabat
TN +3648+01011 Africa/Tunis
-TO -2110+17510 Pacific/Tongatapu
+TO -2110-17510 Pacific/Tongatapu
TR +4101+02858 Europe/Istanbul
TT +1039-06131 America/Port_of_Spain
TV -0831+17913 Pacific/Funafuti
@@ -384,13 +388,13 @@ US +381515-0854534 America/Kentucky/Louisville Eastern Time - Kentucky - Louisvi
US +364947-0845057 America/Kentucky/Monticello Eastern Time - Kentucky - Wayne County
US +394606-0860929 America/Indiana/Indianapolis Eastern Time - Indiana - most locations
US +384038-0873143 America/Indiana/Vincennes Eastern Time - Indiana - Daviess, Dubois, Knox & Martin Counties
-US +411745-0863730 America/Indiana/Knox Eastern Time - Indiana - Starke County
US +410305-0863611 America/Indiana/Winamac Eastern Time - Indiana - Pulaski County
US +382232-0862041 America/Indiana/Marengo Eastern Time - Indiana - Crawford County
+US +382931-0871643 America/Indiana/Petersburg Eastern Time - Indiana - Pike County
US +384452-0850402 America/Indiana/Vevay Eastern Time - Indiana - Switzerland County
US +415100-0873900 America/Chicago Central Time
US +375711-0864541 America/Indiana/Tell_City Central Time - Indiana - Perry County
-US +382931-0871643 America/Indiana/Petersburg Central Time - Indiana - Pike County
+US +411745-0863730 America/Indiana/Knox Central Time - Indiana - Starke County
US +450628-0873651 America/Menominee Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties
US +470659-1011757 America/North_Dakota/Center Central Time - North Dakota - Oliver County
US +465042-1012439 America/North_Dakota/New_Salem Central Time - North Dakota - Morton County (except Mandan area)
@@ -408,7 +412,7 @@ US +211825-1575130 Pacific/Honolulu Hawaii
UY -3453-05611 America/Montevideo
UZ +3940+06648 Asia/Samarkand west Uzbekistan
UZ +4120+06918 Asia/Tashkent east Uzbekistan
-VA +4154+01227 Europe/Vatican
+VA +415408+0122711 Europe/Vatican
VC +1309-06114 America/St_Vincent
VE +1030-06656 America/Caracas
VG +1827-06437 America/Tortola
diff --git a/version.h b/version.h
index 57fd137801..db60a0c44e 100644
--- a/version.h
+++ b/version.h
@@ -1,4 +1,4 @@
/* This file just defines the current version number of libc. */
-#define RELEASE "stable"
-#define VERSION "2.9"
+#define RELEASE "development"
+#define VERSION "2.11.90"
diff --git a/wcsmbs/.cvsignore b/wcsmbs/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/wcsmbs/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/wcsmbs/mbsnrtowcs.c b/wcsmbs/mbsnrtowcs.c
index 8d0b9d3609..a5329a2331 100644
--- a/wcsmbs/mbsnrtowcs.c
+++ b/wcsmbs/mbsnrtowcs.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2000, 2002, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2000, 2002, 2005, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
@@ -79,9 +79,13 @@ __mbsnrtowcs (dst, src, nmc, len, ps)
/* We have to handle DST == NULL special. */
if (dst == NULL)
{
+ mbstate_t temp_state;
wchar_t buf[64]; /* Just an arbitrary size. */
const unsigned char *inbuf = (const unsigned char *) *src;
+ temp_state = *data.__statep;
+ data.__statep = &temp_state;
+
result = 0;
data.__outbufend = (unsigned char *) buf + sizeof (buf);
do
diff --git a/wcsmbs/wchar.h b/wcsmbs/wchar.h
index 0fd9e35440..7a659116c3 100644
--- a/wcsmbs/wchar.h
+++ b/wcsmbs/wchar.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2004,2005,2006,2007 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2008, 2009 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
@@ -51,6 +51,11 @@
# define __need_wint_t
# include <stddef.h>
+/* Tell the caller that we provide correct C++ prototypes. */
+#if defined __cplusplus && __GNUC_PREREQ (4, 4)
+# define __CORRECT_ISO_CPP_WCHAR_H_PROTO
+#endif
+
/* We try to get wint_t from <stddef.h>, but not all GCC versions define it
there. So define it ourselves if it remains undefined. */
# ifndef _WINT_T
@@ -159,7 +164,7 @@ extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
__THROW __attribute_pure__;
__END_NAMESPACE_STD
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* Compare S1 and S2, ignoring case. */
extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) __THROW;
@@ -189,7 +194,7 @@ extern size_t wcsxfrm (wchar_t *__restrict __s1,
__const wchar_t *__restrict __s2, size_t __n) __THROW;
__END_NAMESPACE_STD
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* Similar to the two functions above but take the information from
the provided locale and not the global locale. */
@@ -210,11 +215,25 @@ extern wchar_t *wcsdup (__const wchar_t *__s) __THROW __attribute_malloc__;
__BEGIN_NAMESPACE_STD
/* Find the first occurrence of WC in WCS. */
+#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
+extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc)
+ __THROW __asm ("wcschr") __attribute_pure__;
+extern "C++" __const wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
+ __THROW __asm ("wcschr") __attribute_pure__;
+#else
extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
__THROW __attribute_pure__;
+#endif
/* Find the last occurrence of WC in WCS. */
+#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
+extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc)
+ __THROW __asm ("wcsrchr") __attribute_pure__;
+extern "C++" __const wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
+ __THROW __asm ("wcsrchr") __attribute_pure__;
+#else
extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
__THROW __attribute_pure__;
+#endif
__END_NAMESPACE_STD
#ifdef __USE_GNU
@@ -234,11 +253,27 @@ extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept)
__THROW __attribute_pure__;
/* Find the first occurrence in WCS of any character in ACCEPT. */
+#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
+extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, __const wchar_t *__accept)
+ __THROW __asm ("wcspbrk") __attribute_pure__;
+extern "C++" __const wchar_t *wcspbrk (__const wchar_t *__wcs,
+ __const wchar_t *__accept)
+ __THROW __asm ("wcspbrk") __attribute_pure__;
+#else
extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept)
__THROW __attribute_pure__;
+#endif
/* Find the first occurrence of NEEDLE in HAYSTACK. */
+#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
+extern "C++" wchar_t *wcsstr (wchar_t *__haystack, __const wchar_t *__needle)
+ __THROW __asm ("wcsstr") __attribute_pure__;
+extern "C++" __const wchar_t *wcsstr (__const wchar_t *__haystack,
+ __const wchar_t *__needle)
+ __THROW __asm ("wcsstr") __attribute_pure__;
+#else
extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle)
__THROW __attribute_pure__;
+#endif
/* Divide WCS into tokens separated by characters in DELIM. */
extern wchar_t *wcstok (wchar_t *__restrict __s,
@@ -251,11 +286,19 @@ __END_NAMESPACE_STD
#ifdef __USE_XOPEN
/* Another name for `wcsstr' from XPG4. */
+# ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
+extern "C++" wchar_t *wcswcs (wchar_t *__haystack, __const wchar_t *__needle)
+ __THROW __asm ("wcswcs") __attribute_pure__;
+extern "C++" __const wchar_t *wcswcs (__const wchar_t *__haystack,
+ __const wchar_t *__needle)
+ __THROW __asm ("wcswcs") __attribute_pure__;
+# else
extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)
__THROW __attribute_pure__;
+# endif
#endif
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* Return the number of wide characters in S, but at most MAXLEN. */
extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
__THROW __attribute_pure__;
@@ -264,8 +307,16 @@ extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
__BEGIN_NAMESPACE_STD
/* Search N wide characters of S for C. */
+#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
+extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n)
+ __THROW __asm ("wmemchr") __attribute_pure__;
+extern "C++" __const wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c,
+ size_t __n)
+ __THROW __asm ("wmemchr") __attribute_pure__;
+#else
extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n)
__THROW __attribute_pure__;
+#endif
/* Compare N wide characters of S1 and S2. */
extern int wmemcmp (__const wchar_t *__restrict __s1,
@@ -364,7 +415,7 @@ extern size_t wcsrtombs (char *__restrict __dst,
__END_NAMESPACE_STD
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* Write wide character representation of at most NMC bytes of the
multibyte character string SRC to DST. */
extern size_t mbsnrtowcs (wchar_t *__restrict __dst,
@@ -377,7 +428,7 @@ extern size_t wcsnrtombs (char *__restrict __dst,
__const wchar_t **__restrict __src,
size_t __nwc, size_t __len,
mbstate_t *__restrict __ps) __THROW;
-#endif /* use GNU */
+#endif /* use POSIX 2008 */
/* The following functions are extensions found in X/Open CAE. */
@@ -507,7 +558,7 @@ extern long double wcstold_l (__const wchar_t *__restrict __nptr,
#endif /* GNU */
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* Copy SRC to DEST, returning the address of the terminating L'\0' in
DEST. */
extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __THROW;
@@ -521,7 +572,7 @@ extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)
/* Wide character I/O functions. */
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN2K8
/* Like OPEN_MEMSTREAM, but the stream is wide oriented and produces
a wide character string. */
extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) __THROW;
@@ -839,9 +890,9 @@ __END_DECLS
#endif /* _WCHAR_H defined */
+#endif /* wchar.h */
+
/* Undefined all __need_* constants in case we are included to get those
constants but the whole file was already read. */
#undef __need_mbstate_t
#undef __need_wint_t
-
-#endif /* wchar.h */
diff --git a/wcsmbs/wcsatcliff.c b/wcsmbs/wcsatcliff.c
index 22db60763f..b29571f294 100644
--- a/wcsmbs/wcsatcliff.c
+++ b/wcsmbs/wcsatcliff.c
@@ -15,6 +15,7 @@
#define STPNCPY wcpncpy
#define MEMCPY wmemcpy
#define MEMPCPY wmempcpy
+#define MEMCHR wmemchr
#include "../string/stratcliff.c"
diff --git a/wcsmbs/wcsmbsload.c b/wcsmbs/wcsmbsload.c
index 2b46131b14..328f16497c 100644
--- a/wcsmbs/wcsmbsload.c
+++ b/wcsmbs/wcsmbsload.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2002,2004,2005,2008 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2002,2004,2005,2008,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -150,7 +150,7 @@ __libc_rwlock_define (extern, __libc_setlocale_lock attribute_hidden)
/* Load conversion functions for the currently selected locale. */
void
internal_function
-__wcsmbs_load_conv (struct locale_data *new_category)
+__wcsmbs_load_conv (struct __locale_data *new_category)
{
/* Acquire the lock. */
__libc_rwlock_wrlock (__libc_setlocale_lock);
@@ -253,7 +253,7 @@ __wcsmbs_named_conv (struct gconv_fcts *copy, const char *name)
}
void internal_function
-_nl_cleanup_ctype (struct locale_data *locale)
+_nl_cleanup_ctype (struct __locale_data *locale)
{
const struct gconv_fcts *const data = locale->private.ctype;
if (data != NULL)
diff --git a/wcsmbs/wcsmbsload.h b/wcsmbs/wcsmbsload.h
index 0cf5da4f88..e2b1bfa9c8 100644
--- a/wcsmbs/wcsmbsload.h
+++ b/wcsmbs/wcsmbsload.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2002, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -38,7 +38,7 @@ struct gconv_fcts
extern const struct gconv_fcts __wcsmbs_gconv_fcts_c attribute_hidden;
/* Load conversion functions for the currently selected locale. */
-extern void __wcsmbs_load_conv (struct locale_data *new_category)
+extern void __wcsmbs_load_conv (struct __locale_data *new_category)
internal_function;
/* Clone the current `__wcsmbs_load_conv' value. */
@@ -50,7 +50,7 @@ extern int __wcsmbs_named_conv (struct gconv_fcts *copy, const char *name)
internal_function;
/* Function used for the `private.cleanup' hook. */
-extern void _nl_cleanup_ctype (struct locale_data *)
+extern void _nl_cleanup_ctype (struct __locale_data *)
internal_function attribute_hidden;
@@ -62,12 +62,12 @@ extern struct __gconv_step *__wcsmbs_getfct (const char *to, const char *from,
size_t *nstepsp)
attribute_hidden;
-extern const struct locale_data _nl_C_LC_CTYPE attribute_hidden;
+extern const struct __locale_data _nl_C_LC_CTYPE attribute_hidden;
/* Check whether the LC_CTYPE locale changed since the last call.
Update the pointers appropriately. */
static inline const struct gconv_fcts *
-get_gconv_fcts (struct locale_data *data)
+get_gconv_fcts (struct __locale_data *data)
{
if (__builtin_expect (data->private.ctype == NULL, 0))
{
diff --git a/wcsmbs/wcsnrtombs.c b/wcsmbs/wcsnrtombs.c
index 171fc3c227..eead26fb3c 100644
--- a/wcsmbs/wcsnrtombs.c
+++ b/wcsmbs/wcsnrtombs.c
@@ -77,10 +77,14 @@ __wcsnrtombs (dst, src, nwc, len, ps)
/* We have to handle DST == NULL special. */
if (dst == NULL)
{
+ mbstate_t temp_state;
unsigned char buf[256]; /* Just an arbitrary value. */
const unsigned char *inbuf = (const unsigned char *) *src;
size_t dummy;
+ temp_state = *data.__statep;
+ data.__statep = &temp_state;
+
result = 0;
data.__outbufend = buf + sizeof (buf);
diff --git a/wctype/.cvsignore b/wctype/.cvsignore
deleted file mode 100644
index 3fc9f4cdf1..0000000000
--- a/wctype/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
-*.gz *.Z *.tar *.tgz
-=*
-TODO COPYING* AUTHORS copyr-* copying.*
-glibc-*
-distinfo
diff --git a/wctype/Makefile b/wctype/Makefile
index b0e8f968e4..9505b1fabb 100644
--- a/wctype/Makefile
+++ b/wctype/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1999, 2000, 2008 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
@@ -26,6 +26,6 @@ distribute := wchar-lookup.h
routines := wcfuncs wctype iswctype wctrans towctrans \
wcfuncs_l wctype_l iswctype_l wctrans_l towctrans_l
-tests := test_wctype test_wcfuncs
+tests := test_wctype test_wcfuncs bug-wctypeh
include ../Rules
diff --git a/wctype/bug-wctypeh.c b/wctype/bug-wctypeh.c
new file mode 100644
index 0000000000..9d5acb3a5c
--- /dev/null
+++ b/wctype/bug-wctypeh.c
@@ -0,0 +1,10 @@
+#include <wchar.h>
+#include <wctype.h>
+#include <stddef.h>
+ptrdiff_t i;
+
+int
+main (void)
+{
+ return 0;
+}
diff --git a/wctype/wctype.h b/wctype/wctype.h
index 603255931f..9b29af5638 100644
--- a/wctype/wctype.h
+++ b/wctype/wctype.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2002, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2002,2005,2007,2008,2009 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
@@ -29,9 +29,9 @@
#ifndef __need_iswxxx
# define _WCTYPE_H 1
-/* Get wint_t from <wchar.h>. */
+/* Get wint_t from <stddef.h>. */
# define __need_wint_t
-# include <wchar.h>
+# include <stddef.h>
/* Constant expression of type `wint_t' whose value does not correspond
to any member of the extended character set. */
@@ -222,7 +222,7 @@ extern wctrans_t wctrans (__const char *__property) __THROW;
extern wint_t towctrans (wint_t __wc, wctrans_t __desc) __THROW;
__END_NAMESPACE_C99
-# ifdef __USE_GNU
+# ifdef __USE_XOPEN2K8
/* Declare the interface to extended locale model. */
# include <xlocale.h>
@@ -310,7 +310,7 @@ extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale)
extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc,
__locale_t __locale) __THROW;
-# endif /* Use GNU. */
+# endif /* Use POSIX 2008. */
__END_DECLS